< prev index next >

src/hotspot/cpu/aarch64/aarch64.ad

Print this page
*** 7614,21 ***
  
    ins_pipe(iload_reg_mem);
  %}
  
  // Load Narrow Klass Pointer
! instruct loadNKlass(iRegNNoSp dst, memory4 mem)
  %{
    match(Set dst (LoadNKlass mem));
    predicate(!needs_acquiring_load(n));
  
    ins_cost(4 * INSN_COST);
    format %{ "ldrw  $dst, $mem\t# compressed class ptr" %}
! 
!   ins_encode(aarch64_enc_ldrw(dst, mem));
! 
!   ins_pipe(iload_reg_mem);
  %}
  
  // Load Float
  instruct loadF(vRegF dst, memory4 mem)
  %{
--- 7614,24 ---
  
    ins_pipe(iload_reg_mem);
  %}
  
  // Load Narrow Klass Pointer
! instruct loadNKlass(iRegNNoSp dst, memory4 mem, rFlagsReg cr)
  %{
    match(Set dst (LoadNKlass mem));
+   effect(TEMP_DEF dst, KILL cr);
    predicate(!needs_acquiring_load(n));
  
    ins_cost(4 * INSN_COST);
    format %{ "ldrw  $dst, $mem\t# compressed class ptr" %}
!   ins_encode %{
!     assert($mem$$disp == oopDesc::klass_offset_in_bytes(), "expect correct offset");
!     assert($mem$$index$$Register == noreg, "expect no index");
!     __ load_nklass($dst$$Register, $mem$$base$$Register);
+   %}
+   ins_pipe(pipe_slow);
  %}
  
  // Load Float
  instruct loadF(vRegF dst, memory4 mem)
  %{
< prev index next >