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
|