[aarch64-port-dev ] [10] RFR: 8187472 - AARCH64: array_equals intrinsic doesn't use prefetch for large arrays

Andrew Haley aph at redhat.com
Mon Oct 30 16:13:06 UTC 2017

On 30/10/17 15:42, Dmitrij Pochepko wrote:
> Any additional numbers on other systems are welcome, as well as early 
> feedback on the code.

I take it that the small comparisons are unaffected.  The small
comparisons are very common, so they shouldn't be ignored.

The patch seems unobjectionable, but it's extremely hard to test
this stuff.

Why is this change:

@@ -16154,7 +16154,7 @@

-instruct string_equalsL(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt,
+instruct string_equalsL(iRegP_R1 str1, iRegP_R3 str2, iRegP_R4 cnt,
                         iRegI_R0 result, rFlagsReg cr)
   predicate(((StrEqualsNode*)n)->encoding() == StrIntrinsicNode::LL);

It seems very odd to me.

Was a vertor-based implementation considered?

Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671

More information about the hotspot-compiler-dev mailing list