参照元

説明

引数

返り値

参考

実装

int
recog (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18, x19, x20, x21, x22, x23, x24, x25;
  rtx x26, x27;
  int res ATTRIBUTE_UNUSED;
  recog_data.insn = NULL;
  switch (GET_CODE (x1))
    {
    case SET:
      return recog_17 (x1, insn, pnum_clobbers);

    case UNSPEC_VOLATILE:
      if (XVECLEN (x1, 0) != 1)
        return -1;
      switch (XINT (x1, 1))
        {
        case 5:
          x2 = XVECEXP (x1, 0, 0);
          if (x2 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          return 144; /* fence */

        case 6:
          x2 = XVECEXP (x1, 0, 0);
          if (x2 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          return 145; /* fence_i */

        case 4:
          x2 = XVECEXP (x1, 0, 0);
          if (x2 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          return 231; /* blockage */

        case 0:
          if (pnum_clobbers == NULL)
            return -1;
          x2 = XVECEXP (x1, 0, 0);
          operands[0] = x2;
          if (!const_int_operand (operands[0], E_VOIDmode))
            return -1;
          *pnum_clobbers = 2;
          return 242; /* gpr_save */

        case 1:
          x2 = XVECEXP (x1, 0, 0);
          operands[0] = x2;
          if (!const_int_operand (operands[0], E_VOIDmode))
            return -1;
          return 243; /* gpr_restore */

        case 3:
          x2 = XVECEXP (x1, 0, 0);
          operands[0] = x2;
          if (!csr_operand (operands[0], E_SImode)
              || !
#line 2274 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(TARGET_HARD_FLOAT))
            return -1;
          return 246; /* riscv_fsflags */

        default:
          return -1;
        }

    case PARALLEL:
      switch (XVECLEN (x1, 0))
        {
        case 2:
          x2 = XVECEXP (x1, 0, 0);
          switch (GET_CODE (x2))
            {
            case SET:
              x3 = XEXP (x2, 1);
              switch (GET_CODE (x3))
                {
                case IF_THEN_ELSE:
                  if (pattern24 (x2) != 0)
                    return -1;
                  x4 = XVECEXP (x1, 0, 1);
                  if (GET_CODE (x4) != CLOBBER)
                    return -1;
                  x5 = XEXP (x3, 0);
                  x6 = XEXP (x5, 0);
                  x7 = XEXP (x6, 0);
                  operands[2] = x7;
                  x8 = XEXP (x3, 1);
                  x9 = XEXP (x8, 0);
                  operands[1] = x9;
                  x10 = XEXP (x4, 0);
                  operands[4] = x10;
                  x11 = XEXP (x6, 1);
                  if (XWINT (x11, 0) == 1L)
                    {
                      switch (pattern61 (x6))
                        {
                        case 0:
                          if (
#line 241 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(!TARGET_64BIT))
                            return 180; /* *branch_on_bitsi */
                          break;

                        case 1:
                          if (
#line 241 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(TARGET_64BIT))
                            return 181; /* *branch_on_bitdi */
                          break;

                        default:
                          break;
                        }
                    }
                  x12 = XEXP (x6, 2);
                  if (x12 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                    return -1;
                  switch (pattern62 (x6))
                    {
                    case 0:
                      if (!
#line 241 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(!TARGET_64BIT))
                        return -1;
                      return 182; /* *branch_on_bit_rangesi */

                    case 1:
                      if (!
#line 241 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(TARGET_64BIT))
                        return -1;
                      return 183; /* *branch_on_bit_rangedi */

                    default:
                      return -1;
                    }

                case UNSPEC:
                  x13 = XEXP (x2, 0);
                  operands[0] = x13;
                  switch (XVECLEN (x3, 0))
                    {
                    case 2:
                      x4 = XVECEXP (x1, 0, 1);
                      if (GET_CODE (x4) != CLOBBER)
                        return -1;
                      x14 = XVECEXP (x3, 0, 0);
                      operands[1] = x14;
                      x15 = XVECEXP (x3, 0, 1);
                      operands[2] = x15;
                      x10 = XEXP (x4, 0);
                      operands[3] = x10;
                      switch (XINT (x3, 1))
                        {
                        case 9:
                          switch (GET_MODE (operands[0]))
                            {
                            case E_SImode:
                              switch (pattern56 (x3, E_SImode))
                                {
                                case 0:
                                  if (!(
#line 1880 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(TARGET_HARD_FLOAT) && (((
#line 241 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(!TARGET_64BIT) && 
#line 272 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(TARGET_HARD_FLOAT)) && 
#line 272 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(TARGET_HARD_FLOAT)) && 
#line 241 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(!TARGET_64BIT))))
                                    return -1;
                                  return 188; /* flt_quietsfsi4 */

                                case 1:
                                  if (!(
#line 1880 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(TARGET_HARD_FLOAT) && (((
#line 241 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(!TARGET_64BIT) && 
#line 273 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(TARGET_DOUBLE_FLOAT)) && 
#line 273 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(TARGET_DOUBLE_FLOAT)) && 
#line 241 "/home/katsuhiro/share/projects/oss/crosstool-builder-new/./gcc/gcc/config/riscv/riscv.md"
(!TARGET_64BIT))))
                                    return -1;
                                  return 192; /* flt_quietdfsi4 */

                                default:
                                  return -1;
                                }

// ずっと続く

コメント


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-06-12 (水) 19:05:20