< prev index next >

src/hotspot/share/c1/c1_LIR.hpp

Print this page
rev 59383 : [mq]: final
   1 /*
   2  * Copyright (c) 2000, 2019, 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  *


 896       , lir_membar_storeload
 897       , lir_get_thread
 898       , lir_on_spin_wait
 899   , end_op0
 900   , begin_op1
 901       , lir_fxch
 902       , lir_fld
 903       , lir_push
 904       , lir_pop
 905       , lir_null_check
 906       , lir_return
 907       , lir_leal
 908       , lir_branch
 909       , lir_cond_float_branch
 910       , lir_move
 911       , lir_convert
 912       , lir_alloc_object
 913       , lir_monaddr
 914       , lir_roundfp
 915       , lir_safepoint
 916       , lir_pack64
 917       , lir_unpack64
 918       , lir_unwind
 919   , end_op1
 920   , begin_op2
 921       , lir_cmp
 922       , lir_cmp_l2i
 923       , lir_ucmp_fd2i
 924       , lir_cmp_fd2i
 925       , lir_cmove
 926       , lir_add
 927       , lir_sub
 928       , lir_mul
 929       , lir_mul_strictfp
 930       , lir_div
 931       , lir_div_strictfp
 932       , lir_rem
 933       , lir_sqrt
 934       , lir_abs
 935       , lir_neg
 936       , lir_tan
 937       , lir_log10


2091       move(src, dst, info);
2092     }
2093   }
2094   void volatile_move(LIR_Opr src, LIR_Opr dst, BasicType type, CodeEmitInfo* info = NULL, LIR_PatchCode patch_code = lir_patch_none) { append(new LIR_Op1(lir_move, src, dst, type, patch_code, info, lir_move_volatile)); }
2095 
2096   void oop2reg  (jobject o, LIR_Opr reg)         { assert(reg->type() == T_OBJECT, "bad reg"); append(new LIR_Op1(lir_move, LIR_OprFact::oopConst(o),    reg));   }
2097   void oop2reg_patch(jobject o, LIR_Opr reg, CodeEmitInfo* info);
2098 
2099   void metadata2reg  (Metadata* o, LIR_Opr reg)  { assert(reg->type() == T_METADATA, "bad reg"); append(new LIR_Op1(lir_move, LIR_OprFact::metadataConst(o), reg));   }
2100   void klass2reg_patch(Metadata* o, LIR_Opr reg, CodeEmitInfo* info);
2101 
2102   void return_op(LIR_Opr result)                 { append(new LIR_Op1(lir_return, result)); }
2103 
2104   void safepoint(LIR_Opr tmp, CodeEmitInfo* info)  { append(new LIR_Op1(lir_safepoint, tmp, info)); }
2105 
2106   void convert(Bytecodes::Code code, LIR_Opr left, LIR_Opr dst, ConversionStub* stub = NULL/*, bool is_32bit = false*/) { append(new LIR_OpConvert(code, left, dst, stub)); }
2107 
2108   void logical_and (LIR_Opr left, LIR_Opr right, LIR_Opr dst) { append(new LIR_Op2(lir_logic_and,  left, right, dst)); }
2109   void logical_or  (LIR_Opr left, LIR_Opr right, LIR_Opr dst) { append(new LIR_Op2(lir_logic_or,   left, right, dst)); }
2110   void logical_xor (LIR_Opr left, LIR_Opr right, LIR_Opr dst) { append(new LIR_Op2(lir_logic_xor,  left, right, dst)); }
2111 
2112   void   pack64(LIR_Opr src, LIR_Opr dst) { append(new LIR_Op1(lir_pack64,   src, dst, T_LONG, lir_patch_none, NULL)); }
2113   void unpack64(LIR_Opr src, LIR_Opr dst) { append(new LIR_Op1(lir_unpack64, src, dst, T_LONG, lir_patch_none, NULL)); }
2114 
2115   void null_check(LIR_Opr opr, CodeEmitInfo* info, bool deoptimize_on_null = false);
2116   void throw_exception(LIR_Opr exceptionPC, LIR_Opr exceptionOop, CodeEmitInfo* info) {
2117     append(new LIR_Op2(lir_throw, exceptionPC, exceptionOop, LIR_OprFact::illegalOpr, info));
2118   }
2119   void unwind_exception(LIR_Opr exceptionOop) {
2120     append(new LIR_Op1(lir_unwind, exceptionOop));
2121   }
2122 
2123   void push(LIR_Opr opr)                                   { append(new LIR_Op1(lir_push, opr)); }
2124   void pop(LIR_Opr reg)                                    { append(new LIR_Op1(lir_pop,  reg)); }
2125 
2126   void cmp(LIR_Condition condition, LIR_Opr left, LIR_Opr right, CodeEmitInfo* info = NULL) {
2127     append(new LIR_Op2(lir_cmp, condition, left, right, info));
2128   }
2129   void cmp(LIR_Condition condition, LIR_Opr left, int right, CodeEmitInfo* info = NULL) {
2130     cmp(condition, left, LIR_OprFact::intConst(right), info);
2131   }
2132 
2133   void cmp_mem_int(LIR_Condition condition, LIR_Opr base, int disp, int c, CodeEmitInfo* info);


   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  *


 896       , lir_membar_storeload
 897       , lir_get_thread
 898       , lir_on_spin_wait
 899   , end_op0
 900   , begin_op1
 901       , lir_fxch
 902       , lir_fld
 903       , lir_push
 904       , lir_pop
 905       , lir_null_check
 906       , lir_return
 907       , lir_leal
 908       , lir_branch
 909       , lir_cond_float_branch
 910       , lir_move
 911       , lir_convert
 912       , lir_alloc_object
 913       , lir_monaddr
 914       , lir_roundfp
 915       , lir_safepoint


 916       , lir_unwind
 917   , end_op1
 918   , begin_op2
 919       , lir_cmp
 920       , lir_cmp_l2i
 921       , lir_ucmp_fd2i
 922       , lir_cmp_fd2i
 923       , lir_cmove
 924       , lir_add
 925       , lir_sub
 926       , lir_mul
 927       , lir_mul_strictfp
 928       , lir_div
 929       , lir_div_strictfp
 930       , lir_rem
 931       , lir_sqrt
 932       , lir_abs
 933       , lir_neg
 934       , lir_tan
 935       , lir_log10


