src/cpu/x86/vm/x86_64.ad

Print this page




6319   match(StoreFence);
6320   ins_cost(0);
6321 
6322   size(0);
6323   format %{ "MEMBAR-release ! (empty encoding)" %}
6324   ins_encode();
6325   ins_pipe(empty);
6326 %}
6327 
6328 instruct membar_release_lock()
6329 %{
6330   match(MemBarReleaseLock);
6331   ins_cost(0);
6332 
6333   size(0);
6334   format %{ "MEMBAR-release (a FastUnlock follows so empty encoding)" %}
6335   ins_encode();
6336   ins_pipe(empty);
6337 %}
6338 



















6339 instruct membar_volatile(rFlagsReg cr) %{
6340   match(MemBarVolatile);
6341   effect(KILL cr);
6342   ins_cost(400);
6343 
6344   format %{
6345     $$template
6346     if (os::is_MP()) {
6347       $$emit$$"lock addl [rsp + #0], 0\t! membar_volatile"
6348     } else {
6349       $$emit$$"MEMBAR-volatile ! (empty encoding)"
6350     }
6351   %}
6352   ins_encode %{
6353     __ membar(Assembler::StoreLoad);
6354   %}
6355   ins_pipe(pipe_slow);
6356 %}
6357 
6358 instruct unnecessary_membar_volatile()




6319   match(StoreFence);
6320   ins_cost(0);
6321 
6322   size(0);
6323   format %{ "MEMBAR-release ! (empty encoding)" %}
6324   ins_encode();
6325   ins_pipe(empty);
6326 %}
6327 
6328 instruct membar_release_lock()
6329 %{
6330   match(MemBarReleaseLock);
6331   ins_cost(0);
6332 
6333   size(0);
6334   format %{ "MEMBAR-release (a FastUnlock follows so empty encoding)" %}
6335   ins_encode();
6336   ins_pipe(empty);
6337 %}
6338 
6339 instruct onspinwait()
6340 %{
6341   match(OnSpinWait);
6342   ins_cost(200);
6343 
6344   format %{
6345     $$template
6346     if (os::is_MP()) {
6347       $$emit$$"pause\t! membar_onspinwait"
6348     } else {
6349       $$emit$$"MEMBAR-onspinwait ! (empty encoding)"
6350     }
6351   %}
6352   ins_encode %{
6353     __ pause();
6354   %}
6355   ins_pipe(pipe_slow);
6356 %}
6357 
6358 instruct membar_volatile(rFlagsReg cr) %{
6359   match(MemBarVolatile);
6360   effect(KILL cr);
6361   ins_cost(400);
6362 
6363   format %{
6364     $$template
6365     if (os::is_MP()) {
6366       $$emit$$"lock addl [rsp + #0], 0\t! membar_volatile"
6367     } else {
6368       $$emit$$"MEMBAR-volatile ! (empty encoding)"
6369     }
6370   %}
6371   ins_encode %{
6372     __ membar(Assembler::StoreLoad);
6373   %}
6374   ins_pipe(pipe_slow);
6375 %}
6376 
6377 instruct unnecessary_membar_volatile()