src/hotspot/cpu/arm/arm.ad
changeset 51996 84743156e780
parent 51756 4bd35a5ec694
child 52351 0ecb4e520110
equal deleted inserted replaced
51995:f7babf9d1592 51996:84743156e780
  5314 %}
  5314 %}
  5315 
  5315 
  5316 // Prefetch instructions.
  5316 // Prefetch instructions.
  5317 // Must be safe to execute with invalid address (cannot fault).
  5317 // Must be safe to execute with invalid address (cannot fault).
  5318 
  5318 
  5319 instruct prefetchAlloc_mp( memoryP mem ) %{
  5319 instruct prefetchAlloc( memoryP mem ) %{
  5320   predicate(os::is_MP());
       
  5321   match( PrefetchAllocation mem );
  5320   match( PrefetchAllocation mem );
  5322   ins_cost(MEMORY_REF_COST);
  5321   ins_cost(MEMORY_REF_COST);
  5323   size(4);
  5322   size(4);
  5324 
  5323 
  5325   format %{ "PLDW $mem\t! Prefetch allocation" %}
  5324   format %{ "PLDW $mem\t! Prefetch allocation" %}
  5326   ins_encode %{
  5325   ins_encode %{
  5327 #ifdef AARCH64
  5326 #ifdef AARCH64
  5328     __ prfm(pstl1keep, $mem$$Address);
  5327     __ prfm(pstl1keep, $mem$$Address);
  5329 #else
  5328 #else
  5330     __ pldw($mem$$Address);
  5329     __ pldw($mem$$Address);
  5331 #endif
       
  5332   %}
       
  5333   ins_pipe(iload_mem);
       
  5334 %}
       
  5335 
       
  5336 instruct prefetchAlloc_sp( memoryP mem ) %{
       
  5337   predicate(!os::is_MP());
       
  5338   match( PrefetchAllocation mem );
       
  5339   ins_cost(MEMORY_REF_COST);
       
  5340   size(4);
       
  5341 
       
  5342   format %{ "PLD $mem\t! Prefetch allocation" %}
       
  5343   ins_encode %{
       
  5344 #ifdef AARCH64
       
  5345     __ prfm(pstl1keep, $mem$$Address);
       
  5346 #else
       
  5347     __ pld($mem$$Address);
       
  5348 #endif
  5330 #endif
  5349   %}
  5331   %}
  5350   ins_pipe(iload_mem);
  5332   ins_pipe(iload_mem);
  5351 %}
  5333 %}
  5352 
  5334