Home | History | Annotate | Line # | Download | only in aarch64
      1   1.1  mrg /* Machine description for AArch64 architecture.
      2  1.10  mrg    Copyright (C) 2012-2022 Free Software Foundation, Inc.
      3   1.1  mrg    Contributed by ARM Ltd.
      4   1.1  mrg 
      5   1.1  mrg    This file is part of GCC.
      6   1.1  mrg 
      7   1.1  mrg    GCC is free software; you can redistribute it and/or modify it
      8   1.1  mrg    under the terms of the GNU General Public License as published by
      9   1.1  mrg    the Free Software Foundation; either version 3, or (at your option)
     10   1.1  mrg    any later version.
     11   1.1  mrg 
     12   1.1  mrg    GCC is distributed in the hope that it will be useful, but
     13   1.1  mrg    WITHOUT ANY WARRANTY; without even the implied warranty of
     14   1.1  mrg    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     15   1.1  mrg    General Public License for more details.
     16   1.1  mrg 
     17   1.1  mrg    You should have received a copy of the GNU General Public License
     18   1.1  mrg    along with GCC; see the file COPYING3.  If not see
     19   1.1  mrg    <http://www.gnu.org/licenses/>.  */
     20   1.1  mrg 
     21   1.3  mrg /* In the list below, the BUILTIN_<ITERATOR> macros expand to create
     22   1.3  mrg    builtins for each of the modes described by <ITERATOR>.  When adding
     23   1.3  mrg    new builtins to this list, a helpful idiom to follow is to add
     24   1.3  mrg    a line for each pattern in the md file.  Thus, ADDP, which has one
     25   1.3  mrg    pattern defined for the VD_BHSI iterator, and one for DImode, has two
     26   1.3  mrg    entries below.
     27   1.3  mrg 
     28   1.3  mrg    Parameter 1 is the 'type' of the intrinsic.  This is used to
     29   1.3  mrg    describe the type modifiers (for example; unsigned) applied to
     30   1.3  mrg    each of the parameters to the intrinsic function.
     31   1.3  mrg 
     32   1.3  mrg    Parameter 2 is the name of the intrinsic.  This is appended
     33   1.3  mrg    to `__builtin_aarch64_<name><mode>` to give the intrinsic name
     34   1.3  mrg    as exported to the front-ends.
     35   1.3  mrg 
     36   1.3  mrg    Parameter 3 describes how to map from the name to the CODE_FOR_
     37   1.3  mrg    macro holding the RTL pattern for the intrinsic.  This mapping is:
     38   1.3  mrg    0 - CODE_FOR_aarch64_<name><mode>
     39   1.3  mrg    1-9 - CODE_FOR_<name><mode><1-9>
     40  1.10  mrg    10 - CODE_FOR_<name><mode>.
     41   1.3  mrg 
     42  1.10  mrg    Parameter 4 is the 'flag' of the intrinsic.  This is used to
     43  1.10  mrg    help describe the attributes (for example, pure) for the intrinsic
     44  1.10  mrg    function.  */
     45  1.10  mrg 
     46  1.10  mrg   BUILTIN_VDC (BINOP, combine, 0, AUTO_FP)
     47  1.10  mrg   BUILTIN_VD_I (BINOPU, combine, 0, NONE)
     48  1.10  mrg   BUILTIN_VDC_P (BINOPP, combine, 0, NONE)
     49  1.10  mrg   BUILTIN_VB (BINOPP, pmul, 0, NONE)
     50  1.10  mrg   VAR1 (BINOPP, pmull, 0, NONE, v8qi)
     51  1.10  mrg   VAR1 (BINOPP, pmull_hi, 0, NONE, v16qi)
     52  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP, fmulx, 0, FP)
     53  1.10  mrg   BUILTIN_VHSDF_DF (UNOP, sqrt, 2, FP)
     54  1.10  mrg   BUILTIN_VDQ_I (BINOP, addp, 0, NONE)
     55  1.10  mrg   BUILTIN_VDQ_I (BINOPU, addp, 0, NONE)
     56  1.10  mrg   VAR1 (UNOP, addp, 0, NONE, di)
     57  1.10  mrg   VAR1 (UNOPU, addp, 0, NONE, di)
     58  1.10  mrg   BUILTIN_VDQ_BHSI (UNOP, clrsb, 2, NONE)
     59  1.10  mrg   BUILTIN_VDQ_BHSI (UNOP, clz, 2, NONE)
     60  1.10  mrg   BUILTIN_VS (UNOP, ctz, 2, NONE)
     61  1.10  mrg   BUILTIN_VB (UNOP, popcount, 2, NONE)
     62  1.10  mrg 
     63  1.10  mrg   /* Implemented by aarch64_get_low<mode>.  */
     64  1.10  mrg   BUILTIN_VQMOV (UNOP, get_low, 0, AUTO_FP)
     65  1.10  mrg   /* Implemented by aarch64_get_high<mode>.  */
     66  1.10  mrg   BUILTIN_VQMOV (UNOP, get_high, 0, AUTO_FP)
     67   1.1  mrg 
     68   1.1  mrg   /* Implemented by aarch64_<sur>q<r>shl<mode>.  */
     69  1.10  mrg   BUILTIN_VSDQ_I (BINOP, sqshl, 0, NONE)
     70  1.10  mrg   BUILTIN_VSDQ_I (BINOP_UUS, uqshl, 0, NONE)
     71  1.10  mrg   BUILTIN_VSDQ_I (BINOP, sqrshl, 0, NONE)
     72  1.10  mrg   BUILTIN_VSDQ_I (BINOP_UUS, uqrshl, 0, NONE)
     73   1.1  mrg   /* Implemented by aarch64_<su_optab><optab><mode>.  */
     74  1.10  mrg   BUILTIN_VSDQ_I (BINOP, sqadd, 0, NONE)
     75  1.10  mrg   BUILTIN_VSDQ_I (BINOPU, uqadd, 0, NONE)
     76  1.10  mrg   BUILTIN_VSDQ_I (BINOP, sqsub, 0, NONE)
     77  1.10  mrg   BUILTIN_VSDQ_I (BINOPU, uqsub, 0, NONE)
     78   1.1  mrg   /* Implemented by aarch64_<sur>qadd<mode>.  */
     79  1.10  mrg   BUILTIN_VSDQ_I (BINOP_SSU, suqadd, 0, NONE)
     80  1.10  mrg   BUILTIN_VSDQ_I (BINOP_UUS, usqadd, 0, NONE)
     81   1.1  mrg 
     82  1.10  mrg   /* Implemented by aarch64_ld1x2<vstruct_elt>. */
     83  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT, ld1x2, 0, LOAD)
     84  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld1x2, 0, LOAD)
     85  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_P, ld1x2, 0, LOAD)
     86  1.10  mrg   /* Implemented by aarch64_ld1x3<vstruct_elt>.  */
     87  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT, ld1x3, 0, LOAD)
     88  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld1x3, 0, LOAD)
     89  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_P, ld1x3, 0, LOAD)
     90  1.10  mrg   /* Implemented by aarch64_ld1x4<vstruct_elt>.  */
     91  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT, ld1x4, 0, LOAD)
     92  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld1x4, 0, LOAD)
     93  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_P, ld1x4, 0, LOAD)
     94  1.10  mrg 
     95  1.10  mrg   /* Implemented by aarch64_st1x2<vstruct_elt>.  */
     96  1.10  mrg   BUILTIN_VALLDIF (STORESTRUCT, st1x2, 0, STORE)
     97  1.10  mrg   BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st1x2, 0, STORE)
     98  1.10  mrg   BUILTIN_VALLP (STORESTRUCT_P, st1x2, 0, STORE)
     99  1.10  mrg   /* Implemented by aarch64_st1x3<vstruct_elt>.  */
    100  1.10  mrg   BUILTIN_VALLDIF (STORESTRUCT, st1x3, 0, STORE)
    101  1.10  mrg   BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st1x3, 0, STORE)
    102  1.10  mrg   BUILTIN_VALLP (STORESTRUCT_P, st1x3, 0, STORE)
    103  1.10  mrg   /* Implemented by aarch64_st1x4<vstruct_elt>.  */
    104  1.10  mrg   BUILTIN_VALLDIF (STORESTRUCT, st1x4, 0, STORE)
    105  1.10  mrg   BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st1x4, 0, STORE)
    106  1.10  mrg   BUILTIN_VALLP (STORESTRUCT_P, st1x4, 0, STORE)
    107  1.10  mrg 
    108  1.10  mrg   /* Implemented by aarch64_ld<nregs><vstruct_elt>.  */
    109  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT, ld2, 0, LOAD)
    110  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld2, 0, LOAD)
    111  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_P, ld2, 0, LOAD)
    112  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT, ld3, 0, LOAD)
    113  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld3, 0, LOAD)
    114  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_P, ld3, 0, LOAD)
    115  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT, ld4, 0, LOAD)
    116  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld4, 0, LOAD)
    117  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_P, ld4, 0, LOAD)
    118  1.10  mrg 
    119  1.10  mrg   /* Implemented by aarch64_st<nregs><vstruct_elt>.  */
    120  1.10  mrg   BUILTIN_VALLDIF (STORESTRUCT, st2, 0, STORE)
    121  1.10  mrg   BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st2, 0, STORE)
    122  1.10  mrg   BUILTIN_VALLP (STORESTRUCT_P, st2, 0, STORE)
    123  1.10  mrg   BUILTIN_VALLDIF (STORESTRUCT, st3, 0, STORE)
    124  1.10  mrg   BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st3, 0, STORE)
    125  1.10  mrg   BUILTIN_VALLP (STORESTRUCT_P, st3, 0, STORE)
    126  1.10  mrg   BUILTIN_VALLDIF (STORESTRUCT, st4, 0, STORE)
    127  1.10  mrg   BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st4, 0, STORE)
    128  1.10  mrg   BUILTIN_VALLP (STORESTRUCT_P, st4, 0, STORE)
    129  1.10  mrg 
    130  1.10  mrg   /* Implemented by aarch64_ld<nregs>r<vstruct_elt>.  */
    131  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT, ld2r, 0, LOAD)
    132  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld2r, 0, LOAD)
    133  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_P, ld2r, 0, LOAD)
    134  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT, ld3r, 0, LOAD)
    135  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld3r, 0, LOAD)
    136  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_P, ld3r, 0, LOAD)
    137  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT, ld4r, 0, LOAD)
    138  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld4r, 0, LOAD)
    139  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_P, ld4r, 0, LOAD)
    140  1.10  mrg 
    141  1.10  mrg   /* Implemented by aarch64_ld<nregs>_lane<vstruct_elt>.  */
    142  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld2_lane, 0, ALL)
    143  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_LANE_U, ld2_lane, 0, ALL)
    144  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_LANE_P, ld2_lane, 0, ALL)
    145  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld3_lane, 0, ALL)
    146  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_LANE_U, ld3_lane, 0, ALL)
    147  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_LANE_P, ld3_lane, 0, ALL)
    148  1.10  mrg   BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld4_lane, 0, ALL)
    149  1.10  mrg   BUILTIN_VSDQ_I_DI (LOADSTRUCT_LANE_U, ld4_lane, 0, ALL)
    150  1.10  mrg   BUILTIN_VALLP (LOADSTRUCT_LANE_P, ld4_lane, 0, ALL)
    151  1.10  mrg 
    152  1.10  mrg   /* Implemented by aarch64_st<nregs>_lane<vstruct_elt>.  */
    153  1.10  mrg   BUILTIN_VALLDIF (STORESTRUCT_LANE, st2_lane, 0, ALL)
    154  1.10  mrg   BUILTIN_VSDQ_I_DI (STORESTRUCT_LANE_U, st2_lane, 0, ALL)
    155  1.10  mrg   BUILTIN_VALLP (STORESTRUCT_LANE_P, st2_lane, 0, ALL)
    156  1.10  mrg   BUILTIN_VALLDIF (STORESTRUCT_LANE, st3_lane, 0, ALL)
    157  1.10  mrg   BUILTIN_VSDQ_I_DI (STORESTRUCT_LANE_U, st3_lane, 0, ALL)
    158  1.10  mrg   BUILTIN_VALLP (STORESTRUCT_LANE_P, st3_lane, 0, ALL)
    159  1.10  mrg   BUILTIN_VALLDIF (STORESTRUCT_LANE, st4_lane, 0, ALL)
    160  1.10  mrg   BUILTIN_VSDQ_I_DI (STORESTRUCT_LANE_U, st4_lane, 0, ALL)
    161  1.10  mrg   BUILTIN_VALLP (STORESTRUCT_LANE_P, st4_lane, 0, ALL)
    162  1.10  mrg 
    163  1.10  mrg   BUILTIN_VQW (BINOP, saddl2, 0, NONE)
    164  1.10  mrg   BUILTIN_VQW (BINOPU, uaddl2, 0, NONE)
    165  1.10  mrg   BUILTIN_VQW (BINOP, ssubl2, 0, NONE)
    166  1.10  mrg   BUILTIN_VQW (BINOPU, usubl2, 0, NONE)
    167  1.10  mrg   BUILTIN_VQW (BINOP, saddw2, 0, NONE)
    168  1.10  mrg   BUILTIN_VQW (BINOPU, uaddw2, 0, NONE)
    169  1.10  mrg   BUILTIN_VQW (BINOP, ssubw2, 0, NONE)
    170  1.10  mrg   BUILTIN_VQW (BINOPU, usubw2, 0, NONE)
    171   1.1  mrg   /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>l<mode>.  */
    172  1.10  mrg   BUILTIN_VD_BHSI (BINOP, saddl, 0, NONE)
    173  1.10  mrg   BUILTIN_VD_BHSI (BINOPU, uaddl, 0, NONE)
    174  1.10  mrg   BUILTIN_VD_BHSI (BINOP, ssubl, 0, NONE)
    175  1.10  mrg   BUILTIN_VD_BHSI (BINOPU, usubl, 0, NONE)
    176   1.1  mrg   /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>.  */
    177  1.10  mrg   BUILTIN_VD_BHSI (BINOP, saddw, 0, NONE)
    178  1.10  mrg   BUILTIN_VD_BHSI (BINOPU, uaddw, 0, NONE)
    179  1.10  mrg   BUILTIN_VD_BHSI (BINOP, ssubw, 0, NONE)
    180  1.10  mrg   BUILTIN_VD_BHSI (BINOPU, usubw, 0, NONE)
    181   1.1  mrg   /* Implemented by aarch64_<sur>h<addsub><mode>.  */
    182  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, shadd, 0, NONE)
    183  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, shsub, 0, NONE)
    184  1.10  mrg   BUILTIN_VDQ_BHSI (BINOPU, uhadd, 0, NONE)
    185  1.10  mrg   BUILTIN_VDQ_BHSI (BINOPU, uhsub, 0, NONE)
    186  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, srhadd, 0, NONE)
    187  1.10  mrg   BUILTIN_VDQ_BHSI (BINOPU, urhadd, 0, NONE)
    188  1.10  mrg 
    189  1.10  mrg   /* Implemented by aarch64_<su>addlp<mode>.  */
    190  1.10  mrg   BUILTIN_VDQV_L (UNOP, saddlp, 0, NONE)
    191  1.10  mrg   BUILTIN_VDQV_L (UNOPU, uaddlp, 0, NONE)
    192  1.10  mrg 
    193  1.10  mrg   /* Implemented by aarch64_<su>addlv<mode>.  */
    194  1.10  mrg   BUILTIN_VDQV_L (UNOP, saddlv, 0, NONE)
    195  1.10  mrg   BUILTIN_VDQV_L (UNOPU, uaddlv, 0, NONE)
    196  1.10  mrg 
    197  1.10  mrg   /* Implemented by aarch64_<su>abd<mode>.  */
    198  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, sabd, 0, NONE)
    199  1.10  mrg   BUILTIN_VDQ_BHSI (BINOPU, uabd, 0, NONE)
    200  1.10  mrg 
    201  1.10  mrg   /* Implemented by aarch64_<su>aba<mode>.  */
    202  1.10  mrg   BUILTIN_VDQ_BHSI (TERNOP, saba, 0, NONE)
    203  1.10  mrg   BUILTIN_VDQ_BHSI (TERNOPU, uaba, 0, NONE)
    204  1.10  mrg 
    205  1.10  mrg   BUILTIN_VDQV_L (BINOP, sadalp, 0, NONE)
    206  1.10  mrg   BUILTIN_VDQV_L (BINOPU, uadalp, 0, NONE)
    207  1.10  mrg 
    208  1.10  mrg   /* Implemented by aarch64_<sur>abal<mode>.  */
    209  1.10  mrg   BUILTIN_VD_BHSI (TERNOP, sabal, 0, NONE)
    210  1.10  mrg   BUILTIN_VD_BHSI (TERNOPU, uabal, 0, NONE)
    211  1.10  mrg 
    212  1.10  mrg   /* Implemented by aarch64_<sur>abal2<mode>.  */
    213  1.10  mrg   BUILTIN_VQW (TERNOP, sabal2, 0, NONE)
    214  1.10  mrg   BUILTIN_VQW (TERNOPU, uabal2, 0, NONE)
    215  1.10  mrg 
    216  1.10  mrg   /* Implemented by aarch64_<sur>abdl<mode>.  */
    217  1.10  mrg   BUILTIN_VD_BHSI (BINOP, sabdl, 0, NONE)
    218  1.10  mrg   BUILTIN_VD_BHSI (BINOPU, uabdl, 0, NONE)
    219  1.10  mrg 
    220  1.10  mrg   /* Implemented by aarch64_<sur>abdl2<mode>.  */
    221  1.10  mrg   BUILTIN_VQW (BINOP, sabdl2, 0, NONE)
    222  1.10  mrg   BUILTIN_VQW (BINOPU, uabdl2, 0, NONE)
    223  1.10  mrg 
    224   1.1  mrg   /* Implemented by aarch64_<sur><addsub>hn<mode>.  */
    225  1.10  mrg   BUILTIN_VQN (BINOP, addhn, 0, NONE)
    226  1.10  mrg   BUILTIN_VQN (BINOPU, addhn, 0, NONE)
    227  1.10  mrg   BUILTIN_VQN (BINOP, subhn, 0, NONE)
    228  1.10  mrg   BUILTIN_VQN (BINOPU, subhn, 0, NONE)
    229  1.10  mrg   BUILTIN_VQN (BINOP, raddhn, 0, NONE)
    230  1.10  mrg   BUILTIN_VQN (BINOPU, raddhn, 0, NONE)
    231  1.10  mrg   BUILTIN_VQN (BINOP, rsubhn, 0, NONE)
    232  1.10  mrg   BUILTIN_VQN (BINOPU, rsubhn, 0, NONE)
    233   1.1  mrg   /* Implemented by aarch64_<sur><addsub>hn2<mode>.  */
    234  1.10  mrg   BUILTIN_VQN (TERNOP, addhn2, 0, NONE)
    235  1.10  mrg   BUILTIN_VQN (TERNOPU, addhn2, 0, NONE)
    236  1.10  mrg   BUILTIN_VQN (TERNOP, subhn2, 0, NONE)
    237  1.10  mrg   BUILTIN_VQN (TERNOPU, subhn2, 0, NONE)
    238  1.10  mrg   BUILTIN_VQN (TERNOP, raddhn2, 0, NONE)
    239  1.10  mrg   BUILTIN_VQN (TERNOPU, raddhn2, 0, NONE)
    240  1.10  mrg   BUILTIN_VQN (TERNOP, rsubhn2, 0, NONE)
    241  1.10  mrg   BUILTIN_VQN (TERNOPU, rsubhn2, 0, NONE)
    242  1.10  mrg 
    243  1.10  mrg   /* Implemented by aarch64_<us>xtl<mode>.  */
    244  1.10  mrg   BUILTIN_VQN (UNOP, sxtl, 0, NONE)
    245  1.10  mrg   BUILTIN_VQN (UNOPU, uxtl, 0, NONE)
    246  1.10  mrg 
    247  1.10  mrg   /* Implemented by aarch64_xtn<mode>.  */
    248  1.10  mrg   BUILTIN_VQN (UNOP, xtn, 0, NONE)
    249  1.10  mrg   BUILTIN_VQN (UNOPU, xtn, 0, NONE)
    250  1.10  mrg 
    251  1.10  mrg   /* Implemented by aarch64_mla<mode>.  */
    252  1.10  mrg   BUILTIN_VDQ_BHSI (TERNOP, mla, 0, NONE)
    253  1.10  mrg   BUILTIN_VDQ_BHSI (TERNOPU, mla, 0, NONE)
    254  1.10  mrg   /* Implemented by aarch64_mla_n<mode>.  */
    255  1.10  mrg   BUILTIN_VDQHS (TERNOP, mla_n, 0, NONE)
    256  1.10  mrg   BUILTIN_VDQHS (TERNOPU, mla_n, 0, NONE)
    257  1.10  mrg 
    258  1.10  mrg   /* Implemented by aarch64_mls<mode>.  */
    259  1.10  mrg   BUILTIN_VDQ_BHSI (TERNOP, mls, 0, NONE)
    260  1.10  mrg   BUILTIN_VDQ_BHSI (TERNOPU, mls, 0, NONE)
    261  1.10  mrg   /* Implemented by aarch64_mls_n<mode>.  */
    262  1.10  mrg   BUILTIN_VDQHS (TERNOP, mls_n, 0, NONE)
    263  1.10  mrg   BUILTIN_VDQHS (TERNOPU, mls_n, 0, NONE)
    264  1.10  mrg 
    265  1.10  mrg   /* Implemented by aarch64_shrn<mode>".  */
    266  1.10  mrg   BUILTIN_VQN (SHIFTIMM, shrn, 0, NONE)
    267  1.10  mrg   BUILTIN_VQN (USHIFTIMM, shrn, 0, NONE)
    268  1.10  mrg 
    269  1.10  mrg   /* Implemented by aarch64_shrn2<mode>.  */
    270  1.10  mrg   BUILTIN_VQN (SHIFT2IMM, shrn2, 0, NONE)
    271  1.10  mrg   BUILTIN_VQN (USHIFT2IMM, shrn2, 0, NONE)
    272  1.10  mrg 
    273  1.10  mrg   /* Implemented by aarch64_rshrn<mode>".  */
    274  1.10  mrg   BUILTIN_VQN (SHIFTIMM, rshrn, 0, NONE)
    275  1.10  mrg   BUILTIN_VQN (USHIFTIMM, rshrn, 0, NONE)
    276  1.10  mrg 
    277  1.10  mrg   /* Implemented by aarch64_rshrn2<mode>.  */
    278  1.10  mrg   BUILTIN_VQN (SHIFT2IMM, rshrn2, 0, NONE)
    279  1.10  mrg   BUILTIN_VQN (USHIFT2IMM, rshrn2, 0, NONE)
    280  1.10  mrg 
    281  1.10  mrg   /* Implemented by aarch64_<su>mlsl<mode>.  */
    282  1.10  mrg   BUILTIN_VD_BHSI (TERNOP, smlsl, 0, NONE)
    283  1.10  mrg   BUILTIN_VD_BHSI (TERNOPU, umlsl, 0, NONE)
    284  1.10  mrg 
    285  1.10  mrg   /* Implemented by aarch64_<su>mlsl_n<mode>.  */
    286  1.10  mrg   BUILTIN_VD_HSI (TERNOP, smlsl_n, 0, NONE)
    287  1.10  mrg   BUILTIN_VD_HSI (TERNOPU, umlsl_n, 0, NONE)
    288  1.10  mrg 
    289  1.10  mrg   /* Implemented by aarch64_<su>mlal<mode>.  */
    290  1.10  mrg   BUILTIN_VD_BHSI (TERNOP, smlal, 0, NONE)
    291  1.10  mrg   BUILTIN_VD_BHSI (TERNOPU, umlal, 0, NONE)
    292  1.10  mrg 
    293  1.10  mrg   /* Implemented by aarch64_<su>mlal_n<mode>.  */
    294  1.10  mrg   BUILTIN_VD_HSI (TERNOP, smlal_n, 0, NONE)
    295  1.10  mrg   BUILTIN_VD_HSI (TERNOPU, umlal_n, 0, NONE)
    296  1.10  mrg 
    297  1.10  mrg   /* Implemented by aarch64_<su>mlsl_hi<mode>.  */
    298  1.10  mrg   BUILTIN_VQW (TERNOP, smlsl_hi, 0, NONE)
    299  1.10  mrg   BUILTIN_VQW (TERNOPU, umlsl_hi, 0, NONE)
    300  1.10  mrg 
    301  1.10  mrg   /* Implemented by aarch64_<su>mlsl_hi_n<mode>.  */
    302  1.10  mrg   BUILTIN_VQ_HSI (TERNOP, smlsl_hi_n, 0, NONE)
    303  1.10  mrg   BUILTIN_VQ_HSI (TERNOPU, umlsl_hi_n, 0, NONE)
    304  1.10  mrg 
    305  1.10  mrg   /* Implemented by aarch64_<su>mlal_hi<mode>.  */
    306  1.10  mrg   BUILTIN_VQW (TERNOP, smlal_hi, 0, NONE)
    307  1.10  mrg   BUILTIN_VQW (TERNOPU, umlal_hi, 0, NONE)
    308  1.10  mrg 
    309  1.10  mrg   /* Implemented by aarch64_<su>mlal_hi_n<mode>.  */
    310  1.10  mrg   BUILTIN_VQ_HSI (TERNOP, smlal_hi_n, 0, NONE)
    311  1.10  mrg   BUILTIN_VQ_HSI (TERNOPU, umlal_hi_n, 0, NONE)
    312  1.10  mrg 
    313  1.10  mrg   /* Implemented by aarch64_sqmovun<mode>.  */
    314  1.10  mrg   BUILTIN_VQN (UNOPUS, sqmovun, 0, NONE)
    315  1.10  mrg   BUILTIN_SD_HSDI (UNOPUS, sqmovun, 0, NONE)
    316  1.10  mrg 
    317  1.10  mrg   /* Implemented by aarch64_sqxtun2<mode>.  */
    318  1.10  mrg   BUILTIN_VQN (BINOP_UUS, sqxtun2, 0, NONE)
    319  1.10  mrg 
    320  1.10  mrg   /* Implemented by aarch64_<su>qmovn<mode>.  */
    321  1.10  mrg   BUILTIN_VQN (UNOP, sqmovn, 0, NONE)
    322  1.10  mrg   BUILTIN_SD_HSDI (UNOP, sqmovn, 0, NONE)
    323  1.10  mrg   BUILTIN_VQN (UNOP, uqmovn, 0, NONE)
    324  1.10  mrg   BUILTIN_SD_HSDI (UNOP, uqmovn, 0, NONE)
    325  1.10  mrg 
    326  1.10  mrg   /* Implemented by aarch64_<su>qxtn2<mode>.  */
    327  1.10  mrg   BUILTIN_VQN (BINOP, sqxtn2, 0, NONE)
    328  1.10  mrg   BUILTIN_VQN (BINOPU, uqxtn2, 0, NONE)
    329  1.10  mrg 
    330   1.1  mrg   /* Implemented by aarch64_s<optab><mode>.  */
    331  1.10  mrg   BUILTIN_VSDQ_I (UNOP, sqabs, 0, NONE)
    332  1.10  mrg   BUILTIN_VSDQ_I (UNOP, sqneg, 0, NONE)
    333   1.1  mrg 
    334   1.1  mrg   /* Implemented by aarch64_sqdml<SBINQOPS:as>l<mode>.  */
    335  1.10  mrg   BUILTIN_VSD_HSI (TERNOP, sqdmlal, 0, NONE)
    336  1.10  mrg   BUILTIN_VSD_HSI (TERNOP, sqdmlsl, 0, NONE)
    337   1.3  mrg   /* Implemented by aarch64_sqdml<SBINQOPS:as>l_lane<mode>.  */
    338  1.10  mrg   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_lane, 0, NONE)
    339  1.10  mrg   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_lane, 0, NONE)
    340   1.3  mrg   /* Implemented by aarch64_sqdml<SBINQOPS:as>l_laneq<mode>.  */
    341  1.10  mrg   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_laneq, 0, NONE)
    342  1.10  mrg   BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_laneq, 0, NONE)
    343   1.1  mrg   /* Implemented by aarch64_sqdml<SBINQOPS:as>l_n<mode>.  */
    344  1.10  mrg   BUILTIN_VD_HSI (TERNOP, sqdmlal_n, 0, NONE)
    345  1.10  mrg   BUILTIN_VD_HSI (TERNOP, sqdmlsl_n, 0, NONE)
    346   1.1  mrg 
    347  1.10  mrg   BUILTIN_VQ_HSI (TERNOP, sqdmlal2, 0, NONE)
    348  1.10  mrg   BUILTIN_VQ_HSI (TERNOP, sqdmlsl2, 0, NONE)
    349  1.10  mrg   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_lane, 0, NONE)
    350  1.10  mrg   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_lane, 0, NONE)
    351  1.10  mrg   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_laneq, 0, NONE)
    352  1.10  mrg   BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_laneq, 0, NONE)
    353  1.10  mrg   BUILTIN_VQ_HSI (TERNOP, sqdmlal2_n, 0, NONE)
    354  1.10  mrg   BUILTIN_VQ_HSI (TERNOP, sqdmlsl2_n, 0, NONE)
    355  1.10  mrg 
    356  1.10  mrg   BUILTIN_VD_BHSI (BINOP, intrinsic_vec_smult_lo_, 0, NONE)
    357  1.10  mrg   BUILTIN_VD_BHSI (BINOPU, intrinsic_vec_umult_lo_, 0, NONE)
    358  1.10  mrg 
    359  1.10  mrg   BUILTIN_VQW (BINOP, vec_widen_smult_hi_, 10, NONE)
    360  1.10  mrg   BUILTIN_VQW (BINOPU, vec_widen_umult_hi_, 10, NONE)
    361  1.10  mrg 
    362  1.10  mrg   BUILTIN_VD_HSI (BINOP, smull_n, 0, NONE)
    363  1.10  mrg   BUILTIN_VD_HSI (BINOPU, umull_n, 0, NONE)
    364  1.10  mrg 
    365  1.10  mrg   BUILTIN_VQ_HSI (BINOP, smull_hi_n, 0, NONE)
    366  1.10  mrg   BUILTIN_VQ_HSI (BINOPU, umull_hi_n, 0, NONE)
    367  1.10  mrg 
    368  1.10  mrg   BUILTIN_VQ_HSI (TERNOP_LANE, smull_hi_lane, 0, NONE)
    369  1.10  mrg   BUILTIN_VQ_HSI (TERNOP_LANE, smull_hi_laneq, 0, NONE)
    370  1.10  mrg   BUILTIN_VQ_HSI (TERNOPU_LANE, umull_hi_lane, 0, NONE)
    371  1.10  mrg   BUILTIN_VQ_HSI (TERNOPU_LANE, umull_hi_laneq, 0, NONE)
    372  1.10  mrg 
    373  1.10  mrg   BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_lane_, 0, NONE)
    374  1.10  mrg   BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_lane_, 0, NONE)
    375  1.10  mrg   BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_laneq_, 0, NONE)
    376  1.10  mrg   BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_laneq_, 0, NONE)
    377  1.10  mrg   BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_lane_, 0, NONE)
    378  1.10  mrg   BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_lane_, 0, NONE)
    379  1.10  mrg   BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_laneq_, 0, NONE)
    380  1.10  mrg   BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_laneq_, 0, NONE)
    381  1.10  mrg 
    382  1.10  mrg   BUILTIN_VD_HSI (QUADOP_LANE, vec_smlsl_lane_, 0, NONE)
    383  1.10  mrg   BUILTIN_VD_HSI (QUADOP_LANE, vec_smlsl_laneq_, 0, NONE)
    384  1.10  mrg   BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlsl_lane_, 0, NONE)
    385  1.10  mrg   BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlsl_laneq_, 0, NONE)
    386  1.10  mrg 
    387  1.10  mrg   BUILTIN_VQ_HSI (QUADOP_LANE, smlal_hi_lane, 0, NONE)
    388  1.10  mrg   BUILTIN_VQ_HSI (QUADOP_LANE, smlal_hi_laneq, 0, NONE)
    389  1.10  mrg   BUILTIN_VQ_HSI (QUADOPU_LANE, umlal_hi_lane, 0, NONE)
    390  1.10  mrg   BUILTIN_VQ_HSI (QUADOPU_LANE, umlal_hi_laneq, 0, NONE)
    391  1.10  mrg 
    392  1.10  mrg   BUILTIN_VQ_HSI (QUADOP_LANE, smlsl_hi_lane, 0, NONE)
    393  1.10  mrg   BUILTIN_VQ_HSI (QUADOP_LANE, smlsl_hi_laneq, 0, NONE)
    394  1.10  mrg   BUILTIN_VQ_HSI (QUADOPU_LANE, umlsl_hi_lane, 0, NONE)
    395  1.10  mrg   BUILTIN_VQ_HSI (QUADOPU_LANE, umlsl_hi_laneq, 0, NONE)
    396  1.10  mrg 
    397  1.10  mrg   BUILTIN_VSD_HSI (BINOP, sqdmull, 0, NONE)
    398  1.10  mrg   BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_lane, 0, NONE)
    399  1.10  mrg   BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_laneq, 0, NONE)
    400  1.10  mrg   BUILTIN_VD_HSI (BINOP, sqdmull_n, 0, NONE)
    401  1.10  mrg   BUILTIN_VQ_HSI (BINOP, sqdmull2, 0, NONE)
    402  1.10  mrg   BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_lane, 0, NONE)
    403  1.10  mrg   BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_laneq, 0, NONE)
    404  1.10  mrg   BUILTIN_VQ_HSI (BINOP, sqdmull2_n, 0, NONE)
    405   1.1  mrg   /* Implemented by aarch64_sq<r>dmulh<mode>.  */
    406  1.10  mrg   BUILTIN_VSDQ_HSI (BINOP, sqdmulh, 0, NONE)
    407  1.10  mrg   BUILTIN_VSDQ_HSI (BINOP, sqrdmulh, 0, NONE)
    408  1.10  mrg   /* Implemented by aarch64_sq<r>dmulh_n<mode>.  */
    409  1.10  mrg   BUILTIN_VDQHS (BINOP, sqdmulh_n, 0, NONE)
    410  1.10  mrg   BUILTIN_VDQHS (BINOP, sqrdmulh_n, 0, NONE)
    411   1.1  mrg   /* Implemented by aarch64_sq<r>dmulh_lane<q><mode>.  */
    412  1.10  mrg   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_lane, 0, NONE)
    413  1.10  mrg   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_laneq, 0, NONE)
    414  1.10  mrg   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_lane, 0, NONE)
    415  1.10  mrg   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_laneq, 0, NONE)
    416   1.1  mrg 
    417  1.10  mrg   BUILTIN_VSDQ_I_DI (BINOP, ashl, 3, NONE)
    418   1.1  mrg   /* Implemented by aarch64_<sur>shl<mode>.  */
    419  1.10  mrg   BUILTIN_VSDQ_I_DI (BINOP, sshl, 0, NONE)
    420  1.10  mrg   BUILTIN_VSDQ_I_DI (BINOP_UUS, ushl, 0, NONE)
    421  1.10  mrg   BUILTIN_VSDQ_I_DI (BINOP, srshl, 0, NONE)
    422  1.10  mrg   BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0, NONE)
    423  1.10  mrg 
    424  1.10  mrg   /* Implemented by <sur><dotprod>_prod<dot_mode>.  */
    425  1.10  mrg   BUILTIN_VB (TERNOP, sdot_prod, 10, NONE)
    426  1.10  mrg   BUILTIN_VB (TERNOPU, udot_prod, 10, NONE)
    427  1.10  mrg   BUILTIN_VB (TERNOP_SUSS, usdot_prod, 10, NONE)
    428  1.10  mrg   /* Implemented by aarch64_<sur><dotprod>_lane{q}<dot_mode>.  */
    429  1.10  mrg   BUILTIN_VB (QUADOP_LANE, sdot_lane, 0, NONE)
    430  1.10  mrg   BUILTIN_VB (QUADOPU_LANE, udot_lane, 0, NONE)
    431  1.10  mrg   BUILTIN_VB (QUADOP_LANE, sdot_laneq, 0, NONE)
    432  1.10  mrg   BUILTIN_VB (QUADOPU_LANE, udot_laneq, 0, NONE)
    433  1.10  mrg   BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_lane, 0, NONE)
    434  1.10  mrg   BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_laneq, 0, NONE)
    435  1.10  mrg   BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_lane, 0, NONE)
    436  1.10  mrg   BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_laneq, 0, NONE)
    437   1.7  mrg 
    438   1.8  mrg   /* Implemented by aarch64_fcadd<rot><mode>.   */
    439  1.10  mrg   BUILTIN_VHSDF (BINOP, fcadd90, 0, FP)
    440  1.10  mrg   BUILTIN_VHSDF (BINOP, fcadd270, 0, FP)
    441   1.8  mrg 
    442   1.8  mrg   /* Implemented by aarch64_fcmla{_lane}{q}<rot><mode>.   */
    443  1.10  mrg   BUILTIN_VHSDF (TERNOP, fcmla0, 0, FP)
    444  1.10  mrg   BUILTIN_VHSDF (TERNOP, fcmla90, 0, FP)
    445  1.10  mrg   BUILTIN_VHSDF (TERNOP, fcmla180, 0, FP)
    446  1.10  mrg   BUILTIN_VHSDF (TERNOP, fcmla270, 0, FP)
    447  1.10  mrg   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane0, 0, FP)
    448  1.10  mrg   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane90, 0, FP)
    449  1.10  mrg   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane180, 0, FP)
    450  1.10  mrg   BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane270, 0, FP)
    451  1.10  mrg 
    452  1.10  mrg   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane0, 0, FP)
    453  1.10  mrg   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane90, 0, FP)
    454  1.10  mrg   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane180, 0, FP)
    455  1.10  mrg   BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane270, 0, FP)
    456  1.10  mrg 
    457  1.10  mrg   BUILTIN_VDQ_I (SHIFTIMM, ashr, 3, NONE)
    458  1.10  mrg   VAR1 (SHIFTIMM, ashr_simd, 0, NONE, di)
    459  1.10  mrg   BUILTIN_VDQ_I (USHIFTIMM, lshr, 3, NONE)
    460  1.10  mrg   VAR1 (USHIFTIMM, lshr_simd, 0, NONE, di)
    461   1.1  mrg   /* Implemented by aarch64_<sur>shr_n<mode>.  */
    462  1.10  mrg   BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0, NONE)
    463  1.10  mrg   BUILTIN_VSDQ_I_DI (USHIFTIMM, urshr_n, 0, NONE)
    464   1.1  mrg   /* Implemented by aarch64_<sur>sra_n<mode>.  */
    465  1.10  mrg   BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0, NONE)
    466  1.10  mrg   BUILTIN_VSDQ_I_DI (USHIFTACC, usra_n, 0, NONE)
    467  1.10  mrg   BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0, NONE)
    468  1.10  mrg   BUILTIN_VSDQ_I_DI (USHIFTACC, ursra_n, 0, NONE)
    469   1.1  mrg   /* Implemented by aarch64_<sur>shll_n<mode>.  */
    470  1.10  mrg   BUILTIN_VD_BHSI (SHIFTIMM, sshll_n, 0, NONE)
    471  1.10  mrg   BUILTIN_VD_BHSI (USHIFTIMM, ushll_n, 0, NONE)
    472   1.1  mrg   /* Implemented by aarch64_<sur>shll2_n<mode>.  */
    473  1.10  mrg   BUILTIN_VQW (SHIFTIMM, sshll2_n, 0, NONE)
    474  1.10  mrg   BUILTIN_VQW (SHIFTIMM, ushll2_n, 0, NONE)
    475   1.1  mrg   /* Implemented by aarch64_<sur>q<r>shr<u>n_n<mode>.  */
    476  1.10  mrg   BUILTIN_VQN (SHIFTIMM, sqshrun_n, 0, NONE)
    477  1.10  mrg   BUILTIN_VQN (SHIFTIMM, sqrshrun_n, 0, NONE)
    478  1.10  mrg   BUILTIN_VQN (SHIFTIMM, sqshrn_n, 0, NONE)
    479  1.10  mrg   BUILTIN_VQN (USHIFTIMM, uqshrn_n, 0, NONE)
    480  1.10  mrg   BUILTIN_VQN (SHIFTIMM, sqrshrn_n, 0, NONE)
    481  1.10  mrg   BUILTIN_VQN (USHIFTIMM, uqrshrn_n, 0, NONE)
    482  1.10  mrg   BUILTIN_SD_HSDI (SHIFTIMM, sqshrun_n, 0, NONE)
    483  1.10  mrg   BUILTIN_SD_HSDI (SHIFTIMM, sqrshrun_n, 0, NONE)
    484  1.10  mrg   BUILTIN_SD_HSDI (SHIFTIMM, sqshrn_n, 0, NONE)
    485  1.10  mrg   BUILTIN_SD_HSDI (USHIFTIMM, uqshrn_n, 0, NONE)
    486  1.10  mrg   BUILTIN_SD_HSDI (SHIFTIMM, sqrshrn_n, 0, NONE)
    487  1.10  mrg   BUILTIN_SD_HSDI (USHIFTIMM, uqrshrn_n, 0, NONE)
    488  1.10  mrg   /* Implemented by aarch64_<sur>q<r>shr<u>n2_n<mode>.  */
    489  1.10  mrg   BUILTIN_VQN (SHIFT2IMM_UUSS, sqshrun2_n, 0, NONE)
    490  1.10  mrg   BUILTIN_VQN (SHIFT2IMM_UUSS, sqrshrun2_n, 0, NONE)
    491  1.10  mrg   BUILTIN_VQN (SHIFT2IMM, sqshrn2_n, 0, NONE)
    492  1.10  mrg   BUILTIN_VQN (USHIFT2IMM, uqshrn2_n, 0, NONE)
    493  1.10  mrg   BUILTIN_VQN (SHIFT2IMM, sqrshrn2_n, 0, NONE)
    494  1.10  mrg   BUILTIN_VQN (USHIFT2IMM, uqrshrn2_n, 0, NONE)
    495   1.1  mrg   /* Implemented by aarch64_<sur>s<lr>i_n<mode>.  */
    496  1.10  mrg   BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0, NONE)
    497  1.10  mrg   BUILTIN_VALLP (SHIFTINSERTP, ssri_n, 0, NONE)
    498  1.10  mrg   BUILTIN_VSDQ_I_DI (USHIFTACC, usri_n, 0, NONE)
    499  1.10  mrg   BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0, NONE)
    500  1.10  mrg   BUILTIN_VALLP (SHIFTINSERTP, ssli_n, 0, NONE)
    501  1.10  mrg   BUILTIN_VSDQ_I_DI (USHIFTACC, usli_n, 0, NONE)
    502   1.1  mrg   /* Implemented by aarch64_<sur>qshl<u>_n<mode>.  */
    503  1.10  mrg   BUILTIN_VSDQ_I (SHIFTIMM_USS, sqshlu_n, 0, NONE)
    504  1.10  mrg   BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n, 0, NONE)
    505  1.10  mrg   BUILTIN_VSDQ_I (USHIFTIMM, uqshl_n, 0, NONE)
    506  1.10  mrg 
    507  1.10  mrg   /* Implemented by aarch64_xtn2<mode>.  */
    508  1.10  mrg   BUILTIN_VQN (BINOP, xtn2, 0, NONE)
    509  1.10  mrg   BUILTIN_VQN (BINOPU, xtn2, 0, NONE)
    510  1.10  mrg 
    511  1.10  mrg   /* Implemented by vec_unpack<su>_hi_<mode>.  */
    512  1.10  mrg   BUILTIN_VQW (UNOP, vec_unpacks_hi_, 10, NONE)
    513  1.10  mrg   BUILTIN_VQW (UNOPU, vec_unpacku_hi_, 10, NONE)
    514   1.3  mrg 
    515   1.3  mrg   /* Implemented by aarch64_reduc_plus_<mode>.  */
    516  1.10  mrg   BUILTIN_VALL (UNOP, reduc_plus_scal_, 10, NONE)
    517  1.10  mrg   BUILTIN_VDQ_I (UNOPU, reduc_plus_scal_, 10, NONE)
    518   1.3  mrg 
    519   1.3  mrg   /* Implemented by reduc_<maxmin_uns>_scal_<mode> (producing scalar).  */
    520  1.10  mrg   BUILTIN_VDQIF_F16 (UNOP, reduc_smax_scal_, 10, NONE)
    521  1.10  mrg   BUILTIN_VDQIF_F16 (UNOP, reduc_smin_scal_, 10, NONE)
    522  1.10  mrg   BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10, NONE)
    523  1.10  mrg   BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10, NONE)
    524  1.10  mrg   BUILTIN_VHSDF (UNOP, reduc_smax_nan_scal_, 10, NONE)
    525  1.10  mrg   BUILTIN_VHSDF (UNOP, reduc_smin_nan_scal_, 10, NONE)
    526  1.10  mrg 
    527  1.10  mrg   /* Implemented by <optab><mode>3.  */
    528  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, smax, 3, NONE)
    529  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, smin, 3, NONE)
    530  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, umax, 3, NONE)
    531  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, umin, 3, NONE)
    532  1.10  mrg 
    533  1.10  mrg   /* Implemented by <fmaxmin><mode>3.  */
    534  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP, fmax, 3, FP)
    535  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP, fmin, 3, FP)
    536  1.10  mrg   BUILTIN_VHSDF_DF (BINOP, fmax_nan, 3, FP)
    537  1.10  mrg   BUILTIN_VHSDF_DF (BINOP, fmin_nan, 3, FP)
    538  1.10  mrg 
    539  1.10  mrg   /* Implemented by aarch64_<optab>p<mode>.  */
    540  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, smaxp, 0, NONE)
    541  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, sminp, 0, NONE)
    542  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, umaxp, 0, NONE)
    543  1.10  mrg   BUILTIN_VDQ_BHSI (BINOP, uminp, 0, NONE)
    544  1.10  mrg   BUILTIN_VHSDF (BINOP, smaxp, 0, NONE)
    545  1.10  mrg   BUILTIN_VHSDF (BINOP, sminp, 0, NONE)
    546  1.10  mrg   BUILTIN_VHSDF (BINOP, smax_nanp, 0, NONE)
    547  1.10  mrg   BUILTIN_VHSDF (BINOP, smin_nanp, 0, NONE)
    548   1.3  mrg 
    549   1.3  mrg   /* Implemented by <frint_pattern><mode>2.  */
    550  1.10  mrg   BUILTIN_VHSDF (UNOP, btrunc, 2, FP)
    551  1.10  mrg   BUILTIN_VHSDF (UNOP, ceil, 2, FP)
    552  1.10  mrg   BUILTIN_VHSDF (UNOP, floor, 2, FP)
    553  1.10  mrg   BUILTIN_VHSDF (UNOP, nearbyint, 2, FP)
    554  1.10  mrg   BUILTIN_VHSDF (UNOP, rint, 2, FP)
    555  1.10  mrg   BUILTIN_VHSDF (UNOP, round, 2, FP)
    556  1.10  mrg   BUILTIN_VHSDF_HSDF (UNOP, roundeven, 2, FP)
    557  1.10  mrg 
    558  1.10  mrg   VAR1 (UNOP, btrunc, 2, FP, hf)
    559  1.10  mrg   VAR1 (UNOP, ceil, 2, FP, hf)
    560  1.10  mrg   VAR1 (UNOP, floor, 2, FP, hf)
    561  1.10  mrg   VAR1 (UNOP, nearbyint, 2, FP, hf)
    562  1.10  mrg   VAR1 (UNOP, rint, 2, FP, hf)
    563  1.10  mrg   VAR1 (UNOP, round, 2, FP, hf)
    564   1.3  mrg 
    565   1.3  mrg   /* Implemented by l<fcvt_pattern><su_optab><VQDF:mode><vcvt_target>2.  */
    566  1.10  mrg   VAR1 (UNOP, lbtruncv4hf, 2, FP, v4hi)
    567  1.10  mrg   VAR1 (UNOP, lbtruncv8hf, 2, FP, v8hi)
    568  1.10  mrg   VAR1 (UNOP, lbtruncv2sf, 2, FP, v2si)
    569  1.10  mrg   VAR1 (UNOP, lbtruncv4sf, 2, FP, v4si)
    570  1.10  mrg   VAR1 (UNOP, lbtruncv2df, 2, FP, v2di)
    571  1.10  mrg 
    572  1.10  mrg   VAR1 (UNOPUS, lbtruncuv4hf, 2, FP, v4hi)
    573  1.10  mrg   VAR1 (UNOPUS, lbtruncuv8hf, 2, FP, v8hi)
    574  1.10  mrg   VAR1 (UNOPUS, lbtruncuv2sf, 2, FP, v2si)
    575  1.10  mrg   VAR1 (UNOPUS, lbtruncuv4sf, 2, FP, v4si)
    576  1.10  mrg   VAR1 (UNOPUS, lbtruncuv2df, 2, FP, v2di)
    577  1.10  mrg 
    578  1.10  mrg   VAR1 (UNOP, lroundv4hf, 2, FP, v4hi)
    579  1.10  mrg   VAR1 (UNOP, lroundv8hf, 2, FP, v8hi)
    580  1.10  mrg   VAR1 (UNOP, lroundv2sf, 2, FP, v2si)
    581  1.10  mrg   VAR1 (UNOP, lroundv4sf, 2, FP, v4si)
    582  1.10  mrg   VAR1 (UNOP, lroundv2df, 2, FP, v2di)
    583   1.6  mrg   /* Implemented by l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2.  */
    584  1.10  mrg   BUILTIN_GPI_I16 (UNOP, lroundhf, 2, FP)
    585  1.10  mrg   VAR1 (UNOP, lroundsf, 2, FP, si)
    586  1.10  mrg   VAR1 (UNOP, lrounddf, 2, FP, di)
    587  1.10  mrg 
    588  1.10  mrg   VAR1 (UNOPUS, lrounduv4hf, 2, FP, v4hi)
    589  1.10  mrg   VAR1 (UNOPUS, lrounduv8hf, 2, FP, v8hi)
    590  1.10  mrg   VAR1 (UNOPUS, lrounduv2sf, 2, FP, v2si)
    591  1.10  mrg   VAR1 (UNOPUS, lrounduv4sf, 2, FP, v4si)
    592  1.10  mrg   VAR1 (UNOPUS, lrounduv2df, 2, FP, v2di)
    593  1.10  mrg   BUILTIN_GPI_I16 (UNOPUS, lrounduhf, 2, FP)
    594  1.10  mrg   VAR1 (UNOPUS, lroundusf, 2, FP, si)
    595  1.10  mrg   VAR1 (UNOPUS, lroundudf, 2, FP, di)
    596  1.10  mrg 
    597  1.10  mrg   VAR1 (UNOP, lceilv4hf, 2, FP, v4hi)
    598  1.10  mrg   VAR1 (UNOP, lceilv8hf, 2, FP, v8hi)
    599  1.10  mrg   VAR1 (UNOP, lceilv2sf, 2, FP, v2si)
    600  1.10  mrg   VAR1 (UNOP, lceilv4sf, 2, FP, v4si)
    601  1.10  mrg   VAR1 (UNOP, lceilv2df, 2, FP, v2di)
    602  1.10  mrg   BUILTIN_GPI_I16 (UNOP, lceilhf, 2, FP)
    603  1.10  mrg 
    604  1.10  mrg   VAR1 (UNOPUS, lceiluv4hf, 2, FP, v4hi)
    605  1.10  mrg   VAR1 (UNOPUS, lceiluv8hf, 2, FP, v8hi)
    606  1.10  mrg   VAR1 (UNOPUS, lceiluv2sf, 2, FP, v2si)
    607  1.10  mrg   VAR1 (UNOPUS, lceiluv4sf, 2, FP, v4si)
    608  1.10  mrg   VAR1 (UNOPUS, lceiluv2df, 2, FP, v2di)
    609  1.10  mrg   BUILTIN_GPI_I16 (UNOPUS, lceiluhf, 2, FP)
    610  1.10  mrg   VAR1 (UNOPUS, lceilusf, 2, FP, si)
    611  1.10  mrg   VAR1 (UNOPUS, lceiludf, 2, FP, di)
    612  1.10  mrg 
    613  1.10  mrg   VAR1 (UNOP, lfloorv4hf, 2, FP, v4hi)
    614  1.10  mrg   VAR1 (UNOP, lfloorv8hf, 2, FP, v8hi)
    615  1.10  mrg   VAR1 (UNOP, lfloorv2sf, 2, FP, v2si)
    616  1.10  mrg   VAR1 (UNOP, lfloorv4sf, 2, FP, v4si)
    617  1.10  mrg   VAR1 (UNOP, lfloorv2df, 2, FP, v2di)
    618  1.10  mrg   BUILTIN_GPI_I16 (UNOP, lfloorhf, 2, FP)
    619  1.10  mrg 
    620  1.10  mrg   VAR1 (UNOPUS, lflooruv4hf, 2, FP, v4hi)
    621  1.10  mrg   VAR1 (UNOPUS, lflooruv8hf, 2, FP, v8hi)
    622  1.10  mrg   VAR1 (UNOPUS, lflooruv2sf, 2, FP, v2si)
    623  1.10  mrg   VAR1 (UNOPUS, lflooruv4sf, 2, FP, v4si)
    624  1.10  mrg   VAR1 (UNOPUS, lflooruv2df, 2, FP, v2di)
    625  1.10  mrg   BUILTIN_GPI_I16 (UNOPUS, lflooruhf, 2, FP)
    626  1.10  mrg   VAR1 (UNOPUS, lfloorusf, 2, FP, si)
    627  1.10  mrg   VAR1 (UNOPUS, lfloorudf, 2, FP, di)
    628  1.10  mrg 
    629  1.10  mrg   VAR1 (UNOP, lfrintnv4hf, 2, FP, v4hi)
    630  1.10  mrg   VAR1 (UNOP, lfrintnv8hf, 2, FP, v8hi)
    631  1.10  mrg   VAR1 (UNOP, lfrintnv2sf, 2, FP, v2si)
    632  1.10  mrg   VAR1 (UNOP, lfrintnv4sf, 2, FP, v4si)
    633  1.10  mrg   VAR1 (UNOP, lfrintnv2df, 2, FP, v2di)
    634  1.10  mrg   BUILTIN_GPI_I16 (UNOP, lfrintnhf, 2, FP)
    635  1.10  mrg   VAR1 (UNOP, lfrintnsf, 2, FP, si)
    636  1.10  mrg   VAR1 (UNOP, lfrintndf, 2, FP, di)
    637  1.10  mrg 
    638  1.10  mrg   VAR1 (UNOPUS, lfrintnuv4hf, 2, FP, v4hi)
    639  1.10  mrg   VAR1 (UNOPUS, lfrintnuv8hf, 2, FP, v8hi)
    640  1.10  mrg   VAR1 (UNOPUS, lfrintnuv2sf, 2, FP, v2si)
    641  1.10  mrg   VAR1 (UNOPUS, lfrintnuv4sf, 2, FP, v4si)
    642  1.10  mrg   VAR1 (UNOPUS, lfrintnuv2df, 2, FP, v2di)
    643  1.10  mrg   BUILTIN_GPI_I16 (UNOPUS, lfrintnuhf, 2, FP)
    644  1.10  mrg   VAR1 (UNOPUS, lfrintnusf, 2, FP, si)
    645  1.10  mrg   VAR1 (UNOPUS, lfrintnudf, 2, FP, di)
    646   1.3  mrg 
    647   1.3  mrg   /* Implemented by <optab><fcvt_target><VDQF:mode>2.  */
    648  1.10  mrg   VAR1 (UNOP, floatv4hi, 2, FP, v4hf)
    649  1.10  mrg   VAR1 (UNOP, floatv8hi, 2, FP, v8hf)
    650  1.10  mrg   VAR1 (UNOP, floatv2si, 2, FP, v2sf)
    651  1.10  mrg   VAR1 (UNOP, floatv4si, 2, FP, v4sf)
    652  1.10  mrg   VAR1 (UNOP, floatv2di, 2, FP, v2df)
    653  1.10  mrg 
    654  1.10  mrg   VAR1 (UNOP, floatunsv4hi, 2, FP, v4hf)
    655  1.10  mrg   VAR1 (UNOP, floatunsv8hi, 2, FP, v8hf)
    656  1.10  mrg   VAR1 (UNOP, floatunsv2si, 2, FP, v2sf)
    657  1.10  mrg   VAR1 (UNOP, floatunsv4si, 2, FP, v4sf)
    658  1.10  mrg   VAR1 (UNOP, floatunsv2di, 2, FP, v2df)
    659   1.3  mrg 
    660  1.10  mrg   VAR5 (UNOPU, bswap, 2, NONE, v4hi, v8hi, v2si, v4si, v2di)
    661   1.3  mrg 
    662  1.10  mrg   BUILTIN_VB (UNOP, rbit, 0, NONE)
    663   1.1  mrg 
    664   1.1  mrg   /* Implemented by
    665   1.9  mrg      aarch64_<PERMUTE:perm_insn><mode>.  */
    666  1.10  mrg   BUILTIN_VALL (BINOP, zip1, 0, AUTO_FP)
    667  1.10  mrg   BUILTIN_VALL (BINOP, zip2, 0, AUTO_FP)
    668  1.10  mrg   BUILTIN_VALL (BINOP, uzp1, 0, AUTO_FP)
    669  1.10  mrg   BUILTIN_VALL (BINOP, uzp2, 0, AUTO_FP)
    670  1.10  mrg   BUILTIN_VALL (BINOP, trn1, 0, AUTO_FP)
    671  1.10  mrg   BUILTIN_VALL (BINOP, trn2, 0, AUTO_FP)
    672   1.3  mrg 
    673  1.10  mrg   BUILTIN_GPF_F16 (UNOP, frecpe, 0, FP)
    674  1.10  mrg   BUILTIN_GPF_F16 (UNOP, frecpx, 0, FP)
    675   1.3  mrg 
    676  1.10  mrg   BUILTIN_VDQ_SI (UNOP, urecpe, 0, NONE)
    677   1.3  mrg 
    678  1.10  mrg   BUILTIN_VHSDF (UNOP, frecpe, 0, FP)
    679  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP, frecps, 0, FP)
    680   1.3  mrg 
    681   1.3  mrg   /* Implemented by a mixture of abs2 patterns.  Note the DImode builtin is
    682   1.3  mrg      only ever used for the int64x1_t intrinsic, there is no scalar version.  */
    683  1.10  mrg   BUILTIN_VSDQ_I_DI (UNOP, abs, 0, AUTO_FP)
    684  1.10  mrg   BUILTIN_VHSDF (UNOP, abs, 2, AUTO_FP)
    685  1.10  mrg   VAR1 (UNOP, abs, 2, AUTO_FP, hf)
    686  1.10  mrg 
    687  1.10  mrg   BUILTIN_VQ_HSF (UNOP, vec_unpacks_hi_, 10, FP)
    688  1.10  mrg   VAR1 (BINOP, float_truncate_hi_, 0, FP, v4sf)
    689  1.10  mrg   VAR1 (BINOP, float_truncate_hi_, 0, FP, v8hf)
    690  1.10  mrg 
    691  1.10  mrg   VAR1 (UNOP, float_extend_lo_, 0, FP, v2df)
    692  1.10  mrg   VAR1 (UNOP, float_extend_lo_,  0, FP, v4sf)
    693  1.10  mrg   BUILTIN_VDF (UNOP, float_truncate_lo_, 0, FP)
    694  1.10  mrg 
    695  1.10  mrg   VAR1 (UNOP, float_trunc_rodd_, 0, FP, df)
    696  1.10  mrg   VAR1 (UNOP, float_trunc_rodd_lo_, 0, FP, v2sf)
    697  1.10  mrg   VAR1 (BINOP, float_trunc_rodd_hi_, 0, FP, v4sf)
    698   1.1  mrg 
    699   1.4  mrg   /* Implemented by aarch64_ld1<VALL_F16:mode>.  */
    700  1.10  mrg   BUILTIN_VALL_F16 (LOAD1, ld1, 0, LOAD)
    701  1.10  mrg   BUILTIN_VDQ_I (LOAD1_U, ld1, 0, LOAD)
    702  1.10  mrg   BUILTIN_VALLP_NO_DI (LOAD1_P, ld1, 0, LOAD)
    703   1.1  mrg 
    704   1.4  mrg   /* Implemented by aarch64_st1<VALL_F16:mode>.  */
    705  1.10  mrg   BUILTIN_VALL_F16 (STORE1, st1, 0, STORE)
    706  1.10  mrg   BUILTIN_VDQ_I (STORE1_U, st1, 0, STORE)
    707  1.10  mrg   BUILTIN_VALLP_NO_DI (STORE1_P, st1, 0, STORE)
    708   1.9  mrg 
    709   1.3  mrg   /* Implemented by fma<mode>4.  */
    710  1.10  mrg   BUILTIN_VHSDF (TERNOP, fma, 4, FP)
    711  1.10  mrg   VAR1 (TERNOP, fma, 4, FP, hf)
    712   1.6  mrg   /* Implemented by fnma<mode>4.  */
    713  1.10  mrg   BUILTIN_VHSDF (TERNOP, fnma, 4, FP)
    714  1.10  mrg   VAR1 (TERNOP, fnma, 4, FP, hf)
    715  1.10  mrg 
    716  1.10  mrg   BUILTIN_VDQF_DF (TERNOP, float_mla, 0, FP)
    717  1.10  mrg   BUILTIN_VDQF_DF (TERNOP, float_mls, 0, FP)
    718  1.10  mrg   BUILTIN_VDQSF (TERNOP, float_mla_n, 0, FP)
    719  1.10  mrg   BUILTIN_VDQSF (TERNOP, float_mls_n, 0, FP)
    720  1.10  mrg   BUILTIN_VDQSF (QUADOP_LANE, float_mla_lane, 0, FP)
    721  1.10  mrg   BUILTIN_VDQSF (QUADOP_LANE, float_mls_lane, 0, FP)
    722  1.10  mrg   BUILTIN_VDQSF (QUADOP_LANE, float_mla_laneq, 0, FP)
    723  1.10  mrg   BUILTIN_VDQSF (QUADOP_LANE, float_mls_laneq, 0, FP)
    724   1.3  mrg 
    725   1.3  mrg   /* Implemented by aarch64_simd_bsl<mode>.  */
    726  1.10  mrg   BUILTIN_VDQQH (BSL_P, simd_bsl, 0, NONE)
    727  1.10  mrg   VAR2 (BSL_P, simd_bsl,0, NONE, di, v2di)
    728  1.10  mrg   BUILTIN_VSDQ_I_DI (BSL_U, simd_bsl, 0, NONE)
    729  1.10  mrg   BUILTIN_VALLDIF (BSL_S, simd_bsl, 0, AUTO_FP)
    730   1.3  mrg 
    731   1.3  mrg   /* Implemented by aarch64_crypto_aes<op><mode>.  */
    732  1.10  mrg   VAR1 (BINOPU, crypto_aese, 0, NONE, v16qi)
    733  1.10  mrg   VAR1 (BINOPU, crypto_aesd, 0, NONE, v16qi)
    734  1.10  mrg   VAR1 (UNOPU, crypto_aesmc, 0, NONE, v16qi)
    735  1.10  mrg   VAR1 (UNOPU, crypto_aesimc, 0, NONE, v16qi)
    736   1.3  mrg 
    737   1.3  mrg   /* Implemented by aarch64_crypto_sha1<op><mode>.  */
    738  1.10  mrg   VAR1 (UNOPU, crypto_sha1h, 0, NONE, si)
    739  1.10  mrg   VAR1 (BINOPU, crypto_sha1su1, 0, NONE, v4si)
    740  1.10  mrg   VAR1 (TERNOPU, crypto_sha1c, 0, NONE, v4si)
    741  1.10  mrg   VAR1 (TERNOPU, crypto_sha1m, 0, NONE, v4si)
    742  1.10  mrg   VAR1 (TERNOPU, crypto_sha1p, 0, NONE, v4si)
    743  1.10  mrg   VAR1 (TERNOPU, crypto_sha1su0, 0, NONE, v4si)
    744   1.3  mrg 
    745   1.3  mrg   /* Implemented by aarch64_crypto_sha256<op><mode>.  */
    746  1.10  mrg   VAR1 (TERNOPU, crypto_sha256h, 0, NONE, v4si)
    747  1.10  mrg   VAR1 (TERNOPU, crypto_sha256h2, 0, NONE, v4si)
    748  1.10  mrg   VAR1 (BINOPU, crypto_sha256su0, 0, NONE, v4si)
    749  1.10  mrg   VAR1 (TERNOPU, crypto_sha256su1, 0, NONE, v4si)
    750   1.3  mrg 
    751   1.3  mrg   /* Implemented by aarch64_crypto_pmull<mode>.  */
    752  1.10  mrg   VAR1 (BINOPP, crypto_pmull, 0, NONE, di)
    753  1.10  mrg   VAR1 (BINOPP, crypto_pmull, 0, NONE, v2di)
    754   1.1  mrg 
    755  1.10  mrg   /* Implemented by aarch64_qtbl1<mode>.  */
    756  1.10  mrg   VAR2 (BINOP, qtbl1, 0, NONE, v8qi, v16qi)
    757  1.10  mrg   VAR2 (BINOPU, qtbl1, 0, NONE, v8qi, v16qi)
    758  1.10  mrg   VAR2 (BINOP_PPU, qtbl1, 0, NONE, v8qi, v16qi)
    759  1.10  mrg   VAR2 (BINOP_SSU, qtbl1, 0, NONE, v8qi, v16qi)
    760  1.10  mrg 
    761  1.10  mrg   /* Implemented by aarch64_qtbl2<mode>.  */
    762  1.10  mrg   VAR2 (BINOP, qtbl2, 0, NONE, v8qi, v16qi)
    763  1.10  mrg   VAR2 (BINOPU, qtbl2, 0, NONE, v8qi, v16qi)
    764  1.10  mrg   VAR2 (BINOP_PPU, qtbl2, 0, NONE, v8qi, v16qi)
    765  1.10  mrg   VAR2 (BINOP_SSU, qtbl2, 0, NONE, v8qi, v16qi)
    766   1.4  mrg 
    767   1.4  mrg   /* Implemented by aarch64_qtbl3<mode>.  */
    768  1.10  mrg   VAR2 (BINOP, qtbl3, 0, NONE, v8qi, v16qi)
    769  1.10  mrg   VAR2 (BINOPU, qtbl3, 0, NONE, v8qi, v16qi)
    770  1.10  mrg   VAR2 (BINOP_PPU, qtbl3, 0, NONE, v8qi, v16qi)
    771  1.10  mrg   VAR2 (BINOP_SSU, qtbl3, 0, NONE, v8qi, v16qi)
    772   1.4  mrg 
    773   1.4  mrg   /* Implemented by aarch64_qtbl4<mode>.  */
    774  1.10  mrg   VAR2 (BINOP, qtbl4, 0, NONE, v8qi, v16qi)
    775  1.10  mrg   VAR2 (BINOPU, qtbl4, 0, NONE, v8qi, v16qi)
    776  1.10  mrg   VAR2 (BINOP_PPU, qtbl4, 0, NONE, v8qi, v16qi)
    777  1.10  mrg   VAR2 (BINOP_SSU, qtbl4, 0, NONE, v8qi, v16qi)
    778  1.10  mrg 
    779  1.10  mrg   /* Implemented by aarch64_qtbx1<mode>.  */
    780  1.10  mrg   VAR2 (TERNOP, qtbx1, 0, NONE, v8qi, v16qi)
    781  1.10  mrg   VAR2 (TERNOPU, qtbx1, 0, NONE, v8qi, v16qi)
    782  1.10  mrg   VAR2 (TERNOP_PPPU, qtbx1, 0, NONE, v8qi, v16qi)
    783  1.10  mrg   VAR2 (TERNOP_SSSU, qtbx1, 0, NONE, v8qi, v16qi)
    784  1.10  mrg 
    785  1.10  mrg   /* Implemented by aarch64_qtbx2<mode>.  */
    786  1.10  mrg   VAR2 (TERNOP, qtbx2, 0, NONE, v8qi, v16qi)
    787  1.10  mrg   VAR2 (TERNOPU, qtbx2, 0, NONE, v8qi, v16qi)
    788  1.10  mrg   VAR2 (TERNOP_PPPU, qtbx2, 0, NONE, v8qi, v16qi)
    789  1.10  mrg   VAR2 (TERNOP_SSSU, qtbx2, 0, NONE, v8qi, v16qi)
    790   1.4  mrg 
    791   1.4  mrg   /* Implemented by aarch64_qtbx3<mode>.  */
    792  1.10  mrg   VAR2 (TERNOP, qtbx3, 0, NONE, v8qi, v16qi)
    793  1.10  mrg   VAR2 (TERNOPU, qtbx3, 0, NONE, v8qi, v16qi)
    794  1.10  mrg   VAR2 (TERNOP_PPPU, qtbx3, 0, NONE, v8qi, v16qi)
    795  1.10  mrg   VAR2 (TERNOP_SSSU, qtbx3, 0, NONE, v8qi, v16qi)
    796   1.4  mrg 
    797   1.4  mrg   /* Implemented by aarch64_qtbx4<mode>.  */
    798  1.10  mrg   VAR2 (TERNOP, qtbx4, 0, NONE, v8qi, v16qi)
    799  1.10  mrg   VAR2 (TERNOPU, qtbx4, 0, NONE, v8qi, v16qi)
    800  1.10  mrg   VAR2 (TERNOP_PPPU, qtbx4, 0, NONE, v8qi, v16qi)
    801  1.10  mrg   VAR2 (TERNOP_SSSU, qtbx4, 0, NONE, v8qi, v16qi)
    802   1.4  mrg 
    803   1.6  mrg   /* Builtins for ARMv8.1-A Adv.SIMD instructions.  */
    804   1.4  mrg 
    805   1.4  mrg   /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>.  */
    806  1.10  mrg   BUILTIN_VSDQ_HSI (TERNOP, sqrdmlah, 0, NONE)
    807  1.10  mrg   BUILTIN_VSDQ_HSI (TERNOP, sqrdmlsh, 0, NONE)
    808   1.4  mrg 
    809   1.4  mrg   /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>.  */
    810  1.10  mrg   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_lane, 0, NONE)
    811  1.10  mrg   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_lane, 0, NONE)
    812   1.4  mrg 
    813   1.4  mrg   /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>.  */
    814  1.10  mrg   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_laneq, 0, NONE)
    815  1.10  mrg   BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_laneq, 0, NONE)
    816   1.6  mrg 
    817   1.6  mrg   /* Implemented by <FCVT_F2FIXED/FIXED2F:fcvt_fixed_insn><*><*>3.  */
    818  1.10  mrg   BUILTIN_VSDQ_HSDI (SHIFTIMM, scvtf, 3, FP)
    819  1.10  mrg   BUILTIN_VSDQ_HSDI (FCVTIMM_SUS, ucvtf, 3, FP)
    820  1.10  mrg   BUILTIN_VHSDF_HSDF (SHIFTIMM, fcvtzs, 3, FP)
    821  1.10  mrg   BUILTIN_VHSDF_HSDF (SHIFTIMM_USS, fcvtzu, 3, FP)
    822  1.10  mrg   VAR1 (SHIFTIMM, scvtfsi, 3, FP, hf)
    823  1.10  mrg   VAR1 (SHIFTIMM, scvtfdi, 3, FP, hf)
    824  1.10  mrg   VAR1 (FCVTIMM_SUS, ucvtfsi, 3, FP, hf)
    825  1.10  mrg   VAR1 (FCVTIMM_SUS, ucvtfdi, 3, FP, hf)
    826  1.10  mrg   BUILTIN_GPI (SHIFTIMM, fcvtzshf, 3, FP)
    827  1.10  mrg   BUILTIN_GPI (SHIFTIMM_USS, fcvtzuhf, 3, FP)
    828   1.6  mrg 
    829   1.6  mrg   /* Implemented by aarch64_rsqrte<mode>.  */
    830  1.10  mrg   BUILTIN_VHSDF_HSDF (UNOP, rsqrte, 0, FP)
    831   1.6  mrg 
    832   1.6  mrg   /* Implemented by aarch64_rsqrts<mode>.  */
    833  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP, rsqrts, 0, FP)
    834  1.10  mrg 
    835  1.10  mrg   /* Implemented by aarch64_ursqrte<mode>.  */
    836  1.10  mrg   BUILTIN_VDQ_SI (UNOPU, ursqrte, 0, NONE)
    837   1.6  mrg 
    838   1.6  mrg   /* Implemented by fabd<mode>3.  */
    839  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP, fabd, 3, FP)
    840   1.6  mrg 
    841   1.6  mrg   /* Implemented by aarch64_faddp<mode>.  */
    842  1.10  mrg   BUILTIN_VHSDF (BINOP, faddp, 0, FP)
    843   1.6  mrg 
    844   1.6  mrg   /* Implemented by aarch64_cm<optab><mode>.  */
    845  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP_USS, cmeq, 0, FP)
    846  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP_USS, cmge, 0, FP)
    847  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP_USS, cmgt, 0, FP)
    848  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP_USS, cmle, 0, FP)
    849  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP_USS, cmlt, 0, FP)
    850   1.6  mrg 
    851   1.6  mrg   /* Implemented by neg<mode>2.  */
    852  1.10  mrg   BUILTIN_VHSDF_HSDF (UNOP, neg, 2, ALL)
    853   1.6  mrg 
    854   1.6  mrg   /* Implemented by aarch64_fac<optab><mode>.  */
    855  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP_USS, faclt, 0, FP)
    856  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP_USS, facle, 0, FP)
    857  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP_USS, facgt, 0, FP)
    858  1.10  mrg   BUILTIN_VHSDF_HSDF (BINOP_USS, facge, 0, FP)
    859   1.6  mrg 
    860   1.6  mrg   /* Implemented by sqrt<mode>2.  */
    861  1.10  mrg   VAR1 (UNOP, sqrt, 2, FP, hf)
    862   1.6  mrg 
    863   1.6  mrg   /* Implemented by <optab><mode>hf2.  */
    864  1.10  mrg   VAR1 (UNOP, floatdi, 2, FP, hf)
    865  1.10  mrg   VAR1 (UNOP, floatsi, 2, FP, hf)
    866  1.10  mrg   VAR1 (UNOP, floathi, 2, FP, hf)
    867  1.10  mrg   VAR1 (UNOPUS, floatunsdi, 2, FP, hf)
    868  1.10  mrg   VAR1 (UNOPUS, floatunssi, 2, FP, hf)
    869  1.10  mrg   VAR1 (UNOPUS, floatunshi, 2, FP, hf)
    870  1.10  mrg   BUILTIN_GPI_I16 (UNOP, fix_trunchf, 2, FP)
    871  1.10  mrg   BUILTIN_GPI (UNOP, fix_truncsf, 2, FP)
    872  1.10  mrg   BUILTIN_GPI (UNOP, fix_truncdf, 2, FP)
    873  1.10  mrg   BUILTIN_GPI_I16 (UNOPUS, fixuns_trunchf, 2, FP)
    874  1.10  mrg   BUILTIN_GPI (UNOPUS, fixuns_truncsf, 2, FP)
    875  1.10  mrg   BUILTIN_GPI (UNOPUS, fixuns_truncdf, 2, FP)
    876   1.7  mrg 
    877   1.7  mrg   /* Implemented by aarch64_sm3ss1qv4si.  */
    878  1.10  mrg   VAR1 (TERNOPU, sm3ss1q, 0, NONE, v4si)
    879   1.7  mrg   /* Implemented by aarch64_sm3tt<sm3tt_op>qv4si.  */
    880  1.10  mrg   VAR1 (QUADOPUI, sm3tt1aq, 0, NONE, v4si)
    881  1.10  mrg   VAR1 (QUADOPUI, sm3tt1bq, 0, NONE, v4si)
    882  1.10  mrg   VAR1 (QUADOPUI, sm3tt2aq, 0, NONE, v4si)
    883  1.10  mrg   VAR1 (QUADOPUI, sm3tt2bq, 0, NONE, v4si)
    884   1.7  mrg   /* Implemented by aarch64_sm3partw<sm3part_op>qv4si.  */
    885  1.10  mrg   VAR1 (TERNOPU, sm3partw1q, 0, NONE, v4si)
    886  1.10  mrg   VAR1 (TERNOPU, sm3partw2q, 0, NONE, v4si)
    887   1.7  mrg   /* Implemented by aarch64_sm4eqv4si.  */
    888  1.10  mrg   VAR1 (BINOPU, sm4eq, 0, NONE, v4si)
    889   1.7  mrg   /* Implemented by aarch64_sm4ekeyqv4si.  */
    890  1.10  mrg   VAR1 (BINOPU, sm4ekeyq, 0, NONE, v4si)
    891   1.7  mrg   /* Implemented by aarch64_crypto_sha512hqv2di.  */
    892  1.10  mrg   VAR1 (TERNOPU, crypto_sha512hq, 0, NONE, v2di)
    893   1.7  mrg   /* Implemented by aarch64_sha512h2qv2di.  */
    894  1.10  mrg   VAR1 (TERNOPU, crypto_sha512h2q, 0, NONE, v2di)
    895   1.7  mrg   /* Implemented by aarch64_crypto_sha512su0qv2di.  */
    896  1.10  mrg   VAR1 (BINOPU, crypto_sha512su0q, 0, NONE, v2di)
    897   1.7  mrg   /* Implemented by aarch64_crypto_sha512su1qv2di.  */
    898  1.10  mrg   VAR1 (TERNOPU, crypto_sha512su1q, 0, NONE, v2di)
    899   1.8  mrg   /* Implemented by eor3q<mode>4.  */
    900  1.10  mrg   BUILTIN_VQ_I (TERNOPU, eor3q, 4, NONE)
    901  1.10  mrg   BUILTIN_VQ_I (TERNOP, eor3q, 4, NONE)
    902   1.7  mrg   /* Implemented by aarch64_rax1qv2di.  */
    903  1.10  mrg   VAR1 (BINOPU, rax1q, 0, NONE, v2di)
    904   1.7  mrg   /* Implemented by aarch64_xarqv2di.  */
    905  1.10  mrg   VAR1 (TERNOPUI, xarq, 0, NONE, v2di)
    906   1.8  mrg   /* Implemented by bcaxq<mode>4.  */
    907  1.10  mrg   BUILTIN_VQ_I (TERNOPU, bcaxq, 4, NONE)
    908  1.10  mrg   BUILTIN_VQ_I (TERNOP, bcaxq, 4, NONE)
    909   1.7  mrg 
    910   1.7  mrg   /* Implemented by aarch64_fml<f16mac1>l<f16quad>_low<mode>.  */
    911  1.10  mrg   VAR1 (TERNOP, fmlal_low, 0, FP, v2sf)
    912  1.10  mrg   VAR1 (TERNOP, fmlsl_low, 0, FP, v2sf)
    913  1.10  mrg   VAR1 (TERNOP, fmlalq_low, 0, FP, v4sf)
    914  1.10  mrg   VAR1 (TERNOP, fmlslq_low, 0, FP, v4sf)
    915   1.7  mrg   /* Implemented by aarch64_fml<f16mac1>l<f16quad>_high<mode>.  */
    916  1.10  mrg   VAR1 (TERNOP, fmlal_high, 0, FP, v2sf)
    917  1.10  mrg   VAR1 (TERNOP, fmlsl_high, 0, FP, v2sf)
    918  1.10  mrg   VAR1 (TERNOP, fmlalq_high, 0, FP, v4sf)
    919  1.10  mrg   VAR1 (TERNOP, fmlslq_high, 0, FP, v4sf)
    920   1.7  mrg   /* Implemented by aarch64_fml<f16mac1>l_lane_lowv2sf.  */
    921  1.10  mrg   VAR1 (QUADOP_LANE, fmlal_lane_low, 0, FP, v2sf)
    922  1.10  mrg   VAR1 (QUADOP_LANE, fmlsl_lane_low, 0, FP, v2sf)
    923   1.7  mrg   /* Implemented by aarch64_fml<f16mac1>l_laneq_lowv2sf.  */
    924  1.10  mrg   VAR1 (QUADOP_LANE, fmlal_laneq_low, 0, FP, v2sf)
    925  1.10  mrg   VAR1 (QUADOP_LANE, fmlsl_laneq_low, 0, FP, v2sf)
    926   1.7  mrg   /* Implemented by aarch64_fml<f16mac1>lq_lane_lowv4sf.  */
    927  1.10  mrg   VAR1 (QUADOP_LANE, fmlalq_lane_low, 0, FP, v4sf)
    928  1.10  mrg   VAR1 (QUADOP_LANE, fmlslq_lane_low, 0, FP, v4sf)
    929   1.7  mrg   /* Implemented by aarch64_fml<f16mac1>lq_laneq_lowv4sf.  */
    930  1.10  mrg   VAR1 (QUADOP_LANE, fmlalq_laneq_low, 0, FP, v4sf)
    931  1.10  mrg   VAR1 (QUADOP_LANE, fmlslq_laneq_low, 0, FP, v4sf)
    932   1.7  mrg   /* Implemented by aarch64_fml<f16mac1>l_lane_highv2sf.  */
    933  1.10  mrg   VAR1 (QUADOP_LANE, fmlal_lane_high, 0, FP, v2sf)
    934  1.10  mrg   VAR1 (QUADOP_LANE, fmlsl_lane_high, 0, FP, v2sf)
    935   1.7  mrg   /* Implemented by aarch64_fml<f16mac1>l_laneq_highv2sf.  */
    936  1.10  mrg   VAR1 (QUADOP_LANE, fmlal_laneq_high, 0, FP, v2sf)
    937  1.10  mrg   VAR1 (QUADOP_LANE, fmlsl_laneq_high, 0, FP, v2sf)
    938   1.7  mrg   /* Implemented by aarch64_fml<f16mac1>lq_lane_highv4sf.  */
    939  1.10  mrg   VAR1 (QUADOP_LANE, fmlalq_lane_high, 0, FP, v4sf)
    940  1.10  mrg   VAR1 (QUADOP_LANE, fmlslq_lane_high, 0, FP, v4sf)
    941   1.7  mrg   /* Implemented by aarch64_fml<f16mac1>lq_laneq_highv4sf.  */
    942  1.10  mrg   VAR1 (QUADOP_LANE, fmlalq_laneq_high, 0, FP, v4sf)
    943  1.10  mrg   VAR1 (QUADOP_LANE, fmlslq_laneq_high, 0, FP, v4sf)
    944   1.9  mrg 
    945   1.9  mrg   /* Implemented by aarch64_<frintnzs_op><mode>.  */
    946  1.10  mrg   BUILTIN_VSFDF (UNOP, frint32z, 0, FP)
    947  1.10  mrg   BUILTIN_VSFDF (UNOP, frint32x, 0, FP)
    948  1.10  mrg   BUILTIN_VSFDF (UNOP, frint64z, 0, FP)
    949  1.10  mrg   BUILTIN_VSFDF (UNOP, frint64x, 0, FP)
    950   1.9  mrg 
    951   1.9  mrg   /* Implemented by aarch64_bfdot{_lane}{q}<mode>.  */
    952  1.10  mrg   VAR2 (TERNOP, bfdot, 0, AUTO_FP, v2sf, v4sf)
    953  1.10  mrg   VAR2 (QUADOP_LANE_PAIR, bfdot_lane, 0, AUTO_FP, v2sf, v4sf)
    954  1.10  mrg   VAR2 (QUADOP_LANE_PAIR, bfdot_laneq, 0, AUTO_FP, v2sf, v4sf)
    955   1.9  mrg 
    956   1.9  mrg   /* Implemented by aarch64_bfmmlaqv4sf  */
    957  1.10  mrg   VAR1 (TERNOP, bfmmlaq, 0, AUTO_FP, v4sf)
    958   1.9  mrg 
    959   1.9  mrg   /* Implemented by aarch64_bfmlal<bt>{_lane{q}}v4sf  */
    960  1.10  mrg   VAR1 (TERNOP, bfmlalb, 0, FP, v4sf)
    961  1.10  mrg   VAR1 (TERNOP, bfmlalt, 0, FP, v4sf)
    962  1.10  mrg   VAR1 (QUADOP_LANE, bfmlalb_lane, 0, FP, v4sf)
    963  1.10  mrg   VAR1 (QUADOP_LANE, bfmlalt_lane, 0, FP, v4sf)
    964  1.10  mrg   VAR1 (QUADOP_LANE, bfmlalb_lane_q, 0, FP, v4sf)
    965  1.10  mrg   VAR1 (QUADOP_LANE, bfmlalt_lane_q, 0, FP, v4sf)
    966   1.9  mrg 
    967   1.9  mrg   /* Implemented by aarch64_vget_lo/hi_halfv8bf.  */
    968  1.10  mrg   VAR1 (UNOP, vget_lo_half, 0, AUTO_FP, v8bf)
    969  1.10  mrg   VAR1 (UNOP, vget_hi_half, 0, AUTO_FP, v8bf)
    970   1.9  mrg 
    971   1.9  mrg   /* Implemented by aarch64_simd_<sur>mmlav16qi.  */
    972  1.10  mrg   VAR1 (TERNOP, simd_smmla, 0, NONE, v16qi)
    973  1.10  mrg   VAR1 (TERNOPU, simd_ummla, 0, NONE, v16qi)
    974  1.10  mrg   VAR1 (TERNOP_SSUS, simd_usmmla, 0, NONE, v16qi)
    975   1.9  mrg 
    976   1.9  mrg   /* Implemented by aarch64_bfcvtn{q}{2}<mode>  */
    977  1.10  mrg   VAR1 (UNOP, bfcvtn, 0, FP, v4bf)
    978  1.10  mrg   VAR1 (UNOP, bfcvtn_q, 0, FP, v8bf)
    979  1.10  mrg   VAR1 (BINOP, bfcvtn2, 0, FP, v8bf)
    980  1.10  mrg   VAR1 (UNOP, bfcvt, 0, FP, bf)
    981   1.9  mrg 
    982   1.9  mrg   /* Implemented by aarch64_{v}bfcvt{_high}<mode>.  */
    983  1.10  mrg   VAR2 (UNOP, vbfcvt, 0, AUTO_FP, v4bf, v8bf)
    984  1.10  mrg   VAR1 (UNOP, vbfcvt_high, 0, AUTO_FP, v8bf)
    985  1.10  mrg   VAR1 (UNOP, bfcvt, 0, AUTO_FP, sf)
    986