/* Intrinsic functions of Andes NDS32 cpu for GNU compiler
   Copyright (C) 2012-2019 Free Software Foundation, Inc.
   Contributed by Andes Technology Corporation.

   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/>.  */

/* ------------------------------------------------------------------------ */

#define IN_TARGET_CODE 1

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "target.h"
#include "rtl.h"
#include "memmodel.h"
#include "emit-rtl.h"
#include "tree.h"
#include "memmodel.h"
#include "optabs.h"		/* For GEN_FCN.  */
#include "diagnostic-core.h"
#include "stor-layout.h"
#include "expr.h"
#include "langhooks.h"		/* For add_builtin_function().  */
#include "recog.h"
#include "explow.h"

/* ------------------------------------------------------------------------ */

/* Read the requested argument from the EXP given by INDEX.
   Return the value as an rtx.  */
static rtx
nds32_read_argument (tree exp, unsigned int index)
{
  return expand_normal (CALL_EXPR_ARG (exp, index));
}

/* Return a legitimate rtx for instruction ICODE's return value.  Use TARGET
   if it's not null, has the right mode, and satisfies operand 0's
   predicate.  */
static rtx
nds32_legitimize_target (enum insn_code icode, rtx target)
{
  enum machine_mode mode = insn_data[icode].operand[0].mode;

  if (! target
      || GET_MODE (target) != mode
      || ! (*insn_data[icode].operand[0].predicate) (target, mode))
    return gen_reg_rtx (mode);
  else
    return target;
}

/* Given that ARG is being passed as operand OPNUM to instruction ICODE,
   check whether ARG satisfies the operand's constraints.  If it doesn't,
   copy ARG to a temporary register and return that.  Otherwise return ARG
   itself.  */
static rtx
nds32_legitimize_argument (enum insn_code icode, int opnum, rtx arg)
{
  enum machine_mode mode = insn_data[icode].operand[opnum].mode;

  if ((*insn_data[icode].operand[opnum].predicate) (arg, mode))
    return arg;
  else if (VECTOR_MODE_P (mode) && CONST_INT_P (arg))
    {
      /* Handle CONST_INT covert to CONST_VECTOR.  */
      int nunits = GET_MODE_NUNITS (mode);
      int i, shift = 0;
      rtvec v = rtvec_alloc (nunits);
      int val = INTVAL (arg);
      enum machine_mode val_mode = (mode == V4QImode) ? QImode : HImode;
      int shift_acc = (val_mode == QImode) ? 8 : 16;
      int mask = (val_mode == QImode) ? 0xff : 0xffff;
      int tmp_val = val;

      if (TARGET_BIG_ENDIAN)
	for (i = 0; i < nunits; i++)
	  {
	    tmp_val = (val >> shift) & mask;
	    RTVEC_ELT (v, nunits - i - 1) = gen_int_mode (tmp_val, val_mode);
	    shift += shift_acc;
	  }
      else
	for (i = 0; i < nunits; i++)
	  {
	    tmp_val = (val >> shift) & mask;
	    RTVEC_ELT (v, i) = gen_int_mode (tmp_val, val_mode);
	    shift += shift_acc;
	  }

      return copy_to_mode_reg (mode, gen_rtx_CONST_VECTOR (mode, v));
    }
  else
    {
      rtx tmp_rtx = gen_reg_rtx (mode);
      convert_move (tmp_rtx, arg, false);
      return tmp_rtx;
    }
}

/* Return true if OPVAL can be used for operand OPNUM of instruction ICODE.
   The instruction should require a constant operand of some sort.  The
   function prints an error if OPVAL is not valid.  */
static int
nds32_check_constant_argument (enum insn_code icode, int opnum, rtx opval,
			       const char *name)
{
  if (GET_CODE (opval) != CONST_INT)
    {
      error ("invalid argument to built-in function %s", name);
      return false;
    }
  if (! (*insn_data[icode].operand[opnum].predicate) (opval, VOIDmode))
    {
      error ("constant argument out of range for %s", name);

      return false;
    }
  return true;
}

/* Expand builtins that return target.  */
static rtx
nds32_expand_noarg_builtin (enum insn_code icode, rtx target)
{
  rtx pat;

  target = nds32_legitimize_target (icode, target);

  /* Emit and return the new instruction. */
  pat = GEN_FCN (icode) (target);
  if (! pat)
    return NULL_RTX;

  emit_insn (pat);
  return target;
}

/* Expand builtins that take one operand.  */
static rtx
nds32_expand_unop_builtin (enum insn_code icode, tree exp, rtx target,
			   bool return_p)
{
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  int op0_num = return_p ? 1 : 0;

  if (return_p)
    target = nds32_legitimize_target (icode, target);

  op0 = nds32_legitimize_argument (icode, op0_num, op0);

  /* Emit and return the new instruction. */
  if (return_p)
    pat = GEN_FCN (icode) (target, op0);
  else
    pat = GEN_FCN (icode) (op0);

  if (! pat)
    return NULL_RTX;

  emit_insn (pat);
  return target;
}

/* Expand builtins that take one operands and the first is immediate.  */
static rtx
nds32_expand_unopimm_builtin (enum insn_code icode, tree exp, rtx target,
			      bool return_p, const char *name)
{
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  int op0_num = return_p ? 1 : 0;

  if (return_p)
    target = nds32_legitimize_target (icode, target);

  if (!nds32_check_constant_argument (icode, op0_num, op0, name))
    return NULL_RTX;

  op0 = nds32_legitimize_argument (icode, op0_num, op0);

  /* Emit and return the new instruction. */
  if (return_p)
    pat = GEN_FCN (icode) (target, op0);
  else
    pat = GEN_FCN (icode) (op0);

  if (! pat)
    return NULL_RTX;

  emit_insn (pat);
  return target;
}

/* Expand builtins that take two operands.  */
static rtx
nds32_expand_binop_builtin (enum insn_code icode, tree exp, rtx target,
			    bool return_p)
{
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  rtx op1 = nds32_read_argument (exp, 1);
  int op0_num = return_p ? 1 : 0;
  int op1_num = return_p ? 2 : 1;

  if (return_p)
    target = nds32_legitimize_target (icode, target);

  op0 = nds32_legitimize_argument (icode, op0_num, op0);
  op1 = nds32_legitimize_argument (icode, op1_num, op1);

  /* Emit and return the new instruction. */
  if (return_p)
    pat = GEN_FCN (icode) (target, op0, op1);
  else
    pat = GEN_FCN (icode) (op0, op1);

  if (! pat)
    return NULL_RTX;

  emit_insn (pat);
  return target;
}

/* Expand builtins that take two operands and the second is immediate.  */
static rtx
nds32_expand_binopimm_builtin (enum insn_code icode, tree exp, rtx target,
			       bool return_p, const char *name)
{
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  rtx op1 = nds32_read_argument (exp, 1);
  int op0_num = return_p ? 1 : 0;
  int op1_num = return_p ? 2 : 1;

  if (return_p)
    target = nds32_legitimize_target (icode, target);

  if (!nds32_check_constant_argument (icode, op1_num, op1, name))
    return NULL_RTX;

  op0 = nds32_legitimize_argument (icode, op0_num, op0);
  op1 = nds32_legitimize_argument (icode, op1_num, op1);

  /* Emit and return the new instruction. */
  if (return_p)
    pat = GEN_FCN (icode) (target, op0, op1);
  else
    pat = GEN_FCN (icode) (op0, op1);

  if (! pat)
    return NULL_RTX;

  emit_insn (pat);
  return target;
}

/* Expand builtins that take three operands.  */
static rtx
nds32_expand_triop_builtin (enum insn_code icode, tree exp, rtx target,
			    bool return_p)
{
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  rtx op1 = nds32_read_argument (exp, 1);
  rtx op2 = nds32_read_argument (exp, 2);
  int op0_num = return_p ? 1 : 0;
  int op1_num = return_p ? 2 : 1;
  int op2_num = return_p ? 3 : 2;

  if (return_p)
    target = nds32_legitimize_target (icode, target);

  op0 = nds32_legitimize_argument (icode, op0_num, op0);
  op1 = nds32_legitimize_argument (icode, op1_num, op1);
  op2 = nds32_legitimize_argument (icode, op2_num, op2);

  /* Emit and return the new instruction. */
  if (return_p)
    pat = GEN_FCN (icode) (target, op0, op1, op2);
  else
    pat = GEN_FCN (icode) (op0, op1, op2);

  if (! pat)
    return NULL_RTX;

  emit_insn (pat);
  return target;
}

/* Expand builtins that take three operands and the third is immediate.  */
static rtx
nds32_expand_triopimm_builtin (enum insn_code icode, tree exp, rtx target,
			       bool return_p, const char *name)
{
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  rtx op1 = nds32_read_argument (exp, 1);
  rtx op2 = nds32_read_argument (exp, 2);
  int op0_num = return_p ? 1 : 0;
  int op1_num = return_p ? 2 : 1;
  int op2_num = return_p ? 3 : 2;

  if (return_p)
    target = nds32_legitimize_target (icode, target);

  if (!nds32_check_constant_argument (icode, op2_num, op2, name))
    return NULL_RTX;

  op0 = nds32_legitimize_argument (icode, op0_num, op0);
  op1 = nds32_legitimize_argument (icode, op1_num, op1);
  op2 = nds32_legitimize_argument (icode, op2_num, op2);

  /* Emit and return the new instruction. */
  if (return_p)
    pat = GEN_FCN (icode) (target, op0, op1, op2);
  else
    pat = GEN_FCN (icode) (op0, op1, op2);

  if (! pat)
    return NULL_RTX;

  emit_insn (pat);
  return target;
}

/* Expand builtins for load.  */
static rtx
nds32_expand_builtin_load (enum insn_code icode, tree exp, rtx target)
{
  /* Load address format is [$ra + $rb],
     but input arguments not enough,
     so we need another temp register as $rb.
     Generating assembly code:
       movi $temp, 0
       llw  $rt, [$ra + $temp] */
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  rtx addr_helper = gen_reg_rtx (insn_data[icode].operand[1].mode);

  target = nds32_legitimize_target (icode, target);
  op0 = nds32_legitimize_argument (icode, 1, op0);

  /* Emit and return the new instruction. */
  pat = GEN_FCN (icode) (target, op0, addr_helper);
  if (!pat)
    return NULL_RTX;

  emit_move_insn (addr_helper, GEN_INT (0));
  emit_insn (pat);
  return target;
}

/* Expand builtins for store.  */
static rtx
nds32_expand_builtin_store (enum insn_code icode, tree exp, rtx target)
{
  /* Store address format is [$ra + $rb],
     but input arguments not enough,
     so we need another temp register as $rb.
     Generating assembly code:
       movi $temp, 0
       store  $rt, [$ra + $temp] */
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  rtx op1 = nds32_read_argument (exp, 1);
  rtx addr_helper = gen_reg_rtx (insn_data[icode].operand[1].mode);

  op0 = nds32_legitimize_argument (icode, 0, op0);
  op1 = nds32_legitimize_argument (icode, 2, op1);

  /* Emit and return the new instruction. */
  pat = GEN_FCN (icode) (op0, addr_helper, op1);
  if (! pat)
    return NULL_RTX;

  emit_move_insn (addr_helper, GEN_INT (0));
  emit_insn (pat);
  return target;
}

/* Expand cctl builtins.  */
static rtx
nds32_expand_cctl_builtin (enum insn_code icode, tree exp, rtx target,
			   bool return_p, const char *name)
{
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  rtx op1 = nds32_read_argument (exp, 1);
  int op0_num = return_p ? 1 : 0;
  int op1_num = return_p ? 2 : 1;

  if (return_p)
    target = nds32_legitimize_target (icode, target);

  if (!nds32_check_constant_argument (icode, op0_num, op0, name))
    return NULL_RTX;

  op0 = nds32_legitimize_argument (icode, op0_num, op0);
  op1 = nds32_legitimize_argument (icode, op1_num, op1);

  /* Emit and return the new instruction. */
  if (icode == CODE_FOR_cctl_idx_write)
    {
      /* cctl_idx_write is three argument,
	 so create operand2 for cctl_idx_write pattern.  */
      rtx op2 = nds32_read_argument (exp, 2);
      op2 = nds32_legitimize_argument (icode, 2, op2);
      pat = GEN_FCN (icode) (op0, op1, op2);
    }
  else if (return_p)
    pat = GEN_FCN (icode) (target, op0, op1);
  else
    pat = GEN_FCN (icode) (op0, op1);

  if (! pat)
    return NULL_RTX;

  emit_insn (pat);
  return target;
}

/* Expand scw builtins.  */
static rtx
nds32_expand_scw_builtin (enum insn_code icode, tree exp, rtx target)
{
  /* SCW address format is [$ra + $rb], but input arguments not enough,
     so we need another temp register as $rb.
     Generating assembly code:
	movi $temp, 0
	scw  $rt, [$ra + $temp] */
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  rtx op1 = nds32_read_argument (exp, 1);
  rtx addr_helper = gen_reg_rtx (insn_data[icode].operand[1].mode);

  target = nds32_legitimize_target (icode, target);
  op0 = nds32_legitimize_argument (icode, 1, op0);
  op1 = nds32_legitimize_argument (icode, 2, op1);

  /* Emit and return the new instruction. */
  pat = GEN_FCN (icode) (target, op0, addr_helper, target);

  if (!pat)
    return NULL_RTX;

  emit_move_insn (addr_helper, GEN_INT (0));
  emit_move_insn (target, op1);
  emit_insn (pat);
  return target;
}

/* Expand set int priority builtins. */
static rtx
nds32_expand_priority_builtin (enum insn_code icode, tree exp, rtx target,
			       const char *name)
{
  rtx pat;
  rtx op0 = nds32_read_argument (exp, 0);
  rtx op1 = nds32_read_argument (exp, 1);

  /* set_int_priority intrinsic function that two arguments are immediate,
     so check whether auguments are immedite.  */

  if (!nds32_check_constant_argument (icode, 0, op0, name))
    return NULL_RTX;

  if (!nds32_check_constant_argument (icode, 1, op1, name))
    return NULL_RTX;

  op0 = nds32_legitimize_argument (icode, 0, op0);
  op1 = nds32_legitimize_argument (icode, 1, op1);

  /* Emit and return the new instruction. */
  pat = GEN_FCN (icode) (op0, op1);

  if (! pat)
    return NULL_RTX;

  emit_insn (pat);
  return target;
}

struct builtin_description
{
  const enum insn_code icode;
  const char *name;
  enum nds32_builtins code;
  bool return_p;
};

