754
755 default:
756 Unimplemented();
757 break;
758 }
759 }
760
761 void LIR_Assembler::emit_op4(LIR_Op4* op) {
762 switch(op->code()) {
763 case lir_cmove:
764 cmove(op->condition(), op->in_opr1(), op->in_opr2(), op->result_opr(), op->type(), op->in_opr3(), op->in_opr4());
765 break;
766
767 default:
768 Unimplemented();
769 break;
770 }
771 }
772
773 void LIR_Assembler::build_frame() {
774 _masm->build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes());
775 }
776
777
778 void LIR_Assembler::roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack) {
779 assert(strict_fp_requires_explicit_rounding, "not required");
780 assert((src->is_single_fpu() && dest->is_single_stack()) ||
781 (src->is_double_fpu() && dest->is_double_stack()),
782 "round_fp: rounds register -> stack location");
783
784 reg2stack (src, dest, src->type(), pop_fpu_stack);
785 }
786
787
788 void LIR_Assembler::move_op(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool wide) {
789 if (src->is_register()) {
790 if (dest->is_register()) {
791 assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");
792 reg2reg(src, dest);
793 } else if (dest->is_stack()) {
794 assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");
|
754
755 default:
756 Unimplemented();
757 break;
758 }
759 }
760
761 void LIR_Assembler::emit_op4(LIR_Op4* op) {
762 switch(op->code()) {
763 case lir_cmove:
764 cmove(op->condition(), op->in_opr1(), op->in_opr2(), op->result_opr(), op->type(), op->in_opr3(), op->in_opr4());
765 break;
766
767 default:
768 Unimplemented();
769 break;
770 }
771 }
772
773 void LIR_Assembler::build_frame() {
774 _masm->build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes(), compilation()->max_monitors());
775 }
776
777
778 void LIR_Assembler::roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack) {
779 assert(strict_fp_requires_explicit_rounding, "not required");
780 assert((src->is_single_fpu() && dest->is_single_stack()) ||
781 (src->is_double_fpu() && dest->is_double_stack()),
782 "round_fp: rounds register -> stack location");
783
784 reg2stack (src, dest, src->type(), pop_fpu_stack);
785 }
786
787
788 void LIR_Assembler::move_op(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool wide) {
789 if (src->is_register()) {
790 if (dest->is_register()) {
791 assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");
792 reg2reg(src, dest);
793 } else if (dest->is_stack()) {
794 assert(patch_code == lir_patch_none && info == NULL, "no patching and info allowed here");
|