< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page

13553   // use the following format syntax
13554   format %{ "jmp     rethrow_stub" %}
13555   ins_encode(enc_rethrow);
13556   ins_pipe(pipe_jmp);
13557 %}
13558 
13559 // ============================================================================
13560 // This name is KNOWN by the ADLC and cannot be changed.
13561 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
13562 // for this guy.
13563 instruct tlsLoadP(r15_RegP dst) %{
13564   match(Set dst (ThreadLocal));
13565   effect(DEF dst);
13566 
13567   size(0);
13568   format %{ "# TLS is in R15" %}
13569   ins_encode( /*empty encoding*/ );
13570   ins_pipe(ialu_reg_reg);
13571 %}
13572 


























13573 
13574 //----------PEEPHOLE RULES-----------------------------------------------------
13575 // These must follow all instruction definitions as they use the names
13576 // defined in the instructions definitions.
13577 //
13578 // peeppredicate ( rule_predicate );
13579 // // the predicate unless which the peephole rule will be ignored
13580 //
13581 // peepmatch ( root_instr_name [preceding_instruction]* );
13582 //
13583 // peepprocedure ( procedure_name );
13584 // // provide a procedure name to perform the optimization, the procedure should
13585 // // reside in the architecture dependent peephole file, the method has the
13586 // // signature of MachNode* (Block*, int, PhaseRegAlloc*, (MachNode*)(*)(), int...)
13587 // // with the arguments being the basic block, the current node index inside the
13588 // // block, the register allocator, the functions upon invoked return a new node
13589 // // defined in peepreplace, and the rules of the nodes appearing in the
13590 // // corresponding peepmatch, the function return true if successful, else
13591 // // return false
13592 //

13553   // use the following format syntax
13554   format %{ "jmp     rethrow_stub" %}
13555   ins_encode(enc_rethrow);
13556   ins_pipe(pipe_jmp);
13557 %}
13558 
13559 // ============================================================================
13560 // This name is KNOWN by the ADLC and cannot be changed.
13561 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
13562 // for this guy.
13563 instruct tlsLoadP(r15_RegP dst) %{
13564   match(Set dst (ThreadLocal));
13565   effect(DEF dst);
13566 
13567   size(0);
13568   format %{ "# TLS is in R15" %}
13569   ins_encode( /*empty encoding*/ );
13570   ins_pipe(ialu_reg_reg);
13571 %}
13572 
13573 instruct rdtsc(rax_RegL dst, rdx_RegL tmp) %{
13574   match(Set dst (Timestamp));
13575   effect(DEF dst, KILL tmp);
13576 
13577   format %{ "RDTSC" %}
13578   ins_encode %{
13579     __ rdtsc();
13580     __ shlptr(rdx, 32);
13581     __ orptr(rax, rdx);
13582   %}
13583   ins_pipe(ialu_reg_reg);
13584 %}
13585 
13586 instruct rdtscp(rax_RegL dst, rdx_RegL tmp, rcx_RegL dead) %{
13587   match(Set dst (TimestampSerial));
13588   effect(DEF dst, KILL tmp, KILL dead);
13589 
13590   format %{ "RDTSCP" %}
13591   ins_encode %{
13592     __ rdtscp();
13593     __ shlptr(rdx, 32);
13594     __ orptr(rax, rdx);
13595   %}
13596   ins_pipe(ialu_reg_reg);
13597 %}
13598 
13599 
13600 //----------PEEPHOLE RULES-----------------------------------------------------
13601 // These must follow all instruction definitions as they use the names
13602 // defined in the instructions definitions.
13603 //
13604 // peeppredicate ( rule_predicate );
13605 // // the predicate unless which the peephole rule will be ignored
13606 //
13607 // peepmatch ( root_instr_name [preceding_instruction]* );
13608 //
13609 // peepprocedure ( procedure_name );
13610 // // provide a procedure name to perform the optimization, the procedure should
13611 // // reside in the architecture dependent peephole file, the method has the
13612 // // signature of MachNode* (Block*, int, PhaseRegAlloc*, (MachNode*)(*)(), int...)
13613 // // with the arguments being the basic block, the current node index inside the
13614 // // block, the register allocator, the functions upon invoked return a new node
13615 // // defined in peepreplace, and the rules of the nodes appearing in the
13616 // // corresponding peepmatch, the function return true if successful, else
13617 // // return false
13618 //
< prev index next >