2089       move(src, dst, info);
2090     }
2091   }
2092   void volatile_move(LIR_Opr src, LIR_Opr dst, BasicType type, CodeEmitInfo* info = NULL, LIR_PatchCode patch_code = lir_patch_none) { append(new LIR_Op1(lir_move, src, dst, type, patch_code, info, lir_move_volatile)); }
2093 
2094   void oop2reg  (jobject o, LIR_Opr reg)         { assert(reg->type() == T_OBJECT, "bad reg"); append(new LIR_Op1(lir_move, LIR_OprFact::oopConst(o),    reg));   }
2095   void oop2reg_patch(jobject o, LIR_Opr reg, CodeEmitInfo* info);
2096 
2097   void metadata2reg  (Metadata* o, LIR_Opr reg)  { assert(reg->type() == T_METADATA, "bad reg"); append(new LIR_Op1(lir_move, LIR_OprFact::metadataConst(o), reg));   }
2098   void klass2reg_patch(Metadata* o, LIR_Opr reg, CodeEmitInfo* info);
2099 
2100   void return_op(LIR_Opr result)                 { append(new LIR_Op1(lir_return, result)); }
2101 
2102   void safepoint(LIR_Opr tmp, CodeEmitInfo* info)  { append(new LIR_Op1(lir_safepoint, tmp, info)); }
2103 
2104   void convert(Bytecodes::Code code, LIR_Opr left, LIR_Opr dst, ConversionStub* stub = NULL/*, bool is_32bit = false*/) { append(new LIR_OpConvert(code, left, dst, stub)); }
2105 
2106   void logical_and (LIR_Opr left, LIR_Opr right, LIR_Opr dst) { append(new LIR_Op2(lir_logic_and,  left, right, dst)); }
2107   void logical_or  (LIR_Opr left, LIR_Opr right, LIR_Opr dst) { append(new LIR_Op2(lir_logic_or,   left, right, dst)); }
2108   void logical_xor (LIR_Opr left, LIR_Opr right, LIR_Opr dst) { append(new LIR_Op2(lir_logic_xor,  left, right, dst)); }



2109 
2110   void null_check(LIR_Opr opr, CodeEmitInfo* info, bool deoptimize_on_null = false);
2111   void throw_exception(LIR_Opr exceptionPC, LIR_Opr exceptionOop, CodeEmitInfo* info) {
2112     append(new LIR_Op2(lir_throw, exceptionPC, exceptionOop, LIR_OprFact::illegalOpr, info));
2113   }
2114   void unwind_exception(LIR_Opr exceptionOop) {
2115     append(new LIR_Op1(lir_unwind, exceptionOop));
2116   }
2117 
2118   void push(LIR_Opr opr)                                   { append(new LIR_Op1(lir_push, opr)); }
2119   void pop(LIR_Opr reg)                                    { append(new LIR_Op1(lir_pop,  reg)); }
2120 
2121   void cmp(LIR_Condition condition, LIR_Opr left, LIR_Opr right, CodeEmitInfo* info = NULL) {
2122     append(new LIR_Op2(lir_cmp, condition, left, right, info));
2123   }
2124   void cmp(LIR_Condition condition, LIR_Opr left, int right, CodeEmitInfo* info = NULL) {
2125     cmp(condition, left, LIR_OprFact::intConst(right), info);
2126   }
2127 
2128   void cmp_mem_int(LIR_Condition condition, LIR_Opr base, int disp, int c, CodeEmitInfo* info);


< prev index next >