6220 ins_cost(95); // XXX 6221 format %{ "movss $dst, $src\t# float stk" %} 6222 ins_encode %{ 6223 __ movflt(Address(rsp, $dst$$disp), $src$$XMMRegister); 6224 %} 6225 ins_pipe(pipe_slow); // XXX 6226 %} 6227 6228 instruct storeSSD(stackSlotD dst, regD src) 6229 %{ 6230 match(Set dst src); 6231 6232 ins_cost(95); // XXX 6233 format %{ "movsd $dst, $src\t# double stk" %} 6234 ins_encode %{ 6235 __ movdbl(Address(rsp, $dst$$disp), $src$$XMMRegister); 6236 %} 6237 ins_pipe(pipe_slow); // XXX 6238 %} 6239 6240 //----------BSWAP Instructions------------------------------------------------- 6241 instruct bytes_reverse_int(rRegI dst) %{ 6242 match(Set dst (ReverseBytesI dst)); 6243 6244 format %{ "bswapl $dst" %} 6245 opcode(0x0F, 0xC8); /*Opcode 0F /C8 */ 6246 ins_encode( REX_reg(dst), OpcP, opc2_reg(dst) ); 6247 ins_pipe( ialu_reg ); 6248 %} 6249 6250 instruct bytes_reverse_long(rRegL dst) %{ 6251 match(Set dst (ReverseBytesL dst)); 6252 6253 format %{ "bswapq $dst" %} 6254 opcode(0x0F, 0xC8); /* Opcode 0F /C8 */ 6255 ins_encode( REX_reg_wide(dst), OpcP, opc2_reg(dst) ); 6256 ins_pipe( ialu_reg); 6257 %} 6258 6259 instruct bytes_reverse_unsigned_short(rRegI dst, rFlagsReg cr) %{ | 6220 ins_cost(95); // XXX 6221 format %{ "movss $dst, $src\t# float stk" %} 6222 ins_encode %{ 6223 __ movflt(Address(rsp, $dst$$disp), $src$$XMMRegister); 6224 %} 6225 ins_pipe(pipe_slow); // XXX 6226 %} 6227 6228 instruct storeSSD(stackSlotD dst, regD src) 6229 %{ 6230 match(Set dst src); 6231 6232 ins_cost(95); // XXX 6233 format %{ "movsd $dst, $src\t# double stk" %} 6234 ins_encode %{ 6235 __ movdbl(Address(rsp, $dst$$disp), $src$$XMMRegister); 6236 %} 6237 ins_pipe(pipe_slow); // XXX 6238 %} 6239 6240 instruct cacheWB(indirect addr) 6241 %{ 6242 match(CacheWB addr); 6243 6244 ins_cost(100); 6245 format %{"cache wb $addr" %} 6246 ins_encode %{ 6247 assert($addr->index_position() < 0, "should be"); 6248 assert($addr$$disp == 0, "should be"); 6249 __ cache_wb(Address($addr$$base$$Register, 0)); 6250 %} 6251 ins_pipe(pipe_slow); // XXX 6252 %} 6253 6254 instruct cacheWBPreSync() 6255 %{ 6256 match(CacheWBPreSync); 6257 6258 ins_cost(100); 6259 format %{"cache wb presync" %} 6260 ins_encode %{ 6261 __ cache_wbsync(true); 6262 %} 6263 ins_pipe(pipe_slow); // XXX 6264 %} 6265 6266 instruct cacheWBPostSync() 6267 %{ 6268 match(CacheWBPostSync); 6269 6270 ins_cost(100); 6271 format %{"cache wb postsync" %} 6272 ins_encode %{ 6273 __ cache_wbsync(false); 6274 %} 6275 ins_pipe(pipe_slow); // XXX 6276 %} 6277 6278 //----------BSWAP Instructions------------------------------------------------- 6279 instruct bytes_reverse_int(rRegI dst) %{ 6280 match(Set dst (ReverseBytesI dst)); 6281 6282 format %{ "bswapl $dst" %} 6283 opcode(0x0F, 0xC8); /*Opcode 0F /C8 */ 6284 ins_encode( REX_reg(dst), OpcP, opc2_reg(dst) ); 6285 ins_pipe( ialu_reg ); 6286 %} 6287 6288 instruct bytes_reverse_long(rRegL dst) %{ 6289 match(Set dst (ReverseBytesL dst)); 6290 6291 format %{ "bswapq $dst" %} 6292 opcode(0x0F, 0xC8); /* Opcode 0F /C8 */ 6293 ins_encode( REX_reg_wide(dst), OpcP, opc2_reg(dst) ); 6294 ins_pipe( ialu_reg); 6295 %} 6296 6297 instruct bytes_reverse_unsigned_short(rRegI dst, rFlagsReg cr) %{ |