/*  MVE builtin definitions for Arm.
    Copyright  (C) 2019-2020 Free Software Foundation, Inc.
    Contributed by Arm.

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

VAR5 (STORE1, vst4q, v16qi, v8hi, v4si, v8hf, v4sf)
VAR2 (UNOP_NONE_NONE, vrndxq_f, v8hf, v4sf)
VAR2 (UNOP_NONE_NONE, vrndq_f, v8hf, v4sf)
VAR2 (UNOP_NONE_NONE, vrndpq_f, v8hf, v4sf)
VAR2 (UNOP_NONE_NONE, vrndnq_f, v8hf, v4sf)
VAR2 (UNOP_NONE_NONE, vrndmq_f, v8hf, v4sf)
VAR2 (UNOP_NONE_NONE, vrndaq_f, v8hf, v4sf)
VAR2 (UNOP_NONE_NONE, vrev64q_f, v8hf, v4sf)
VAR2 (UNOP_NONE_NONE, vnegq_f, v8hf, v4sf)
VAR2 (UNOP_NONE_NONE, vdupq_n_f, v8hf, v4sf)
VAR2 (UNOP_NONE_NONE, vabsq_f, v8hf, v4sf)
VAR1 (UNOP_NONE_NONE, vrev32q_f, v8hf)
VAR1 (UNOP_NONE_NONE, vcvttq_f32_f16, v4sf)
VAR1 (UNOP_NONE_NONE, vcvtbq_f32_f16, v4sf)
VAR2 (UNOP_NONE_SNONE, vcvtq_to_f_s, v8hf, v4sf)
VAR2 (UNOP_NONE_UNONE, vcvtq_to_f_u, v8hf, v4sf)
VAR3 (UNOP_SNONE_SNONE, vrev64q_s, v16qi, v8hi, v4si)
VAR3 (UNOP_SNONE_SNONE, vqnegq_s, v16qi, v8hi, v4si)
VAR3 (UNOP_SNONE_SNONE, vqabsq_s, v16qi, v8hi, v4si)
VAR3 (UNOP_SNONE_SNONE, vnegq_s, v16qi, v8hi, v4si)
VAR3 (UNOP_SNONE_SNONE, vmvnq_s, v16qi, v8hi, v4si)
VAR3 (UNOP_SNONE_SNONE, vdupq_n_s, v16qi, v8hi, v4si)
VAR3 (UNOP_SNONE_SNONE, vclzq_s, v16qi, v8hi, v4si)
VAR3 (UNOP_SNONE_SNONE, vclsq_s, v16qi, v8hi, v4si)
VAR3 (UNOP_SNONE_SNONE, vaddvq_s, v16qi, v8hi, v4si)
VAR3 (UNOP_SNONE_SNONE, vabsq_s, v16qi, v8hi, v4si)
VAR2 (UNOP_SNONE_SNONE, vrev32q_s, v16qi, v8hi)
VAR2 (UNOP_SNONE_SNONE, vmovltq_s, v16qi, v8hi)
VAR2 (UNOP_SNONE_SNONE, vmovlbq_s, v16qi, v8hi)
VAR2 (UNOP_SNONE_NONE, vcvtq_from_f_s, v8hi, v4si)
VAR2 (UNOP_SNONE_NONE, vcvtpq_s, v8hi, v4si)
VAR2 (UNOP_SNONE_NONE, vcvtnq_s, v8hi, v4si)
VAR2 (UNOP_SNONE_NONE, vcvtmq_s, v8hi, v4si)
VAR2 (UNOP_SNONE_NONE, vcvtaq_s, v8hi, v4si)
VAR2 (UNOP_SNONE_IMM, vmvnq_n_s, v8hi, v4si)
VAR1 (UNOP_SNONE_SNONE, vrev16q_s, v16qi)
VAR1 (UNOP_SNONE_SNONE, vaddlvq_s, v4si)
VAR3 (UNOP_UNONE_UNONE, vrev64q_u, v16qi, v8hi, v4si)
VAR3 (UNOP_UNONE_UNONE, vmvnq_u, v16qi, v8hi, v4si)
VAR3 (UNOP_UNONE_UNONE, vdupq_n_u, v16qi, v8hi, v4si)
VAR3 (UNOP_UNONE_UNONE, vclzq_u, v16qi, v8hi, v4si)
VAR3 (UNOP_UNONE_UNONE, vaddvq_u, v16qi, v8hi, v4si)
VAR2 (UNOP_UNONE_UNONE, vrev32q_u, v16qi, v8hi)
VAR2 (UNOP_UNONE_UNONE, vmovltq_u, v16qi, v8hi)
VAR2 (UNOP_UNONE_UNONE, vmovlbq_u, v16qi, v8hi)
VAR2 (UNOP_UNONE_NONE, vcvtq_from_f_u, v8hi, v4si)
VAR2 (UNOP_UNONE_NONE, vcvtpq_u, v8hi, v4si)
VAR2 (UNOP_UNONE_NONE, vcvtnq_u, v8hi, v4si)
VAR2 (UNOP_UNONE_NONE, vcvtmq_u, v8hi, v4si)
VAR2 (UNOP_UNONE_NONE, vcvtaq_u, v8hi, v4si)
VAR2 (UNOP_UNONE_IMM, vmvnq_n_u, v8hi, v4si)
VAR1 (UNOP_UNONE_UNONE, vrev16q_u, v16qi)
VAR1 (UNOP_UNONE_UNONE, vaddlvq_u, v4si)
VAR1 (UNOP_UNONE_UNONE, vctp16q, hi)
VAR1 (UNOP_UNONE_UNONE, vctp32q, hi)
VAR1 (UNOP_UNONE_UNONE, vctp64q, hi)
VAR1 (UNOP_UNONE_UNONE, vctp8q, hi)
VAR1 (UNOP_UNONE_UNONE, vpnot, hi)
VAR2 (BINOP_NONE_NONE_NONE, vsubq_n_f, v8hf, v4sf)
VAR2 (BINOP_NONE_NONE_NONE, vbrsrq_n_f, v8hf, v4sf)
VAR2 (BINOP_NONE_NONE_IMM, vcvtq_n_to_f_s, v8hf, v4sf)
VAR2 (BINOP_NONE_UNONE_IMM, vcvtq_n_to_f_u, v8hf, v4sf)
VAR2 (BINOP_NONE_UNONE_UNONE, vcreateq_f, v8hf, v4sf)
