--- a/src/hotspot/cpu/aarch64/aarch64.ad Mon Apr 09 18:40:20 2018 +0300
+++ b/src/hotspot/cpu/aarch64/aarch64.ad Mon Apr 09 18:43:40 2018 +0300
@@ -16167,9 +16167,8 @@
format %{ "String Equals $str1,$str2,$cnt -> $result" %}
ins_encode %{
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
- __ arrays_equals($str1$$Register, $str2$$Register,
- $result$$Register, $cnt$$Register,
- 1, /*is_string*/true);
+ __ string_equals($str1$$Register, $str2$$Register,
+ $result$$Register, $cnt$$Register, 1);
%}
ins_pipe(pipe_class_memory);
%}
@@ -16184,42 +16183,42 @@
format %{ "String Equals $str1,$str2,$cnt -> $result" %}
ins_encode %{
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
- __ asrw($cnt$$Register, $cnt$$Register, 1);
- __ arrays_equals($str1$$Register, $str2$$Register,
- $result$$Register, $cnt$$Register,
- 2, /*is_string*/true);
+ __ string_equals($str1$$Register, $str2$$Register,
+ $result$$Register, $cnt$$Register, 2);
%}
ins_pipe(pipe_class_memory);
%}
instruct array_equalsB(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
- iRegP_R10 tmp, rFlagsReg cr)
+ iRegP_R3 tmp1, iRegP_R4 tmp2, iRegP_R5 tmp3,
+ iRegP_R10 tmp, rFlagsReg cr)
%{
predicate(((AryEqNode*)n)->encoding() == StrIntrinsicNode::LL);
match(Set result (AryEq ary1 ary2));
- effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, KILL cr);
+ effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr);
format %{ "Array Equals $ary1,ary2 -> $result // KILL $tmp" %}
ins_encode %{
__ arrays_equals($ary1$$Register, $ary2$$Register,
- $result$$Register, $tmp$$Register,
- 1, /*is_string*/false);
+ $tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
+ $result$$Register, $tmp$$Register, 1);
%}
ins_pipe(pipe_class_memory);
%}
instruct array_equalsC(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
- iRegP_R10 tmp, rFlagsReg cr)
+ iRegP_R3 tmp1, iRegP_R4 tmp2, iRegP_R5 tmp3,
+ iRegP_R10 tmp, rFlagsReg cr)
%{
predicate(((AryEqNode*)n)->encoding() == StrIntrinsicNode::UU);
match(Set result (AryEq ary1 ary2));
- effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, KILL cr);
+ effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr);
format %{ "Array Equals $ary1,ary2 -> $result // KILL $tmp" %}
ins_encode %{
__ arrays_equals($ary1$$Register, $ary2$$Register,
- $result$$Register, $tmp$$Register,
- 2, /*is_string*/false);
+ $tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
+ $result$$Register, $tmp$$Register, 2);
%}
ins_pipe(pipe_class_memory);
%}