1.1 --- a/src/cpu/x86/vm/x86_32.ad Tue Jan 22 11:31:25 2013 -0800 1.2 +++ b/src/cpu/x86/vm/x86_32.ad Tue Jan 22 15:34:16 2013 -0800 1.3 @@ -11687,6 +11687,23 @@ 1.4 ins_pipe( pipe_slow ); 1.5 %} 1.6 1.7 +// encode char[] to byte[] in ISO_8859_1 1.8 +instruct encode_iso_array(eSIRegP src, eDIRegP dst, eDXRegI len, 1.9 + regD tmp1, regD tmp2, regD tmp3, regD tmp4, 1.10 + eCXRegI tmp5, eAXRegI result, eFlagsReg cr) %{ 1.11 + match(Set result (EncodeISOArray src (Binary dst len))); 1.12 + effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL tmp5, KILL cr); 1.13 + 1.14 + format %{ "Encode array $src,$dst,$len -> $result // KILL ECX, EDX, $tmp1, $tmp2, $tmp3, $tmp4, ESI, EDI " %} 1.15 + ins_encode %{ 1.16 + __ encode_iso_array($src$$Register, $dst$$Register, $len$$Register, 1.17 + $tmp1$$XMMRegister, $tmp2$$XMMRegister, $tmp3$$XMMRegister, 1.18 + $tmp4$$XMMRegister, $tmp5$$Register, $result$$Register); 1.19 + %} 1.20 + ins_pipe( pipe_slow ); 1.21 +%} 1.22 + 1.23 + 1.24 //----------Control Flow Instructions------------------------------------------ 1.25 // Signed compare Instructions 1.26 instruct compI_eReg(eFlagsReg cr, rRegI op1, rRegI op2) %{