< prev index next >

src/cpu/ppc/vm/ppc.ad

Print this page
rev 8631 : 8130654: ppc: implement MultiplyToLen intrinsic
Contributed-by: Peter.Januschke@sap.com


10913 instruct partialSubtypeCheck(iRegPdst result, iRegP_N2P subklass, iRegP_N2P superklass,
10914                              iRegPdst tmp_klass, iRegPdst tmp_arrayptr) %{
10915   match(Set result (PartialSubtypeCheck subklass superklass));
10916   effect(TEMP_DEF result, TEMP tmp_klass, TEMP tmp_arrayptr);
10917   ins_cost(DEFAULT_COST*10);
10918 
10919   format %{ "PartialSubtypeCheck $result = ($subklass instanceOf $superklass) tmp: $tmp_klass, $tmp_arrayptr" %}
10920   ins_encode %{
10921     // TODO: PPC port $archOpcode(ppc64Opcode_compound);
10922     __ check_klass_subtype_slow_path($subklass$$Register, $superklass$$Register, $tmp_arrayptr$$Register,
10923                                      $tmp_klass$$Register, NULL, $result$$Register);
10924   %}
10925   ins_pipe(pipe_class_default);
10926 %}
10927 
10928 // inlined locking and unlocking
10929 
10930 instruct cmpFastLock(flagsReg crx, iRegPdst oop, iRegPdst box, iRegPdst tmp1, iRegPdst tmp2, iRegPdst tmp3) %{
10931   match(Set crx (FastLock oop box));
10932   effect(TEMP tmp1, TEMP tmp2, TEMP tmp3);
10933   predicate(/*(!UseNewFastLockPPC64 || UseBiasedLocking) &&*/ !Compile::current()->use_rtm());
10934 
10935   format %{ "FASTLOCK  $oop, $box, $tmp1, $tmp2, $tmp3" %}
10936   ins_encode %{
10937     // TODO: PPC port $archOpcode(ppc64Opcode_compound);
10938     __ compiler_fast_lock_object($crx$$CondRegister, $oop$$Register, $box$$Register,
10939                                  $tmp3$$Register, $tmp1$$Register, $tmp2$$Register,
10940                                  UseBiasedLocking && !UseOptoBiasInlining); // SAPJVM MD 2014-11-06 UseOptoBiasInlining
10941     // If locking was successfull, crx should indicate 'EQ'.
10942     // The compiler generates a branch to the runtime call to
10943     // _complete_monitor_locking_Java for the case where crx is 'NE'.
10944   %}
10945   ins_pipe(pipe_class_compare);
10946 %}
10947 
10948 // Separate version for TM. Use bound register for box to enable USE_KILL.
10949 instruct cmpFastLock_tm(flagsReg crx, iRegPdst oop, rarg2RegP box, iRegPdst tmp1, iRegPdst tmp2, iRegPdst tmp3) %{
10950   match(Set crx (FastLock oop box));
10951   effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, USE_KILL box);
10952   predicate(Compile::current()->use_rtm());
10953 




10913 instruct partialSubtypeCheck(iRegPdst result, iRegP_N2P subklass, iRegP_N2P superklass,
10914                              iRegPdst tmp_klass, iRegPdst tmp_arrayptr) %{
10915   match(Set result (PartialSubtypeCheck subklass superklass));
10916   effect(TEMP_DEF result, TEMP tmp_klass, TEMP tmp_arrayptr);
10917   ins_cost(DEFAULT_COST*10);
10918 
10919   format %{ "PartialSubtypeCheck $result = ($subklass instanceOf $superklass) tmp: $tmp_klass, $tmp_arrayptr" %}
10920   ins_encode %{
10921     // TODO: PPC port $archOpcode(ppc64Opcode_compound);
10922     __ check_klass_subtype_slow_path($subklass$$Register, $superklass$$Register, $tmp_arrayptr$$Register,
10923                                      $tmp_klass$$Register, NULL, $result$$Register);
10924   %}
10925   ins_pipe(pipe_class_default);
10926 %}
10927 
10928 // inlined locking and unlocking
10929 
10930 instruct cmpFastLock(flagsReg crx, iRegPdst oop, iRegPdst box, iRegPdst tmp1, iRegPdst tmp2, iRegPdst tmp3) %{
10931   match(Set crx (FastLock oop box));
10932   effect(TEMP tmp1, TEMP tmp2, TEMP tmp3);
10933   predicate(!Compile::current()->use_rtm());
10934 
10935   format %{ "FASTLOCK  $oop, $box, $tmp1, $tmp2, $tmp3" %}
10936   ins_encode %{
10937     // TODO: PPC port $archOpcode(ppc64Opcode_compound);
10938     __ compiler_fast_lock_object($crx$$CondRegister, $oop$$Register, $box$$Register,
10939                                  $tmp3$$Register, $tmp1$$Register, $tmp2$$Register,
10940                                  UseBiasedLocking && !UseOptoBiasInlining); // SAPJVM MD 2014-11-06 UseOptoBiasInlining
10941     // If locking was successfull, crx should indicate 'EQ'.
10942     // The compiler generates a branch to the runtime call to
10943     // _complete_monitor_locking_Java for the case where crx is 'NE'.
10944   %}
10945   ins_pipe(pipe_class_compare);
10946 %}
10947 
10948 // Separate version for TM. Use bound register for box to enable USE_KILL.
10949 instruct cmpFastLock_tm(flagsReg crx, iRegPdst oop, rarg2RegP box, iRegPdst tmp1, iRegPdst tmp2, iRegPdst tmp3) %{
10950   match(Set crx (FastLock oop box));
10951   effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, USE_KILL box);
10952   predicate(Compile::current()->use_rtm());
10953 


< prev index next >