701 }
702 comp_op(op->condition(), op->in_opr1(), op->in_opr2(), op);
703 break;
704
705 case lir_cmp_l2i:
706 case lir_cmp_fd2i:
707 case lir_ucmp_fd2i:
708 comp_fl2i(op->code(), op->in_opr1(), op->in_opr2(), op->result_opr(), op);
709 break;
710
711 case lir_cmove:
712 cmove(op->condition(), op->in_opr1(), op->in_opr2(), op->result_opr(), op->type());
713 break;
714
715 case lir_shl:
716 case lir_shr:
717 case lir_ushr:
718 if (op->in_opr2()->is_constant()) {
719 shift_op(op->code(), op->in_opr1(), op->in_opr2()->as_constant_ptr()->as_jint(), op->result_opr());
720 } else {
721 shift_op(op->code(), op->in_opr1(), op->in_opr2(), op->result_opr(), op->tmp_opr());
722 }
723 break;
724
725 case lir_add:
726 case lir_sub:
727 case lir_mul:
728 case lir_mul_strictfp:
729 case lir_div:
730 case lir_div_strictfp:
731 case lir_rem:
732 assert(op->fpu_pop_count() < 2, "");
733 arith_op(
734 op->code(),
735 op->in_opr1(),
736 op->in_opr2(),
737 op->result_opr(),
738 op->info(),
739 op->fpu_pop_count() == 1);
740 break;
741
742 case lir_abs:
743 case lir_sqrt:
744 case lir_sin:
745 case lir_tan:
746 case lir_cos:
747 case lir_log:
748 case lir_log10:
749 intrinsic_op(op->code(), op->in_opr1(), op->in_opr2(), op->result_opr(), op);
750 break;
751
752 case lir_logic_and:
753 case lir_logic_or:
754 case lir_logic_xor:
755 logic_op(
756 op->code(),
757 op->in_opr1(),
758 op->in_opr2(),
759 op->result_opr());
760 break;
761
762 case lir_throw:
763 throw_op(op->in_opr1(), op->in_opr2(), op->info());
764 break;
765
766 default:
767 Unimplemented();
768 break;
|
701 }
702 comp_op(op->condition(), op->in_opr1(), op->in_opr2(), op);
703 break;
704
705 case lir_cmp_l2i:
706 case lir_cmp_fd2i:
707 case lir_ucmp_fd2i:
708 comp_fl2i(op->code(), op->in_opr1(), op->in_opr2(), op->result_opr(), op);
709 break;
710
711 case lir_cmove:
712 cmove(op->condition(), op->in_opr1(), op->in_opr2(), op->result_opr(), op->type());
713 break;
714
715 case lir_shl:
716 case lir_shr:
717 case lir_ushr:
718 if (op->in_opr2()->is_constant()) {
719 shift_op(op->code(), op->in_opr1(), op->in_opr2()->as_constant_ptr()->as_jint(), op->result_opr());
720 } else {
721 shift_op(op->code(), op->in_opr1(), op->in_opr2(), op->result_opr(), op->tmp1_opr());
722 }
723 break;
724
725 case lir_add:
726 case lir_sub:
727 case lir_mul:
728 case lir_mul_strictfp:
729 case lir_div:
730 case lir_div_strictfp:
731 case lir_rem:
732 assert(op->fpu_pop_count() < 2, "");
733 arith_op(
734 op->code(),
735 op->in_opr1(),
736 op->in_opr2(),
737 op->result_opr(),
738 op->info(),
739 op->fpu_pop_count() == 1);
740 break;
741
742 case lir_abs:
743 case lir_sqrt:
744 case lir_sin:
745 case lir_tan:
746 case lir_cos:
747 case lir_log:
748 case lir_log10:
749 case lir_exp:
750 case lir_pow:
751 intrinsic_op(op->code(), op->in_opr1(), op->in_opr2(), op->result_opr(), op);
752 break;
753
754 case lir_logic_and:
755 case lir_logic_or:
756 case lir_logic_xor:
757 logic_op(
758 op->code(),
759 op->in_opr1(),
760 op->in_opr2(),
761 op->result_opr());
762 break;
763
764 case lir_throw:
765 throw_op(op->in_opr1(), op->in_opr2(), op->info());
766 break;
767
768 default:
769 Unimplemented();
770 break;
|