@samitouri / QOSamiQemu / commits / 023af3f741

target/arm: Implement SCVTF, UCVTF (predicated, zeroing)

Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 20260604234852.573178-15-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Richard Henderson committed Jun 4, 2026 at 16:48 UTC 023af3f7418a3cfa833d55057fe0ac9e35bcc684
2 files changed +50
target/arm/tcg/sve.decode
+16
@@ -1283,6 +1283,22 @@ UCVTF_sd_m 01100101 11 010 00 1 101 ... ..... ..... @rd_pg_rn_e0
1283 UCVTF_ds_m 01100101 11 010 10 1 101 ... ..... ..... @rd_pg_rn_e0
1284 UCVTF_dd_m 01100101 11 010 11 1 101 ... ..... ..... @rd_pg_rn_e0
1285
1286 +SCVTF_hh_z 01100100 01 011 10 0 110 ... ..... ..... @rd_pg_rn_e0
1287 +SCVTF_sh_z 01100100 01 011 10 1 100 ... ..... ..... @rd_pg_rn_e0
1288 +SCVTF_ss_z 01100100 10 011 10 1 100 ... ..... ..... @rd_pg_rn_e0
1289 +SCVTF_sd_z 01100100 11 011 10 0 100 ... ..... ..... @rd_pg_rn_e0
1290 +SCVTF_dh_z 01100100 01 011 10 1 110 ... ..... ..... @rd_pg_rn_e0
1291 +SCVTF_ds_z 01100100 11 011 10 1 100 ... ..... ..... @rd_pg_rn_e0
1292 +SCVTF_dd_z 01100100 11 011 10 1 110 ... ..... ..... @rd_pg_rn_e0
1293 +
1294 +UCVTF_hh_z 01100100 01 011 10 0 111 ... ..... ..... @rd_pg_rn_e0
1295 +UCVTF_sh_z 01100100 01 011 10 1 101 ... ..... ..... @rd_pg_rn_e0
1296 +UCVTF_ss_z 01100100 10 011 10 1 101 ... ..... ..... @rd_pg_rn_e0
1297 +UCVTF_sd_z 01100100 11 011 10 0 101 ... ..... ..... @rd_pg_rn_e0
1298 +UCVTF_dh_z 01100100 01 011 10 1 111 ... ..... ..... @rd_pg_rn_e0
1299 +UCVTF_ds_z 01100100 11 011 10 1 101 ... ..... ..... @rd_pg_rn_e0
1300 +UCVTF_dd_z 01100100 11 011 10 1 111 ... ..... ..... @rd_pg_rn_e0
1301 +
1302 ### SVE Memory - 32-bit Gather and Unsized Contiguous Group
1303
1304 # SVE load predicate register
target/arm/tcg/translate-sve.c
+34
@@ -4784,6 +4784,40 @@ TRANS_FEAT(UCVTF_sd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz,
4784 TRANS_FEAT(UCVTF_dd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz,
4785 gen_helper_sve_ucvt_dd, a, 0, FPST_A64)
4786
4787 +TRANS_FEAT(SCVTF_hh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4788 + gen_helper_sve_scvt_hh, a, 1, FPST_A64_F16)
4789 +TRANS_FEAT(SCVTF_sh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4790 + gen_helper_sve_scvt_sh, a, 1, FPST_A64_F16)
4791 +TRANS_FEAT(SCVTF_dh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4792 + gen_helper_sve_scvt_dh, a, 1, FPST_A64_F16)
4793 +
4794 +TRANS_FEAT(SCVTF_ss_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4795 + gen_helper_sve_scvt_ss, a, 1, FPST_A64)
4796 +TRANS_FEAT(SCVTF_ds_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4797 + gen_helper_sve_scvt_ds, a, 1, FPST_A64)
4798 +
4799 +TRANS_FEAT(SCVTF_sd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4800 + gen_helper_sve_scvt_sd, a, 1, FPST_A64)
4801 +TRANS_FEAT(SCVTF_dd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4802 + gen_helper_sve_scvt_dd, a, 1, FPST_A64)
4803 +
4804 +TRANS_FEAT(UCVTF_hh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4805 + gen_helper_sve_ucvt_hh, a, 1, FPST_A64_F16)
4806 +TRANS_FEAT(UCVTF_sh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4807 + gen_helper_sve_ucvt_sh, a, 1, FPST_A64_F16)
4808 +TRANS_FEAT(UCVTF_dh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4809 + gen_helper_sve_ucvt_dh, a, 1, FPST_A64_F16)
4810 +
4811 +TRANS_FEAT(UCVTF_ss_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4812 + gen_helper_sve_ucvt_ss, a, 1, FPST_A64)
4813 +TRANS_FEAT(UCVTF_ds_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4814 + gen_helper_sve_ucvt_ds, a, 1, FPST_A64)
4815 +TRANS_FEAT(UCVTF_sd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4816 + gen_helper_sve_ucvt_sd, a, 1, FPST_A64)
4817 +
4818 +TRANS_FEAT(UCVTF_dd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz,
4819 + gen_helper_sve_ucvt_dd, a, 1, FPST_A64)
4820 +
4821 /*
4822 *** SVE Memory - 32-bit Gather and Unsized Contiguous Group
4823 */