< prev index next >
src/hotspot/cpu/s390/s390.ad
Print this page
*** 10265,10282 ****
%}
ins_pipe(pipe_class_dummy);
%}
// char[] to byte[] compression
! instruct string_compress(iRegP src, rarg5RegP dst, iRegI result, roddRegI len, revenRegI evenReg, iRegI tmp, flagsReg cr) %{
match(Set result (StrCompressedCopy src (Binary dst len)));
! effect(TEMP_DEF result, USE_KILL dst, USE_KILL len, TEMP evenReg, TEMP tmp, KILL cr); // R0, R1 are killed, too.
ins_cost(300);
format %{ "String Compress $src->$dst($len) -> $result" %}
ins_encode %{
__ string_compress($result$$Register, $src$$Register, $dst$$Register, $len$$Register,
! $evenReg$$Register, $tmp$$Register);
%}
ins_pipe(pipe_class_dummy);
%}
// byte[] to char[] inflation. trot implementation is shorter, but slower than the unrolled icm(h) loop.
--- 10265,10282 ----
%}
ins_pipe(pipe_class_dummy);
%}
// char[] to byte[] compression
! instruct string_compress(iRegP src, iRegP dst, iRegI result, iRegI len, iRegI tmp, flagsReg cr) %{
match(Set result (StrCompressedCopy src (Binary dst len)));
! effect(TEMP_DEF result, TEMP tmp, KILL cr); // R0, R1 are killed, too.
ins_cost(300);
format %{ "String Compress $src->$dst($len) -> $result" %}
ins_encode %{
__ string_compress($result$$Register, $src$$Register, $dst$$Register, $len$$Register,
! $tmp$$Register, false);
%}
ins_pipe(pipe_class_dummy);
%}
// byte[] to char[] inflation. trot implementation is shorter, but slower than the unrolled icm(h) loop.
*** 10291,10307 ****
// %}
// ins_pipe(pipe_class_dummy);
//%}
// byte[] to char[] inflation
! instruct string_inflate(Universe dummy, rarg5RegP src, iRegP dst, roddRegI len, revenRegI evenReg, iRegI tmp, flagsReg cr) %{
match(Set dummy (StrInflatedCopy src (Binary dst len)));
! effect(USE_KILL src, USE_KILL len, TEMP evenReg, TEMP tmp, KILL cr); // R0, R1 are killed, too.
ins_cost(300);
format %{ "String Inflate $src->$dst($len)" %}
ins_encode %{
! __ string_inflate($src$$Register, $dst$$Register, $len$$Register, $evenReg$$Register, $tmp$$Register);
%}
ins_pipe(pipe_class_dummy);
%}
// StringCoding.java intrinsics
--- 10291,10319 ----
// %}
// ins_pipe(pipe_class_dummy);
//%}
// byte[] to char[] inflation
! instruct string_inflate(Universe dummy, iRegP src, iRegP dst, iRegI len, iRegI tmp, flagsReg cr) %{
match(Set dummy (StrInflatedCopy src (Binary dst len)));
! effect(TEMP tmp, KILL cr); // R0, R1 are killed, too.
ins_cost(300);
format %{ "String Inflate $src->$dst($len)" %}
ins_encode %{
! __ string_inflate($src$$Register, $dst$$Register, $len$$Register, $tmp$$Register);
! %}
! ins_pipe(pipe_class_dummy);
! %}
!
! // byte[] to char[] inflation
! instruct string_inflate_const(Universe dummy, iRegP src, iRegP dst, iRegI tmp, immI len, flagsReg cr) %{
! match(Set dummy (StrInflatedCopy src (Binary dst len)));
! effect(TEMP tmp, KILL cr); // R0, R1 are killed, too.
! ins_cost(300);
! format %{ "String Inflate (constLen) $src->$dst($len)" %}
! ins_encode %{
! __ string_inflate_const($src$$Register, $dst$$Register, $tmp$$Register, $len$$constant);
%}
ins_pipe(pipe_class_dummy);
%}
// StringCoding.java intrinsics
*** 10316,10333 ****
%}
ins_pipe(pipe_class_dummy);
%}
// encode char[] to byte[] in ISO_8859_1
! instruct encode_iso_array(rarg5RegP src, iRegP dst, iRegI result, roddRegI len, revenRegI evenReg, iRegI tmp, iRegI tmp2, flagsReg cr) %{
match(Set result (EncodeISOArray src (Binary dst len)));
! effect(TEMP_DEF result, USE_KILL src, USE_KILL len, TEMP evenReg, TEMP tmp, TEMP tmp2, KILL cr); // R0, R1 are killed, too.
ins_cost(300);
format %{ "Encode array $src->$dst($len) -> $result" %}
ins_encode %{
__ string_compress($result$$Register, $src$$Register, $dst$$Register, $len$$Register,
! $evenReg$$Register, $tmp$$Register, $tmp2$$Register);
%}
ins_pipe(pipe_class_dummy);
%}
--- 10328,10345 ----
%}
ins_pipe(pipe_class_dummy);
%}
// encode char[] to byte[] in ISO_8859_1
! instruct encode_iso_array(iRegP src, iRegP dst, iRegI result, iRegI len, iRegI tmp, flagsReg cr) %{
match(Set result (EncodeISOArray src (Binary dst len)));
! effect(TEMP_DEF result, TEMP tmp, KILL cr); // R0, R1 are killed, too.
ins_cost(300);
format %{ "Encode array $src->$dst($len) -> $result" %}
ins_encode %{
__ string_compress($result$$Register, $src$$Register, $dst$$Register, $len$$Register,
! $tmp$$Register, true);
%}
ins_pipe(pipe_class_dummy);
%}
< prev index next >