#define NDS32_BUILTIN(code, string, builtin) \
  { CODE_FOR_##code, "__nds32__" string, \
    NDS32_BUILTIN_##builtin, true },

#define NDS32_NO_TARGET_BUILTIN(code, string, builtin) \
  { CODE_FOR_##code, "__nds32__" string, \
    NDS32_BUILTIN_##builtin, false },

/* Intrinsics that no argument, and that return value.  */
static struct builtin_description bdesc_noarg[] =
{
  NDS32_BUILTIN(unspec_fmfcfg, "fmfcfg", FMFCFG)
  NDS32_BUILTIN(unspec_fmfcsr, "fmfcsr", FMFCSR)
  NDS32_BUILTIN(unspec_volatile_rdov, "rdov", RDOV)
  NDS32_BUILTIN(unspec_get_current_sp, "get_current_sp", GET_CURRENT_SP)
  NDS32_BUILTIN(unspec_return_address, "return_address", RETURN_ADDRESS)
  NDS32_BUILTIN(unspec_get_all_pending_int, "get_all_pending_int",
		GET_ALL_PENDING_INT)
  NDS32_BUILTIN(unspec_unaligned_feature, "unaligned_feature",
		UNALIGNED_FEATURE)
  NDS32_NO_TARGET_BUILTIN(unspec_enable_unaligned, "enable_unaligned",
			  ENABLE_UNALIGNED)
  NDS32_NO_TARGET_BUILTIN(unspec_disable_unaligned, "disable_unaligned",
			  DISABLE_UNALIGNED)
};

/* Intrinsics that take just one argument.  */
static struct builtin_description bdesc_1arg[] =
{
  NDS32_BUILTIN(unspec_ssabssi2, "abs", ABS)
  NDS32_BUILTIN(clzsi2, "clz", CLZ)
  NDS32_BUILTIN(unspec_clo, "clo", CLO)
  NDS32_BUILTIN(unspec_wsbh, "wsbh", WSBH)
  NDS32_BUILTIN(unspec_tlbop_pb, "tlbop_pb",TLBOP_PB)
  NDS32_BUILTIN(unaligned_load_hw, "unaligned_load_hw", UALOAD_HW)
  NDS32_BUILTIN(unaligned_loadsi, "unaligned_load_w", UALOAD_W)
  NDS32_BUILTIN(unaligned_loaddi, "unaligned_load_dw", UALOAD_DW)
  NDS32_NO_TARGET_BUILTIN(unspec_volatile_isync, "isync", ISYNC)
  NDS32_NO_TARGET_BUILTIN(unspec_fmtcsr, "fmtcsr", FMTCSR)
  NDS32_NO_TARGET_BUILTIN(unspec_jr_itoff, "jr_itoff", JR_ITOFF)
  NDS32_NO_TARGET_BUILTIN(unspec_jr_toff, "jr_toff", JR_TOFF)
  NDS32_NO_TARGET_BUILTIN(unspec_jral_ton, "jral_ton", JRAL_TON)
  NDS32_NO_TARGET_BUILTIN(unspec_ret_toff, "ret_toff", RET_TOFF)
  NDS32_NO_TARGET_BUILTIN(unspec_jral_iton, "jral_iton",JRAL_ITON)
  NDS32_NO_TARGET_BUILTIN(unspec_tlbop_trd, "tlbop_trd", TLBOP_TRD)
  NDS32_NO_TARGET_BUILTIN(unspec_tlbop_twr, "tlbop_twr", TLBOP_TWR)
  NDS32_NO_TARGET_BUILTIN(unspec_tlbop_rwr, "tlbop_rwr", TLBOP_RWR)
  NDS32_NO_TARGET_BUILTIN(unspec_tlbop_rwlk, "tlbop_rwlk", TLBOP_RWLK)
  NDS32_NO_TARGET_BUILTIN(unspec_tlbop_unlk, "tlbop_unlk", TLBOP_UNLK)
  NDS32_NO_TARGET_BUILTIN(unspec_tlbop_inv, "tlbop_inv", TLBOP_INV)
  NDS32_NO_TARGET_BUILTIN(unspec_ret_itoff, "ret_itoff", RET_ITOFF)
  NDS32_NO_TARGET_BUILTIN(unspec_set_current_sp,
			  "set_current_sp", SET_CURRENT_SP)
  NDS32_BUILTIN(kabsv2hi2, "kabs16", KABS16)
  NDS32_BUILTIN(kabsv2hi2, "v_kabs16", V_KABS16)
  NDS32_BUILTIN(kabsv4qi2, "kabs8", KABS8)
  NDS32_BUILTIN(kabsv4qi2, "v_kabs8", V_KABS8)
  NDS32_BUILTIN(sunpkd810, "sunpkd810", SUNPKD810)
  NDS32_BUILTIN(sunpkd810, "v_sunpkd810", V_SUNPKD810)
  NDS32_BUILTIN(sunpkd820, "sunpkd820", SUNPKD820)
  NDS32_BUILTIN(sunpkd820, "v_sunpkd820", V_SUNPKD820)
  NDS32_BUILTIN(sunpkd830, "sunpkd830", SUNPKD830)
  NDS32_BUILTIN(sunpkd830, "v_sunpkd830", V_SUNPKD830)
  NDS32_BUILTIN(sunpkd831, "sunpkd831", SUNPKD831)
  NDS32_BUILTIN(sunpkd831, "v_sunpkd831", V_SUNPKD831)
  NDS32_BUILTIN(zunpkd810, "zunpkd810", ZUNPKD810)
  NDS32_BUILTIN(zunpkd810, "v_zunpkd810", V_ZUNPKD810)
  NDS32_BUILTIN(zunpkd820, "zunpkd820", ZUNPKD820)
  NDS32_BUILTIN(zunpkd820, "v_zunpkd820", V_ZUNPKD820)
  NDS32_BUILTIN(zunpkd830, "zunpkd830", ZUNPKD830)
  NDS32_BUILTIN(zunpkd830, "v_zunpkd830", V_ZUNPKD830)
  NDS32_BUILTIN(zunpkd831, "zunpkd831", ZUNPKD831)
  NDS32_BUILTIN(zunpkd831, "v_zunpkd831", V_ZUNPKD831)
  NDS32_BUILTIN(unspec_kabs, "kabs", KABS)
  NDS32_BUILTIN(unaligned_loadv2hi, "get_unaligned_u16x2", UALOAD_U16)
  NDS32_BUILTIN(unaligned_loadv2hi, "get_unaligned_s16x2", UALOAD_S16)
  NDS32_BUILTIN(unaligned_loadv4qi, "get_unaligned_u8x4", UALOAD_U8)
  NDS32_BUILTIN(unaligned_loadv4qi, "get_unaligned_s8x4", UALOAD_S8)
};

/* Intrinsics that take just one argument. and the argument is immediate.  */
static struct builtin_description bdesc_1argimm[] =
{
  NDS32_BUILTIN(unspec_volatile_mfsr, "mfsr", MFSR)
  NDS32_BUILTIN(unspec_volatile_mfusr, "mfsr", MFUSR)
  NDS32_BUILTIN(unspec_get_pending_int, "get_pending_int", GET_PENDING_INT)
  NDS32_BUILTIN(unspec_get_int_priority, "get_int_priority", GET_INT_PRIORITY)
  NDS32_NO_TARGET_BUILTIN(unspec_trap, "trap", TRAP)
  NDS32_NO_TARGET_BUILTIN(unspec_break, "break", BREAK)
  NDS32_NO_TARGET_BUILTIN(unspec_syscall, "syscall", SYSCALL)
  NDS32_NO_TARGET_BUILTIN(unspec_enable_int, "enable_int", ENABLE_INT)
  NDS32_NO_TARGET_BUILTIN(unspec_disable_int, "disable_int", DISABLE_INT)
  NDS32_NO_TARGET_BUILTIN(unspec_clr_pending_hwint, "clr_pending_hwint",
			  CLR_PENDING_HWINT)
  NDS32_NO_TARGET_BUILTIN(unspec_set_trig_level, "set_trig_level",
			  SET_TRIG_LEVEL)
  NDS32_NO_TARGET_BUILTIN(unspec_set_trig_edge, "set_trig_edge",
			  SET_TRIG_EDGE)
  NDS32_BUILTIN(unspec_get_trig_type, "get_trig_type", GET_TRIG_TYPE)
};

/* Intrinsics that take two arguments.  */
static struct builtin_description bdesc_2arg[] =
{
  NDS32_BUILTIN(unspec_fcpynss, "fcpynss", FCPYNSS)
  NDS32_BUILTIN(unspec_fcpyss, "fcpyss", FCPYSS)
  NDS32_BUILTIN(unspec_fcpynsd, "fcpynsd", FCPYNSD)
  NDS32_BUILTIN(unspec_fcpysd, "fcpysd", FCPYSD)
  NDS32_BUILTIN(unspec_ave, "ave", AVE)
  NDS32_BUILTIN(unspec_pbsad, "pbsad", PBSAD)
  NDS32_BUILTIN(unspec_ffb, "ffb", FFB)
  NDS32_BUILTIN(unspec_ffmism, "ffmsim", FFMISM)
  NDS32_BUILTIN(unspec_flmism, "flmism", FLMISM)
  NDS32_BUILTIN(unspec_kaddw, "kaddw", KADDW)
  NDS32_BUILTIN(unspec_kaddh, "kaddh", KADDH)
  NDS32_BUILTIN(unspec_ksubw, "ksubw", KSUBW)
  NDS32_BUILTIN(unspec_ksubh, "ksubh", KSUBH)
  NDS32_BUILTIN(unspec_kdmbb, "kdmbb", KDMBB)
  NDS32_BUILTIN(unspec_kdmbb, "v_kdmbb", V_KDMBB)
  NDS32_BUILTIN(unspec_kdmbt, "kdmbt", KDMBT)
  NDS32_BUILTIN(unspec_kdmbt, "v_kdmbt", V_KDMBT)
  NDS32_BUILTIN(unspec_kdmtb, "kdmtb", KDMTB)
  NDS32_BUILTIN(unspec_kdmtb, "v_kdmtb", V_KDMTB)
  NDS32_BUILTIN(unspec_kdmtt, "kdmtt", KDMTT)
  NDS32_BUILTIN(unspec_kdmtt, "v_kdmtt", V_KDMTT)
  NDS32_BUILTIN(unspec_khmbb, "khmbb", KHMBB)
  NDS32_BUILTIN(unspec_khmbb, "v_khmbb", V_KHMBB)
  NDS32_BUILTIN(unspec_khmbt, "khmbt", KHMBT)
  NDS32_BUILTIN(unspec_khmbt, "v_khmbt", V_KHMBT)
  NDS32_BUILTIN(unspec_khmtb, "khmtb", KHMTB)
  NDS32_BUILTIN(unspec_khmtb, "v_khmtb", V_KHMTB)
  NDS32_BUILTIN(unspec_khmtt, "khmtt", KHMTT)
  NDS32_BUILTIN(unspec_khmtt, "v_khmtt", V_KHMTT)
  NDS32_BUILTIN(unspec_kslraw, "kslraw", KSLRAW)
  NDS32_BUILTIN(unspec_kslrawu, "kslraw_u", KSLRAW_U)
  NDS32_BUILTIN(rotrsi3, "rotr", ROTR)
  NDS32_BUILTIN(unspec_sva, "sva", SVA)
  NDS32_BUILTIN(unspec_svs, "svs", SVS)
  NDS32_NO_TARGET_BUILTIN(mtsr_isb, "mtsr_isb", MTSR_ISB)
  NDS32_NO_TARGET_BUILTIN(mtsr_dsb, "mtsr_dsb", MTSR_DSB)
  NDS32_NO_TARGET_BUILTIN(unspec_volatile_mtsr, "mtsr", MTSR)
  NDS32_NO_TARGET_BUILTIN(unspec_volatile_mtusr, "mtusr", MTUSR)
  NDS32_NO_TARGET_BUILTIN(unaligned_store_hw, "unaligned_store_hw", UASTORE_HW)
  NDS32_NO_TARGET_BUILTIN(unaligned_storesi, "unaligned_store_hw", UASTORE_W)
  NDS32_NO_TARGET_BUILTIN(unaligned_storedi, "unaligned_store_hw", UASTORE_DW)
  NDS32_BUILTIN(addv2hi3, "add16", ADD16)
  NDS32_BUILTIN(addv2hi3, "v_uadd16", V_UADD16)
  NDS32_BUILTIN(addv2hi3, "v_sadd16", V_SADD16)
  NDS32_BUILTIN(raddv2hi3, "radd16", RADD16)
  NDS32_BUILTIN(raddv2hi3, "v_radd16", V_RADD16)
  NDS32_BUILTIN(uraddv2hi3, "uradd16", URADD16)
  NDS32_BUILTIN(uraddv2hi3, "v_uradd16", V_URADD16)
  NDS32_BUILTIN(kaddv2hi3, "kadd16", KADD16)
  NDS32_BUILTIN(kaddv2hi3, "v_kadd16", V_KADD16)
  NDS32_BUILTIN(ukaddv2hi3, "ukadd16", UKADD16)
  NDS32_BUILTIN(ukaddv2hi3, "v_ukadd16", V_UKADD16)
  NDS32_BUILTIN(subv2hi3, "sub16", SUB16)
  NDS32_BUILTIN(subv2hi3, "v_usub16", V_USUB16)
  NDS32_BUILTIN(subv2hi3, "v_ssub16", V_SSUB16)
  NDS32_BUILTIN(rsubv2hi3, "rsub16", RSUB16)
  NDS32_BUILTIN(rsubv2hi3, "v_rsub16", V_RSUB16)
  NDS32_BUILTIN(ursubv2hi3, "ursub16", URSUB16)
  NDS32_BUILTIN(ursubv2hi3, "v_ursub16", V_URSUB16)
  NDS32_BUILTIN(ksubv2hi3, "ksub16", KSUB16)
  NDS32_BUILTIN(ksubv2hi3, "v_ksub16", V_KSUB16)
  NDS32_BUILTIN(uksubv2hi3, "uksub16", UKSUB16)
  NDS32_BUILTIN(uksubv2hi3, "v_uksub16", V_UKSUB16)
  NDS32_BUILTIN(cras16_1, "cras16", CRAS16)
  NDS32_BUILTIN(cras16_1, "v_ucras16", V_UCRAS16)
  NDS32_BUILTIN(cras16_1, "v_scras16", V_SCRAS16)
  NDS32_BUILTIN(rcras16_1, "rcras16", RCRAS16)
  NDS32_BUILTIN(rcras16_1, "v_rcras16", V_RCRAS16)
  NDS32_BUILTIN(urcras16_1, "urcras16", URCRAS16)
  NDS32_BUILTIN(urcras16_1, "v_urcras16", V_URCRAS16)
  NDS32_BUILTIN(kcras16_1, "kcras16", KCRAS16)
  NDS32_BUILTIN(kcras16_1, "v_kcras16", V_KCRAS16)
  NDS32_BUILTIN(ukcras16_1, "ukcras16", UKCRAS16)
  NDS32_BUILTIN(ukcras16_1, "v_ukcras16", V_UKCRAS16)
  NDS32_BUILTIN(crsa16_1, "crsa16", CRSA16)
  NDS32_BUILTIN(crsa16_1, "v_ucrsa16", V_UCRSA16)
  NDS32_BUILTIN(crsa16_1, "v_scrsa16", V_SCRSA16)
  NDS32_BUILTIN(rcrsa16_1, "rcrsa16", RCRSA16)
  NDS32_BUILTIN(rcrsa16_1, "v_rcrsa16", V_RCRSA16)
  NDS32_BUILTIN(urcrsa16_1, "urcrsa16", URCRSA16)
  NDS32_BUILTIN(urcrsa16_1, "v_urcrsa16", V_URCRSA16)
  NDS32_BUILTIN(kcrsa16_1, "kcrsa16", KCRSA16)
  NDS32_BUILTIN(kcrsa16_1, "v_kcrsa16", V_KCRSA16)
  NDS32_BUILTIN(ukcrsa16_1, "ukcrsa16", UKCRSA16)
  NDS32_BUILTIN(ukcrsa16_1, "v_ukcrsa16", V_UKCRSA16)
  NDS32_BUILTIN(addv4qi3, "add8", ADD8)
  NDS32_BUILTIN(addv4qi3, "v_uadd8", V_UADD8)
  NDS32_BUILTIN(addv4qi3, "v_sadd8", V_SADD8)
  NDS32_BUILTIN(raddv4qi3, "radd8", RADD8)
  NDS32_BUILTIN(raddv4qi3, "v_radd8", V_RADD8)
  NDS32_BUILTIN(uraddv4qi3, "uradd8", URADD8)
  NDS32_BUILTIN(uraddv4qi3, "v_uradd8", V_URADD8)
  NDS32_BUILTIN(kaddv4qi3, "kadd8", KADD8)
  NDS32_BUILTIN(kaddv4qi3, "v_kadd8", V_KADD8)
  NDS32_BUILTIN(ukaddv4qi3, "ukadd8", UKADD8)
  NDS32_BUILTIN(ukaddv4qi3, "v_ukadd8", V_UKADD8)
  NDS32_BUILTIN(subv4qi3, "sub8", SUB8)
  NDS32_BUILTIN(subv4qi3, "v_usub8", V_USUB8)
  NDS32_BUILTIN(subv4qi3, "v_ssub8", V_SSUB8)
  NDS32_BUILTIN(rsubv4qi3, "rsub8", RSUB8)
  NDS32_BUILTIN(rsubv4qi3, "v_rsub8", V_RSUB8)
  NDS32_BUILTIN(ursubv4qi3, "ursub8", URSUB8)
  NDS32_BUILTIN(ursubv4qi3, "v_ursub8", V_URSUB8)
  NDS32_BUILTIN(ksubv4qi3, "ksub8", KSUB8)
  NDS32_BUILTIN(ksubv4qi3, "v_ksub8", V_KSUB8)
  NDS32_BUILTIN(uksubv4qi3, "uksub8", UKSUB8)
  NDS32_BUILTIN(uksubv4qi3, "v_uksub8", V_UKSUB8)
  NDS32_BUILTIN(ashrv2hi3, "sra16", SRA16)
  NDS32_BUILTIN(ashrv2hi3, "v_sra16", V_SRA16)
  NDS32_BUILTIN(sra16_round, "sra16_u", SRA16_U)
  NDS32_BUILTIN(sra16_round, "v_sra16_u", V_SRA16_U)
  NDS32_BUILTIN(lshrv2hi3, "srl16", SRL16)
  NDS32_BUILTIN(lshrv2hi3, "v_srl16", V_SRL16)
  NDS32_BUILTIN(srl16_round, "srl16_u", SRL16_U)
  NDS32_BUILTIN(srl16_round, "v_srl16_u", V_SRL16_U)
  NDS32_BUILTIN(ashlv2hi3, "sll16", SLL16)
  NDS32_BUILTIN(ashlv2hi3, "v_sll16", V_SLL16)
  NDS32_BUILTIN(kslli16, "ksll16", KSLL16)
  NDS32_BUILTIN(kslli16, "v_ksll16", V_KSLL16)
  NDS32_BUILTIN(kslra16, "kslra16", KSLRA16)
  NDS32_BUILTIN(kslra16, "v_kslra16", V_KSLRA16)
  NDS32_BUILTIN(kslra16_round, "kslra16_u", KSLRA16_U)
  NDS32_BUILTIN(kslra16_round, "v_kslra16_u", V_KSLRA16_U)
  NDS32_BUILTIN(cmpeq16, "cmpeq16", CMPEQ16)
  NDS32_BUILTIN(cmpeq16, "v_scmpeq16", V_SCMPEQ16)
  NDS32_BUILTIN(cmpeq16, "v_ucmpeq16", V_UCMPEQ16)
  NDS32_BUILTIN(scmplt16, "scmplt16", SCMPLT16)
  NDS32_BUILTIN(scmplt16, "v_scmplt16", V_SCMPLT16)
  NDS32_BUILTIN(scmple16, "scmple16", SCMPLE16)
  NDS32_BUILTIN(scmple16, "v_scmple16", V_SCMPLE16)
  NDS32_BUILTIN(ucmplt16, "ucmplt16", UCMPLT16)
  NDS32_BUILTIN(ucmplt16, "v_ucmplt16", V_UCMPLT16)
  NDS32_BUILTIN(ucmplt16, "ucmple16", UCMPLE16)
  NDS32_BUILTIN(ucmplt16, "v_ucmple16", V_UCMPLE16)
  NDS32_BUILTIN(cmpeq8, "cmpeq8", CMPEQ8)
  NDS32_BUILTIN(cmpeq8, "v_scmpeq8", V_SCMPEQ8)
  NDS32_BUILTIN(cmpeq8, "v_ucmpeq8", V_UCMPEQ8)
  NDS32_BUILTIN(scmplt8, "scmplt8", SCMPLT8)
  NDS32_BUILTIN(scmplt8, "v_scmplt8", V_SCMPLT8)
  NDS32_BUILTIN(scmple8, "scmple8", SCMPLE8)
  NDS32_BUILTIN(scmple8, "v_scmple8", V_SCMPLE8)
  NDS32_BUILTIN(ucmplt8, "ucmplt8", UCMPLT8)
  NDS32_BUILTIN(ucmplt8, "v_ucmplt8", V_UCMPLT8)
  NDS32_BUILTIN(ucmplt8, "ucmple8", UCMPLE8)
  NDS32_BUILTIN(ucmplt8, "v_ucmple8", V_UCMPLE8)
  NDS32_BUILTIN(sminv2hi3, "smin16", SMIN16)
  NDS32_BUILTIN(sminv2hi3, "v_smin16", V_SMIN16)
  NDS32_BUILTIN(uminv2hi3, "umin16", UMIN16)
  NDS32_BUILTIN(uminv2hi3, "v_umin16", V_UMIN16)
  NDS32_BUILTIN(smaxv2hi3, "smax16", SMAX16)
  NDS32_BUILTIN(smaxv2hi3, "v_smax16", V_SMAX16)
  NDS32_BUILTIN(umaxv2hi3, "umax16", UMAX16)
  NDS32_BUILTIN(umaxv2hi3, "v_umax16", V_UMAX16)
  NDS32_BUILTIN(khm16, "khm16", KHM16)
  NDS32_BUILTIN(khm16, "v_khm16", V_KHM16)
  NDS32_BUILTIN(khmx16, "khmx16", KHMX16)
  NDS32_BUILTIN(khmx16, "v_khmx16", V_KHMX16)
  NDS32_BUILTIN(sminv4qi3, "smin8", SMIN8)
  NDS32_BUILTIN(sminv4qi3, "v_smin8", V_SMIN8)
  NDS32_BUILTIN(uminv4qi3, "umin8", UMIN8)
  NDS32_BUILTIN(uminv4qi3, "v_umin8", V_UMIN8)
  NDS32_BUILTIN(smaxv4qi3, "smax8", SMAX8)
  NDS32_BUILTIN(smaxv4qi3, "v_smax8", V_SMAX8)
  NDS32_BUILTIN(umaxv4qi3, "umax8", UMAX8)
  NDS32_BUILTIN(umaxv4qi3, "v_umax8", V_UMAX8)
  NDS32_BUILTIN(raddsi3, "raddw", RADDW)
  NDS32_BUILTIN(uraddsi3, "uraddw", URADDW)
  NDS32_BUILTIN(rsubsi3, "rsubw", RSUBW)
  NDS32_BUILTIN(ursubsi3, "ursubw", URSUBW)
  NDS32_BUILTIN(sraiu, "sra_u", SRA_U)
  NDS32_BUILTIN(kssl, "ksll", KSLL)
  NDS32_BUILTIN(pkbb, "pkbb16", PKBB16)
  NDS32_BUILTIN(pkbb, "v_pkbb16", V_PKBB16)
  NDS32_BUILTIN(pkbt, "pkbt16", PKBT16)
  NDS32_BUILTIN(pkbt, "v_pkbt16", V_PKBT16)
  NDS32_BUILTIN(pktb, "pktb16", PKTB16)
  NDS32_BUILTIN(pktb, "v_pktb16", V_PKTB16)
  NDS32_BUILTIN(pktt, "pktt16", PKTT16)
  NDS32_BUILTIN(pktt, "v_pktt16", V_PKTT16)
  NDS32_BUILTIN(smulsi3_highpart, "smmul", SMMUL)
  NDS32_BUILTIN(smmul_round, "smmul_u", SMMUL_U)
  NDS32_BUILTIN(smmwb, "smmwb", SMMWB)
  NDS32_BUILTIN(smmwb, "v_smmwb", V_SMMWB)
  NDS32_BUILTIN(smmwb_round, "smmwb_u", SMMWB_U)
  NDS32_BUILTIN(smmwb_round, "v_smmwb_u", V_SMMWB_U)
  NDS32_BUILTIN(smmwt, "smmwt", SMMWT)
  NDS32_BUILTIN(smmwt, "v_smmwt", V_SMMWT)
  NDS32_BUILTIN(smmwt_round, "smmwt_u", SMMWT_U)
  NDS32_BUILTIN(smmwt_round, "v_smmwt_u", V_SMMWT_U)
  NDS32_BUILTIN(smbb, "smbb", SMBB)
  NDS32_BUILTIN(smbb, "v_smbb", V_SMBB)
  NDS32_BUILTIN(smbt, "smbt", SMBT)
  NDS32_BUILTIN(smbt, "v_smbt", V_SMBT)
  NDS32_BUILTIN(smtt, "smtt", SMTT)
  NDS32_BUILTIN(smtt, "v_smtt", V_SMTT)
  NDS32_BUILTIN(kmda, "kmda", KMDA)
  NDS32_BUILTIN(kmda, "v_kmda", V_KMDA)
  NDS32_BUILTIN(kmxda, "kmxda", KMXDA)
  NDS32_BUILTIN(kmxda, "v_kmxda", V_KMXDA)
  NDS32_BUILTIN(smds, "smds", SMDS)
  NDS32_BUILTIN(smds, "v_smds", V_SMDS)
  NDS32_BUILTIN(smdrs, "smdrs", SMDRS)
  NDS32_BUILTIN(smdrs, "v_smdrs", V_SMDRS)
  NDS32_BUILTIN(smxdsv, "smxds", SMXDS)
  NDS32_BUILTIN(smxdsv, "v_smxds", V_SMXDS)
  NDS32_BUILTIN(smal1, "smal", SMAL)
  NDS32_BUILTIN(smal1, "v_smal", V_SMAL)
  NDS32_BUILTIN(bitrev, "bitrev", BITREV)
  NDS32_BUILTIN(wext, "wext", WEXT)
  NDS32_BUILTIN(adddi3, "sadd64", SADD64)
  NDS32_BUILTIN(adddi3, "uadd64", UADD64)
  NDS32_BUILTIN(radddi3, "radd64", RADD64)
  NDS32_BUILTIN(uradddi3, "uradd64", URADD64)
  NDS32_BUILTIN(kadddi3, "kadd64", KADD64)
  NDS32_BUILTIN(ukadddi3, "ukadd64", UKADD64)
  NDS32_BUILTIN(subdi3, "ssub64", SSUB64)
  NDS32_BUILTIN(subdi3, "usub64", USUB64)
  NDS32_BUILTIN(rsubdi3, "rsub64", RSUB64)
  NDS32_BUILTIN(ursubdi3, "ursub64", URSUB64)
  NDS32_BUILTIN(ksubdi3, "ksub64", KSUB64)
  NDS32_BUILTIN(uksubdi3, "uksub64", UKSUB64)
  NDS32_BUILTIN(smul16, "smul16", SMUL16)
  NDS32_BUILTIN(smul16, "v_smul16", V_SMUL16)
  NDS32_BUILTIN(smulx16, "smulx16", SMULX16)
  NDS32_BUILTIN(smulx16, "v_smulx16", V_SMULX16)
  NDS32_BUILTIN(umul16, "umul16", UMUL16)
  NDS32_BUILTIN(umul16, "v_umul16", V_UMUL16)
  NDS32_BUILTIN(umulx16, "umulx16", UMULX16)
  NDS32_BUILTIN(umulx16, "v_umulx16", V_UMULX16)
  NDS32_BUILTIN(kwmmul, "kwmmul", KWMMUL)
  NDS32_BUILTIN(kwmmul_round, "kwmmul_u", KWMMUL_U)
  NDS32_NO_TARGET_BUILTIN(unaligned_storev2hi,
			  "put_unaligned_u16x2", UASTORE_U16)
  NDS32_NO_TARGET_BUILTIN(unaligned_storev2hi,
			  "put_unaligned_s16x2", UASTORE_S16)
  NDS32_NO_TARGET_BUILTIN(unaligned_storev4qi, "put_unaligned_u8x4", UASTORE_U8)
  NDS32_NO_TARGET_BUILTIN(unaligned_storev4qi, "put_unaligned_s8x4", UASTORE_S8)
};

/* Two-argument intrinsics with an immediate second argument.  */
static struct builtin_description bdesc_2argimm[] =
{
  NDS32_BUILTIN(unspec_bclr, "bclr", BCLR)
  NDS32_BUILTIN(unspec_bset, "bset", BSET)
  NDS32_BUILTIN(unspec_btgl, "btgl", BTGL)
  NDS32_BUILTIN(unspec_btst, "btst", BTST)
  NDS32_BUILTIN(unspec_clip, "clip", CLIP)
  NDS32_BUILTIN(unspec_clips, "clips", CLIPS)
  NDS32_NO_TARGET_BUILTIN(unspec_teqz, "teqz", TEQZ)
  NDS32_NO_TARGET_BUILTIN(unspec_tnez, "tnez", TNEZ)
  NDS32_BUILTIN(ashrv2hi3, "srl16", SRL16)
  NDS32_BUILTIN(ashrv2hi3, "v_srl16", V_SRL16)
  NDS32_BUILTIN(srl16_round, "srl16_u", SRL16_U)
  NDS32_BUILTIN(srl16_round, "v_srl16_u", V_SRL16_U)
  NDS32_BUILTIN(kslli16, "ksll16", KSLL16)
  NDS32_BUILTIN(kslli16, "v_ksll16", V_KSLL16)
  NDS32_BUILTIN(sclip16, "sclip16", SCLIP16)
  NDS32_BUILTIN(sclip16, "v_sclip16", V_SCLIP16)
  NDS32_BUILTIN(uclip16, "uclip16", UCLIP16)
  NDS32_BUILTIN(uclip16, "v_uclip16", V_UCLIP16)
  NDS32_BUILTIN(sraiu, "sra_u", SRA_U)
  NDS32_BUILTIN(kssl, "ksll", KSLL)
  NDS32_BUILTIN(bitrev, "bitrev", BITREV)
  NDS32_BUILTIN(wext, "wext", WEXT)
  NDS32_BUILTIN(uclip32, "uclip32", UCLIP32)
  NDS32_BUILTIN(sclip32, "sclip32", SCLIP32)
};

/* Intrinsics that take three arguments.  */
static struct builtin_description bdesc_3arg[] =
{
  NDS32_BUILTIN(unspec_pbsada, "pbsada", PBSADA)
  NDS32_NO_TARGET_BUILTIN(bse, "bse", BSE)
  NDS32_NO_TARGET_BUILTIN(bsp, "bsp", BSP)
  NDS32_BUILTIN(kmabb, "kmabb", KMABB)
  NDS32_BUILTIN(kmabb, "v_kmabb", V_KMABB)
  NDS32_BUILTIN(kmabt, "kmabt", KMABT)
  NDS32_BUILTIN(kmabt, "v_kmabt", V_KMABT)
  NDS32_BUILTIN(kmatt, "kmatt", KMATT)
  NDS32_BUILTIN(kmatt, "v_kmatt", V_KMATT)
  NDS32_BUILTIN(kmada, "kmada", KMADA)
  NDS32_BUILTIN(kmada, "v_kmada", V_KMADA)
  NDS32_BUILTIN(kmaxda, "kmaxda", KMAXDA)
  NDS32_BUILTIN(kmaxda, "v_kmaxda", V_KMAXDA)
  NDS32_BUILTIN(kmads, "kmads", KMADS)
  NDS32_BUILTIN(kmads, "v_kmads", V_KMADS)
  NDS32_BUILTIN(kmadrs, "kmadrs", KMADRS)
  NDS32_BUILTIN(kmadrs, "v_kmadrs", V_KMADRS)
  NDS32_BUILTIN(kmaxds, "kmaxds", KMAXDS)
  NDS32_BUILTIN(kmaxds, "v_kmaxds", V_KMAXDS)
  NDS32_BUILTIN(kmsda, "kmsda", KMSDA)
  NDS32_BUILTIN(kmsda, "v_kmsda", V_KMSDA)
  NDS32_BUILTIN(kmsxda, "kmsxda", KMSXDA)
  NDS32_BUILTIN(kmsxda, "v_kmsxda", V_KMSXDA)
  NDS32_BUILTIN(bpick1, "bpick", BPICK)
  NDS32_BUILTIN(smar64_1, "smar64", SMAR64)
  NDS32_BUILTIN(smsr64, "smsr64", SMSR64)
  NDS32_BUILTIN(umar64_1, "umar64", UMAR64)
  NDS32_BUILTIN(umsr64, "umsr64", UMSR64)
  NDS32_BUILTIN(kmar64_1, "kmar64", KMAR64)
  NDS32_BUILTIN(kmsr64, "kmsr64", KMSR64)
  NDS32_BUILTIN(ukmar64_1, "ukmar64", UKMAR64)
  NDS32_BUILTIN(ukmsr64, "ukmsr64", UKMSR64)
  NDS32_BUILTIN(smalbb, "smalbb", SMALBB)
  NDS32_BUILTIN(smalbb, "v_smalbb", V_SMALBB)
  NDS32_BUILTIN(smalbt, "smalbt", SMALBT)
  NDS32_BUILTIN(smalbt, "v_smalbt", V_SMALBT)
  NDS32_BUILTIN(smaltt, "smaltt", SMALTT)
  NDS32_BUILTIN(smaltt, "v_smaltt", V_SMALTT)
  NDS32_BUILTIN(smalda1, "smalda", SMALDA)
  NDS32_BUILTIN(smalda1, "v_smalda", V_SMALDA)
  NDS32_BUILTIN(smalxda1, "smalxda", SMALXDA)
  NDS32_BUILTIN(smalxda1, "v_smalxda", V_SMALXDA)
  NDS32_BUILTIN(smalds1, "smalds", SMALDS)
  NDS32_BUILTIN(smalds1, "v_smalds", V_SMALDS)
  NDS32_BUILTIN(smaldrs3, "smaldrs", SMALDRS)
  NDS32_BUILTIN(smaldrs3, "v_smaldrs", V_SMALDRS)
  NDS32_BUILTIN(smalxds1, "smalxds", SMALXDS)
  NDS32_BUILTIN(smalxds1, "v_smalxds", V_SMALXDS)
  NDS32_BUILTIN(smslda1, "smslda", SMSLDA)
  NDS32_BUILTIN(smslda1, "v_smslda", V_SMSLDA)
  NDS32_BUILTIN(smslxda1, "smslxda", SMSLXDA)
  NDS32_BUILTIN(smslxda1, "v_smslxda", V_SMSLXDA)
  NDS32_BUILTIN(kmmawb, "kmmawb", KMMAWB)
  NDS32_BUILTIN(kmmawb, "v_kmmawb", V_KMMAWB)
  NDS32_BUILTIN(kmmawb_round, "kmmawb_u", KMMAWB_U)
  NDS32_BUILTIN(kmmawb_round, "v_kmmawb_u", V_KMMAWB_U)
  NDS32_BUILTIN(kmmawt, "kmmawt", KMMAWT)
  NDS32_BUILTIN(kmmawt, "v_kmmawt", V_KMMAWT)
  NDS32_BUILTIN(kmmawt_round, "kmmawt_u", KMMAWT_U)
  NDS32_BUILTIN(kmmawt_round, "v_kmmawt_u", V_KMMAWT_U)
  NDS32_BUILTIN(kmmac, "kmmac", KMMAC)
  NDS32_BUILTIN(kmmac_round, "kmmac_u", KMMAC_U)
  NDS32_BUILTIN(kmmsb, "kmmsb", KMMSB)
  NDS32_BUILTIN(kmmsb_round, "kmmsb_u", KMMSB_U)
};

/* Three-argument intrinsics with an immediate third argument.  */
static struct builtin_description bdesc_3argimm[] =
{
  NDS32_NO_TARGET_BUILTIN(prefetch_qw, "prefetch_qw", DPREF_QW)
  NDS32_NO_TARGET_BUILTIN(prefetch_hw, "prefetch_hw", DPREF_HW)
  NDS32_NO_TARGET_BUILTIN(prefetch_w, "prefetch_w", DPREF_W)
  NDS32_NO_TARGET_BUILTIN(prefetch_dw, "prefetch_dw", DPREF_DW)
  NDS32_BUILTIN(insb, "insb", INSB)
};

/* Intrinsics that load a value.  */
static struct builtin_description bdesc_load[] =
{
  NDS32_BUILTIN(unspec_volatile_llw, "llw", LLW)
  NDS32_BUILTIN(unspec_lwup, "lwup", LWUP)
  NDS32_BUILTIN(unspec_lbup, "lbup", LBUP)
};

/* Intrinsics that store a value.  */
static struct builtin_description bdesc_store[] =
{
  NDS32_BUILTIN(unspec_swup, "swup", SWUP)
  NDS32_BUILTIN(unspec_sbup, "sbup", SBUP)
};

static struct builtin_description bdesc_cctl[] =
{
  NDS32_BUILTIN(cctl_idx_read, "cctl_idx_read", CCTL_IDX_READ)
  NDS32_NO_TARGET_BUILTIN(cctl_idx_write, "cctl_idx_write", CCTL_IDX_WRITE)
  NDS32_NO_TARGET_BUILTIN(cctl_va_lck, "cctl_va_lck", CCTL_VA_LCK)
  NDS32_NO_TARGET_BUILTIN(cctl_idx_wbinval,
			  "cctl_idx_wbinval", CCTL_IDX_WBINVAL)
  NDS32_NO_TARGET_BUILTIN(cctl_va_wbinval_l1,
			  "cctl_va_wbinval_l1", CCTL_VA_WBINVAL_L1)
  NDS32_NO_TARGET_BUILTIN(cctl_va_wbinval_la,
			  "cctl_va_wbinval_la", CCTL_VA_WBINVAL_LA)
};

rtx
nds32_expand_builtin_impl (tree exp,
			   rtx target,
			   rtx subtarget ATTRIBUTE_UNUSED,
			   enum machine_mode mode ATTRIBUTE_UNUSED,
			   int ignore ATTRIBUTE_UNUSED)
{
  tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
  unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
  unsigned i;
  struct builtin_description *d;

  if (!NDS32_EXT_DSP_P ()
      && fcode > NDS32_BUILTIN_DSP_BEGIN
      && fcode < NDS32_BUILTIN_DSP_END)
    error ("don%'t support DSP extension instructions");

  switch (fcode)
    {
    /* FPU Register Transfer.  */
    case NDS32_BUILTIN_FMFCFG:
    case NDS32_BUILTIN_FMFCSR:
    case NDS32_BUILTIN_FMTCSR:
    case NDS32_BUILTIN_FCPYNSS:
    case NDS32_BUILTIN_FCPYSS:
      /* Both v3s and v3f toolchains define TARGET_FPU_SINGLE.  */
      if (!TARGET_FPU_SINGLE)
	{
	  error ("this builtin function is only available "
		 "on the v3s or v3f toolchain");
	  return NULL_RTX;
	}
      break;

    /* FPU Register Transfer.  */
    case NDS32_BUILTIN_FCPYNSD:
    case NDS32_BUILTIN_FCPYSD:
      /* Only v3f toolchain defines TARGET_FPU_DOUBLE.  */
      if (!TARGET_FPU_DOUBLE)
	{
	  error ("this builtin function is only available "
		 "on the v3f toolchain");
	  return NULL_RTX;
	}
      break;

    /* Load and Store  */
    case NDS32_BUILTIN_LLW:
    case NDS32_BUILTIN_LWUP:
    case NDS32_BUILTIN_LBUP:
    case NDS32_BUILTIN_SCW:
    case NDS32_BUILTIN_SWUP:
    case NDS32_BUILTIN_SBUP:
      if (TARGET_ISA_V3M)
	{
	  error ("this builtin function not support "
		 "on the v3m toolchain");
	  return NULL_RTX;
	}
      break;

    /* Performance Extension  */
    case NDS32_BUILTIN_ABS:
    case NDS32_BUILTIN_AVE:
    case NDS32_BUILTIN_BCLR:
    case NDS32_BUILTIN_BSET:
    case NDS32_BUILTIN_BTGL:
    case NDS32_BUILTIN_BTST:
    case NDS32_BUILTIN_CLIP:
    case NDS32_BUILTIN_CLIPS:
    case NDS32_BUILTIN_CLZ:
    case NDS32_BUILTIN_CLO:
      if (!TARGET_EXT_PERF)
	{
	  error ("don%'t support performance extension instructions");
	  return NULL_RTX;
	}
      break;

    /* Performance Extension 2  */
    case NDS32_BUILTIN_PBSAD:
    case NDS32_BUILTIN_PBSADA:
    case NDS32_BUILTIN_BSE:
    case NDS32_BUILTIN_BSP:
      if (!TARGET_EXT_PERF2)
	{
	  error ("don%'t support performance extension "
		 "version 2 instructions");
	  return NULL_RTX;
	}
      break;

    /* String Extension  */
    case NDS32_BUILTIN_FFB:
    case NDS32_BUILTIN_FFMISM:
    case NDS32_BUILTIN_FLMISM:
      if (!TARGET_EXT_STRING)
	{
	  error ("don%'t support string extension instructions");
	  return NULL_RTX;
	}
      break;

    default:
      break;
    }

  /* Since there are no result and operands, we can simply emit this rtx.  */
  switch (fcode)
    {
    case NDS32_BUILTIN_ISB:
      emit_insn (gen_unspec_volatile_isb ());
      return target;
    case NDS32_BUILTIN_DSB:
      emit_insn (gen_unspec_dsb ());
      return target;
    case NDS32_BUILTIN_MSYNC_ALL:
      emit_insn (gen_unspec_msync_all ());
      return target;
    case NDS32_BUILTIN_MSYNC_STORE:
      emit_insn (gen_unspec_msync_store ());
      return target;
    case NDS32_BUILTIN_SETGIE_EN:
      emit_insn (gen_unspec_volatile_setgie_en ());
      emit_insn (gen_unspec_dsb ());
      return target;
    case NDS32_BUILTIN_SETGIE_DIS:
      emit_insn (gen_unspec_volatile_setgie_dis ());
      emit_insn (gen_unspec_dsb ());
      return target;
    case NDS32_BUILTIN_GIE_DIS:
      emit_insn (gen_unspec_volatile_setgie_dis ());
      emit_insn (gen_unspec_dsb ());
      return target;
    case NDS32_BUILTIN_GIE_EN:
      emit_insn (gen_unspec_volatile_setgie_en ());
      emit_insn (gen_unspec_dsb ());
      return target;
    case NDS32_BUILTIN_SET_PENDING_SWINT:
      emit_insn (gen_unspec_set_pending_swint ());
      return target;
    case NDS32_BUILTIN_CLR_PENDING_SWINT:
      emit_insn (gen_unspec_clr_pending_swint ());
      return target;
    case NDS32_BUILTIN_CCTL_L1D_INVALALL:
      emit_insn (gen_cctl_l1d_invalall());
      return target;
    case NDS32_BUILTIN_CCTL_L1D_WBALL_ALVL:
      emit_insn (gen_cctl_l1d_wball_alvl());
      return target;
    case NDS32_BUILTIN_CCTL_L1D_WBALL_ONE_LVL:
      emit_insn (gen_cctl_l1d_wball_one_lvl());
      return target;
    case NDS32_BUILTIN_CLROV:
      emit_insn (gen_unspec_volatile_clrov ());
      return target;
    case NDS32_BUILTIN_STANDBY_NO_WAKE_GRANT:
      emit_insn (gen_unspec_standby_no_wake_grant ());
      return target;
    case NDS32_BUILTIN_STANDBY_WAKE_GRANT:
      emit_insn (gen_unspec_standby_wake_grant ());
      return target;
    case NDS32_BUILTIN_STANDBY_WAKE_DONE:
      emit_insn (gen_unspec_standby_wait_done ());
      return target;
    case NDS32_BUILTIN_SETEND_BIG:
      emit_insn (gen_unspec_setend_big ());
      return target;
    case NDS32_BUILTIN_SETEND_LITTLE:
      emit_insn (gen_unspec_setend_little ());
      return target;
    case NDS32_BUILTIN_NOP:
      emit_insn (gen_unspec_nop ());
      return target;
    case NDS32_BUILTIN_SCHE_BARRIER:
      emit_insn (gen_blockage ());
      return target;
    case NDS32_BUILTIN_TLBOP_FLUA:
      emit_insn (gen_unspec_tlbop_flua ());
      return target;
    case NDS32_BUILTIN_SCW:
      return nds32_expand_scw_builtin (CODE_FOR_unspec_volatile_scw,
				       exp, target);
    case NDS32_BUILTIN_SET_INT_PRIORITY:
      return nds32_expand_priority_builtin (CODE_FOR_unspec_set_int_priority,
					    exp, target,
					    "__nds32__set_int_priority");
      return target;
    default:
      break;
    }

  /* Expand groups of builtins.  */
  for (i = 0, d = bdesc_noarg; i < ARRAY_SIZE (bdesc_noarg); i++, d++)
    if (d->code == fcode)
      return nds32_expand_noarg_builtin (d->icode, target);

  for (i = 0, d = bdesc_1arg; i < ARRAY_SIZE (bdesc_1arg); i++, d++)
    if (d->code == fcode)
      return nds32_expand_unop_builtin (d->icode, exp, target, d->return_p);

  for (i = 0, d = bdesc_1argimm; i < ARRAY_SIZE (bdesc_1argimm); i++, d++)
    if (d->code == fcode)
      return nds32_expand_unopimm_builtin (d->icode, exp, target,
					   d->return_p, d->name);

  for (i = 0, d = bdesc_2arg; i < ARRAY_SIZE (bdesc_2arg); i++, d++)
    if (d->code == fcode)
      return nds32_expand_binop_builtin (d->icode, exp, target, d->return_p);

  for (i = 0, d = bdesc_2argimm; i < ARRAY_SIZE (bdesc_2argimm); i++, d++)
    if (d->code == fcode)
      return nds32_expand_binopimm_builtin (d->icode, exp, target,
					    d->return_p, d->name);

  for (i = 0, d = bdesc_3arg; i < ARRAY_SIZE (bdesc_3arg); i++, d++)
    if (d->code == fcode)
      return nds32_expand_triop_builtin (d->icode, exp, target, d->return_p);

  for (i = 0, d = bdesc_3argimm; i < ARRAY_SIZE (bdesc_3argimm); i++, d++)
    if (d->code == fcode)
      return nds32_expand_triopimm_builtin (d->icode, exp, target,
					    d->return_p, d->name);

  for (i = 0, d = bdesc_load; i < ARRAY_SIZE (bdesc_load); i++, d++)
    if (d->code == fcode)
      return nds32_expand_builtin_load (d->icode, exp, target);

  for (i = 0, d = bdesc_store; i < ARRAY_SIZE (bdesc_store); i++, d++)
    if (d->code == fcode)
      return nds32_expand_builtin_store (d->icode, exp, target);

  for (i = 0, d = bdesc_cctl; i < ARRAY_SIZE (bdesc_cctl); i++, d++)
    if (d->code == fcode)
      return nds32_expand_cctl_builtin (d->icode, exp, target,
					d->return_p, d->name);

  return NULL_RTX;
}

static GTY(()) tree nds32_builtin_decls[NDS32_BUILTIN_COUNT];

/* Return the NDS32 builtin for CODE.  */
tree
nds32_builtin_decl_impl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)
{
  if (code >= NDS32_BUILTIN_COUNT)
    return error_mark_node;

  return nds32_builtin_decls[code];
}

void
nds32_init_builtins_impl (void)
{
#define ADD_NDS32_BUILTIN0(NAME, RET_TYPE, CODE)		\
  nds32_builtin_decls[NDS32_BUILTIN_ ## CODE] =			\
  add_builtin_function ("__builtin_nds32_" NAME,		\
			build_function_type_list (RET_TYPE##_type_node, \
						  NULL_TREE),		\
			NDS32_BUILTIN_ ## CODE, BUILT_IN_MD, NULL, NULL_TREE)

#define ADD_NDS32_BUILTIN1(NAME, RET_TYPE, ARG_TYPE, CODE)	\
  nds32_builtin_decls[NDS32_BUILTIN_ ## CODE] =			\
  add_builtin_function ("__builtin_nds32_" NAME,		\
			build_function_type_list (RET_TYPE##_type_node, \
						  ARG_TYPE##_type_node, \
						  NULL_TREE),		\
			NDS32_BUILTIN_ ## CODE, BUILT_IN_MD, NULL, NULL_TREE)

#define ADD_NDS32_BUILTIN2(NAME, RET_TYPE, ARG_TYPE1, ARG_TYPE2, CODE)	\
  nds32_builtin_decls[NDS32_BUILTIN_ ## CODE] =				\
  add_builtin_function ("__builtin_nds32_" NAME,			\
			build_function_type_list (RET_TYPE##_type_node, \
						  ARG_TYPE1##_type_node,\
						  ARG_TYPE2##_type_node,\
						  NULL_TREE),		\
			NDS32_BUILTIN_ ## CODE, BUILT_IN_MD, NULL, NULL_TREE)

#define ADD_NDS32_BUILTIN3(NAME, RET_TYPE,				\
			   ARG_TYPE1, ARG_TYPE2, ARG_TYPE3, CODE)	\
  nds32_builtin_decls[NDS32_BUILTIN_ ## CODE] =				\
  add_builtin_function ("__builtin_nds32_" NAME,			\
			build_function_type_list (RET_TYPE##_type_node,	\
						  ARG_TYPE1##_type_node,\
						  ARG_TYPE2##_type_node,\
						  ARG_TYPE3##_type_node,\
						  NULL_TREE),		\
			NDS32_BUILTIN_ ## CODE, BUILT_IN_MD, NULL, NULL_TREE)

  /* Looking for return type and argument can be found in tree.h file.  */
  tree ptr_char_type_node = build_pointer_type (char_type_node);
  tree ptr_uchar_type_node = build_pointer_type (unsigned_char_type_node);
  tree ptr_ushort_type_node = build_pointer_type (short_unsigned_type_node);
  tree ptr_short_type_node = build_pointer_type (short_integer_type_node);
  tree ptr_uint_type_node = build_pointer_type (unsigned_type_node);
  tree ptr_ulong_type_node = build_pointer_type (long_long_unsigned_type_node);
  tree v4qi_type_node = build_vector_type (intQI_type_node, 4);
  tree u_v4qi_type_node = build_vector_type (unsigned_intQI_type_node, 4);
  tree v2hi_type_node = build_vector_type (intHI_type_node, 2);
  tree u_v2hi_type_node = build_vector_type (unsigned_intHI_type_node, 2);
  tree v2si_type_node = build_vector_type (intSI_type_node, 2);
  tree u_v2si_type_node = build_vector_type (unsigned_intSI_type_node, 2);

  /* Cache.  */
  ADD_NDS32_BUILTIN1 ("isync", void, ptr_uint, ISYNC);
  ADD_NDS32_BUILTIN0 ("isb", void, ISB);
  ADD_NDS32_BUILTIN0 ("dsb", void, DSB);
  ADD_NDS32_BUILTIN0 ("msync_all", void, MSYNC_ALL);
  ADD_NDS32_BUILTIN0 ("msync_store", void, MSYNC_STORE);

  /* Register Transfer.  */
  ADD_NDS32_BUILTIN1 ("mfsr", unsigned, integer, MFSR);
  ADD_NDS32_BUILTIN1 ("mfusr", unsigned, integer, MFUSR);
  ADD_NDS32_BUILTIN2 ("mtsr", void, unsigned, integer, MTSR);
  ADD_NDS32_BUILTIN2 ("mtsr_isb", void, unsigned, integer, MTSR_ISB);
  ADD_NDS32_BUILTIN2 ("mtsr_dsb", void, unsigned, integer, MTSR_DSB);
  ADD_NDS32_BUILTIN2 ("mtusr", void, unsigned, integer, MTUSR);

  /* FPU Register Transfer.  */
  ADD_NDS32_BUILTIN0 ("fmfcsr", unsigned, FMFCSR);
  ADD_NDS32_BUILTIN1 ("fmtcsr", void, unsigned, FMTCSR);
  ADD_NDS32_BUILTIN0 ("fmfcfg", unsigned, FMFCFG);
  ADD_NDS32_BUILTIN2 ("fcpyss", float, float, float, FCPYSS);
  ADD_NDS32_BUILTIN2 ("fcpynss", float, float, float, FCPYNSS);
  ADD_NDS32_BUILTIN2 ("fcpysd", double, double, double, FCPYSD);
  ADD_NDS32_BUILTIN2 ("fcpynsd", double, double, double, FCPYNSD);

  /* Interrupt.  */
  ADD_NDS32_BUILTIN0 ("setgie_en", void, SETGIE_EN);
  ADD_NDS32_BUILTIN0 ("setgie_dis", void, SETGIE_DIS);
  ADD_NDS32_BUILTIN0 ("gie_en", void, GIE_EN);
  ADD_NDS32_BUILTIN0 ("gie_dis", void, GIE_DIS);
  ADD_NDS32_BUILTIN1 ("enable_int", void, integer, ENABLE_INT);
  ADD_NDS32_BUILTIN1 ("disable_int", void, integer, DISABLE_INT);
  ADD_NDS32_BUILTIN0 ("set_pending_swint", void, SET_PENDING_SWINT);
  ADD_NDS32_BUILTIN0 ("clr_pending_swint", void, CLR_PENDING_SWINT);
  ADD_NDS32_BUILTIN0 ("get_all_pending_int", unsigned, GET_ALL_PENDING_INT);
  ADD_NDS32_BUILTIN1 ("get_pending_int", unsigned, integer, GET_PENDING_INT);
  ADD_NDS32_BUILTIN1 ("get_int_priority", unsigned, integer, GET_INT_PRIORITY);
  ADD_NDS32_BUILTIN2 ("set_int_priority", void, integer, integer,
		      SET_INT_PRIORITY);
  ADD_NDS32_BUILTIN1 ("clr_pending_hwint", void, integer, CLR_PENDING_HWINT);
  ADD_NDS32_BUILTIN1 ("set_trig_level", void, integer, SET_TRIG_LEVEL);
  ADD_NDS32_BUILTIN1 ("set_trig_edge", void, integer, SET_TRIG_EDGE);
  ADD_NDS32_BUILTIN1 ("get_trig_type", unsigned, integer, GET_TRIG_TYPE);

  /* Load and Store  */
  ADD_NDS32_BUILTIN1 ("llw", unsigned, ptr_uint, LLW);
  ADD_NDS32_BUILTIN1 ("lwup", unsigned, ptr_uint, LWUP);
  ADD_NDS32_BUILTIN1 ("lbup", char, ptr_uchar, LBUP);
  ADD_NDS32_BUILTIN2 ("scw", unsigned, ptr_uint, unsigned, SCW);
  ADD_NDS32_BUILTIN2 ("swup", void, ptr_uint, unsigned, SWUP);
  ADD_NDS32_BUILTIN2 ("sbup", void, ptr_uchar, char, SBUP);

  /* CCTL  */
  ADD_NDS32_BUILTIN0 ("cctl_l1d_invalall", void, CCTL_L1D_INVALALL);
  ADD_NDS32_BUILTIN0 ("cctl_l1d_wball_alvl", void, CCTL_L1D_WBALL_ALVL);
  ADD_NDS32_BUILTIN0 ("cctl_l1d_wball_one_lvl", void, CCTL_L1D_WBALL_ONE_LVL);
  ADD_NDS32_BUILTIN2 ("cctl_va_lck", void, integer, ptr_uint, CCTL_VA_LCK);
  ADD_NDS32_BUILTIN2 ("cctl_idx_wbinval", void, integer, unsigned,
		      CCTL_IDX_WBINVAL);
  ADD_NDS32_BUILTIN2 ("cctl_va_wbinval_l1", void, integer, ptr_uint,
		      CCTL_VA_WBINVAL_L1);
  ADD_NDS32_BUILTIN2 ("cctl_va_wbinval_la", void, integer, ptr_uint,
		      CCTL_VA_WBINVAL_LA);
  ADD_NDS32_BUILTIN2 ("cctl_idx_read", unsigned, integer, unsigned,
		      CCTL_IDX_READ);
  ADD_NDS32_BUILTIN3 ("cctl_idx_write", void, integer, unsigned, unsigned,
		      CCTL_IDX_WRITE);

  /* PREFETCH  */
  ADD_NDS32_BUILTIN3 ("dpref_qw", void, ptr_uchar, unsigned, integer, DPREF_QW);
  ADD_NDS32_BUILTIN3 ("dpref_hw", void, ptr_ushort, unsigned, integer,
		      DPREF_HW);
  ADD_NDS32_BUILTIN3 ("dpref_w", void, ptr_uint, unsigned, integer, DPREF_W);
  ADD_NDS32_BUILTIN3 ("dpref_dw", void, ptr_ulong, unsigned, integer, DPREF_DW);

  /* Performance Extension  */
  ADD_NDS32_BUILTIN1 ("pe_abs", integer, integer, ABS);
  ADD_NDS32_BUILTIN2 ("pe_ave", integer, integer, integer, AVE);
  ADD_NDS32_BUILTIN2 ("pe_bclr", unsigned, unsigned, unsigned, BCLR);
  ADD_NDS32_BUILTIN2 ("pe_bset", unsigned, unsigned, unsigned, BSET);
  ADD_NDS32_BUILTIN2 ("pe_btgl", unsigned, unsigned, unsigned, BTGL);
  ADD_NDS32_BUILTIN2 ("pe_btst", unsigned, unsigned, unsigned, BTST);
  ADD_NDS32_BUILTIN2 ("pe_clip", unsigned, integer, unsigned, CLIP);
  ADD_NDS32_BUILTIN2 ("pe_clips", integer, integer, unsigned, CLIPS);
  ADD_NDS32_BUILTIN1 ("pe_clz", unsigned, unsigned, CLZ);
  ADD_NDS32_BUILTIN1 ("pe_clo", unsigned, unsigned, CLO);

  /* Performance Extension 2  */
  ADD_NDS32_BUILTIN3 ("pe2_bse", void, ptr_uint, unsigned, ptr_uint, BSE);
  ADD_NDS32_BUILTIN3 ("pe2_bsp", void, ptr_uint, unsigned, ptr_uint, BSP);
  ADD_NDS32_BUILTIN2 ("pe2_pbsad", unsigned, unsigned, unsigned, PBSAD);
  ADD_NDS32_BUILTIN3 ("pe2_pbsada", unsigned, unsigned, unsigned, unsigned,
		      PBSADA);

  /* String Extension  */
  ADD_NDS32_BUILTIN2 ("se_ffb", integer, unsigned, unsigned, FFB);
  ADD_NDS32_BUILTIN2 ("se_ffmism", integer, unsigned, unsigned, FFMISM);
  ADD_NDS32_BUILTIN2 ("se_flmism", integer, unsigned, unsigned, FLMISM);

  /* SATURATION  */
  ADD_NDS32_BUILTIN2 ("kaddw", integer, integer, integer, KADDW);
  ADD_NDS32_BUILTIN2 ("ksubw", integer, integer, integer, KSUBW);
  ADD_NDS32_BUILTIN2 ("kaddh", integer, integer, integer, KADDH);
  ADD_NDS32_BUILTIN2 ("ksubh", integer, integer, integer, KSUBH);
  ADD_NDS32_BUILTIN2 ("kdmbb", integer, unsigned, unsigned, KDMBB);
  ADD_NDS32_BUILTIN2 ("v_kdmbb", integer, v2hi, v2hi, V_KDMBB);
  ADD_NDS32_BUILTIN2 ("kdmbt", integer, unsigned, unsigned, KDMBT);
  ADD_NDS32_BUILTIN2 ("v_kdmbt", integer, v2hi, v2hi, V_KDMBT);
  ADD_NDS32_BUILTIN2 ("kdmtb", integer, unsigned, unsigned, KDMTB);
  ADD_NDS32_BUILTIN2 ("v_kdmtb", integer, v2hi, v2hi, V_KDMTB);
  ADD_NDS32_BUILTIN2 ("kdmtt", integer, unsigned, unsigned, KDMTT);
  ADD_NDS32_BUILTIN2 ("v_kdmtt", integer, v2hi, v2hi, V_KDMTT);
  ADD_NDS32_BUILTIN2 ("khmbb", integer, unsigned, unsigned, KHMBB);
  ADD_NDS32_BUILTIN2 ("v_khmbb", integer, v2hi, v2hi, V_KHMBB);
  ADD_NDS32_BUILTIN2 ("khmbt", integer, unsigned, unsigned, KHMBT);
  ADD_NDS32_BUILTIN2 ("v_khmbt", integer, v2hi, v2hi, V_KHMBT);
  ADD_NDS32_BUILTIN2 ("khmtb", integer, unsigned, unsigned, KHMTB);
  ADD_NDS32_BUILTIN2 ("v_khmtb", integer, v2hi, v2hi, V_KHMTB);
  ADD_NDS32_BUILTIN2 ("khmtt", integer, unsigned, unsigned, KHMTT);
  ADD_NDS32_BUILTIN2 ("v_khmtt", integer, v2hi, v2hi, V_KHMTT);
  ADD_NDS32_BUILTIN2 ("kslraw", integer, integer, integer, KSLRAW);
  ADD_NDS32_BUILTIN2 ("kslraw_u", integer, integer, integer, KSLRAW_U);
  ADD_NDS32_BUILTIN0 ("rdov", unsigned, RDOV);
  ADD_NDS32_BUILTIN0 ("clrov", void, CLROV);

  /* ROTR  */
  ADD_NDS32_BUILTIN2 ("rotr", unsigned, unsigned, unsigned, ROTR);

  /* Swap  */
  ADD_NDS32_BUILTIN1 ("wsbh", unsigned, unsigned, WSBH);

  /* System  */
  ADD_NDS32_BUILTIN2 ("svs", unsigned, integer, integer, SVS);
  ADD_NDS32_BUILTIN2 ("sva", unsigned, integer, integer, SVA);
  ADD_NDS32_BUILTIN1 ("jr_itoff", void, unsigned, JR_ITOFF);
  ADD_NDS32_BUILTIN1 ("jr_toff", void, unsigned, JR_TOFF);
  ADD_NDS32_BUILTIN1 ("jral_iton", void, unsigned, JRAL_ITON);
  ADD_NDS32_BUILTIN1 ("jral_ton", void, unsigned, JRAL_TON);
  ADD_NDS32_BUILTIN1 ("ret_itoff", void, unsigned, RET_ITOFF);
  ADD_NDS32_BUILTIN1 ("ret_toff", void, unsigned, RET_TOFF);
  ADD_NDS32_BUILTIN0 ("standby_no_wake_grant", void, STANDBY_NO_WAKE_GRANT);
  ADD_NDS32_BUILTIN0 ("standby_wake_grant", void, STANDBY_WAKE_GRANT);
  ADD_NDS32_BUILTIN0 ("standby_wait_done", void, STANDBY_WAKE_DONE);
  ADD_NDS32_BUILTIN1 ("break", void, unsigned, BREAK);
  ADD_NDS32_BUILTIN1 ("syscall", void, unsigned, SYSCALL);
  ADD_NDS32_BUILTIN0 ("nop", void, NOP);
  ADD_NDS32_BUILTIN0 ("get_current_sp", unsigned, GET_CURRENT_SP);
  ADD_NDS32_BUILTIN1 ("set_current_sp", void, unsigned, SET_CURRENT_SP);
  ADD_NDS32_BUILTIN2 ("teqz", void, unsigned, unsigned, TEQZ);
  ADD_NDS32_BUILTIN2 ("tnez", void, unsigned, unsigned, TNEZ);
  ADD_NDS32_BUILTIN1 ("trap", void, unsigned, TRAP);
  ADD_NDS32_BUILTIN0 ("return_address", unsigned, RETURN_ADDRESS);
  ADD_NDS32_BUILTIN0 ("setend_big", void, SETEND_BIG);
  ADD_NDS32_BUILTIN0 ("setend_little", void, SETEND_LITTLE);

  /* Schedule Barrier */
  ADD_NDS32_BUILTIN0 ("schedule_barrier", void, SCHE_BARRIER);

  /* TLBOP  */
  ADD_NDS32_BUILTIN1 ("tlbop_trd", void, unsigned, TLBOP_TRD);
  ADD_NDS32_BUILTIN1 ("tlbop_twr", void, unsigned, TLBOP_TWR);
  ADD_NDS32_BUILTIN1 ("tlbop_rwr", void, unsigned, TLBOP_RWR);
  ADD_NDS32_BUILTIN1 ("tlbop_rwlk", void, unsigned, TLBOP_RWLK);
  ADD_NDS32_BUILTIN1 ("tlbop_unlk", void, unsigned, TLBOP_UNLK);
  ADD_NDS32_BUILTIN1 ("tlbop_pb", unsigned, unsigned, TLBOP_PB);
  ADD_NDS32_BUILTIN1 ("tlbop_inv", void, unsigned, TLBOP_INV);
  ADD_NDS32_BUILTIN0 ("tlbop_flua", void, TLBOP_FLUA);

  /* Unaligned Load/Store  */
  ADD_NDS32_BUILTIN1 ("unaligned_load_hw", short_unsigned, ptr_ushort,
		      UALOAD_HW);
  ADD_NDS32_BUILTIN1 ("unaligned_load_w", unsigned, ptr_uint, UALOAD_W);
  ADD_NDS32_BUILTIN1 ("unaligned_load_dw", long_long_unsigned, ptr_ulong,
		      UALOAD_DW);
  ADD_NDS32_BUILTIN2 ("unaligned_store_hw", void, ptr_ushort, short_unsigned,
		      UASTORE_HW);
  ADD_NDS32_BUILTIN2 ("unaligned_store_w", void, ptr_uint, unsigned, UASTORE_W);
  ADD_NDS32_BUILTIN2 ("unaligned_store_dw", void, ptr_ulong, long_long_unsigned,
		      UASTORE_DW);
  ADD_NDS32_BUILTIN0 ("unaligned_feature", unsigned, UNALIGNED_FEATURE);
  ADD_NDS32_BUILTIN0 ("enable_unaligned", void, ENABLE_UNALIGNED);
  ADD_NDS32_BUILTIN0 ("disable_unaligned", void, DISABLE_UNALIGNED);

  /* DSP Extension: SIMD 16bit Add and Subtract.  */
  ADD_NDS32_BUILTIN2 ("add16", unsigned, unsigned, unsigned, ADD16);
  ADD_NDS32_BUILTIN2 ("v_uadd16", u_v2hi, u_v2hi, u_v2hi, V_UADD16);
  ADD_NDS32_BUILTIN2 ("v_sadd16", v2hi, v2hi, v2hi, V_SADD16);
  ADD_NDS32_BUILTIN2 ("radd16", unsigned, unsigned, unsigned, RADD16);
  ADD_NDS32_BUILTIN2 ("v_radd16", v2hi, v2hi, v2hi, V_RADD16);
  ADD_NDS32_BUILTIN2 ("uradd16", unsigned, unsigned, unsigned, URADD16);
  ADD_NDS32_BUILTIN2 ("v_uradd16", u_v2hi, u_v2hi, u_v2hi, V_URADD16);
  ADD_NDS32_BUILTIN2 ("kadd16", unsigned, unsigned, unsigned, KADD16);
  ADD_NDS32_BUILTIN2 ("v_kadd16", v2hi, v2hi, v2hi, V_KADD16);
  ADD_NDS32_BUILTIN2 ("ukadd16", unsigned, unsigned, unsigned, UKADD16);
  ADD_NDS32_BUILTIN2 ("v_ukadd16", u_v2hi, u_v2hi, u_v2hi, V_UKADD16);
  ADD_NDS32_BUILTIN2 ("sub16", unsigned, unsigned, unsigned, SUB16);
  ADD_NDS32_BUILTIN2 ("v_usub16", u_v2hi, u_v2hi, u_v2hi, V_USUB16);
  ADD_NDS32_BUILTIN2 ("v_ssub16", v2hi, v2hi, v2hi, V_SSUB16);
  ADD_NDS32_BUILTIN2 ("rsub16", unsigned, unsigned, unsigned, RSUB16);
  ADD_NDS32_BUILTIN2 ("v_rsub16", v2hi, v2hi, v2hi, V_RSUB16);
  ADD_NDS32_BUILTIN2 ("ursub16", unsigned, unsigned, unsigned, URSUB16);
  ADD_NDS32_BUILTIN2 ("v_ursub16", u_v2hi, u_v2hi, u_v2hi, V_URSUB16);
  ADD_NDS32_BUILTIN2 ("ksub16", unsigned, unsigned, unsigned, KSUB16);
  ADD_NDS32_BUILTIN2 ("v_ksub16", v2hi, v2hi, v2hi, V_KSUB16);
  ADD_NDS32_BUILTIN2 ("uksub16", unsigned, unsigned, unsigned, UKSUB16);
  ADD_NDS32_BUILTIN2 ("v_uksub16", u_v2hi, u_v2hi, u_v2hi, V_UKSUB16);
  ADD_NDS32_BUILTIN2 ("cras16", unsigned, unsigned, unsigned, CRAS16);
  ADD_NDS32_BUILTIN2 ("v_ucras16", u_v2hi, u_v2hi, u_v2hi, V_UCRAS16);
  ADD_NDS32_BUILTIN2 ("v_scras16", v2hi, v2hi, v2hi, V_SCRAS16);
  ADD_NDS32_BUILTIN2 ("rcras16", unsigned, unsigned, unsigned, RCRAS16);
  ADD_NDS32_BUILTIN2 ("v_rcras16", v2hi, v2hi, v2hi, V_RCRAS16);
  ADD_NDS32_BUILTIN2 ("urcras16", unsigned, unsigned, unsigned, URCRAS16);
  ADD_NDS32_BUILTIN2 ("v_urcras16", u_v2hi, u_v2hi, u_v2hi, V_URCRAS16);
  ADD_NDS32_BUILTIN2 ("kcras16", unsigned, unsigned, unsigned, KCRAS16);
  ADD_NDS32_BUILTIN2 ("v_kcras16", v2hi, v2hi, v2hi, V_KCRAS16);
  ADD_NDS32_BUILTIN2 ("ukcras16", unsigned, unsigned, unsigned, UKCRAS16);
  ADD_NDS32_BUILTIN2 ("v_ukcras16", u_v2hi, u_v2hi, u_v2hi, V_UKCRAS16);
  ADD_NDS32_BUILTIN2 ("crsa16", unsigned, unsigned, unsigned, CRSA16);
  ADD_NDS32_BUILTIN2 ("v_ucrsa16", u_v2hi, u_v2hi, u_v2hi, V_UCRSA16);
  ADD_NDS32_BUILTIN2 ("v_scrsa16", v2hi, v2hi, v2hi, V_SCRSA16);
  ADD_NDS32_BUILTIN2 ("rcrsa16", unsigned, unsigned, unsigned, RCRSA16);
  ADD_NDS32_BUILTIN2 ("v_rcrsa16", v2hi, v2hi, v2hi, V_RCRSA16);
  ADD_NDS32_BUILTIN2 ("urcrsa16", unsigned, unsigned, unsigned, URCRSA16);
  ADD_NDS32_BUILTIN2 ("v_urcrsa16", u_v2hi, u_v2hi, u_v2hi, V_URCRSA16);
  ADD_NDS32_BUILTIN2 ("kcrsa16", unsigned, unsigned, unsigned, KCRSA16);
  ADD_NDS32_BUILTIN2 ("v_kcrsa16", v2hi, v2hi, v2hi, V_KCRSA16);
  ADD_NDS32_BUILTIN2 ("ukcrsa16", unsigned, unsigned, unsigned, UKCRSA16);
  ADD_NDS32_BUILTIN2 ("v_ukcrsa16", u_v2hi, u_v2hi, u_v2hi, V_UKCRSA16);

  /* DSP Extension: SIMD 8bit Add and Subtract.  */
  ADD_NDS32_BUILTIN2 ("add8", integer, integer, integer, ADD8);
  ADD_NDS32_BUILTIN2 ("v_uadd8", u_v4qi, u_v4qi, u_v4qi, V_UADD8);
  ADD_NDS32_BUILTIN2 ("v_sadd8", v4qi, v4qi, v4qi, V_SADD8);
  ADD_NDS32_BUILTIN2 ("radd8", unsigned, unsigned, unsigned, RADD8);
  ADD_NDS32_BUILTIN2 ("v_radd8", v4qi, v4qi, v4qi, V_RADD8);
  ADD_NDS32_BUILTIN2 ("uradd8", unsigned, unsigned, unsigned, URADD8);
  ADD_NDS32_BUILTIN2 ("v_uradd8", u_v4qi, u_v4qi, u_v4qi, V_URADD8);
  ADD_NDS32_BUILTIN2 ("kadd8", unsigned, unsigned, unsigned, KADD8);
  ADD_NDS32_BUILTIN2 ("v_kadd8", v4qi, v4qi, v4qi, V_KADD8);
  ADD_NDS32_BUILTIN2 ("ukadd8", unsigned, unsigned, unsigned, UKADD8);
  ADD_NDS32_BUILTIN2 ("v_ukadd8", u_v4qi, u_v4qi, u_v4qi, V_UKADD8);
  ADD_NDS32_BUILTIN2 ("sub8", integer, integer, integer, SUB8);
  ADD_NDS32_BUILTIN2 ("v_usub8", u_v4qi, u_v4qi, u_v4qi, V_USUB8);
  ADD_NDS32_BUILTIN2 ("v_ssub8", v4qi, v4qi, v4qi, V_SSUB8);
  ADD_NDS32_BUILTIN2 ("rsub8", unsigned, unsigned, unsigned, RSUB8);
  ADD_NDS32_BUILTIN2 ("v_rsub8", v4qi, v4qi, v4qi, V_RSUB8);
  ADD_NDS32_BUILTIN2 ("ursub8", unsigned, unsigned, unsigned, URSUB8);
  ADD_NDS32_BUILTIN2 ("v_ursub8", u_v4qi, u_v4qi, u_v4qi, V_URSUB8);
  ADD_NDS32_BUILTIN2 ("ksub8", unsigned, unsigned, unsigned, KSUB8);
  ADD_NDS32_BUILTIN2 ("v_ksub8", v4qi, v4qi, v4qi, V_KSUB8);
  ADD_NDS32_BUILTIN2 ("uksub8", unsigned, unsigned, unsigned, UKSUB8);
  ADD_NDS32_BUILTIN2 ("v_uksub8", u_v4qi, u_v4qi, u_v4qi, V_UKSUB8);

  /* DSP Extension: SIMD 16bit Shift.  */
  ADD_NDS32_BUILTIN2 ("sra16", unsigned, unsigned, unsigned, SRA16);
  ADD_NDS32_BUILTIN2 ("v_sra16", v2hi, v2hi, unsigned, V_SRA16);
  ADD_NDS32_BUILTIN2 ("sra16_u", unsigned, unsigned, unsigned, SRA16_U);
  ADD_NDS32_BUILTIN2 ("v_sra16_u", v2hi, v2hi, unsigned, V_SRA16_U);
  ADD_NDS32_BUILTIN2 ("srl16", unsigned, unsigned, unsigned, SRL16);
  ADD_NDS32_BUILTIN2 ("v_srl16", u_v2hi, u_v2hi, unsigned, V_SRL16);
  ADD_NDS32_BUILTIN2 ("srl16_u", unsigned, unsigned, unsigned, SRL16_U);
  ADD_NDS32_BUILTIN2 ("v_srl16_u", u_v2hi, u_v2hi, unsigned, V_SRL16_U);
  ADD_NDS32_BUILTIN2 ("sll16", unsigned, unsigned, unsigned, SLL16);
  ADD_NDS32_BUILTIN2 ("v_sll16", u_v2hi, u_v2hi, unsigned, V_SLL16);
  ADD_NDS32_BUILTIN2 ("ksll16", unsigned, unsigned, unsigned, KSLL16);
  ADD_NDS32_BUILTIN2 ("v_ksll16", v2hi, v2hi, unsigned, V_KSLL16);
  ADD_NDS32_BUILTIN2 ("kslra16", unsigned, unsigned, unsigned, KSLRA16);
  ADD_NDS32_BUILTIN2 ("v_kslra16", v2hi, v2hi, unsigned, V_KSLRA16);
  ADD_NDS32_BUILTIN2 ("kslra16_u", unsigned, unsigned, unsigned, KSLRA16_U);
  ADD_NDS32_BUILTIN2 ("v_kslra16_u", v2hi, v2hi, unsigned, V_KSLRA16_U);

  /* DSP Extension: 16bit Compare.  */
  ADD_NDS32_BUILTIN2 ("cmpeq16", unsigned, unsigned, unsigned, CMPEQ16);
  ADD_NDS32_BUILTIN2 ("v_scmpeq16", u_v2hi, v2hi, v2hi, V_SCMPEQ16);
  ADD_NDS32_BUILTIN2 ("v_ucmpeq16", u_v2hi, u_v2hi, u_v2hi, V_UCMPEQ16);
  ADD_NDS32_BUILTIN2 ("scmplt16", unsigned, unsigned, unsigned, SCMPLT16);
  ADD_NDS32_BUILTIN2 ("v_scmplt16", u_v2hi, v2hi, v2hi, V_SCMPLT16);
  ADD_NDS32_BUILTIN2 ("scmple16", unsigned, unsigned, unsigned, SCMPLE16);
  ADD_NDS32_BUILTIN2 ("v_scmple16", u_v2hi, v2hi, v2hi, V_SCMPLE16);
  ADD_NDS32_BUILTIN2 ("ucmplt16", unsigned, unsigned, unsigned, UCMPLT16);
  ADD_NDS32_BUILTIN2 ("v_ucmplt16", u_v2hi, u_v2hi, u_v2hi, V_UCMPLT16);
  ADD_NDS32_BUILTIN2 ("ucmple16", unsigned, unsigned, unsigned, UCMPLE16);
  ADD_NDS32_BUILTIN2 ("v_ucmple16", u_v2hi, u_v2hi, u_v2hi, V_UCMPLE16);

  /* DSP Extension: 8bit Compare.  */
  ADD_NDS32_BUILTIN2 ("cmpeq8", unsigned, unsigned, unsigned, CMPEQ8);
  ADD_NDS32_BUILTIN2 ("v_scmpeq8", u_v4qi, v4qi, v4qi, V_SCMPEQ8);
  ADD_NDS32_BUILTIN2 ("v_ucmpeq8", u_v4qi, u_v4qi, u_v4qi, V_UCMPEQ8);
  ADD_NDS32_BUILTIN2 ("scmplt8", unsigned, unsigned, unsigned, SCMPLT8);
  ADD_NDS32_BUILTIN2 ("v_scmplt8", u_v4qi, v4qi, v4qi, V_SCMPLT8);
  ADD_NDS32_BUILTIN2 ("scmple8", unsigned, unsigned, unsigned, SCMPLE8);
  ADD_NDS32_BUILTIN2 ("v_scmple8", u_v4qi, v4qi, v4qi, V_SCMPLE8);
  ADD_NDS32_BUILTIN2 ("ucmplt8", unsigned, unsigned, unsigned, UCMPLT8);
  ADD_NDS32_BUILTIN2 ("v_ucmplt8", u_v4qi, u_v4qi, u_v4qi, V_UCMPLT8);
  ADD_NDS32_BUILTIN2 ("ucmple8", unsigned, unsigned, unsigned, UCMPLE8);
  ADD_NDS32_BUILTIN2 ("v_ucmple8", u_v4qi, u_v4qi, u_v4qi, V_UCMPLE8);

  /* DSP Extension: SIMD 16bit MISC.  */
  ADD_NDS32_BUILTIN2 ("smin16", unsigned, unsigned, unsigned, SMIN16);
  ADD_NDS32_BUILTIN2 ("v_smin16", v2hi, v2hi, v2hi, V_SMIN16);
  ADD_NDS32_BUILTIN2 ("umin16", unsigned, unsigned, unsigned, UMIN16);
  ADD_NDS32_BUILTIN2 ("v_umin16", u_v2hi, u_v2hi, u_v2hi, V_UMIN16);
  ADD_NDS32_BUILTIN2 ("smax16", unsigned, unsigned, unsigned, SMAX16);
  ADD_NDS32_BUILTIN2 ("v_smax16", v2hi, v2hi, v2hi, V_SMAX16);
  ADD_NDS32_BUILTIN2 ("umax16", unsigned, unsigned, unsigned, UMAX16);
  ADD_NDS32_BUILTIN2 ("v_umax16", u_v2hi, u_v2hi, u_v2hi, V_UMAX16);
  ADD_NDS32_BUILTIN2 ("sclip16", unsigned, unsigned, unsigned, SCLIP16);
  ADD_NDS32_BUILTIN2 ("v_sclip16", v2hi, v2hi, unsigned, V_SCLIP16);
  ADD_NDS32_BUILTIN2 ("uclip16", unsigned, unsigned, unsigned, UCLIP16);
  ADD_NDS32_BUILTIN2 ("v_uclip16", v2hi, v2hi, unsigned, V_UCLIP16);
  ADD_NDS32_BUILTIN2 ("khm16", unsigned, unsigned, unsigned, KHM16);
  ADD_NDS32_BUILTIN2 ("v_khm16", v2hi, v2hi, v2hi, V_KHM16);
  ADD_NDS32_BUILTIN2 ("khmx16", unsigned, unsigned, unsigned, KHMX16);
  ADD_NDS32_BUILTIN2 ("v_khmx16", v2hi, v2hi, v2hi, V_KHMX16);
  ADD_NDS32_BUILTIN1 ("kabs16", unsigned, unsigned, KABS16);
  ADD_NDS32_BUILTIN1 ("v_kabs16", v2hi, v2hi, V_KABS16);
  ADD_NDS32_BUILTIN2 ("smul16", long_long_unsigned, unsigned, unsigned, SMUL16);
  ADD_NDS32_BUILTIN2 ("v_smul16", v2si, v2hi, v2hi, V_SMUL16);
  ADD_NDS32_BUILTIN2 ("smulx16",
		      long_long_unsigned, unsigned, unsigned, SMULX16);
  ADD_NDS32_BUILTIN2 ("v_smulx16", v2si, v2hi, v2hi, V_SMULX16);
  ADD_NDS32_BUILTIN2 ("umul16", long_long_unsigned, unsigned, unsigned, UMUL16);
  ADD_NDS32_BUILTIN2 ("v_umul16", u_v2si, u_v2hi, u_v2hi, V_UMUL16);
  ADD_NDS32_BUILTIN2 ("umulx16",
		      long_long_unsigned, unsigned, unsigned, UMULX16);
  ADD_NDS32_BUILTIN2 ("v_umulx16", u_v2si, u_v2hi, u_v2hi, V_UMULX16);

  /* DSP Extension: SIMD 8bit MISC.  */
  ADD_NDS32_BUILTIN2 ("smin8", unsigned, unsigned, unsigned, SMIN8);
  ADD_NDS32_BUILTIN2 ("v_smin8", v4qi, v4qi, v4qi, V_SMIN8);
  ADD_NDS32_BUILTIN2 ("umin8", unsigned, unsigned, unsigned, UMIN8);
  ADD_NDS32_BUILTIN2 ("v_umin8", u_v4qi, u_v4qi, u_v4qi, V_UMIN8);
  ADD_NDS32_BUILTIN2 ("smax8", unsigned, unsigned, unsigned, SMAX8);
  ADD_NDS32_BUILTIN2 ("v_smax8", v4qi, v4qi, v4qi, V_SMAX8);
  ADD_NDS32_BUILTIN2 ("umax8", unsigned, unsigned, unsigned, UMAX8);
  ADD_NDS32_BUILTIN2 ("v_umax8", u_v4qi, u_v4qi, u_v4qi, V_UMAX8);
  ADD_NDS32_BUILTIN1 ("kabs8", unsigned, unsigned, KABS8);
  ADD_NDS32_BUILTIN1 ("v_kabs8", v4qi, v4qi, V_KABS8);

  /* DSP Extension: 8bit Unpacking.  */
  ADD_NDS32_BUILTIN1 ("sunpkd810", unsigned, unsigned, SUNPKD810);
  ADD_NDS32_BUILTIN1 ("v_sunpkd810", v2hi, v4qi, V_SUNPKD810);
  ADD_NDS32_BUILTIN1 ("sunpkd820", unsigned, unsigned, SUNPKD820);
  ADD_NDS32_BUILTIN1 ("v_sunpkd820", v2hi, v4qi, V_SUNPKD820);
  ADD_NDS32_BUILTIN1 ("sunpkd830", unsigned, unsigned, SUNPKD830);
  ADD_NDS32_BUILTIN1 ("v_sunpkd830", v2hi, v4qi, V_SUNPKD830);
  ADD_NDS32_BUILTIN1 ("sunpkd831", unsigned, unsigned, SUNPKD831);
  ADD_NDS32_BUILTIN1 ("v_sunpkd831", v2hi, v4qi, V_SUNPKD831);
  ADD_NDS32_BUILTIN1 ("zunpkd810", unsigned, unsigned, ZUNPKD810);
  ADD_NDS32_BUILTIN1 ("v_zunpkd810", u_v2hi, u_v4qi, V_ZUNPKD810);
  ADD_NDS32_BUILTIN1 ("zunpkd820", unsigned, unsigned, ZUNPKD820);
  ADD_NDS32_BUILTIN1 ("v_zunpkd820", u_v2hi, u_v4qi, V_ZUNPKD820);
  ADD_NDS32_BUILTIN1 ("zunpkd830", unsigned, unsigned, ZUNPKD830);
  ADD_NDS32_BUILTIN1 ("v_zunpkd830", u_v2hi, u_v4qi, V_ZUNPKD830);
  ADD_NDS32_BUILTIN1 ("zunpkd831", unsigned, unsigned, ZUNPKD831);
  ADD_NDS32_BUILTIN1 ("v_zunpkd831", u_v2hi, u_v4qi, V_ZUNPKD831);

  /* DSP Extension: 32bit Add and Subtract.  */
  ADD_NDS32_BUILTIN2 ("raddw", integer, integer, integer, RADDW);
  ADD_NDS32_BUILTIN2 ("uraddw", unsigned, unsigned, unsigned, URADDW);
  ADD_NDS32_BUILTIN2 ("rsubw", integer, integer, integer, RSUBW);
  ADD_NDS32_BUILTIN2 ("ursubw", unsigned, unsigned, unsigned, URSUBW);

  /* DSP Extension: 32bit Shift.  */
  ADD_NDS32_BUILTIN2 ("sra_u", integer, integer, unsigned, SRA_U);
  ADD_NDS32_BUILTIN2 ("ksll", integer, integer, unsigned, KSLL);

  /* DSP Extension: 16bit Packing.  */
  ADD_NDS32_BUILTIN2 ("pkbb16", unsigned, unsigned, unsigned, PKBB16);
  ADD_NDS32_BUILTIN2 ("v_pkbb16", u_v2hi, u_v2hi, u_v2hi, V_PKBB16);
  ADD_NDS32_BUILTIN2 ("pkbt16", unsigned, unsigned, unsigned, PKBT16);
  ADD_NDS32_BUILTIN2 ("v_pkbt16", u_v2hi, u_v2hi, u_v2hi, V_PKBT16);
  ADD_NDS32_BUILTIN2 ("pktb16", unsigned, unsigned, unsigned, PKTB16);
  ADD_NDS32_BUILTIN2 ("v_pktb16", u_v2hi, u_v2hi, u_v2hi, V_PKTB16);
  ADD_NDS32_BUILTIN2 ("pktt16", unsigned, unsigned, unsigned, PKTT16);
  ADD_NDS32_BUILTIN2 ("v_pktt16", u_v2hi, u_v2hi, u_v2hi, V_PKTT16);

  /* DSP Extension: Signed MSW 32x32 Multiply and ADD.  */
  ADD_NDS32_BUILTIN2 ("smmul", integer, integer, integer, SMMUL);
  ADD_NDS32_BUILTIN2 ("smmul_u", integer, integer, integer, SMMUL_U);
  ADD_NDS32_BUILTIN3 ("kmmac", integer, integer, integer, integer, KMMAC);
  ADD_NDS32_BUILTIN3 ("kmmac_u", integer, integer, integer, integer, KMMAC_U);
  ADD_NDS32_BUILTIN3 ("kmmsb", integer, integer, integer, integer, KMMSB);
  ADD_NDS32_BUILTIN3 ("kmmsb_u", integer, integer, integer, integer, KMMSB_U);
  ADD_NDS32_BUILTIN2 ("kwmmul", integer, integer, integer, KWMMUL);
  ADD_NDS32_BUILTIN2 ("kwmmul_u", integer, integer, integer, KWMMUL_U);

  /* DSP Extension: Most Significant Word 32x16 Multiply and ADD.  */
  ADD_NDS32_BUILTIN2 ("smmwb", integer, integer, unsigned, SMMWB);
  ADD_NDS32_BUILTIN2 ("v_smmwb", integer, integer, v2hi, V_SMMWB);
  ADD_NDS32_BUILTIN2 ("smmwb_u", integer, integer, unsigned, SMMWB_U);
  ADD_NDS32_BUILTIN2 ("v_smmwb_u", integer, integer, v2hi, V_SMMWB_U);
  ADD_NDS32_BUILTIN2 ("smmwt", integer, integer, unsigned, SMMWT);
  ADD_NDS32_BUILTIN2 ("v_smmwt", integer, integer, v2hi, V_SMMWT);
  ADD_NDS32_BUILTIN2 ("smmwt_u", integer, integer, unsigned, SMMWT_U);
  ADD_NDS32_BUILTIN2 ("v_smmwt_u", integer, integer, v2hi, V_SMMWT_U);
  ADD_NDS32_BUILTIN3 ("kmmawb", integer, integer, integer, unsigned, KMMAWB);
  ADD_NDS32_BUILTIN3 ("v_kmmawb", integer, integer, integer, v2hi, V_KMMAWB);
  ADD_NDS32_BUILTIN3 ("kmmawb_u",
		      integer, integer, integer, unsigned, KMMAWB_U);
  ADD_NDS32_BUILTIN3 ("v_kmmawb_u",
		      integer, integer, integer, v2hi, V_KMMAWB_U);
  ADD_NDS32_BUILTIN3 ("kmmawt", integer, integer, integer, unsigned, KMMAWT);
  ADD_NDS32_BUILTIN3 ("v_kmmawt", integer, integer, integer, v2hi, V_KMMAWT);
  ADD_NDS32_BUILTIN3 ("kmmawt_u",
		      integer, integer, integer, unsigned, KMMAWT_U);
  ADD_NDS32_BUILTIN3 ("v_kmmawt_u",
		      integer, integer, integer, v2hi, V_KMMAWT_U);

  /* DSP Extension: Signed 16bit Multiply with ADD/Subtract.  */
  ADD_NDS32_BUILTIN2 ("smbb", integer, unsigned, unsigned, SMBB);
  ADD_NDS32_BUILTIN2 ("v_smbb", integer, v2hi, v2hi, V_SMBB);
  ADD_NDS32_BUILTIN2 ("smbt", integer, unsigned, unsigned, SMBT);
  ADD_NDS32_BUILTIN2 ("v_smbt", integer, v2hi, v2hi, V_SMBT);
  ADD_NDS32_BUILTIN2 ("smtt", integer, unsigned, unsigned, SMTT);
  ADD_NDS32_BUILTIN2 ("v_smtt", integer, v2hi, v2hi, V_SMTT);
  ADD_NDS32_BUILTIN2 ("kmda", integer, unsigned, unsigned, KMDA);
  ADD_NDS32_BUILTIN2 ("v_kmda", integer, v2hi, v2hi, V_KMDA);
  ADD_NDS32_BUILTIN2 ("kmxda", integer, unsigned, unsigned, KMXDA);
  ADD_NDS32_BUILTIN2 ("v_kmxda", integer, v2hi, v2hi, V_KMXDA);
  ADD_NDS32_BUILTIN2 ("smds", integer, unsigned, unsigned, SMDS);
  ADD_NDS32_BUILTIN2 ("v_smds", integer, v2hi, v2hi, V_SMDS);
  ADD_NDS32_BUILTIN2 ("smdrs", integer, unsigned, unsigned, SMDRS);
  ADD_NDS32_BUILTIN2 ("v_smdrs", integer, v2hi, v2hi, V_SMDRS);
  ADD_NDS32_BUILTIN2 ("smxds", integer, unsigned, unsigned, SMXDS);
  ADD_NDS32_BUILTIN2 ("v_smxds", integer, v2hi, v2hi, V_SMXDS);
  ADD_NDS32_BUILTIN3 ("kmabb", integer, integer, unsigned, unsigned, KMABB);
  ADD_NDS32_BUILTIN3 ("v_kmabb", integer, integer, v2hi, v2hi, V_KMABB);
  ADD_NDS32_BUILTIN3 ("kmabt", integer, integer, unsigned, unsigned, KMABT);
  ADD_NDS32_BUILTIN3 ("v_kmabt", integer, integer, v2hi, v2hi, V_KMABT);
  ADD_NDS32_BUILTIN3 ("kmatt", integer, integer, unsigned, unsigned, KMATT);
  ADD_NDS32_BUILTIN3 ("v_kmatt", integer, integer, v2hi, v2hi, V_KMATT);
  ADD_NDS32_BUILTIN3 ("kmada", integer, integer, unsigned, unsigned, KMADA);
  ADD_NDS32_BUILTIN3 ("v_kmada", integer, integer, v2hi, v2hi, V_KMADA);
  ADD_NDS32_BUILTIN3 ("kmaxda", integer, integer, unsigned, unsigned, KMAXDA);
  ADD_NDS32_BUILTIN3 ("v_kmaxda", integer, integer, v2hi, v2hi, V_KMAXDA);
  ADD_NDS32_BUILTIN3 ("kmads", integer, integer, unsigned, unsigned, KMADS);
  ADD_NDS32_BUILTIN3 ("v_kmads", integer, integer, v2hi, v2hi, V_KMADS);
  ADD_NDS32_BUILTIN3 ("kmadrs", integer, integer, unsigned, unsigned, KMADRS);
  ADD_NDS32_BUILTIN3 ("v_kmadrs", integer, integer, v2hi, v2hi, V_KMADRS);
  ADD_NDS32_BUILTIN3 ("kmaxds", integer, integer, unsigned, unsigned, KMAXDS);
  ADD_NDS32_BUILTIN3 ("v_kmaxds", integer, integer, v2hi, v2hi, V_KMAXDS);
  ADD_NDS32_BUILTIN3 ("kmsda", integer, integer, unsigned, unsigned, KMSDA);
  ADD_NDS32_BUILTIN3 ("v_kmsda", integer, integer, v2hi, v2hi, V_KMSDA);
  ADD_NDS32_BUILTIN3 ("kmsxda", integer, integer, unsigned, unsigned, KMSXDA);
  ADD_NDS32_BUILTIN3 ("v_kmsxda", integer, integer, v2hi, v2hi, V_KMSXDA);

  /* DSP Extension: Signed 16bit Multiply with 64bit ADD/Subtract.  */
  ADD_NDS32_BUILTIN2 ("smal", long_long_integer,
		      long_long_integer, unsigned, SMAL);
  ADD_NDS32_BUILTIN2 ("v_smal", long_long_integer,
		      long_long_integer, v2hi, V_SMAL);

  /* DSP Extension: 32bit MISC.  */
  ADD_NDS32_BUILTIN2 ("bitrev", unsigned, unsigned, unsigned, BITREV);
  ADD_NDS32_BUILTIN2 ("wext", unsigned, long_long_integer, unsigned, WEXT);
  ADD_NDS32_BUILTIN3 ("bpick", unsigned, unsigned, unsigned, unsigned, BPICK);
  ADD_NDS32_BUILTIN3 ("insb", unsigned, unsigned, unsigned, unsigned, INSB);

  /* DSP Extension: 64bit Add and Subtract.  */
  ADD_NDS32_BUILTIN2 ("sadd64", long_long_integer,
		      long_long_integer, long_long_integer, SADD64);
  ADD_NDS32_BUILTIN2 ("uadd64", long_long_unsigned,
		      long_long_unsigned, long_long_unsigned, UADD64);
  ADD_NDS32_BUILTIN2 ("radd64", long_long_integer,
		      long_long_integer, long_long_integer, RADD64);
  ADD_NDS32_BUILTIN2 ("uradd64", long_long_unsigned,
		      long_long_unsigned, long_long_unsigned, URADD64);
  ADD_NDS32_BUILTIN2 ("kadd64", long_long_integer,
		      long_long_integer, long_long_integer, KADD64);
  ADD_NDS32_BUILTIN2 ("ukadd64", long_long_unsigned,
		      long_long_unsigned, long_long_unsigned, UKADD64);
  ADD_NDS32_BUILTIN2 ("ssub64", long_long_integer,
		      long_long_integer, long_long_integer, SSUB64);
  ADD_NDS32_BUILTIN2 ("usub64", long_long_unsigned,
		      long_long_unsigned, long_long_unsigned, USUB64);
  ADD_NDS32_BUILTIN2 ("rsub64", long_long_integer,
		      long_long_integer, long_long_integer, RSUB64);
  ADD_NDS32_BUILTIN2 ("ursub64", long_long_unsigned,
		      long_long_unsigned, long_long_unsigned, URSUB64);
  ADD_NDS32_BUILTIN2 ("ksub64", long_long_integer,
		      long_long_integer, long_long_integer, KSUB64);
  ADD_NDS32_BUILTIN2 ("uksub64", long_long_unsigned,
		      long_long_unsigned, long_long_unsigned, UKSUB64);

  /* DSP Extension: 32bit Multiply with 64bit Add/Subtract.  */
  ADD_NDS32_BUILTIN3 ("smar64", long_long_integer,
		      long_long_integer, integer, integer, SMAR64);
  ADD_NDS32_BUILTIN3 ("smsr64", long_long_integer,
		      long_long_integer, integer, integer, SMSR64);
  ADD_NDS32_BUILTIN3 ("umar64", long_long_unsigned,
		      long_long_unsigned, unsigned, unsigned, UMAR64);
  ADD_NDS32_BUILTIN3 ("umsr64", long_long_unsigned,
		      long_long_unsigned, unsigned, unsigned, UMSR64);
  ADD_NDS32_BUILTIN3 ("kmar64", long_long_integer,
		      long_long_integer, integer, integer, KMAR64);
  ADD_NDS32_BUILTIN3 ("kmsr64", long_long_integer,
		      long_long_integer, integer, integer, KMSR64);
  ADD_NDS32_BUILTIN3 ("ukmar64", long_long_unsigned,
		      long_long_unsigned, unsigned, unsigned, UKMAR64);
  ADD_NDS32_BUILTIN3 ("ukmsr64", long_long_unsigned,
		      long_long_unsigned, unsigned, unsigned, UKMSR64);

  /* DSP Extension: Signed 16bit Multiply with 64bit Add/Subtract.  */
  ADD_NDS32_BUILTIN3 ("smalbb", long_long_integer,
		      long_long_integer, unsigned, unsigned, SMALBB);
  ADD_NDS32_BUILTIN3 ("v_smalbb", long_long_integer,
		      long_long_integer, v2hi, v2hi, V_SMALBB);
  ADD_NDS32_BUILTIN3 ("smalbt", long_long_integer,
		      long_long_integer, unsigned, unsigned, SMALBT);
  ADD_NDS32_BUILTIN3 ("v_smalbt", long_long_integer,
		      long_long_integer, v2hi, v2hi, V_SMALBT);
  ADD_NDS32_BUILTIN3 ("smaltt", long_long_integer,
		      long_long_integer, unsigned, unsigned, SMALTT);
  ADD_NDS32_BUILTIN3 ("v_smaltt", long_long_integer,
		      long_long_integer, v2hi, v2hi, V_SMALTT);
  ADD_NDS32_BUILTIN3 ("smalda", long_long_integer,
		      long_long_integer, unsigned, unsigned, SMALDA);
  ADD_NDS32_BUILTIN3 ("v_smalda", long_long_integer,
		      long_long_integer, v2hi, v2hi, V_SMALDA);
  ADD_NDS32_BUILTIN3 ("smalxda", long_long_integer,
		      long_long_integer, unsigned, unsigned, SMALXDA);
  ADD_NDS32_BUILTIN3 ("v_smalxda", long_long_integer,
		      long_long_integer, v2hi, v2hi, V_SMALXDA);
  ADD_NDS32_BUILTIN3 ("smalds", long_long_integer,
		      long_long_integer, unsigned, unsigned, SMALDS);
  ADD_NDS32_BUILTIN3 ("v_smalds", long_long_integer,
		      long_long_integer, v2hi, v2hi, V_SMALDS);
  ADD_NDS32_BUILTIN3 ("smaldrs", long_long_integer,
		      long_long_integer, unsigned, unsigned, SMALDRS);
  ADD_NDS32_BUILTIN3 ("v_smaldrs", long_long_integer,
		      long_long_integer, v2hi, v2hi, V_SMALDRS);
  ADD_NDS32_BUILTIN3 ("smalxds", long_long_integer,
		      long_long_integer, unsigned, unsigned, SMALXDS);
  ADD_NDS32_BUILTIN3 ("v_smalxds", long_long_integer,
		      long_long_integer, v2hi, v2hi, V_SMALXDS);
  ADD_NDS32_BUILTIN3 ("smslda", long_long_integer,
		      long_long_integer, unsigned, unsigned, SMSLDA);
  ADD_NDS32_BUILTIN3 ("v_smslda", long_long_integer,
		      long_long_integer, v2hi, v2hi, V_SMSLDA);
  ADD_NDS32_BUILTIN3 ("smslxda", long_long_integer,
		      long_long_integer, unsigned, unsigned, SMSLXDA);
  ADD_NDS32_BUILTIN3 ("v_smslxda", long_long_integer,
		      long_long_integer, v2hi, v2hi, V_SMSLXDA);

  /* DSP Extension: augmented baseline.  */
  ADD_NDS32_BUILTIN2 ("uclip32", unsigned, integer, unsigned, UCLIP32);
  ADD_NDS32_BUILTIN2 ("sclip32", integer, integer, unsigned, SCLIP32);
  ADD_NDS32_BUILTIN1 ("kabs", integer, integer, KABS);

  /* DSP Extension: vector type unaligned Load/Store  */
  ADD_NDS32_BUILTIN1 ("get_unaligned_u16x2", u_v2hi, ptr_ushort, UALOAD_U16);
  ADD_NDS32_BUILTIN1 ("get_unaligned_s16x2", v2hi, ptr_short, UALOAD_S16);
  ADD_NDS32_BUILTIN1 ("get_unaligned_u8x4", u_v4qi, ptr_uchar, UALOAD_U8);
  ADD_NDS32_BUILTIN1 ("get_unaligned_s8x4", v4qi, ptr_char, UALOAD_S8);
  ADD_NDS32_BUILTIN2 ("put_unaligned_u16x2", void, ptr_ushort,
		      u_v2hi, UASTORE_U16);
  ADD_NDS32_BUILTIN2 ("put_unaligned_s16x2", void, ptr_short,
		      v2hi, UASTORE_S16);
  ADD_NDS32_BUILTIN2 ("put_unaligned_u8x4", void, ptr_uchar,
		      u_v4qi, UASTORE_U8);
  ADD_NDS32_BUILTIN2 ("put_unaligned_s8x4", void, ptr_char,
		      v4qi, UASTORE_S8);
}
