722 LIR_Op1* op1 = (LIR_Op1*)op; |
722 LIR_Op1* op1 = (LIR_Op1*)op; |
723 |
723 |
724 assert(op1->_info == NULL, "no info"); |
724 assert(op1->_info == NULL, "no info"); |
725 assert(op1->_opr->is_valid(), "exception oop"); do_input(op1->_opr); |
725 assert(op1->_opr->is_valid(), "exception oop"); do_input(op1->_opr); |
726 assert(op1->_result->is_illegal(), "no result"); |
726 assert(op1->_result->is_illegal(), "no result"); |
727 |
|
728 break; |
|
729 } |
|
730 |
|
731 |
|
732 case lir_tan: |
|
733 case lir_log10: { |
|
734 assert(op->as_Op2() != NULL, "must be"); |
|
735 LIR_Op2* op2 = (LIR_Op2*)op; |
|
736 |
|
737 // On x86 tan/sin/cos need two temporary fpu stack slots and |
|
738 // log/log10 need one so handle opr2 and tmp as temp inputs. |
|
739 // Register input operand as temp to guarantee that it doesn't |
|
740 // overlap with the input. |
|
741 assert(op2->_info == NULL, "not used"); |
|
742 assert(op2->_tmp5->is_illegal(), "not used"); |
|
743 assert(op2->_opr1->is_valid(), "used"); |
|
744 do_input(op2->_opr1); do_temp(op2->_opr1); |
|
745 |
|
746 if (op2->_opr2->is_valid()) do_temp(op2->_opr2); |
|
747 if (op2->_tmp1->is_valid()) do_temp(op2->_tmp1); |
|
748 if (op2->_tmp2->is_valid()) do_temp(op2->_tmp2); |
|
749 if (op2->_tmp3->is_valid()) do_temp(op2->_tmp3); |
|
750 if (op2->_tmp4->is_valid()) do_temp(op2->_tmp4); |
|
751 if (op2->_result->is_valid()) do_output(op2->_result); |
|
752 |
727 |
753 break; |
728 break; |
754 } |
729 } |
755 |
730 |
756 // LIR_Op3 |
731 // LIR_Op3 |
1738 case lir_div: s = "div"; break; |
1713 case lir_div: s = "div"; break; |
1739 case lir_div_strictfp: s = "div_strictfp"; break; |
1714 case lir_div_strictfp: s = "div_strictfp"; break; |
1740 case lir_rem: s = "rem"; break; |
1715 case lir_rem: s = "rem"; break; |
1741 case lir_abs: s = "abs"; break; |
1716 case lir_abs: s = "abs"; break; |
1742 case lir_sqrt: s = "sqrt"; break; |
1717 case lir_sqrt: s = "sqrt"; break; |
1743 case lir_tan: s = "tan"; break; |
|
1744 case lir_log10: s = "log10"; break; |
|
1745 case lir_logic_and: s = "logic_and"; break; |
1718 case lir_logic_and: s = "logic_and"; break; |
1746 case lir_logic_or: s = "logic_or"; break; |
1719 case lir_logic_or: s = "logic_or"; break; |
1747 case lir_logic_xor: s = "logic_xor"; break; |
1720 case lir_logic_xor: s = "logic_xor"; break; |
1748 case lir_shl: s = "shift_left"; break; |
1721 case lir_shl: s = "shift_left"; break; |
1749 case lir_shr: s = "shift_right"; break; |
1722 case lir_shr: s = "shift_right"; break; |