Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8307651

RISC-V: stringL_indexof_char instruction has wrong format string

XMLWordPrintable

    • 21
    • b22
    • riscv
    • linux

        The format of stringL_indexof_char is just a copy and paste from stringU_indexof_char. It should be `StringLatin1` instead of `StringUTF16`.


        instruct stringL_indexof_char(iRegP_R11 str1, iRegI_R12 cnt1, iRegI_R13 ch,
                                      iRegI_R10 result, iRegINoSp tmp1, iRegINoSp tmp2,
                                      iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
        %{
          match(Set result (StrIndexOfChar (Binary str1 cnt1) ch));
          predicate(!UseRVV && (((StrIndexOfCharNode*)n)->encoding() == StrIntrinsicNode::L));
          effect(USE_KILL str1, USE_KILL cnt1, USE_KILL ch, TEMP_DEF result,
                 TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr);

          format %{ "StringUTF16 IndexOf char[] $str1,$cnt1,$ch -> $result" %} ====> Should be StringLatin1 here.
          ins_encode %{
            __ string_indexof_char($str1$$Register, $cnt1$$Register, $ch$$Register,
                                   $result$$Register, $tmp1$$Register, $tmp2$$Register,
                                   $tmp3$$Register, $tmp4$$Register, true /* isL */);
          %}
          ins_pipe(pipe_class_memory);
        %}

              fjiang Feilong Jiang
              fjiang Feilong Jiang
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: