< prev index next >

src/cpu/aarch64/vm/aarch64.ad

Print this page




15730     %}
15731   ins_pipe(pipe_class_memory);
15732 %}
15733 
15734 instruct array_equalsC(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
15735                       iRegP_R10 tmp, rFlagsReg cr)
15736 %{
15737   predicate(((AryEqNode*)n)->encoding() == StrIntrinsicNode::UU);
15738   match(Set result (AryEq ary1 ary2));
15739   effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, KILL cr);
15740 
15741   format %{ "Array Equals $ary1,ary2 -> $result    // KILL $tmp" %}
15742   ins_encode %{
15743     __ arrays_equals($ary1$$Register, $ary2$$Register,
15744                      $result$$Register, $tmp$$Register,
15745                      2, /*is_string*/false);
15746   %}
15747   ins_pipe(pipe_class_memory);
15748 %}
15749 










15750 
15751 // fast char[] to byte[] compression
15752 instruct string_compress(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
15753                          vRegD_V0 tmp1, vRegD_V1 tmp2,
15754                          vRegD_V2 tmp3, vRegD_V3 tmp4,
15755                          iRegI_R0 result, rFlagsReg cr)
15756 %{
15757   match(Set result (StrCompressedCopy src (Binary dst len)));
15758   effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
15759 
15760   format %{ "String Compress $src,$dst -> $result    // KILL R1, R2, R3, R4" %}
15761   ins_encode %{
15762     __ char_array_compress($src$$Register, $dst$$Register, $len$$Register,
15763                            $tmp1$$FloatRegister, $tmp2$$FloatRegister,
15764                            $tmp3$$FloatRegister, $tmp4$$FloatRegister,
15765                            $result$$Register);
15766   %}
15767   ins_pipe( pipe_slow );
15768 %}
15769 




15730     %}
15731   ins_pipe(pipe_class_memory);
15732 %}
15733 
15734 instruct array_equalsC(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
15735                       iRegP_R10 tmp, rFlagsReg cr)
15736 %{
15737   predicate(((AryEqNode*)n)->encoding() == StrIntrinsicNode::UU);
15738   match(Set result (AryEq ary1 ary2));
15739   effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, KILL cr);
15740 
15741   format %{ "Array Equals $ary1,ary2 -> $result    // KILL $tmp" %}
15742   ins_encode %{
15743     __ arrays_equals($ary1$$Register, $ary2$$Register,
15744                      $result$$Register, $tmp$$Register,
15745                      2, /*is_string*/false);
15746   %}
15747   ins_pipe(pipe_class_memory);
15748 %}
15749 
15750 instruct has_negatives(iRegP_R1 ary1, iRegI_R2 len, iRegI_R0 result, rFlagsReg cr)
15751 %{
15752   match(Set result (HasNegatives ary1 len));
15753   effect(USE_KILL ary1, USE_KILL len, KILL cr);
15754   format %{ "has negatives byte[] $ary1,$len -> $result" %}
15755   ins_encode %{
15756     __ has_negatives($ary1$$Register, $len$$Register, $result$$Register);
15757   %}
15758   ins_pipe( pipe_slow );
15759 %}
15760 
15761 // fast char[] to byte[] compression
15762 instruct string_compress(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
15763                          vRegD_V0 tmp1, vRegD_V1 tmp2,
15764                          vRegD_V2 tmp3, vRegD_V3 tmp4,
15765                          iRegI_R0 result, rFlagsReg cr)
15766 %{
15767   match(Set result (StrCompressedCopy src (Binary dst len)));
15768   effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
15769 
15770   format %{ "String Compress $src,$dst -> $result    // KILL R1, R2, R3, R4" %}
15771   ins_encode %{
15772     __ char_array_compress($src$$Register, $dst$$Register, $len$$Register,
15773                            $tmp1$$FloatRegister, $tmp2$$FloatRegister,
15774                            $tmp3$$FloatRegister, $tmp4$$FloatRegister,
15775                            $result$$Register);
15776   %}
15777   ins_pipe( pipe_slow );
15778 %}
15779 


< prev index next >