mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06: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. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20200828183354.27913-4-peter.maydell@linaro.org
This commit is contained in:
parent
02bc236d01
commit
120a0eb3ea
5 changed files with 106 additions and 0 deletions
|
@ -101,20 +101,28 @@ DEF_HELPER_FLAGS_5(probe_access, TCG_CALL_NO_WG, void, env, tl, i32, 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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue