< prev index next >

src/hotspot/cpu/x86/x86_32.ad

Print this page

13760                  ((Method*)(ra_->C->method()->constant_encoding()))->method_data(),
13761                  true, ra_->C->profile_rtm());
13762   %}
13763   ins_pipe(pipe_slow);
13764 %}
13765 
13766 instruct cmpFastLock(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eRegP scr, eRegP thread) %{
13767   predicate(LockingMode != LM_LIGHTWEIGHT && !Compile::current()->use_rtm());
13768   match(Set cr (FastLock object box));
13769   effect(TEMP tmp, TEMP scr, USE_KILL box, TEMP thread);
13770   ins_cost(300);
13771   format %{ "FASTLOCK $object,$box\t! kills $box,$tmp,$scr" %}
13772   ins_encode %{
13773     __ get_thread($thread$$Register);
13774     __ fast_lock($object$$Register, $box$$Register, $tmp$$Register,
13775                  $scr$$Register, noreg, noreg, $thread$$Register, nullptr, nullptr, nullptr, false, false);
13776   %}
13777   ins_pipe(pipe_slow);
13778 %}
13779 
13780 instruct cmpFastUnlock(eFlagsReg cr, eRegP object, eAXRegP box, eRegP tmp ) %{
13781   predicate(LockingMode != LM_LIGHTWEIGHT);
13782   match(Set cr (FastUnlock object box));
13783   effect(TEMP tmp, USE_KILL box);
13784   ins_cost(300);
13785   format %{ "FASTUNLOCK $object,$box\t! kills $box,$tmp" %}
13786   ins_encode %{
13787     __ fast_unlock($object$$Register, $box$$Register, $tmp$$Register, ra_->C->use_rtm());
13788   %}
13789   ins_pipe(pipe_slow);
13790 %}
13791 
13792 instruct cmpFastLockLightweight(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI eax_reg, eRegP tmp, eRegP thread) %{
13793   predicate(LockingMode == LM_LIGHTWEIGHT);
13794   match(Set cr (FastLock object box));
13795   effect(TEMP eax_reg, TEMP tmp, USE_KILL box, TEMP thread);
13796   ins_cost(300);
13797   format %{ "FASTLOCK $object,$box\t! kills $box,$eax_reg,$tmp" %}
13798   ins_encode %{
13799     __ get_thread($thread$$Register);
13800     __ fast_lock_lightweight($object$$Register, $box$$Register, $eax_reg$$Register, $tmp$$Register, $thread$$Register);
13801   %}
13802   ins_pipe(pipe_slow);
13803 %}
13804 
13805 instruct cmpFastUnlockLightweight(eFlagsReg cr, eRegP object, eAXRegP eax_reg, eRegP tmp, eRegP thread) %{
13806   predicate(LockingMode == LM_LIGHTWEIGHT);
13807   match(Set cr (FastUnlock object eax_reg));
13808   effect(TEMP tmp, USE_KILL eax_reg, TEMP thread);
13809   ins_cost(300);
13810   format %{ "FASTUNLOCK $object,$eax_reg\t! kills $eax_reg,$tmp" %}
13811   ins_encode %{
13812     __ get_thread($thread$$Register);
13813     __ fast_unlock_lightweight($object$$Register, $eax_reg$$Register, $tmp$$Register, $thread$$Register);
13814   %}
13815   ins_pipe(pipe_slow);
13816 %}
13817 
13818 instruct mask_all_evexL_LT32(kReg dst, eRegL src) %{
13819   predicate(Matcher::vector_length(n) <= 32);
13820   match(Set dst (MaskAll src));
13821   format %{ "mask_all_evexL_LE32 $dst, $src \t" %}
13822   ins_encode %{
13823     int mask_len = Matcher::vector_length(this);
13824     __ vector_maskall_operation($dst$$KRegister, $src$$Register, mask_len);
13825   %}
13826   ins_pipe( pipe_slow );
13827 %}
13828 
13829 instruct mask_all_evexL_GT32(kReg dst, eRegL src, kReg ktmp) %{
13830   predicate(Matcher::vector_length(n) > 32);
13831   match(Set dst (MaskAll src));
13832   effect(TEMP ktmp);
13833   format %{ "mask_all_evexL_GT32 $dst, $src \t! using $ktmp as TEMP " %}

13760                  ((Method*)(ra_->C->method()->constant_encoding()))->method_data(),
13761                  true, ra_->C->profile_rtm());
13762   %}
13763   ins_pipe(pipe_slow);
13764 %}
13765 
13766 instruct cmpFastLock(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eRegP scr, eRegP thread) %{
13767   predicate(LockingMode != LM_LIGHTWEIGHT && !Compile::current()->use_rtm());
13768   match(Set cr (FastLock object box));
13769   effect(TEMP tmp, TEMP scr, USE_KILL box, TEMP thread);
13770   ins_cost(300);
13771   format %{ "FASTLOCK $object,$box\t! kills $box,$tmp,$scr" %}
13772   ins_encode %{
13773     __ get_thread($thread$$Register);
13774     __ fast_lock($object$$Register, $box$$Register, $tmp$$Register,
13775                  $scr$$Register, noreg, noreg, $thread$$Register, nullptr, nullptr, nullptr, false, false);
13776   %}
13777   ins_pipe(pipe_slow);
13778 %}
13779 
13780 instruct cmpFastUnlock(eFlagsReg cr, eRegP object, eAXRegP box, eRegP tmp, eRegP scr) %{
13781   predicate(LockingMode != LM_LIGHTWEIGHT);
13782   match(Set cr (FastUnlock object box));
13783   effect(TEMP tmp, TEMP scr, USE_KILL box);
13784   ins_cost(300);
13785   format %{ "FASTUNLOCK $object,$box\t! kills $box,$tmp" %}
13786   ins_encode %{
13787     __ fast_unlock($object$$Register, $box$$Register, $tmp$$Register, $scr$$Register, ra_->C->use_rtm());
13788   %}
13789   ins_pipe(pipe_slow);
13790 %}
13791 
13792 instruct cmpFastLockLightweight(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI eax_reg, eRegP tmp, eRegP thread) %{
13793   predicate(LockingMode == LM_LIGHTWEIGHT);
13794   match(Set cr (FastLock object box));
13795   effect(TEMP eax_reg, TEMP tmp, USE_KILL box, TEMP thread);
13796   ins_cost(300);
13797   format %{ "FASTLOCK $object,$box\t! kills $box,$eax_reg,$tmp" %}
13798   ins_encode %{
13799     __ get_thread($thread$$Register);
13800     __ fast_lock_lightweight($object$$Register, $box$$Register, $eax_reg$$Register, $tmp$$Register, $thread$$Register);
13801   %}
13802   ins_pipe(pipe_slow);
13803 %}
13804 
13805 instruct cmpFastUnlockLightweight(eFlagsReg cr, eRegP object, eAXRegP eax_reg, eRegP tmp, eRegP scr, eRegP thread) %{
13806   predicate(LockingMode == LM_LIGHTWEIGHT);
13807   match(Set cr (FastUnlock object eax_reg));
13808   effect(TEMP tmp, TEMP scr, USE_KILL eax_reg, TEMP thread);
13809   ins_cost(300);
13810   format %{ "FASTUNLOCK $object,$eax_reg\t! kills $eax_reg,$tmp" %}
13811   ins_encode %{
13812     __ get_thread($thread$$Register);
13813     __ fast_unlock_lightweight($object$$Register, $eax_reg$$Register, $tmp$$Register, $scr$$Register, $thread$$Register);
13814   %}
13815   ins_pipe(pipe_slow);
13816 %}
13817 
13818 instruct mask_all_evexL_LT32(kReg dst, eRegL src) %{
13819   predicate(Matcher::vector_length(n) <= 32);
13820   match(Set dst (MaskAll src));
13821   format %{ "mask_all_evexL_LE32 $dst, $src \t" %}
13822   ins_encode %{
13823     int mask_len = Matcher::vector_length(this);
13824     __ vector_maskall_operation($dst$$KRegister, $src$$Register, mask_len);
13825   %}
13826   ins_pipe( pipe_slow );
13827 %}
13828 
13829 instruct mask_all_evexL_GT32(kReg dst, eRegL src, kReg ktmp) %{
13830   predicate(Matcher::vector_length(n) > 32);
13831   match(Set dst (MaskAll src));
13832   effect(TEMP ktmp);
13833   format %{ "mask_all_evexL_GT32 $dst, $src \t! using $ktmp as TEMP " %}
< prev index next >