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