1637 void vabsnegf(int opcode, XMMRegister dst, XMMRegister src, int vector_len, Register scr);
1638 void vextendbw(bool sign, XMMRegister dst, XMMRegister src, int vector_len);
1639 void vextendbw(bool sign, XMMRegister dst, XMMRegister src);
1640 void vshiftd(int opcode, XMMRegister dst, XMMRegister src);
1641 void vshiftd(int opcode, XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1642 void vshiftw(int opcode, XMMRegister dst, XMMRegister src);
1643 void vshiftw(int opcode, XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1644 void vshiftq(int opcode, XMMRegister dst, XMMRegister src);
1645 void vshiftq(int opcode, XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1646 #endif
1647
1648 // C2 compiled method's prolog code.
1649 void verified_entry(Compile* C, int sp_inc = 0);
1650
1651 enum RegState {
1652 reg_readonly,
1653 reg_writable,
1654 reg_written
1655 };
1656
1657 void store_value_type_fields_to_buf(ciValueKlass* vk);
1658
1659 // Unpack all value type arguments passed as oops
1660 void unpack_value_args(Compile* C, bool receiver_only);
1661 bool move_helper(VMReg from, VMReg to, BasicType bt, RegState reg_state[], int ret_off, int extra_stack_offset);
1662 bool unpack_value_helper(const GrowableArray<SigEntry>* sig, int& sig_index, VMReg from, VMRegPair* regs_to, int& to_index,
1663 RegState reg_state[], int ret_off, int extra_stack_offset);
1664 bool pack_value_helper(const GrowableArray<SigEntry>* sig, int& sig_index, int vtarg_index,
1665 VMReg to, VMRegPair* regs_from, int regs_from_count, int& from_index, RegState reg_state[],
1666 int ret_off, int extra_stack_offset);
1667 void restore_stack(Compile* C);
1668
1669 int shuffle_value_args(bool is_packing, bool receiver_only, int extra_stack_offset,
1670 BasicType* sig_bt, const GrowableArray<SigEntry>* sig_cc,
1671 int args_passed, int args_on_stack, VMRegPair* regs,
1672 int args_passed_to, int args_on_stack_to, VMRegPair* regs_to);
1673 bool shuffle_value_args_spill(bool is_packing, const GrowableArray<SigEntry>* sig_cc, int sig_cc_index,
1674 VMRegPair* regs_from, int from_index, int regs_from_count,
1675 RegState* reg_state, int sp_inc, int extra_stack_offset);
1676 VMReg spill_reg_for(VMReg reg);
1677
|
1637 void vabsnegf(int opcode, XMMRegister dst, XMMRegister src, int vector_len, Register scr);
1638 void vextendbw(bool sign, XMMRegister dst, XMMRegister src, int vector_len);
1639 void vextendbw(bool sign, XMMRegister dst, XMMRegister src);
1640 void vshiftd(int opcode, XMMRegister dst, XMMRegister src);
1641 void vshiftd(int opcode, XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1642 void vshiftw(int opcode, XMMRegister dst, XMMRegister src);
1643 void vshiftw(int opcode, XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1644 void vshiftq(int opcode, XMMRegister dst, XMMRegister src);
1645 void vshiftq(int opcode, XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1646 #endif
1647
1648 // C2 compiled method's prolog code.
1649 void verified_entry(Compile* C, int sp_inc = 0);
1650
1651 enum RegState {
1652 reg_readonly,
1653 reg_writable,
1654 reg_written
1655 };
1656
1657 int store_value_type_fields_to_buf(ciValueKlass* vk, bool from_interpreter = true);
1658
1659 // Unpack all value type arguments passed as oops
1660 void unpack_value_args(Compile* C, bool receiver_only);
1661 bool move_helper(VMReg from, VMReg to, BasicType bt, RegState reg_state[], int ret_off, int extra_stack_offset);
1662 bool unpack_value_helper(const GrowableArray<SigEntry>* sig, int& sig_index, VMReg from, VMRegPair* regs_to, int& to_index,
1663 RegState reg_state[], int ret_off, int extra_stack_offset);
1664 bool pack_value_helper(const GrowableArray<SigEntry>* sig, int& sig_index, int vtarg_index,
1665 VMReg to, VMRegPair* regs_from, int regs_from_count, int& from_index, RegState reg_state[],
1666 int ret_off, int extra_stack_offset);
1667 void restore_stack(Compile* C);
1668
1669 int shuffle_value_args(bool is_packing, bool receiver_only, int extra_stack_offset,
1670 BasicType* sig_bt, const GrowableArray<SigEntry>* sig_cc,
1671 int args_passed, int args_on_stack, VMRegPair* regs,
1672 int args_passed_to, int args_on_stack_to, VMRegPair* regs_to);
1673 bool shuffle_value_args_spill(bool is_packing, const GrowableArray<SigEntry>* sig_cc, int sig_cc_index,
1674 VMRegPair* regs_from, int from_index, int regs_from_count,
1675 RegState* reg_state, int sp_inc, int extra_stack_offset);
1676 VMReg spill_reg_for(VMReg reg);
1677
|