< prev index next >

src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp

Print this page

   1 /*
   2  * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved.
   3  * Copyright (c) 2012, 2025 SAP SE. All rights reserved.
   4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   5  *
   6  * This code is free software; you can redistribute it and/or modify it
   7  * under the terms of the GNU General Public License version 2 only, as
   8  * published by the Free Software Foundation.
   9  *
  10  * This code is distributed in the hope that it will be useful, but WITHOUT
  11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13  * version 2 for more details (a copy is included in the LICENSE file that
  14  * accompanied this code).
  15  *
  16  * You should have received a copy of the GNU General Public License version
  17  * 2 along with this work; if not, write to the Free Software Foundation,
  18  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  19  *
  20  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  21  * or visit www.oracle.com if you need additional information or have any
  22  * questions.

3109                ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
3110 
3111         // Already unknown. Nothing to do anymore.
3112         __ andi_(R0, tmp, TypeEntries::type_unknown);
3113         __ bne(CR0, Lnext);
3114 
3115         // Different than before. Cannot keep accurate profile.
3116         __ ori(R0, tmp, TypeEntries::type_unknown);
3117       }
3118     }
3119 
3120     __ bind(Ldo_update);
3121     __ std(R0, index_or_disp(mdo_addr), mdo_addr->base()->as_pointer_register());
3122 
3123     __ bind(Lnext);
3124     if (klass_reg_used) { __ load_const_optimized(R29_TOC, MacroAssembler::global_toc(), R0); } // reinit
3125   }
3126   __ bind(Ldone);
3127 }
3128 



3129 
3130 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3131   assert(op->crc()->is_single_cpu(), "crc must be register");
3132   assert(op->val()->is_single_cpu(), "byte value must be register");
3133   assert(op->result_opr()->is_single_cpu(), "result must be register");
3134   Register crc = op->crc()->as_register();
3135   Register val = op->val()->as_register();
3136   Register res = op->result_opr()->as_register();
3137 
3138   assert_different_registers(val, crc, res);
3139 
3140   __ load_const_optimized(res, StubRoutines::crc_table_addr(), R0);
3141   __ kernel_crc32_singleByteReg(crc, val, res, true);
3142   __ mr(res, crc);
3143 }
3144 






















3145 #undef __

   1 /*
   2  * Copyright (c) 2000, 2026, Oracle and/or its affiliates. All rights reserved.
   3  * Copyright (c) 2012, 2025 SAP SE. All rights reserved.
   4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   5  *
   6  * This code is free software; you can redistribute it and/or modify it
   7  * under the terms of the GNU General Public License version 2 only, as
   8  * published by the Free Software Foundation.
   9  *
  10  * This code is distributed in the hope that it will be useful, but WITHOUT
  11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13  * version 2 for more details (a copy is included in the LICENSE file that
  14  * accompanied this code).
  15  *
  16  * You should have received a copy of the GNU General Public License version
  17  * 2 along with this work; if not, write to the Free Software Foundation,
  18  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  19  *
  20  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  21  * or visit www.oracle.com if you need additional information or have any
  22  * questions.

3109                ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
3110 
3111         // Already unknown. Nothing to do anymore.
3112         __ andi_(R0, tmp, TypeEntries::type_unknown);
3113         __ bne(CR0, Lnext);
3114 
3115         // Different than before. Cannot keep accurate profile.
3116         __ ori(R0, tmp, TypeEntries::type_unknown);
3117       }
3118     }
3119 
3120     __ bind(Ldo_update);
3121     __ std(R0, index_or_disp(mdo_addr), mdo_addr->base()->as_pointer_register());
3122 
3123     __ bind(Lnext);
3124     if (klass_reg_used) { __ load_const_optimized(R29_TOC, MacroAssembler::global_toc(), R0); } // reinit
3125   }
3126   __ bind(Ldone);
3127 }
3128 
3129 void LIR_Assembler::emit_profile_inline_type(LIR_OpProfileInlineType* op) {
3130   Unimplemented();
3131 }
3132 
3133 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3134   assert(op->crc()->is_single_cpu(), "crc must be register");
3135   assert(op->val()->is_single_cpu(), "byte value must be register");
3136   assert(op->result_opr()->is_single_cpu(), "result must be register");
3137   Register crc = op->crc()->as_register();
3138   Register val = op->val()->as_register();
3139   Register res = op->result_opr()->as_register();
3140 
3141   assert_different_registers(val, crc, res);
3142 
3143   __ load_const_optimized(res, StubRoutines::crc_table_addr(), R0);
3144   __ kernel_crc32_singleByteReg(crc, val, res, true);
3145   __ mr(res, crc);
3146 }
3147 
3148 // Valhalla support
3149 
3150 void LIR_Assembler::check_orig_pc() {
3151   Unimplemented();
3152 }
3153 
3154 int LIR_Assembler::store_inline_type_fields_to_buf(ciInlineKlass* vk) {
3155   Unimplemented();
3156   return 0;
3157 }
3158 
3159 void LIR_Assembler::emit_opFlattenedArrayCheck(LIR_OpFlattenedArrayCheck* op) {
3160   Unimplemented();
3161 }
3162 
3163 void LIR_Assembler::emit_opNullFreeArrayCheck(LIR_OpNullFreeArrayCheck* op) {
3164   Unimplemented();
3165 }
3166 
3167 void LIR_Assembler::emit_opSubstitutabilityCheck(LIR_OpSubstitutabilityCheck* op) {
3168   Unimplemented();
3169 }
3170 #undef __
< prev index next >