< prev index next >

src/hotspot/cpu/x86/x86_32.ad

Print this page

13783   ins_encode();
13784   ins_pipe( empty );
13785 %}
13786 
13787 
13788 // Rethrow exception:
13789 // The exception oop will come in the first argument position.
13790 // Then JUMP (not call) to the rethrow stub code.
13791 instruct RethrowException()
13792 %{
13793   match(Rethrow);
13794 
13795   // use the following format syntax
13796   format %{ "JMP    rethrow_stub" %}
13797   ins_encode(enc_rethrow);
13798   ins_pipe( pipe_jmp );
13799 %}
13800 
13801 // inlined locking and unlocking
13802 
13803 instruct cmpFastLockRTM(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eDXRegI scr, rRegI cx1, rRegI cx2) %{
13804   predicate(Compile::current()->use_rtm());
13805   match(Set cr (FastLock object box));
13806   effect(TEMP tmp, TEMP scr, TEMP cx1, TEMP cx2, USE_KILL box);
13807   ins_cost(300);
13808   format %{ "FASTLOCK $object,$box\t! kills $box,$tmp,$scr,$cx1,$cx2" %}
13809   ins_encode %{

13810     __ fast_lock($object$$Register, $box$$Register, $tmp$$Register,
13811                  $scr$$Register, $cx1$$Register, $cx2$$Register,
13812                  _rtm_counters, _stack_rtm_counters,
13813                  ((Method*)(ra_->C->method()->constant_encoding()))->method_data(),
13814                  true, ra_->C->profile_rtm());
13815   %}
13816   ins_pipe(pipe_slow);
13817 %}
13818 
13819 instruct cmpFastLock(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eRegP scr) %{
13820   predicate(!Compile::current()->use_rtm());
13821   match(Set cr (FastLock object box));
13822   effect(TEMP tmp, TEMP scr, USE_KILL box);
13823   ins_cost(300);
13824   format %{ "FASTLOCK $object,$box\t! kills $box,$tmp,$scr" %}
13825   ins_encode %{

13826     __ fast_lock($object$$Register, $box$$Register, $tmp$$Register,
13827                  $scr$$Register, noreg, noreg, NULL, NULL, NULL, false, false);
13828   %}
13829   ins_pipe(pipe_slow);
13830 %}
13831 
13832 instruct cmpFastUnlock(eFlagsReg cr, eRegP object, eAXRegP box, eRegP tmp ) %{
13833   match(Set cr (FastUnlock object box));
13834   effect(TEMP tmp, USE_KILL box);
13835   ins_cost(300);
13836   format %{ "FASTUNLOCK $object,$box\t! kills $box,$tmp" %}
13837   ins_encode %{
13838     __ fast_unlock($object$$Register, $box$$Register, $tmp$$Register, ra_->C->use_rtm());
13839   %}
13840   ins_pipe(pipe_slow);
13841 %}
13842 
13843 instruct mask_all_evexL_LT32(kReg dst, eRegL src) %{
13844   predicate(Matcher::vector_length(n) <= 32);
13845   match(Set dst (MaskAll src));
13846   format %{ "mask_all_evexL_LE32 $dst, $src \t" %}
13847   ins_encode %{
13848     int mask_len = Matcher::vector_length(this);
13849     __ vector_maskall_operation($dst$$KRegister, $src$$Register, mask_len);
13850   %}
13851   ins_pipe( pipe_slow );
13852 %}
13853 
13854 instruct mask_all_evexL_GT32(kReg dst, eRegL src, kReg ktmp) %{

13783   ins_encode();
13784   ins_pipe( empty );
13785 %}
13786 
13787 
13788 // Rethrow exception:
13789 // The exception oop will come in the first argument position.
13790 // Then JUMP (not call) to the rethrow stub code.
13791 instruct RethrowException()
13792 %{
13793   match(Rethrow);
13794 
13795   // use the following format syntax
13796   format %{ "JMP    rethrow_stub" %}
13797   ins_encode(enc_rethrow);
13798   ins_pipe( pipe_jmp );
13799 %}
13800 
13801 // inlined locking and unlocking
13802 
13803 instruct cmpFastLockRTM(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eDXRegI scr, rRegI cx1, rRegI cx2, eRegP thread) %{
13804   predicate(Compile::current()->use_rtm());
13805   match(Set cr (FastLock object));
13806   effect(TEMP tmp, TEMP scr, TEMP cx1, TEMP cx2, TEMP box, TEMP thread);
13807   ins_cost(300);
13808   format %{ "FASTLOCK $object,$box\t! kills $box,$tmp,$scr,$cx1,$cx2" %}
13809   ins_encode %{
13810     __ get_thread($thread$$Register);
13811     __ fast_lock($object$$Register, $box$$Register, $tmp$$Register,
13812                  $scr$$Register, $cx1$$Register, $cx2$$Register, $thread$$Register,
13813                  _rtm_counters, _stack_rtm_counters,
13814                  ((Method*)(ra_->C->method()->constant_encoding()))->method_data(),
13815                  true, ra_->C->profile_rtm());
13816   %}
13817   ins_pipe(pipe_slow);
13818 %}
13819 
13820 instruct cmpFastLock(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eRegP scr, rRegI cx1, eRegP thread) %{
13821   predicate(!Compile::current()->use_rtm());
13822   match(Set cr (FastLock object));
13823   effect(TEMP tmp, TEMP scr, TEMP box, TEMP cx1, TEMP thread);
13824   ins_cost(300);
13825   format %{ "FASTLOCK $object,$box\t! kills $box,$tmp,$scr" %}
13826   ins_encode %{
13827     __ get_thread($thread$$Register);
13828     __ fast_lock($object$$Register, $box$$Register, $tmp$$Register,
13829                  $scr$$Register, $cx1$$Register, noreg, $thread$$Register, NULL, NULL, NULL, false, false);
13830   %}
13831   ins_pipe(pipe_slow);
13832 %}
13833 
13834 instruct cmpFastUnlock(eFlagsReg cr, eRegP object, eAXRegP box, eRegP tmp ) %{
13835   match(Set cr (FastUnlock object));
13836   effect(TEMP tmp, TEMP box);
13837   ins_cost(300);
13838   format %{ "FASTUNLOCK $object,$box\t! kills $box,$tmp" %}
13839   ins_encode %{
13840     __ fast_unlock($object$$Register, $box$$Register, $tmp$$Register, ra_->C->use_rtm());
13841   %}
13842   ins_pipe(pipe_slow);
13843 %}
13844 
13845 instruct mask_all_evexL_LT32(kReg dst, eRegL src) %{
13846   predicate(Matcher::vector_length(n) <= 32);
13847   match(Set dst (MaskAll src));
13848   format %{ "mask_all_evexL_LE32 $dst, $src \t" %}
13849   ins_encode %{
13850     int mask_len = Matcher::vector_length(this);
13851     __ vector_maskall_operation($dst$$KRegister, $src$$Register, mask_len);
13852   %}
13853   ins_pipe( pipe_slow );
13854 %}
13855 
13856 instruct mask_all_evexL_GT32(kReg dst, eRegL src, kReg ktmp) %{
< prev index next >