/* T-head extension definition file for RISC-V.
   Copyright (C) 2025 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.

Please run `make riscv-regen` in build folder to make sure updated anything.

Format of DEFINE_RISCV_EXT, please refer to riscv-ext.def.  */

DEFINE_RISCV_EXT(
  /* NAME */ xtheadba,
  /* UPPERCAE_NAME */ XTHEADBA,
  /* FULL_NAME */ "T-head address calculation extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadbb,
  /* UPPERCAE_NAME */ XTHEADBB,
  /* FULL_NAME */ "T-head basic bit-manipulation extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadbs,
  /* UPPERCAE_NAME */ XTHEADBS,
  /* FULL_NAME */ "T-head single-bit instructions extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadcmo,
  /* UPPERCAE_NAME */ XTHEADCMO,
  /* FULL_NAME */ "T-head cache management operations extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadcondmov,
  /* UPPERCAE_NAME */ XTHEADCONDMOV,
  /* FULL_NAME */ "T-head conditional move extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadfmemidx,
  /* UPPERCAE_NAME */ XTHEADFMEMIDX,
  /* FULL_NAME */ "T-head indexed memory operations for floating-point registers extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadfmv,
  /* UPPERCAE_NAME */ XTHEADFMV,
  /* FULL_NAME */ "T-head double floating-point high-bit data transmission extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadint,
  /* UPPERCAE_NAME */ XTHEADINT,
  /* FULL_NAME */ "T-head acceleration interruption extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadmac,
  /* UPPERCAE_NAME */ XTHEADMAC,
  /* FULL_NAME */ "T-head multiply-accumulate extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadmemidx,
  /* UPPERCAE_NAME */ XTHEADMEMIDX,
  /* FULL_NAME */ "T-head indexed memory operation extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadmempair,
  /* UPPERCAE_NAME */ XTHEADMEMPAIR,
  /* FULL_NAME */ "T-head two-GPR memory operation extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadsync,
  /* UPPERCAE_NAME */ XTHEADSYNC,
  /* FULL_NAME */ "T-head multi-core synchronization extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)

DEFINE_RISCV_EXT(
  /* NAME */ xtheadvector,
  /* UPPERCAE_NAME */ XTHEADVECTOR,
  /* FULL_NAME */ "xtheadvector extension",
  /* DESC */ "",
  /* URL */ ,
  /* DEP_EXTS */ ({}),
  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
  /* FLAG_GROUP */ xthead,
  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
  /* EXTRA_EXTENSION_FLAGS */ 0)
