Lines Matching refs:a

306 static bool trans_VSEL(DisasContext *s, arg_VSEL *a)  in trans_VSEL()  argument
309 int sz = a->sz; in trans_VSEL()
325 ((a->vm | a->vn | a->vd) & 0x10)) { in trans_VSEL()
329 rd = a->vd; in trans_VSEL()
330 rn = a->vn; in trans_VSEL()
331 rm = a->vm; in trans_VSEL()
357 switch (a->cc) { in trans_VSEL()
388 switch (a->cc) { in trans_VSEL()
429 static bool trans_VRINT(DisasContext *s, arg_VRINT *a) in trans_VRINT() argument
432 int sz = a->sz; in trans_VRINT()
435 int rounding = fp_decode_rm[a->rm]; in trans_VRINT()
451 ((a->vm | a->vd) & 0x10)) { in trans_VRINT()
455 rd = a->vd; in trans_VRINT()
456 rm = a->vm; in trans_VRINT()
496 static bool trans_VCVT(DisasContext *s, arg_VCVT *a) in trans_VCVT() argument
499 int sz = a->sz; in trans_VCVT()
502 int rounding = fp_decode_rm[a->rm]; in trans_VCVT()
503 bool is_signed = a->op; in trans_VCVT()
518 if (sz == 3 && !dc_isar_feature(aa32_simd_r32, s) && (a->vm & 0x10)) { in trans_VCVT()
522 rd = a->vd; in trans_VCVT()
523 rm = a->vm; in trans_VCVT()
619 static bool trans_VMOV_to_gp(DisasContext *s, arg_VMOV_to_gp *a) in trans_VMOV_to_gp() argument
629 if (a->size == MO_32 in trans_VMOV_to_gp()
637 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vn & 0x10)) { in trans_VMOV_to_gp()
651 if (!mve_skip_vmov(s, a->vn, a->index, a->size)) { in trans_VMOV_to_gp()
653 read_neon_element32(tmp, a->vn, a->index, in trans_VMOV_to_gp()
654 a->size | (a->u ? 0 : MO_SIGN)); in trans_VMOV_to_gp()
655 store_reg(s, a->rt, tmp); in trans_VMOV_to_gp()
664 static bool trans_VMOV_from_gp(DisasContext *s, arg_VMOV_from_gp *a) in trans_VMOV_from_gp() argument
674 if (a->size == MO_32 in trans_VMOV_from_gp()
682 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vn & 0x10)) { in trans_VMOV_from_gp()
696 if (!mve_skip_vmov(s, a->vn, a->index, a->size)) { in trans_VMOV_from_gp()
697 tmp = load_reg(s, a->rt); in trans_VMOV_from_gp()
698 write_neon_element32(tmp, a->vn, a->index, a->size); in trans_VMOV_from_gp()
707 static bool trans_VDUP(DisasContext *s, arg_VDUP *a) in trans_VDUP() argument
718 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vn & 0x10)) { in trans_VDUP()
722 if (a->b && a->e) { in trans_VDUP()
726 if (a->q && (a->vn & 1)) { in trans_VDUP()
730 vec_size = a->q ? 16 : 8; in trans_VDUP()
731 if (a->b) { in trans_VDUP()
733 } else if (a->e) { in trans_VDUP()
743 tmp = load_reg(s, a->rt); in trans_VDUP()
744 tcg_gen_gvec_dup_i32(size, neon_full_reg_offset(a->vn), in trans_VDUP()
749 static bool trans_VMSR_VMRS(DisasContext *s, arg_VMSR_VMRS *a) in trans_VMSR_VMRS() argument
763 switch (a->reg) { in trans_VMSR_VMRS()
814 if (a->l) { in trans_VMSR_VMRS()
816 switch (a->reg) { in trans_VMSR_VMRS()
825 tcg_constant_i32(a->rt), in trans_VMSR_VMRS()
826 tcg_constant_i32(a->reg)); in trans_VMSR_VMRS()
832 tmp = load_cpu_field(vfp.xregs[a->reg]); in trans_VMSR_VMRS()
835 if (a->rt == 15) { in trans_VMSR_VMRS()
847 if (a->rt == 15) { in trans_VMSR_VMRS()
851 store_reg(s, a->rt, tmp); in trans_VMSR_VMRS()
855 switch (a->reg) { in trans_VMSR_VMRS()
863 tmp = load_reg(s, a->rt); in trans_VMSR_VMRS()
872 tmp = load_reg(s, a->rt); in trans_VMSR_VMRS()
874 store_cpu_field(tmp, vfp.xregs[a->reg]); in trans_VMSR_VMRS()
879 tmp = load_reg(s, a->rt); in trans_VMSR_VMRS()
880 store_cpu_field(tmp, vfp.xregs[a->reg]); in trans_VMSR_VMRS()
891 static bool trans_VMOV_half(DisasContext *s, arg_VMOV_single *a) in trans_VMOV_half() argument
899 if (a->rt == 15) { in trans_VMOV_half()
908 if (a->l) { in trans_VMOV_half()
911 vfp_load_reg16(tmp, a->vn); in trans_VMOV_half()
912 store_reg(s, a->rt, tmp); in trans_VMOV_half()
915 tmp = load_reg(s, a->rt); in trans_VMOV_half()
917 vfp_store_reg32(tmp, a->vn); in trans_VMOV_half()
923 static bool trans_VMOV_single(DisasContext *s, arg_VMOV_single *a) in trans_VMOV_single() argument
935 if (a->l) { in trans_VMOV_single()
938 vfp_load_reg32(tmp, a->vn); in trans_VMOV_single()
939 if (a->rt == 15) { in trans_VMOV_single()
943 store_reg(s, a->rt, tmp); in trans_VMOV_single()
947 tmp = load_reg(s, a->rt); in trans_VMOV_single()
948 vfp_store_reg32(tmp, a->vn); in trans_VMOV_single()
954 static bool trans_VMOV_64_sp(DisasContext *s, arg_VMOV_64_sp *a) in trans_VMOV_64_sp() argument
970 if (a->op) { in trans_VMOV_64_sp()
973 vfp_load_reg32(tmp, a->vm); in trans_VMOV_64_sp()
974 store_reg(s, a->rt, tmp); in trans_VMOV_64_sp()
976 vfp_load_reg32(tmp, a->vm + 1); in trans_VMOV_64_sp()
977 store_reg(s, a->rt2, tmp); in trans_VMOV_64_sp()
980 tmp = load_reg(s, a->rt); in trans_VMOV_64_sp()
981 vfp_store_reg32(tmp, a->vm); in trans_VMOV_64_sp()
982 tmp = load_reg(s, a->rt2); in trans_VMOV_64_sp()
983 vfp_store_reg32(tmp, a->vm + 1); in trans_VMOV_64_sp()
989 static bool trans_VMOV_64_dp(DisasContext *s, arg_VMOV_64_dp *a) in trans_VMOV_64_dp() argument
1003 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vm & 0x10)) { in trans_VMOV_64_dp()
1011 if (a->op) { in trans_VMOV_64_dp()
1014 vfp_load_reg32(tmp, a->vm * 2); in trans_VMOV_64_dp()
1015 store_reg(s, a->rt, tmp); in trans_VMOV_64_dp()
1017 vfp_load_reg32(tmp, a->vm * 2 + 1); in trans_VMOV_64_dp()
1018 store_reg(s, a->rt2, tmp); in trans_VMOV_64_dp()
1021 tmp = load_reg(s, a->rt); in trans_VMOV_64_dp()
1022 vfp_store_reg32(tmp, a->vm * 2); in trans_VMOV_64_dp()
1023 tmp = load_reg(s, a->rt2); in trans_VMOV_64_dp()
1024 vfp_store_reg32(tmp, a->vm * 2 + 1); in trans_VMOV_64_dp()
1030 static bool trans_VLDR_VSTR_hp(DisasContext *s, arg_VLDR_VSTR_sp *a) in trans_VLDR_VSTR_hp() argument
1044 offset = a->imm << 1; in trans_VLDR_VSTR_hp()
1045 if (!a->u) { in trans_VLDR_VSTR_hp()
1050 addr = add_reg_for_lit(s, a->rn, offset); in trans_VLDR_VSTR_hp()
1052 if (a->l) { in trans_VLDR_VSTR_hp()
1054 vfp_store_reg32(tmp, a->vd); in trans_VLDR_VSTR_hp()
1056 vfp_load_reg32(tmp, a->vd); in trans_VLDR_VSTR_hp()
1062 static bool trans_VLDR_VSTR_sp(DisasContext *s, arg_VLDR_VSTR_sp *a) in trans_VLDR_VSTR_sp() argument
1075 offset = a->imm << 2; in trans_VLDR_VSTR_sp()
1076 if (!a->u) { in trans_VLDR_VSTR_sp()
1081 addr = add_reg_for_lit(s, a->rn, offset); in trans_VLDR_VSTR_sp()
1083 if (a->l) { in trans_VLDR_VSTR_sp()
1085 vfp_store_reg32(tmp, a->vd); in trans_VLDR_VSTR_sp()
1087 vfp_load_reg32(tmp, a->vd); in trans_VLDR_VSTR_sp()
1093 static bool trans_VLDR_VSTR_dp(DisasContext *s, arg_VLDR_VSTR_dp *a) in trans_VLDR_VSTR_dp() argument
1105 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vd & 0x10)) { in trans_VLDR_VSTR_dp()
1113 offset = a->imm << 2; in trans_VLDR_VSTR_dp()
1114 if (!a->u) { in trans_VLDR_VSTR_dp()
1119 addr = add_reg_for_lit(s, a->rn, offset); in trans_VLDR_VSTR_dp()
1121 if (a->l) { in trans_VLDR_VSTR_dp()
1123 vfp_store_reg64(tmp, a->vd); in trans_VLDR_VSTR_dp()
1125 vfp_load_reg64(tmp, a->vd); in trans_VLDR_VSTR_dp()
1131 static bool trans_VLDM_VSTM_sp(DisasContext *s, arg_VLDM_VSTM_sp *a) in trans_VLDM_VSTM_sp() argument
1141 n = a->imm; in trans_VLDM_VSTM_sp()
1143 if (n == 0 || (a->vd + n) > 32) { in trans_VLDM_VSTM_sp()
1150 if (a->rn == 15 && a->w) { in trans_VLDM_VSTM_sp()
1162 addr = add_reg_for_lit(s, a->rn, 0); in trans_VLDM_VSTM_sp()
1163 if (a->p) { in trans_VLDM_VSTM_sp()
1165 tcg_gen_addi_i32(addr, addr, -(a->imm << 2)); in trans_VLDM_VSTM_sp()
1168 if (s->v8m_stackcheck && a->rn == 13 && a->w) { in trans_VLDM_VSTM_sp()
1183 if (a->l) { in trans_VLDM_VSTM_sp()
1186 vfp_store_reg32(tmp, a->vd + i); in trans_VLDM_VSTM_sp()
1189 vfp_load_reg32(tmp, a->vd + i); in trans_VLDM_VSTM_sp()
1194 if (a->w) { in trans_VLDM_VSTM_sp()
1196 if (a->p) { in trans_VLDM_VSTM_sp()
1200 store_reg(s, a->rn, addr); in trans_VLDM_VSTM_sp()
1207 static bool trans_VLDM_VSTM_dp(DisasContext *s, arg_VLDM_VSTM_dp *a) in trans_VLDM_VSTM_dp() argument
1219 n = a->imm >> 1; in trans_VLDM_VSTM_dp()
1221 if (n == 0 || (a->vd + n) > 32 || n > 16) { in trans_VLDM_VSTM_dp()
1228 if (a->rn == 15 && a->w) { in trans_VLDM_VSTM_dp()
1234 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vd + n) > 16) { in trans_VLDM_VSTM_dp()
1245 addr = add_reg_for_lit(s, a->rn, 0); in trans_VLDM_VSTM_dp()
1246 if (a->p) { in trans_VLDM_VSTM_dp()
1248 tcg_gen_addi_i32(addr, addr, -(a->imm << 2)); in trans_VLDM_VSTM_dp()
1251 if (s->v8m_stackcheck && a->rn == 13 && a->w) { in trans_VLDM_VSTM_dp()
1266 if (a->l) { in trans_VLDM_VSTM_dp()
1269 vfp_store_reg64(tmp, a->vd + i); in trans_VLDM_VSTM_dp()
1272 vfp_load_reg64(tmp, a->vd + i); in trans_VLDM_VSTM_dp()
1277 if (a->w) { in trans_VLDM_VSTM_dp()
1279 if (a->p) { in trans_VLDM_VSTM_dp()
1281 } else if (a->imm & 1) { in trans_VLDM_VSTM_dp()
1290 store_reg(s, a->rn, addr); in trans_VLDM_VSTM_dp()
1729 static bool trans_VMLA_hp(DisasContext *s, arg_VMLA_sp *a) in trans_VMLA_hp() argument
1731 return do_vfp_3op_hp(s, gen_VMLA_hp, a->vd, a->vn, a->vm, true); in trans_VMLA_hp()
1743 static bool trans_VMLA_sp(DisasContext *s, arg_VMLA_sp *a) in trans_VMLA_sp() argument
1745 return do_vfp_3op_sp(s, gen_VMLA_sp, a->vd, a->vn, a->vm, true); in trans_VMLA_sp()
1757 static bool trans_VMLA_dp(DisasContext *s, arg_VMLA_dp *a) in trans_VMLA_dp() argument
1759 return do_vfp_3op_dp(s, gen_VMLA_dp, a->vd, a->vn, a->vm, true); in trans_VMLA_dp()
1775 static bool trans_VMLS_hp(DisasContext *s, arg_VMLS_sp *a) in trans_VMLS_hp() argument
1777 return do_vfp_3op_hp(s, gen_VMLS_hp, a->vd, a->vn, a->vm, true); in trans_VMLS_hp()
1793 static bool trans_VMLS_sp(DisasContext *s, arg_VMLS_sp *a) in trans_VMLS_sp() argument
1795 return do_vfp_3op_sp(s, gen_VMLS_sp, a->vd, a->vn, a->vm, true); in trans_VMLS_sp()
1811 static bool trans_VMLS_dp(DisasContext *s, arg_VMLS_dp *a) in trans_VMLS_dp() argument
1813 return do_vfp_3op_dp(s, gen_VMLS_dp, a->vd, a->vn, a->vm, true); in trans_VMLS_dp()
1831 static bool trans_VNMLS_hp(DisasContext *s, arg_VNMLS_sp *a) in trans_VNMLS_hp() argument
1833 return do_vfp_3op_hp(s, gen_VNMLS_hp, a->vd, a->vn, a->vm, true); in trans_VNMLS_hp()
1851 static bool trans_VNMLS_sp(DisasContext *s, arg_VNMLS_sp *a) in trans_VNMLS_sp() argument
1853 return do_vfp_3op_sp(s, gen_VNMLS_sp, a->vd, a->vn, a->vm, true); in trans_VNMLS_sp()
1871 static bool trans_VNMLS_dp(DisasContext *s, arg_VNMLS_dp *a) in trans_VNMLS_dp() argument
1873 return do_vfp_3op_dp(s, gen_VNMLS_dp, a->vd, a->vn, a->vm, true); in trans_VNMLS_dp()
1887 static bool trans_VNMLA_hp(DisasContext *s, arg_VNMLA_sp *a) in trans_VNMLA_hp() argument
1889 return do_vfp_3op_hp(s, gen_VNMLA_hp, a->vd, a->vn, a->vm, true); in trans_VNMLA_hp()
1903 static bool trans_VNMLA_sp(DisasContext *s, arg_VNMLA_sp *a) in trans_VNMLA_sp() argument
1905 return do_vfp_3op_sp(s, gen_VNMLA_sp, a->vd, a->vn, a->vm, true); in trans_VNMLA_sp()
1919 static bool trans_VNMLA_dp(DisasContext *s, arg_VNMLA_dp *a) in trans_VNMLA_dp() argument
1921 return do_vfp_3op_dp(s, gen_VNMLA_dp, a->vd, a->vn, a->vm, true); in trans_VNMLA_dp()
1924 static bool trans_VMUL_hp(DisasContext *s, arg_VMUL_sp *a) in trans_VMUL_hp() argument
1926 return do_vfp_3op_hp(s, gen_helper_vfp_mulh, a->vd, a->vn, a->vm, false); in trans_VMUL_hp()
1929 static bool trans_VMUL_sp(DisasContext *s, arg_VMUL_sp *a) in trans_VMUL_sp() argument
1931 return do_vfp_3op_sp(s, gen_helper_vfp_muls, a->vd, a->vn, a->vm, false); in trans_VMUL_sp()
1934 static bool trans_VMUL_dp(DisasContext *s, arg_VMUL_dp *a) in trans_VMUL_dp() argument
1936 return do_vfp_3op_dp(s, gen_helper_vfp_muld, a->vd, a->vn, a->vm, false); in trans_VMUL_dp()
1946 static bool trans_VNMUL_hp(DisasContext *s, arg_VNMUL_sp *a) in trans_VNMUL_hp() argument
1948 return do_vfp_3op_hp(s, gen_VNMUL_hp, a->vd, a->vn, a->vm, false); in trans_VNMUL_hp()
1958 static bool trans_VNMUL_sp(DisasContext *s, arg_VNMUL_sp *a) in trans_VNMUL_sp() argument
1960 return do_vfp_3op_sp(s, gen_VNMUL_sp, a->vd, a->vn, a->vm, false); in trans_VNMUL_sp()
1970 static bool trans_VNMUL_dp(DisasContext *s, arg_VNMUL_dp *a) in trans_VNMUL_dp() argument
1972 return do_vfp_3op_dp(s, gen_VNMUL_dp, a->vd, a->vn, a->vm, false); in trans_VNMUL_dp()
1975 static bool trans_VADD_hp(DisasContext *s, arg_VADD_sp *a) in trans_VADD_hp() argument
1977 return do_vfp_3op_hp(s, gen_helper_vfp_addh, a->vd, a->vn, a->vm, false); in trans_VADD_hp()
1980 static bool trans_VADD_sp(DisasContext *s, arg_VADD_sp *a) in trans_VADD_sp() argument
1982 return do_vfp_3op_sp(s, gen_helper_vfp_adds, a->vd, a->vn, a->vm, false); in trans_VADD_sp()
1985 static bool trans_VADD_dp(DisasContext *s, arg_VADD_dp *a) in trans_VADD_dp() argument
1987 return do_vfp_3op_dp(s, gen_helper_vfp_addd, a->vd, a->vn, a->vm, false); in trans_VADD_dp()
1990 static bool trans_VSUB_hp(DisasContext *s, arg_VSUB_sp *a) in trans_VSUB_hp() argument
1992 return do_vfp_3op_hp(s, gen_helper_vfp_subh, a->vd, a->vn, a->vm, false); in trans_VSUB_hp()
1995 static bool trans_VSUB_sp(DisasContext *s, arg_VSUB_sp *a) in trans_VSUB_sp() argument
1997 return do_vfp_3op_sp(s, gen_helper_vfp_subs, a->vd, a->vn, a->vm, false); in trans_VSUB_sp()
2000 static bool trans_VSUB_dp(DisasContext *s, arg_VSUB_dp *a) in trans_VSUB_dp() argument
2002 return do_vfp_3op_dp(s, gen_helper_vfp_subd, a->vd, a->vn, a->vm, false); in trans_VSUB_dp()
2005 static bool trans_VDIV_hp(DisasContext *s, arg_VDIV_sp *a) in trans_VDIV_hp() argument
2007 return do_vfp_3op_hp(s, gen_helper_vfp_divh, a->vd, a->vn, a->vm, false); in trans_VDIV_hp()
2010 static bool trans_VDIV_sp(DisasContext *s, arg_VDIV_sp *a) in trans_VDIV_sp() argument
2012 return do_vfp_3op_sp(s, gen_helper_vfp_divs, a->vd, a->vn, a->vm, false); in trans_VDIV_sp()
2015 static bool trans_VDIV_dp(DisasContext *s, arg_VDIV_dp *a) in trans_VDIV_dp() argument
2017 return do_vfp_3op_dp(s, gen_helper_vfp_divd, a->vd, a->vn, a->vm, false); in trans_VDIV_dp()
2020 static bool trans_VMINNM_hp(DisasContext *s, arg_VMINNM_sp *a) in trans_VMINNM_hp() argument
2026 a->vd, a->vn, a->vm, false); in trans_VMINNM_hp()
2029 static bool trans_VMAXNM_hp(DisasContext *s, arg_VMAXNM_sp *a) in trans_VMAXNM_hp() argument
2035 a->vd, a->vn, a->vm, false); in trans_VMAXNM_hp()
2038 static bool trans_VMINNM_sp(DisasContext *s, arg_VMINNM_sp *a) in trans_VMINNM_sp() argument
2044 a->vd, a->vn, a->vm, false); in trans_VMINNM_sp()
2047 static bool trans_VMAXNM_sp(DisasContext *s, arg_VMAXNM_sp *a) in trans_VMAXNM_sp() argument
2053 a->vd, a->vn, a->vm, false); in trans_VMAXNM_sp()
2056 static bool trans_VMINNM_dp(DisasContext *s, arg_VMINNM_dp *a) in trans_VMINNM_dp() argument
2062 a->vd, a->vn, a->vm, false); in trans_VMINNM_dp()
2065 static bool trans_VMAXNM_dp(DisasContext *s, arg_VMAXNM_dp *a) in trans_VMAXNM_dp() argument
2071 a->vd, a->vn, a->vm, false); in trans_VMAXNM_dp()
2074 static bool do_vfm_hp(DisasContext *s, arg_VFMA_sp *a, bool neg_n, bool neg_d) in do_vfm_hp() argument
2114 vfp_load_reg16(vn, a->vn); in do_vfm_hp()
2115 vfp_load_reg16(vm, a->vm); in do_vfm_hp()
2120 vfp_load_reg16(vd, a->vd); in do_vfm_hp()
2127 vfp_store_reg32(vd, a->vd); in do_vfm_hp()
2131 static bool do_vfm_sp(DisasContext *s, arg_VFMA_sp *a, bool neg_n, bool neg_d) in do_vfm_sp() argument
2173 vfp_load_reg32(vn, a->vn); in do_vfm_sp()
2174 vfp_load_reg32(vm, a->vm); in do_vfm_sp()
2179 vfp_load_reg32(vd, a->vd); in do_vfm_sp()
2186 vfp_store_reg32(vd, a->vd); in do_vfm_sp()
2190 static bool do_vfm_dp(DisasContext *s, arg_VFMA_dp *a, bool neg_n, bool neg_d) in do_vfm_dp() argument
2226 ((a->vd | a->vn | a->vm) & 0x10)) { in do_vfm_dp()
2238 vfp_load_reg64(vn, a->vn); in do_vfm_dp()
2239 vfp_load_reg64(vm, a->vm); in do_vfm_dp()
2244 vfp_load_reg64(vd, a->vd); in do_vfm_dp()
2251 vfp_store_reg64(vd, a->vd); in do_vfm_dp()
2257 arg_##INSN##_##PREC *a) \
2259 return do_vfm_##PREC(s, a, NEGN, NEGD); \
2272 static bool trans_VMOV_imm_hp(DisasContext *s, arg_VMOV_imm_sp *a) in MAKE_VFM_TRANS_FNS()
2286 vfp_store_reg32(tcg_constant_i32(vfp_expand_imm(MO_16, a->imm)), a->vd); in MAKE_VFM_TRANS_FNS()
2290 static bool trans_VMOV_imm_sp(DisasContext *s, arg_VMOV_imm_sp *a) in trans_VMOV_imm_sp() argument
2297 vd = a->vd; in trans_VMOV_imm_sp()
2322 fd = tcg_constant_i32(vfp_expand_imm(MO_32, a->imm)); in trans_VMOV_imm_sp()
2339 static bool trans_VMOV_imm_dp(DisasContext *s, arg_VMOV_imm_dp *a) in trans_VMOV_imm_dp() argument
2346 vd = a->vd; in trans_VMOV_imm_dp()
2376 fd = tcg_constant_i64(vfp_expand_imm(MO_64, a->imm)); in trans_VMOV_imm_dp()
2395 arg_##INSN##_##PREC *a) \
2400 return do_vfp_2op_##PREC(s, FN, a->vd, a->vm); \
2405 arg_##INSN##_##PREC *a) \
2411 return do_vfp_2op_##PREC(s, FN, a->vd, a->vm); \
2444 static bool trans_VCMP_hp(DisasContext *s, arg_VCMP_sp *a) in DO_VFP_2OP()
2453 if (a->z && a->vm != 0) { in DO_VFP_2OP()
2464 vfp_load_reg16(vd, a->vd); in DO_VFP_2OP()
2465 if (a->z) { in DO_VFP_2OP()
2468 vfp_load_reg16(vm, a->vm); in DO_VFP_2OP()
2471 if (a->e) { in DO_VFP_2OP()
2479 static bool trans_VCMP_sp(DisasContext *s, arg_VCMP_sp *a) in trans_VCMP_sp() argument
2488 if (a->z && a->vm != 0) { in trans_VCMP_sp()
2499 vfp_load_reg32(vd, a->vd); in trans_VCMP_sp()
2500 if (a->z) { in trans_VCMP_sp()
2503 vfp_load_reg32(vm, a->vm); in trans_VCMP_sp()
2506 if (a->e) { in trans_VCMP_sp()
2514 static bool trans_VCMP_dp(DisasContext *s, arg_VCMP_dp *a) in trans_VCMP_dp() argument
2523 if (a->z && a->vm != 0) { in trans_VCMP_dp()
2528 if (!dc_isar_feature(aa32_simd_r32, s) && ((a->vd | a->vm) & 0x10)) { in trans_VCMP_dp()
2539 vfp_load_reg64(vd, a->vd); in trans_VCMP_dp()
2540 if (a->z) { in trans_VCMP_dp()
2543 vfp_load_reg64(vm, a->vm); in trans_VCMP_dp()
2546 if (a->e) { in trans_VCMP_dp()
2554 static bool trans_VCVT_f32_f16(DisasContext *s, arg_VCVT_f32_f16 *a) in trans_VCVT_f32_f16() argument
2572 tcg_gen_ld16u_i32(tmp, tcg_env, vfp_f16_offset(a->vm, a->t)); in trans_VCVT_f32_f16()
2574 vfp_store_reg32(tmp, a->vd); in trans_VCVT_f32_f16()
2578 static bool trans_VCVT_f64_f16(DisasContext *s, arg_VCVT_f64_f16 *a) in trans_VCVT_f64_f16() argument
2594 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vd & 0x10)) { in trans_VCVT_f64_f16()
2606 tcg_gen_ld16u_i32(tmp, tcg_env, vfp_f16_offset(a->vm, a->t)); in trans_VCVT_f64_f16()
2609 vfp_store_reg64(vd, a->vd); in trans_VCVT_f64_f16()
2613 static bool trans_VCVT_b16_f32(DisasContext *s, arg_VCVT_b16_f32 *a) in trans_VCVT_b16_f32() argument
2629 vfp_load_reg32(tmp, a->vm); in trans_VCVT_b16_f32()
2631 tcg_gen_st16_i32(tmp, tcg_env, vfp_f16_offset(a->vd, a->t)); in trans_VCVT_b16_f32()
2635 static bool trans_VCVT_f16_f32(DisasContext *s, arg_VCVT_f16_f32 *a) in trans_VCVT_f16_f32() argument
2653 vfp_load_reg32(tmp, a->vm); in trans_VCVT_f16_f32()
2655 tcg_gen_st16_i32(tmp, tcg_env, vfp_f16_offset(a->vd, a->t)); in trans_VCVT_f16_f32()
2659 static bool trans_VCVT_f16_f64(DisasContext *s, arg_VCVT_f16_f64 *a) in trans_VCVT_f16_f64() argument
2675 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vm & 0x10)) { in trans_VCVT_f16_f64()
2688 vfp_load_reg64(vm, a->vm); in trans_VCVT_f16_f64()
2690 tcg_gen_st16_i32(tmp, tcg_env, vfp_f16_offset(a->vd, a->t)); in trans_VCVT_f16_f64()
2694 static bool trans_VRINTR_hp(DisasContext *s, arg_VRINTR_sp *a) in trans_VRINTR_hp() argument
2708 vfp_load_reg16(tmp, a->vm); in trans_VRINTR_hp()
2711 vfp_store_reg32(tmp, a->vd); in trans_VRINTR_hp()
2715 static bool trans_VRINTR_sp(DisasContext *s, arg_VRINTR_sp *a) in trans_VRINTR_sp() argument
2729 vfp_load_reg32(tmp, a->vm); in trans_VRINTR_sp()
2732 vfp_store_reg32(tmp, a->vd); in trans_VRINTR_sp()
2736 static bool trans_VRINTR_dp(DisasContext *s, arg_VRINTR_dp *a) in trans_VRINTR_dp() argument
2750 if (!dc_isar_feature(aa32_simd_r32, s) && ((a->vd | a->vm) & 0x10)) { in trans_VRINTR_dp()
2759 vfp_load_reg64(tmp, a->vm); in trans_VRINTR_dp()
2762 vfp_store_reg64(tmp, a->vd); in trans_VRINTR_dp()
2766 static bool trans_VRINTZ_hp(DisasContext *s, arg_VRINTZ_sp *a) in trans_VRINTZ_hp() argument
2781 vfp_load_reg16(tmp, a->vm); in trans_VRINTZ_hp()
2786 vfp_store_reg32(tmp, a->vd); in trans_VRINTZ_hp()
2790 static bool trans_VRINTZ_sp(DisasContext *s, arg_VRINTZ_sp *a) in trans_VRINTZ_sp() argument
2805 vfp_load_reg32(tmp, a->vm); in trans_VRINTZ_sp()
2810 vfp_store_reg32(tmp, a->vd); in trans_VRINTZ_sp()
2814 static bool trans_VRINTZ_dp(DisasContext *s, arg_VRINTZ_dp *a) in trans_VRINTZ_dp() argument
2829 if (!dc_isar_feature(aa32_simd_r32, s) && ((a->vd | a->vm) & 0x10)) { in trans_VRINTZ_dp()
2838 vfp_load_reg64(tmp, a->vm); in trans_VRINTZ_dp()
2843 vfp_store_reg64(tmp, a->vd); in trans_VRINTZ_dp()
2847 static bool trans_VRINTX_hp(DisasContext *s, arg_VRINTX_sp *a) in trans_VRINTX_hp() argument
2861 vfp_load_reg16(tmp, a->vm); in trans_VRINTX_hp()
2864 vfp_store_reg32(tmp, a->vd); in trans_VRINTX_hp()
2868 static bool trans_VRINTX_sp(DisasContext *s, arg_VRINTX_sp *a) in trans_VRINTX_sp() argument
2882 vfp_load_reg32(tmp, a->vm); in trans_VRINTX_sp()
2885 vfp_store_reg32(tmp, a->vd); in trans_VRINTX_sp()
2889 static bool trans_VRINTX_dp(DisasContext *s, arg_VRINTX_dp *a) in trans_VRINTX_dp() argument
2903 if (!dc_isar_feature(aa32_simd_r32, s) && ((a->vd | a->vm) & 0x10)) { in trans_VRINTX_dp()
2912 vfp_load_reg64(tmp, a->vm); in trans_VRINTX_dp()
2915 vfp_store_reg64(tmp, a->vd); in trans_VRINTX_dp()
2919 static bool trans_VCVT_sp(DisasContext *s, arg_VCVT_sp *a) in trans_VCVT_sp() argument
2929 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vd & 0x10)) { in trans_VCVT_sp()
2939 vfp_load_reg32(vm, a->vm); in trans_VCVT_sp()
2941 vfp_store_reg64(vd, a->vd); in trans_VCVT_sp()
2945 static bool trans_VCVT_dp(DisasContext *s, arg_VCVT_dp *a) in trans_VCVT_dp() argument
2955 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vm & 0x10)) { in trans_VCVT_dp()
2965 vfp_load_reg64(vm, a->vm); in trans_VCVT_dp()
2967 vfp_store_reg32(vd, a->vd); in trans_VCVT_dp()
2971 static bool trans_VCVT_int_hp(DisasContext *s, arg_VCVT_int_sp *a) in trans_VCVT_int_hp() argument
2985 vfp_load_reg32(vm, a->vm); in trans_VCVT_int_hp()
2987 if (a->s) { in trans_VCVT_int_hp()
2994 vfp_store_reg32(vm, a->vd); in trans_VCVT_int_hp()
2998 static bool trans_VCVT_int_sp(DisasContext *s, arg_VCVT_int_sp *a) in trans_VCVT_int_sp() argument
3012 vfp_load_reg32(vm, a->vm); in trans_VCVT_int_sp()
3014 if (a->s) { in trans_VCVT_int_sp()
3021 vfp_store_reg32(vm, a->vd); in trans_VCVT_int_sp()
3025 static bool trans_VCVT_int_dp(DisasContext *s, arg_VCVT_int_dp *a) in trans_VCVT_int_dp() argument
3036 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vd & 0x10)) { in trans_VCVT_int_dp()
3046 vfp_load_reg32(vm, a->vm); in trans_VCVT_int_dp()
3048 if (a->s) { in trans_VCVT_int_dp()
3055 vfp_store_reg64(vd, a->vd); in trans_VCVT_int_dp()
3059 static bool trans_VJCVT(DisasContext *s, arg_VJCVT *a) in trans_VJCVT() argument
3073 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vm & 0x10)) { in trans_VJCVT()
3083 vfp_load_reg64(vm, a->vm); in trans_VJCVT()
3085 vfp_store_reg32(vd, a->vd); in trans_VJCVT()
3089 static bool trans_VCVT_fix_hp(DisasContext *s, arg_VCVT_fix_sp *a) in trans_VCVT_fix_hp() argument
3103 frac_bits = (a->opc & 1) ? (32 - a->imm) : (16 - a->imm); in trans_VCVT_fix_hp()
3106 vfp_load_reg32(vd, a->vd); in trans_VCVT_fix_hp()
3112 switch (a->opc) { in trans_VCVT_fix_hp()
3141 vfp_store_reg32(vd, a->vd); in trans_VCVT_fix_hp()
3145 static bool trans_VCVT_fix_sp(DisasContext *s, arg_VCVT_fix_sp *a) in trans_VCVT_fix_sp() argument
3159 frac_bits = (a->opc & 1) ? (32 - a->imm) : (16 - a->imm); in trans_VCVT_fix_sp()
3162 vfp_load_reg32(vd, a->vd); in trans_VCVT_fix_sp()
3168 switch (a->opc) { in trans_VCVT_fix_sp()
3197 vfp_store_reg32(vd, a->vd); in trans_VCVT_fix_sp()
3201 static bool trans_VCVT_fix_dp(DisasContext *s, arg_VCVT_fix_dp *a) in trans_VCVT_fix_dp() argument
3213 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vd & 0x10)) { in trans_VCVT_fix_dp()
3221 frac_bits = (a->opc & 1) ? (32 - a->imm) : (16 - a->imm); in trans_VCVT_fix_dp()
3224 vfp_load_reg64(vd, a->vd); in trans_VCVT_fix_dp()
3230 switch (a->opc) { in trans_VCVT_fix_dp()
3259 vfp_store_reg64(vd, a->vd); in trans_VCVT_fix_dp()
3263 static bool trans_VCVT_hp_int(DisasContext *s, arg_VCVT_sp_int *a) in trans_VCVT_hp_int() argument
3278 vfp_load_reg16(vm, a->vm); in trans_VCVT_hp_int()
3280 if (a->s) { in trans_VCVT_hp_int()
3281 if (a->rz) { in trans_VCVT_hp_int()
3287 if (a->rz) { in trans_VCVT_hp_int()
3293 vfp_store_reg32(vm, a->vd); in trans_VCVT_hp_int()
3297 static bool trans_VCVT_sp_int(DisasContext *s, arg_VCVT_sp_int *a) in trans_VCVT_sp_int() argument
3312 vfp_load_reg32(vm, a->vm); in trans_VCVT_sp_int()
3314 if (a->s) { in trans_VCVT_sp_int()
3315 if (a->rz) { in trans_VCVT_sp_int()
3321 if (a->rz) { in trans_VCVT_sp_int()
3327 vfp_store_reg32(vm, a->vd); in trans_VCVT_sp_int()
3331 static bool trans_VCVT_dp_int(DisasContext *s, arg_VCVT_dp_int *a) in trans_VCVT_dp_int() argument
3342 if (!dc_isar_feature(aa32_simd_r32, s) && (a->vm & 0x10)) { in trans_VCVT_dp_int()
3353 vfp_load_reg64(vm, a->vm); in trans_VCVT_dp_int()
3355 if (a->s) { in trans_VCVT_dp_int()
3356 if (a->rz) { in trans_VCVT_dp_int()
3362 if (a->rz) { in trans_VCVT_dp_int()
3368 vfp_store_reg32(vd, a->vd); in trans_VCVT_dp_int()
3372 static bool trans_VINS(DisasContext *s, arg_VINS *a) in trans_VINS() argument
3391 vfp_load_reg16(rm, a->vm); in trans_VINS()
3392 vfp_load_reg16(rd, a->vd); in trans_VINS()
3394 vfp_store_reg32(rd, a->vd); in trans_VINS()
3398 static bool trans_VMOVX(DisasContext *s, arg_VINS *a) in trans_VMOVX() argument
3416 vfp_load_reg32(rm, a->vm); in trans_VMOVX()
3418 vfp_store_reg32(rm, a->vd); in trans_VMOVX()