translate.c (9157dccc7e71f7c94581c38f38acbef9a21bbe9a) | translate.c (a859602c746baf4892cc8ca1ce003e92411d1716) |
---|---|
1/* 2 SPARC translation 3 4 Copyright (C) 2003 Thomas M. Ogrisegg <tom@fnord.at> 5 Copyright (C) 2003-2005 Fabrice Bellard 6 7 This library is free software; you can redistribute it and/or 8 modify it under the terms of the GNU Lesser General Public --- 31 unchanged lines hidden (view full) --- 40# define gen_helper_rdasr17(D, E) qemu_build_not_reached() 41# define gen_helper_rett(E) qemu_build_not_reached() 42# define gen_helper_power_down(E) qemu_build_not_reached() 43# define gen_helper_wrpsr(E, S) qemu_build_not_reached() 44#else 45# define gen_helper_clear_softint(E, S) qemu_build_not_reached() 46# define gen_helper_done(E) qemu_build_not_reached() 47# define gen_helper_flushw(E) qemu_build_not_reached() | 1/* 2 SPARC translation 3 4 Copyright (C) 2003 Thomas M. Ogrisegg <tom@fnord.at> 5 Copyright (C) 2003-2005 Fabrice Bellard 6 7 This library is free software; you can redistribute it and/or 8 modify it under the terms of the GNU Lesser General Public --- 31 unchanged lines hidden (view full) --- 40# define gen_helper_rdasr17(D, E) qemu_build_not_reached() 41# define gen_helper_rett(E) qemu_build_not_reached() 42# define gen_helper_power_down(E) qemu_build_not_reached() 43# define gen_helper_wrpsr(E, S) qemu_build_not_reached() 44#else 45# define gen_helper_clear_softint(E, S) qemu_build_not_reached() 46# define gen_helper_done(E) qemu_build_not_reached() 47# define gen_helper_flushw(E) qemu_build_not_reached() |
48# define gen_helper_fmul8x16a(D, S1, S2) qemu_build_not_reached() |
|
48# define gen_helper_rdccr(D, E) qemu_build_not_reached() 49# define gen_helper_rdcwp(D, E) qemu_build_not_reached() 50# define gen_helper_restored(E) qemu_build_not_reached() 51# define gen_helper_retry(E) qemu_build_not_reached() 52# define gen_helper_saved(E) qemu_build_not_reached() 53# define gen_helper_set_softint(E, S) qemu_build_not_reached() 54# define gen_helper_tick_get_count(D, E, T, C) qemu_build_not_reached() 55# define gen_helper_tick_set_count(P, S) qemu_build_not_reached() --- 11 unchanged lines hidden (view full) --- 67# define gen_helper_fcmple16 ({ qemu_build_not_reached(); NULL; }) 68# define gen_helper_fcmple32 ({ qemu_build_not_reached(); NULL; }) 69# define gen_helper_fcmpne16 ({ qemu_build_not_reached(); NULL; }) 70# define gen_helper_fcmpne32 ({ qemu_build_not_reached(); NULL; }) 71# define gen_helper_fdtox ({ qemu_build_not_reached(); NULL; }) 72# define gen_helper_fexpand ({ qemu_build_not_reached(); NULL; }) 73# define gen_helper_fmul8sux16 ({ qemu_build_not_reached(); NULL; }) 74# define gen_helper_fmul8ulx16 ({ qemu_build_not_reached(); NULL; }) | 49# define gen_helper_rdccr(D, E) qemu_build_not_reached() 50# define gen_helper_rdcwp(D, E) qemu_build_not_reached() 51# define gen_helper_restored(E) qemu_build_not_reached() 52# define gen_helper_retry(E) qemu_build_not_reached() 53# define gen_helper_saved(E) qemu_build_not_reached() 54# define gen_helper_set_softint(E, S) qemu_build_not_reached() 55# define gen_helper_tick_get_count(D, E, T, C) qemu_build_not_reached() 56# define gen_helper_tick_set_count(P, S) qemu_build_not_reached() --- 11 unchanged lines hidden (view full) --- 68# define gen_helper_fcmple16 ({ qemu_build_not_reached(); NULL; }) 69# define gen_helper_fcmple32 ({ qemu_build_not_reached(); NULL; }) 70# define gen_helper_fcmpne16 ({ qemu_build_not_reached(); NULL; }) 71# define gen_helper_fcmpne32 ({ qemu_build_not_reached(); NULL; }) 72# define gen_helper_fdtox ({ qemu_build_not_reached(); NULL; }) 73# define gen_helper_fexpand ({ qemu_build_not_reached(); NULL; }) 74# define gen_helper_fmul8sux16 ({ qemu_build_not_reached(); NULL; }) 75# define gen_helper_fmul8ulx16 ({ qemu_build_not_reached(); NULL; }) |
75# define gen_helper_fmul8x16al ({ qemu_build_not_reached(); NULL; }) 76# define gen_helper_fmul8x16au ({ qemu_build_not_reached(); NULL; }) | |
77# define gen_helper_fmul8x16 ({ qemu_build_not_reached(); NULL; }) 78# define gen_helper_fmuld8sux16 ({ qemu_build_not_reached(); NULL; }) 79# define gen_helper_fmuld8ulx16 ({ qemu_build_not_reached(); NULL; }) 80# define gen_helper_fpmerge ({ qemu_build_not_reached(); NULL; }) 81# define gen_helper_fqtox ({ qemu_build_not_reached(); NULL; }) 82# define gen_helper_fstox ({ qemu_build_not_reached(); NULL; }) 83# define gen_helper_fxtod ({ qemu_build_not_reached(); NULL; }) 84# define gen_helper_fxtoq ({ qemu_build_not_reached(); NULL; }) --- 629 unchanged lines hidden (view full) --- 714{ 715#ifdef TARGET_SPARC64 716 gen_helper_bshuffle(dst, cpu_gsr, src1, src2); 717#else 718 g_assert_not_reached(); 719#endif 720} 721 | 76# define gen_helper_fmul8x16 ({ qemu_build_not_reached(); NULL; }) 77# define gen_helper_fmuld8sux16 ({ qemu_build_not_reached(); NULL; }) 78# define gen_helper_fmuld8ulx16 ({ qemu_build_not_reached(); NULL; }) 79# define gen_helper_fpmerge ({ qemu_build_not_reached(); NULL; }) 80# define gen_helper_fqtox ({ qemu_build_not_reached(); NULL; }) 81# define gen_helper_fstox ({ qemu_build_not_reached(); NULL; }) 82# define gen_helper_fxtod ({ qemu_build_not_reached(); NULL; }) 83# define gen_helper_fxtoq ({ qemu_build_not_reached(); NULL; }) --- 629 unchanged lines hidden (view full) --- 713{ 714#ifdef TARGET_SPARC64 715 gen_helper_bshuffle(dst, cpu_gsr, src1, src2); 716#else 717 g_assert_not_reached(); 718#endif 719} 720 |
721static void gen_op_fmul8x16al(TCGv_i64 dst, TCGv_i32 src1, TCGv_i32 src2) 722{ 723 tcg_gen_ext16s_i32(src2, src2); 724 gen_helper_fmul8x16a(dst, src1, src2); 725} 726 727static void gen_op_fmul8x16au(TCGv_i64 dst, TCGv_i32 src1, TCGv_i32 src2) 728{ 729 tcg_gen_sari_i32(src2, src2, 16); 730 gen_helper_fmul8x16a(dst, src1, src2); 731} 732 |
|
722static void finishing_insn(DisasContext *dc) 723{ 724 /* 725 * From here, there is no future path through an unwinding exception. 726 * If the current insn cannot raise an exception, the computation of 727 * cpu_cond may be able to be elided. 728 */ 729 if (dc->cpu_cond_live) { --- 3848 unchanged lines hidden (view full) --- 4578 return advance_pc(dc); 4579} 4580 4581TRANS(FADDs, ALL, do_env_fff, a, gen_helper_fadds) 4582TRANS(FSUBs, ALL, do_env_fff, a, gen_helper_fsubs) 4583TRANS(FMULs, ALL, do_env_fff, a, gen_helper_fmuls) 4584TRANS(FDIVs, ALL, do_env_fff, a, gen_helper_fdivs) 4585 | 733static void finishing_insn(DisasContext *dc) 734{ 735 /* 736 * From here, there is no future path through an unwinding exception. 737 * If the current insn cannot raise an exception, the computation of 738 * cpu_cond may be able to be elided. 739 */ 740 if (dc->cpu_cond_live) { --- 3848 unchanged lines hidden (view full) --- 4589 return advance_pc(dc); 4590} 4591 4592TRANS(FADDs, ALL, do_env_fff, a, gen_helper_fadds) 4593TRANS(FSUBs, ALL, do_env_fff, a, gen_helper_fsubs) 4594TRANS(FMULs, ALL, do_env_fff, a, gen_helper_fmuls) 4595TRANS(FDIVs, ALL, do_env_fff, a, gen_helper_fdivs) 4596 |
4597static bool do_dff(DisasContext *dc, arg_r_r_r *a, 4598 void (*func)(TCGv_i64, TCGv_i32, TCGv_i32)) 4599{ 4600 TCGv_i64 dst; 4601 TCGv_i32 src1, src2; 4602 4603 if (gen_trap_ifnofpu(dc)) { 4604 return true; 4605 } 4606 4607 dst = gen_dest_fpr_D(dc, a->rd); 4608 src1 = gen_load_fpr_F(dc, a->rs1); 4609 src2 = gen_load_fpr_F(dc, a->rs2); 4610 func(dst, src1, src2); 4611 gen_store_fpr_D(dc, a->rd, dst); 4612 return advance_pc(dc); 4613} 4614 4615TRANS(FMUL8x16AU, VIS1, do_dff, a, gen_op_fmul8x16au) 4616TRANS(FMUL8x16AL, VIS1, do_dff, a, gen_op_fmul8x16al) 4617 |
|
4586static bool do_dfd(DisasContext *dc, arg_r_r_r *a, 4587 void (*func)(TCGv_i64, TCGv_i32, TCGv_i64)) 4588{ 4589 TCGv_i64 dst, src2; 4590 TCGv_i32 src1; 4591 4592 if (gen_trap_ifnofpu(dc)) { 4593 return true; --- 21 unchanged lines hidden (view full) --- 4615 dst = gen_dest_fpr_D(dc, a->rd); 4616 src1 = gen_load_fpr_D(dc, a->rs1); 4617 src2 = gen_load_fpr_D(dc, a->rs2); 4618 func(dst, src1, src2); 4619 gen_store_fpr_D(dc, a->rd, dst); 4620 return advance_pc(dc); 4621} 4622 | 4618static bool do_dfd(DisasContext *dc, arg_r_r_r *a, 4619 void (*func)(TCGv_i64, TCGv_i32, TCGv_i64)) 4620{ 4621 TCGv_i64 dst, src2; 4622 TCGv_i32 src1; 4623 4624 if (gen_trap_ifnofpu(dc)) { 4625 return true; --- 21 unchanged lines hidden (view full) --- 4647 dst = gen_dest_fpr_D(dc, a->rd); 4648 src1 = gen_load_fpr_D(dc, a->rs1); 4649 src2 = gen_load_fpr_D(dc, a->rs2); 4650 func(dst, src1, src2); 4651 gen_store_fpr_D(dc, a->rd, dst); 4652 return advance_pc(dc); 4653} 4654 |
4623TRANS(FMUL8x16AU, VIS1, do_ddd, a, gen_helper_fmul8x16au) 4624TRANS(FMUL8x16AL, VIS1, do_ddd, a, gen_helper_fmul8x16al) | |
4625TRANS(FMUL8SUx16, VIS1, do_ddd, a, gen_helper_fmul8sux16) 4626TRANS(FMUL8ULx16, VIS1, do_ddd, a, gen_helper_fmul8ulx16) 4627TRANS(FMULD8SUx16, VIS1, do_ddd, a, gen_helper_fmuld8sux16) 4628TRANS(FMULD8ULx16, VIS1, do_ddd, a, gen_helper_fmuld8ulx16) 4629TRANS(FPMERGE, VIS1, do_ddd, a, gen_helper_fpmerge) 4630 4631TRANS(FPADD16, VIS1, do_ddd, a, tcg_gen_vec_add16_i64) 4632TRANS(FPADD32, VIS1, do_ddd, a, tcg_gen_vec_add32_i64) --- 573 unchanged lines hidden --- | 4655TRANS(FMUL8SUx16, VIS1, do_ddd, a, gen_helper_fmul8sux16) 4656TRANS(FMUL8ULx16, VIS1, do_ddd, a, gen_helper_fmul8ulx16) 4657TRANS(FMULD8SUx16, VIS1, do_ddd, a, gen_helper_fmuld8sux16) 4658TRANS(FMULD8ULx16, VIS1, do_ddd, a, gen_helper_fmuld8ulx16) 4659TRANS(FPMERGE, VIS1, do_ddd, a, gen_helper_fpmerge) 4660 4661TRANS(FPADD16, VIS1, do_ddd, a, tcg_gen_vec_add16_i64) 4662TRANS(FPADD32, VIS1, do_ddd, a, tcg_gen_vec_add32_i64) --- 573 unchanged lines hidden --- |