< prev index next >

src/hotspot/cpu/x86/x86_32.ad

Print this page

13610   ins_encode(enc_rethrow);
13611   ins_pipe( pipe_jmp );
13612 %}
13613 
13614 // inlined locking and unlocking
13615 
13616 instruct cmpFastLock(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eRegP scr, eRegP thread) %{
13617   predicate(LockingMode != LM_LIGHTWEIGHT);
13618   match(Set cr (FastLock object box));
13619   effect(TEMP tmp, TEMP scr, USE_KILL box, TEMP thread);
13620   ins_cost(300);
13621   format %{ "FASTLOCK $object,$box\t! kills $box,$tmp,$scr" %}
13622   ins_encode %{
13623     __ get_thread($thread$$Register);
13624     __ fast_lock($object$$Register, $box$$Register, $tmp$$Register,
13625                  $scr$$Register, noreg, noreg, $thread$$Register, nullptr);
13626   %}
13627   ins_pipe(pipe_slow);
13628 %}
13629 
13630 instruct cmpFastUnlock(eFlagsReg cr, eRegP object, eAXRegP box, eRegP tmp ) %{
13631   predicate(LockingMode != LM_LIGHTWEIGHT);
13632   match(Set cr (FastUnlock object box));
13633   effect(TEMP tmp, USE_KILL box);
13634   ins_cost(300);
13635   format %{ "FASTUNLOCK $object,$box\t! kills $box,$tmp" %}
13636   ins_encode %{
13637     __ fast_unlock($object$$Register, $box$$Register, $tmp$$Register);
13638   %}
13639   ins_pipe(pipe_slow);
13640 %}
13641 
13642 instruct cmpFastLockLightweight(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI eax_reg, eRegP tmp, eRegP thread) %{
13643   predicate(LockingMode == LM_LIGHTWEIGHT);
13644   match(Set cr (FastLock object box));
13645   effect(TEMP eax_reg, TEMP tmp, USE_KILL box, TEMP thread);
13646   ins_cost(300);
13647   format %{ "FASTLOCK $object,$box\t! kills $box,$eax_reg,$tmp" %}
13648   ins_encode %{
13649     __ get_thread($thread$$Register);
13650     __ fast_lock_lightweight($object$$Register, $box$$Register, $eax_reg$$Register, $tmp$$Register, $thread$$Register);
13651   %}
13652   ins_pipe(pipe_slow);
13653 %}
13654 
13655 instruct cmpFastUnlockLightweight(eFlagsReg cr, eRegP object, eAXRegP eax_reg, eRegP tmp, eRegP thread) %{
13656   predicate(LockingMode == LM_LIGHTWEIGHT);
13657   match(Set cr (FastUnlock object eax_reg));
13658   effect(TEMP tmp, USE_KILL eax_reg, TEMP thread);
13659   ins_cost(300);
13660   format %{ "FASTUNLOCK $object,$eax_reg\t! kills $eax_reg,$tmp" %}
13661   ins_encode %{
13662     __ get_thread($thread$$Register);
13663     __ fast_unlock_lightweight($object$$Register, $eax_reg$$Register, $tmp$$Register, $thread$$Register);
13664   %}
13665   ins_pipe(pipe_slow);
13666 %}
13667 
13668 instruct mask_all_evexL_LT32(kReg dst, eRegL src) %{
13669   predicate(Matcher::vector_length(n) <= 32);
13670   match(Set dst (MaskAll src));
13671   format %{ "mask_all_evexL_LE32 $dst, $src \t" %}
13672   ins_encode %{
13673     int mask_len = Matcher::vector_length(this);
13674     __ vector_maskall_operation($dst$$KRegister, $src$$Register, mask_len);
13675   %}
13676   ins_pipe( pipe_slow );
13677 %}
13678 
13679 instruct mask_all_evexL_GT32(kReg dst, eRegL src, kReg ktmp) %{
13680   predicate(Matcher::vector_length(n) > 32);
13681   match(Set dst (MaskAll src));
13682   effect(TEMP ktmp);
13683   format %{ "mask_all_evexL_GT32 $dst, $src \t! using $ktmp as TEMP " %}

13610   ins_encode(enc_rethrow);
13611   ins_pipe( pipe_jmp );
13612 %}
13613 
13614 // inlined locking and unlocking
13615 
13616 instruct cmpFastLock(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eRegP scr, eRegP thread) %{
13617   predicate(LockingMode != LM_LIGHTWEIGHT);
13618   match(Set cr (FastLock object box));
13619   effect(TEMP tmp, TEMP scr, USE_KILL box, TEMP thread);
13620   ins_cost(300);
13621   format %{ "FASTLOCK $object,$box\t! kills $box,$tmp,$scr" %}
13622   ins_encode %{
13623     __ get_thread($thread$$Register);
13624     __ fast_lock($object$$Register, $box$$Register, $tmp$$Register,
13625                  $scr$$Register, noreg, noreg, $thread$$Register, nullptr);
13626   %}
13627   ins_pipe(pipe_slow);
13628 %}
13629 
13630 instruct cmpFastUnlock(eFlagsReg cr, eRegP object, eAXRegP box, eRegP tmp, eRegP scr) %{
13631   predicate(LockingMode != LM_LIGHTWEIGHT);
13632   match(Set cr (FastUnlock object box));
13633   effect(TEMP tmp, TEMP scr, USE_KILL box);
13634   ins_cost(300);
13635   format %{ "FASTUNLOCK $object,$box\t! kills $box,$tmp" %}
13636   ins_encode %{
13637     __ fast_unlock($object$$Register, $box$$Register, $tmp$$Register, $scr$$Register);
13638   %}
13639   ins_pipe(pipe_slow);
13640 %}
13641 
13642 instruct cmpFastLockLightweight(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI eax_reg, eRegP tmp, eRegP thread) %{
13643   predicate(LockingMode == LM_LIGHTWEIGHT);
13644   match(Set cr (FastLock object box));
13645   effect(TEMP eax_reg, TEMP tmp, USE_KILL box, TEMP thread);
13646   ins_cost(300);
13647   format %{ "FASTLOCK $object,$box\t! kills $box,$eax_reg,$tmp" %}
13648   ins_encode %{
13649     __ get_thread($thread$$Register);
13650     __ fast_lock_lightweight($object$$Register, $box$$Register, $eax_reg$$Register, $tmp$$Register, $thread$$Register);
13651   %}
13652   ins_pipe(pipe_slow);
13653 %}
13654 
13655 instruct cmpFastUnlockLightweight(eFlagsReg cr, eRegP object, eAXRegP eax_reg, eRegP tmp, eRegP scr, eRegP thread) %{
13656   predicate(LockingMode == LM_LIGHTWEIGHT);
13657   match(Set cr (FastUnlock object eax_reg));
13658   effect(TEMP tmp, TEMP scr, USE_KILL eax_reg, TEMP thread);
13659   ins_cost(300);
13660   format %{ "FASTUNLOCK $object,$eax_reg\t! kills $eax_reg,$tmp" %}
13661   ins_encode %{
13662     __ get_thread($thread$$Register);
13663     __ fast_unlock_lightweight($object$$Register, $eax_reg$$Register, $tmp$$Register, $scr$$Register, $thread$$Register);
13664   %}
13665   ins_pipe(pipe_slow);
13666 %}
13667 
13668 instruct mask_all_evexL_LT32(kReg dst, eRegL src) %{
13669   predicate(Matcher::vector_length(n) <= 32);
13670   match(Set dst (MaskAll src));
13671   format %{ "mask_all_evexL_LE32 $dst, $src \t" %}
13672   ins_encode %{
13673     int mask_len = Matcher::vector_length(this);
13674     __ vector_maskall_operation($dst$$KRegister, $src$$Register, mask_len);
13675   %}
13676   ins_pipe( pipe_slow );
13677 %}
13678 
13679 instruct mask_all_evexL_GT32(kReg dst, eRegL src, kReg ktmp) %{
13680   predicate(Matcher::vector_length(n) > 32);
13681   match(Set dst (MaskAll src));
13682   effect(TEMP ktmp);
13683   format %{ "mask_all_evexL_GT32 $dst, $src \t! using $ktmp as TEMP " %}
< prev index next >