14148 %} |
14148 %} |
14149 |
14149 |
14150 instruct string_compare(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2, |
14150 instruct string_compare(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2, |
14151 iRegI_R0 result, iRegP_R10 tmp1, rFlagsReg cr) |
14151 iRegI_R0 result, iRegP_R10 tmp1, rFlagsReg cr) |
14152 %{ |
14152 %{ |
|
14153 predicate(!CompactStrings); |
14153 match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2))); |
14154 match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2))); |
14154 effect(KILL tmp1, USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr); |
14155 effect(KILL tmp1, USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr); |
14155 |
14156 |
14156 format %{ "String Compare $str1,$cnt1,$str2,$cnt2 -> $result # KILL $tmp1" %} |
14157 format %{ "String Compare $str1,$cnt1,$str2,$cnt2 -> $result # KILL $tmp1" %} |
14157 ins_encode %{ |
14158 ins_encode %{ |
14163 %} |
14164 %} |
14164 |
14165 |
14165 instruct string_indexof(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2 cnt2, |
14166 instruct string_indexof(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2 cnt2, |
14166 iRegI_R0 result, iRegI tmp1, iRegI tmp2, iRegI tmp3, iRegI tmp4, rFlagsReg cr) |
14167 iRegI_R0 result, iRegI tmp1, iRegI tmp2, iRegI tmp3, iRegI tmp4, rFlagsReg cr) |
14167 %{ |
14168 %{ |
|
14169 predicate(!CompactStrings); |
14168 match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2))); |
14170 match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2))); |
14169 effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, |
14171 effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, |
14170 TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr); |
14172 TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr); |
14171 format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result" %} |
14173 format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result" %} |
14172 |
14174 |
14182 |
14184 |
14183 instruct string_indexof_con(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, |
14185 instruct string_indexof_con(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, |
14184 immI_le_4 int_cnt2, iRegI_R0 result, iRegI tmp1, iRegI tmp2, |
14186 immI_le_4 int_cnt2, iRegI_R0 result, iRegI tmp1, iRegI tmp2, |
14185 iRegI tmp3, iRegI tmp4, rFlagsReg cr) |
14187 iRegI tmp3, iRegI tmp4, rFlagsReg cr) |
14186 %{ |
14188 %{ |
|
14189 predicate(!CompactStrings); |
14187 match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 int_cnt2))); |
14190 match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 int_cnt2))); |
14188 effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, |
14191 effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, |
14189 TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr); |
14192 TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr); |
14190 format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result" %} |
14193 format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result" %} |
14191 |
14194 |
14201 %} |
14204 %} |
14202 |
14205 |
14203 instruct string_equals(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt, |
14206 instruct string_equals(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt, |
14204 iRegI_R0 result, iRegP_R10 tmp, rFlagsReg cr) |
14207 iRegI_R0 result, iRegP_R10 tmp, rFlagsReg cr) |
14205 %{ |
14208 %{ |
|
14209 predicate(!CompactStrings); |
14206 match(Set result (StrEquals (Binary str1 str2) cnt)); |
14210 match(Set result (StrEquals (Binary str1 str2) cnt)); |
14207 effect(KILL tmp, USE_KILL str1, USE_KILL str2, USE_KILL cnt, KILL cr); |
14211 effect(KILL tmp, USE_KILL str1, USE_KILL str2, USE_KILL cnt, KILL cr); |
14208 |
14212 |
14209 format %{ "String Equals $str1,$str2,$cnt -> $result // KILL $tmp" %} |
14213 format %{ "String Equals $str1,$str2,$cnt -> $result // KILL $tmp" %} |
14210 ins_encode %{ |
14214 ins_encode %{ |
14216 %} |
14220 %} |
14217 |
14221 |
14218 instruct array_equals(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result, |
14222 instruct array_equals(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result, |
14219 iRegP_R10 tmp, rFlagsReg cr) |
14223 iRegP_R10 tmp, rFlagsReg cr) |
14220 %{ |
14224 %{ |
|
14225 predicate(((AryEqNode*)n)->encoding() == StrIntrinsicNode::UU); |
14221 match(Set result (AryEq ary1 ary2)); |
14226 match(Set result (AryEq ary1 ary2)); |
14222 effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, KILL cr); |
14227 effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, KILL cr); |
14223 |
14228 |
14224 format %{ "Array Equals $ary1,ary2 -> $result // KILL $tmp" %} |
14229 format %{ "Array Equals $ary1,ary2 -> $result // KILL $tmp" %} |
14225 ins_encode %{ |
14230 ins_encode %{ |