< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page

13797   match(Rethrow);
13798 
13799   // use the following format syntax
13800   format %{ "jmp     rethrow_stub" %}
13801   ins_encode(enc_rethrow);
13802   ins_pipe(pipe_jmp);
13803 %}
13804 
13805 // ============================================================================
13806 // This name is KNOWN by the ADLC and cannot be changed.
13807 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
13808 // for this guy.
13809 instruct tlsLoadP(r15_RegP dst) %{
13810   match(Set dst (ThreadLocal));
13811   effect(DEF dst);
13812 
13813   size(0);
13814   format %{ "# TLS is in R15" %}
13815   ins_encode( /*empty encoding*/ );
13816   ins_pipe(ialu_reg_reg);


























13817 %}
13818 
13819 
13820 //----------PEEPHOLE RULES-----------------------------------------------------
13821 // These must follow all instruction definitions as they use the names
13822 // defined in the instructions definitions.
13823 //
13824 // peepmatch ( root_instr_name [preceding_instruction]* );
13825 //
13826 // peepconstraint %{
13827 // (instruction_number.operand_name relational_op instruction_number.operand_name
13828 //  [, ...] );
13829 // // instruction numbers are zero-based using left to right order in peepmatch
13830 //
13831 // peepreplace ( instr_name  ( [instruction_number.operand_name]* ) );
13832 // // provide an instruction_number.operand_name for each operand that appears
13833 // // in the replacement instruction's match rule
13834 //
13835 // ---------VM FLAGS---------------------------------------------------------
13836 //

13797   match(Rethrow);
13798 
13799   // use the following format syntax
13800   format %{ "jmp     rethrow_stub" %}
13801   ins_encode(enc_rethrow);
13802   ins_pipe(pipe_jmp);
13803 %}
13804 
13805 // ============================================================================
13806 // This name is KNOWN by the ADLC and cannot be changed.
13807 // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
13808 // for this guy.
13809 instruct tlsLoadP(r15_RegP dst) %{
13810   match(Set dst (ThreadLocal));
13811   effect(DEF dst);
13812 
13813   size(0);
13814   format %{ "# TLS is in R15" %}
13815   ins_encode( /*empty encoding*/ );
13816   ins_pipe(ialu_reg_reg);
13817 %}
13818 
13819 instruct rdtsc(rax_RegL dst, rdx_RegL tmp) %{
13820   match(Set dst (Timestamp));
13821   effect(DEF dst, KILL tmp);
13822 
13823   format %{ "RDTSC" %}
13824   ins_encode %{
13825     __ rdtsc();
13826     __ shlptr(rdx, 32);
13827     __ orptr(rax, rdx);
13828   %}
13829   ins_pipe(ialu_reg_reg);
13830 %}
13831 
13832 instruct rdtscp(rax_RegL dst, rdx_RegL tmp, rcx_RegL dead) %{
13833   match(Set dst (TimestampSerial));
13834   effect(DEF dst, KILL tmp, KILL dead);
13835 
13836   format %{ "RDTSCP" %}
13837   ins_encode %{
13838     __ rdtscp();
13839     __ shlptr(rdx, 32);
13840     __ orptr(rax, rdx);
13841   %}
13842   ins_pipe(ialu_reg_reg);
13843 %}
13844 
13845 
13846 //----------PEEPHOLE RULES-----------------------------------------------------
13847 // These must follow all instruction definitions as they use the names
13848 // defined in the instructions definitions.
13849 //
13850 // peepmatch ( root_instr_name [preceding_instruction]* );
13851 //
13852 // peepconstraint %{
13853 // (instruction_number.operand_name relational_op instruction_number.operand_name
13854 //  [, ...] );
13855 // // instruction numbers are zero-based using left to right order in peepmatch
13856 //
13857 // peepreplace ( instr_name  ( [instruction_number.operand_name]* ) );
13858 // // provide an instruction_number.operand_name for each operand that appears
13859 // // in the replacement instruction's match rule
13860 //
13861 // ---------VM FLAGS---------------------------------------------------------
13862 //
< prev index next >