mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-02-25 11:27:00 +00:00
target/arm: Implement VFP fp16 for VFP_BINOP operations
Implmeent VFP fp16 support for simple binary-operator VFP insns VADD, VSUB, VMUL, VDIV, VMINNM and VMAXNM: * make the VFP_BINOP() macro generate float16 helpers as well as float32 and float64 * implement a do_vfp_3op_hp() function similar to the existing do_vfp_3op_sp() * add decode for the half-precision insn patterns Note that the VFP_BINOP macro use creates a couple of unused helper functions vfp_maxh and vfp_minh, but they're small so it's not worth splitting the BINOP operations into "needs halfprec" and "no halfprec" groups. Backports commit 120a0eb3ea23a5b06fae2f3daebd46a4035864cf
This commit is contained in:
parent
1afb240134
commit
eae621098d
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_aarch64
|
||||
#define helper_vfp_abss helper_vfp_abss_aarch64
|
||||
#define helper_vfp_addd helper_vfp_addd_aarch64
|
||||
#define helper_vfp_addh helper_vfp_addh_aarch64
|
||||
#define helper_vfp_adds helper_vfp_adds_aarch64
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_aarch64
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_aarch64
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_aarch64
|
||||
#define helper_vfp_cmps helper_vfp_cmps_aarch64
|
||||
#define helper_vfp_divd helper_vfp_divd_aarch64
|
||||
#define helper_vfp_divh helper_vfp_divh_aarch64
|
||||
#define helper_vfp_divs helper_vfp_divs_aarch64
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_aarch64
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_aarch64
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_aarch64
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_aarch64
|
||||
#define helper_vfp_maxd helper_vfp_maxd_aarch64
|
||||
#define helper_vfp_maxh helper_vfp_maxh_aarch64
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_aarch64
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_aarch64
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_aarch64
|
||||
#define helper_vfp_maxs helper_vfp_maxs_aarch64
|
||||
#define helper_vfp_mind helper_vfp_mind_aarch64
|
||||
#define helper_vfp_minh helper_vfp_minh_aarch64
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_aarch64
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_aarch64
|
||||
#define helper_vfp_minnums helper_vfp_minnums_aarch64
|
||||
#define helper_vfp_mins helper_vfp_mins_aarch64
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_aarch64
|
||||
#define helper_vfp_muladds helper_vfp_muladds_aarch64
|
||||
#define helper_vfp_muld helper_vfp_muld_aarch64
|
||||
#define helper_vfp_mulh helper_vfp_mulh_aarch64
|
||||
#define helper_vfp_muls helper_vfp_muls_aarch64
|
||||
#define helper_vfp_negd helper_vfp_negd_aarch64
|
||||
#define helper_vfp_negs helper_vfp_negs_aarch64
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_aarch64
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_aarch64
|
||||
#define helper_vfp_subd helper_vfp_subd_aarch64
|
||||
#define helper_vfp_subh helper_vfp_subh_aarch64
|
||||
#define helper_vfp_subs helper_vfp_subs_aarch64
|
||||
#define helper_vfp_toshd helper_vfp_toshd_aarch64
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_aarch64
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_aarch64eb
|
||||
#define helper_vfp_abss helper_vfp_abss_aarch64eb
|
||||
#define helper_vfp_addd helper_vfp_addd_aarch64eb
|
||||
#define helper_vfp_addh helper_vfp_addh_aarch64eb
|
||||
#define helper_vfp_adds helper_vfp_adds_aarch64eb
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_aarch64eb
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_aarch64eb
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_aarch64eb
|
||||
#define helper_vfp_cmps helper_vfp_cmps_aarch64eb
|
||||
#define helper_vfp_divd helper_vfp_divd_aarch64eb
|
||||
#define helper_vfp_divh helper_vfp_divh_aarch64eb
|
||||
#define helper_vfp_divs helper_vfp_divs_aarch64eb
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_aarch64eb
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_aarch64eb
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_aarch64eb
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_aarch64eb
|
||||
#define helper_vfp_maxd helper_vfp_maxd_aarch64eb
|
||||
#define helper_vfp_maxh helper_vfp_maxh_aarch64eb
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_aarch64eb
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_aarch64eb
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_aarch64eb
|
||||
#define helper_vfp_maxs helper_vfp_maxs_aarch64eb
|
||||
#define helper_vfp_mind helper_vfp_mind_aarch64eb
|
||||
#define helper_vfp_minh helper_vfp_minh_aarch64eb
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_aarch64eb
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_aarch64eb
|
||||
#define helper_vfp_minnums helper_vfp_minnums_aarch64eb
|
||||
#define helper_vfp_mins helper_vfp_mins_aarch64eb
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_aarch64eb
|
||||
#define helper_vfp_muladds helper_vfp_muladds_aarch64eb
|
||||
#define helper_vfp_muld helper_vfp_muld_aarch64eb
|
||||
#define helper_vfp_mulh helper_vfp_mulh_aarch64eb
|
||||
#define helper_vfp_muls helper_vfp_muls_aarch64eb
|
||||
#define helper_vfp_negd helper_vfp_negd_aarch64eb
|
||||
#define helper_vfp_negs helper_vfp_negs_aarch64eb
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_aarch64eb
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_aarch64eb
|
||||
#define helper_vfp_subd helper_vfp_subd_aarch64eb
|
||||
#define helper_vfp_subh helper_vfp_subh_aarch64eb
|
||||
#define helper_vfp_subs helper_vfp_subs_aarch64eb
|
||||
#define helper_vfp_toshd helper_vfp_toshd_aarch64eb
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_aarch64eb
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_arm
|
||||
#define helper_vfp_abss helper_vfp_abss_arm
|
||||
#define helper_vfp_addd helper_vfp_addd_arm
|
||||
#define helper_vfp_addh helper_vfp_addh_arm
|
||||
#define helper_vfp_adds helper_vfp_adds_arm
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_arm
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_arm
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_arm
|
||||
#define helper_vfp_cmps helper_vfp_cmps_arm
|
||||
#define helper_vfp_divd helper_vfp_divd_arm
|
||||
#define helper_vfp_divh helper_vfp_divh_arm
|
||||
#define helper_vfp_divs helper_vfp_divs_arm
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_arm
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_arm
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_arm
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_arm
|
||||
#define helper_vfp_maxd helper_vfp_maxd_arm
|
||||
#define helper_vfp_maxh helper_vfp_maxh_arm
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_arm
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_arm
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_arm
|
||||
#define helper_vfp_maxs helper_vfp_maxs_arm
|
||||
#define helper_vfp_mind helper_vfp_mind_arm
|
||||
#define helper_vfp_minh helper_vfp_minh_arm
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_arm
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_arm
|
||||
#define helper_vfp_minnums helper_vfp_minnums_arm
|
||||
#define helper_vfp_mins helper_vfp_mins_arm
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_arm
|
||||
#define helper_vfp_muladds helper_vfp_muladds_arm
|
||||
#define helper_vfp_muld helper_vfp_muld_arm
|
||||
#define helper_vfp_mulh helper_vfp_mulh_arm
|
||||
#define helper_vfp_muls helper_vfp_muls_arm
|
||||
#define helper_vfp_negd helper_vfp_negd_arm
|
||||
#define helper_vfp_negs helper_vfp_negs_arm
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_arm
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_arm
|
||||
#define helper_vfp_subd helper_vfp_subd_arm
|
||||
#define helper_vfp_subh helper_vfp_subh_arm
|
||||
#define helper_vfp_subs helper_vfp_subs_arm
|
||||
#define helper_vfp_toshd helper_vfp_toshd_arm
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_arm
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_armeb
|
||||
#define helper_vfp_abss helper_vfp_abss_armeb
|
||||
#define helper_vfp_addd helper_vfp_addd_armeb
|
||||
#define helper_vfp_addh helper_vfp_addh_armeb
|
||||
#define helper_vfp_adds helper_vfp_adds_armeb
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_armeb
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_armeb
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_armeb
|
||||
#define helper_vfp_cmps helper_vfp_cmps_armeb
|
||||
#define helper_vfp_divd helper_vfp_divd_armeb
|
||||
#define helper_vfp_divh helper_vfp_divh_armeb
|
||||
#define helper_vfp_divs helper_vfp_divs_armeb
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_armeb
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_armeb
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_armeb
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_armeb
|
||||
#define helper_vfp_maxd helper_vfp_maxd_armeb
|
||||
#define helper_vfp_maxh helper_vfp_maxh_armeb
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_armeb
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_armeb
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_armeb
|
||||
#define helper_vfp_maxs helper_vfp_maxs_armeb
|
||||
#define helper_vfp_mind helper_vfp_mind_armeb
|
||||
#define helper_vfp_minh helper_vfp_minh_armeb
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_armeb
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_armeb
|
||||
#define helper_vfp_minnums helper_vfp_minnums_armeb
|
||||
#define helper_vfp_mins helper_vfp_mins_armeb
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_armeb
|
||||
#define helper_vfp_muladds helper_vfp_muladds_armeb
|
||||
#define helper_vfp_muld helper_vfp_muld_armeb
|
||||
#define helper_vfp_mulh helper_vfp_mulh_armeb
|
||||
#define helper_vfp_muls helper_vfp_muls_armeb
|
||||
#define helper_vfp_negd helper_vfp_negd_armeb
|
||||
#define helper_vfp_negs helper_vfp_negs_armeb
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_armeb
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_armeb
|
||||
#define helper_vfp_subd helper_vfp_subd_armeb
|
||||
#define helper_vfp_subh helper_vfp_subh_armeb
|
||||
#define helper_vfp_subs helper_vfp_subs_armeb
|
||||
#define helper_vfp_toshd helper_vfp_toshd_armeb
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_armeb
|
||||
|
|
|
@ -1894,6 +1894,7 @@ symbols = (
|
|||
'helper_vfp_absd',
|
||||
'helper_vfp_abss',
|
||||
'helper_vfp_addd',
|
||||
'helper_vfp_addh',
|
||||
'helper_vfp_adds',
|
||||
'helper_vfp_cmpd',
|
||||
'helper_vfp_cmph_a64',
|
||||
|
@ -1902,6 +1903,7 @@ symbols = (
|
|||
'helper_vfp_cmpes',
|
||||
'helper_vfp_cmps',
|
||||
'helper_vfp_divd',
|
||||
'helper_vfp_divh',
|
||||
'helper_vfp_divs',
|
||||
'helper_vfp_fcvt_f16_to_f32',
|
||||
'helper_vfp_fcvt_f16_to_f64',
|
||||
|
@ -1911,16 +1913,21 @@ symbols = (
|
|||
'helper_vfp_fcvtsd',
|
||||
'helper_vfp_get_fpscr',
|
||||
'helper_vfp_maxd',
|
||||
'helper_vfp_maxh',
|
||||
'helper_vfp_maxnumd',
|
||||
'helper_vfp_maxnumh',
|
||||
'helper_vfp_maxnums',
|
||||
'helper_vfp_maxs',
|
||||
'helper_vfp_mind',
|
||||
'helper_vfp_minh',
|
||||
'helper_vfp_minnumd',
|
||||
'helper_vfp_minnumh',
|
||||
'helper_vfp_minnums',
|
||||
'helper_vfp_mins',
|
||||
'helper_vfp_muladdd',
|
||||
'helper_vfp_muladds',
|
||||
'helper_vfp_muld',
|
||||
'helper_vfp_mulh',
|
||||
'helper_vfp_muls',
|
||||
'helper_vfp_negd',
|
||||
'helper_vfp_negs',
|
||||
|
@ -1939,6 +1946,7 @@ symbols = (
|
|||
'helper_vfp_sqtoh',
|
||||
'helper_vfp_sqtos',
|
||||
'helper_vfp_subd',
|
||||
'helper_vfp_subh',
|
||||
'helper_vfp_subs',
|
||||
'helper_vfp_toshd',
|
||||
'helper_vfp_toshd_round_to_zero',
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_m68k
|
||||
#define helper_vfp_abss helper_vfp_abss_m68k
|
||||
#define helper_vfp_addd helper_vfp_addd_m68k
|
||||
#define helper_vfp_addh helper_vfp_addh_m68k
|
||||
#define helper_vfp_adds helper_vfp_adds_m68k
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_m68k
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_m68k
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_m68k
|
||||
#define helper_vfp_cmps helper_vfp_cmps_m68k
|
||||
#define helper_vfp_divd helper_vfp_divd_m68k
|
||||
#define helper_vfp_divh helper_vfp_divh_m68k
|
||||
#define helper_vfp_divs helper_vfp_divs_m68k
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_m68k
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_m68k
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_m68k
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_m68k
|
||||
#define helper_vfp_maxd helper_vfp_maxd_m68k
|
||||
#define helper_vfp_maxh helper_vfp_maxh_m68k
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_m68k
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_m68k
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_m68k
|
||||
#define helper_vfp_maxs helper_vfp_maxs_m68k
|
||||
#define helper_vfp_mind helper_vfp_mind_m68k
|
||||
#define helper_vfp_minh helper_vfp_minh_m68k
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_m68k
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_m68k
|
||||
#define helper_vfp_minnums helper_vfp_minnums_m68k
|
||||
#define helper_vfp_mins helper_vfp_mins_m68k
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_m68k
|
||||
#define helper_vfp_muladds helper_vfp_muladds_m68k
|
||||
#define helper_vfp_muld helper_vfp_muld_m68k
|
||||
#define helper_vfp_mulh helper_vfp_mulh_m68k
|
||||
#define helper_vfp_muls helper_vfp_muls_m68k
|
||||
#define helper_vfp_negd helper_vfp_negd_m68k
|
||||
#define helper_vfp_negs helper_vfp_negs_m68k
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_m68k
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_m68k
|
||||
#define helper_vfp_subd helper_vfp_subd_m68k
|
||||
#define helper_vfp_subh helper_vfp_subh_m68k
|
||||
#define helper_vfp_subs helper_vfp_subs_m68k
|
||||
#define helper_vfp_toshd helper_vfp_toshd_m68k
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_m68k
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_mips
|
||||
#define helper_vfp_abss helper_vfp_abss_mips
|
||||
#define helper_vfp_addd helper_vfp_addd_mips
|
||||
#define helper_vfp_addh helper_vfp_addh_mips
|
||||
#define helper_vfp_adds helper_vfp_adds_mips
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_mips
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_mips
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_mips
|
||||
#define helper_vfp_cmps helper_vfp_cmps_mips
|
||||
#define helper_vfp_divd helper_vfp_divd_mips
|
||||
#define helper_vfp_divh helper_vfp_divh_mips
|
||||
#define helper_vfp_divs helper_vfp_divs_mips
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_mips
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_mips
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_mips
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_mips
|
||||
#define helper_vfp_maxd helper_vfp_maxd_mips
|
||||
#define helper_vfp_maxh helper_vfp_maxh_mips
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_mips
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_mips
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_mips
|
||||
#define helper_vfp_maxs helper_vfp_maxs_mips
|
||||
#define helper_vfp_mind helper_vfp_mind_mips
|
||||
#define helper_vfp_minh helper_vfp_minh_mips
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_mips
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_mips
|
||||
#define helper_vfp_minnums helper_vfp_minnums_mips
|
||||
#define helper_vfp_mins helper_vfp_mins_mips
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_mips
|
||||
#define helper_vfp_muladds helper_vfp_muladds_mips
|
||||
#define helper_vfp_muld helper_vfp_muld_mips
|
||||
#define helper_vfp_mulh helper_vfp_mulh_mips
|
||||
#define helper_vfp_muls helper_vfp_muls_mips
|
||||
#define helper_vfp_negd helper_vfp_negd_mips
|
||||
#define helper_vfp_negs helper_vfp_negs_mips
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_mips
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_mips
|
||||
#define helper_vfp_subd helper_vfp_subd_mips
|
||||
#define helper_vfp_subh helper_vfp_subh_mips
|
||||
#define helper_vfp_subs helper_vfp_subs_mips
|
||||
#define helper_vfp_toshd helper_vfp_toshd_mips
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_mips
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_mips64
|
||||
#define helper_vfp_abss helper_vfp_abss_mips64
|
||||
#define helper_vfp_addd helper_vfp_addd_mips64
|
||||
#define helper_vfp_addh helper_vfp_addh_mips64
|
||||
#define helper_vfp_adds helper_vfp_adds_mips64
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_mips64
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_mips64
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_mips64
|
||||
#define helper_vfp_cmps helper_vfp_cmps_mips64
|
||||
#define helper_vfp_divd helper_vfp_divd_mips64
|
||||
#define helper_vfp_divh helper_vfp_divh_mips64
|
||||
#define helper_vfp_divs helper_vfp_divs_mips64
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_mips64
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_mips64
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_mips64
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_mips64
|
||||
#define helper_vfp_maxd helper_vfp_maxd_mips64
|
||||
#define helper_vfp_maxh helper_vfp_maxh_mips64
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_mips64
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_mips64
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_mips64
|
||||
#define helper_vfp_maxs helper_vfp_maxs_mips64
|
||||
#define helper_vfp_mind helper_vfp_mind_mips64
|
||||
#define helper_vfp_minh helper_vfp_minh_mips64
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_mips64
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_mips64
|
||||
#define helper_vfp_minnums helper_vfp_minnums_mips64
|
||||
#define helper_vfp_mins helper_vfp_mins_mips64
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_mips64
|
||||
#define helper_vfp_muladds helper_vfp_muladds_mips64
|
||||
#define helper_vfp_muld helper_vfp_muld_mips64
|
||||
#define helper_vfp_mulh helper_vfp_mulh_mips64
|
||||
#define helper_vfp_muls helper_vfp_muls_mips64
|
||||
#define helper_vfp_negd helper_vfp_negd_mips64
|
||||
#define helper_vfp_negs helper_vfp_negs_mips64
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_mips64
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_mips64
|
||||
#define helper_vfp_subd helper_vfp_subd_mips64
|
||||
#define helper_vfp_subh helper_vfp_subh_mips64
|
||||
#define helper_vfp_subs helper_vfp_subs_mips64
|
||||
#define helper_vfp_toshd helper_vfp_toshd_mips64
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_mips64
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_mips64el
|
||||
#define helper_vfp_abss helper_vfp_abss_mips64el
|
||||
#define helper_vfp_addd helper_vfp_addd_mips64el
|
||||
#define helper_vfp_addh helper_vfp_addh_mips64el
|
||||
#define helper_vfp_adds helper_vfp_adds_mips64el
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_mips64el
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_mips64el
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_mips64el
|
||||
#define helper_vfp_cmps helper_vfp_cmps_mips64el
|
||||
#define helper_vfp_divd helper_vfp_divd_mips64el
|
||||
#define helper_vfp_divh helper_vfp_divh_mips64el
|
||||
#define helper_vfp_divs helper_vfp_divs_mips64el
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_mips64el
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_mips64el
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_mips64el
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_mips64el
|
||||
#define helper_vfp_maxd helper_vfp_maxd_mips64el
|
||||
#define helper_vfp_maxh helper_vfp_maxh_mips64el
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_mips64el
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_mips64el
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_mips64el
|
||||
#define helper_vfp_maxs helper_vfp_maxs_mips64el
|
||||
#define helper_vfp_mind helper_vfp_mind_mips64el
|
||||
#define helper_vfp_minh helper_vfp_minh_mips64el
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_mips64el
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_mips64el
|
||||
#define helper_vfp_minnums helper_vfp_minnums_mips64el
|
||||
#define helper_vfp_mins helper_vfp_mins_mips64el
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_mips64el
|
||||
#define helper_vfp_muladds helper_vfp_muladds_mips64el
|
||||
#define helper_vfp_muld helper_vfp_muld_mips64el
|
||||
#define helper_vfp_mulh helper_vfp_mulh_mips64el
|
||||
#define helper_vfp_muls helper_vfp_muls_mips64el
|
||||
#define helper_vfp_negd helper_vfp_negd_mips64el
|
||||
#define helper_vfp_negs helper_vfp_negs_mips64el
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_mips64el
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_mips64el
|
||||
#define helper_vfp_subd helper_vfp_subd_mips64el
|
||||
#define helper_vfp_subh helper_vfp_subh_mips64el
|
||||
#define helper_vfp_subs helper_vfp_subs_mips64el
|
||||
#define helper_vfp_toshd helper_vfp_toshd_mips64el
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_mips64el
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_mipsel
|
||||
#define helper_vfp_abss helper_vfp_abss_mipsel
|
||||
#define helper_vfp_addd helper_vfp_addd_mipsel
|
||||
#define helper_vfp_addh helper_vfp_addh_mipsel
|
||||
#define helper_vfp_adds helper_vfp_adds_mipsel
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_mipsel
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_mipsel
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_mipsel
|
||||
#define helper_vfp_cmps helper_vfp_cmps_mipsel
|
||||
#define helper_vfp_divd helper_vfp_divd_mipsel
|
||||
#define helper_vfp_divh helper_vfp_divh_mipsel
|
||||
#define helper_vfp_divs helper_vfp_divs_mipsel
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_mipsel
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_mipsel
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_mipsel
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_mipsel
|
||||
#define helper_vfp_maxd helper_vfp_maxd_mipsel
|
||||
#define helper_vfp_maxh helper_vfp_maxh_mipsel
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_mipsel
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_mipsel
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_mipsel
|
||||
#define helper_vfp_maxs helper_vfp_maxs_mipsel
|
||||
#define helper_vfp_mind helper_vfp_mind_mipsel
|
||||
#define helper_vfp_minh helper_vfp_minh_mipsel
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_mipsel
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_mipsel
|
||||
#define helper_vfp_minnums helper_vfp_minnums_mipsel
|
||||
#define helper_vfp_mins helper_vfp_mins_mipsel
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_mipsel
|
||||
#define helper_vfp_muladds helper_vfp_muladds_mipsel
|
||||
#define helper_vfp_muld helper_vfp_muld_mipsel
|
||||
#define helper_vfp_mulh helper_vfp_mulh_mipsel
|
||||
#define helper_vfp_muls helper_vfp_muls_mipsel
|
||||
#define helper_vfp_negd helper_vfp_negd_mipsel
|
||||
#define helper_vfp_negs helper_vfp_negs_mipsel
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_mipsel
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_mipsel
|
||||
#define helper_vfp_subd helper_vfp_subd_mipsel
|
||||
#define helper_vfp_subh helper_vfp_subh_mipsel
|
||||
#define helper_vfp_subs helper_vfp_subs_mipsel
|
||||
#define helper_vfp_toshd helper_vfp_toshd_mipsel
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_mipsel
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_powerpc
|
||||
#define helper_vfp_abss helper_vfp_abss_powerpc
|
||||
#define helper_vfp_addd helper_vfp_addd_powerpc
|
||||
#define helper_vfp_addh helper_vfp_addh_powerpc
|
||||
#define helper_vfp_adds helper_vfp_adds_powerpc
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_powerpc
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_powerpc
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_powerpc
|
||||
#define helper_vfp_cmps helper_vfp_cmps_powerpc
|
||||
#define helper_vfp_divd helper_vfp_divd_powerpc
|
||||
#define helper_vfp_divh helper_vfp_divh_powerpc
|
||||
#define helper_vfp_divs helper_vfp_divs_powerpc
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_powerpc
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_powerpc
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_powerpc
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_powerpc
|
||||
#define helper_vfp_maxd helper_vfp_maxd_powerpc
|
||||
#define helper_vfp_maxh helper_vfp_maxh_powerpc
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_powerpc
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_powerpc
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_powerpc
|
||||
#define helper_vfp_maxs helper_vfp_maxs_powerpc
|
||||
#define helper_vfp_mind helper_vfp_mind_powerpc
|
||||
#define helper_vfp_minh helper_vfp_minh_powerpc
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_powerpc
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_powerpc
|
||||
#define helper_vfp_minnums helper_vfp_minnums_powerpc
|
||||
#define helper_vfp_mins helper_vfp_mins_powerpc
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_powerpc
|
||||
#define helper_vfp_muladds helper_vfp_muladds_powerpc
|
||||
#define helper_vfp_muld helper_vfp_muld_powerpc
|
||||
#define helper_vfp_mulh helper_vfp_mulh_powerpc
|
||||
#define helper_vfp_muls helper_vfp_muls_powerpc
|
||||
#define helper_vfp_negd helper_vfp_negd_powerpc
|
||||
#define helper_vfp_negs helper_vfp_negs_powerpc
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_powerpc
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_powerpc
|
||||
#define helper_vfp_subd helper_vfp_subd_powerpc
|
||||
#define helper_vfp_subh helper_vfp_subh_powerpc
|
||||
#define helper_vfp_subs helper_vfp_subs_powerpc
|
||||
#define helper_vfp_toshd helper_vfp_toshd_powerpc
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_powerpc
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_riscv32
|
||||
#define helper_vfp_abss helper_vfp_abss_riscv32
|
||||
#define helper_vfp_addd helper_vfp_addd_riscv32
|
||||
#define helper_vfp_addh helper_vfp_addh_riscv32
|
||||
#define helper_vfp_adds helper_vfp_adds_riscv32
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_riscv32
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_riscv32
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_riscv32
|
||||
#define helper_vfp_cmps helper_vfp_cmps_riscv32
|
||||
#define helper_vfp_divd helper_vfp_divd_riscv32
|
||||
#define helper_vfp_divh helper_vfp_divh_riscv32
|
||||
#define helper_vfp_divs helper_vfp_divs_riscv32
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_riscv32
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_riscv32
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_riscv32
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_riscv32
|
||||
#define helper_vfp_maxd helper_vfp_maxd_riscv32
|
||||
#define helper_vfp_maxh helper_vfp_maxh_riscv32
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_riscv32
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_riscv32
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_riscv32
|
||||
#define helper_vfp_maxs helper_vfp_maxs_riscv32
|
||||
#define helper_vfp_mind helper_vfp_mind_riscv32
|
||||
#define helper_vfp_minh helper_vfp_minh_riscv32
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_riscv32
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_riscv32
|
||||
#define helper_vfp_minnums helper_vfp_minnums_riscv32
|
||||
#define helper_vfp_mins helper_vfp_mins_riscv32
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_riscv32
|
||||
#define helper_vfp_muladds helper_vfp_muladds_riscv32
|
||||
#define helper_vfp_muld helper_vfp_muld_riscv32
|
||||
#define helper_vfp_mulh helper_vfp_mulh_riscv32
|
||||
#define helper_vfp_muls helper_vfp_muls_riscv32
|
||||
#define helper_vfp_negd helper_vfp_negd_riscv32
|
||||
#define helper_vfp_negs helper_vfp_negs_riscv32
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_riscv32
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_riscv32
|
||||
#define helper_vfp_subd helper_vfp_subd_riscv32
|
||||
#define helper_vfp_subh helper_vfp_subh_riscv32
|
||||
#define helper_vfp_subs helper_vfp_subs_riscv32
|
||||
#define helper_vfp_toshd helper_vfp_toshd_riscv32
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_riscv32
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_riscv64
|
||||
#define helper_vfp_abss helper_vfp_abss_riscv64
|
||||
#define helper_vfp_addd helper_vfp_addd_riscv64
|
||||
#define helper_vfp_addh helper_vfp_addh_riscv64
|
||||
#define helper_vfp_adds helper_vfp_adds_riscv64
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_riscv64
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_riscv64
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_riscv64
|
||||
#define helper_vfp_cmps helper_vfp_cmps_riscv64
|
||||
#define helper_vfp_divd helper_vfp_divd_riscv64
|
||||
#define helper_vfp_divh helper_vfp_divh_riscv64
|
||||
#define helper_vfp_divs helper_vfp_divs_riscv64
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_riscv64
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_riscv64
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_riscv64
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_riscv64
|
||||
#define helper_vfp_maxd helper_vfp_maxd_riscv64
|
||||
#define helper_vfp_maxh helper_vfp_maxh_riscv64
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_riscv64
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_riscv64
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_riscv64
|
||||
#define helper_vfp_maxs helper_vfp_maxs_riscv64
|
||||
#define helper_vfp_mind helper_vfp_mind_riscv64
|
||||
#define helper_vfp_minh helper_vfp_minh_riscv64
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_riscv64
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_riscv64
|
||||
#define helper_vfp_minnums helper_vfp_minnums_riscv64
|
||||
#define helper_vfp_mins helper_vfp_mins_riscv64
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_riscv64
|
||||
#define helper_vfp_muladds helper_vfp_muladds_riscv64
|
||||
#define helper_vfp_muld helper_vfp_muld_riscv64
|
||||
#define helper_vfp_mulh helper_vfp_mulh_riscv64
|
||||
#define helper_vfp_muls helper_vfp_muls_riscv64
|
||||
#define helper_vfp_negd helper_vfp_negd_riscv64
|
||||
#define helper_vfp_negs helper_vfp_negs_riscv64
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_riscv64
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_riscv64
|
||||
#define helper_vfp_subd helper_vfp_subd_riscv64
|
||||
#define helper_vfp_subh helper_vfp_subh_riscv64
|
||||
#define helper_vfp_subs helper_vfp_subs_riscv64
|
||||
#define helper_vfp_toshd helper_vfp_toshd_riscv64
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_riscv64
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_sparc
|
||||
#define helper_vfp_abss helper_vfp_abss_sparc
|
||||
#define helper_vfp_addd helper_vfp_addd_sparc
|
||||
#define helper_vfp_addh helper_vfp_addh_sparc
|
||||
#define helper_vfp_adds helper_vfp_adds_sparc
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_sparc
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_sparc
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_sparc
|
||||
#define helper_vfp_cmps helper_vfp_cmps_sparc
|
||||
#define helper_vfp_divd helper_vfp_divd_sparc
|
||||
#define helper_vfp_divh helper_vfp_divh_sparc
|
||||
#define helper_vfp_divs helper_vfp_divs_sparc
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_sparc
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_sparc
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_sparc
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_sparc
|
||||
#define helper_vfp_maxd helper_vfp_maxd_sparc
|
||||
#define helper_vfp_maxh helper_vfp_maxh_sparc
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_sparc
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_sparc
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_sparc
|
||||
#define helper_vfp_maxs helper_vfp_maxs_sparc
|
||||
#define helper_vfp_mind helper_vfp_mind_sparc
|
||||
#define helper_vfp_minh helper_vfp_minh_sparc
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_sparc
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_sparc
|
||||
#define helper_vfp_minnums helper_vfp_minnums_sparc
|
||||
#define helper_vfp_mins helper_vfp_mins_sparc
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_sparc
|
||||
#define helper_vfp_muladds helper_vfp_muladds_sparc
|
||||
#define helper_vfp_muld helper_vfp_muld_sparc
|
||||
#define helper_vfp_mulh helper_vfp_mulh_sparc
|
||||
#define helper_vfp_muls helper_vfp_muls_sparc
|
||||
#define helper_vfp_negd helper_vfp_negd_sparc
|
||||
#define helper_vfp_negs helper_vfp_negs_sparc
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_sparc
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_sparc
|
||||
#define helper_vfp_subd helper_vfp_subd_sparc
|
||||
#define helper_vfp_subh helper_vfp_subh_sparc
|
||||
#define helper_vfp_subs helper_vfp_subs_sparc
|
||||
#define helper_vfp_toshd helper_vfp_toshd_sparc
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_sparc
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_sparc64
|
||||
#define helper_vfp_abss helper_vfp_abss_sparc64
|
||||
#define helper_vfp_addd helper_vfp_addd_sparc64
|
||||
#define helper_vfp_addh helper_vfp_addh_sparc64
|
||||
#define helper_vfp_adds helper_vfp_adds_sparc64
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_sparc64
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_sparc64
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_sparc64
|
||||
#define helper_vfp_cmps helper_vfp_cmps_sparc64
|
||||
#define helper_vfp_divd helper_vfp_divd_sparc64
|
||||
#define helper_vfp_divh helper_vfp_divh_sparc64
|
||||
#define helper_vfp_divs helper_vfp_divs_sparc64
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_sparc64
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_sparc64
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_sparc64
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_sparc64
|
||||
#define helper_vfp_maxd helper_vfp_maxd_sparc64
|
||||
#define helper_vfp_maxh helper_vfp_maxh_sparc64
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_sparc64
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_sparc64
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_sparc64
|
||||
#define helper_vfp_maxs helper_vfp_maxs_sparc64
|
||||
#define helper_vfp_mind helper_vfp_mind_sparc64
|
||||
#define helper_vfp_minh helper_vfp_minh_sparc64
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_sparc64
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_sparc64
|
||||
#define helper_vfp_minnums helper_vfp_minnums_sparc64
|
||||
#define helper_vfp_mins helper_vfp_mins_sparc64
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_sparc64
|
||||
#define helper_vfp_muladds helper_vfp_muladds_sparc64
|
||||
#define helper_vfp_muld helper_vfp_muld_sparc64
|
||||
#define helper_vfp_mulh helper_vfp_mulh_sparc64
|
||||
#define helper_vfp_muls helper_vfp_muls_sparc64
|
||||
#define helper_vfp_negd helper_vfp_negd_sparc64
|
||||
#define helper_vfp_negs helper_vfp_negs_sparc64
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_sparc64
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_sparc64
|
||||
#define helper_vfp_subd helper_vfp_subd_sparc64
|
||||
#define helper_vfp_subh helper_vfp_subh_sparc64
|
||||
#define helper_vfp_subs helper_vfp_subs_sparc64
|
||||
#define helper_vfp_toshd helper_vfp_toshd_sparc64
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_sparc64
|
||||
|
|
|
@ -99,20 +99,28 @@ DEF_HELPER_FLAGS_5(probe_access_armfn, TCG_CALL_NO_WG, void, env, tl, i32, i32,
|
|||
DEF_HELPER_1(vfp_get_fpscr, i32, env)
|
||||
DEF_HELPER_2(vfp_set_fpscr, void, env, i32)
|
||||
|
||||
DEF_HELPER_3(vfp_addh, f16, f16, f16, ptr)
|
||||
DEF_HELPER_3(vfp_adds, f32, f32, f32, ptr)
|
||||
DEF_HELPER_3(vfp_addd, f64, f64, f64, ptr)
|
||||
DEF_HELPER_3(vfp_subh, f16, f16, f16, ptr)
|
||||
DEF_HELPER_3(vfp_subs, f32, f32, f32, ptr)
|
||||
DEF_HELPER_3(vfp_subd, f64, f64, f64, ptr)
|
||||
DEF_HELPER_3(vfp_mulh, f16, f16, f16, ptr)
|
||||
DEF_HELPER_3(vfp_muls, f32, f32, f32, ptr)
|
||||
DEF_HELPER_3(vfp_muld, f64, f64, f64, ptr)
|
||||
DEF_HELPER_3(vfp_divh, f16, f16, f16, ptr)
|
||||
DEF_HELPER_3(vfp_divs, f32, f32, f32, ptr)
|
||||
DEF_HELPER_3(vfp_divd, f64, f64, f64, ptr)
|
||||
DEF_HELPER_3(vfp_maxh, f16, f16, f16, ptr)
|
||||
DEF_HELPER_3(vfp_maxs, f32, f32, f32, ptr)
|
||||
DEF_HELPER_3(vfp_maxd, f64, f64, f64, ptr)
|
||||
DEF_HELPER_3(vfp_minh, f16, f16, f16, ptr)
|
||||
DEF_HELPER_3(vfp_mins, f32, f32, f32, ptr)
|
||||
DEF_HELPER_3(vfp_mind, f64, f64, f64, ptr)
|
||||
DEF_HELPER_3(vfp_maxnumh, f16, f16, f16, ptr)
|
||||
DEF_HELPER_3(vfp_maxnums, f32, f32, f32, ptr)
|
||||
DEF_HELPER_3(vfp_maxnumd, f64, f64, f64, ptr)
|
||||
DEF_HELPER_3(vfp_minnumh, f16, f16, f16, ptr)
|
||||
DEF_HELPER_3(vfp_minnums, f32, f32, f32, ptr)
|
||||
DEF_HELPER_3(vfp_minnumd, f64, f64, f64, ptr)
|
||||
DEF_HELPER_1(vfp_negs, f32, f32)
|
||||
|
|
|
@ -1284,6 +1284,55 @@ static bool do_vfp_3op_sp(DisasContext *s, VFPGen3OpSPFn *fn,
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool do_vfp_3op_hp(DisasContext *s, VFPGen3OpSPFn *fn,
|
||||
int vd, int vn, int vm, bool reads_vd)
|
||||
{
|
||||
/*
|
||||
* Do a half-precision operation. Functionally this is
|
||||
* the same as do_vfp_3op_sp(), except:
|
||||
* - it uses the FPST_FPCR_F16
|
||||
* - it doesn't need the VFP vector handling (fp16 is a
|
||||
* v8 feature, and in v8 VFP vectors don't exist)
|
||||
* - it does the aa32_fp16_arith feature test
|
||||
*/
|
||||
TCGv_i32 f0, f1, fd;
|
||||
TCGv_ptr fpst;
|
||||
TCGContext *tcg_ctx = s->uc->tcg_ctx;
|
||||
|
||||
if (!dc_isar_feature(aa32_fp16_arith, s)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (s->vec_len != 0 || s->vec_stride != 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!vfp_access_check(s)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
f0 = tcg_temp_new_i32(tcg_ctx);
|
||||
f1 = tcg_temp_new_i32(tcg_ctx);
|
||||
fd = tcg_temp_new_i32(tcg_ctx);
|
||||
fpst = fpstatus_ptr(tcg_ctx, FPST_FPCR_F16);
|
||||
|
||||
neon_load_reg32(s, f0, vn);
|
||||
neon_load_reg32(s, f1, vm);
|
||||
|
||||
if (reads_vd) {
|
||||
neon_load_reg32(s, fd, vd);
|
||||
}
|
||||
fn(tcg_ctx, fd, f0, f1, fpst);
|
||||
neon_store_reg32(s, fd, vd);
|
||||
|
||||
tcg_temp_free_i32(tcg_ctx, f0);
|
||||
tcg_temp_free_i32(tcg_ctx, f1);
|
||||
tcg_temp_free_i32(tcg_ctx, fd);
|
||||
tcg_temp_free_ptr(tcg_ctx, fpst);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool do_vfp_3op_dp(DisasContext *s, VFPGen3OpDPFn *fn,
|
||||
int vd, int vn, int vm, bool reads_vd)
|
||||
{
|
||||
|
@ -1664,6 +1713,11 @@ static bool trans_VNMLA_dp(DisasContext *s, arg_VNMLA_dp *a)
|
|||
return do_vfp_3op_dp(s, gen_VNMLA_dp, a->vd, a->vn, a->vm, true);
|
||||
}
|
||||
|
||||
static bool trans_VMUL_hp(DisasContext *s, arg_VMUL_sp *a)
|
||||
{
|
||||
return do_vfp_3op_hp(s, gen_helper_vfp_mulh, a->vd, a->vn, a->vm, false);
|
||||
}
|
||||
|
||||
static bool trans_VMUL_sp(DisasContext *s, arg_VMUL_sp *a)
|
||||
{
|
||||
return do_vfp_3op_sp(s, gen_helper_vfp_muls, a->vd, a->vn, a->vm, false);
|
||||
|
@ -1698,6 +1752,11 @@ static bool trans_VNMUL_dp(DisasContext *s, arg_VNMUL_dp *a)
|
|||
return do_vfp_3op_dp(s, gen_VNMUL_dp, a->vd, a->vn, a->vm, false);
|
||||
}
|
||||
|
||||
static bool trans_VADD_hp(DisasContext *s, arg_VADD_sp *a)
|
||||
{
|
||||
return do_vfp_3op_hp(s, gen_helper_vfp_addh, a->vd, a->vn, a->vm, false);
|
||||
}
|
||||
|
||||
static bool trans_VADD_sp(DisasContext *s, arg_VADD_sp *a)
|
||||
{
|
||||
return do_vfp_3op_sp(s, gen_helper_vfp_adds, a->vd, a->vn, a->vm, false);
|
||||
|
@ -1708,6 +1767,11 @@ static bool trans_VADD_dp(DisasContext *s, arg_VADD_dp *a)
|
|||
return do_vfp_3op_dp(s, gen_helper_vfp_addd, a->vd, a->vn, a->vm, false);
|
||||
}
|
||||
|
||||
static bool trans_VSUB_hp(DisasContext *s, arg_VSUB_sp *a)
|
||||
{
|
||||
return do_vfp_3op_hp(s, gen_helper_vfp_subh, a->vd, a->vn, a->vm, false);
|
||||
}
|
||||
|
||||
static bool trans_VSUB_sp(DisasContext *s, arg_VSUB_sp *a)
|
||||
{
|
||||
return do_vfp_3op_sp(s, gen_helper_vfp_subs, a->vd, a->vn, a->vm, false);
|
||||
|
@ -1718,6 +1782,11 @@ static bool trans_VSUB_dp(DisasContext *s, arg_VSUB_dp *a)
|
|||
return do_vfp_3op_dp(s, gen_helper_vfp_subd, a->vd, a->vn, a->vm, false);
|
||||
}
|
||||
|
||||
static bool trans_VDIV_hp(DisasContext *s, arg_VDIV_sp *a)
|
||||
{
|
||||
return do_vfp_3op_hp(s, gen_helper_vfp_divh, a->vd, a->vn, a->vm, false);
|
||||
}
|
||||
|
||||
static bool trans_VDIV_sp(DisasContext *s, arg_VDIV_sp *a)
|
||||
{
|
||||
return do_vfp_3op_sp(s, gen_helper_vfp_divs, a->vd, a->vn, a->vm, false);
|
||||
|
@ -1728,6 +1797,24 @@ static bool trans_VDIV_dp(DisasContext *s, arg_VDIV_dp *a)
|
|||
return do_vfp_3op_dp(s, gen_helper_vfp_divd, a->vd, a->vn, a->vm, false);
|
||||
}
|
||||
|
||||
static bool trans_VMINNM_hp(DisasContext *s, arg_VMINNM_sp *a)
|
||||
{
|
||||
if (!dc_isar_feature(aa32_vminmaxnm, s)) {
|
||||
return false;
|
||||
}
|
||||
return do_vfp_3op_hp(s, gen_helper_vfp_minnumh,
|
||||
a->vd, a->vn, a->vm, false);
|
||||
}
|
||||
|
||||
static bool trans_VMAXNM_hp(DisasContext *s, arg_VMAXNM_sp *a)
|
||||
{
|
||||
if (!dc_isar_feature(aa32_vminmaxnm, s)) {
|
||||
return false;
|
||||
}
|
||||
return do_vfp_3op_hp(s, gen_helper_vfp_maxnumh,
|
||||
a->vd, a->vn, a->vm, false);
|
||||
}
|
||||
|
||||
static bool trans_VMINNM_sp(DisasContext *s, arg_VMINNM_sp *a)
|
||||
{
|
||||
if (!dc_isar_feature(aa32_vminmaxnm, s)) {
|
||||
|
|
|
@ -49,6 +49,9 @@ VSEL 1111 1110 0. cc:2 .... .... 1010 .0.0 .... \
|
|||
VSEL 1111 1110 0. cc:2 .... .... 1011 .0.0 .... \
|
||||
vm=%vm_dp vn=%vn_dp vd=%vd_dp dp=1
|
||||
|
||||
VMAXNM_hp 1111 1110 1.00 .... .... 1001 .0.0 .... @vfp_dnm_s
|
||||
VMINNM_hp 1111 1110 1.00 .... .... 1001 .1.0 .... @vfp_dnm_s
|
||||
|
||||
VMAXNM_sp 1111 1110 1.00 .... .... 1010 .0.0 .... @vfp_dnm_s
|
||||
VMINNM_sp 1111 1110 1.00 .... .... 1010 .1.0 .... @vfp_dnm_s
|
||||
|
||||
|
|
|
@ -115,18 +115,22 @@ VNMLS_dp ---- 1110 0.01 .... .... 1011 .0.0 .... @vfp_dnm_d
|
|||
VNMLA_sp ---- 1110 0.01 .... .... 1010 .1.0 .... @vfp_dnm_s
|
||||
VNMLA_dp ---- 1110 0.01 .... .... 1011 .1.0 .... @vfp_dnm_d
|
||||
|
||||
VMUL_hp ---- 1110 0.10 .... .... 1001 .0.0 .... @vfp_dnm_s
|
||||
VMUL_sp ---- 1110 0.10 .... .... 1010 .0.0 .... @vfp_dnm_s
|
||||
VMUL_dp ---- 1110 0.10 .... .... 1011 .0.0 .... @vfp_dnm_d
|
||||
|
||||
VNMUL_sp ---- 1110 0.10 .... .... 1010 .1.0 .... @vfp_dnm_s
|
||||
VNMUL_dp ---- 1110 0.10 .... .... 1011 .1.0 .... @vfp_dnm_d
|
||||
|
||||
VADD_hp ---- 1110 0.11 .... .... 1001 .0.0 .... @vfp_dnm_s
|
||||
VADD_sp ---- 1110 0.11 .... .... 1010 .0.0 .... @vfp_dnm_s
|
||||
VADD_dp ---- 1110 0.11 .... .... 1011 .0.0 .... @vfp_dnm_d
|
||||
|
||||
VSUB_hp ---- 1110 0.11 .... .... 1001 .1.0 .... @vfp_dnm_s
|
||||
VSUB_sp ---- 1110 0.11 .... .... 1010 .1.0 .... @vfp_dnm_s
|
||||
VSUB_dp ---- 1110 0.11 .... .... 1011 .1.0 .... @vfp_dnm_d
|
||||
|
||||
VDIV_hp ---- 1110 1.00 .... .... 1001 .0.0 .... @vfp_dnm_s
|
||||
VDIV_sp ---- 1110 1.00 .... .... 1010 .0.0 .... @vfp_dnm_s
|
||||
VDIV_dp ---- 1110 1.00 .... .... 1011 .0.0 .... @vfp_dnm_d
|
||||
|
||||
|
|
|
@ -239,6 +239,11 @@ void vfp_set_fpscr(CPUARMState *env, uint32_t val)
|
|||
#define VFP_HELPER(name, p) HELPER(glue(glue(vfp_,name),p))
|
||||
|
||||
#define VFP_BINOP(name) \
|
||||
dh_ctype_f16 VFP_HELPER(name, h)(dh_ctype_f16 a, dh_ctype_f16 b, void *fpstp) \
|
||||
{ \
|
||||
float_status *fpst = fpstp; \
|
||||
return float16_ ## name(a, b, fpst); \
|
||||
} \
|
||||
float32 VFP_HELPER(name, s)(float32 a, float32 b, void *fpstp) \
|
||||
{ \
|
||||
float_status *fpst = fpstp; \
|
||||
|
|
|
@ -1888,6 +1888,7 @@
|
|||
#define helper_vfp_absd helper_vfp_absd_x86_64
|
||||
#define helper_vfp_abss helper_vfp_abss_x86_64
|
||||
#define helper_vfp_addd helper_vfp_addd_x86_64
|
||||
#define helper_vfp_addh helper_vfp_addh_x86_64
|
||||
#define helper_vfp_adds helper_vfp_adds_x86_64
|
||||
#define helper_vfp_cmpd helper_vfp_cmpd_x86_64
|
||||
#define helper_vfp_cmph_a64 helper_vfp_cmph_a64_x86_64
|
||||
|
@ -1896,6 +1897,7 @@
|
|||
#define helper_vfp_cmpes helper_vfp_cmpes_x86_64
|
||||
#define helper_vfp_cmps helper_vfp_cmps_x86_64
|
||||
#define helper_vfp_divd helper_vfp_divd_x86_64
|
||||
#define helper_vfp_divh helper_vfp_divh_x86_64
|
||||
#define helper_vfp_divs helper_vfp_divs_x86_64
|
||||
#define helper_vfp_fcvt_f16_to_f32 helper_vfp_fcvt_f16_to_f32_x86_64
|
||||
#define helper_vfp_fcvt_f16_to_f64 helper_vfp_fcvt_f16_to_f64_x86_64
|
||||
|
@ -1905,16 +1907,21 @@
|
|||
#define helper_vfp_fcvtsd helper_vfp_fcvtsd_x86_64
|
||||
#define helper_vfp_get_fpscr helper_vfp_get_fpscr_x86_64
|
||||
#define helper_vfp_maxd helper_vfp_maxd_x86_64
|
||||
#define helper_vfp_maxh helper_vfp_maxh_x86_64
|
||||
#define helper_vfp_maxnumd helper_vfp_maxnumd_x86_64
|
||||
#define helper_vfp_maxnumh helper_vfp_maxnumh_x86_64
|
||||
#define helper_vfp_maxnums helper_vfp_maxnums_x86_64
|
||||
#define helper_vfp_maxs helper_vfp_maxs_x86_64
|
||||
#define helper_vfp_mind helper_vfp_mind_x86_64
|
||||
#define helper_vfp_minh helper_vfp_minh_x86_64
|
||||
#define helper_vfp_minnumd helper_vfp_minnumd_x86_64
|
||||
#define helper_vfp_minnumh helper_vfp_minnumh_x86_64
|
||||
#define helper_vfp_minnums helper_vfp_minnums_x86_64
|
||||
#define helper_vfp_mins helper_vfp_mins_x86_64
|
||||
#define helper_vfp_muladdd helper_vfp_muladdd_x86_64
|
||||
#define helper_vfp_muladds helper_vfp_muladds_x86_64
|
||||
#define helper_vfp_muld helper_vfp_muld_x86_64
|
||||
#define helper_vfp_mulh helper_vfp_mulh_x86_64
|
||||
#define helper_vfp_muls helper_vfp_muls_x86_64
|
||||
#define helper_vfp_negd helper_vfp_negd_x86_64
|
||||
#define helper_vfp_negs helper_vfp_negs_x86_64
|
||||
|
@ -1933,6 +1940,7 @@
|
|||
#define helper_vfp_sqtoh helper_vfp_sqtoh_x86_64
|
||||
#define helper_vfp_sqtos helper_vfp_sqtos_x86_64
|
||||
#define helper_vfp_subd helper_vfp_subd_x86_64
|
||||
#define helper_vfp_subh helper_vfp_subh_x86_64
|
||||
#define helper_vfp_subs helper_vfp_subs_x86_64
|
||||
#define helper_vfp_toshd helper_vfp_toshd_x86_64
|
||||
#define helper_vfp_toshd_round_to_zero helper_vfp_toshd_round_to_zero_x86_64
|
||||
|
|
Loading…
Reference in a new issue