< prev index next >

src/hotspot/cpu/aarch64/aarch64.ad

Print this page

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














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

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