16238 instruct string_compress(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
16239 vRegD_V0 tmp1, vRegD_V1 tmp2,
16240 vRegD_V2 tmp3, vRegD_V3 tmp4,
16241 iRegI_R0 result, rFlagsReg cr)
16242 %{
16243 match(Set result (StrCompressedCopy src (Binary dst len)));
16244 effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
16245
16246 format %{ "String Compress $src,$dst -> $result // KILL R1, R2, R3, R4" %}
16247 ins_encode %{
16248 __ char_array_compress($src$$Register, $dst$$Register, $len$$Register,
16249 $tmp1$$FloatRegister, $tmp2$$FloatRegister,
16250 $tmp3$$FloatRegister, $tmp4$$FloatRegister,
16251 $result$$Register);
16252 %}
16253 ins_pipe( pipe_slow );
16254 %}
16255
16256 // fast byte[] to char[] inflation
16257 instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len,
16258 vRegD tmp1, vRegD tmp2, vRegD tmp3, iRegP_R3 tmp4, rFlagsReg cr)
16259 %{
16260 match(Set dummy (StrInflatedCopy src (Binary dst len)));
16261 effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
16262
16263 format %{ "String Inflate $src,$dst // KILL $tmp1, $tmp2" %}
16264 ins_encode %{
16265 __ byte_array_inflate($src$$Register, $dst$$Register, $len$$Register,
16266 $tmp1$$FloatRegister, $tmp2$$FloatRegister, $tmp3$$FloatRegister, $tmp4$$Register);
16267 %}
16268 ins_pipe(pipe_class_memory);
16269 %}
16270
16271 // encode char[] to byte[] in ISO_8859_1
16272 instruct encode_iso_array(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
16273 vRegD_V0 Vtmp1, vRegD_V1 Vtmp2,
16274 vRegD_V2 Vtmp3, vRegD_V3 Vtmp4,
16275 iRegI_R0 result, rFlagsReg cr)
16276 %{
16277 match(Set result (EncodeISOArray src (Binary dst len)));
16278 effect(USE_KILL src, USE_KILL dst, USE_KILL len,
|
16238 instruct string_compress(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
16239 vRegD_V0 tmp1, vRegD_V1 tmp2,
16240 vRegD_V2 tmp3, vRegD_V3 tmp4,
16241 iRegI_R0 result, rFlagsReg cr)
16242 %{
16243 match(Set result (StrCompressedCopy src (Binary dst len)));
16244 effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
16245
16246 format %{ "String Compress $src,$dst -> $result // KILL R1, R2, R3, R4" %}
16247 ins_encode %{
16248 __ char_array_compress($src$$Register, $dst$$Register, $len$$Register,
16249 $tmp1$$FloatRegister, $tmp2$$FloatRegister,
16250 $tmp3$$FloatRegister, $tmp4$$FloatRegister,
16251 $result$$Register);
16252 %}
16253 ins_pipe( pipe_slow );
16254 %}
16255
16256 // fast byte[] to char[] inflation
16257 instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len,
16258 vRegD_V0 tmp1, vRegD_V1 tmp2, vRegD_V2 tmp3, iRegP_R3 tmp4, rFlagsReg cr)
16259 %{
16260 match(Set dummy (StrInflatedCopy src (Binary dst len)));
16261 effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
16262
16263 format %{ "String Inflate $src,$dst // KILL $tmp1, $tmp2" %}
16264 ins_encode %{
16265 __ byte_array_inflate($src$$Register, $dst$$Register, $len$$Register,
16266 $tmp1$$FloatRegister, $tmp2$$FloatRegister, $tmp3$$FloatRegister, $tmp4$$Register);
16267 %}
16268 ins_pipe(pipe_class_memory);
16269 %}
16270
16271 // encode char[] to byte[] in ISO_8859_1
16272 instruct encode_iso_array(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
16273 vRegD_V0 Vtmp1, vRegD_V1 Vtmp2,
16274 vRegD_V2 Vtmp3, vRegD_V3 Vtmp4,
16275 iRegI_R0 result, rFlagsReg cr)
16276 %{
16277 match(Set result (EncodeISOArray src (Binary dst len)));
16278 effect(USE_KILL src, USE_KILL dst, USE_KILL len,
|