1/* NEON builtin definitions for ARM. 2 Copyright (C) 2013-2014 Free Software Foundation, Inc. 3 Contributed by ARM 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 9 by the Free Software Foundation; either version 3, or (at your 10 option) any later version. 11 12 GCC is distributed in the hope that it will be useful, but WITHOUT 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 15 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 21VAR10 (BINOP, vadd, 22 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 23VAR3 (BINOP, vaddl, v8qi, v4hi, v2si), 24VAR3 (BINOP, vaddw, v8qi, v4hi, v2si), 25VAR6 (BINOP, vhadd, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 26VAR8 (BINOP, vqadd, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 27VAR3 (BINOP, vaddhn, v8hi, v4si, v2di), 28VAR8 (BINOP, vmul, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 29VAR8 (TERNOP, vmla, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 30VAR3 (TERNOP, vmlal, v8qi, v4hi, v2si), 31VAR2 (TERNOP, vfma, v2sf, v4sf), 32VAR2 (TERNOP, vfms, v2sf, v4sf), 33VAR8 (TERNOP, vmls, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 34VAR3 (TERNOP, vmlsl, v8qi, v4hi, v2si), 35VAR4 (BINOP, vqdmulh, v4hi, v2si, v8hi, v4si), 36VAR2 (TERNOP, vqdmlal, v4hi, v2si), 37VAR2 (TERNOP, vqdmlsl, v4hi, v2si), 38VAR3 (BINOP, vmull, v8qi, v4hi, v2si), 39VAR2 (SCALARMULL, vmull_n, v4hi, v2si), 40VAR2 (LANEMULL, vmull_lane, v4hi, v2si), 41VAR2 (SCALARMULL, vqdmull_n, v4hi, v2si), 42VAR2 (LANEMULL, vqdmull_lane, v4hi, v2si), 43VAR4 (SCALARMULH, vqdmulh_n, v4hi, v2si, v8hi, v4si), 44VAR4 (LANEMULH, vqdmulh_lane, v4hi, v2si, v8hi, v4si), 45VAR2 (BINOP, vqdmull, v4hi, v2si), 46VAR8 (BINOP, vshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 47VAR8 (BINOP, vqshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 48VAR8 (SHIFTIMM, vshr_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 49VAR3 (SHIFTIMM, vshrn_n, v8hi, v4si, v2di), 50VAR3 (SHIFTIMM, vqshrn_n, v8hi, v4si, v2di), 51VAR3 (SHIFTIMM, vqshrun_n, v8hi, v4si, v2di), 52VAR8 (SHIFTIMM, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 53VAR8 (SHIFTIMM, vqshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 54VAR8 (SHIFTIMM, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 55VAR3 (SHIFTIMM, vshll_n, v8qi, v4hi, v2si), 56VAR8 (SHIFTACC, vsra_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 57VAR10 (BINOP, vsub, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 58VAR3 (BINOP, vsubl, v8qi, v4hi, v2si), 59VAR3 (BINOP, vsubw, v8qi, v4hi, v2si), 60VAR8 (BINOP, vqsub, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 61VAR6 (BINOP, vhsub, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 62VAR3 (BINOP, vsubhn, v8hi, v4si, v2di), 63VAR8 (BINOP, vceq, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 64VAR8 (BINOP, vcge, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 65VAR6 (BINOP, vcgeu, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 66VAR8 (BINOP, vcgt, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 67VAR6 (BINOP, vcgtu, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 68VAR2 (BINOP, vcage, v2sf, v4sf), 69VAR2 (BINOP, vcagt, v2sf, v4sf), 70VAR6 (BINOP, vtst, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 71VAR8 (BINOP, vabd, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 72VAR3 (BINOP, vabdl, v8qi, v4hi, v2si), 73VAR6 (TERNOP, vaba, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 74VAR3 (TERNOP, vabal, v8qi, v4hi, v2si), 75VAR8 (BINOP, vmax, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 76VAR8 (BINOP, vmin, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 77VAR4 (BINOP, vpadd, v8qi, v4hi, v2si, v2sf), 78VAR6 (UNOP, vpaddl, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 79VAR6 (BINOP, vpadal, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 80VAR4 (BINOP, vpmax, v8qi, v4hi, v2si, v2sf), 81VAR4 (BINOP, vpmin, v8qi, v4hi, v2si, v2sf), 82VAR2 (BINOP, vrecps, v2sf, v4sf), 83VAR2 (BINOP, vrsqrts, v2sf, v4sf), 84VAR8 (SHIFTINSERT, vsri_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 85VAR8 (SHIFTINSERT, vsli_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), 86VAR8 (UNOP, vabs, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 87VAR6 (UNOP, vqabs, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 88VAR8 (UNOP, vneg, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 89VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 90VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 91VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 92VAR2 (UNOP, vcnt, v8qi, v16qi), 93VAR4 (UNOP, vrecpe, v2si, v2sf, v4si, v4sf), 94VAR4 (UNOP, vrsqrte, v2si, v2sf, v4si, v4sf), 95VAR6 (UNOP, vmvn, v8qi, v4hi, v2si, v16qi, v8hi, v4si), 96 /* FIXME: vget_lane supports more variants than this! */ 97VAR10 (GETLANE, vget_lane, 98 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 99VAR10 (SETLANE, vset_lane, 100 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 101VAR5 (CREATE, vcreate, v8qi, v4hi, v2si, v2sf, di), 102VAR10 (DUP, vdup_n, 103 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 104VAR10 (DUPLANE, vdup_lane, 105 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 106VAR5 (COMBINE, vcombine, v8qi, v4hi, v2si, v2sf, di), 107VAR5 (SPLIT, vget_high, v16qi, v8hi, v4si, v4sf, v2di), 108VAR5 (SPLIT, vget_low, v16qi, v8hi, v4si, v4sf, v2di), 109VAR3 (UNOP, vmovn, v8hi, v4si, v2di), 110VAR3 (UNOP, vqmovn, v8hi, v4si, v2di), 111VAR3 (UNOP, vqmovun, v8hi, v4si, v2di), 112VAR3 (UNOP, vmovl, v8qi, v4hi, v2si), 113VAR6 (LANEMUL, vmul_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 114VAR6 (LANEMAC, vmla_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 115VAR2 (LANEMAC, vmlal_lane, v4hi, v2si), 116VAR2 (LANEMAC, vqdmlal_lane, v4hi, v2si), 117VAR6 (LANEMAC, vmls_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 118VAR2 (LANEMAC, vmlsl_lane, v4hi, v2si), 119VAR2 (LANEMAC, vqdmlsl_lane, v4hi, v2si), 120VAR6 (SCALARMUL, vmul_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 121VAR6 (SCALARMAC, vmla_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 122VAR2 (SCALARMAC, vmlal_n, v4hi, v2si), 123VAR2 (SCALARMAC, vqdmlal_n, v4hi, v2si), 124VAR6 (SCALARMAC, vmls_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 125VAR2 (SCALARMAC, vmlsl_n, v4hi, v2si), 126VAR2 (SCALARMAC, vqdmlsl_n, v4hi, v2si), 127VAR10 (BINOP, vext, 128 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 129VAR8 (UNOP, vrev64, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 130VAR4 (UNOP, vrev32, v8qi, v4hi, v16qi, v8hi), 131VAR2 (UNOP, vrev16, v8qi, v16qi), 132VAR4 (CONVERT, vcvt, v2si, v2sf, v4si, v4sf), 133VAR4 (FIXCONV, vcvt_n, v2si, v2sf, v4si, v4sf), 134VAR1 (FLOAT_WIDEN, vcvtv4sf, v4hf), 135VAR1 (FLOAT_NARROW, vcvtv4hf, v4sf), 136VAR10 (SELECT, vbsl, 137 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 138VAR2 (RINT, vrintn, v2sf, v4sf), 139VAR2 (RINT, vrinta, v2sf, v4sf), 140VAR2 (RINT, vrintp, v2sf, v4sf), 141VAR2 (RINT, vrintm, v2sf, v4sf), 142VAR2 (RINT, vrintz, v2sf, v4sf), 143VAR2 (RINT, vrintx, v2sf, v4sf), 144VAR1 (VTBL, vtbl1, v8qi), 145VAR1 (VTBL, vtbl2, v8qi), 146VAR1 (VTBL, vtbl3, v8qi), 147VAR1 (VTBL, vtbl4, v8qi), 148VAR1 (VTBX, vtbx1, v8qi), 149VAR1 (VTBX, vtbx2, v8qi), 150VAR1 (VTBX, vtbx3, v8qi), 151VAR1 (VTBX, vtbx4, v8qi), 152VAR8 (RESULTPAIR, vtrn, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 153VAR8 (RESULTPAIR, vzip, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 154VAR8 (RESULTPAIR, vuzp, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), 155VAR5 (REINTERP, vreinterpretv8qi, v8qi, v4hi, v2si, v2sf, di), 156VAR5 (REINTERP, vreinterpretv4hi, v8qi, v4hi, v2si, v2sf, di), 157VAR5 (REINTERP, vreinterpretv2si, v8qi, v4hi, v2si, v2sf, di), 158VAR5 (REINTERP, vreinterpretv2sf, v8qi, v4hi, v2si, v2sf, di), 159VAR5 (REINTERP, vreinterpretdi, v8qi, v4hi, v2si, v2sf, di), 160VAR6 (REINTERP, vreinterpretv16qi, v16qi, v8hi, v4si, v4sf, v2di, ti), 161VAR6 (REINTERP, vreinterpretv8hi, v16qi, v8hi, v4si, v4sf, v2di, ti), 162VAR6 (REINTERP, vreinterpretv4si, v16qi, v8hi, v4si, v4sf, v2di, ti), 163VAR6 (REINTERP, vreinterpretv4sf, v16qi, v8hi, v4si, v4sf, v2di, ti), 164VAR6 (REINTERP, vreinterpretv2di, v16qi, v8hi, v4si, v4sf, v2di, ti), 165VAR6 (REINTERP, vreinterpretti, v16qi, v8hi, v4si, v4sf, v2di, ti), 166VAR10 (LOAD1, vld1, 167 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 168VAR10 (LOAD1LANE, vld1_lane, 169 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 170VAR10 (LOAD1, vld1_dup, 171 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 172VAR10 (STORE1, vst1, 173 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 174VAR10 (STORE1LANE, vst1_lane, 175 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 176VAR9 (LOADSTRUCT, 177 vld2, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), 178VAR7 (LOADSTRUCTLANE, vld2_lane, 179 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 180VAR5 (LOADSTRUCT, vld2_dup, v8qi, v4hi, v2si, v2sf, di), 181VAR9 (STORESTRUCT, vst2, 182 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), 183VAR7 (STORESTRUCTLANE, vst2_lane, 184 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 185VAR9 (LOADSTRUCT, 186 vld3, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), 187VAR7 (LOADSTRUCTLANE, vld3_lane, 188 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 189VAR5 (LOADSTRUCT, vld3_dup, v8qi, v4hi, v2si, v2sf, di), 190VAR9 (STORESTRUCT, vst3, 191 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), 192VAR7 (STORESTRUCTLANE, vst3_lane, 193 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 194VAR9 (LOADSTRUCT, vld4, 195 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), 196VAR7 (LOADSTRUCTLANE, vld4_lane, 197 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 198VAR5 (LOADSTRUCT, vld4_dup, v8qi, v4hi, v2si, v2sf, di), 199VAR9 (STORESTRUCT, vst4, 200 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), 201VAR7 (STORESTRUCTLANE, vst4_lane, 202 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), 203VAR10 (LOGICBINOP, vand, 204 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 205VAR10 (LOGICBINOP, vorr, 206 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 207VAR10 (BINOP, veor, 208 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 209VAR10 (LOGICBINOP, vbic, 210 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), 211VAR10 (LOGICBINOP, vorn, 212 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) 213