1  /* function_base declaration for RISC-V 'V' Extension for GNU compiler.
       2     Copyright (C) 2022-2023 Free Software Foundation, Inc.
       3     Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
       4  
       5     This file is part of GCC.
       6  
       7     GCC is free software; you can redistribute it and/or modify it
       8     under the terms of the GNU General Public License as published by
       9     the Free Software Foundation; either version 3, or (at your option)
      10     any later version.
      11  
      12     GCC is distributed in the hope that it will be useful, but
      13     WITHOUT ANY WARRANTY; without even the implied warranty of
      14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      15     General Public License for more details.
      16  
      17     You should have received a copy of the GNU General Public License
      18     along with GCC; see the file COPYING3.  If not see
      19     <http://www.gnu.org/licenses/>.  */
      20  
      21  #ifndef GCC_RISCV_VECTOR_BUILTINS_BASES_H
      22  #define GCC_RISCV_VECTOR_BUILTINS_BASES_H
      23  
      24  namespace riscv_vector {
      25  
      26  namespace bases {
      27  extern const function_base *const vsetvl;
      28  extern const function_base *const vsetvlmax;
      29  extern const function_base *const vle;
      30  extern const function_base *const vse;
      31  extern const function_base *const vlm;
      32  extern const function_base *const vsm;
      33  extern const function_base *const vlse;
      34  extern const function_base *const vsse;
      35  extern const function_base *const vluxei8;
      36  extern const function_base *const vluxei16;
      37  extern const function_base *const vluxei32;
      38  extern const function_base *const vluxei64;
      39  extern const function_base *const vloxei8;
      40  extern const function_base *const vloxei16;
      41  extern const function_base *const vloxei32;
      42  extern const function_base *const vloxei64;
      43  extern const function_base *const vsuxei8;
      44  extern const function_base *const vsuxei16;
      45  extern const function_base *const vsuxei32;
      46  extern const function_base *const vsuxei64;
      47  extern const function_base *const vsoxei8;
      48  extern const function_base *const vsoxei16;
      49  extern const function_base *const vsoxei32;
      50  extern const function_base *const vsoxei64;
      51  extern const function_base *const vadd;
      52  extern const function_base *const vsub;
      53  extern const function_base *const vrsub;
      54  extern const function_base *const vand;
      55  extern const function_base *const vor;
      56  extern const function_base *const vxor;
      57  extern const function_base *const vsll;
      58  extern const function_base *const vsra;
      59  extern const function_base *const vsrl;
      60  extern const function_base *const vmin;
      61  extern const function_base *const vmax;
      62  extern const function_base *const vminu;
      63  extern const function_base *const vmaxu;
      64  extern const function_base *const vmul;
      65  extern const function_base *const vmulh;
      66  extern const function_base *const vmulhu;
      67  extern const function_base *const vmulhsu;
      68  extern const function_base *const vdiv;
      69  extern const function_base *const vrem;
      70  extern const function_base *const vdivu;
      71  extern const function_base *const vremu;
      72  extern const function_base *const vneg;
      73  extern const function_base *const vnot;
      74  extern const function_base *const vsext;
      75  extern const function_base *const vzext;
      76  extern const function_base *const vwadd;
      77  extern const function_base *const vwsub;
      78  extern const function_base *const vwmul;
      79  extern const function_base *const vwaddu;
      80  extern const function_base *const vwsubu;
      81  extern const function_base *const vwmulu;
      82  extern const function_base *const vwmulsu;
      83  extern const function_base *const vwcvt_x;
      84  extern const function_base *const vwcvtu_x;
      85  extern const function_base *const vadc;
      86  extern const function_base *const vsbc;
      87  extern const function_base *const vmadc;
      88  extern const function_base *const vmsbc;
      89  extern const function_base *const vnsrl;
      90  extern const function_base *const vnsra;
      91  extern const function_base *const vncvt_x;
      92  extern const function_base *const vmerge;
      93  extern const function_base *const vmv_v;
      94  extern const function_base *const vmseq;
      95  extern const function_base *const vmsne;
      96  extern const function_base *const vmslt;
      97  extern const function_base *const vmsgt;
      98  extern const function_base *const vmsle;
      99  extern const function_base *const vmsge;
     100  extern const function_base *const vmsltu;
     101  extern const function_base *const vmsgtu;
     102  extern const function_base *const vmsleu;
     103  extern const function_base *const vmsgeu;
     104  extern const function_base *const vmacc;
     105  extern const function_base *const vnmsac;
     106  extern const function_base *const vmadd;
     107  extern const function_base *const vnmsub;
     108  extern const function_base *const vwmacc;
     109  extern const function_base *const vwmaccu;
     110  extern const function_base *const vwmaccsu;
     111  extern const function_base *const vwmaccus;
     112  extern const function_base *const vsadd;
     113  extern const function_base *const vssub;
     114  extern const function_base *const vsaddu;
     115  extern const function_base *const vssubu;
     116  extern const function_base *const vaadd;
     117  extern const function_base *const vasub;
     118  extern const function_base *const vaaddu;
     119  extern const function_base *const vasubu;
     120  extern const function_base *const vsmul;
     121  extern const function_base *const vssra;
     122  extern const function_base *const vssrl;
     123  extern const function_base *const vnclip;
     124  extern const function_base *const vnclip;
     125  extern const function_base *const vnclipu;
     126  extern const function_base *const vnclipu;
     127  extern const function_base *const vmand;
     128  extern const function_base *const vmnand;
     129  extern const function_base *const vmandn;
     130  extern const function_base *const vmxor;
     131  extern const function_base *const vmor;
     132  extern const function_base *const vmnor;
     133  extern const function_base *const vmorn;
     134  extern const function_base *const vmxnor;
     135  extern const function_base *const vmmv;
     136  extern const function_base *const vmclr;
     137  extern const function_base *const vmset;
     138  extern const function_base *const vmnot;
     139  extern const function_base *const vcpop;
     140  extern const function_base *const vfirst;
     141  extern const function_base *const vmsbf;
     142  extern const function_base *const vmsif;
     143  extern const function_base *const vmsof;
     144  extern const function_base *const viota;
     145  extern const function_base *const vid;
     146  extern const function_base *const vfadd;
     147  extern const function_base *const vfadd;
     148  extern const function_base *const vfsub;
     149  extern const function_base *const vfsub;
     150  extern const function_base *const vfrsub;
     151  extern const function_base *const vfwadd;
     152  extern const function_base *const vfwsub;
     153  extern const function_base *const vfmul;
     154  extern const function_base *const vfmul;
     155  extern const function_base *const vfdiv;
     156  extern const function_base *const vfdiv;
     157  extern const function_base *const vfrdiv;
     158  extern const function_base *const vfwmul;
     159  extern const function_base *const vfmacc;
     160  extern const function_base *const vfnmsac;
     161  extern const function_base *const vfmadd;
     162  extern const function_base *const vfnmsub;
     163  extern const function_base *const vfnmacc;
     164  extern const function_base *const vfmsac;
     165  extern const function_base *const vfnmadd;
     166  extern const function_base *const vfmsub;
     167  extern const function_base *const vfwmacc;
     168  extern const function_base *const vfwnmacc;
     169  extern const function_base *const vfwmsac;
     170  extern const function_base *const vfwnmsac;
     171  extern const function_base *const vfsqrt;
     172  extern const function_base *const vfrsqrt7;
     173  extern const function_base *const vfrec7;
     174  extern const function_base *const vfmin;
     175  extern const function_base *const vfmax;
     176  extern const function_base *const vfsgnj;
     177  extern const function_base *const vfsgnjn;
     178  extern const function_base *const vfsgnjx;
     179  extern const function_base *const vfneg;
     180  extern const function_base *const vfabs;
     181  extern const function_base *const vmfeq;
     182  extern const function_base *const vmfne;
     183  extern const function_base *const vmflt;
     184  extern const function_base *const vmfgt;
     185  extern const function_base *const vmfle;
     186  extern const function_base *const vmfge;
     187  extern const function_base *const vfclass;
     188  extern const function_base *const vfmerge;
     189  extern const function_base *const vfmv_v;
     190  extern const function_base *const vfcvt_x;
     191  extern const function_base *const vfcvt_xu;
     192  extern const function_base *const vfcvt_rtz_x;
     193  extern const function_base *const vfcvt_rtz_xu;
     194  extern const function_base *const vfcvt_f;
     195  extern const function_base *const vfwcvt_x;
     196  extern const function_base *const vfwcvt_xu;
     197  extern const function_base *const vfwcvt_rtz_x;
     198  extern const function_base *const vfwcvt_rtz_xu;
     199  extern const function_base *const vfwcvt_f;
     200  extern const function_base *const vfncvt_x;
     201  extern const function_base *const vfncvt_xu;
     202  extern const function_base *const vfncvt_rtz_x;
     203  extern const function_base *const vfncvt_rtz_xu;
     204  extern const function_base *const vfncvt_f;
     205  extern const function_base *const vfncvt_rod_f;
     206  extern const function_base *const vredsum;
     207  extern const function_base *const vredmaxu;
     208  extern const function_base *const vredmax;
     209  extern const function_base *const vredminu;
     210  extern const function_base *const vredmin;
     211  extern const function_base *const vredand;
     212  extern const function_base *const vredor;
     213  extern const function_base *const vredxor;
     214  extern const function_base *const vwredsum;
     215  extern const function_base *const vwredsumu;
     216  extern const function_base *const vfredusum;
     217  extern const function_base *const vfredosum;
     218  extern const function_base *const vfredmax;
     219  extern const function_base *const vfredmin;
     220  extern const function_base *const vfwredosum;
     221  extern const function_base *const vfwredusum;
     222  extern const function_base *const vmv_x;
     223  extern const function_base *const vmv_s;
     224  extern const function_base *const vfmv_f;
     225  extern const function_base *const vfmv_s;
     226  extern const function_base *const vslideup;
     227  extern const function_base *const vslidedown;
     228  extern const function_base *const vslide1up;
     229  extern const function_base *const vslide1down;
     230  extern const function_base *const vfslide1up;
     231  extern const function_base *const vfslide1down;
     232  extern const function_base *const vrgather;
     233  extern const function_base *const vrgatherei16;
     234  extern const function_base *const vcompress;
     235  extern const function_base *const vundefined;
     236  extern const function_base *const vreinterpret;
     237  extern const function_base *const vlmul_ext;
     238  extern const function_base *const vlmul_trunc;
     239  extern const function_base *const vset;
     240  extern const function_base *const vget;
     241  extern const function_base *const read_vl;
     242  extern const function_base *const vleff;
     243  extern const function_base *const vlenb;
     244  }
     245  
     246  } // end namespace riscv_vector
     247  
     248  #endif