Lines Matching refs:a

420 static bool trans_l_add(DisasContext *dc, arg_dab *a)  in trans_l_add()  argument
422 check_r0_write(dc, a->d); in trans_l_add()
423 gen_add(dc, cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_add()
427 static bool trans_l_addc(DisasContext *dc, arg_dab *a) in trans_l_addc() argument
429 check_r0_write(dc, a->d); in trans_l_addc()
430 gen_addc(dc, cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_addc()
434 static bool trans_l_sub(DisasContext *dc, arg_dab *a) in trans_l_sub() argument
436 check_r0_write(dc, a->d); in trans_l_sub()
437 gen_sub(dc, cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sub()
441 static bool trans_l_and(DisasContext *dc, arg_dab *a) in trans_l_and() argument
443 check_r0_write(dc, a->d); in trans_l_and()
444 tcg_gen_and_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_and()
448 static bool trans_l_or(DisasContext *dc, arg_dab *a) in trans_l_or() argument
450 check_r0_write(dc, a->d); in trans_l_or()
451 tcg_gen_or_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_or()
455 static bool trans_l_xor(DisasContext *dc, arg_dab *a) in trans_l_xor() argument
457 check_r0_write(dc, a->d); in trans_l_xor()
458 tcg_gen_xor_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_xor()
462 static bool trans_l_sll(DisasContext *dc, arg_dab *a) in trans_l_sll() argument
464 check_r0_write(dc, a->d); in trans_l_sll()
465 tcg_gen_shl_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sll()
469 static bool trans_l_srl(DisasContext *dc, arg_dab *a) in trans_l_srl() argument
471 check_r0_write(dc, a->d); in trans_l_srl()
472 tcg_gen_shr_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_srl()
476 static bool trans_l_sra(DisasContext *dc, arg_dab *a) in trans_l_sra() argument
478 check_r0_write(dc, a->d); in trans_l_sra()
479 tcg_gen_sar_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sra()
483 static bool trans_l_ror(DisasContext *dc, arg_dab *a) in trans_l_ror() argument
485 check_r0_write(dc, a->d); in trans_l_ror()
486 tcg_gen_rotr_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_ror()
490 static bool trans_l_exths(DisasContext *dc, arg_da *a) in trans_l_exths() argument
492 check_r0_write(dc, a->d); in trans_l_exths()
493 tcg_gen_ext16s_tl(cpu_R(dc, a->d), cpu_R(dc, a->a)); in trans_l_exths()
497 static bool trans_l_extbs(DisasContext *dc, arg_da *a) in trans_l_extbs() argument
499 check_r0_write(dc, a->d); in trans_l_extbs()
500 tcg_gen_ext8s_tl(cpu_R(dc, a->d), cpu_R(dc, a->a)); in trans_l_extbs()
504 static bool trans_l_exthz(DisasContext *dc, arg_da *a) in trans_l_exthz() argument
506 check_r0_write(dc, a->d); in trans_l_exthz()
507 tcg_gen_ext16u_tl(cpu_R(dc, a->d), cpu_R(dc, a->a)); in trans_l_exthz()
511 static bool trans_l_extbz(DisasContext *dc, arg_da *a) in trans_l_extbz() argument
513 check_r0_write(dc, a->d); in trans_l_extbz()
514 tcg_gen_ext8u_tl(cpu_R(dc, a->d), cpu_R(dc, a->a)); in trans_l_extbz()
518 static bool trans_l_cmov(DisasContext *dc, arg_dab *a) in trans_l_cmov() argument
520 check_r0_write(dc, a->d); in trans_l_cmov()
521 tcg_gen_movcond_tl(TCG_COND_NE, cpu_R(dc, a->d), cpu_sr_f, dc->zero, in trans_l_cmov()
522 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_cmov()
526 static bool trans_l_ff1(DisasContext *dc, arg_da *a) in trans_l_ff1() argument
528 check_r0_write(dc, a->d); in trans_l_ff1()
529 tcg_gen_ctzi_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), -1); in trans_l_ff1()
530 tcg_gen_addi_tl(cpu_R(dc, a->d), cpu_R(dc, a->d), 1); in trans_l_ff1()
534 static bool trans_l_fl1(DisasContext *dc, arg_da *a) in trans_l_fl1() argument
536 check_r0_write(dc, a->d); in trans_l_fl1()
537 tcg_gen_clzi_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), TARGET_LONG_BITS); in trans_l_fl1()
538 tcg_gen_subfi_tl(cpu_R(dc, a->d), TARGET_LONG_BITS, cpu_R(dc, a->d)); in trans_l_fl1()
542 static bool trans_l_mul(DisasContext *dc, arg_dab *a) in trans_l_mul() argument
544 check_r0_write(dc, a->d); in trans_l_mul()
545 gen_mul(dc, cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_mul()
549 static bool trans_l_mulu(DisasContext *dc, arg_dab *a) in trans_l_mulu() argument
551 check_r0_write(dc, a->d); in trans_l_mulu()
552 gen_mulu(dc, cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_mulu()
556 static bool trans_l_div(DisasContext *dc, arg_dab *a) in trans_l_div() argument
558 check_r0_write(dc, a->d); in trans_l_div()
559 gen_div(dc, cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_div()
563 static bool trans_l_divu(DisasContext *dc, arg_dab *a) in trans_l_divu() argument
565 check_r0_write(dc, a->d); in trans_l_divu()
566 gen_divu(dc, cpu_R(dc, a->d), cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_divu()
570 static bool trans_l_muld(DisasContext *dc, arg_ab *a) in trans_l_muld() argument
572 gen_muld(dc, cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_muld()
576 static bool trans_l_muldu(DisasContext *dc, arg_ab *a) in trans_l_muldu() argument
578 gen_muldu(dc, cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_muldu()
582 static bool trans_l_j(DisasContext *dc, arg_l_j *a) in trans_l_j() argument
584 target_ulong tmp_pc = dc->base.pc_next + a->n * 4; in trans_l_j()
592 static bool trans_l_jal(DisasContext *dc, arg_l_jal *a) in trans_l_jal() argument
594 target_ulong tmp_pc = dc->base.pc_next + a->n * 4; in trans_l_jal()
607 static void do_bf(DisasContext *dc, arg_l_bf *a, TCGCond cond) in do_bf() argument
609 target_ulong tmp_pc = dc->base.pc_next + a->n * 4; in do_bf()
617 static bool trans_l_bf(DisasContext *dc, arg_l_bf *a) in trans_l_bf() argument
619 do_bf(dc, a, TCG_COND_NE); in trans_l_bf()
623 static bool trans_l_bnf(DisasContext *dc, arg_l_bf *a) in trans_l_bnf() argument
625 do_bf(dc, a, TCG_COND_EQ); in trans_l_bnf()
629 static bool trans_l_jr(DisasContext *dc, arg_l_jr *a) in trans_l_jr() argument
631 tcg_gen_mov_tl(jmp_pc, cpu_R(dc, a->b)); in trans_l_jr()
636 static bool trans_l_jalr(DisasContext *dc, arg_l_jalr *a) in trans_l_jalr() argument
638 tcg_gen_mov_tl(jmp_pc, cpu_R(dc, a->b)); in trans_l_jalr()
644 static bool trans_l_lwa(DisasContext *dc, arg_load *a) in trans_l_lwa() argument
648 check_r0_write(dc, a->d); in trans_l_lwa()
650 tcg_gen_addi_tl(ea, cpu_R(dc, a->a), a->i); in trans_l_lwa()
651 tcg_gen_qemu_ld_tl(cpu_R(dc, a->d), ea, dc->mem_idx, MO_TEUL); in trans_l_lwa()
653 tcg_gen_mov_tl(cpu_lock_value, cpu_R(dc, a->d)); in trans_l_lwa()
657 static void do_load(DisasContext *dc, arg_load *a, MemOp mop) in do_load() argument
661 check_r0_write(dc, a->d); in do_load()
663 tcg_gen_addi_tl(ea, cpu_R(dc, a->a), a->i); in do_load()
664 tcg_gen_qemu_ld_tl(cpu_R(dc, a->d), ea, dc->mem_idx, mop); in do_load()
667 static bool trans_l_lwz(DisasContext *dc, arg_load *a) in trans_l_lwz() argument
669 do_load(dc, a, MO_TEUL); in trans_l_lwz()
673 static bool trans_l_lws(DisasContext *dc, arg_load *a) in trans_l_lws() argument
675 do_load(dc, a, MO_TESL); in trans_l_lws()
679 static bool trans_l_lbz(DisasContext *dc, arg_load *a) in trans_l_lbz() argument
681 do_load(dc, a, MO_UB); in trans_l_lbz()
685 static bool trans_l_lbs(DisasContext *dc, arg_load *a) in trans_l_lbs() argument
687 do_load(dc, a, MO_SB); in trans_l_lbs()
691 static bool trans_l_lhz(DisasContext *dc, arg_load *a) in trans_l_lhz() argument
693 do_load(dc, a, MO_TEUW); in trans_l_lhz()
697 static bool trans_l_lhs(DisasContext *dc, arg_load *a) in trans_l_lhs() argument
699 do_load(dc, a, MO_TESW); in trans_l_lhs()
703 static bool trans_l_swa(DisasContext *dc, arg_store *a) in trans_l_swa() argument
709 tcg_gen_addi_tl(ea, cpu_R(dc, a->a), a->i); in trans_l_swa()
717 cpu_R(dc, a->b), dc->mem_idx, MO_TEUL); in trans_l_swa()
730 static void do_store(DisasContext *dc, arg_store *a, MemOp mop) in do_store() argument
733 tcg_gen_addi_tl(t0, cpu_R(dc, a->a), a->i); in do_store()
734 tcg_gen_qemu_st_tl(cpu_R(dc, a->b), t0, dc->mem_idx, mop); in do_store()
737 static bool trans_l_sw(DisasContext *dc, arg_store *a) in trans_l_sw() argument
739 do_store(dc, a, MO_TEUL); in trans_l_sw()
743 static bool trans_l_sb(DisasContext *dc, arg_store *a) in trans_l_sb() argument
745 do_store(dc, a, MO_UB); in trans_l_sb()
749 static bool trans_l_sh(DisasContext *dc, arg_store *a) in trans_l_sh() argument
751 do_store(dc, a, MO_TEUW); in trans_l_sh()
755 static bool trans_l_nop(DisasContext *dc, arg_l_nop *a) in trans_l_nop() argument
760 static bool trans_l_adrp(DisasContext *dc, arg_l_adrp *a) in trans_l_adrp() argument
765 check_r0_write(dc, a->d); in trans_l_adrp()
767 tcg_gen_movi_i32(cpu_R(dc, a->d), in trans_l_adrp()
769 ((target_long)a->i << TARGET_PAGE_BITS)); in trans_l_adrp()
773 static bool trans_l_addi(DisasContext *dc, arg_rri *a) in trans_l_addi() argument
775 check_r0_write(dc, a->d); in trans_l_addi()
776 gen_add(dc, cpu_R(dc, a->d), cpu_R(dc, a->a), tcg_constant_tl(a->i)); in trans_l_addi()
780 static bool trans_l_addic(DisasContext *dc, arg_rri *a) in trans_l_addic() argument
782 check_r0_write(dc, a->d); in trans_l_addic()
783 gen_addc(dc, cpu_R(dc, a->d), cpu_R(dc, a->a), tcg_constant_tl(a->i)); in trans_l_addic()
787 static bool trans_l_muli(DisasContext *dc, arg_rri *a) in trans_l_muli() argument
789 check_r0_write(dc, a->d); in trans_l_muli()
790 gen_mul(dc, cpu_R(dc, a->d), cpu_R(dc, a->a), tcg_constant_tl(a->i)); in trans_l_muli()
794 static bool trans_l_maci(DisasContext *dc, arg_l_maci *a) in trans_l_maci() argument
796 gen_mac(dc, cpu_R(dc, a->a), tcg_constant_tl(a->i)); in trans_l_maci()
800 static bool trans_l_andi(DisasContext *dc, arg_rrk *a) in trans_l_andi() argument
802 check_r0_write(dc, a->d); in trans_l_andi()
803 tcg_gen_andi_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), a->k); in trans_l_andi()
807 static bool trans_l_ori(DisasContext *dc, arg_rrk *a) in trans_l_ori() argument
809 check_r0_write(dc, a->d); in trans_l_ori()
810 tcg_gen_ori_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), a->k); in trans_l_ori()
814 static bool trans_l_xori(DisasContext *dc, arg_rri *a) in trans_l_xori() argument
816 check_r0_write(dc, a->d); in trans_l_xori()
817 tcg_gen_xori_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), a->i); in trans_l_xori()
821 static bool trans_l_mfspr(DisasContext *dc, arg_l_mfspr *a) in trans_l_mfspr() argument
825 check_r0_write(dc, a->d); in trans_l_mfspr()
837 tcg_gen_ori_tl(spr, cpu_R(dc, a->a), a->k); in trans_l_mfspr()
838 gen_helper_mfspr(cpu_R(dc, a->d), tcg_env, cpu_R(dc, a->d), spr); in trans_l_mfspr()
842 static bool trans_l_mtspr(DisasContext *dc, arg_l_mtspr *a) in trans_l_mtspr() argument
862 tcg_gen_ori_tl(spr, cpu_R(dc, a->a), a->k); in trans_l_mtspr()
863 gen_helper_mtspr(tcg_env, spr, cpu_R(dc, a->b)); in trans_l_mtspr()
867 static bool trans_l_mac(DisasContext *dc, arg_ab *a) in trans_l_mac() argument
869 gen_mac(dc, cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_mac()
873 static bool trans_l_msb(DisasContext *dc, arg_ab *a) in trans_l_msb() argument
875 gen_msb(dc, cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_msb()
879 static bool trans_l_macu(DisasContext *dc, arg_ab *a) in trans_l_macu() argument
881 gen_macu(dc, cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_macu()
885 static bool trans_l_msbu(DisasContext *dc, arg_ab *a) in trans_l_msbu() argument
887 gen_msbu(dc, cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_msbu()
891 static bool trans_l_slli(DisasContext *dc, arg_dal *a) in trans_l_slli() argument
893 check_r0_write(dc, a->d); in trans_l_slli()
894 tcg_gen_shli_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), in trans_l_slli()
895 a->l & (TARGET_LONG_BITS - 1)); in trans_l_slli()
899 static bool trans_l_srli(DisasContext *dc, arg_dal *a) in trans_l_srli() argument
901 check_r0_write(dc, a->d); in trans_l_srli()
902 tcg_gen_shri_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), in trans_l_srli()
903 a->l & (TARGET_LONG_BITS - 1)); in trans_l_srli()
907 static bool trans_l_srai(DisasContext *dc, arg_dal *a) in trans_l_srai() argument
909 check_r0_write(dc, a->d); in trans_l_srai()
910 tcg_gen_sari_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), in trans_l_srai()
911 a->l & (TARGET_LONG_BITS - 1)); in trans_l_srai()
915 static bool trans_l_rori(DisasContext *dc, arg_dal *a) in trans_l_rori() argument
917 check_r0_write(dc, a->d); in trans_l_rori()
918 tcg_gen_rotri_tl(cpu_R(dc, a->d), cpu_R(dc, a->a), in trans_l_rori()
919 a->l & (TARGET_LONG_BITS - 1)); in trans_l_rori()
923 static bool trans_l_movhi(DisasContext *dc, arg_l_movhi *a) in trans_l_movhi() argument
925 check_r0_write(dc, a->d); in trans_l_movhi()
926 tcg_gen_movi_tl(cpu_R(dc, a->d), a->k << 16); in trans_l_movhi()
930 static bool trans_l_macrc(DisasContext *dc, arg_l_macrc *a) in trans_l_macrc() argument
932 check_r0_write(dc, a->d); in trans_l_macrc()
933 tcg_gen_trunc_i64_tl(cpu_R(dc, a->d), cpu_mac); in trans_l_macrc()
938 static bool trans_l_sfeq(DisasContext *dc, arg_ab *a) in trans_l_sfeq() argument
941 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sfeq()
945 static bool trans_l_sfne(DisasContext *dc, arg_ab *a) in trans_l_sfne() argument
948 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sfne()
952 static bool trans_l_sfgtu(DisasContext *dc, arg_ab *a) in trans_l_sfgtu() argument
955 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sfgtu()
959 static bool trans_l_sfgeu(DisasContext *dc, arg_ab *a) in trans_l_sfgeu() argument
962 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sfgeu()
966 static bool trans_l_sfltu(DisasContext *dc, arg_ab *a) in trans_l_sfltu() argument
969 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sfltu()
973 static bool trans_l_sfleu(DisasContext *dc, arg_ab *a) in trans_l_sfleu() argument
976 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sfleu()
980 static bool trans_l_sfgts(DisasContext *dc, arg_ab *a) in trans_l_sfgts() argument
983 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sfgts()
987 static bool trans_l_sfges(DisasContext *dc, arg_ab *a) in trans_l_sfges() argument
990 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sfges()
994 static bool trans_l_sflts(DisasContext *dc, arg_ab *a) in trans_l_sflts() argument
997 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sflts()
1001 static bool trans_l_sfles(DisasContext *dc, arg_ab *a) in trans_l_sfles() argument
1004 cpu_sr_f, cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_l_sfles()
1008 static bool trans_l_sfeqi(DisasContext *dc, arg_ai *a) in trans_l_sfeqi() argument
1010 tcg_gen_setcondi_tl(TCG_COND_EQ, cpu_sr_f, cpu_R(dc, a->a), a->i); in trans_l_sfeqi()
1014 static bool trans_l_sfnei(DisasContext *dc, arg_ai *a) in trans_l_sfnei() argument
1016 tcg_gen_setcondi_tl(TCG_COND_NE, cpu_sr_f, cpu_R(dc, a->a), a->i); in trans_l_sfnei()
1020 static bool trans_l_sfgtui(DisasContext *dc, arg_ai *a) in trans_l_sfgtui() argument
1022 tcg_gen_setcondi_tl(TCG_COND_GTU, cpu_sr_f, cpu_R(dc, a->a), a->i); in trans_l_sfgtui()
1026 static bool trans_l_sfgeui(DisasContext *dc, arg_ai *a) in trans_l_sfgeui() argument
1028 tcg_gen_setcondi_tl(TCG_COND_GEU, cpu_sr_f, cpu_R(dc, a->a), a->i); in trans_l_sfgeui()
1032 static bool trans_l_sfltui(DisasContext *dc, arg_ai *a) in trans_l_sfltui() argument
1034 tcg_gen_setcondi_tl(TCG_COND_LTU, cpu_sr_f, cpu_R(dc, a->a), a->i); in trans_l_sfltui()
1038 static bool trans_l_sfleui(DisasContext *dc, arg_ai *a) in trans_l_sfleui() argument
1040 tcg_gen_setcondi_tl(TCG_COND_LEU, cpu_sr_f, cpu_R(dc, a->a), a->i); in trans_l_sfleui()
1044 static bool trans_l_sfgtsi(DisasContext *dc, arg_ai *a) in trans_l_sfgtsi() argument
1046 tcg_gen_setcondi_tl(TCG_COND_GT, cpu_sr_f, cpu_R(dc, a->a), a->i); in trans_l_sfgtsi()
1050 static bool trans_l_sfgesi(DisasContext *dc, arg_ai *a) in trans_l_sfgesi() argument
1052 tcg_gen_setcondi_tl(TCG_COND_GE, cpu_sr_f, cpu_R(dc, a->a), a->i); in trans_l_sfgesi()
1056 static bool trans_l_sfltsi(DisasContext *dc, arg_ai *a) in trans_l_sfltsi() argument
1058 tcg_gen_setcondi_tl(TCG_COND_LT, cpu_sr_f, cpu_R(dc, a->a), a->i); in trans_l_sfltsi()
1062 static bool trans_l_sflesi(DisasContext *dc, arg_ai *a) in trans_l_sflesi() argument
1064 tcg_gen_setcondi_tl(TCG_COND_LE, cpu_sr_f, cpu_R(dc, a->a), a->i); in trans_l_sflesi()
1068 static bool trans_l_sys(DisasContext *dc, arg_l_sys *a) in trans_l_sys() argument
1076 static bool trans_l_trap(DisasContext *dc, arg_l_trap *a) in trans_l_trap() argument
1084 static bool trans_l_msync(DisasContext *dc, arg_l_msync *a) in trans_l_msync() argument
1090 static bool trans_l_psync(DisasContext *dc, arg_l_psync *a) in trans_l_psync() argument
1095 static bool trans_l_csync(DisasContext *dc, arg_l_csync *a) in trans_l_csync() argument
1100 static bool trans_l_rfe(DisasContext *dc, arg_l_rfe *a) in trans_l_rfe() argument
1111 static bool do_fp2(DisasContext *dc, arg_da *a, in do_fp2() argument
1117 check_r0_write(dc, a->d); in do_fp2()
1118 fn(cpu_R(dc, a->d), tcg_env, cpu_R(dc, a->a)); in do_fp2()
1123 static bool do_fp3(DisasContext *dc, arg_dab *a, in do_fp3() argument
1129 check_r0_write(dc, a->d); in do_fp3()
1130 fn(cpu_R(dc, a->d), tcg_env, cpu_R(dc, a->a), cpu_R(dc, a->b)); in do_fp3()
1135 static bool do_fpcmp(DisasContext *dc, arg_ab *a, in do_fpcmp() argument
1143 fn(cpu_sr_f, tcg_env, cpu_R(dc, a->b), cpu_R(dc, a->a)); in do_fpcmp()
1145 fn(cpu_sr_f, tcg_env, cpu_R(dc, a->a), cpu_R(dc, a->b)); in do_fpcmp()
1154 static bool trans_lf_add_s(DisasContext *dc, arg_dab *a) in trans_lf_add_s() argument
1156 return do_fp3(dc, a, gen_helper_float_add_s); in trans_lf_add_s()
1159 static bool trans_lf_sub_s(DisasContext *dc, arg_dab *a) in trans_lf_sub_s() argument
1161 return do_fp3(dc, a, gen_helper_float_sub_s); in trans_lf_sub_s()
1164 static bool trans_lf_mul_s(DisasContext *dc, arg_dab *a) in trans_lf_mul_s() argument
1166 return do_fp3(dc, a, gen_helper_float_mul_s); in trans_lf_mul_s()
1169 static bool trans_lf_div_s(DisasContext *dc, arg_dab *a) in trans_lf_div_s() argument
1171 return do_fp3(dc, a, gen_helper_float_div_s); in trans_lf_div_s()
1174 static bool trans_lf_rem_s(DisasContext *dc, arg_dab *a) in trans_lf_rem_s() argument
1176 return do_fp3(dc, a, gen_helper_float_rem_s); in trans_lf_rem_s()
1180 static bool trans_lf_itof_s(DisasContext *dc, arg_da *a) in trans_lf_itof_s() argument
1182 return do_fp2(dc, a, gen_helper_itofs); in trans_lf_itof_s()
1185 static bool trans_lf_ftoi_s(DisasContext *dc, arg_da *a) in trans_lf_ftoi_s() argument
1187 return do_fp2(dc, a, gen_helper_ftois); in trans_lf_ftoi_s()
1190 static bool trans_lf_madd_s(DisasContext *dc, arg_dab *a) in trans_lf_madd_s() argument
1195 check_r0_write(dc, a->d); in trans_lf_madd_s()
1196 gen_helper_float_madd_s(cpu_R(dc, a->d), tcg_env, cpu_R(dc, a->d), in trans_lf_madd_s()
1197 cpu_R(dc, a->a), cpu_R(dc, a->b)); in trans_lf_madd_s()
1202 static bool trans_lf_sfeq_s(DisasContext *dc, arg_ab *a) in trans_lf_sfeq_s() argument
1204 return do_fpcmp(dc, a, gen_helper_float_eq_s, false, false); in trans_lf_sfeq_s()
1207 static bool trans_lf_sfne_s(DisasContext *dc, arg_ab *a) in trans_lf_sfne_s() argument
1209 return do_fpcmp(dc, a, gen_helper_float_eq_s, true, false); in trans_lf_sfne_s()
1212 static bool trans_lf_sfgt_s(DisasContext *dc, arg_ab *a) in trans_lf_sfgt_s() argument
1214 return do_fpcmp(dc, a, gen_helper_float_lt_s, false, true); in trans_lf_sfgt_s()
1217 static bool trans_lf_sfge_s(DisasContext *dc, arg_ab *a) in trans_lf_sfge_s() argument
1219 return do_fpcmp(dc, a, gen_helper_float_le_s, false, true); in trans_lf_sfge_s()
1222 static bool trans_lf_sflt_s(DisasContext *dc, arg_ab *a) in trans_lf_sflt_s() argument
1224 return do_fpcmp(dc, a, gen_helper_float_lt_s, false, false); in trans_lf_sflt_s()
1227 static bool trans_lf_sfle_s(DisasContext *dc, arg_ab *a) in trans_lf_sfle_s() argument
1229 return do_fpcmp(dc, a, gen_helper_float_le_s, false, false); in trans_lf_sfle_s()
1232 static bool trans_lf_sfueq_s(DisasContext *dc, arg_ab *a) in trans_lf_sfueq_s() argument
1237 return do_fpcmp(dc, a, gen_helper_float_ueq_s, false, false); in trans_lf_sfueq_s()
1240 static bool trans_lf_sfult_s(DisasContext *dc, arg_ab *a) in trans_lf_sfult_s() argument
1245 return do_fpcmp(dc, a, gen_helper_float_ult_s, false, false); in trans_lf_sfult_s()
1248 static bool trans_lf_sfugt_s(DisasContext *dc, arg_ab *a) in trans_lf_sfugt_s() argument
1253 return do_fpcmp(dc, a, gen_helper_float_ult_s, false, true); in trans_lf_sfugt_s()
1256 static bool trans_lf_sfule_s(DisasContext *dc, arg_ab *a) in trans_lf_sfule_s() argument
1261 return do_fpcmp(dc, a, gen_helper_float_ule_s, false, false); in trans_lf_sfule_s()
1264 static bool trans_lf_sfuge_s(DisasContext *dc, arg_ab *a) in trans_lf_sfuge_s() argument
1269 return do_fpcmp(dc, a, gen_helper_float_ule_s, false, true); in trans_lf_sfuge_s()
1272 static bool trans_lf_sfun_s(DisasContext *dc, arg_ab *a) in trans_lf_sfun_s() argument
1277 return do_fpcmp(dc, a, gen_helper_float_un_s, false, false); in trans_lf_sfun_s()
1295 static bool do_dp3(DisasContext *dc, arg_dab_pair *a, in do_dp3() argument
1301 !check_pair(dc, a->a, a->ap) || in do_dp3()
1302 !check_pair(dc, a->b, a->bp) || in do_dp3()
1303 !check_pair(dc, a->d, a->dp)) { in do_dp3()
1306 check_r0_write(dc, a->d); in do_dp3()
1310 load_pair(dc, t0, a->a, a->ap); in do_dp3()
1311 load_pair(dc, t1, a->b, a->bp); in do_dp3()
1313 save_pair(dc, t0, a->d, a->dp); in do_dp3()
1319 static bool do_dp2(DisasContext *dc, arg_da_pair *a, in do_dp2() argument
1325 !check_pair(dc, a->a, a->ap) || in do_dp2()
1326 !check_pair(dc, a->d, a->dp)) { in do_dp2()
1329 check_r0_write(dc, a->d); in do_dp2()
1332 load_pair(dc, t0, a->a, a->ap); in do_dp2()
1334 save_pair(dc, t0, a->d, a->dp); in do_dp2()
1340 static bool do_dpcmp(DisasContext *dc, arg_ab_pair *a, in do_dpcmp() argument
1347 !check_pair(dc, a->a, a->ap) || in do_dpcmp()
1348 !check_pair(dc, a->b, a->bp)) { in do_dpcmp()
1354 load_pair(dc, t0, a->a, a->ap); in do_dpcmp()
1355 load_pair(dc, t1, a->b, a->bp); in do_dpcmp()
1369 static bool trans_lf_add_d(DisasContext *dc, arg_dab_pair *a) in trans_lf_add_d() argument
1371 return do_dp3(dc, a, gen_helper_float_add_d); in trans_lf_add_d()
1374 static bool trans_lf_sub_d(DisasContext *dc, arg_dab_pair *a) in trans_lf_sub_d() argument
1376 return do_dp3(dc, a, gen_helper_float_sub_d); in trans_lf_sub_d()
1379 static bool trans_lf_mul_d(DisasContext *dc, arg_dab_pair *a) in trans_lf_mul_d() argument
1381 return do_dp3(dc, a, gen_helper_float_mul_d); in trans_lf_mul_d()
1384 static bool trans_lf_div_d(DisasContext *dc, arg_dab_pair *a) in trans_lf_div_d() argument
1386 return do_dp3(dc, a, gen_helper_float_div_d); in trans_lf_div_d()
1389 static bool trans_lf_rem_d(DisasContext *dc, arg_dab_pair *a) in trans_lf_rem_d() argument
1391 return do_dp3(dc, a, gen_helper_float_rem_d); in trans_lf_rem_d()
1394 static bool trans_lf_itof_d(DisasContext *dc, arg_da_pair *a) in trans_lf_itof_d() argument
1396 return do_dp2(dc, a, gen_helper_itofd); in trans_lf_itof_d()
1399 static bool trans_lf_ftoi_d(DisasContext *dc, arg_da_pair *a) in trans_lf_ftoi_d() argument
1401 return do_dp2(dc, a, gen_helper_ftoid); in trans_lf_ftoi_d()
1404 static bool trans_lf_stod_d(DisasContext *dc, arg_lf_stod_d *a) in trans_lf_stod_d() argument
1409 !check_pair(dc, a->d, a->dp)) { in trans_lf_stod_d()
1412 check_r0_write(dc, a->d); in trans_lf_stod_d()
1415 gen_helper_stod(t0, tcg_env, cpu_R(dc, a->a)); in trans_lf_stod_d()
1416 save_pair(dc, t0, a->d, a->dp); in trans_lf_stod_d()
1422 static bool trans_lf_dtos_d(DisasContext *dc, arg_lf_dtos_d *a) in trans_lf_dtos_d() argument
1427 !check_pair(dc, a->a, a->ap)) { in trans_lf_dtos_d()
1430 check_r0_write(dc, a->d); in trans_lf_dtos_d()
1433 load_pair(dc, t0, a->a, a->ap); in trans_lf_dtos_d()
1434 gen_helper_dtos(cpu_R(dc, a->d), tcg_env, t0); in trans_lf_dtos_d()
1440 static bool trans_lf_madd_d(DisasContext *dc, arg_dab_pair *a) in trans_lf_madd_d() argument
1445 !check_pair(dc, a->a, a->ap) || in trans_lf_madd_d()
1446 !check_pair(dc, a->b, a->bp) || in trans_lf_madd_d()
1447 !check_pair(dc, a->d, a->dp)) { in trans_lf_madd_d()
1450 check_r0_write(dc, a->d); in trans_lf_madd_d()
1455 load_pair(dc, t0, a->d, a->dp); in trans_lf_madd_d()
1456 load_pair(dc, t1, a->a, a->ap); in trans_lf_madd_d()
1457 load_pair(dc, t2, a->b, a->bp); in trans_lf_madd_d()
1459 save_pair(dc, t0, a->d, a->dp); in trans_lf_madd_d()
1465 static bool trans_lf_sfeq_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfeq_d() argument
1467 return do_dpcmp(dc, a, gen_helper_float_eq_d, false, false); in trans_lf_sfeq_d()
1470 static bool trans_lf_sfne_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfne_d() argument
1472 return do_dpcmp(dc, a, gen_helper_float_eq_d, true, false); in trans_lf_sfne_d()
1475 static bool trans_lf_sfgt_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfgt_d() argument
1477 return do_dpcmp(dc, a, gen_helper_float_lt_d, false, true); in trans_lf_sfgt_d()
1480 static bool trans_lf_sfge_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfge_d() argument
1482 return do_dpcmp(dc, a, gen_helper_float_le_d, false, true); in trans_lf_sfge_d()
1485 static bool trans_lf_sflt_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sflt_d() argument
1487 return do_dpcmp(dc, a, gen_helper_float_lt_d, false, false); in trans_lf_sflt_d()
1490 static bool trans_lf_sfle_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfle_d() argument
1492 return do_dpcmp(dc, a, gen_helper_float_le_d, false, false); in trans_lf_sfle_d()
1495 static bool trans_lf_sfueq_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfueq_d() argument
1497 return do_dpcmp(dc, a, gen_helper_float_ueq_d, false, false); in trans_lf_sfueq_d()
1500 static bool trans_lf_sfule_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfule_d() argument
1502 return do_dpcmp(dc, a, gen_helper_float_ule_d, false, false); in trans_lf_sfule_d()
1505 static bool trans_lf_sfuge_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfuge_d() argument
1507 return do_dpcmp(dc, a, gen_helper_float_ule_d, false, true); in trans_lf_sfuge_d()
1510 static bool trans_lf_sfult_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfult_d() argument
1512 return do_dpcmp(dc, a, gen_helper_float_ult_d, false, false); in trans_lf_sfult_d()
1515 static bool trans_lf_sfugt_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfugt_d() argument
1517 return do_dpcmp(dc, a, gen_helper_float_ult_d, false, true); in trans_lf_sfugt_d()
1520 static bool trans_lf_sfun_d(DisasContext *dc, arg_ab_pair *a) in trans_lf_sfun_d() argument
1522 return do_dpcmp(dc, a, gen_helper_float_un_d, false, false); in trans_lf_sfun_d()