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