• Home
  • Raw
  • Download

Lines Matching refs:insn

401 ppS390Instr(s390_insn *insn, Bool mode64)  in ppS390Instr()  argument
403 vex_printf("%s", s390_insn_as_string(insn)); in ppS390Instr()
427 getRegUsage_S390Instr(HRegUsage *u, s390_insn *insn, Bool mode64) in getRegUsage_S390Instr() argument
429 s390_insn_get_reg_usage(u, insn); in getRegUsage_S390Instr()
435 mapRegs_S390Instr(HRegRemap *m, s390_insn *insn, Bool mode64) in mapRegs_S390Instr() argument
437 s390_insn_map_regs(m, insn); in mapRegs_S390Instr()
445 isMove_S390Instr(s390_insn *insn, HReg *src, HReg *dst) in isMove_S390Instr() argument
447 return s390_insn_is_reg_reg_move(insn, src, dst); in isMove_S390Instr()
530 s390_insn_get_reg_usage(HRegUsage *u, const s390_insn *insn) in s390_insn_get_reg_usage() argument
534 switch (insn->tag) { in s390_insn_get_reg_usage()
536 addHRegUse(u, HRmWrite, insn->variant.load.dst); in s390_insn_get_reg_usage()
537 s390_amode_get_reg_usage(u, insn->variant.load.src); in s390_insn_get_reg_usage()
541 addHRegUse(u, HRmWrite, insn->variant.load_immediate.dst); in s390_insn_get_reg_usage()
545 addHRegUse(u, HRmRead, insn->variant.store.src); in s390_insn_get_reg_usage()
546 s390_amode_get_reg_usage(u, insn->variant.store.dst); in s390_insn_get_reg_usage()
550 addHRegUse(u, HRmRead, insn->variant.move.src); in s390_insn_get_reg_usage()
551 addHRegUse(u, HRmWrite, insn->variant.move.dst); in s390_insn_get_reg_usage()
555 s390_opnd_RMI_get_reg_usage(u, insn->variant.cond_move.src); in s390_insn_get_reg_usage()
556 addHRegUse(u, HRmWrite, insn->variant.cond_move.dst); in s390_insn_get_reg_usage()
560 addHRegUse(u, HRmWrite, insn->variant.alu.dst); in s390_insn_get_reg_usage()
561 addHRegUse(u, HRmRead, insn->variant.alu.dst); /* op1 */ in s390_insn_get_reg_usage()
562 s390_opnd_RMI_get_reg_usage(u, insn->variant.alu.op2); in s390_insn_get_reg_usage()
566 addHRegUse(u, HRmRead, insn->variant.mul.dst_lo); /* op1 */ in s390_insn_get_reg_usage()
567 addHRegUse(u, HRmWrite, insn->variant.mul.dst_lo); in s390_insn_get_reg_usage()
568 addHRegUse(u, HRmWrite, insn->variant.mul.dst_hi); in s390_insn_get_reg_usage()
569 s390_opnd_RMI_get_reg_usage(u, insn->variant.mul.op2); in s390_insn_get_reg_usage()
573 addHRegUse(u, HRmRead, insn->variant.div.op1_lo); in s390_insn_get_reg_usage()
574 addHRegUse(u, HRmRead, insn->variant.div.op1_hi); in s390_insn_get_reg_usage()
575 addHRegUse(u, HRmWrite, insn->variant.div.op1_lo); in s390_insn_get_reg_usage()
576 addHRegUse(u, HRmWrite, insn->variant.div.op1_hi); in s390_insn_get_reg_usage()
577 s390_opnd_RMI_get_reg_usage(u, insn->variant.div.op2); in s390_insn_get_reg_usage()
581 addHRegUse(u, HRmRead, insn->variant.divs.op1); in s390_insn_get_reg_usage()
582 addHRegUse(u, HRmWrite, insn->variant.divs.op1); /* quotient */ in s390_insn_get_reg_usage()
583 addHRegUse(u, HRmWrite, insn->variant.divs.rem); /* remainder */ in s390_insn_get_reg_usage()
584 s390_opnd_RMI_get_reg_usage(u, insn->variant.divs.op2); in s390_insn_get_reg_usage()
588 addHRegUse(u, HRmWrite, insn->variant.clz.num_bits); in s390_insn_get_reg_usage()
589 addHRegUse(u, HRmWrite, insn->variant.clz.clobber); in s390_insn_get_reg_usage()
590 s390_opnd_RMI_get_reg_usage(u, insn->variant.clz.src); in s390_insn_get_reg_usage()
594 addHRegUse(u, HRmWrite, insn->variant.unop.dst); in s390_insn_get_reg_usage()
595 s390_opnd_RMI_get_reg_usage(u, insn->variant.unop.src); in s390_insn_get_reg_usage()
599 s390_opnd_RMI_get_reg_usage(u, insn->variant.test.src); in s390_insn_get_reg_usage()
603 addHRegUse(u, HRmWrite, insn->variant.cc2bool.dst); in s390_insn_get_reg_usage()
607 addHRegUse(u, HRmRead, insn->variant.cas.op1); in s390_insn_get_reg_usage()
608 s390_amode_get_reg_usage(u, insn->variant.cas.op2); in s390_insn_get_reg_usage()
609 addHRegUse(u, HRmRead, insn->variant.cas.op3); in s390_insn_get_reg_usage()
610 addHRegUse(u, HRmWrite, insn->variant.cas.old_mem); in s390_insn_get_reg_usage()
614 addHRegUse(u, HRmRead, insn->variant.cdas.op1_high); in s390_insn_get_reg_usage()
615 addHRegUse(u, HRmRead, insn->variant.cdas.op1_low); in s390_insn_get_reg_usage()
616 s390_amode_get_reg_usage(u, insn->variant.cas.op2); in s390_insn_get_reg_usage()
617 addHRegUse(u, HRmRead, insn->variant.cdas.op3_high); in s390_insn_get_reg_usage()
618 addHRegUse(u, HRmRead, insn->variant.cdas.op3_low); in s390_insn_get_reg_usage()
619 addHRegUse(u, HRmWrite, insn->variant.cdas.old_mem_high); in s390_insn_get_reg_usage()
620 addHRegUse(u, HRmWrite, insn->variant.cdas.old_mem_low); in s390_insn_get_reg_usage()
621 addHRegUse(u, HRmWrite, insn->variant.cdas.scratch); in s390_insn_get_reg_usage()
625 addHRegUse(u, HRmRead, insn->variant.compare.src1); in s390_insn_get_reg_usage()
626 s390_opnd_RMI_get_reg_usage(u, insn->variant.compare.src2); in s390_insn_get_reg_usage()
638 if (insn->variant.helper_call.dst != INVALID_HREG) in s390_insn_get_reg_usage()
639 addHRegUse(u, HRmWrite, insn->variant.helper_call.dst); in s390_insn_get_reg_usage()
648 for (i = 0; i < insn->variant.helper_call.num_args; ++i) { in s390_insn_get_reg_usage()
660 addHRegUse(u, HRmWrite, insn->variant.bfp_triop.dst); in s390_insn_get_reg_usage()
661 addHRegUse(u, HRmRead, insn->variant.bfp_triop.dst); /* first */ in s390_insn_get_reg_usage()
662 addHRegUse(u, HRmRead, insn->variant.bfp_triop.op2); /* second */ in s390_insn_get_reg_usage()
663 addHRegUse(u, HRmRead, insn->variant.bfp_triop.op3); /* third */ in s390_insn_get_reg_usage()
667 addHRegUse(u, HRmWrite, insn->variant.bfp_binop.dst); in s390_insn_get_reg_usage()
668 addHRegUse(u, HRmRead, insn->variant.bfp_binop.dst); /* left */ in s390_insn_get_reg_usage()
669 addHRegUse(u, HRmRead, insn->variant.bfp_binop.op2); /* right */ in s390_insn_get_reg_usage()
673 addHRegUse(u, HRmWrite, insn->variant.bfp_unop.dst); in s390_insn_get_reg_usage()
674 addHRegUse(u, HRmRead, insn->variant.bfp_unop.op); /* operand */ in s390_insn_get_reg_usage()
678 addHRegUse(u, HRmWrite, insn->variant.bfp_compare.dst); in s390_insn_get_reg_usage()
679 addHRegUse(u, HRmRead, insn->variant.bfp_compare.op1); /* left */ in s390_insn_get_reg_usage()
680 addHRegUse(u, HRmRead, insn->variant.bfp_compare.op2); /* right */ in s390_insn_get_reg_usage()
684 addHRegUse(u, HRmWrite, insn->variant.bfp128_binop.dst_hi); in s390_insn_get_reg_usage()
685 addHRegUse(u, HRmWrite, insn->variant.bfp128_binop.dst_lo); in s390_insn_get_reg_usage()
686 addHRegUse(u, HRmRead, insn->variant.bfp128_binop.dst_hi); /* left */ in s390_insn_get_reg_usage()
687 addHRegUse(u, HRmRead, insn->variant.bfp128_binop.dst_lo); /* left */ in s390_insn_get_reg_usage()
688 addHRegUse(u, HRmRead, insn->variant.bfp128_binop.op2_hi); /* right */ in s390_insn_get_reg_usage()
689 addHRegUse(u, HRmRead, insn->variant.bfp128_binop.op2_lo); /* right */ in s390_insn_get_reg_usage()
693 addHRegUse(u, HRmWrite, insn->variant.bfp128_compare.dst); in s390_insn_get_reg_usage()
694 addHRegUse(u, HRmRead, insn->variant.bfp128_compare.op1_hi); /* left */ in s390_insn_get_reg_usage()
695 addHRegUse(u, HRmRead, insn->variant.bfp128_compare.op1_lo); /* left */ in s390_insn_get_reg_usage()
696 addHRegUse(u, HRmRead, insn->variant.bfp128_compare.op2_hi); /* right */ in s390_insn_get_reg_usage()
697 addHRegUse(u, HRmRead, insn->variant.bfp128_compare.op2_lo); /* right */ in s390_insn_get_reg_usage()
701 addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_hi); in s390_insn_get_reg_usage()
702 addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_lo); in s390_insn_get_reg_usage()
703 addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_hi); in s390_insn_get_reg_usage()
704 addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_lo); in s390_insn_get_reg_usage()
708 addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_hi); in s390_insn_get_reg_usage()
709 addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_lo); in s390_insn_get_reg_usage()
710 addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_hi); in s390_insn_get_reg_usage()
714 addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_hi); in s390_insn_get_reg_usage()
715 addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_hi); in s390_insn_get_reg_usage()
716 addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_lo); in s390_insn_get_reg_usage()
725 s390_amode_get_reg_usage(u, insn->variant.evcheck.counter); in s390_insn_get_reg_usage()
726 s390_amode_get_reg_usage(u, insn->variant.evcheck.fail_addr); in s390_insn_get_reg_usage()
734 s390_amode_get_reg_usage(u, insn->variant.xdirect.guest_IA); in s390_insn_get_reg_usage()
738 addHRegUse(u, HRmRead, insn->variant.xindir.dst); in s390_insn_get_reg_usage()
739 s390_amode_get_reg_usage(u, insn->variant.xindir.guest_IA); in s390_insn_get_reg_usage()
743 addHRegUse(u, HRmRead, insn->variant.xassisted.dst); in s390_insn_get_reg_usage()
744 s390_amode_get_reg_usage(u, insn->variant.xassisted.guest_IA); in s390_insn_get_reg_usage()
776 s390_insn_map_regs(HRegRemap *m, s390_insn *insn) in s390_insn_map_regs() argument
778 switch (insn->tag) { in s390_insn_map_regs()
780 insn->variant.load.dst = lookupHRegRemap(m, insn->variant.load.dst); in s390_insn_map_regs()
781 s390_amode_map_regs(m, insn->variant.load.src); in s390_insn_map_regs()
785 s390_amode_map_regs(m, insn->variant.store.dst); in s390_insn_map_regs()
786 insn->variant.store.src = lookupHRegRemap(m, insn->variant.store.src); in s390_insn_map_regs()
790 insn->variant.move.dst = lookupHRegRemap(m, insn->variant.move.dst); in s390_insn_map_regs()
791 insn->variant.move.src = lookupHRegRemap(m, insn->variant.move.src); in s390_insn_map_regs()
795 insn->variant.cond_move.dst = lookupHRegRemap(m, insn->variant.cond_move.dst); in s390_insn_map_regs()
796 s390_opnd_RMI_map_regs(m, &insn->variant.cond_move.src); in s390_insn_map_regs()
800 insn->variant.load_immediate.dst = in s390_insn_map_regs()
801 lookupHRegRemap(m, insn->variant.load_immediate.dst); in s390_insn_map_regs()
805 insn->variant.alu.dst = lookupHRegRemap(m, insn->variant.alu.dst); in s390_insn_map_regs()
806 s390_opnd_RMI_map_regs(m, &insn->variant.alu.op2); in s390_insn_map_regs()
810 insn->variant.mul.dst_hi = lookupHRegRemap(m, insn->variant.mul.dst_hi); in s390_insn_map_regs()
811 insn->variant.mul.dst_lo = lookupHRegRemap(m, insn->variant.mul.dst_lo); in s390_insn_map_regs()
812 s390_opnd_RMI_map_regs(m, &insn->variant.mul.op2); in s390_insn_map_regs()
816 insn->variant.div.op1_hi = lookupHRegRemap(m, insn->variant.div.op1_hi); in s390_insn_map_regs()
817 insn->variant.div.op1_lo = lookupHRegRemap(m, insn->variant.div.op1_lo); in s390_insn_map_regs()
818 s390_opnd_RMI_map_regs(m, &insn->variant.div.op2); in s390_insn_map_regs()
822 insn->variant.divs.op1 = lookupHRegRemap(m, insn->variant.divs.op1); in s390_insn_map_regs()
823 insn->variant.divs.rem = lookupHRegRemap(m, insn->variant.divs.rem); in s390_insn_map_regs()
824 s390_opnd_RMI_map_regs(m, &insn->variant.divs.op2); in s390_insn_map_regs()
828 insn->variant.clz.num_bits = lookupHRegRemap(m, insn->variant.clz.num_bits); in s390_insn_map_regs()
829 insn->variant.clz.clobber = lookupHRegRemap(m, insn->variant.clz.clobber); in s390_insn_map_regs()
830 s390_opnd_RMI_map_regs(m, &insn->variant.clz.src); in s390_insn_map_regs()
834 insn->variant.unop.dst = lookupHRegRemap(m, insn->variant.unop.dst); in s390_insn_map_regs()
835 s390_opnd_RMI_map_regs(m, &insn->variant.unop.src); in s390_insn_map_regs()
839 s390_opnd_RMI_map_regs(m, &insn->variant.test.src); in s390_insn_map_regs()
843 insn->variant.cc2bool.dst = lookupHRegRemap(m, insn->variant.cc2bool.dst); in s390_insn_map_regs()
847 insn->variant.cas.op1 = lookupHRegRemap(m, insn->variant.cas.op1); in s390_insn_map_regs()
848 s390_amode_map_regs(m, insn->variant.cas.op2); in s390_insn_map_regs()
849 insn->variant.cas.op3 = lookupHRegRemap(m, insn->variant.cas.op3); in s390_insn_map_regs()
850 insn->variant.cas.old_mem = lookupHRegRemap(m, insn->variant.cas.old_mem); in s390_insn_map_regs()
854 insn->variant.cdas.op1_high = lookupHRegRemap(m, insn->variant.cdas.op1_high); in s390_insn_map_regs()
855 insn->variant.cdas.op1_low = lookupHRegRemap(m, insn->variant.cdas.op1_low); in s390_insn_map_regs()
856 s390_amode_map_regs(m, insn->variant.cdas.op2); in s390_insn_map_regs()
857 insn->variant.cdas.op3_high = lookupHRegRemap(m, insn->variant.cdas.op3_high); in s390_insn_map_regs()
858 insn->variant.cdas.op3_low = lookupHRegRemap(m, insn->variant.cdas.op3_low); in s390_insn_map_regs()
859 insn->variant.cdas.old_mem_high = lookupHRegRemap(m, insn->variant.cdas.old_mem_high); in s390_insn_map_regs()
860 insn->variant.cdas.old_mem_low = lookupHRegRemap(m, insn->variant.cdas.old_mem_low); in s390_insn_map_regs()
861 insn->variant.cdas.scratch = lookupHRegRemap(m, insn->variant.cdas.scratch); in s390_insn_map_regs()
865 insn->variant.compare.src1 = lookupHRegRemap(m, insn->variant.compare.src1); in s390_insn_map_regs()
866 s390_opnd_RMI_map_regs(m, &insn->variant.compare.src2); in s390_insn_map_regs()
876 if (insn->variant.helper_call.dst != INVALID_HREG) in s390_insn_map_regs()
877 insn->variant.helper_call.dst = lookupHRegRemap(m, insn->variant.helper_call.dst); in s390_insn_map_regs()
881 insn->variant.bfp_triop.dst = lookupHRegRemap(m, insn->variant.bfp_triop.dst); in s390_insn_map_regs()
882 insn->variant.bfp_triop.op2 = lookupHRegRemap(m, insn->variant.bfp_triop.op2); in s390_insn_map_regs()
883 insn->variant.bfp_triop.op3 = lookupHRegRemap(m, insn->variant.bfp_triop.op3); in s390_insn_map_regs()
887 insn->variant.bfp_binop.dst = lookupHRegRemap(m, insn->variant.bfp_binop.dst); in s390_insn_map_regs()
888 insn->variant.bfp_binop.op2 = lookupHRegRemap(m, insn->variant.bfp_binop.op2); in s390_insn_map_regs()
892 insn->variant.bfp_unop.dst = lookupHRegRemap(m, insn->variant.bfp_unop.dst); in s390_insn_map_regs()
893 insn->variant.bfp_unop.op = lookupHRegRemap(m, insn->variant.bfp_unop.op); in s390_insn_map_regs()
897 insn->variant.bfp_compare.dst = lookupHRegRemap(m, insn->variant.bfp_compare.dst); in s390_insn_map_regs()
898 insn->variant.bfp_compare.op1 = lookupHRegRemap(m, insn->variant.bfp_compare.op1); in s390_insn_map_regs()
899 insn->variant.bfp_compare.op2 = lookupHRegRemap(m, insn->variant.bfp_compare.op2); in s390_insn_map_regs()
903 insn->variant.bfp128_binop.dst_hi = in s390_insn_map_regs()
904 lookupHRegRemap(m, insn->variant.bfp128_binop.dst_hi); in s390_insn_map_regs()
905 insn->variant.bfp128_binop.dst_lo = in s390_insn_map_regs()
906 lookupHRegRemap(m, insn->variant.bfp128_binop.dst_lo); in s390_insn_map_regs()
907 insn->variant.bfp128_binop.op2_hi = in s390_insn_map_regs()
908 lookupHRegRemap(m, insn->variant.bfp128_binop.op2_hi); in s390_insn_map_regs()
909 insn->variant.bfp128_binop.op2_lo = in s390_insn_map_regs()
910 lookupHRegRemap(m, insn->variant.bfp128_binop.op2_lo); in s390_insn_map_regs()
914 insn->variant.bfp128_compare.dst = in s390_insn_map_regs()
915 lookupHRegRemap(m, insn->variant.bfp128_compare.dst); in s390_insn_map_regs()
916 insn->variant.bfp128_compare.op1_hi = in s390_insn_map_regs()
917 lookupHRegRemap(m, insn->variant.bfp128_compare.op1_hi); in s390_insn_map_regs()
918 insn->variant.bfp128_compare.op1_lo = in s390_insn_map_regs()
919 lookupHRegRemap(m, insn->variant.bfp128_compare.op1_lo); in s390_insn_map_regs()
920 insn->variant.bfp128_compare.op2_hi = in s390_insn_map_regs()
921 lookupHRegRemap(m, insn->variant.bfp128_compare.op2_hi); in s390_insn_map_regs()
922 insn->variant.bfp128_compare.op2_lo = in s390_insn_map_regs()
923 lookupHRegRemap(m, insn->variant.bfp128_compare.op2_lo); in s390_insn_map_regs()
927 insn->variant.bfp128_unop.dst_hi = in s390_insn_map_regs()
928 lookupHRegRemap(m, insn->variant.bfp128_unop.dst_hi); in s390_insn_map_regs()
929 insn->variant.bfp128_unop.dst_lo = in s390_insn_map_regs()
930 lookupHRegRemap(m, insn->variant.bfp128_unop.dst_lo); in s390_insn_map_regs()
931 insn->variant.bfp128_unop.op_hi = in s390_insn_map_regs()
932 lookupHRegRemap(m, insn->variant.bfp128_unop.op_hi); in s390_insn_map_regs()
933 insn->variant.bfp128_unop.op_lo = in s390_insn_map_regs()
934 lookupHRegRemap(m, insn->variant.bfp128_unop.op_lo); in s390_insn_map_regs()
938 insn->variant.bfp128_unop.dst_hi = in s390_insn_map_regs()
939 lookupHRegRemap(m, insn->variant.bfp128_unop.dst_hi); in s390_insn_map_regs()
940 insn->variant.bfp128_unop.dst_lo = in s390_insn_map_regs()
941 lookupHRegRemap(m, insn->variant.bfp128_unop.dst_lo); in s390_insn_map_regs()
942 insn->variant.bfp128_unop.op_hi = in s390_insn_map_regs()
943 lookupHRegRemap(m, insn->variant.bfp128_unop.op_hi); in s390_insn_map_regs()
947 insn->variant.bfp128_unop.dst_hi = in s390_insn_map_regs()
948 lookupHRegRemap(m, insn->variant.bfp128_unop.dst_hi); in s390_insn_map_regs()
949 insn->variant.bfp128_unop.op_hi = in s390_insn_map_regs()
950 lookupHRegRemap(m, insn->variant.bfp128_unop.op_hi); in s390_insn_map_regs()
951 insn->variant.bfp128_unop.op_lo = in s390_insn_map_regs()
952 lookupHRegRemap(m, insn->variant.bfp128_unop.op_lo); in s390_insn_map_regs()
961 s390_amode_map_regs(m, insn->variant.evcheck.counter); in s390_insn_map_regs()
962 s390_amode_map_regs(m, insn->variant.evcheck.fail_addr); in s390_insn_map_regs()
970 s390_amode_map_regs(m, insn->variant.xdirect.guest_IA); in s390_insn_map_regs()
974 s390_amode_map_regs(m, insn->variant.xindir.guest_IA); in s390_insn_map_regs()
975 insn->variant.xindir.dst = in s390_insn_map_regs()
976 lookupHRegRemap(m, insn->variant.xindir.dst); in s390_insn_map_regs()
980 s390_amode_map_regs(m, insn->variant.xassisted.guest_IA); in s390_insn_map_regs()
981 insn->variant.xassisted.dst = in s390_insn_map_regs()
982 lookupHRegRemap(m, insn->variant.xassisted.dst); in s390_insn_map_regs()
995 s390_insn_is_reg_reg_move(const s390_insn *insn, HReg *src, HReg *dst) in s390_insn_is_reg_reg_move() argument
997 if (insn->tag == S390_INSN_MOVE && in s390_insn_is_reg_reg_move()
998 hregClass(insn->variant.move.src) == hregClass(insn->variant.move.dst)) { in s390_insn_is_reg_reg_move()
999 *src = insn->variant.move.src; in s390_insn_is_reg_reg_move()
1000 *dst = insn->variant.move.dst; in s390_insn_is_reg_reg_move()
4142 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_load() local
4144 insn->tag = S390_INSN_LOAD; in s390_insn_load()
4145 insn->size = size; in s390_insn_load()
4146 insn->variant.load.src = src; in s390_insn_load()
4147 insn->variant.load.dst = dst; in s390_insn_load()
4151 return insn; in s390_insn_load()
4158 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_store() local
4160 insn->tag = S390_INSN_STORE; in s390_insn_store()
4161 insn->size = size; in s390_insn_store()
4162 insn->variant.store.src = src; in s390_insn_store()
4163 insn->variant.store.dst = dst; in s390_insn_store()
4167 return insn; in s390_insn_store()
4174 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_move() local
4176 insn->tag = S390_INSN_MOVE; in s390_insn_move()
4177 insn->size = size; in s390_insn_move()
4178 insn->variant.move.src = src; in s390_insn_move()
4179 insn->variant.move.dst = dst; in s390_insn_move()
4183 return insn; in s390_insn_move()
4190 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_cond_move() local
4192 insn->tag = S390_INSN_COND_MOVE; in s390_insn_cond_move()
4193 insn->size = size; in s390_insn_cond_move()
4194 insn->variant.cond_move.cond = cond; in s390_insn_cond_move()
4195 insn->variant.cond_move.src = src; in s390_insn_cond_move()
4196 insn->variant.cond_move.dst = dst; in s390_insn_cond_move()
4200 return insn; in s390_insn_cond_move()
4207 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_load_immediate() local
4209 insn->tag = S390_INSN_LOAD_IMMEDIATE; in s390_insn_load_immediate()
4210 insn->size = size; in s390_insn_load_immediate()
4211 insn->variant.load_immediate.dst = dst; in s390_insn_load_immediate()
4212 insn->variant.load_immediate.value = value; in s390_insn_load_immediate()
4214 return insn; in s390_insn_load_immediate()
4221 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_alu() local
4223 insn->tag = S390_INSN_ALU; in s390_insn_alu()
4224 insn->size = size; in s390_insn_alu()
4225 insn->variant.alu.tag = tag; in s390_insn_alu()
4226 insn->variant.alu.dst = dst; in s390_insn_alu()
4227 insn->variant.alu.op2 = op2; in s390_insn_alu()
4229 return insn; in s390_insn_alu()
4237 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_mul() local
4242 insn->tag = S390_INSN_MUL; in s390_insn_mul()
4243 insn->size = size; in s390_insn_mul()
4244 insn->variant.mul.dst_hi = dst_hi; in s390_insn_mul()
4245 insn->variant.mul.dst_lo = dst_lo; in s390_insn_mul()
4246 insn->variant.mul.op2 = op2; in s390_insn_mul()
4247 insn->variant.mul.signed_multiply = signed_multiply; in s390_insn_mul()
4249 return insn; in s390_insn_mul()
4257 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_div() local
4263 insn->tag = S390_INSN_DIV; in s390_insn_div()
4264 insn->size = size; in s390_insn_div()
4265 insn->variant.div.op1_hi = op1_hi; in s390_insn_div()
4266 insn->variant.div.op1_lo = op1_lo; in s390_insn_div()
4267 insn->variant.div.op2 = op2; in s390_insn_div()
4268 insn->variant.div.signed_divide = signed_divide; in s390_insn_div()
4270 return insn; in s390_insn_div()
4277 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_divs() local
4283 insn->tag = S390_INSN_DIVS; in s390_insn_divs()
4284 insn->size = size; in s390_insn_divs()
4285 insn->variant.divs.rem = rem; /* remainder */ in s390_insn_divs()
4286 insn->variant.divs.op1 = op1; /* also quotient */ in s390_insn_divs()
4287 insn->variant.divs.op2 = op2; in s390_insn_divs()
4289 return insn; in s390_insn_divs()
4296 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_clz() local
4302 insn->tag = S390_INSN_CLZ; in s390_insn_clz()
4303 insn->size = size; in s390_insn_clz()
4304 insn->variant.clz.num_bits = num_bits; in s390_insn_clz()
4305 insn->variant.clz.clobber = clobber; in s390_insn_clz()
4306 insn->variant.clz.src = src; in s390_insn_clz()
4308 return insn; in s390_insn_clz()
4315 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_unop() local
4317 insn->tag = S390_INSN_UNOP; in s390_insn_unop()
4318 insn->size = size; in s390_insn_unop()
4319 insn->variant.unop.tag = tag; in s390_insn_unop()
4320 insn->variant.unop.dst = dst; in s390_insn_unop()
4321 insn->variant.unop.src = opnd; in s390_insn_unop()
4323 return insn; in s390_insn_unop()
4330 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_test() local
4334 insn->tag = S390_INSN_TEST; in s390_insn_test()
4335 insn->size = size; in s390_insn_test()
4336 insn->variant.test.src = src; in s390_insn_test()
4338 return insn; in s390_insn_test()
4345 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_cc2bool() local
4347 insn->tag = S390_INSN_CC2BOOL; in s390_insn_cc2bool()
4348 insn->size = 0; /* does not matter */ in s390_insn_cc2bool()
4349 insn->variant.cc2bool.cond = cond; in s390_insn_cc2bool()
4350 insn->variant.cc2bool.dst = dst; in s390_insn_cc2bool()
4352 return insn; in s390_insn_cc2bool()
4359 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_cas() local
4364 insn->tag = S390_INSN_CAS; in s390_insn_cas()
4365 insn->size = size; in s390_insn_cas()
4366 insn->variant.cas.op1 = op1; in s390_insn_cas()
4367 insn->variant.cas.op2 = op2; in s390_insn_cas()
4368 insn->variant.cas.op3 = op3; in s390_insn_cas()
4369 insn->variant.cas.old_mem = old_mem; in s390_insn_cas()
4371 return insn; in s390_insn_cas()
4380 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_cdas() local
4386 insn->tag = S390_INSN_CDAS; in s390_insn_cdas()
4387 insn->size = size; in s390_insn_cdas()
4388 insn->variant.cdas.op1_high = op1_high; in s390_insn_cdas()
4389 insn->variant.cdas.op1_low = op1_low; in s390_insn_cdas()
4390 insn->variant.cdas.op2 = op2; in s390_insn_cdas()
4391 insn->variant.cdas.op3_high = op3_high; in s390_insn_cdas()
4392 insn->variant.cdas.op3_low = op3_low; in s390_insn_cdas()
4393 insn->variant.cdas.old_mem_high = old_mem_high; in s390_insn_cdas()
4394 insn->variant.cdas.old_mem_low = old_mem_low; in s390_insn_cdas()
4395 insn->variant.cdas.scratch = scratch; in s390_insn_cdas()
4397 return insn; in s390_insn_cdas()
4405 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_compare() local
4409 insn->tag = S390_INSN_COMPARE; in s390_insn_compare()
4410 insn->size = size; in s390_insn_compare()
4411 insn->variant.compare.src1 = src1; in s390_insn_compare()
4412 insn->variant.compare.src2 = src2; in s390_insn_compare()
4413 insn->variant.compare.signed_comparison = signed_comparison; in s390_insn_compare()
4415 return insn; in s390_insn_compare()
4423 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_helper_call() local
4425 insn->tag = S390_INSN_HELPER_CALL; in s390_insn_helper_call()
4426 insn->size = 0; /* does not matter */ in s390_insn_helper_call()
4427 insn->variant.helper_call.cond = cond; in s390_insn_helper_call()
4428 insn->variant.helper_call.target = target; in s390_insn_helper_call()
4429 insn->variant.helper_call.num_args = num_args; in s390_insn_helper_call()
4430 insn->variant.helper_call.name = name; in s390_insn_helper_call()
4431 insn->variant.helper_call.dst = dst; in s390_insn_helper_call()
4433 return insn; in s390_insn_helper_call()
4441 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_bfp_triop() local
4443 insn->tag = S390_INSN_BFP_TRIOP; in s390_insn_bfp_triop()
4444 insn->size = size; in s390_insn_bfp_triop()
4445 insn->variant.bfp_triop.tag = tag; in s390_insn_bfp_triop()
4446 insn->variant.bfp_triop.dst = dst; in s390_insn_bfp_triop()
4447 insn->variant.bfp_triop.op2 = op2; in s390_insn_bfp_triop()
4448 insn->variant.bfp_triop.op3 = op3; in s390_insn_bfp_triop()
4449 insn->variant.bfp_triop.rounding_mode = rounding_mode; in s390_insn_bfp_triop()
4451 return insn; in s390_insn_bfp_triop()
4459 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_bfp_binop() local
4461 insn->tag = S390_INSN_BFP_BINOP; in s390_insn_bfp_binop()
4462 insn->size = size; in s390_insn_bfp_binop()
4463 insn->variant.bfp_binop.tag = tag; in s390_insn_bfp_binop()
4464 insn->variant.bfp_binop.dst = dst; in s390_insn_bfp_binop()
4465 insn->variant.bfp_binop.op2 = op2; in s390_insn_bfp_binop()
4466 insn->variant.bfp_binop.rounding_mode = rounding_mode; in s390_insn_bfp_binop()
4468 return insn; in s390_insn_bfp_binop()
4476 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_bfp_unop() local
4478 insn->tag = S390_INSN_BFP_UNOP; in s390_insn_bfp_unop()
4479 insn->size = size; in s390_insn_bfp_unop()
4480 insn->variant.bfp_unop.tag = tag; in s390_insn_bfp_unop()
4481 insn->variant.bfp_unop.dst = dst; in s390_insn_bfp_unop()
4482 insn->variant.bfp_unop.op = op; in s390_insn_bfp_unop()
4483 insn->variant.bfp_unop.rounding_mode = rounding_mode; in s390_insn_bfp_unop()
4485 return insn; in s390_insn_bfp_unop()
4492 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_bfp_compare() local
4496 insn->tag = S390_INSN_BFP_COMPARE; in s390_insn_bfp_compare()
4497 insn->size = size; in s390_insn_bfp_compare()
4498 insn->variant.bfp_compare.dst = dst; in s390_insn_bfp_compare()
4499 insn->variant.bfp_compare.op1 = op1; in s390_insn_bfp_compare()
4500 insn->variant.bfp_compare.op2 = op2; in s390_insn_bfp_compare()
4502 return insn; in s390_insn_bfp_compare()
4511 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_bfp128_binop() local
4513 insn->tag = S390_INSN_BFP128_BINOP; in s390_insn_bfp128_binop()
4514 insn->size = size; in s390_insn_bfp128_binop()
4515 insn->variant.bfp128_binop.tag = tag; in s390_insn_bfp128_binop()
4516 insn->variant.bfp128_binop.dst_hi = dst_hi; in s390_insn_bfp128_binop()
4517 insn->variant.bfp128_binop.dst_lo = dst_lo; in s390_insn_bfp128_binop()
4518 insn->variant.bfp128_binop.op2_hi = op2_hi; in s390_insn_bfp128_binop()
4519 insn->variant.bfp128_binop.op2_lo = op2_lo; in s390_insn_bfp128_binop()
4520 insn->variant.bfp128_binop.rounding_mode = rounding_mode; in s390_insn_bfp128_binop()
4522 return insn; in s390_insn_bfp128_binop()
4531 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_bfp128_unop() local
4533 insn->tag = S390_INSN_BFP128_UNOP; in s390_insn_bfp128_unop()
4534 insn->size = size; in s390_insn_bfp128_unop()
4535 insn->variant.bfp128_unop.tag = tag; in s390_insn_bfp128_unop()
4536 insn->variant.bfp128_unop.dst_hi = dst_hi; in s390_insn_bfp128_unop()
4537 insn->variant.bfp128_unop.dst_lo = dst_lo; in s390_insn_bfp128_unop()
4538 insn->variant.bfp128_unop.op_hi = op_hi; in s390_insn_bfp128_unop()
4539 insn->variant.bfp128_unop.op_lo = op_lo; in s390_insn_bfp128_unop()
4540 insn->variant.bfp128_unop.rounding_mode = rounding_mode; in s390_insn_bfp128_unop()
4542 return insn; in s390_insn_bfp128_unop()
4550 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_bfp128_compare() local
4552 insn->tag = S390_INSN_BFP128_COMPARE; in s390_insn_bfp128_compare()
4553 insn->size = size; in s390_insn_bfp128_compare()
4554 insn->variant.bfp128_compare.dst = dst; in s390_insn_bfp128_compare()
4555 insn->variant.bfp128_compare.op1_hi = op1_hi; in s390_insn_bfp128_compare()
4556 insn->variant.bfp128_compare.op1_lo = op1_lo; in s390_insn_bfp128_compare()
4557 insn->variant.bfp128_compare.op2_hi = op2_hi; in s390_insn_bfp128_compare()
4558 insn->variant.bfp128_compare.op2_lo = op2_lo; in s390_insn_bfp128_compare()
4560 return insn; in s390_insn_bfp128_compare()
4568 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_bfp128_convert_to() local
4570 insn->tag = S390_INSN_BFP128_CONVERT_TO; in s390_insn_bfp128_convert_to()
4571 insn->size = size; in s390_insn_bfp128_convert_to()
4572 insn->variant.bfp128_unop.tag = tag; in s390_insn_bfp128_convert_to()
4573 insn->variant.bfp128_unop.dst_hi = dst_hi; in s390_insn_bfp128_convert_to()
4574 insn->variant.bfp128_unop.dst_lo = dst_lo; in s390_insn_bfp128_convert_to()
4575 insn->variant.bfp128_unop.op_hi = op; in s390_insn_bfp128_convert_to()
4576 insn->variant.bfp128_unop.op_lo = INVALID_HREG; /* unused */ in s390_insn_bfp128_convert_to()
4577 insn->variant.bfp128_unop.rounding_mode = S390_ROUND_NEAREST_EVEN; /* unused */ in s390_insn_bfp128_convert_to()
4579 return insn; in s390_insn_bfp128_convert_to()
4588 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_bfp128_convert_from() local
4590 insn->tag = S390_INSN_BFP128_CONVERT_FROM; in s390_insn_bfp128_convert_from()
4591 insn->size = size; in s390_insn_bfp128_convert_from()
4592 insn->variant.bfp128_unop.tag = tag; in s390_insn_bfp128_convert_from()
4593 insn->variant.bfp128_unop.dst_hi = dst; in s390_insn_bfp128_convert_from()
4594 insn->variant.bfp128_unop.dst_lo = INVALID_HREG; /* unused */ in s390_insn_bfp128_convert_from()
4595 insn->variant.bfp128_unop.op_hi = op_hi; in s390_insn_bfp128_convert_from()
4596 insn->variant.bfp128_unop.op_lo = op_lo; in s390_insn_bfp128_convert_from()
4597 insn->variant.bfp128_unop.rounding_mode = rounding_mode; in s390_insn_bfp128_convert_from()
4599 return insn; in s390_insn_bfp128_convert_from()
4606 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_mfence() local
4608 insn->tag = S390_INSN_MFENCE; in s390_insn_mfence()
4609 insn->size = 0; /* not needed */ in s390_insn_mfence()
4611 return insn; in s390_insn_mfence()
4618 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_gzero() local
4620 insn->tag = S390_INSN_GZERO; in s390_insn_gzero()
4621 insn->size = size; in s390_insn_gzero()
4622 insn->variant.gzero.offset = offset; in s390_insn_gzero()
4624 return insn; in s390_insn_gzero()
4631 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_gadd() local
4633 insn->tag = S390_INSN_GADD; in s390_insn_gadd()
4634 insn->size = size; in s390_insn_gadd()
4635 insn->variant.gadd.offset = offset; in s390_insn_gadd()
4636 insn->variant.gadd.delta = delta; in s390_insn_gadd()
4637 insn->variant.gadd.value = value; in s390_insn_gadd()
4639 return insn; in s390_insn_gadd()
4647 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_xdirect() local
4649 insn->tag = S390_INSN_XDIRECT; in s390_insn_xdirect()
4650 insn->size = 0; /* does not matter */ in s390_insn_xdirect()
4652 insn->variant.xdirect.cond = cond; in s390_insn_xdirect()
4653 insn->variant.xdirect.dst = dst; in s390_insn_xdirect()
4654 insn->variant.xdirect.guest_IA = guest_IA; in s390_insn_xdirect()
4655 insn->variant.xdirect.to_fast_entry = to_fast_entry; in s390_insn_xdirect()
4657 return insn; in s390_insn_xdirect()
4664 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_xindir() local
4666 insn->tag = S390_INSN_XINDIR; in s390_insn_xindir()
4667 insn->size = 0; /* does not matter */ in s390_insn_xindir()
4669 insn->variant.xindir.cond = cond; in s390_insn_xindir()
4670 insn->variant.xindir.dst = dst; in s390_insn_xindir()
4671 insn->variant.xindir.guest_IA = guest_IA; in s390_insn_xindir()
4673 return insn; in s390_insn_xindir()
4681 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_xassisted() local
4683 insn->tag = S390_INSN_XASSISTED; in s390_insn_xassisted()
4684 insn->size = 0; /* does not matter */ in s390_insn_xassisted()
4686 insn->variant.xassisted.cond = cond; in s390_insn_xassisted()
4687 insn->variant.xassisted.dst = dst; in s390_insn_xassisted()
4688 insn->variant.xassisted.guest_IA = guest_IA; in s390_insn_xassisted()
4689 insn->variant.xassisted.kind = kind; in s390_insn_xassisted()
4691 return insn; in s390_insn_xassisted()
4698 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_evcheck() local
4703 insn->tag = S390_INSN_EVCHECK; in s390_insn_evcheck()
4704 insn->size = 0; /* does not matter */ in s390_insn_evcheck()
4706 insn->variant.evcheck.counter = counter; in s390_insn_evcheck()
4707 insn->variant.evcheck.fail_addr = fail_addr; in s390_insn_evcheck()
4709 return insn; in s390_insn_evcheck()
4716 s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn)); in s390_insn_profinc() local
4718 insn->tag = S390_INSN_PROFINC; in s390_insn_profinc()
4719 insn->size = 0; /* does not matter */ in s390_insn_profinc()
4721 return insn; in s390_insn_profinc()
4895 s390_insn_as_string(const s390_insn *insn) in s390_insn_as_string() argument
4903 switch (insn->tag) { in s390_insn_as_string()
4905 s390_sprintf(buf, "%M %R,%A", "v-load", insn->variant.load.dst, in s390_insn_as_string()
4906 insn->variant.load.src); in s390_insn_as_string()
4910 s390_sprintf(buf, "%M %R,%A", "v-store", insn->variant.store.src, in s390_insn_as_string()
4911 insn->variant.store.dst); in s390_insn_as_string()
4915 s390_sprintf(buf, "%M %R,%R", "v-move", insn->variant.move.dst, in s390_insn_as_string()
4916 insn->variant.move.src); in s390_insn_as_string()
4921 insn->variant.cond_move.cond, insn->variant.cond_move.dst, in s390_insn_as_string()
4922 &insn->variant.cond_move.src); in s390_insn_as_string()
4926 s390_sprintf(buf, "%M %R,%I", "v-loadi", insn->variant.load_immediate.dst, in s390_insn_as_string()
4927 insn->variant.load_immediate.value); in s390_insn_as_string()
4931 switch (insn->variant.alu.tag) { in s390_insn_as_string()
4943 s390_sprintf(buf, "%M %R,%O", op, insn->variant.alu.dst, /* also op1 */ in s390_insn_as_string()
4944 &insn->variant.alu.op2); in s390_insn_as_string()
4948 if (insn->variant.mul.signed_multiply) { in s390_insn_as_string()
4953 s390_sprintf(buf, "%M %R,%O", op, insn->variant.mul.dst_hi, in s390_insn_as_string()
4954 &insn->variant.mul.op2); in s390_insn_as_string()
4958 if (insn->variant.div.signed_divide) { in s390_insn_as_string()
4963 s390_sprintf(buf, "%M %R,%O", op, insn->variant.div.op1_hi, in s390_insn_as_string()
4964 &insn->variant.div.op2); in s390_insn_as_string()
4968 s390_sprintf(buf, "%M %R,%O", "v-divsi", insn->variant.divs.op1, in s390_insn_as_string()
4969 &insn->variant.divs.op2); in s390_insn_as_string()
4973 s390_sprintf(buf, "%M %R,%O", "v-clz", insn->variant.clz.num_bits, in s390_insn_as_string()
4974 &insn->variant.clz.src); in s390_insn_as_string()
4978 switch (insn->variant.unop.tag) { in s390_insn_as_string()
4998 s390_sprintf(buf, "%M %R,%O", op, insn->variant.unop.dst, in s390_insn_as_string()
4999 &insn->variant.unop.src); in s390_insn_as_string()
5003 s390_sprintf(buf, "%M %O", "v-test", &insn->variant.test.src); in s390_insn_as_string()
5007 s390_sprintf(buf, "%M %R,%C", "v-cc2b", insn->variant.cc2bool.dst, in s390_insn_as_string()
5008 insn->variant.cc2bool.cond); in s390_insn_as_string()
5012 s390_sprintf(buf, "%M %R,%A,%R,%R", "v-cas", insn->variant.cas.op1, in s390_insn_as_string()
5013 insn->variant.cas.op2, insn->variant.cas.op3, in s390_insn_as_string()
5014 insn->variant.cas.old_mem); in s390_insn_as_string()
5019 insn->variant.cdas.op1_high, insn->variant.cdas.op1_low, in s390_insn_as_string()
5020 insn->variant.cdas.op2, insn->variant.cdas.op3_high, in s390_insn_as_string()
5021 insn->variant.cdas.op3_low, insn->variant.cdas.old_mem_high, in s390_insn_as_string()
5022 insn->variant.cdas.old_mem_low); in s390_insn_as_string()
5026 if (insn->variant.compare.signed_comparison) { in s390_insn_as_string()
5031 s390_sprintf(buf, "%M %R,%O", op, insn->variant.compare.src1, in s390_insn_as_string()
5032 &insn->variant.compare.src2); in s390_insn_as_string()
5036 if (insn->variant.helper_call.dst != INVALID_HREG) { in s390_insn_as_string()
5038 insn->variant.helper_call.cond, in s390_insn_as_string()
5039 insn->variant.helper_call.dst, in s390_insn_as_string()
5040 insn->variant.helper_call.name, in s390_insn_as_string()
5041 insn->variant.helper_call.target, in s390_insn_as_string()
5042 insn->variant.helper_call.num_args); in s390_insn_as_string()
5045 insn->variant.helper_call.cond, in s390_insn_as_string()
5046 insn->variant.helper_call.name, in s390_insn_as_string()
5047 insn->variant.helper_call.target, in s390_insn_as_string()
5048 insn->variant.helper_call.num_args); in s390_insn_as_string()
5054 switch (insn->variant.bfp_triop.tag) { in s390_insn_as_string()
5060 insn->variant.bfp_triop.dst /* op1 same as dst */, in s390_insn_as_string()
5061 insn->variant.bfp_triop.op2, insn->variant.bfp_triop.op3); in s390_insn_as_string()
5065 switch (insn->variant.bfp_binop.tag) { in s390_insn_as_string()
5073 insn->variant.bfp_binop.dst /* op1 same as dst */, in s390_insn_as_string()
5074 insn->variant.bfp_binop.op2); in s390_insn_as_string()
5078 s390_sprintf(buf, "%M %R,%R,%R", "v-fcmp", insn->variant.bfp_compare.dst, in s390_insn_as_string()
5079 insn->variant.bfp_compare.op1, insn->variant.bfp_compare.op2); in s390_insn_as_string()
5083 switch (insn->variant.bfp_unop.tag) { in s390_insn_as_string()
5108 s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp_unop.dst, in s390_insn_as_string()
5109 insn->variant.bfp_unop.op); in s390_insn_as_string()
5113 switch (insn->variant.bfp128_binop.tag) { in s390_insn_as_string()
5122 insn->variant.bfp128_binop.dst_hi /* op1 same as dst */, in s390_insn_as_string()
5123 insn->variant.bfp128_binop.op2_hi); in s390_insn_as_string()
5128 s390_sprintf(buf, "%M %R,%R,%R", "v-fcmp", insn->variant.bfp128_compare.dst, in s390_insn_as_string()
5129 insn->variant.bfp128_compare.op1_hi, in s390_insn_as_string()
5130 insn->variant.bfp128_compare.op2_hi); in s390_insn_as_string()
5136 switch (insn->variant.bfp128_unop.tag) { in s390_insn_as_string()
5152 s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp128_unop.dst_hi, in s390_insn_as_string()
5153 insn->variant.bfp128_unop.op_hi); in s390_insn_as_string()
5161 s390_sprintf(buf, "%M %G", "v-gzero", insn->variant.gzero.offset); in s390_insn_as_string()
5166 insn->variant.gadd.offset, in s390_insn_as_string()
5167 (Long)(Char)insn->variant.gadd.delta, in s390_insn_as_string()
5168 insn->variant.gadd.value); in s390_insn_as_string()
5173 insn->variant.evcheck.counter, in s390_insn_as_string()
5174 insn->variant.evcheck.fail_addr); in s390_insn_as_string()
5183 insn->variant.xdirect.cond, in s390_insn_as_string()
5184 insn->variant.xdirect.guest_IA, in s390_insn_as_string()
5185 insn->variant.xdirect.dst, in s390_insn_as_string()
5186 insn->variant.xdirect.to_fast_entry ? "fast" : "slow"); in s390_insn_as_string()
5191 insn->variant.xindir.cond, in s390_insn_as_string()
5192 insn->variant.xindir.guest_IA, in s390_insn_as_string()
5193 insn->variant.xindir.dst); in s390_insn_as_string()
5198 insn->variant.xassisted.cond, in s390_insn_as_string()
5199 insn->variant.xassisted.kind, in s390_insn_as_string()
5200 insn->variant.xassisted.guest_IA, in s390_insn_as_string()
5201 insn->variant.xassisted.dst); in s390_insn_as_string()
5226 switch (insn->tag) { in s390_insn_as_string()
5228 switch (insn->variant.unop.tag) { in s390_insn_as_string()
5240 switch (insn->variant.bfp_unop.tag) { in s390_insn_as_string()
5266 switch (insn->variant.bfp128_unop.tag) { in s390_insn_as_string()
5285 vex_sprintf(p, "%u bytes", (UInt)insn->size); in s390_insn_as_string()
5350 s390_insn_load_emit(UChar *buf, const s390_insn *insn) in s390_insn_load_emit() argument
5355 src = insn->variant.load.src; in s390_insn_load_emit()
5357 r = hregNumber(insn->variant.load.dst); in s390_insn_load_emit()
5359 if (hregClass(insn->variant.load.dst) == HRcFlt64) { in s390_insn_load_emit()
5364 switch (insn->size) { in s390_insn_load_emit()
5394 return s390_emit_load_mem(buf, insn->size, r, src); in s390_insn_load_emit()
5399 s390_insn_store_emit(UChar *buf, const s390_insn *insn) in s390_insn_store_emit() argument
5404 dst = insn->variant.store.dst; in s390_insn_store_emit()
5406 r = hregNumber(insn->variant.store.src); in s390_insn_store_emit()
5411 if (hregClass(insn->variant.store.src) == HRcFlt64) { in s390_insn_store_emit()
5412 switch (insn->size) { in s390_insn_store_emit()
5442 switch (insn->size) { in s390_insn_store_emit()
5491 s390_insn_move_emit(UChar *buf, const s390_insn *insn) in s390_insn_move_emit() argument
5496 dst = hregNumber(insn->variant.move.dst); in s390_insn_move_emit()
5497 src = hregNumber(insn->variant.move.src); in s390_insn_move_emit()
5499 dst_class = hregClass(insn->variant.move.dst); in s390_insn_move_emit()
5500 src_class = hregClass(insn->variant.move.src); in s390_insn_move_emit()
5509 if (insn->size == 4) { in s390_insn_move_emit()
5517 if (insn->size == 4) { in s390_insn_move_emit()
5534 s390_insn_load_immediate_emit(UChar *buf, const s390_insn *insn) in s390_insn_load_immediate_emit() argument
5537 ULong value = insn->variant.load_immediate.value; in s390_insn_load_immediate_emit()
5539 r = hregNumber(insn->variant.load_immediate.dst); in s390_insn_load_immediate_emit()
5541 if (hregClass(insn->variant.load_immediate.dst) == HRcFlt64) { in s390_insn_load_immediate_emit()
5543 switch (insn->size) { in s390_insn_load_immediate_emit()
5550 switch (insn->size) { in s390_insn_load_immediate_emit()
5571 s390_insn_alu_emit(UChar *buf, const s390_insn *insn) in s390_insn_alu_emit() argument
5576 dst = hregNumber(insn->variant.alu.dst); in s390_insn_alu_emit()
5577 op2 = insn->variant.alu.op2; in s390_insn_alu_emit()
5583 switch (insn->size) { in s390_insn_alu_emit()
5587 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5601 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5631 if (insn->variant.alu.tag == S390_ALU_LSH || in s390_insn_alu_emit()
5632 insn->variant.alu.tag == S390_ALU_RSH || in s390_insn_alu_emit()
5633 insn->variant.alu.tag == S390_ALU_RSHA) { in s390_insn_alu_emit()
5645 buf = s390_emit_load_mem(buf, insn->size, b2, src); in s390_insn_alu_emit()
5647 if (insn->size == 8) { in s390_insn_alu_emit()
5648 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5662 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5679 switch (insn->size) { in s390_insn_alu_emit()
5684 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5701 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5733 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5769 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5784 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5800 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5823 switch (insn->size) { in s390_insn_alu_emit()
5828 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5858 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5877 switch (insn->variant.alu.tag) { in s390_insn_alu_emit()
5953 s390_widen_emit(UChar *buf, const s390_insn *insn, UInt from_size, in s390_widen_emit() argument
5956 s390_opnd_RMI opnd = insn->variant.unop.src; in s390_widen_emit()
5960 UChar r1 = hregNumber(insn->variant.unop.dst); in s390_widen_emit()
5967 if (insn->size == 4 || insn->size == 2) { /* 8 --> 32 8 --> 16 */ in s390_widen_emit()
5973 if (insn->size == 8) { /* 8 --> 64 */ in s390_widen_emit()
5982 if (insn->size == 4) { /* 16 --> 32 */ in s390_widen_emit()
5988 if (insn->size == 8) { /* 16 --> 64 */ in s390_widen_emit()
5997 if (insn->size == 8) { /* 32 --> 64 */ in s390_widen_emit()
6011 UChar r1 = hregNumber(insn->variant.unop.dst); in s390_widen_emit()
6019 if (insn->size == 4 || insn->size == 2) { in s390_widen_emit()
6025 if (insn->size == 8) { in s390_widen_emit()
6034 if (insn->size == 4) { /* 16 --> 32 */ in s390_widen_emit()
6049 if (insn->size == 8) { /* 16 --> 64 */ in s390_widen_emit()
6058 if (insn->size == 8) { /* 32 --> 64 */ in s390_widen_emit()
6072 UChar r1 = hregNumber(insn->variant.unop.dst); in s390_widen_emit()
6077 if (insn->size == 4 || insn->size == 2) { /* 8 --> 32 8 --> 16 */ in s390_widen_emit()
6085 if (insn->size == 8) { /* 8 --> 64 */ in s390_widen_emit()
6096 if (insn->size == 4) { /* 16 --> 32 */ in s390_widen_emit()
6099 if (insn->size == 8) { /* 16 --> 64 */ in s390_widen_emit()
6108 if (insn->size == 8) { /* 32 --> 64 */ in s390_widen_emit()
6128 s390_negate_emit(UChar *buf, const s390_insn *insn) in s390_negate_emit() argument
6132 opnd = insn->variant.unop.src; in s390_negate_emit()
6136 UChar r1 = hregNumber(insn->variant.unop.dst); in s390_negate_emit()
6139 switch (insn->size) { in s390_negate_emit()
6154 UChar r1 = hregNumber(insn->variant.unop.dst); in s390_negate_emit()
6157 buf = s390_emit_load_mem(buf, insn->size, R0, opnd.variant.am); in s390_negate_emit()
6159 switch (insn->size) { in s390_negate_emit()
6174 UChar r1 = hregNumber(insn->variant.unop.dst); in s390_negate_emit()
6179 switch (insn->size) { in s390_negate_emit()
6202 s390_insn_unop_emit(UChar *buf, const s390_insn *insn) in s390_insn_unop_emit() argument
6204 switch (insn->variant.unop.tag) { in s390_insn_unop_emit()
6205 case S390_ZERO_EXTEND_8: return s390_widen_emit(buf, insn, 1, 0); in s390_insn_unop_emit()
6206 case S390_ZERO_EXTEND_16: return s390_widen_emit(buf, insn, 2, 0); in s390_insn_unop_emit()
6207 case S390_ZERO_EXTEND_32: return s390_widen_emit(buf, insn, 4, 0); in s390_insn_unop_emit()
6209 case S390_SIGN_EXTEND_8: return s390_widen_emit(buf, insn, 1, 1); in s390_insn_unop_emit()
6210 case S390_SIGN_EXTEND_16: return s390_widen_emit(buf, insn, 2, 1); in s390_insn_unop_emit()
6211 case S390_SIGN_EXTEND_32: return s390_widen_emit(buf, insn, 4, 1); in s390_insn_unop_emit()
6213 case S390_NEGATE: return s390_negate_emit(buf, insn); in s390_insn_unop_emit()
6224 s390_insn_test_emit(UChar *buf, const s390_insn *insn) in s390_insn_test_emit() argument
6228 opnd = insn->variant.test.src; in s390_insn_test_emit()
6234 switch (insn->size) { in s390_insn_test_emit()
6252 switch (insn->size) { in s390_insn_test_emit()
6267 switch (insn->size) { in s390_insn_test_emit()
6291 s390_insn_cc2bool_emit(UChar *buf, const s390_insn *insn) in s390_insn_cc2bool_emit() argument
6293 UChar r1 = hregNumber(insn->variant.cc2bool.dst); in s390_insn_cc2bool_emit()
6294 s390_cc_t cond = insn->variant.cc2bool.cond; in s390_insn_cc2bool_emit()
6313 s390_insn_cas_emit(UChar *buf, const s390_insn *insn) in s390_insn_cas_emit() argument
6319 r1 = hregNumber(insn->variant.cas.op1); /* expected value */ in s390_insn_cas_emit()
6320 r3 = hregNumber(insn->variant.cas.op3); in s390_insn_cas_emit()
6321 old= hregNumber(insn->variant.cas.old_mem); in s390_insn_cas_emit()
6322 am = insn->variant.cas.op2; in s390_insn_cas_emit()
6326 switch (insn->size) { in s390_insn_cas_emit()
6355 s390_insn_cdas_emit(UChar *buf, const s390_insn *insn) in s390_insn_cdas_emit() argument
6361 r1 = hregNumber(insn->variant.cdas.op1_high); /* expected value */ in s390_insn_cdas_emit()
6362 r1p1 = hregNumber(insn->variant.cdas.op1_low); /* expected value */ in s390_insn_cdas_emit()
6363 r3 = hregNumber(insn->variant.cdas.op3_high); in s390_insn_cdas_emit()
6365 old_high = hregNumber(insn->variant.cdas.old_mem_high); in s390_insn_cdas_emit()
6366 old_low = hregNumber(insn->variant.cdas.old_mem_low); in s390_insn_cdas_emit()
6367 scratch = hregNumber(insn->variant.cdas.scratch); in s390_insn_cdas_emit()
6368 am = insn->variant.cdas.op2; in s390_insn_cdas_emit()
6374 switch (insn->size) { in s390_insn_cdas_emit()
6417 s390_insn_compare_emit(UChar *buf, const s390_insn *insn) in s390_insn_compare_emit() argument
6423 op1 = insn->variant.compare.src1; in s390_insn_compare_emit()
6424 op2 = insn->variant.compare.src2; in s390_insn_compare_emit()
6425 signed_comparison = insn->variant.compare.signed_comparison; in s390_insn_compare_emit()
6432 switch (insn->size) { in s390_insn_compare_emit()
6457 switch (insn->size) { in s390_insn_compare_emit()
6491 switch (insn->size) { in s390_insn_compare_emit()
6529 s390_insn_mul_emit(UChar *buf, const s390_insn *insn) in s390_insn_mul_emit() argument
6536 r1 = hregNumber(insn->variant.mul.dst_hi); in s390_insn_mul_emit()
6538 op2 = insn->variant.mul.op2; in s390_insn_mul_emit()
6539 signed_multiply = insn->variant.mul.signed_multiply; in s390_insn_mul_emit()
6545 switch (insn->size) { in s390_insn_mul_emit()
6571 switch (insn->size) { in s390_insn_mul_emit()
6575 buf = s390_emit_load_mem(buf, insn->size, R0, am); in s390_insn_mul_emit()
6613 switch (insn->size) { in s390_insn_mul_emit()
6645 s390_insn_div_emit(UChar *buf, const s390_insn *insn) in s390_insn_div_emit() argument
6651 r1 = hregNumber(insn->variant.div.op1_hi); in s390_insn_div_emit()
6652 op2 = insn->variant.div.op2; in s390_insn_div_emit()
6653 signed_divide = insn->variant.div.signed_divide; in s390_insn_div_emit()
6659 switch (insn->size) { in s390_insn_div_emit()
6683 switch (insn->size) { in s390_insn_div_emit()
6717 switch (insn->size) { in s390_insn_div_emit()
6747 s390_insn_divs_emit(UChar *buf, const s390_insn *insn) in s390_insn_divs_emit() argument
6752 r1 = hregNumber(insn->variant.divs.rem); in s390_insn_divs_emit()
6753 op2 = insn->variant.divs.op2; in s390_insn_divs_emit()
6788 s390_insn_clz_emit(UChar *buf, const s390_insn *insn) in s390_insn_clz_emit() argument
6793 r1 = hregNumber(insn->variant.clz.num_bits); in s390_insn_clz_emit()
6794 r1p1 = hregNumber(insn->variant.clz.clobber); in s390_insn_clz_emit()
6800 src = insn->variant.clz.src; in s390_insn_clz_emit()
6861 s390_insn_helper_call_emit(UChar *buf, const s390_insn *insn) in s390_insn_helper_call_emit() argument
6867 cond = insn->variant.helper_call.cond; in s390_insn_helper_call_emit()
6868 target = insn->variant.helper_call.target; in s390_insn_helper_call_emit()
6908 if (insn->variant.helper_call.dst != INVALID_HREG) { in s390_insn_helper_call_emit()
6909 buf = s390_emit_LGR(buf, hregNumber(insn->variant.helper_call.dst), in s390_insn_helper_call_emit()
6931 s390_insn_cond_move_emit(UChar *buf, const s390_insn *insn) in s390_insn_cond_move_emit() argument
6938 cond = insn->variant.cond_move.cond; in s390_insn_cond_move_emit()
6939 dst = insn->variant.cond_move.dst; in s390_insn_cond_move_emit()
6940 src = insn->variant.cond_move.src; in s390_insn_cond_move_emit()
6960 p = s390_emit_load_mem(p, insn->size, hregNumber(dst), src.variant.am); in s390_insn_cond_move_emit()
6967 switch (insn->size) { in s390_insn_cond_move_emit()
7031 s390_insn_bfp_triop_emit(UChar *buf, const s390_insn *insn) in s390_insn_bfp_triop_emit() argument
7033 UInt r1 = hregNumber(insn->variant.bfp_triop.dst); in s390_insn_bfp_triop_emit()
7034 UInt r2 = hregNumber(insn->variant.bfp_triop.op2); in s390_insn_bfp_triop_emit()
7035 UInt r3 = hregNumber(insn->variant.bfp_triop.op3); in s390_insn_bfp_triop_emit()
7036 s390_round_t rounding_mode = insn->variant.bfp_triop.rounding_mode; in s390_insn_bfp_triop_emit()
7042 switch (insn->size) { in s390_insn_bfp_triop_emit()
7044 switch (insn->variant.bfp_triop.tag) { in s390_insn_bfp_triop_emit()
7052 switch (insn->variant.bfp_triop.tag) { in s390_insn_bfp_triop_emit()
7075 s390_insn_bfp_binop_emit(UChar *buf, const s390_insn *insn) in s390_insn_bfp_binop_emit() argument
7077 UInt r1 = hregNumber(insn->variant.bfp_binop.dst); in s390_insn_bfp_binop_emit()
7078 UInt r2 = hregNumber(insn->variant.bfp_binop.op2); in s390_insn_bfp_binop_emit()
7079 s390_round_t rounding_mode = insn->variant.bfp_binop.rounding_mode; in s390_insn_bfp_binop_emit()
7085 switch (insn->size) { in s390_insn_bfp_binop_emit()
7087 switch (insn->variant.bfp_binop.tag) { in s390_insn_bfp_binop_emit()
7097 switch (insn->variant.bfp_binop.tag) { in s390_insn_bfp_binop_emit()
7122 s390_insn_bfp_unop_emit(UChar *buf, const s390_insn *insn) in s390_insn_bfp_unop_emit() argument
7124 UInt r1 = hregNumber(insn->variant.bfp_unop.dst); in s390_insn_bfp_unop_emit()
7125 UInt r2 = hregNumber(insn->variant.bfp_unop.op); in s390_insn_bfp_unop_emit()
7126 s390_round_t rounding_mode = insn->variant.bfp_unop.rounding_mode; in s390_insn_bfp_unop_emit()
7132 switch (insn->variant.bfp_unop.tag) { in s390_insn_bfp_unop_emit()
7146 switch (insn->variant.bfp_unop.tag) { in s390_insn_bfp_unop_emit()
7148 switch (insn->size) { in s390_insn_bfp_unop_emit()
7157 switch (insn->size) { in s390_insn_bfp_unop_emit()
7166 switch (insn->size) { in s390_insn_bfp_unop_emit()
7175 switch (insn->size) { in s390_insn_bfp_unop_emit()
7211 s390_insn_bfp_compare_emit(UChar *buf, const s390_insn *insn) in s390_insn_bfp_compare_emit() argument
7213 UInt dst = hregNumber(insn->variant.bfp_compare.dst); in s390_insn_bfp_compare_emit()
7214 UInt r1 = hregNumber(insn->variant.bfp_compare.op1); in s390_insn_bfp_compare_emit()
7215 UInt r2 = hregNumber(insn->variant.bfp_compare.op2); in s390_insn_bfp_compare_emit()
7217 switch (insn->size) { in s390_insn_bfp_compare_emit()
7237 s390_insn_bfp128_binop_emit(UChar *buf, const s390_insn *insn) in s390_insn_bfp128_binop_emit() argument
7239 UInt r1_hi = hregNumber(insn->variant.bfp128_binop.dst_hi); in s390_insn_bfp128_binop_emit()
7240 UInt r1_lo = hregNumber(insn->variant.bfp128_binop.dst_lo); in s390_insn_bfp128_binop_emit()
7241 UInt r2_hi = hregNumber(insn->variant.bfp128_binop.op2_hi); in s390_insn_bfp128_binop_emit()
7242 UInt r2_lo = hregNumber(insn->variant.bfp128_binop.op2_lo); in s390_insn_bfp128_binop_emit()
7243 s390_round_t rounding_mode = insn->variant.bfp_binop.rounding_mode; in s390_insn_bfp128_binop_emit()
7246 vassert(insn->size == 16); in s390_insn_bfp128_binop_emit()
7256 switch (insn->variant.bfp128_binop.tag) { in s390_insn_bfp128_binop_emit()
7277 s390_insn_bfp128_compare_emit(UChar *buf, const s390_insn *insn) in s390_insn_bfp128_compare_emit() argument
7279 UInt dst = hregNumber(insn->variant.bfp128_compare.dst); in s390_insn_bfp128_compare_emit()
7280 UInt r1_hi = hregNumber(insn->variant.bfp128_compare.op1_hi); in s390_insn_bfp128_compare_emit()
7281 UInt r1_lo = hregNumber(insn->variant.bfp128_compare.op1_lo); in s390_insn_bfp128_compare_emit()
7282 UInt r2_hi = hregNumber(insn->variant.bfp128_compare.op2_hi); in s390_insn_bfp128_compare_emit()
7283 UInt r2_lo = hregNumber(insn->variant.bfp128_compare.op2_lo); in s390_insn_bfp128_compare_emit()
7286 vassert(insn->size == 16); in s390_insn_bfp128_compare_emit()
7300 s390_insn_bfp128_unop_emit(UChar *buf, const s390_insn *insn) in s390_insn_bfp128_unop_emit() argument
7302 UInt r1_hi = hregNumber(insn->variant.bfp128_unop.dst_hi); in s390_insn_bfp128_unop_emit()
7303 UInt r1_lo = hregNumber(insn->variant.bfp128_unop.dst_lo); in s390_insn_bfp128_unop_emit()
7304 UInt r2_hi = hregNumber(insn->variant.bfp128_unop.op_hi); in s390_insn_bfp128_unop_emit()
7305 UInt r2_lo = hregNumber(insn->variant.bfp128_unop.op_lo); in s390_insn_bfp128_unop_emit()
7306 s390_round_t rounding_mode = insn->variant.bfp_binop.rounding_mode; in s390_insn_bfp128_unop_emit()
7309 vassert(insn->size == 16); in s390_insn_bfp128_unop_emit()
7319 switch (insn->variant.bfp128_unop.tag) { in s390_insn_bfp128_unop_emit()
7343 s390_insn_bfp128_convert_to_emit(UChar *buf, const s390_insn *insn) in s390_insn_bfp128_convert_to_emit() argument
7345 UInt r1_hi = hregNumber(insn->variant.bfp128_unop.dst_hi); in s390_insn_bfp128_convert_to_emit()
7346 UInt r1_lo = hregNumber(insn->variant.bfp128_unop.dst_lo); in s390_insn_bfp128_convert_to_emit()
7347 UInt r2 = hregNumber(insn->variant.bfp128_unop.op_hi); in s390_insn_bfp128_convert_to_emit()
7350 vassert(insn->size == 16); in s390_insn_bfp128_convert_to_emit()
7354 switch (insn->variant.bfp128_unop.tag) { in s390_insn_bfp128_convert_to_emit()
7370 s390_insn_bfp128_convert_from_emit(UChar *buf, const s390_insn *insn) in s390_insn_bfp128_convert_from_emit() argument
7372 UInt r1 = hregNumber(insn->variant.bfp128_unop.dst_hi); in s390_insn_bfp128_convert_from_emit()
7373 UInt r2_hi = hregNumber(insn->variant.bfp128_unop.op_hi); in s390_insn_bfp128_convert_from_emit()
7374 UInt r2_lo = hregNumber(insn->variant.bfp128_unop.op_lo); in s390_insn_bfp128_convert_from_emit()
7375 s390_round_t rounding_mode = insn->variant.bfp128_unop.rounding_mode; in s390_insn_bfp128_convert_from_emit()
7378 vassert(insn->size != 16); in s390_insn_bfp128_convert_from_emit()
7385 switch (insn->variant.bfp_unop.tag) { in s390_insn_bfp128_convert_from_emit()
7400 s390_insn_mfence_emit(UChar *buf, const s390_insn *insn) in s390_insn_mfence_emit() argument
7407 s390_insn_gzero_emit(UChar *buf, const s390_insn *insn) in s390_insn_gzero_emit() argument
7409 return s390_emit_XC(buf, insn->size - 1, in s390_insn_gzero_emit()
7410 S390_REGNO_GUEST_STATE_POINTER, insn->variant.gzero.offset, in s390_insn_gzero_emit()
7411 S390_REGNO_GUEST_STATE_POINTER, insn->variant.gzero.offset); in s390_insn_gzero_emit()
7416 s390_insn_gadd_emit(UChar *buf, const s390_insn *insn) in s390_insn_gadd_emit() argument
7418 return s390_emit_AGSI(buf, insn->variant.gadd.delta, in s390_insn_gadd_emit()
7420 DISP20(insn->variant.gadd.offset)); in s390_insn_gadd_emit()
7561 s390_insn_xdirect_emit(UChar *buf, const s390_insn *insn, in s390_insn_xdirect_emit() argument
7576 s390_cc_t cond = insn->variant.xdirect.cond; in s390_insn_xdirect_emit()
7592 buf = s390_emit_load_64imm(buf, R0, insn->variant.xdirect.dst); in s390_insn_xdirect_emit()
7594 const s390_amode *amode = insn->variant.xdirect.guest_IA; in s390_insn_xdirect_emit()
7605 insn->variant.xdirect.to_fast_entry ? disp_cp_chain_me_to_fastEP in s390_insn_xdirect_emit()
7642 s390_insn_xindir_emit(UChar *buf, const s390_insn *insn, void *disp_cp_xindir) in s390_insn_xindir_emit() argument
7657 s390_cc_t cond = insn->variant.xdirect.cond; in s390_insn_xindir_emit()
7673 const s390_amode *amode = insn->variant.xindir.guest_IA; in s390_insn_xindir_emit()
7678 UInt regno = hregNumber(insn->variant.xindir.dst); in s390_insn_xindir_emit()
7701 s390_insn_xassisted_emit(UChar *buf, const s390_insn *insn, in s390_insn_xassisted_emit() argument
7709 s390_cc_t cond = insn->variant.xdirect.cond; in s390_insn_xassisted_emit()
7725 const s390_amode *amode = insn->variant.xassisted.guest_IA; in s390_insn_xassisted_emit()
7730 UInt regno = hregNumber(insn->variant.xassisted.dst); in s390_insn_xassisted_emit()
7736 switch (insn->variant.xassisted.kind) { in s390_insn_xassisted_emit()
7753 ppIRJumpKind(insn->variant.xassisted.kind); in s390_insn_xassisted_emit()
7791 s390_insn_evcheck_emit(UChar *buf, const s390_insn *insn) in s390_insn_evcheck_emit() argument
7799 amode = insn->variant.evcheck.counter; in s390_insn_evcheck_emit()
7817 amode = insn->variant.evcheck.fail_addr; in s390_insn_evcheck_emit()
7835 const s390_insn *insn __attribute__((unused))) in s390_insn_profinc_emit() argument
7855 emit_S390Instr(Bool *is_profinc, UChar *buf, Int nbuf, s390_insn *insn, in emit_S390Instr() argument
7862 switch (insn->tag) { in emit_S390Instr()
7864 end = s390_insn_load_emit(buf, insn); in emit_S390Instr()
7868 end = s390_insn_store_emit(buf, insn); in emit_S390Instr()
7872 end = s390_insn_move_emit(buf, insn); in emit_S390Instr()
7876 end = s390_insn_cond_move_emit(buf, insn); in emit_S390Instr()
7880 end = s390_insn_load_immediate_emit(buf, insn); in emit_S390Instr()
7884 end = s390_insn_alu_emit(buf, insn); in emit_S390Instr()
7888 end = s390_insn_mul_emit(buf, insn); in emit_S390Instr()
7892 end = s390_insn_div_emit(buf, insn); in emit_S390Instr()
7896 end = s390_insn_divs_emit(buf, insn); in emit_S390Instr()
7900 end = s390_insn_clz_emit(buf, insn); in emit_S390Instr()
7904 end = s390_insn_unop_emit(buf, insn); in emit_S390Instr()
7908 end = s390_insn_test_emit(buf, insn); in emit_S390Instr()
7912 end = s390_insn_cc2bool_emit(buf, insn); in emit_S390Instr()
7916 end = s390_insn_cas_emit(buf, insn); in emit_S390Instr()
7920 end = s390_insn_cdas_emit(buf, insn); in emit_S390Instr()
7924 end = s390_insn_compare_emit(buf, insn); in emit_S390Instr()
7928 end = s390_insn_helper_call_emit(buf, insn); in emit_S390Instr()
7932 end = s390_insn_bfp_triop_emit(buf, insn); in emit_S390Instr()
7936 end = s390_insn_bfp_binop_emit(buf, insn); in emit_S390Instr()
7940 end = s390_insn_bfp_unop_emit(buf, insn); in emit_S390Instr()
7944 end = s390_insn_bfp_compare_emit(buf, insn); in emit_S390Instr()
7948 end = s390_insn_bfp128_binop_emit(buf, insn); in emit_S390Instr()
7952 end = s390_insn_bfp128_compare_emit(buf, insn); in emit_S390Instr()
7956 end = s390_insn_bfp128_unop_emit(buf, insn); in emit_S390Instr()
7960 end = s390_insn_bfp128_convert_to_emit(buf, insn); in emit_S390Instr()
7964 end = s390_insn_bfp128_convert_from_emit(buf, insn); in emit_S390Instr()
7968 end = s390_insn_mfence_emit(buf, insn); in emit_S390Instr()
7972 end = s390_insn_gzero_emit(buf, insn); in emit_S390Instr()
7976 end = s390_insn_gadd_emit(buf, insn); in emit_S390Instr()
7980 end = s390_insn_profinc_emit(buf, insn); in emit_S390Instr()
7987 end = s390_insn_evcheck_emit(buf, insn); in emit_S390Instr()
7991 end = s390_insn_xdirect_emit(buf, insn, disp_cp_chain_me_to_slowEP, in emit_S390Instr()
7996 end = s390_insn_xindir_emit(buf, insn, disp_cp_xindir); in emit_S390Instr()
8000 end = s390_insn_xassisted_emit(buf, insn, disp_cp_xassisted); in emit_S390Instr()