Lines Matching refs:from_reg

796 int LIR_Assembler::store(LIR_Opr from_reg, Register base, int offset, BasicType type, bool wide, bool unaligned) {
802 store_offset = store(from_reg, base, O7, type, wide);
805 __ verify_oop(from_reg->as_register());
810 case T_BYTE : __ stb(from_reg->as_register(), base, offset); break;
811 case T_CHAR : __ sth(from_reg->as_register(), base, offset); break;
812 case T_SHORT : __ sth(from_reg->as_register(), base, offset); break;
813 case T_INT : __ stw(from_reg->as_register(), base, offset); break;
817 __ srax(from_reg->as_register_lo(), 32, O7);
818 __ stw(from_reg->as_register_lo(), base, offset + lo_word_offset_in_bytes);
821 __ stx(from_reg->as_register_lo(), base, offset);
825 __ stw(from_reg->as_register_lo(), base, offset + lo_word_offset_in_bytes);
826 __ stw(from_reg->as_register_hi(), base, offset + hi_word_offset_in_bytes);
830 __ st_ptr(from_reg->as_register(), base, offset);
836 __ encode_heap_oop(from_reg->as_register(), G3_scratch);
840 __ st_ptr(from_reg->as_register(), base, offset);
845 case T_FLOAT : __ stf(FloatRegisterImpl::S, from_reg->as_float_reg(), base, offset); break;
848 FloatRegister reg = from_reg->as_double_reg();
866 int LIR_Assembler::store(LIR_Opr from_reg, Register base, Register disp, BasicType type, bool wide) {
868 __ verify_oop(from_reg->as_register());
873 case T_BYTE : __ stb(from_reg->as_register(), base, disp); break;
874 case T_CHAR : __ sth(from_reg->as_register(), base, disp); break;
875 case T_SHORT : __ sth(from_reg->as_register(), base, disp); break;
876 case T_INT : __ stw(from_reg->as_register(), base, disp); break;
879 __ stx(from_reg->as_register_lo(), base, disp);
881 assert(from_reg->as_register_hi()->successor() == from_reg->as_register_lo(), "must match");
882 __ std(from_reg->as_register_hi(), base, disp);
886 __ st_ptr(from_reg->as_register(), base, disp);
892 __ encode_heap_oop(from_reg->as_register(), G3_scratch);
896 __ st_ptr(from_reg->as_register(), base, disp);
900 case T_FLOAT : __ stf(FloatRegisterImpl::S, from_reg->as_float_reg(), base, disp); break;
901 case T_DOUBLE: __ stf(FloatRegisterImpl::D, from_reg->as_double_reg(), base, disp); break;
1439 void LIR_Assembler::reg2stack(LIR_Opr from_reg, LIR_Opr dest, BasicType type, bool pop_fpu_stack) {
1447 store(from_reg, addr.base(), addr.disp(), from_reg->type(), true /*wide*/, unaligned);
1451 void LIR_Assembler::reg2reg(LIR_Opr from_reg, LIR_Opr to_reg) {
1452 if (from_reg->is_float_kind() && to_reg->is_float_kind()) {
1453 if (from_reg->is_double_fpu()) {
1456 __ fmov(FloatRegisterImpl::D, from_reg->as_double_reg(), to_reg->as_double_reg());
1460 __ fmov(FloatRegisterImpl::S, from_reg->as_float_reg(), to_reg->as_float_reg());
1462 } else if (!from_reg->is_float_kind() && !to_reg->is_float_kind()) {
1463 if (from_reg->is_double_cpu()) {
1465 __ mov(from_reg->as_pointer_register(), to_reg->as_pointer_register());
1468 from_reg->as_register_hi() != to_reg->as_register_lo() &&
1469 from_reg->as_register_lo() != to_reg->as_register_hi(),
1472 __ mov(from_reg->as_register_hi(), to_reg->as_register_hi());
1473 __ mov(from_reg->as_register_lo(), to_reg->as_register_lo());
1478 __ mov(from_reg->as_register(), to_reg->as_register_lo());
1482 __ mov(from_reg->as_register(), to_reg->as_register());
1493 void LIR_Assembler::reg2mem(LIR_Opr from_reg, LIR_Opr dest, BasicType type,
1510 assert(!from_reg->is_double_cpu() ||
1539 offset = store(from_reg, src, disp_value, type, wide, unaligned);
1542 offset = store(from_reg, src, disp_reg, type, wide);