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
|