< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page

12625   ins_encode %{
12626     __ jump(RuntimeAddress(OptoRuntime::rethrow_stub()), noreg);
12627   %}
12628   ins_pipe(pipe_jmp);
12629 %}
12630 
12631 // ============================================================================
12632 // This name is KNOWN by the ADLC and cannot be changed.
12633 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
12634 // for this guy.
12635 instruct tlsLoadP(r15_RegP dst) %{
12636   match(Set dst (ThreadLocal));
12637   effect(DEF dst);
12638 
12639   size(0);
12640   format %{ "# TLS is in R15" %}
12641   ins_encode( /*empty encoding*/ );
12642   ins_pipe(ialu_reg_reg);
12643 %}
12644 


























12645 
12646 //----------PEEPHOLE RULES-----------------------------------------------------
12647 // These must follow all instruction definitions as they use the names
12648 // defined in the instructions definitions.
12649 //
12650 // peeppredicate ( rule_predicate );
12651 // // the predicate unless which the peephole rule will be ignored
12652 //
12653 // peepmatch ( root_instr_name [preceding_instruction]* );
12654 //
12655 // peepprocedure ( procedure_name );
12656 // // provide a procedure name to perform the optimization, the procedure should
12657 // // reside in the architecture dependent peephole file, the method has the
12658 // // signature of MachNode* (Block*, int, PhaseRegAlloc*, (MachNode*)(*)(), int...)
12659 // // with the arguments being the basic block, the current node index inside the
12660 // // block, the register allocator, the functions upon invoked return a new node
12661 // // defined in peepreplace, and the rules of the nodes appearing in the
12662 // // corresponding peepmatch, the function return true if successful, else
12663 // // return false
12664 //

12625   ins_encode %{
12626     __ jump(RuntimeAddress(OptoRuntime::rethrow_stub()), noreg);
12627   %}
12628   ins_pipe(pipe_jmp);
12629 %}
12630 
12631 // ============================================================================
12632 // This name is KNOWN by the ADLC and cannot be changed.
12633 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
12634 // for this guy.
12635 instruct tlsLoadP(r15_RegP dst) %{
12636   match(Set dst (ThreadLocal));
12637   effect(DEF dst);
12638 
12639   size(0);
12640   format %{ "# TLS is in R15" %}
12641   ins_encode( /*empty encoding*/ );
12642   ins_pipe(ialu_reg_reg);
12643 %}
12644 
12645 instruct rdtsc(rax_RegL dst, rdx_RegL tmp) %{
12646   match(Set dst (Timestamp));
12647   effect(DEF dst, KILL tmp);
12648 
12649   format %{ "RDTSC" %}
12650   ins_encode %{
12651     __ rdtsc();
12652     __ shlptr(rdx, 32);
12653     __ orptr(rax, rdx);
12654   %}
12655   ins_pipe(ialu_reg_reg);
12656 %}
12657 
12658 instruct rdtscp(rax_RegL dst, rdx_RegL tmp, rcx_RegL dead) %{
12659   match(Set dst (TimestampSerial));
12660   effect(DEF dst, KILL tmp, KILL dead);
12661 
12662   format %{ "RDTSCP" %}
12663   ins_encode %{
12664     __ rdtscp();
12665     __ shlptr(rdx, 32);
12666     __ orptr(rax, rdx);
12667   %}
12668   ins_pipe(ialu_reg_reg);
12669 %}
12670 
12671 
12672 //----------PEEPHOLE RULES-----------------------------------------------------
12673 // These must follow all instruction definitions as they use the names
12674 // defined in the instructions definitions.
12675 //
12676 // peeppredicate ( rule_predicate );
12677 // // the predicate unless which the peephole rule will be ignored
12678 //
12679 // peepmatch ( root_instr_name [preceding_instruction]* );
12680 //
12681 // peepprocedure ( procedure_name );
12682 // // provide a procedure name to perform the optimization, the procedure should
12683 // // reside in the architecture dependent peephole file, the method has the
12684 // // signature of MachNode* (Block*, int, PhaseRegAlloc*, (MachNode*)(*)(), int...)
12685 // // with the arguments being the basic block, the current node index inside the
12686 // // block, the register allocator, the functions upon invoked return a new node
12687 // // defined in peepreplace, and the rules of the nodes appearing in the
12688 // // corresponding peepmatch, the function return true if successful, else
12689 // // return false
12690 //
< prev index next >