5353 // Load Compressed Pointer 5354 instruct loadN(rRegN dst, memory mem) 5355 %{ 5356 match(Set dst (LoadN mem)); 5357 5358 ins_cost(125); // XXX 5359 format %{ "movl $dst, $mem\t# compressed ptr" %} 5360 ins_encode %{ 5361 __ movl($dst$$Register, $mem$$Address); 5362 %} 5363 ins_pipe(ialu_reg_mem); // XXX 5364 %} 5365 5366 5367 // Load Klass Pointer 5368 instruct loadKlass(rRegP dst, memory mem) 5369 %{ 5370 match(Set dst (LoadKlass mem)); 5371 5372 ins_cost(125); // XXX 5373 format %{ "movq $dst, $mem\t# class" %} 5374 opcode(0x8B); 5375 ins_encode(REX_reg_mem_wide(dst, mem), OpcP, reg_mem(dst, mem)); 5376 ins_pipe(ialu_reg_mem); // XXX 5377 %} 5378 5379 // Load narrow Klass Pointer 5380 instruct loadNKlass(rRegN dst, memory mem) 5381 %{ 5382 match(Set dst (LoadNKlass mem)); 5383 5384 ins_cost(125); // XXX 5385 format %{ "movl $dst, $mem\t# compressed klass ptr" %} 5386 ins_encode %{ 5387 __ movl($dst$$Register, $mem$$Address); 5388 %} 5389 ins_pipe(ialu_reg_mem); // XXX 5390 %} 5391 5392 // Load Float 5393 instruct loadF(regF dst, memory mem) 5394 %{ 5395 match(Set dst (LoadF mem)); 5396 5397 ins_cost(145); // XXX 5398 format %{ "movss $dst, $mem\t# float" %} 5399 ins_encode %{ 5400 __ movflt($dst$$XMMRegister, $mem$$Address); 5401 %} 5402 ins_pipe(pipe_slow); // XXX 5403 %} 5404 5405 // Load Float 5406 instruct MoveF2VL(vlRegF dst, regF src) %{ 5407 match(Set dst src); | 5353 // Load Compressed Pointer 5354 instruct loadN(rRegN dst, memory mem) 5355 %{ 5356 match(Set dst (LoadN mem)); 5357 5358 ins_cost(125); // XXX 5359 format %{ "movl $dst, $mem\t# compressed ptr" %} 5360 ins_encode %{ 5361 __ movl($dst$$Register, $mem$$Address); 5362 %} 5363 ins_pipe(ialu_reg_mem); // XXX 5364 %} 5365 5366 5367 // Load Klass Pointer 5368 instruct loadKlass(rRegP dst, memory mem) 5369 %{ 5370 match(Set dst (LoadKlass mem)); 5371 5372 ins_cost(125); // XXX 5373 format %{ "movq $dst, $mem\t# class\n\t" 5374 "shlq $dst, oopDesc::storage_props_nof_bits\n\t" 5375 "shrq $dst, oopDesc::storage_props_nof_bits" %} 5376 ins_encode %{ 5377 __ movptr($dst$$Register, $mem$$Address); 5378 __ shlq($dst$$Register, oopDesc::storage_props_nof_bits); 5379 __ shrq($dst$$Register, oopDesc::storage_props_nof_bits); 5380 %} 5381 ins_pipe(ialu_reg_mem); // XXX 5382 %} 5383 5384 // Load narrow Klass Pointer 5385 instruct loadNKlass(rRegN dst, memory mem) 5386 %{ 5387 match(Set dst (LoadNKlass mem)); 5388 5389 ins_cost(125); // XXX 5390 format %{ "movl $dst, $mem\t# compressed klass ptr\n\t" 5391 "andl $dst, oopDesc::compressed_klass_mask()" %} 5392 ins_encode %{ 5393 __ movl($dst$$Register, $mem$$Address); 5394 __ andl($dst$$Register, oopDesc::compressed_klass_mask()); 5395 %} 5396 ins_pipe(ialu_reg_mem); // XXX 5397 %} 5398 5399 // Load Float 5400 instruct loadF(regF dst, memory mem) 5401 %{ 5402 match(Set dst (LoadF mem)); 5403 5404 ins_cost(145); // XXX 5405 format %{ "movss $dst, $mem\t# float" %} 5406 ins_encode %{ 5407 __ movflt($dst$$XMMRegister, $mem$$Address); 5408 %} 5409 ins_pipe(pipe_slow); // XXX 5410 %} 5411 5412 // Load Float 5413 instruct MoveF2VL(vlRegF dst, regF src) %{ 5414 match(Set dst src); |