@samitouri / QOSamiQemu / commits / 1e3e84c471

target/arm: Implement Floating-point square root (predicated, zeroing)

This is FRECPX and FSQRT. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 20260604234852.573178-14-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Richard Henderson committed Jun 4, 2026 at 16:48 UTC 1e3e84c4717cc91e22c73c9862141471511377de
2 files changed +8
target/arm/tcg/sve.decode
+3
@@ -1263,6 +1263,9 @@ FRINTI_z 01100100 .. 011 001 111 ... ..... ..... @rd_pg_rn
1263 FRECPX_m 01100101 .. 001 100 101 ... ..... ..... @rd_pg_rn
1264 FSQRT_m 01100101 .. 001 101 101 ... ..... ..... @rd_pg_rn
1265
1266 +FRECPX_z 01100100 .. 011 011 100 ... ..... ..... @rd_pg_rn
1267 +FSQRT_z 01100100 .. 011 011 101 ... ..... ..... @rd_pg_rn
1268 +
1269 # SVE integer convert to floating-point
1270 SCVTF_hh_m 01100101 01 010 01 0 101 ... ..... ..... @rd_pg_rn_e0
1271 SCVTF_sh_m 01100101 01 010 10 0 101 ... ..... ..... @rd_pg_rn_e0
target/arm/tcg/translate-sve.c
+5
@@ -4736,6 +4736,8 @@ static gen_helper_gvec_3_ptr * const frecpx_fns[] = {
4736 };
4737 TRANS_FEAT(FRECPX_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz,
4738 frecpx_fns[a->esz], a, 0, select_ah_fpst(s, a->esz))
4739 +TRANS_FEAT(FRECPX_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4740 + frecpx_fns[a->esz], a, 1, select_ah_fpst(s, a->esz))
4741
4742 static gen_helper_gvec_3_ptr * const fsqrt_fns[] = {
4743 NULL, gen_helper_sve_fsqrt_h,
@@ -4744,6 +4746,9 @@ static gen_helper_gvec_3_ptr * const fsqrt_fns[] = {
4746 TRANS_FEAT(FSQRT_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz,
4747 fsqrt_fns[a->esz], a, 0,
4748 a->esz == MO_16 ? FPST_A64_F16 : FPST_A64)
4749 +TRANS_FEAT(FSQRT_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4750 + fsqrt_fns[a->esz], a, 1,
4751 + a->esz == MO_16 ? FPST_A64_F16 : FPST_A64)
4752
4753 TRANS_FEAT(SCVTF_hh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz,
4754 gen_helper_sve_scvt_hh, a, 0, FPST_A64_F16)