diff --git a/qemu/aarch64.h b/qemu/aarch64.h index 8f13e726..e5d688ba 100644 --- a/qemu/aarch64.h +++ b/qemu/aarch64.h @@ -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 diff --git a/qemu/aarch64eb.h b/qemu/aarch64eb.h index 0c9813bb..f1061b39 100644 --- a/qemu/aarch64eb.h +++ b/qemu/aarch64eb.h @@ -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 diff --git a/qemu/arm.h b/qemu/arm.h index 61fbf4b5..0aabf703 100644 --- a/qemu/arm.h +++ b/qemu/arm.h @@ -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 diff --git a/qemu/armeb.h b/qemu/armeb.h index 687dad6f..3b9feecf 100644 --- a/qemu/armeb.h +++ b/qemu/armeb.h @@ -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 diff --git a/qemu/header_gen.py b/qemu/header_gen.py index 4efb3f48..7891f329 100644 --- a/qemu/header_gen.py +++ b/qemu/header_gen.py @@ -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', diff --git a/qemu/m68k.h b/qemu/m68k.h index fddcaea8..737fdc41 100644 --- a/qemu/m68k.h +++ b/qemu/m68k.h @@ -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 diff --git a/qemu/mips.h b/qemu/mips.h index 37fbfc29..a953f15f 100644 --- a/qemu/mips.h +++ b/qemu/mips.h @@ -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 diff --git a/qemu/mips64.h b/qemu/mips64.h index 3abe9173..da9dd880 100644 --- a/qemu/mips64.h +++ b/qemu/mips64.h @@ -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 diff --git a/qemu/mips64el.h b/qemu/mips64el.h index 67ca4e38..4d3a4178 100644 --- a/qemu/mips64el.h +++ b/qemu/mips64el.h @@ -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 diff --git a/qemu/mipsel.h b/qemu/mipsel.h index e1394210..de9f2a91 100644 --- a/qemu/mipsel.h +++ b/qemu/mipsel.h @@ -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 diff --git a/qemu/powerpc.h b/qemu/powerpc.h index 52273cc0..17895358 100644 --- a/qemu/powerpc.h +++ b/qemu/powerpc.h @@ -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 diff --git a/qemu/riscv32.h b/qemu/riscv32.h index de828b92..6c1bd640 100644 --- a/qemu/riscv32.h +++ b/qemu/riscv32.h @@ -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 diff --git a/qemu/riscv64.h b/qemu/riscv64.h index e82c8922..1f54600e 100644 --- a/qemu/riscv64.h +++ b/qemu/riscv64.h @@ -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 diff --git a/qemu/sparc.h b/qemu/sparc.h index 06ba1c6d..ed4ef889 100644 --- a/qemu/sparc.h +++ b/qemu/sparc.h @@ -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 diff --git a/qemu/sparc64.h b/qemu/sparc64.h index 99620270..dc3f3f3d 100644 --- a/qemu/sparc64.h +++ b/qemu/sparc64.h @@ -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 diff --git a/qemu/target/arm/helper.h b/qemu/target/arm/helper.h index 25aa6b91..a288d1db 100644 --- a/qemu/target/arm/helper.h +++ b/qemu/target/arm/helper.h @@ -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) diff --git a/qemu/target/arm/translate-vfp.inc.c b/qemu/target/arm/translate-vfp.inc.c index 751e56d3..660334b7 100644 --- a/qemu/target/arm/translate-vfp.inc.c +++ b/qemu/target/arm/translate-vfp.inc.c @@ -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)) { diff --git a/qemu/target/arm/vfp-uncond.decode b/qemu/target/arm/vfp-uncond.decode index 34ca1642..ee700e51 100644 --- a/qemu/target/arm/vfp-uncond.decode +++ b/qemu/target/arm/vfp-uncond.decode @@ -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 diff --git a/qemu/target/arm/vfp.decode b/qemu/target/arm/vfp.decode index 2c793e3e..1ecd5e28 100644 --- a/qemu/target/arm/vfp.decode +++ b/qemu/target/arm/vfp.decode @@ -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 diff --git a/qemu/target/arm/vfp_helper.c b/qemu/target/arm/vfp_helper.c index 99993cad..229363de 100644 --- a/qemu/target/arm/vfp_helper.c +++ b/qemu/target/arm/vfp_helper.c @@ -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; \ diff --git a/qemu/x86_64.h b/qemu/x86_64.h index a8f4f50b..9db496d3 100644 --- a/qemu/x86_64.h +++ b/qemu/x86_64.h @@ -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