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