< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page

13589   // use the following format syntax
13590   format %{ "jmp     rethrow_stub" %}
13591   ins_encode(enc_rethrow);
13592   ins_pipe(pipe_jmp);
13593 %}
13594 
13595 // ============================================================================
13596 // This name is KNOWN by the ADLC and cannot be changed.
13597 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
13598 // for this guy.
13599 instruct tlsLoadP(r15_RegP dst) %{
13600   match(Set dst (ThreadLocal));
13601   effect(DEF dst);
13602 
13603   size(0);
13604   format %{ "# TLS is in R15" %}
13605   ins_encode( /*empty encoding*/ );
13606   ins_pipe(ialu_reg_reg);
13607 %}
13608 


























13609 
13610 //----------PEEPHOLE RULES-----------------------------------------------------
13611 // These must follow all instruction definitions as they use the names
13612 // defined in the instructions definitions.
13613 //
13614 // peeppredicate ( rule_predicate );
13615 // // the predicate unless which the peephole rule will be ignored
13616 //
13617 // peepmatch ( root_instr_name [preceding_instruction]* );
13618 //
13619 // peepprocedure ( procedure_name );
13620 // // provide a procedure name to perform the optimization, the procedure should
13621 // // reside in the architecture dependent peephole file, the method has the
13622 // // signature of MachNode* (Block*, int, PhaseRegAlloc*, (MachNode*)(*)(), int...)
13623 // // with the arguments being the basic block, the current node index inside the
13624 // // block, the register allocator, the functions upon invoked return a new node
13625 // // defined in peepreplace, and the rules of the nodes appearing in the
13626 // // corresponding peepmatch, the function return true if successful, else
13627 // // return false
13628 //

13589   // use the following format syntax
13590   format %{ "jmp     rethrow_stub" %}
13591   ins_encode(enc_rethrow);
13592   ins_pipe(pipe_jmp);
13593 %}
13594 
13595 // ============================================================================
13596 // This name is KNOWN by the ADLC and cannot be changed.
13597 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
13598 // for this guy.
13599 instruct tlsLoadP(r15_RegP dst) %{
13600   match(Set dst (ThreadLocal));
13601   effect(DEF dst);
13602 
13603   size(0);
13604   format %{ "# TLS is in R15" %}
13605   ins_encode( /*empty encoding*/ );
13606   ins_pipe(ialu_reg_reg);
13607 %}
13608 
13609 instruct rdtsc(rax_RegL dst, rdx_RegL tmp) %{
13610   match(Set dst (Timestamp));
13611   effect(DEF dst, KILL tmp);
13612 
13613   format %{ "RDTSC" %}
13614   ins_encode %{
13615     __ rdtsc();
13616     __ shlptr(rdx, 32);
13617     __ orptr(rax, rdx);
13618   %}
13619   ins_pipe(ialu_reg_reg);
13620 %}
13621 
13622 instruct rdtscp(rax_RegL dst, rdx_RegL tmp, rcx_RegL dead) %{
13623   match(Set dst (TimestampSerial));
13624   effect(DEF dst, KILL tmp, KILL dead);
13625 
13626   format %{ "RDTSCP" %}
13627   ins_encode %{
13628     __ rdtscp();
13629     __ shlptr(rdx, 32);
13630     __ orptr(rax, rdx);
13631   %}
13632   ins_pipe(ialu_reg_reg);
13633 %}
13634 
13635 
13636 //----------PEEPHOLE RULES-----------------------------------------------------
13637 // These must follow all instruction definitions as they use the names
13638 // defined in the instructions definitions.
13639 //
13640 // peeppredicate ( rule_predicate );
13641 // // the predicate unless which the peephole rule will be ignored
13642 //
13643 // peepmatch ( root_instr_name [preceding_instruction]* );
13644 //
13645 // peepprocedure ( procedure_name );
13646 // // provide a procedure name to perform the optimization, the procedure should
13647 // // reside in the architecture dependent peephole file, the method has the
13648 // // signature of MachNode* (Block*, int, PhaseRegAlloc*, (MachNode*)(*)(), int...)
13649 // // with the arguments being the basic block, the current node index inside the
13650 // // block, the register allocator, the functions upon invoked return a new node
13651 // // defined in peepreplace, and the rules of the nodes appearing in the
13652 // // corresponding peepmatch, the function return true if successful, else
13653 // // return false
13654 //
< prev index next >