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()
|