< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page

13634   // use the following format syntax
13635   format %{ "jmp     rethrow_stub" %}
13636   ins_encode(enc_rethrow);
13637   ins_pipe(pipe_jmp);
13638 %}
13639 
13640 // ============================================================================
13641 // This name is KNOWN by the ADLC and cannot be changed.
13642 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
13643 // for this guy.
13644 instruct tlsLoadP(r15_RegP dst) %{
13645   match(Set dst (ThreadLocal));
13646   effect(DEF dst);
13647 
13648   size(0);
13649   format %{ "# TLS is in R15" %}
13650   ins_encode( /*empty encoding*/ );
13651   ins_pipe(ialu_reg_reg);
13652 %}
13653 


























13654 
13655 //----------PEEPHOLE RULES-----------------------------------------------------
13656 // These must follow all instruction definitions as they use the names
13657 // defined in the instructions definitions.
13658 //
13659 // peeppredicate ( rule_predicate );
13660 // // the predicate unless which the peephole rule will be ignored
13661 //
13662 // peepmatch ( root_instr_name [preceding_instruction]* );
13663 //
13664 // peepprocedure ( procedure_name );
13665 // // provide a procedure name to perform the optimization, the procedure should
13666 // // reside in the architecture dependent peephole file, the method has the
13667 // // signature of MachNode* (Block*, int, PhaseRegAlloc*, (MachNode*)(*)(), int...)
13668 // // with the arguments being the basic block, the current node index inside the
13669 // // block, the register allocator, the functions upon invoked return a new node
13670 // // defined in peepreplace, and the rules of the nodes appearing in the
13671 // // corresponding peepmatch, the function return true if successful, else
13672 // // return false
13673 //

13634   // use the following format syntax
13635   format %{ "jmp     rethrow_stub" %}
13636   ins_encode(enc_rethrow);
13637   ins_pipe(pipe_jmp);
13638 %}
13639 
13640 // ============================================================================
13641 // This name is KNOWN by the ADLC and cannot be changed.
13642 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
13643 // for this guy.
13644 instruct tlsLoadP(r15_RegP dst) %{
13645   match(Set dst (ThreadLocal));
13646   effect(DEF dst);
13647 
13648   size(0);
13649   format %{ "# TLS is in R15" %}
13650   ins_encode( /*empty encoding*/ );
13651   ins_pipe(ialu_reg_reg);
13652 %}
13653 
13654 instruct rdtsc(rax_RegL dst, rdx_RegL tmp) %{
13655   match(Set dst (Timestamp));
13656   effect(DEF dst, KILL tmp);
13657 
13658   format %{ "RDTSC" %}
13659   ins_encode %{
13660     __ rdtsc();
13661     __ shlptr(rdx, 32);
13662     __ orptr(rax, rdx);
13663   %}
13664   ins_pipe(ialu_reg_reg);
13665 %}
13666 
13667 instruct rdtscp(rax_RegL dst, rdx_RegL tmp, rcx_RegL dead) %{
13668   match(Set dst (TimestampSerial));
13669   effect(DEF dst, KILL tmp, KILL dead);
13670 
13671   format %{ "RDTSCP" %}
13672   ins_encode %{
13673     __ rdtscp();
13674     __ shlptr(rdx, 32);
13675     __ orptr(rax, rdx);
13676   %}
13677   ins_pipe(ialu_reg_reg);
13678 %}
13679 
13680 
13681 //----------PEEPHOLE RULES-----------------------------------------------------
13682 // These must follow all instruction definitions as they use the names
13683 // defined in the instructions definitions.
13684 //
13685 // peeppredicate ( rule_predicate );
13686 // // the predicate unless which the peephole rule will be ignored
13687 //
13688 // peepmatch ( root_instr_name [preceding_instruction]* );
13689 //
13690 // peepprocedure ( procedure_name );
13691 // // provide a procedure name to perform the optimization, the procedure should
13692 // // reside in the architecture dependent peephole file, the method has the
13693 // // signature of MachNode* (Block*, int, PhaseRegAlloc*, (MachNode*)(*)(), int...)
13694 // // with the arguments being the basic block, the current node index inside the
13695 // // block, the register allocator, the functions upon invoked return a new node
13696 // // defined in peepreplace, and the rules of the nodes appearing in the
13697 // // corresponding peepmatch, the function return true if successful, else
13698 // // return false
13699 //
< prev index next >