< prev index next >

src/hotspot/share/c1/c1_LIR.cpp

Print this page
rev 59383 : [mq]: final
   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;


< prev index next >