< prev index next >

src/hotspot/cpu/aarch64/aarch64.ad

Print this page

 7303 %}
 7304 
 7305 // Load Klass Pointer
 7306 instruct loadKlass(iRegPNoSp dst, memory8 mem)
 7307 %{
 7308   match(Set dst (LoadKlass mem));
 7309   predicate(!needs_acquiring_load(n));
 7310 
 7311   ins_cost(4 * INSN_COST);
 7312   format %{ "ldr  $dst, $mem\t# class" %}
 7313 
 7314   ins_encode(aarch64_enc_ldr(dst, mem));
 7315 
 7316   ins_pipe(iload_reg_mem);
 7317 %}
 7318 
 7319 // Load Narrow Klass Pointer
 7320 instruct loadNKlass(iRegNNoSp dst, memory4 mem)
 7321 %{
 7322   match(Set dst (LoadNKlass mem));
 7323   predicate(!needs_acquiring_load(n));
 7324 
 7325   ins_cost(4 * INSN_COST);
 7326   format %{ "ldrw  $dst, $mem\t# compressed class ptr" %}
 7327 
 7328   ins_encode(aarch64_enc_ldrw(dst, mem));
 7329 
 7330   ins_pipe(iload_reg_mem);
 7331 %}
 7332 
















 7333 // Load Float
 7334 instruct loadF(vRegF dst, memory4 mem)
 7335 %{
 7336   match(Set dst (LoadF mem));
 7337   predicate(!needs_acquiring_load(n));
 7338 
 7339   ins_cost(4 * INSN_COST);
 7340   format %{ "ldrs  $dst, $mem\t# float" %}
 7341 
 7342   ins_encode( aarch64_enc_ldrs(dst, mem) );
 7343 
 7344   ins_pipe(pipe_class_memory);
 7345 %}
 7346 
 7347 // Load Double
 7348 instruct loadD(vRegD dst, memory8 mem)
 7349 %{
 7350   match(Set dst (LoadD mem));
 7351   predicate(!needs_acquiring_load(n));
 7352 

 7303 %}
 7304 
 7305 // Load Klass Pointer
 7306 instruct loadKlass(iRegPNoSp dst, memory8 mem)
 7307 %{
 7308   match(Set dst (LoadKlass mem));
 7309   predicate(!needs_acquiring_load(n));
 7310 
 7311   ins_cost(4 * INSN_COST);
 7312   format %{ "ldr  $dst, $mem\t# class" %}
 7313 
 7314   ins_encode(aarch64_enc_ldr(dst, mem));
 7315 
 7316   ins_pipe(iload_reg_mem);
 7317 %}
 7318 
 7319 // Load Narrow Klass Pointer
 7320 instruct loadNKlass(iRegNNoSp dst, memory4 mem)
 7321 %{
 7322   match(Set dst (LoadNKlass mem));
 7323   predicate(!needs_acquiring_load(n) && !UseCompactObjectHeaders);
 7324 
 7325   ins_cost(4 * INSN_COST);
 7326   format %{ "ldrw  $dst, $mem\t# compressed class ptr" %}
 7327 
 7328   ins_encode(aarch64_enc_ldrw(dst, mem));
 7329 
 7330   ins_pipe(iload_reg_mem);
 7331 %}
 7332 
 7333 instruct loadNKlassCompactHeaders(iRegNNoSp dst, memory4 mem, rFlagsReg cr)
 7334 %{
 7335   match(Set dst (LoadNKlass mem));
 7336   effect(KILL cr);
 7337   predicate(!needs_acquiring_load(n) && UseCompactObjectHeaders);
 7338 
 7339   ins_cost(4 * INSN_COST);
 7340   format %{ "ldrw  $dst, $mem\t# compressed class ptr" %}
 7341   ins_encode %{
 7342     assert($mem$$disp == oopDesc::klass_offset_in_bytes(), "expect correct offset");
 7343     assert($mem$$index$$Register == noreg, "expect no index");
 7344     __ load_nklass_compact($dst$$Register, $mem$$base$$Register);
 7345   %}
 7346   ins_pipe(pipe_slow);
 7347 %}
 7348 
 7349 // Load Float
 7350 instruct loadF(vRegF dst, memory4 mem)
 7351 %{
 7352   match(Set dst (LoadF mem));
 7353   predicate(!needs_acquiring_load(n));
 7354 
 7355   ins_cost(4 * INSN_COST);
 7356   format %{ "ldrs  $dst, $mem\t# float" %}
 7357 
 7358   ins_encode( aarch64_enc_ldrs(dst, mem) );
 7359 
 7360   ins_pipe(pipe_class_memory);
 7361 %}
 7362 
 7363 // Load Double
 7364 instruct loadD(vRegD dst, memory8 mem)
 7365 %{
 7366   match(Set dst (LoadD mem));
 7367   predicate(!needs_acquiring_load(n));
 7368 
< prev index next >