< prev index next >

src/hotspot/cpu/aarch64/aarch64.ad

Print this page

 7107 %}
 7108 
 7109 // Load Klass Pointer
 7110 instruct loadKlass(iRegPNoSp dst, memory8 mem)
 7111 %{
 7112   match(Set dst (LoadKlass mem));
 7113   predicate(!needs_acquiring_load(n));
 7114 
 7115   ins_cost(4 * INSN_COST);
 7116   format %{ "ldr  $dst, $mem\t# class" %}
 7117 
 7118   ins_encode(aarch64_enc_ldr(dst, mem));
 7119 
 7120   ins_pipe(iload_reg_mem);
 7121 %}
 7122 
 7123 // Load Narrow Klass Pointer
 7124 instruct loadNKlass(iRegNNoSp dst, memory4 mem)
 7125 %{
 7126   match(Set dst (LoadNKlass mem));
 7127   predicate(!needs_acquiring_load(n));
 7128 
 7129   ins_cost(4 * INSN_COST);
 7130   format %{ "ldrw  $dst, $mem\t# compressed class ptr" %}
 7131 
 7132   ins_encode(aarch64_enc_ldrw(dst, mem));
 7133 
 7134   ins_pipe(iload_reg_mem);
 7135 %}
 7136 














 7137 // Load Float
 7138 instruct loadF(vRegF dst, memory4 mem)
 7139 %{
 7140   match(Set dst (LoadF mem));
 7141   predicate(!needs_acquiring_load(n));
 7142 
 7143   ins_cost(4 * INSN_COST);
 7144   format %{ "ldrs  $dst, $mem\t# float" %}
 7145 
 7146   ins_encode( aarch64_enc_ldrs(dst, mem) );
 7147 
 7148   ins_pipe(pipe_class_memory);
 7149 %}
 7150 
 7151 // Load Double
 7152 instruct loadD(vRegD dst, memory8 mem)
 7153 %{
 7154   match(Set dst (LoadD mem));
 7155   predicate(!needs_acquiring_load(n));
 7156 

 7107 %}
 7108 
 7109 // Load Klass Pointer
 7110 instruct loadKlass(iRegPNoSp dst, memory8 mem)
 7111 %{
 7112   match(Set dst (LoadKlass mem));
 7113   predicate(!needs_acquiring_load(n));
 7114 
 7115   ins_cost(4 * INSN_COST);
 7116   format %{ "ldr  $dst, $mem\t# class" %}
 7117 
 7118   ins_encode(aarch64_enc_ldr(dst, mem));
 7119 
 7120   ins_pipe(iload_reg_mem);
 7121 %}
 7122 
 7123 // Load Narrow Klass Pointer
 7124 instruct loadNKlass(iRegNNoSp dst, memory4 mem)
 7125 %{
 7126   match(Set dst (LoadNKlass mem));
 7127   predicate(!needs_acquiring_load(n) && !UseCompactObjectHeaders);
 7128 
 7129   ins_cost(4 * INSN_COST);
 7130   format %{ "ldrw  $dst, $mem\t# compressed class ptr" %}
 7131 
 7132   ins_encode(aarch64_enc_ldrw(dst, mem));
 7133 
 7134   ins_pipe(iload_reg_mem);
 7135 %}
 7136 
 7137 instruct loadNKlassCompactHeaders(iRegNNoSp dst, memory4 mem, rFlagsReg cr)
 7138 %{
 7139   match(Set dst (LoadNKlass mem));
 7140   effect(KILL cr);
 7141   predicate(!needs_acquiring_load(n) && UseCompactObjectHeaders);
 7142 
 7143   ins_cost(4 * INSN_COST);
 7144   format %{ "ldrw  $dst, $mem\t# compressed class ptr" %}
 7145   ins_encode %{
 7146     __ load_nklass_compact($dst$$Register, $mem$$base$$Register, $mem$$index$$Register, $mem$$scale, $mem$$disp);
 7147   %}
 7148   ins_pipe(pipe_slow);
 7149 %}
 7150 
 7151 // Load Float
 7152 instruct loadF(vRegF dst, memory4 mem)
 7153 %{
 7154   match(Set dst (LoadF mem));
 7155   predicate(!needs_acquiring_load(n));
 7156 
 7157   ins_cost(4 * INSN_COST);
 7158   format %{ "ldrs  $dst, $mem\t# float" %}
 7159 
 7160   ins_encode( aarch64_enc_ldrs(dst, mem) );
 7161 
 7162   ins_pipe(pipe_class_memory);
 7163 %}
 7164 
 7165 // Load Double
 7166 instruct loadD(vRegD dst, memory8 mem)
 7167 %{
 7168   match(Set dst (LoadD mem));
 7169   predicate(!needs_acquiring_load(n));
 7170 
< prev index next >