< prev index next >

src/hotspot/cpu/arm/arm.ad

Print this page
rev 52777 : 8214512: ARM32: Jtreg test compiler/c2/Test8062950.java fails on ARM
Summary: fix assertion failures with -XX:-OptoBiasInlining
Reviewed-by: duke
Contributed-by: nick.gasson@arm.com


8928   ins_cost(DEFAULT_COST*10);
8929   format %{ "CALL   PartialSubtypeCheck" %}
8930   ins_encode %{
8931     __ call(StubRoutines::Arm::partial_subtype_check(), relocInfo::runtime_call_type);
8932   %}
8933   ins_pipe(partial_subtype_check_pipe);
8934 %}
8935 
8936 /* instruct partialSubtypeCheck_vs_zero( flagsRegP pcc, o1RegP sub, o2RegP super, immP0 zero, o0RegP idx, o7RegP o7 ) %{ */
8937 /*   match(Set pcc (CmpP (PartialSubtypeCheck sub super) zero)); */
8938 /*   ins_pipe(partial_subtype_check_pipe); */
8939 /* %} */
8940 
8941 
8942 // ============================================================================
8943 // inlined locking and unlocking
8944 
8945 instruct cmpFastLock(flagsRegP pcc, iRegP object, iRegP box, iRegP scratch2, iRegP scratch )
8946 %{
8947   match(Set pcc (FastLock object box));

8948 
8949   effect(TEMP scratch, TEMP scratch2);
8950   ins_cost(100);
8951 
8952   format %{ "FASTLOCK  $object, $box; KILL $scratch, $scratch2" %}
8953   ins_encode %{
8954     __ fast_lock($object$$Register, $box$$Register, $scratch$$Register, $scratch2$$Register);















8955   %}
8956   ins_pipe(long_memory_op);
8957 %}
8958 
8959 
8960 instruct cmpFastUnlock(flagsRegP pcc, iRegP object, iRegP box, iRegP scratch2, iRegP scratch ) %{
8961   match(Set pcc (FastUnlock object box));
8962   effect(TEMP scratch, TEMP scratch2);
8963   ins_cost(100);
8964 
8965   format %{ "FASTUNLOCK  $object, $box; KILL $scratch, $scratch2" %}
8966   ins_encode %{
8967     __ fast_unlock($object$$Register, $box$$Register, $scratch$$Register, $scratch2$$Register);
8968   %}
8969   ins_pipe(long_memory_op);
8970 %}
8971 
8972 // Count and Base registers are fixed because the allocator cannot
8973 // kill unknown registers.  The encodings are generic.
8974 instruct clear_array(iRegX cnt, iRegP base, iRegI temp, iRegX zero, Universe dummy, flagsReg cpsr) %{




8928   ins_cost(DEFAULT_COST*10);
8929   format %{ "CALL   PartialSubtypeCheck" %}
8930   ins_encode %{
8931     __ call(StubRoutines::Arm::partial_subtype_check(), relocInfo::runtime_call_type);
8932   %}
8933   ins_pipe(partial_subtype_check_pipe);
8934 %}
8935 
8936 /* instruct partialSubtypeCheck_vs_zero( flagsRegP pcc, o1RegP sub, o2RegP super, immP0 zero, o0RegP idx, o7RegP o7 ) %{ */
8937 /*   match(Set pcc (CmpP (PartialSubtypeCheck sub super) zero)); */
8938 /*   ins_pipe(partial_subtype_check_pipe); */
8939 /* %} */
8940 
8941 
8942 // ============================================================================
8943 // inlined locking and unlocking
8944 
8945 instruct cmpFastLock(flagsRegP pcc, iRegP object, iRegP box, iRegP scratch2, iRegP scratch )
8946 %{
8947   match(Set pcc (FastLock object box));
8948   predicate(!(UseBiasedLocking && !UseOptoBiasInlining));
8949 
8950   effect(TEMP scratch, TEMP scratch2);
8951   ins_cost(DEFAULT_COST*3);
8952 
8953   format %{ "FASTLOCK  $object, $box; KILL $scratch, $scratch2" %}
8954   ins_encode %{
8955     __ fast_lock($object$$Register, $box$$Register, $scratch$$Register, $scratch2$$Register);
8956   %}
8957   ins_pipe(long_memory_op);
8958 %}
8959 
8960 instruct cmpFastLock_noBiasInline(flagsRegP pcc, iRegP object, iRegP box, iRegP scratch2,
8961                                   iRegP scratch, iRegP scratch3) %{
8962   match(Set pcc (FastLock object box));
8963   predicate(UseBiasedLocking && !UseOptoBiasInlining);
8964 
8965   effect(TEMP scratch, TEMP scratch2, TEMP scratch3);
8966   ins_cost(DEFAULT_COST*5);
8967 
8968   format %{ "FASTLOCK  $object, $box; KILL $scratch, $scratch2, $scratch3" %}
8969   ins_encode %{
8970     __ fast_lock($object$$Register, $box$$Register, $scratch$$Register, $scratch2$$Register, $scratch3$$Register);
8971   %}
8972   ins_pipe(long_memory_op);
8973 %}
8974 
8975 
8976 instruct cmpFastUnlock(flagsRegP pcc, iRegP object, iRegP box, iRegP scratch2, iRegP scratch ) %{
8977   match(Set pcc (FastUnlock object box));
8978   effect(TEMP scratch, TEMP scratch2);
8979   ins_cost(100);
8980 
8981   format %{ "FASTUNLOCK  $object, $box; KILL $scratch, $scratch2" %}
8982   ins_encode %{
8983     __ fast_unlock($object$$Register, $box$$Register, $scratch$$Register, $scratch2$$Register);
8984   %}
8985   ins_pipe(long_memory_op);
8986 %}
8987 
8988 // Count and Base registers are fixed because the allocator cannot
8989 // kill unknown registers.  The encodings are generic.
8990 instruct clear_array(iRegX cnt, iRegP base, iRegI temp, iRegX zero, Universe dummy, flagsReg cpsr) %{


< prev index next >