1 /*
2 * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
438 // LIR_OpLabel
439 case lir_label: // result and info always invalid
440 {
441 assert(op->as_OpLabel() != NULL, "must be");
442 assert(op->_info == NULL, "info not used by this instruction");
443 assert(op->_result->is_illegal(), "not used");
444 break;
445 }
446
447
448 // LIR_Op1
449 case lir_fxch: // input always valid, result and info always invalid
450 case lir_fld: // input always valid, result and info always invalid
451 case lir_push: // input always valid, result and info always invalid
452 case lir_pop: // input always valid, result and info always invalid
453 case lir_return: // input always valid, result and info always invalid
454 case lir_leal: // input and result always valid, info always invalid
455 case lir_monaddr: // input and result always valid, info always invalid
456 case lir_null_check: // input and info always valid, result always invalid
457 case lir_move: // input and result always valid, may have info
458 case lir_pack64: // input and result always valid
459 case lir_unpack64: // input and result always valid
460 {
461 assert(op->as_Op1() != NULL, "must be");
462 LIR_Op1* op1 = (LIR_Op1*)op;
463
464 if (op1->_info) do_info(op1->_info);
465 if (op1->_opr->is_valid()) do_input(op1->_opr);
466 if (op1->_result->is_valid()) do_output(op1->_result);
467
468 break;
469 }
470
471 case lir_safepoint:
472 {
473 assert(op->as_Op1() != NULL, "must be");
474 LIR_Op1* op1 = (LIR_Op1*)op;
475
476 assert(op1->_info != NULL, ""); do_info(op1->_info);
477 if (op1->_opr->is_valid()) do_temp(op1->_opr); // safepoints on SPARC need temporary register
478 assert(op1->_result->is_illegal(), "safepoint does not produce value");
479
1631 case lir_get_thread: s = "get_thread"; break;
1632 // LIR_Op1
1633 case lir_fxch: s = "fxch"; break;
1634 case lir_fld: s = "fld"; break;
1635 case lir_push: s = "push"; break;
1636 case lir_pop: s = "pop"; break;
1637 case lir_null_check: s = "null_check"; break;
1638 case lir_return: s = "return"; break;
1639 case lir_safepoint: s = "safepoint"; break;
1640 case lir_leal: s = "leal"; break;
1641 case lir_branch: s = "branch"; break;
1642 case lir_cond_float_branch: s = "flt_cond_br"; break;
1643 case lir_move: s = "move"; break;
1644 case lir_roundfp: s = "roundfp"; break;
1645 case lir_rtcall: s = "rtcall"; break;
1646 case lir_throw: s = "throw"; break;
1647 case lir_unwind: s = "unwind"; break;
1648 case lir_convert: s = "convert"; break;
1649 case lir_alloc_object: s = "alloc_obj"; break;
1650 case lir_monaddr: s = "mon_addr"; break;
1651 case lir_pack64: s = "pack64"; break;
1652 case lir_unpack64: s = "unpack64"; break;
1653 // LIR_Op2
1654 case lir_cmp: s = "cmp"; break;
1655 case lir_cmp_l2i: s = "cmp_l2i"; break;
1656 case lir_ucmp_fd2i: s = "ucomp_fd2i"; break;
1657 case lir_cmp_fd2i: s = "comp_fd2i"; break;
1658 case lir_cmove: s = "cmove"; break;
1659 case lir_add: s = "add"; break;
1660 case lir_sub: s = "sub"; break;
1661 case lir_mul: s = "mul"; break;
1662 case lir_mul_strictfp: s = "mul_strictfp"; break;
1663 case lir_div: s = "div"; break;
1664 case lir_div_strictfp: s = "div_strictfp"; break;
1665 case lir_rem: s = "rem"; break;
1666 case lir_abs: s = "abs"; break;
1667 case lir_neg: s = "neg"; break;
1668 case lir_sqrt: s = "sqrt"; break;
1669 case lir_logic_and: s = "logic_and"; break;
1670 case lir_logic_or: s = "logic_or"; break;
1671 case lir_logic_xor: s = "logic_xor"; break;
1672 case lir_shl: s = "shift_left"; break;
|
1 /*
2 * Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
438 // LIR_OpLabel
439 case lir_label: // result and info always invalid
440 {
441 assert(op->as_OpLabel() != NULL, "must be");
442 assert(op->_info == NULL, "info not used by this instruction");
443 assert(op->_result->is_illegal(), "not used");
444 break;
445 }
446
447
448 // LIR_Op1
449 case lir_fxch: // input always valid, result and info always invalid
450 case lir_fld: // input always valid, result and info always invalid
451 case lir_push: // input always valid, result and info always invalid
452 case lir_pop: // input always valid, result and info always invalid
453 case lir_return: // input always valid, result and info always invalid
454 case lir_leal: // input and result always valid, info always invalid
455 case lir_monaddr: // input and result always valid, info always invalid
456 case lir_null_check: // input and info always valid, result always invalid
457 case lir_move: // input and result always valid, may have info
458 {
459 assert(op->as_Op1() != NULL, "must be");
460 LIR_Op1* op1 = (LIR_Op1*)op;
461
462 if (op1->_info) do_info(op1->_info);
463 if (op1->_opr->is_valid()) do_input(op1->_opr);
464 if (op1->_result->is_valid()) do_output(op1->_result);
465
466 break;
467 }
468
469 case lir_safepoint:
470 {
471 assert(op->as_Op1() != NULL, "must be");
472 LIR_Op1* op1 = (LIR_Op1*)op;
473
474 assert(op1->_info != NULL, ""); do_info(op1->_info);
475 if (op1->_opr->is_valid()) do_temp(op1->_opr); // safepoints on SPARC need temporary register
476 assert(op1->_result->is_illegal(), "safepoint does not produce value");
477
1629 case lir_get_thread: s = "get_thread"; break;
1630 // LIR_Op1
1631 case lir_fxch: s = "fxch"; break;
1632 case lir_fld: s = "fld"; break;
1633 case lir_push: s = "push"; break;
1634 case lir_pop: s = "pop"; break;
1635 case lir_null_check: s = "null_check"; break;
1636 case lir_return: s = "return"; break;
1637 case lir_safepoint: s = "safepoint"; break;
1638 case lir_leal: s = "leal"; break;
1639 case lir_branch: s = "branch"; break;
1640 case lir_cond_float_branch: s = "flt_cond_br"; break;
1641 case lir_move: s = "move"; break;
1642 case lir_roundfp: s = "roundfp"; break;
1643 case lir_rtcall: s = "rtcall"; break;
1644 case lir_throw: s = "throw"; break;
1645 case lir_unwind: s = "unwind"; break;
1646 case lir_convert: s = "convert"; break;
1647 case lir_alloc_object: s = "alloc_obj"; break;
1648 case lir_monaddr: s = "mon_addr"; break;
1649 // LIR_Op2
1650 case lir_cmp: s = "cmp"; break;
1651 case lir_cmp_l2i: s = "cmp_l2i"; break;
1652 case lir_ucmp_fd2i: s = "ucomp_fd2i"; break;
1653 case lir_cmp_fd2i: s = "comp_fd2i"; break;
1654 case lir_cmove: s = "cmove"; break;
1655 case lir_add: s = "add"; break;
1656 case lir_sub: s = "sub"; break;
1657 case lir_mul: s = "mul"; break;
1658 case lir_mul_strictfp: s = "mul_strictfp"; break;
1659 case lir_div: s = "div"; break;
1660 case lir_div_strictfp: s = "div_strictfp"; break;
1661 case lir_rem: s = "rem"; break;
1662 case lir_abs: s = "abs"; break;
1663 case lir_neg: s = "neg"; break;
1664 case lir_sqrt: s = "sqrt"; break;
1665 case lir_logic_and: s = "logic_and"; break;
1666 case lir_logic_or: s = "logic_or"; break;
1667 case lir_logic_xor: s = "logic_xor"; break;
1668 case lir_shl: s = "shift_left"; break;
|