< 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     __ load_nklass_compact($dst$$Register, $mem$$base$$Register, $mem$$index$$Register, $mem$$scale, $mem$$disp);
 7343   %}
 7344   ins_pipe(pipe_slow);
 7345 %}
 7346 
 7347 // Load Float
 7348 instruct loadF(vRegF dst, memory4 mem)
 7349 %{
 7350   match(Set dst (LoadF mem));
 7351   predicate(!needs_acquiring_load(n));
 7352 
 7353   ins_cost(4 * INSN_COST);
 7354   format %{ "ldrs  $dst, $mem\t# float" %}
 7355 
 7356   ins_encode( aarch64_enc_ldrs(dst, mem) );
 7357 
 7358   ins_pipe(pipe_class_memory);
 7359 %}
 7360 
 7361 // Load Double
 7362 instruct loadD(vRegD dst, memory8 mem)
 7363 %{
 7364   match(Set dst (LoadD mem));
 7365   predicate(!needs_acquiring_load(n));
 7366 
< prev index next >