1//===- IntrinsicsX86.td - Defines X86 intrinsics -----------*- tablegen -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file defines all of the X86-specific intrinsics. 10// 11//===----------------------------------------------------------------------===// 12 13//===----------------------------------------------------------------------===// 14// Interrupt traps 15let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 16 def int_x86_int : Intrinsic<[], [llvm_i8_ty], [ImmArg<ArgIndex<0>>]>; 17} 18 19//===----------------------------------------------------------------------===// 20// SEH intrinsics for Windows 21let TargetPrefix = "x86" in { 22 def int_x86_seh_lsda : Intrinsic<[llvm_ptr_ty], [llvm_ptr_ty], [IntrNoMem]>; 23 24 // Marks the EH registration node created in LLVM IR prior to code generation. 25 def int_x86_seh_ehregnode : Intrinsic<[], [llvm_ptr_ty], []>; 26 27 // Marks the EH guard slot node created in LLVM IR prior to code generation. 28 def int_x86_seh_ehguard : Intrinsic<[], [llvm_ptr_ty], []>; 29} 30 31//===----------------------------------------------------------------------===// 32// FLAGS. 33let TargetPrefix = "x86" in { 34 def int_x86_flags_read_u32 : ClangBuiltin<"__builtin_ia32_readeflags_u32">, 35 Intrinsic<[llvm_i32_ty], [], []>; 36 def int_x86_flags_read_u64 : ClangBuiltin<"__builtin_ia32_readeflags_u64">, 37 Intrinsic<[llvm_i64_ty], [], []>; 38 def int_x86_flags_write_u32 : ClangBuiltin<"__builtin_ia32_writeeflags_u32">, 39 Intrinsic<[], [llvm_i32_ty], []>; 40 def int_x86_flags_write_u64 : ClangBuiltin<"__builtin_ia32_writeeflags_u64">, 41 Intrinsic<[], [llvm_i64_ty], []>; 42} 43 44//===----------------------------------------------------------------------===// 45// Read Time Stamp Counter. 46let TargetPrefix = "x86" in { 47 def int_x86_rdtsc : ClangBuiltin<"__builtin_ia32_rdtsc">, 48 Intrinsic<[llvm_i64_ty], [], []>; 49 def int_x86_rdtscp : 50 Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>; 51} 52 53// Read Performance-Monitoring Counter. 54let TargetPrefix = "x86" in { 55 def int_x86_rdpmc : ClangBuiltin<"__builtin_ia32_rdpmc">, 56 Intrinsic<[llvm_i64_ty], [llvm_i32_ty], []>; 57} 58 59// Read processor ID. 60let TargetPrefix = "x86" in { 61 def int_x86_rdpid : ClangBuiltin<"__builtin_ia32_rdpid">, 62 Intrinsic<[llvm_i32_ty], [], []>; 63} 64 65// Lock bit test. 66let TargetPrefix = "x86" in { 67 def int_x86_atomic_bts : Intrinsic<[llvm_anyint_ty], [llvm_ptr_ty, llvm_i8_ty], 68 [ImmArg<ArgIndex<1>>]>; 69 def int_x86_atomic_btc : Intrinsic<[llvm_anyint_ty], [llvm_ptr_ty, llvm_i8_ty], 70 [ImmArg<ArgIndex<1>>]>; 71 def int_x86_atomic_btr : Intrinsic<[llvm_anyint_ty], [llvm_ptr_ty, llvm_i8_ty], 72 [ImmArg<ArgIndex<1>>]>; 73 def int_x86_atomic_bts_rm : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty], 74 []>; 75 def int_x86_atomic_btc_rm : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty], 76 []>; 77 def int_x86_atomic_btr_rm : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty], 78 []>; 79 80 81} 82 83// Lock binary arith with CC. 84let TargetPrefix = "x86" in { 85 def int_x86_atomic_add_cc : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty, llvm_i32_ty], 86 [ImmArg<ArgIndex<2>>]>; 87 def int_x86_atomic_sub_cc : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty, llvm_i32_ty], 88 [ImmArg<ArgIndex<2>>]>; 89 def int_x86_atomic_or_cc : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty, llvm_i32_ty], 90 [ImmArg<ArgIndex<2>>]>; 91 def int_x86_atomic_and_cc : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty, llvm_i32_ty], 92 [ImmArg<ArgIndex<2>>]>; 93 def int_x86_atomic_xor_cc : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty, llvm_i32_ty], 94 [ImmArg<ArgIndex<2>>]>; 95} 96 97// Read Processor Register. 98let TargetPrefix = "x86" in { 99 def int_x86_rdpru : ClangBuiltin<"__builtin_ia32_rdpru">, 100 Intrinsic<[llvm_i64_ty], [llvm_i32_ty], []>; 101} 102 103//===----------------------------------------------------------------------===// 104// CET SS 105let TargetPrefix = "x86" in { 106 def int_x86_incsspd : ClangBuiltin<"__builtin_ia32_incsspd">, 107 Intrinsic<[], [llvm_i32_ty], []>; 108 def int_x86_incsspq : ClangBuiltin<"__builtin_ia32_incsspq">, 109 Intrinsic<[], [llvm_i64_ty], []>; 110 def int_x86_rdsspd : ClangBuiltin<"__builtin_ia32_rdsspd">, 111 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], []>; 112 def int_x86_rdsspq : ClangBuiltin<"__builtin_ia32_rdsspq">, 113 Intrinsic<[llvm_i64_ty], [llvm_i64_ty], []>; 114 def int_x86_saveprevssp : ClangBuiltin<"__builtin_ia32_saveprevssp">, 115 Intrinsic<[], [], []>; 116 def int_x86_rstorssp : ClangBuiltin<"__builtin_ia32_rstorssp">, 117 Intrinsic<[], [llvm_ptr_ty], []>; 118 def int_x86_wrssd : ClangBuiltin<"__builtin_ia32_wrssd">, 119 Intrinsic<[], [llvm_i32_ty, llvm_ptr_ty], []>; 120 def int_x86_wrssq : ClangBuiltin<"__builtin_ia32_wrssq">, 121 Intrinsic<[], [llvm_i64_ty, llvm_ptr_ty], []>; 122 def int_x86_wrussd : ClangBuiltin<"__builtin_ia32_wrussd">, 123 Intrinsic<[], [llvm_i32_ty, llvm_ptr_ty], []>; 124 def int_x86_wrussq : ClangBuiltin<"__builtin_ia32_wrussq">, 125 Intrinsic<[], [llvm_i64_ty, llvm_ptr_ty], []>; 126 def int_x86_setssbsy : ClangBuiltin<"__builtin_ia32_setssbsy">, 127 Intrinsic<[], [], []>; 128 def int_x86_clrssbsy : ClangBuiltin<"__builtin_ia32_clrssbsy">, 129 Intrinsic<[], [llvm_ptr_ty], []>; 130} 131 132//===----------------------------------------------------------------------===// 133// SSE1 134 135// Arithmetic ops 136let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 137 def int_x86_sse_rcp_ss : ClangBuiltin<"__builtin_ia32_rcpss">, 138 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 139 [IntrNoMem]>; 140 def int_x86_sse_rcp_ps : ClangBuiltin<"__builtin_ia32_rcpps">, 141 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 142 [IntrNoMem]>; 143 def int_x86_sse_rsqrt_ss : ClangBuiltin<"__builtin_ia32_rsqrtss">, 144 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 145 [IntrNoMem]>; 146 def int_x86_sse_rsqrt_ps : ClangBuiltin<"__builtin_ia32_rsqrtps">, 147 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 148 [IntrNoMem]>; 149 def int_x86_sse_min_ss : ClangBuiltin<"__builtin_ia32_minss">, 150 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 151 llvm_v4f32_ty], [IntrNoMem]>; 152 def int_x86_sse_min_ps : ClangBuiltin<"__builtin_ia32_minps">, 153 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 154 llvm_v4f32_ty], [IntrNoMem]>; 155 def int_x86_sse_max_ss : ClangBuiltin<"__builtin_ia32_maxss">, 156 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 157 llvm_v4f32_ty], [IntrNoMem]>; 158 def int_x86_sse_max_ps : ClangBuiltin<"__builtin_ia32_maxps">, 159 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 160 llvm_v4f32_ty], [IntrNoMem]>; 161} 162 163// Comparison ops 164let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 165 def int_x86_sse_cmp_ss : ClangBuiltin<"__builtin_ia32_cmpss">, 166 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 167 llvm_v4f32_ty, llvm_i8_ty], 168 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 169 // NOTE: This comparison intrinsic is not used by clang as long as the 170 // distinction in signaling behaviour is not implemented. 171 def int_x86_sse_cmp_ps : 172 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 173 llvm_v4f32_ty, llvm_i8_ty], 174 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 175 def int_x86_sse_comieq_ss : ClangBuiltin<"__builtin_ia32_comieq">, 176 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 177 llvm_v4f32_ty], [IntrNoMem]>; 178 def int_x86_sse_comilt_ss : ClangBuiltin<"__builtin_ia32_comilt">, 179 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 180 llvm_v4f32_ty], [IntrNoMem]>; 181 def int_x86_sse_comile_ss : ClangBuiltin<"__builtin_ia32_comile">, 182 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 183 llvm_v4f32_ty], [IntrNoMem]>; 184 def int_x86_sse_comigt_ss : ClangBuiltin<"__builtin_ia32_comigt">, 185 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 186 llvm_v4f32_ty], [IntrNoMem]>; 187 def int_x86_sse_comige_ss : ClangBuiltin<"__builtin_ia32_comige">, 188 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 189 llvm_v4f32_ty], [IntrNoMem]>; 190 def int_x86_sse_comineq_ss : ClangBuiltin<"__builtin_ia32_comineq">, 191 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 192 llvm_v4f32_ty], [IntrNoMem]>; 193 def int_x86_sse_ucomieq_ss : ClangBuiltin<"__builtin_ia32_ucomieq">, 194 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 195 llvm_v4f32_ty], [IntrNoMem]>; 196 def int_x86_sse_ucomilt_ss : ClangBuiltin<"__builtin_ia32_ucomilt">, 197 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 198 llvm_v4f32_ty], [IntrNoMem]>; 199 def int_x86_sse_ucomile_ss : ClangBuiltin<"__builtin_ia32_ucomile">, 200 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 201 llvm_v4f32_ty], [IntrNoMem]>; 202 def int_x86_sse_ucomigt_ss : ClangBuiltin<"__builtin_ia32_ucomigt">, 203 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 204 llvm_v4f32_ty], [IntrNoMem]>; 205 def int_x86_sse_ucomige_ss : ClangBuiltin<"__builtin_ia32_ucomige">, 206 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 207 llvm_v4f32_ty], [IntrNoMem]>; 208 def int_x86_sse_ucomineq_ss : ClangBuiltin<"__builtin_ia32_ucomineq">, 209 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 210 llvm_v4f32_ty], [IntrNoMem]>; 211} 212 213 214// Conversion ops 215let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 216 def int_x86_sse_cvtss2si : ClangBuiltin<"__builtin_ia32_cvtss2si">, 217 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 218 def int_x86_sse_cvtss2si64 : ClangBuiltin<"__builtin_ia32_cvtss2si64">, 219 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty], [IntrNoMem]>; 220 def int_x86_sse_cvttss2si : ClangBuiltin<"__builtin_ia32_cvttss2si">, 221 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 222 def int_x86_sse_cvttss2si64 : ClangBuiltin<"__builtin_ia32_cvttss2si64">, 223 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty], [IntrNoMem]>; 224 225 def int_x86_sse_cvtps2pi : ClangBuiltin<"__builtin_ia32_cvtps2pi">, 226 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v4f32_ty], [IntrNoMem]>; 227 def int_x86_sse_cvttps2pi: ClangBuiltin<"__builtin_ia32_cvttps2pi">, 228 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v4f32_ty], [IntrNoMem]>; 229 def int_x86_sse_cvtpi2ps : ClangBuiltin<"__builtin_ia32_cvtpi2ps">, 230 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 231 llvm_x86mmx_ty], [IntrNoMem]>; 232} 233 234// Cacheability support ops 235let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 236 def int_x86_sse_sfence : ClangBuiltin<"__builtin_ia32_sfence">, 237 Intrinsic<[], [], []>; 238} 239 240// Control register. 241let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 242 def int_x86_sse_stmxcsr : 243 Intrinsic<[], [llvm_ptr_ty], 244 [IntrWriteMem, IntrArgMemOnly, 245 // This prevents reordering with ldmxcsr 246 IntrHasSideEffects]>; 247 def int_x86_sse_ldmxcsr : 248 Intrinsic<[], [llvm_ptr_ty], 249 // FIXME: LDMXCSR does not actually write to memory, 250 // but intrinsic properties are generated incorrectly 251 // for IntrReadMem+IntrHasSideEffects. 252 [/*IntrReadMem, IntrArgMemOnly,*/ IntrHasSideEffects]>; 253} 254 255// Misc. 256let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 257 def int_x86_sse_movmsk_ps : ClangBuiltin<"__builtin_ia32_movmskps">, 258 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 259} 260 261//===----------------------------------------------------------------------===// 262// SSE2 263 264// FP arithmetic ops 265let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 266 def int_x86_sse2_min_sd : ClangBuiltin<"__builtin_ia32_minsd">, 267 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 268 llvm_v2f64_ty], [IntrNoMem]>; 269 def int_x86_sse2_min_pd : ClangBuiltin<"__builtin_ia32_minpd">, 270 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 271 llvm_v2f64_ty], [IntrNoMem]>; 272 def int_x86_sse2_max_sd : ClangBuiltin<"__builtin_ia32_maxsd">, 273 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 274 llvm_v2f64_ty], [IntrNoMem]>; 275 def int_x86_sse2_max_pd : ClangBuiltin<"__builtin_ia32_maxpd">, 276 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 277 llvm_v2f64_ty], [IntrNoMem]>; 278} 279 280// FP comparison ops 281let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 282 def int_x86_sse2_cmp_sd : ClangBuiltin<"__builtin_ia32_cmpsd">, 283 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 284 llvm_v2f64_ty, llvm_i8_ty], 285 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 286 // NOTE: This comparison intrinsic is not used by clang as long as the 287 // distinction in signaling behaviour is not implemented. 288 def int_x86_sse2_cmp_pd : 289 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 290 llvm_v2f64_ty, llvm_i8_ty], 291 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 292 def int_x86_sse2_comieq_sd : ClangBuiltin<"__builtin_ia32_comisdeq">, 293 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 294 llvm_v2f64_ty], [IntrNoMem]>; 295 def int_x86_sse2_comilt_sd : ClangBuiltin<"__builtin_ia32_comisdlt">, 296 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 297 llvm_v2f64_ty], [IntrNoMem]>; 298 def int_x86_sse2_comile_sd : ClangBuiltin<"__builtin_ia32_comisdle">, 299 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 300 llvm_v2f64_ty], [IntrNoMem]>; 301 def int_x86_sse2_comigt_sd : ClangBuiltin<"__builtin_ia32_comisdgt">, 302 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 303 llvm_v2f64_ty], [IntrNoMem]>; 304 def int_x86_sse2_comige_sd : ClangBuiltin<"__builtin_ia32_comisdge">, 305 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 306 llvm_v2f64_ty], [IntrNoMem]>; 307 def int_x86_sse2_comineq_sd : ClangBuiltin<"__builtin_ia32_comisdneq">, 308 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 309 llvm_v2f64_ty], [IntrNoMem]>; 310 def int_x86_sse2_ucomieq_sd : ClangBuiltin<"__builtin_ia32_ucomisdeq">, 311 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 312 llvm_v2f64_ty], [IntrNoMem]>; 313 def int_x86_sse2_ucomilt_sd : ClangBuiltin<"__builtin_ia32_ucomisdlt">, 314 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 315 llvm_v2f64_ty], [IntrNoMem]>; 316 def int_x86_sse2_ucomile_sd : ClangBuiltin<"__builtin_ia32_ucomisdle">, 317 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 318 llvm_v2f64_ty], [IntrNoMem]>; 319 def int_x86_sse2_ucomigt_sd : ClangBuiltin<"__builtin_ia32_ucomisdgt">, 320 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 321 llvm_v2f64_ty], [IntrNoMem]>; 322 def int_x86_sse2_ucomige_sd : ClangBuiltin<"__builtin_ia32_ucomisdge">, 323 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 324 llvm_v2f64_ty], [IntrNoMem]>; 325 def int_x86_sse2_ucomineq_sd : ClangBuiltin<"__builtin_ia32_ucomisdneq">, 326 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 327 llvm_v2f64_ty], [IntrNoMem]>; 328} 329 330// Integer arithmetic ops. 331let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 332 def int_x86_sse2_pmulhu_w : ClangBuiltin<"__builtin_ia32_pmulhuw128">, 333 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 334 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 335 def int_x86_sse2_pmulh_w : ClangBuiltin<"__builtin_ia32_pmulhw128">, 336 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 337 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 338 def int_x86_sse2_pmadd_wd : ClangBuiltin<"__builtin_ia32_pmaddwd128">, 339 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, 340 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 341 def int_x86_sse2_pavg_b : ClangBuiltin<"__builtin_ia32_pavgb128">, 342 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 343 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 344 def int_x86_sse2_pavg_w : ClangBuiltin<"__builtin_ia32_pavgw128">, 345 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 346 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 347 def int_x86_sse2_psad_bw : ClangBuiltin<"__builtin_ia32_psadbw128">, 348 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty, 349 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 350} 351 352// Integer shift ops. 353let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 354 def int_x86_sse2_psll_w : ClangBuiltin<"__builtin_ia32_psllw128">, 355 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 356 llvm_v8i16_ty], [IntrNoMem]>; 357 def int_x86_sse2_psll_d : ClangBuiltin<"__builtin_ia32_pslld128">, 358 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 359 llvm_v4i32_ty], [IntrNoMem]>; 360 def int_x86_sse2_psll_q : ClangBuiltin<"__builtin_ia32_psllq128">, 361 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 362 llvm_v2i64_ty], [IntrNoMem]>; 363 def int_x86_sse2_psrl_w : ClangBuiltin<"__builtin_ia32_psrlw128">, 364 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 365 llvm_v8i16_ty], [IntrNoMem]>; 366 def int_x86_sse2_psrl_d : ClangBuiltin<"__builtin_ia32_psrld128">, 367 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 368 llvm_v4i32_ty], [IntrNoMem]>; 369 def int_x86_sse2_psrl_q : ClangBuiltin<"__builtin_ia32_psrlq128">, 370 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 371 llvm_v2i64_ty], [IntrNoMem]>; 372 def int_x86_sse2_psra_w : ClangBuiltin<"__builtin_ia32_psraw128">, 373 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 374 llvm_v8i16_ty], [IntrNoMem]>; 375 def int_x86_sse2_psra_d : ClangBuiltin<"__builtin_ia32_psrad128">, 376 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 377 llvm_v4i32_ty], [IntrNoMem]>; 378 379 // Oddly these don't require an immediate due to a gcc compatibility issue. 380 def int_x86_sse2_pslli_w : ClangBuiltin<"__builtin_ia32_psllwi128">, 381 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 382 llvm_i32_ty], [IntrNoMem]>; 383 def int_x86_sse2_pslli_d : ClangBuiltin<"__builtin_ia32_pslldi128">, 384 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 385 llvm_i32_ty], [IntrNoMem]>; 386 def int_x86_sse2_pslli_q : ClangBuiltin<"__builtin_ia32_psllqi128">, 387 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 388 llvm_i32_ty], [IntrNoMem]>; 389 def int_x86_sse2_psrli_w : ClangBuiltin<"__builtin_ia32_psrlwi128">, 390 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 391 llvm_i32_ty], [IntrNoMem]>; 392 def int_x86_sse2_psrli_d : ClangBuiltin<"__builtin_ia32_psrldi128">, 393 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 394 llvm_i32_ty], [IntrNoMem]>; 395 def int_x86_sse2_psrli_q : ClangBuiltin<"__builtin_ia32_psrlqi128">, 396 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 397 llvm_i32_ty], [IntrNoMem]>; 398 def int_x86_sse2_psrai_w : ClangBuiltin<"__builtin_ia32_psrawi128">, 399 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 400 llvm_i32_ty], [IntrNoMem]>; 401 def int_x86_sse2_psrai_d : ClangBuiltin<"__builtin_ia32_psradi128">, 402 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 403 llvm_i32_ty], [IntrNoMem]>; 404} 405 406// Conversion ops 407let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 408 def int_x86_sse2_cvtpd2dq : ClangBuiltin<"__builtin_ia32_cvtpd2dq">, 409 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 410 def int_x86_sse2_cvttpd2dq : ClangBuiltin<"__builtin_ia32_cvttpd2dq">, 411 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 412 def int_x86_sse2_cvtpd2ps : ClangBuiltin<"__builtin_ia32_cvtpd2ps">, 413 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 414 def int_x86_sse2_cvtps2dq : ClangBuiltin<"__builtin_ia32_cvtps2dq">, 415 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 416 def int_x86_sse2_cvttps2dq : ClangBuiltin<"__builtin_ia32_cvttps2dq">, 417 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 418 def int_x86_sse2_cvtsd2si : ClangBuiltin<"__builtin_ia32_cvtsd2si">, 419 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 420 def int_x86_sse2_cvtsd2si64 : ClangBuiltin<"__builtin_ia32_cvtsd2si64">, 421 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 422 def int_x86_sse2_cvttsd2si : ClangBuiltin<"__builtin_ia32_cvttsd2si">, 423 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 424 def int_x86_sse2_cvttsd2si64 : ClangBuiltin<"__builtin_ia32_cvttsd2si64">, 425 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 426 def int_x86_sse2_cvtsd2ss : ClangBuiltin<"__builtin_ia32_cvtsd2ss">, 427 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 428 llvm_v2f64_ty], [IntrNoMem]>; 429 def int_x86_sse_cvtpd2pi : ClangBuiltin<"__builtin_ia32_cvtpd2pi">, 430 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v2f64_ty], [IntrNoMem]>; 431 def int_x86_sse_cvttpd2pi: ClangBuiltin<"__builtin_ia32_cvttpd2pi">, 432 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v2f64_ty], [IntrNoMem]>; 433 def int_x86_sse_cvtpi2pd : ClangBuiltin<"__builtin_ia32_cvtpi2pd">, 434 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 435} 436 437// Misc. 438let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 439 def int_x86_sse2_packsswb_128 : ClangBuiltin<"__builtin_ia32_packsswb128">, 440 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8i16_ty, 441 llvm_v8i16_ty], [IntrNoMem]>; 442 def int_x86_sse2_packssdw_128 : ClangBuiltin<"__builtin_ia32_packssdw128">, 443 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v4i32_ty, 444 llvm_v4i32_ty], [IntrNoMem]>; 445 def int_x86_sse2_packuswb_128 : ClangBuiltin<"__builtin_ia32_packuswb128">, 446 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8i16_ty, 447 llvm_v8i16_ty], [IntrNoMem]>; 448 def int_x86_sse2_movmsk_pd : ClangBuiltin<"__builtin_ia32_movmskpd">, 449 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 450 def int_x86_sse2_pmovmskb_128 : ClangBuiltin<"__builtin_ia32_pmovmskb128">, 451 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>; 452 def int_x86_sse2_maskmov_dqu : ClangBuiltin<"__builtin_ia32_maskmovdqu">, 453 Intrinsic<[], [llvm_v16i8_ty, 454 llvm_v16i8_ty, llvm_ptr_ty], []>; 455 def int_x86_sse2_clflush : ClangBuiltin<"__builtin_ia32_clflush">, 456 Intrinsic<[], [llvm_ptr_ty], []>; 457 def int_x86_sse2_lfence : ClangBuiltin<"__builtin_ia32_lfence">, 458 Intrinsic<[], [], []>; 459 def int_x86_sse2_mfence : ClangBuiltin<"__builtin_ia32_mfence">, 460 Intrinsic<[], [], []>; 461 def int_x86_sse2_pause : ClangBuiltin<"__builtin_ia32_pause">, 462 Intrinsic<[], [], []>; 463} 464 465//===----------------------------------------------------------------------===// 466// SSE3 467 468// Addition / subtraction ops. 469let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 470 def int_x86_sse3_addsub_ps : ClangBuiltin<"__builtin_ia32_addsubps">, 471 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 472 llvm_v4f32_ty], [IntrNoMem]>; 473 def int_x86_sse3_addsub_pd : ClangBuiltin<"__builtin_ia32_addsubpd">, 474 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 475 llvm_v2f64_ty], [IntrNoMem]>; 476} 477 478// Horizontal ops. 479let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 480 def int_x86_sse3_hadd_ps : ClangBuiltin<"__builtin_ia32_haddps">, 481 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 482 llvm_v4f32_ty], [IntrNoMem]>; 483 def int_x86_sse3_hadd_pd : ClangBuiltin<"__builtin_ia32_haddpd">, 484 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 485 llvm_v2f64_ty], [IntrNoMem]>; 486 def int_x86_sse3_hsub_ps : ClangBuiltin<"__builtin_ia32_hsubps">, 487 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 488 llvm_v4f32_ty], [IntrNoMem]>; 489 def int_x86_sse3_hsub_pd : ClangBuiltin<"__builtin_ia32_hsubpd">, 490 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 491 llvm_v2f64_ty], [IntrNoMem]>; 492} 493 494// Specialized unaligned load. 495let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 496 def int_x86_sse3_ldu_dq : ClangBuiltin<"__builtin_ia32_lddqu">, 497 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_ptr_ty], [IntrReadMem]>; 498} 499 500// Thread synchronization ops. 501let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 502 def int_x86_sse3_monitor : ClangBuiltin<"__builtin_ia32_monitor">, 503 Intrinsic<[], [llvm_ptr_ty, 504 llvm_i32_ty, llvm_i32_ty], []>; 505 def int_x86_sse3_mwait : ClangBuiltin<"__builtin_ia32_mwait">, 506 Intrinsic<[], [llvm_i32_ty, 507 llvm_i32_ty], []>; 508} 509 510//===----------------------------------------------------------------------===// 511// SSSE3 512 513// Horizontal arithmetic ops 514let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 515 def int_x86_ssse3_phadd_w : ClangBuiltin<"__builtin_ia32_phaddw">, 516 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 517 llvm_x86mmx_ty], [IntrNoMem]>; 518 def int_x86_ssse3_phadd_w_128 : ClangBuiltin<"__builtin_ia32_phaddw128">, 519 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 520 llvm_v8i16_ty], [IntrNoMem]>; 521 522 def int_x86_ssse3_phadd_d : ClangBuiltin<"__builtin_ia32_phaddd">, 523 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 524 llvm_x86mmx_ty], [IntrNoMem]>; 525 def int_x86_ssse3_phadd_d_128 : ClangBuiltin<"__builtin_ia32_phaddd128">, 526 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 527 llvm_v4i32_ty], [IntrNoMem]>; 528 529 def int_x86_ssse3_phadd_sw : ClangBuiltin<"__builtin_ia32_phaddsw">, 530 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 531 llvm_x86mmx_ty], [IntrNoMem]>; 532 def int_x86_ssse3_phadd_sw_128 : ClangBuiltin<"__builtin_ia32_phaddsw128">, 533 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 534 llvm_v8i16_ty], [IntrNoMem]>; 535 536 def int_x86_ssse3_phsub_w : ClangBuiltin<"__builtin_ia32_phsubw">, 537 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 538 llvm_x86mmx_ty], [IntrNoMem]>; 539 def int_x86_ssse3_phsub_w_128 : ClangBuiltin<"__builtin_ia32_phsubw128">, 540 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 541 llvm_v8i16_ty], [IntrNoMem]>; 542 543 def int_x86_ssse3_phsub_d : ClangBuiltin<"__builtin_ia32_phsubd">, 544 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 545 llvm_x86mmx_ty], [IntrNoMem]>; 546 def int_x86_ssse3_phsub_d_128 : ClangBuiltin<"__builtin_ia32_phsubd128">, 547 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 548 llvm_v4i32_ty], [IntrNoMem]>; 549 550 def int_x86_ssse3_phsub_sw : ClangBuiltin<"__builtin_ia32_phsubsw">, 551 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 552 llvm_x86mmx_ty], [IntrNoMem]>; 553 def int_x86_ssse3_phsub_sw_128 : ClangBuiltin<"__builtin_ia32_phsubsw128">, 554 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 555 llvm_v8i16_ty], [IntrNoMem]>; 556 557 def int_x86_ssse3_pmadd_ub_sw : ClangBuiltin<"__builtin_ia32_pmaddubsw">, 558 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 559 llvm_x86mmx_ty], [IntrNoMem]>; 560 def int_x86_ssse3_pmadd_ub_sw_128 : ClangBuiltin<"__builtin_ia32_pmaddubsw128">, 561 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, 562 llvm_v16i8_ty], [IntrNoMem]>; 563} 564 565// Packed multiply high with round and scale 566let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 567 def int_x86_ssse3_pmul_hr_sw : ClangBuiltin<"__builtin_ia32_pmulhrsw">, 568 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 569 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 570 def int_x86_ssse3_pmul_hr_sw_128 : ClangBuiltin<"__builtin_ia32_pmulhrsw128">, 571 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 572 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 573} 574 575// Shuffle ops 576let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 577 def int_x86_ssse3_pshuf_b : ClangBuiltin<"__builtin_ia32_pshufb">, 578 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 579 llvm_x86mmx_ty], [IntrNoMem]>; 580 def int_x86_ssse3_pshuf_b_128 : ClangBuiltin<"__builtin_ia32_pshufb128">, 581 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 582 llvm_v16i8_ty], [IntrNoMem]>; 583 def int_x86_sse_pshuf_w : ClangBuiltin<"__builtin_ia32_pshufw">, 584 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i8_ty], 585 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 586} 587 588// Sign ops 589let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 590 def int_x86_ssse3_psign_b : ClangBuiltin<"__builtin_ia32_psignb">, 591 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 592 llvm_x86mmx_ty], [IntrNoMem]>; 593 def int_x86_ssse3_psign_b_128 : ClangBuiltin<"__builtin_ia32_psignb128">, 594 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 595 llvm_v16i8_ty], [IntrNoMem]>; 596 597 def int_x86_ssse3_psign_w : ClangBuiltin<"__builtin_ia32_psignw">, 598 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 599 llvm_x86mmx_ty], [IntrNoMem]>; 600 def int_x86_ssse3_psign_w_128 : ClangBuiltin<"__builtin_ia32_psignw128">, 601 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 602 llvm_v8i16_ty], [IntrNoMem]>; 603 604 def int_x86_ssse3_psign_d : ClangBuiltin<"__builtin_ia32_psignd">, 605 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 606 llvm_x86mmx_ty], [IntrNoMem]>; 607 def int_x86_ssse3_psign_d_128 : ClangBuiltin<"__builtin_ia32_psignd128">, 608 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 609 llvm_v4i32_ty], [IntrNoMem]>; 610} 611 612// Absolute value ops 613let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 614 def int_x86_ssse3_pabs_b : ClangBuiltin<"__builtin_ia32_pabsb">, 615 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 616 617 def int_x86_ssse3_pabs_w : ClangBuiltin<"__builtin_ia32_pabsw">, 618 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 619 620 def int_x86_ssse3_pabs_d : ClangBuiltin<"__builtin_ia32_pabsd">, 621 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 622} 623 624//===----------------------------------------------------------------------===// 625// SSE4.1 626 627// FP rounding ops 628let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 629 def int_x86_sse41_round_ss : ClangBuiltin<"__builtin_ia32_roundss">, 630 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 631 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 632 def int_x86_sse41_round_ps : ClangBuiltin<"__builtin_ia32_roundps">, 633 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 634 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>; 635 def int_x86_sse41_round_sd : ClangBuiltin<"__builtin_ia32_roundsd">, 636 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 637 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 638 def int_x86_sse41_round_pd : ClangBuiltin<"__builtin_ia32_roundpd">, 639 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 640 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>; 641} 642 643// Vector min element 644let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 645 def int_x86_sse41_phminposuw : ClangBuiltin<"__builtin_ia32_phminposuw128">, 646 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], [IntrNoMem]>; 647} 648 649// Advanced Encryption Standard (AES) Instructions 650let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 651 def int_x86_aesni_aesimc : ClangBuiltin<"__builtin_ia32_aesimc128">, 652 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>; 653 654 def int_x86_aesni_aesenc : ClangBuiltin<"__builtin_ia32_aesenc128">, 655 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 656 [IntrNoMem]>; 657 def int_x86_aesni_aesenc_256 : ClangBuiltin<"__builtin_ia32_aesenc256">, 658 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 659 [IntrNoMem]>; 660 def int_x86_aesni_aesenc_512 : ClangBuiltin<"__builtin_ia32_aesenc512">, 661 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 662 [IntrNoMem]>; 663 664 def int_x86_aesni_aesenclast : ClangBuiltin<"__builtin_ia32_aesenclast128">, 665 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 666 [IntrNoMem]>; 667 def int_x86_aesni_aesenclast_256 : 668 ClangBuiltin<"__builtin_ia32_aesenclast256">, 669 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 670 [IntrNoMem]>; 671 def int_x86_aesni_aesenclast_512 : 672 ClangBuiltin<"__builtin_ia32_aesenclast512">, 673 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 674 [IntrNoMem]>; 675 676 def int_x86_aesni_aesdec : ClangBuiltin<"__builtin_ia32_aesdec128">, 677 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 678 [IntrNoMem]>; 679 def int_x86_aesni_aesdec_256 : ClangBuiltin<"__builtin_ia32_aesdec256">, 680 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 681 [IntrNoMem]>; 682 def int_x86_aesni_aesdec_512 : ClangBuiltin<"__builtin_ia32_aesdec512">, 683 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 684 [IntrNoMem]>; 685 686 def int_x86_aesni_aesdeclast : ClangBuiltin<"__builtin_ia32_aesdeclast128">, 687 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 688 [IntrNoMem]>; 689 def int_x86_aesni_aesdeclast_256 : 690 ClangBuiltin<"__builtin_ia32_aesdeclast256">, 691 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 692 [IntrNoMem]>; 693 def int_x86_aesni_aesdeclast_512 : 694 ClangBuiltin<"__builtin_ia32_aesdeclast512">, 695 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 696 [IntrNoMem]>; 697 698 def int_x86_aesni_aeskeygenassist : 699 ClangBuiltin<"__builtin_ia32_aeskeygenassist128">, 700 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i8_ty], 701 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 702} 703 704// PCLMUL instructions 705let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 706 def int_x86_pclmulqdq : ClangBuiltin<"__builtin_ia32_pclmulqdq128">, 707 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 708 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 709 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 710 def int_x86_pclmulqdq_256 : ClangBuiltin<"__builtin_ia32_pclmulqdq256">, 711 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 712 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 713 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 714 def int_x86_pclmulqdq_512 : ClangBuiltin<"__builtin_ia32_pclmulqdq512">, 715 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 716 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 717 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 718} 719 720// Vector pack 721let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 722 def int_x86_sse41_packusdw : ClangBuiltin<"__builtin_ia32_packusdw128">, 723 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 724 [IntrNoMem]>; 725} 726 727// Vector insert 728let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 729 def int_x86_sse41_insertps : ClangBuiltin<"__builtin_ia32_insertps128">, 730 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 731 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 732 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 733} 734 735// Vector blend 736let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 737 def int_x86_sse41_pblendvb : ClangBuiltin<"__builtin_ia32_pblendvb128">, 738 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 739 [llvm_v16i8_ty, llvm_v16i8_ty,llvm_v16i8_ty], 740 [IntrNoMem]>; 741 def int_x86_sse41_blendvpd : ClangBuiltin<"__builtin_ia32_blendvpd">, 742 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 743 [llvm_v2f64_ty, llvm_v2f64_ty,llvm_v2f64_ty], 744 [IntrNoMem]>; 745 def int_x86_sse41_blendvps : ClangBuiltin<"__builtin_ia32_blendvps">, 746 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 747 [llvm_v4f32_ty, llvm_v4f32_ty,llvm_v4f32_ty], 748 [IntrNoMem]>; 749} 750 751// Vector dot product 752let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 753 def int_x86_sse41_dppd : ClangBuiltin<"__builtin_ia32_dppd">, 754 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 755 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 756 [IntrNoMem, Commutative, ImmArg<ArgIndex<2>>]>; 757 def int_x86_sse41_dpps : ClangBuiltin<"__builtin_ia32_dpps">, 758 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 759 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 760 [IntrNoMem, Commutative, ImmArg<ArgIndex<2>>]>; 761} 762 763// Vector sum of absolute differences 764let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 765 def int_x86_sse41_mpsadbw : ClangBuiltin<"__builtin_ia32_mpsadbw128">, 766 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 767 [llvm_v16i8_ty, llvm_v16i8_ty,llvm_i8_ty], 768 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 769} 770 771// Test instruction with bitwise comparison. 772let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 773 def int_x86_sse41_ptestz : ClangBuiltin<"__builtin_ia32_ptestz128">, 774 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 775 [IntrNoMem]>; 776 def int_x86_sse41_ptestc : ClangBuiltin<"__builtin_ia32_ptestc128">, 777 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 778 [IntrNoMem]>; 779 def int_x86_sse41_ptestnzc : ClangBuiltin<"__builtin_ia32_ptestnzc128">, 780 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 781 [IntrNoMem]>; 782} 783 784//===----------------------------------------------------------------------===// 785// SSE4.2 786 787// Miscellaneous 788// CRC Instruction 789let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 790 def int_x86_sse42_crc32_32_8 : ClangBuiltin<"__builtin_ia32_crc32qi">, 791 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i8_ty], 792 [IntrNoMem]>; 793 def int_x86_sse42_crc32_32_16 : ClangBuiltin<"__builtin_ia32_crc32hi">, 794 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i16_ty], 795 [IntrNoMem]>; 796 def int_x86_sse42_crc32_32_32 : ClangBuiltin<"__builtin_ia32_crc32si">, 797 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 798 [IntrNoMem]>; 799 def int_x86_sse42_crc32_64_64 : ClangBuiltin<"__builtin_ia32_crc32di">, 800 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], 801 [IntrNoMem]>; 802} 803 804// String/text processing ops. 805let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 806 def int_x86_sse42_pcmpistrm128 : ClangBuiltin<"__builtin_ia32_pcmpistrm128">, 807 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 808 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 809 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 810 def int_x86_sse42_pcmpistri128 : ClangBuiltin<"__builtin_ia32_pcmpistri128">, 811 DefaultAttrsIntrinsic<[llvm_i32_ty], 812 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 813 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 814 def int_x86_sse42_pcmpistria128 : ClangBuiltin<"__builtin_ia32_pcmpistria128">, 815 DefaultAttrsIntrinsic<[llvm_i32_ty], 816 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 817 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 818 def int_x86_sse42_pcmpistric128 : ClangBuiltin<"__builtin_ia32_pcmpistric128">, 819 DefaultAttrsIntrinsic<[llvm_i32_ty], 820 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 821 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 822 def int_x86_sse42_pcmpistrio128 : ClangBuiltin<"__builtin_ia32_pcmpistrio128">, 823 DefaultAttrsIntrinsic<[llvm_i32_ty], 824 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 825 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 826 def int_x86_sse42_pcmpistris128 : ClangBuiltin<"__builtin_ia32_pcmpistris128">, 827 DefaultAttrsIntrinsic<[llvm_i32_ty], 828 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 829 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 830 def int_x86_sse42_pcmpistriz128 : ClangBuiltin<"__builtin_ia32_pcmpistriz128">, 831 DefaultAttrsIntrinsic<[llvm_i32_ty], 832 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 833 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 834 def int_x86_sse42_pcmpestrm128 : ClangBuiltin<"__builtin_ia32_pcmpestrm128">, 835 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 836 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 837 llvm_i8_ty], 838 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 839 def int_x86_sse42_pcmpestri128 : ClangBuiltin<"__builtin_ia32_pcmpestri128">, 840 DefaultAttrsIntrinsic<[llvm_i32_ty], 841 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 842 llvm_i8_ty], 843 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 844 def int_x86_sse42_pcmpestria128 : ClangBuiltin<"__builtin_ia32_pcmpestria128">, 845 DefaultAttrsIntrinsic<[llvm_i32_ty], 846 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 847 llvm_i8_ty], 848 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 849 def int_x86_sse42_pcmpestric128 : ClangBuiltin<"__builtin_ia32_pcmpestric128">, 850 DefaultAttrsIntrinsic<[llvm_i32_ty], 851 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 852 llvm_i8_ty], 853 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 854 def int_x86_sse42_pcmpestrio128 : ClangBuiltin<"__builtin_ia32_pcmpestrio128">, 855 DefaultAttrsIntrinsic<[llvm_i32_ty], 856 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 857 llvm_i8_ty], 858 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 859 def int_x86_sse42_pcmpestris128 : ClangBuiltin<"__builtin_ia32_pcmpestris128">, 860 DefaultAttrsIntrinsic<[llvm_i32_ty], 861 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 862 llvm_i8_ty], 863 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 864 def int_x86_sse42_pcmpestriz128 : ClangBuiltin<"__builtin_ia32_pcmpestriz128">, 865 DefaultAttrsIntrinsic<[llvm_i32_ty], 866 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 867 llvm_i8_ty], 868 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 869} 870 871//===----------------------------------------------------------------------===// 872// SSE4A 873 874let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 875 def int_x86_sse4a_extrqi : ClangBuiltin<"__builtin_ia32_extrqi">, 876 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 877 [llvm_v2i64_ty, llvm_i8_ty, llvm_i8_ty], 878 [IntrNoMem, ImmArg<ArgIndex<1>>, 879 ImmArg<ArgIndex<2>>]>; 880 def int_x86_sse4a_extrq : ClangBuiltin<"__builtin_ia32_extrq">, 881 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v16i8_ty], 882 [IntrNoMem]>; 883 884 def int_x86_sse4a_insertqi : ClangBuiltin<"__builtin_ia32_insertqi">, 885 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 886 llvm_i8_ty, llvm_i8_ty], 887 [IntrNoMem, ImmArg<ArgIndex<2>>, 888 ImmArg<ArgIndex<3>>]>; 889 def int_x86_sse4a_insertq : ClangBuiltin<"__builtin_ia32_insertq">, 890 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 891 [IntrNoMem]>; 892} 893 894//===----------------------------------------------------------------------===// 895// AVX 896 897// Arithmetic ops 898let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 899 def int_x86_avx_addsub_pd_256 : ClangBuiltin<"__builtin_ia32_addsubpd256">, 900 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty], 901 [IntrNoMem]>; 902 def int_x86_avx_addsub_ps_256 : ClangBuiltin<"__builtin_ia32_addsubps256">, 903 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty], 904 [IntrNoMem]>; 905 def int_x86_avx_max_pd_256 : ClangBuiltin<"__builtin_ia32_maxpd256">, 906 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty], 907 [IntrNoMem]>; 908 def int_x86_avx_max_ps_256 : ClangBuiltin<"__builtin_ia32_maxps256">, 909 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty], 910 [IntrNoMem]>; 911 def int_x86_avx_min_pd_256 : ClangBuiltin<"__builtin_ia32_minpd256">, 912 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty], 913 [IntrNoMem]>; 914 def int_x86_avx_min_ps_256 : ClangBuiltin<"__builtin_ia32_minps256">, 915 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty], 916 [IntrNoMem]>; 917 918 def int_x86_avx_rsqrt_ps_256 : ClangBuiltin<"__builtin_ia32_rsqrtps256">, 919 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 920 921 def int_x86_avx_rcp_ps_256 : ClangBuiltin<"__builtin_ia32_rcpps256">, 922 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 923 924 def int_x86_avx_round_pd_256 : ClangBuiltin<"__builtin_ia32_roundpd256">, 925 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_i32_ty], 926 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 927 def int_x86_avx_round_ps_256 : ClangBuiltin<"__builtin_ia32_roundps256">, 928 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_i32_ty], 929 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 930} 931 932// Horizontal ops 933let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 934 def int_x86_avx_hadd_pd_256 : ClangBuiltin<"__builtin_ia32_haddpd256">, 935 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty], 936 [IntrNoMem]>; 937 def int_x86_avx_hsub_ps_256 : ClangBuiltin<"__builtin_ia32_hsubps256">, 938 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty], 939 [IntrNoMem]>; 940 def int_x86_avx_hsub_pd_256 : ClangBuiltin<"__builtin_ia32_hsubpd256">, 941 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty], 942 [IntrNoMem]>; 943 def int_x86_avx_hadd_ps_256 : ClangBuiltin<"__builtin_ia32_haddps256">, 944 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty], 945 [IntrNoMem]>; 946} 947 948// Vector permutation 949let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 950 def int_x86_avx_vpermilvar_pd : ClangBuiltin<"__builtin_ia32_vpermilvarpd">, 951 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2i64_ty], 952 [IntrNoMem]>; 953 def int_x86_avx_vpermilvar_ps : ClangBuiltin<"__builtin_ia32_vpermilvarps">, 954 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4i32_ty], 955 [IntrNoMem]>; 956 957 def int_x86_avx_vpermilvar_pd_256 : 958 ClangBuiltin<"__builtin_ia32_vpermilvarpd256">, 959 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4i64_ty], 960 [IntrNoMem]>; 961 def int_x86_avx_vpermilvar_ps_256 : 962 ClangBuiltin<"__builtin_ia32_vpermilvarps256">, 963 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8i32_ty], 964 [IntrNoMem]>; 965 966 def int_x86_avx512_vpermi2var_d_128 : 967 ClangBuiltin<"__builtin_ia32_vpermi2vard128">, 968 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 969 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 970 [IntrNoMem]>; 971 972 def int_x86_avx512_vpermi2var_d_256 : 973 ClangBuiltin<"__builtin_ia32_vpermi2vard256">, 974 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 975 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 976 [IntrNoMem]>; 977 978 def int_x86_avx512_vpermi2var_d_512 : 979 ClangBuiltin<"__builtin_ia32_vpermi2vard512">, 980 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 981 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 982 [IntrNoMem]>; 983 984 def int_x86_avx512_vpermi2var_hi_128 : 985 ClangBuiltin<"__builtin_ia32_vpermi2varhi128">, 986 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 987 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], 988 [IntrNoMem]>; 989 990 def int_x86_avx512_vpermi2var_hi_256 : 991 ClangBuiltin<"__builtin_ia32_vpermi2varhi256">, 992 DefaultAttrsIntrinsic<[llvm_v16i16_ty], 993 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v16i16_ty], 994 [IntrNoMem]>; 995 996 def int_x86_avx512_vpermi2var_hi_512 : 997 ClangBuiltin<"__builtin_ia32_vpermi2varhi512">, 998 DefaultAttrsIntrinsic<[llvm_v32i16_ty], 999 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v32i16_ty], 1000 [IntrNoMem]>; 1001 1002 def int_x86_avx512_vpermi2var_pd_128 : 1003 ClangBuiltin<"__builtin_ia32_vpermi2varpd128">, 1004 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 1005 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_v2f64_ty], 1006 [IntrNoMem]>; 1007 1008 def int_x86_avx512_vpermi2var_pd_256 : 1009 ClangBuiltin<"__builtin_ia32_vpermi2varpd256">, 1010 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 1011 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_v4f64_ty], 1012 [IntrNoMem]>; 1013 1014 def int_x86_avx512_vpermi2var_pd_512 : 1015 ClangBuiltin<"__builtin_ia32_vpermi2varpd512">, 1016 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 1017 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_v8f64_ty], 1018 [IntrNoMem]>; 1019 1020 def int_x86_avx512_vpermi2var_ps_128 : 1021 ClangBuiltin<"__builtin_ia32_vpermi2varps128">, 1022 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 1023 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_v4f32_ty], 1024 [IntrNoMem]>; 1025 1026 def int_x86_avx512_vpermi2var_ps_256 : 1027 ClangBuiltin<"__builtin_ia32_vpermi2varps256">, 1028 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 1029 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_v8f32_ty], 1030 [IntrNoMem]>; 1031 1032 def int_x86_avx512_vpermi2var_ps_512 : 1033 ClangBuiltin<"__builtin_ia32_vpermi2varps512">, 1034 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 1035 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_v16f32_ty], 1036 [IntrNoMem]>; 1037 1038 def int_x86_avx512_vpermi2var_q_128 : 1039 ClangBuiltin<"__builtin_ia32_vpermi2varq128">, 1040 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 1041 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 1042 [IntrNoMem]>; 1043 1044 def int_x86_avx512_vpermi2var_q_256 : 1045 ClangBuiltin<"__builtin_ia32_vpermi2varq256">, 1046 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 1047 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty], 1048 [IntrNoMem]>; 1049 1050 def int_x86_avx512_vpermi2var_q_512 : 1051 ClangBuiltin<"__builtin_ia32_vpermi2varq512">, 1052 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 1053 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty], 1054 [IntrNoMem]>; 1055 1056 def int_x86_avx512_vpermi2var_qi_128 : 1057 ClangBuiltin<"__builtin_ia32_vpermi2varqi128">, 1058 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 1059 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty], 1060 [IntrNoMem]>; 1061 1062 def int_x86_avx512_vpermi2var_qi_256 : 1063 ClangBuiltin<"__builtin_ia32_vpermi2varqi256">, 1064 DefaultAttrsIntrinsic<[llvm_v32i8_ty], 1065 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_v32i8_ty], 1066 [IntrNoMem]>; 1067 1068 def int_x86_avx512_vpermi2var_qi_512 : 1069 ClangBuiltin<"__builtin_ia32_vpermi2varqi512">, 1070 DefaultAttrsIntrinsic<[llvm_v64i8_ty], 1071 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_v64i8_ty], 1072 [IntrNoMem]>; 1073 1074 def int_x86_avx512_vpermilvar_pd_512 : 1075 ClangBuiltin<"__builtin_ia32_vpermilvarpd512">, 1076 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8i64_ty], 1077 [IntrNoMem]>; 1078 1079 def int_x86_avx512_vpermilvar_ps_512 : 1080 ClangBuiltin<"__builtin_ia32_vpermilvarps512">, 1081 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 1082 [llvm_v16f32_ty, llvm_v16i32_ty], [IntrNoMem]>; 1083 1084 def int_x86_avx512_pshuf_b_512 : 1085 ClangBuiltin<"__builtin_ia32_pshufb512">, 1086 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 1087 [IntrNoMem]>; 1088 1089} 1090 1091// GFNI Instructions 1092let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1093 def int_x86_vgf2p8affineinvqb_128 : 1094 ClangBuiltin<"__builtin_ia32_vgf2p8affineinvqb_v16qi">, 1095 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 1096 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 1097 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 1098 def int_x86_vgf2p8affineinvqb_256 : 1099 ClangBuiltin<"__builtin_ia32_vgf2p8affineinvqb_v32qi">, 1100 DefaultAttrsIntrinsic<[llvm_v32i8_ty], 1101 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i8_ty], 1102 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 1103 def int_x86_vgf2p8affineinvqb_512 : 1104 ClangBuiltin<"__builtin_ia32_vgf2p8affineinvqb_v64qi">, 1105 DefaultAttrsIntrinsic<[llvm_v64i8_ty], 1106 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i8_ty], 1107 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 1108 1109 def int_x86_vgf2p8affineqb_128 : 1110 ClangBuiltin<"__builtin_ia32_vgf2p8affineqb_v16qi">, 1111 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 1112 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 1113 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 1114 def int_x86_vgf2p8affineqb_256 : 1115 ClangBuiltin<"__builtin_ia32_vgf2p8affineqb_v32qi">, 1116 DefaultAttrsIntrinsic<[llvm_v32i8_ty], 1117 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i8_ty], 1118 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 1119 def int_x86_vgf2p8affineqb_512 : 1120 ClangBuiltin<"__builtin_ia32_vgf2p8affineqb_v64qi">, 1121 DefaultAttrsIntrinsic<[llvm_v64i8_ty], 1122 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i8_ty], 1123 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 1124 1125 def int_x86_vgf2p8mulb_128 : 1126 ClangBuiltin<"__builtin_ia32_vgf2p8mulb_v16qi">, 1127 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 1128 [IntrNoMem]>; 1129 def int_x86_vgf2p8mulb_256 : 1130 ClangBuiltin<"__builtin_ia32_vgf2p8mulb_v32qi">, 1131 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty], 1132 [IntrNoMem]>; 1133 def int_x86_vgf2p8mulb_512 : 1134 ClangBuiltin<"__builtin_ia32_vgf2p8mulb_v64qi">, 1135 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 1136 [IntrNoMem]>; 1137} 1138 1139// Vector blend 1140let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1141 def int_x86_avx_blendv_pd_256 : ClangBuiltin<"__builtin_ia32_blendvpd256">, 1142 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 1143 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 1144 [IntrNoMem]>; 1145 def int_x86_avx_blendv_ps_256 : ClangBuiltin<"__builtin_ia32_blendvps256">, 1146 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 1147 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 1148 [IntrNoMem]>; 1149} 1150 1151// Vector dot product 1152let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1153 def int_x86_avx_dp_ps_256 : ClangBuiltin<"__builtin_ia32_dpps256">, 1154 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 1155 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 1156 [IntrNoMem, Commutative, ImmArg<ArgIndex<2>>]>; 1157} 1158 1159// Vector compare 1160let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1161 def int_x86_avx_cmp_pd_256 : 1162 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 1163 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 1164 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 1165 def int_x86_avx_cmp_ps_256 : 1166 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 1167 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 1168 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 1169} 1170 1171// Vector convert 1172let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1173 def int_x86_avx_cvt_pd2_ps_256 : ClangBuiltin<"__builtin_ia32_cvtpd2ps256">, 1174 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1175 def int_x86_avx_cvt_ps2dq_256 : ClangBuiltin<"__builtin_ia32_cvtps2dq256">, 1176 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1177 def int_x86_avx_cvtt_pd2dq_256 : ClangBuiltin<"__builtin_ia32_cvttpd2dq256">, 1178 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1179 def int_x86_avx_cvt_pd2dq_256 : ClangBuiltin<"__builtin_ia32_cvtpd2dq256">, 1180 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1181 def int_x86_avx_cvtt_ps2dq_256 : ClangBuiltin<"__builtin_ia32_cvttps2dq256">, 1182 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1183} 1184 1185// Vector bit test 1186let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1187 def int_x86_avx_vtestz_pd : ClangBuiltin<"__builtin_ia32_vtestzpd">, 1188 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], 1189 [IntrNoMem]>; 1190 def int_x86_avx_vtestc_pd : ClangBuiltin<"__builtin_ia32_vtestcpd">, 1191 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], 1192 [IntrNoMem]>; 1193 def int_x86_avx_vtestnzc_pd : ClangBuiltin<"__builtin_ia32_vtestnzcpd">, 1194 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], 1195 [IntrNoMem]>; 1196 def int_x86_avx_vtestz_ps : ClangBuiltin<"__builtin_ia32_vtestzps">, 1197 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], 1198 [IntrNoMem]>; 1199 def int_x86_avx_vtestc_ps : ClangBuiltin<"__builtin_ia32_vtestcps">, 1200 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], 1201 [IntrNoMem]>; 1202 def int_x86_avx_vtestnzc_ps : ClangBuiltin<"__builtin_ia32_vtestnzcps">, 1203 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], 1204 [IntrNoMem]>; 1205 def int_x86_avx_vtestz_pd_256 : ClangBuiltin<"__builtin_ia32_vtestzpd256">, 1206 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f64_ty, llvm_v4f64_ty], 1207 [IntrNoMem]>; 1208 def int_x86_avx_vtestc_pd_256 : ClangBuiltin<"__builtin_ia32_vtestcpd256">, 1209 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f64_ty, llvm_v4f64_ty], 1210 [IntrNoMem]>; 1211 def int_x86_avx_vtestnzc_pd_256 : ClangBuiltin<"__builtin_ia32_vtestnzcpd256">, 1212 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f64_ty, llvm_v4f64_ty], 1213 [IntrNoMem]>; 1214 def int_x86_avx_vtestz_ps_256 : ClangBuiltin<"__builtin_ia32_vtestzps256">, 1215 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8f32_ty, llvm_v8f32_ty], 1216 [IntrNoMem]>; 1217 def int_x86_avx_vtestc_ps_256 : ClangBuiltin<"__builtin_ia32_vtestcps256">, 1218 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8f32_ty, llvm_v8f32_ty], 1219 [IntrNoMem]>; 1220 def int_x86_avx_vtestnzc_ps_256 : ClangBuiltin<"__builtin_ia32_vtestnzcps256">, 1221 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8f32_ty, llvm_v8f32_ty], 1222 [IntrNoMem]>; 1223 def int_x86_avx_ptestz_256 : ClangBuiltin<"__builtin_ia32_ptestz256">, 1224 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 1225 [IntrNoMem]>; 1226 def int_x86_avx_ptestc_256 : ClangBuiltin<"__builtin_ia32_ptestc256">, 1227 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 1228 [IntrNoMem]>; 1229 def int_x86_avx_ptestnzc_256 : ClangBuiltin<"__builtin_ia32_ptestnzc256">, 1230 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 1231 [IntrNoMem]>; 1232 1233 def int_x86_avx512_fpclass_pd_128 : 1234 DefaultAttrsIntrinsic<[llvm_v2i1_ty], [llvm_v2f64_ty, llvm_i32_ty], 1235 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 1236 def int_x86_avx512_fpclass_pd_256 : 1237 DefaultAttrsIntrinsic<[llvm_v4i1_ty], [llvm_v4f64_ty, llvm_i32_ty], 1238 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 1239 def int_x86_avx512_fpclass_pd_512 : 1240 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8f64_ty, llvm_i32_ty], 1241 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 1242 def int_x86_avx512_fpclass_ps_128 : 1243 DefaultAttrsIntrinsic<[llvm_v4i1_ty], [llvm_v4f32_ty, llvm_i32_ty], 1244 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 1245 def int_x86_avx512_fpclass_ps_256 : 1246 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8f32_ty, llvm_i32_ty], 1247 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 1248 def int_x86_avx512_fpclass_ps_512 : 1249 DefaultAttrsIntrinsic<[llvm_v16i1_ty], [llvm_v16f32_ty, llvm_i32_ty], 1250 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 1251 def int_x86_avx512_mask_fpclass_sd : 1252 ClangBuiltin<"__builtin_ia32_fpclasssd_mask">, 1253 DefaultAttrsIntrinsic<[llvm_i8_ty], 1254 [llvm_v2f64_ty, llvm_i32_ty, llvm_i8_ty], 1255 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 1256 def int_x86_avx512_mask_fpclass_ss : 1257 ClangBuiltin<"__builtin_ia32_fpclassss_mask">, 1258 DefaultAttrsIntrinsic<[llvm_i8_ty], 1259 [llvm_v4f32_ty, llvm_i32_ty, llvm_i8_ty], 1260 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 1261} 1262 1263// Vector extract sign mask 1264let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1265 def int_x86_avx_movmsk_pd_256 : ClangBuiltin<"__builtin_ia32_movmskpd256">, 1266 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1267 def int_x86_avx_movmsk_ps_256 : ClangBuiltin<"__builtin_ia32_movmskps256">, 1268 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1269} 1270 1271// Vector zero 1272let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1273 def int_x86_avx_vzeroall : ClangBuiltin<"__builtin_ia32_vzeroall">, 1274 Intrinsic<[], [], [IntrNoMem, IntrHasSideEffects]>; 1275 def int_x86_avx_vzeroupper : ClangBuiltin<"__builtin_ia32_vzeroupper">, 1276 Intrinsic<[], [], [IntrNoMem, IntrHasSideEffects]>; 1277} 1278 1279// SIMD load ops 1280let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1281 def int_x86_avx_ldu_dq_256 : ClangBuiltin<"__builtin_ia32_lddqu256">, 1282 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_ptr_ty], [IntrReadMem]>; 1283} 1284 1285// Conditional load ops 1286let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1287 def int_x86_avx_maskload_pd : ClangBuiltin<"__builtin_ia32_maskloadpd">, 1288 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_ptr_ty, llvm_v2i64_ty], 1289 [IntrReadMem, IntrArgMemOnly]>; 1290 def int_x86_avx_maskload_ps : ClangBuiltin<"__builtin_ia32_maskloadps">, 1291 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty, llvm_v4i32_ty], 1292 [IntrReadMem, IntrArgMemOnly]>; 1293 def int_x86_avx_maskload_pd_256 : ClangBuiltin<"__builtin_ia32_maskloadpd256">, 1294 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_ptr_ty, llvm_v4i64_ty], 1295 [IntrReadMem, IntrArgMemOnly]>; 1296 def int_x86_avx_maskload_ps_256 : ClangBuiltin<"__builtin_ia32_maskloadps256">, 1297 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty, llvm_v8i32_ty], 1298 [IntrReadMem, IntrArgMemOnly]>; 1299} 1300 1301// Conditional store ops 1302let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1303 def int_x86_avx_maskstore_pd : ClangBuiltin<"__builtin_ia32_maskstorepd">, 1304 Intrinsic<[], [llvm_ptr_ty, 1305 llvm_v2i64_ty, llvm_v2f64_ty], [IntrArgMemOnly]>; 1306 def int_x86_avx_maskstore_ps : ClangBuiltin<"__builtin_ia32_maskstoreps">, 1307 Intrinsic<[], [llvm_ptr_ty, 1308 llvm_v4i32_ty, llvm_v4f32_ty], [IntrArgMemOnly]>; 1309 def int_x86_avx_maskstore_pd_256 : 1310 ClangBuiltin<"__builtin_ia32_maskstorepd256">, 1311 Intrinsic<[], [llvm_ptr_ty, 1312 llvm_v4i64_ty, llvm_v4f64_ty], [IntrArgMemOnly]>; 1313 def int_x86_avx_maskstore_ps_256 : 1314 ClangBuiltin<"__builtin_ia32_maskstoreps256">, 1315 Intrinsic<[], [llvm_ptr_ty, 1316 llvm_v8i32_ty, llvm_v8f32_ty], [IntrArgMemOnly]>; 1317} 1318 1319// BITALG bits shuffle 1320let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1321 def int_x86_avx512_vpshufbitqmb_128 : 1322 DefaultAttrsIntrinsic<[llvm_v16i1_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 1323 [IntrNoMem]>; 1324 def int_x86_avx512_vpshufbitqmb_256 : 1325 DefaultAttrsIntrinsic<[llvm_v32i1_ty], [llvm_v32i8_ty, llvm_v32i8_ty], 1326 [IntrNoMem]>; 1327 def int_x86_avx512_vpshufbitqmb_512 : 1328 DefaultAttrsIntrinsic<[llvm_v64i1_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 1329 [IntrNoMem]>; 1330} 1331 1332//===----------------------------------------------------------------------===// 1333// AVX2 1334 1335// Integer arithmetic ops. 1336let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1337 def int_x86_avx2_pmulhu_w : ClangBuiltin<"__builtin_ia32_pmulhuw256">, 1338 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1339 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1340 def int_x86_avx2_pmulh_w : ClangBuiltin<"__builtin_ia32_pmulhw256">, 1341 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1342 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1343 def int_x86_avx2_pmadd_wd : ClangBuiltin<"__builtin_ia32_pmaddwd256">, 1344 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v16i16_ty, 1345 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1346 def int_x86_avx2_pavg_b : ClangBuiltin<"__builtin_ia32_pavgb256">, 1347 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1348 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1349 def int_x86_avx2_pavg_w : ClangBuiltin<"__builtin_ia32_pavgw256">, 1350 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1351 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1352 def int_x86_avx2_psad_bw : ClangBuiltin<"__builtin_ia32_psadbw256">, 1353 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v32i8_ty, 1354 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1355} 1356 1357// Integer shift ops. 1358let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1359 def int_x86_avx2_psll_w : ClangBuiltin<"__builtin_ia32_psllw256">, 1360 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1361 llvm_v8i16_ty], [IntrNoMem]>; 1362 def int_x86_avx2_psll_d : ClangBuiltin<"__builtin_ia32_pslld256">, 1363 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1364 llvm_v4i32_ty], [IntrNoMem]>; 1365 def int_x86_avx2_psll_q : ClangBuiltin<"__builtin_ia32_psllq256">, 1366 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1367 llvm_v2i64_ty], [IntrNoMem]>; 1368 def int_x86_avx2_psrl_w : ClangBuiltin<"__builtin_ia32_psrlw256">, 1369 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1370 llvm_v8i16_ty], [IntrNoMem]>; 1371 def int_x86_avx2_psrl_d : ClangBuiltin<"__builtin_ia32_psrld256">, 1372 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1373 llvm_v4i32_ty], [IntrNoMem]>; 1374 def int_x86_avx2_psrl_q : ClangBuiltin<"__builtin_ia32_psrlq256">, 1375 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1376 llvm_v2i64_ty], [IntrNoMem]>; 1377 def int_x86_avx2_psra_w : ClangBuiltin<"__builtin_ia32_psraw256">, 1378 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1379 llvm_v8i16_ty], [IntrNoMem]>; 1380 def int_x86_avx2_psra_d : ClangBuiltin<"__builtin_ia32_psrad256">, 1381 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1382 llvm_v4i32_ty], [IntrNoMem]>; 1383 1384 // Oddly these don't require an immediate due to a gcc compatibility issue. 1385 def int_x86_avx2_pslli_w : ClangBuiltin<"__builtin_ia32_psllwi256">, 1386 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1387 llvm_i32_ty], [IntrNoMem]>; 1388 def int_x86_avx2_pslli_d : ClangBuiltin<"__builtin_ia32_pslldi256">, 1389 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1390 llvm_i32_ty], [IntrNoMem]>; 1391 def int_x86_avx2_pslli_q : ClangBuiltin<"__builtin_ia32_psllqi256">, 1392 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1393 llvm_i32_ty], [IntrNoMem]>; 1394 def int_x86_avx2_psrli_w : ClangBuiltin<"__builtin_ia32_psrlwi256">, 1395 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1396 llvm_i32_ty], [IntrNoMem]>; 1397 def int_x86_avx2_psrli_d : ClangBuiltin<"__builtin_ia32_psrldi256">, 1398 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1399 llvm_i32_ty], [IntrNoMem]>; 1400 def int_x86_avx2_psrli_q : ClangBuiltin<"__builtin_ia32_psrlqi256">, 1401 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1402 llvm_i32_ty], [IntrNoMem]>; 1403 def int_x86_avx2_psrai_w : ClangBuiltin<"__builtin_ia32_psrawi256">, 1404 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1405 llvm_i32_ty], [IntrNoMem]>; 1406 def int_x86_avx2_psrai_d : ClangBuiltin<"__builtin_ia32_psradi256">, 1407 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1408 llvm_i32_ty], [IntrNoMem]>; 1409 1410 def int_x86_avx512_psra_q_128 : ClangBuiltin<"__builtin_ia32_psraq128">, 1411 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 1412 llvm_v2i64_ty], [IntrNoMem]>; 1413 def int_x86_avx512_psra_q_256 : ClangBuiltin<"__builtin_ia32_psraq256">, 1414 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1415 llvm_v2i64_ty], [IntrNoMem]>; 1416 1417 // Oddly these don't require an immediate due to a gcc compatibility issue. 1418 def int_x86_avx512_psrai_q_128 : ClangBuiltin<"__builtin_ia32_psraqi128">, 1419 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 1420 llvm_i32_ty], [IntrNoMem]>; 1421 def int_x86_avx512_psrai_q_256 : ClangBuiltin<"__builtin_ia32_psraqi256">, 1422 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1423 llvm_i32_ty], [IntrNoMem]>; 1424 1425 def int_x86_avx512_psll_w_512 : ClangBuiltin<"__builtin_ia32_psllw512">, 1426 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1427 llvm_v8i16_ty], [IntrNoMem]>; 1428 def int_x86_avx512_psll_d_512 : ClangBuiltin<"__builtin_ia32_pslld512">, 1429 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1430 llvm_v4i32_ty], [IntrNoMem]>; 1431 def int_x86_avx512_psll_q_512 : ClangBuiltin<"__builtin_ia32_psllq512">, 1432 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1433 llvm_v2i64_ty], [IntrNoMem]>; 1434 def int_x86_avx512_psrl_w_512 : ClangBuiltin<"__builtin_ia32_psrlw512">, 1435 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1436 llvm_v8i16_ty], [IntrNoMem]>; 1437 def int_x86_avx512_psrl_d_512 : ClangBuiltin<"__builtin_ia32_psrld512">, 1438 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1439 llvm_v4i32_ty], [IntrNoMem]>; 1440 def int_x86_avx512_psrl_q_512 : ClangBuiltin<"__builtin_ia32_psrlq512">, 1441 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1442 llvm_v2i64_ty], [IntrNoMem]>; 1443 def int_x86_avx512_psra_w_512 : ClangBuiltin<"__builtin_ia32_psraw512">, 1444 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1445 llvm_v8i16_ty], [IntrNoMem]>; 1446 def int_x86_avx512_psra_d_512 : ClangBuiltin<"__builtin_ia32_psrad512">, 1447 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1448 llvm_v4i32_ty], [IntrNoMem]>; 1449 def int_x86_avx512_psra_q_512 : ClangBuiltin<"__builtin_ia32_psraq512">, 1450 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1451 llvm_v2i64_ty], [IntrNoMem]>; 1452 1453 // Oddly these don't require an immediate due to a gcc compatibility issue. 1454 def int_x86_avx512_pslli_w_512 : ClangBuiltin<"__builtin_ia32_psllwi512">, 1455 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1456 llvm_i32_ty], [IntrNoMem]>; 1457 def int_x86_avx512_pslli_d_512 : ClangBuiltin<"__builtin_ia32_pslldi512">, 1458 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1459 llvm_i32_ty], [IntrNoMem]>; 1460 def int_x86_avx512_pslli_q_512 : ClangBuiltin<"__builtin_ia32_psllqi512">, 1461 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1462 llvm_i32_ty], [IntrNoMem]>; 1463 def int_x86_avx512_psrli_w_512 : ClangBuiltin<"__builtin_ia32_psrlwi512">, 1464 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1465 llvm_i32_ty], [IntrNoMem]>; 1466 def int_x86_avx512_psrli_d_512 : ClangBuiltin<"__builtin_ia32_psrldi512">, 1467 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1468 llvm_i32_ty], [IntrNoMem]>; 1469 def int_x86_avx512_psrli_q_512 : ClangBuiltin<"__builtin_ia32_psrlqi512">, 1470 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1471 llvm_i32_ty], [IntrNoMem]>; 1472 def int_x86_avx512_psrai_w_512 : ClangBuiltin<"__builtin_ia32_psrawi512">, 1473 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1474 llvm_i32_ty], [IntrNoMem]>; 1475 def int_x86_avx512_psrai_d_512 : ClangBuiltin<"__builtin_ia32_psradi512">, 1476 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1477 llvm_i32_ty], [IntrNoMem]>; 1478 def int_x86_avx512_psrai_q_512 : ClangBuiltin<"__builtin_ia32_psraqi512">, 1479 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1480 llvm_i32_ty], [IntrNoMem]>; 1481 1482 def int_x86_avx512_pmultishift_qb_128: 1483 ClangBuiltin<"__builtin_ia32_vpmultishiftqb128">, 1484 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 1485 [IntrNoMem]>; 1486 def int_x86_avx512_pmultishift_qb_256: 1487 ClangBuiltin<"__builtin_ia32_vpmultishiftqb256">, 1488 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty], 1489 [IntrNoMem]>; 1490 def int_x86_avx512_pmultishift_qb_512: 1491 ClangBuiltin<"__builtin_ia32_vpmultishiftqb512">, 1492 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 1493 [IntrNoMem]>; 1494} 1495 1496// Pack ops. 1497let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1498 def int_x86_avx2_packsswb : ClangBuiltin<"__builtin_ia32_packsswb256">, 1499 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16i16_ty, 1500 llvm_v16i16_ty], [IntrNoMem]>; 1501 def int_x86_avx2_packssdw : ClangBuiltin<"__builtin_ia32_packssdw256">, 1502 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v8i32_ty, 1503 llvm_v8i32_ty], [IntrNoMem]>; 1504 def int_x86_avx2_packuswb : ClangBuiltin<"__builtin_ia32_packuswb256">, 1505 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16i16_ty, 1506 llvm_v16i16_ty], [IntrNoMem]>; 1507 def int_x86_avx2_packusdw : ClangBuiltin<"__builtin_ia32_packusdw256">, 1508 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v8i32_ty, 1509 llvm_v8i32_ty], [IntrNoMem]>; 1510} 1511 1512// Horizontal arithmetic ops 1513let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1514 def int_x86_avx2_phadd_w : ClangBuiltin<"__builtin_ia32_phaddw256">, 1515 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1516 llvm_v16i16_ty], [IntrNoMem]>; 1517 def int_x86_avx2_phadd_d : ClangBuiltin<"__builtin_ia32_phaddd256">, 1518 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1519 llvm_v8i32_ty], [IntrNoMem]>; 1520 def int_x86_avx2_phadd_sw : ClangBuiltin<"__builtin_ia32_phaddsw256">, 1521 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1522 llvm_v16i16_ty], [IntrNoMem]>; 1523 def int_x86_avx2_phsub_w : ClangBuiltin<"__builtin_ia32_phsubw256">, 1524 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1525 llvm_v16i16_ty], [IntrNoMem]>; 1526 def int_x86_avx2_phsub_d : ClangBuiltin<"__builtin_ia32_phsubd256">, 1527 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1528 llvm_v8i32_ty], [IntrNoMem]>; 1529 def int_x86_avx2_phsub_sw : ClangBuiltin<"__builtin_ia32_phsubsw256">, 1530 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1531 llvm_v16i16_ty], [IntrNoMem]>; 1532 def int_x86_avx2_pmadd_ub_sw : ClangBuiltin<"__builtin_ia32_pmaddubsw256">, 1533 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v32i8_ty, 1534 llvm_v32i8_ty], [IntrNoMem]>; 1535} 1536 1537// Sign ops 1538let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1539 def int_x86_avx2_psign_b : ClangBuiltin<"__builtin_ia32_psignb256">, 1540 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1541 llvm_v32i8_ty], [IntrNoMem]>; 1542 def int_x86_avx2_psign_w : ClangBuiltin<"__builtin_ia32_psignw256">, 1543 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1544 llvm_v16i16_ty], [IntrNoMem]>; 1545 def int_x86_avx2_psign_d : ClangBuiltin<"__builtin_ia32_psignd256">, 1546 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1547 llvm_v8i32_ty], [IntrNoMem]>; 1548} 1549 1550// Packed multiply high with round and scale 1551let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1552 def int_x86_avx2_pmul_hr_sw : ClangBuiltin<"__builtin_ia32_pmulhrsw256">, 1553 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1554 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1555 def int_x86_avx512_pmul_hr_sw_512 : ClangBuiltin<"__builtin_ia32_pmulhrsw512">, 1556 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1557 llvm_v32i16_ty], [IntrNoMem, Commutative]>; 1558} 1559 1560// Vector blend 1561let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1562 def int_x86_avx2_pblendvb : ClangBuiltin<"__builtin_ia32_pblendvb256">, 1563 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 1564 llvm_v32i8_ty], [IntrNoMem]>; 1565} 1566 1567 1568// Vector permutation 1569let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1570 def int_x86_avx2_permd : ClangBuiltin<"__builtin_ia32_permvarsi256">, 1571 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 1572 [IntrNoMem]>; 1573 def int_x86_avx2_permps : ClangBuiltin<"__builtin_ia32_permvarsf256">, 1574 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8i32_ty], 1575 [IntrNoMem]>; 1576} 1577 1578// Conditional load ops 1579let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1580 def int_x86_avx2_maskload_d : ClangBuiltin<"__builtin_ia32_maskloadd">, 1581 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_v4i32_ty], 1582 [IntrReadMem, IntrArgMemOnly]>; 1583 def int_x86_avx2_maskload_q : ClangBuiltin<"__builtin_ia32_maskloadq">, 1584 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_ptr_ty, llvm_v2i64_ty], 1585 [IntrReadMem, IntrArgMemOnly]>; 1586 def int_x86_avx2_maskload_d_256 : ClangBuiltin<"__builtin_ia32_maskloadd256">, 1587 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_ptr_ty, llvm_v8i32_ty], 1588 [IntrReadMem, IntrArgMemOnly]>; 1589 def int_x86_avx2_maskload_q_256 : ClangBuiltin<"__builtin_ia32_maskloadq256">, 1590 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_ptr_ty, llvm_v4i64_ty], 1591 [IntrReadMem, IntrArgMemOnly]>; 1592} 1593 1594// Conditional store ops 1595let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1596 def int_x86_avx2_maskstore_d : ClangBuiltin<"__builtin_ia32_maskstored">, 1597 Intrinsic<[], [llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i32_ty], 1598 [IntrArgMemOnly]>; 1599 def int_x86_avx2_maskstore_q : ClangBuiltin<"__builtin_ia32_maskstoreq">, 1600 Intrinsic<[], [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty], 1601 [IntrArgMemOnly]>; 1602 def int_x86_avx2_maskstore_d_256 : 1603 ClangBuiltin<"__builtin_ia32_maskstored256">, 1604 Intrinsic<[], [llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i32_ty], 1605 [IntrArgMemOnly]>; 1606 def int_x86_avx2_maskstore_q_256 : 1607 ClangBuiltin<"__builtin_ia32_maskstoreq256">, 1608 Intrinsic<[], [llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i64_ty], 1609 [IntrArgMemOnly]>; 1610} 1611 1612// Variable bit shift ops 1613let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1614 def int_x86_avx2_psllv_d : ClangBuiltin<"__builtin_ia32_psllv4si">, 1615 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 1616 [IntrNoMem]>; 1617 def int_x86_avx2_psllv_d_256 : ClangBuiltin<"__builtin_ia32_psllv8si">, 1618 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 1619 [IntrNoMem]>; 1620 def int_x86_avx2_psllv_q : ClangBuiltin<"__builtin_ia32_psllv2di">, 1621 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 1622 [IntrNoMem]>; 1623 def int_x86_avx2_psllv_q_256 : ClangBuiltin<"__builtin_ia32_psllv4di">, 1624 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 1625 [IntrNoMem]>; 1626 1627 def int_x86_avx512_psllv_d_512 : ClangBuiltin<"__builtin_ia32_psllv16si">, 1628 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 1629 [IntrNoMem]>; 1630 def int_x86_avx512_psllv_q_512 : ClangBuiltin<"__builtin_ia32_psllv8di">, 1631 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 1632 [IntrNoMem]>; 1633 1634 def int_x86_avx2_psrlv_d : ClangBuiltin<"__builtin_ia32_psrlv4si">, 1635 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 1636 [IntrNoMem]>; 1637 def int_x86_avx2_psrlv_d_256 : ClangBuiltin<"__builtin_ia32_psrlv8si">, 1638 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 1639 [IntrNoMem]>; 1640 def int_x86_avx2_psrlv_q : ClangBuiltin<"__builtin_ia32_psrlv2di">, 1641 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 1642 [IntrNoMem]>; 1643 def int_x86_avx2_psrlv_q_256 : ClangBuiltin<"__builtin_ia32_psrlv4di">, 1644 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 1645 [IntrNoMem]>; 1646 1647 def int_x86_avx512_psrlv_d_512 : ClangBuiltin<"__builtin_ia32_psrlv16si">, 1648 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 1649 [IntrNoMem]>; 1650 def int_x86_avx512_psrlv_q_512 : ClangBuiltin<"__builtin_ia32_psrlv8di">, 1651 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 1652 [IntrNoMem]>; 1653 1654 def int_x86_avx2_psrav_d : ClangBuiltin<"__builtin_ia32_psrav4si">, 1655 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 1656 [IntrNoMem]>; 1657 def int_x86_avx2_psrav_d_256 : ClangBuiltin<"__builtin_ia32_psrav8si">, 1658 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 1659 [IntrNoMem]>; 1660 1661 def int_x86_avx512_psrav_d_512 : ClangBuiltin<"__builtin_ia32_psrav16si">, 1662 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 1663 [IntrNoMem]>; 1664 def int_x86_avx512_psrav_q_128 : ClangBuiltin<"__builtin_ia32_psravq128">, 1665 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 1666 [IntrNoMem]>; 1667 def int_x86_avx512_psrav_q_256 : ClangBuiltin<"__builtin_ia32_psravq256">, 1668 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 1669 [IntrNoMem]>; 1670 def int_x86_avx512_psrav_q_512 : ClangBuiltin<"__builtin_ia32_psrav8di">, 1671 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 1672 [IntrNoMem]>; 1673 1674 def int_x86_avx512_psllv_w_128 : ClangBuiltin<"__builtin_ia32_psllv8hi">, 1675 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 1676 [IntrNoMem]>; 1677 def int_x86_avx512_psllv_w_256 : ClangBuiltin<"__builtin_ia32_psllv16hi">, 1678 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty], 1679 [IntrNoMem]>; 1680 def int_x86_avx512_psllv_w_512 : ClangBuiltin<"__builtin_ia32_psllv32hi">, 1681 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 1682 [IntrNoMem]>; 1683 1684 def int_x86_avx512_psrlv_w_128 : ClangBuiltin<"__builtin_ia32_psrlv8hi">, 1685 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 1686 [IntrNoMem]>; 1687 def int_x86_avx512_psrlv_w_256 : ClangBuiltin<"__builtin_ia32_psrlv16hi">, 1688 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty], 1689 [IntrNoMem]>; 1690 def int_x86_avx512_psrlv_w_512 : ClangBuiltin<"__builtin_ia32_psrlv32hi">, 1691 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 1692 [IntrNoMem]>; 1693 1694 def int_x86_avx512_psrav_w_128 : ClangBuiltin<"__builtin_ia32_psrav8hi">, 1695 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 1696 [IntrNoMem]>; 1697 def int_x86_avx512_psrav_w_256 : ClangBuiltin<"__builtin_ia32_psrav16hi">, 1698 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty], 1699 [IntrNoMem]>; 1700 def int_x86_avx512_psrav_w_512 : ClangBuiltin<"__builtin_ia32_psrav32hi">, 1701 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 1702 [IntrNoMem]>; 1703} 1704 1705// Gather ops 1706let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1707 // NOTE: These can't be ArgMemOnly because you can put the address completely 1708 // in the index register. 1709 def int_x86_avx2_gather_d_pd : ClangBuiltin<"__builtin_ia32_gatherd_pd">, 1710 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 1711 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i8_ty], 1712 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1713 def int_x86_avx2_gather_d_pd_256 : ClangBuiltin<"__builtin_ia32_gatherd_pd256">, 1714 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 1715 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i8_ty], 1716 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1717 def int_x86_avx2_gather_q_pd : ClangBuiltin<"__builtin_ia32_gatherq_pd">, 1718 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 1719 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty], 1720 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1721 def int_x86_avx2_gather_q_pd_256 : ClangBuiltin<"__builtin_ia32_gatherq_pd256">, 1722 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 1723 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], 1724 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1725 def int_x86_avx2_gather_d_ps : ClangBuiltin<"__builtin_ia32_gatherd_ps">, 1726 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 1727 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty], 1728 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1729 def int_x86_avx2_gather_d_ps_256 : ClangBuiltin<"__builtin_ia32_gatherd_ps256">, 1730 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 1731 [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], 1732 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1733 def int_x86_avx2_gather_q_ps : ClangBuiltin<"__builtin_ia32_gatherq_ps">, 1734 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 1735 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty], 1736 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1737 def int_x86_avx2_gather_q_ps_256 : ClangBuiltin<"__builtin_ia32_gatherq_ps256">, 1738 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 1739 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i8_ty], 1740 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1741 1742 def int_x86_avx2_gather_d_q : ClangBuiltin<"__builtin_ia32_gatherd_q">, 1743 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 1744 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i8_ty], 1745 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1746 def int_x86_avx2_gather_d_q_256 : ClangBuiltin<"__builtin_ia32_gatherd_q256">, 1747 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 1748 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i8_ty], 1749 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1750 def int_x86_avx2_gather_q_q : ClangBuiltin<"__builtin_ia32_gatherq_q">, 1751 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 1752 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 1753 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1754 def int_x86_avx2_gather_q_q_256 : ClangBuiltin<"__builtin_ia32_gatherq_q256">, 1755 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 1756 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 1757 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1758 def int_x86_avx2_gather_d_d : ClangBuiltin<"__builtin_ia32_gatherd_d">, 1759 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1760 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 1761 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1762 def int_x86_avx2_gather_d_d_256 : ClangBuiltin<"__builtin_ia32_gatherd_d256">, 1763 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 1764 [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 1765 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1766 def int_x86_avx2_gather_q_d : ClangBuiltin<"__builtin_ia32_gatherq_d">, 1767 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1768 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 1769 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1770 def int_x86_avx2_gather_q_d_256 : ClangBuiltin<"__builtin_ia32_gatherq_d256">, 1771 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1772 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 1773 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 1774} 1775 1776// Misc. 1777let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1778 def int_x86_avx2_pmovmskb : ClangBuiltin<"__builtin_ia32_pmovmskb256">, 1779 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v32i8_ty], [IntrNoMem]>; 1780 def int_x86_avx2_pshuf_b : ClangBuiltin<"__builtin_ia32_pshufb256">, 1781 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1782 llvm_v32i8_ty], [IntrNoMem]>; 1783 def int_x86_avx2_mpsadbw : ClangBuiltin<"__builtin_ia32_mpsadbw256">, 1784 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 1785 llvm_i8_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 1786} 1787 1788//===----------------------------------------------------------------------===// 1789// FMA3 and FMA4 1790 1791let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1792 def int_x86_fma_vfmaddsub_ps : ClangBuiltin<"__builtin_ia32_vfmaddsubps">, 1793 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 1794 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 1795 [IntrNoMem]>; 1796 def int_x86_fma_vfmaddsub_pd : ClangBuiltin<"__builtin_ia32_vfmaddsubpd">, 1797 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 1798 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 1799 [IntrNoMem]>; 1800 def int_x86_fma_vfmaddsub_ps_256 : 1801 ClangBuiltin<"__builtin_ia32_vfmaddsubps256">, 1802 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 1803 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 1804 [IntrNoMem]>; 1805 def int_x86_fma_vfmaddsub_pd_256 : 1806 ClangBuiltin<"__builtin_ia32_vfmaddsubpd256">, 1807 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 1808 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 1809 [IntrNoMem]>; 1810 1811 def int_x86_avx512_vfmadd_pd_512 : 1812 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 1813 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty], 1814 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 1815 1816 def int_x86_avx512_vfmadd_ps_512 : 1817 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 1818 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty], 1819 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 1820 1821 def int_x86_avx512_vfmaddsub_pd_512 : 1822 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 1823 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty], 1824 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 1825 1826 def int_x86_avx512_vfmaddsub_ps_512 : 1827 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 1828 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty], 1829 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 1830 1831 def int_x86_avx512_vfmadd_f64 : 1832 DefaultAttrsIntrinsic<[llvm_double_ty], 1833 [llvm_double_ty, llvm_double_ty, llvm_double_ty, llvm_i32_ty], 1834 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 1835 def int_x86_avx512_vfmadd_f32 : 1836 DefaultAttrsIntrinsic<[llvm_float_ty], 1837 [llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_i32_ty], 1838 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 1839 1840 def int_x86_avx512_vpmadd52h_uq_128 : 1841 ClangBuiltin<"__builtin_ia32_vpmadd52huq128">, 1842 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 1843 llvm_v2i64_ty], [IntrNoMem]>; 1844 def int_x86_avx512_vpmadd52l_uq_128 : 1845 ClangBuiltin<"__builtin_ia32_vpmadd52luq128">, 1846 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 1847 llvm_v2i64_ty], [IntrNoMem]>; 1848 def int_x86_avx512_vpmadd52h_uq_256 : 1849 ClangBuiltin<"__builtin_ia32_vpmadd52huq256">, 1850 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 1851 llvm_v4i64_ty], [IntrNoMem]>; 1852 def int_x86_avx512_vpmadd52l_uq_256 : 1853 ClangBuiltin<"__builtin_ia32_vpmadd52luq256">, 1854 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 1855 llvm_v4i64_ty], [IntrNoMem]>; 1856 def int_x86_avx512_vpmadd52h_uq_512 : 1857 ClangBuiltin<"__builtin_ia32_vpmadd52huq512">, 1858 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 1859 llvm_v8i64_ty], [IntrNoMem]>; 1860 def int_x86_avx512_vpmadd52l_uq_512 : 1861 ClangBuiltin<"__builtin_ia32_vpmadd52luq512">, 1862 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 1863 llvm_v8i64_ty], [IntrNoMem]>; 1864} 1865 1866// VNNI 1867let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1868 def int_x86_avx512_vpdpbusd_128 : 1869 ClangBuiltin<"__builtin_ia32_vpdpbusd128">, 1870 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 1871 llvm_v4i32_ty], [IntrNoMem]>; 1872 def int_x86_avx512_vpdpbusd_256 : 1873 ClangBuiltin<"__builtin_ia32_vpdpbusd256">, 1874 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 1875 llvm_v8i32_ty], [IntrNoMem]>; 1876 def int_x86_avx512_vpdpbusd_512 : 1877 ClangBuiltin<"__builtin_ia32_vpdpbusd512">, 1878 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 1879 llvm_v16i32_ty], [IntrNoMem]>; 1880 1881 def int_x86_avx512_vpdpbusds_128 : 1882 ClangBuiltin<"__builtin_ia32_vpdpbusds128">, 1883 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 1884 llvm_v4i32_ty], [IntrNoMem]>; 1885 def int_x86_avx512_vpdpbusds_256 : 1886 ClangBuiltin<"__builtin_ia32_vpdpbusds256">, 1887 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 1888 llvm_v8i32_ty], [IntrNoMem]>; 1889 def int_x86_avx512_vpdpbusds_512 : 1890 ClangBuiltin<"__builtin_ia32_vpdpbusds512">, 1891 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 1892 llvm_v16i32_ty], [IntrNoMem]>; 1893 1894 def int_x86_avx512_vpdpwssd_128 : 1895 ClangBuiltin<"__builtin_ia32_vpdpwssd128">, 1896 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 1897 llvm_v4i32_ty], [IntrNoMem]>; 1898 def int_x86_avx512_vpdpwssd_256 : 1899 ClangBuiltin<"__builtin_ia32_vpdpwssd256">, 1900 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 1901 llvm_v8i32_ty], [IntrNoMem]>; 1902 def int_x86_avx512_vpdpwssd_512 : 1903 ClangBuiltin<"__builtin_ia32_vpdpwssd512">, 1904 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 1905 llvm_v16i32_ty], [IntrNoMem]>; 1906 1907 def int_x86_avx512_vpdpwssds_128 : 1908 ClangBuiltin<"__builtin_ia32_vpdpwssds128">, 1909 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 1910 llvm_v4i32_ty], [IntrNoMem]>; 1911 def int_x86_avx512_vpdpwssds_256 : 1912 ClangBuiltin<"__builtin_ia32_vpdpwssds256">, 1913 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 1914 llvm_v8i32_ty], [IntrNoMem]>; 1915 def int_x86_avx512_vpdpwssds_512 : 1916 ClangBuiltin<"__builtin_ia32_vpdpwssds512">, 1917 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 1918 llvm_v16i32_ty], [IntrNoMem]>; 1919 def int_x86_avx2_vpdpbssd_128 1920 : ClangBuiltin<"__builtin_ia32_vpdpbssd128">, 1921 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1922 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 1923 [IntrNoMem]>; 1924 def int_x86_avx2_vpdpbssd_256 1925 : ClangBuiltin<"__builtin_ia32_vpdpbssd256">, 1926 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 1927 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 1928 [IntrNoMem]>; 1929 def int_x86_avx2_vpdpbssds_128 1930 : ClangBuiltin<"__builtin_ia32_vpdpbssds128">, 1931 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1932 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 1933 [IntrNoMem]>; 1934 def int_x86_avx2_vpdpbssds_256 1935 : ClangBuiltin<"__builtin_ia32_vpdpbssds256">, 1936 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 1937 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 1938 [IntrNoMem]>; 1939 def int_x86_avx2_vpdpbsud_128 1940 : ClangBuiltin<"__builtin_ia32_vpdpbsud128">, 1941 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1942 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 1943 [IntrNoMem]>; 1944 def int_x86_avx2_vpdpbsud_256 1945 : ClangBuiltin<"__builtin_ia32_vpdpbsud256">, 1946 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 1947 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 1948 [IntrNoMem]>; 1949 def int_x86_avx2_vpdpbsuds_128 1950 : ClangBuiltin<"__builtin_ia32_vpdpbsuds128">, 1951 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1952 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 1953 [IntrNoMem]>; 1954 def int_x86_avx2_vpdpbsuds_256 1955 : ClangBuiltin<"__builtin_ia32_vpdpbsuds256">, 1956 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 1957 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 1958 [IntrNoMem]>; 1959 def int_x86_avx2_vpdpbuud_128 1960 : ClangBuiltin<"__builtin_ia32_vpdpbuud128">, 1961 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1962 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 1963 [IntrNoMem]>; 1964 def int_x86_avx2_vpdpbuud_256 1965 : ClangBuiltin<"__builtin_ia32_vpdpbuud256">, 1966 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 1967 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 1968 [IntrNoMem]>; 1969 def int_x86_avx2_vpdpbuuds_128 1970 : ClangBuiltin<"__builtin_ia32_vpdpbuuds128">, 1971 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1972 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 1973 [IntrNoMem]>; 1974 def int_x86_avx2_vpdpbuuds_256 1975 : ClangBuiltin<"__builtin_ia32_vpdpbuuds256">, 1976 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 1977 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 1978 [IntrNoMem]>; 1979 1980 def int_x86_avx2_vpdpwsud_128 1981 : ClangBuiltin<"__builtin_ia32_vpdpwsud128">, 1982 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1983 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 1984 [IntrNoMem]>; 1985 def int_x86_avx2_vpdpwsud_256 1986 : ClangBuiltin<"__builtin_ia32_vpdpwsud256">, 1987 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 1988 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 1989 [IntrNoMem]>; 1990 def int_x86_avx2_vpdpwsuds_128 1991 : ClangBuiltin<"__builtin_ia32_vpdpwsuds128">, 1992 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 1993 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 1994 [IntrNoMem]>; 1995 def int_x86_avx2_vpdpwsuds_256 1996 : ClangBuiltin<"__builtin_ia32_vpdpwsuds256">, 1997 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 1998 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 1999 [IntrNoMem]>; 2000 def int_x86_avx2_vpdpwusd_128 2001 : ClangBuiltin<"__builtin_ia32_vpdpwusd128">, 2002 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2003 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 2004 [IntrNoMem]>; 2005 def int_x86_avx2_vpdpwusd_256 2006 : ClangBuiltin<"__builtin_ia32_vpdpwusd256">, 2007 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 2008 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 2009 [IntrNoMem]>; 2010 def int_x86_avx2_vpdpwusds_128 2011 : ClangBuiltin<"__builtin_ia32_vpdpwusds128">, 2012 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2013 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 2014 [IntrNoMem]>; 2015 def int_x86_avx2_vpdpwusds_256 2016 : ClangBuiltin<"__builtin_ia32_vpdpwusds256">, 2017 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 2018 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 2019 [IntrNoMem]>; 2020 def int_x86_avx2_vpdpwuud_128 2021 : ClangBuiltin<"__builtin_ia32_vpdpwuud128">, 2022 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2023 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 2024 [IntrNoMem]>; 2025 def int_x86_avx2_vpdpwuud_256 2026 : ClangBuiltin<"__builtin_ia32_vpdpwuud256">, 2027 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 2028 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 2029 [IntrNoMem]>; 2030 def int_x86_avx2_vpdpwuuds_128 2031 : ClangBuiltin<"__builtin_ia32_vpdpwuuds128">, 2032 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2033 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 2034 [IntrNoMem]>; 2035 def int_x86_avx2_vpdpwuuds_256 2036 : ClangBuiltin<"__builtin_ia32_vpdpwuuds256">, 2037 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 2038 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty], 2039 [IntrNoMem]>; 2040} 2041 2042//===----------------------------------------------------------------------===// 2043// XOP 2044 2045let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2046 def int_x86_xop_vpermil2pd : ClangBuiltin<"__builtin_ia32_vpermil2pd">, 2047 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 2048 llvm_v2i64_ty, llvm_i8_ty], 2049 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 2050 2051 def int_x86_xop_vpermil2pd_256 : 2052 ClangBuiltin<"__builtin_ia32_vpermil2pd256">, 2053 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 2054 llvm_v4i64_ty, llvm_i8_ty], 2055 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 2056 2057 def int_x86_xop_vpermil2ps : ClangBuiltin<"__builtin_ia32_vpermil2ps">, 2058 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 2059 llvm_v4i32_ty, llvm_i8_ty], 2060 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 2061 def int_x86_xop_vpermil2ps_256 : 2062 ClangBuiltin<"__builtin_ia32_vpermil2ps256">, 2063 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 2064 llvm_v8i32_ty, llvm_i8_ty], 2065 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 2066 2067 def int_x86_xop_vfrcz_pd : ClangBuiltin<"__builtin_ia32_vfrczpd">, 2068 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 2069 def int_x86_xop_vfrcz_ps : ClangBuiltin<"__builtin_ia32_vfrczps">, 2070 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 2071 def int_x86_xop_vfrcz_sd : ClangBuiltin<"__builtin_ia32_vfrczsd">, 2072 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 2073 def int_x86_xop_vfrcz_ss : ClangBuiltin<"__builtin_ia32_vfrczss">, 2074 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 2075 def int_x86_xop_vfrcz_pd_256 : ClangBuiltin<"__builtin_ia32_vfrczpd256">, 2076 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty], [IntrNoMem]>; 2077 def int_x86_xop_vfrcz_ps_256 : ClangBuiltin<"__builtin_ia32_vfrczps256">, 2078 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 2079 2080 def int_x86_xop_vphaddbd : 2081 ClangBuiltin<"__builtin_ia32_vphaddbd">, 2082 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], [IntrNoMem]>; 2083 def int_x86_xop_vphaddbq : 2084 ClangBuiltin<"__builtin_ia32_vphaddbq">, 2085 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty], [IntrNoMem]>; 2086 def int_x86_xop_vphaddbw : 2087 ClangBuiltin<"__builtin_ia32_vphaddbw">, 2088 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>; 2089 def int_x86_xop_vphadddq : 2090 ClangBuiltin<"__builtin_ia32_vphadddq">, 2091 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 2092 def int_x86_xop_vphaddubd : 2093 ClangBuiltin<"__builtin_ia32_vphaddubd">, 2094 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], [IntrNoMem]>; 2095 def int_x86_xop_vphaddubq : 2096 ClangBuiltin<"__builtin_ia32_vphaddubq">, 2097 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty], [IntrNoMem]>; 2098 def int_x86_xop_vphaddubw : 2099 ClangBuiltin<"__builtin_ia32_vphaddubw">, 2100 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>; 2101 def int_x86_xop_vphaddudq : 2102 ClangBuiltin<"__builtin_ia32_vphaddudq">, 2103 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 2104 def int_x86_xop_vphadduwd : 2105 ClangBuiltin<"__builtin_ia32_vphadduwd">, 2106 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 2107 def int_x86_xop_vphadduwq : 2108 ClangBuiltin<"__builtin_ia32_vphadduwq">, 2109 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v8i16_ty], [IntrNoMem]>; 2110 def int_x86_xop_vphaddwd : 2111 ClangBuiltin<"__builtin_ia32_vphaddwd">, 2112 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 2113 def int_x86_xop_vphaddwq : 2114 ClangBuiltin<"__builtin_ia32_vphaddwq">, 2115 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v8i16_ty], [IntrNoMem]>; 2116 def int_x86_xop_vphsubbw : 2117 ClangBuiltin<"__builtin_ia32_vphsubbw">, 2118 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>; 2119 def int_x86_xop_vphsubdq : 2120 ClangBuiltin<"__builtin_ia32_vphsubdq">, 2121 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 2122 def int_x86_xop_vphsubwd : 2123 ClangBuiltin<"__builtin_ia32_vphsubwd">, 2124 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 2125 def int_x86_xop_vpmacsdd : 2126 ClangBuiltin<"__builtin_ia32_vpmacsdd">, 2127 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2128 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 2129 [IntrNoMem, Commutative]>; 2130 def int_x86_xop_vpmacsdqh : 2131 ClangBuiltin<"__builtin_ia32_vpmacsdqh">, 2132 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 2133 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 2134 [IntrNoMem, Commutative]>; 2135 def int_x86_xop_vpmacsdql : 2136 ClangBuiltin<"__builtin_ia32_vpmacsdql">, 2137 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 2138 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 2139 [IntrNoMem, Commutative]>; 2140 def int_x86_xop_vpmacssdd : 2141 ClangBuiltin<"__builtin_ia32_vpmacssdd">, 2142 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2143 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 2144 [IntrNoMem, Commutative]>; 2145 def int_x86_xop_vpmacssdqh : 2146 ClangBuiltin<"__builtin_ia32_vpmacssdqh">, 2147 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 2148 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 2149 [IntrNoMem, Commutative]>; 2150 def int_x86_xop_vpmacssdql : 2151 ClangBuiltin<"__builtin_ia32_vpmacssdql">, 2152 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 2153 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 2154 [IntrNoMem, Commutative]>; 2155 def int_x86_xop_vpmacsswd : 2156 ClangBuiltin<"__builtin_ia32_vpmacsswd">, 2157 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2158 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 2159 [IntrNoMem, Commutative]>; 2160 def int_x86_xop_vpmacssww : 2161 ClangBuiltin<"__builtin_ia32_vpmacssww">, 2162 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 2163 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], 2164 [IntrNoMem, Commutative]>; 2165 def int_x86_xop_vpmacswd : 2166 ClangBuiltin<"__builtin_ia32_vpmacswd">, 2167 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2168 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 2169 [IntrNoMem, Commutative]>; 2170 def int_x86_xop_vpmacsww : 2171 ClangBuiltin<"__builtin_ia32_vpmacsww">, 2172 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 2173 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], 2174 [IntrNoMem, Commutative]>; 2175 def int_x86_xop_vpmadcsswd : 2176 ClangBuiltin<"__builtin_ia32_vpmadcsswd">, 2177 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2178 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 2179 [IntrNoMem, Commutative]>; 2180 def int_x86_xop_vpmadcswd : 2181 ClangBuiltin<"__builtin_ia32_vpmadcswd">, 2182 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2183 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 2184 [IntrNoMem, Commutative]>; 2185 def int_x86_xop_vpperm : 2186 ClangBuiltin<"__builtin_ia32_vpperm">, 2187 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 2188 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty], 2189 [IntrNoMem]>; 2190 def int_x86_xop_vpshab : 2191 ClangBuiltin<"__builtin_ia32_vpshab">, 2192 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 2193 [IntrNoMem]>; 2194 def int_x86_xop_vpshad : 2195 ClangBuiltin<"__builtin_ia32_vpshad">, 2196 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 2197 [IntrNoMem]>; 2198 def int_x86_xop_vpshaq : 2199 ClangBuiltin<"__builtin_ia32_vpshaq">, 2200 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 2201 [IntrNoMem]>; 2202 def int_x86_xop_vpshaw : 2203 ClangBuiltin<"__builtin_ia32_vpshaw">, 2204 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 2205 [IntrNoMem]>; 2206 def int_x86_xop_vpshlb : 2207 ClangBuiltin<"__builtin_ia32_vpshlb">, 2208 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 2209 [IntrNoMem]>; 2210 def int_x86_xop_vpshld : 2211 ClangBuiltin<"__builtin_ia32_vpshld">, 2212 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 2213 [IntrNoMem]>; 2214 def int_x86_xop_vpshlq : 2215 ClangBuiltin<"__builtin_ia32_vpshlq">, 2216 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 2217 [IntrNoMem]>; 2218 def int_x86_xop_vpshlw : 2219 ClangBuiltin<"__builtin_ia32_vpshlw">, 2220 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 2221 [IntrNoMem]>; 2222} 2223 2224//===----------------------------------------------------------------------===// 2225// LWP 2226let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2227 def int_x86_llwpcb : 2228 ClangBuiltin<"__builtin_ia32_llwpcb">, 2229 Intrinsic<[], [llvm_ptr_ty], []>; 2230 def int_x86_slwpcb : 2231 ClangBuiltin<"__builtin_ia32_slwpcb">, 2232 Intrinsic<[llvm_ptr_ty], [], []>; 2233 def int_x86_lwpins32 : 2234 ClangBuiltin<"__builtin_ia32_lwpins32">, 2235 Intrinsic<[llvm_i8_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2236 [ImmArg<ArgIndex<2>>]>; 2237 def int_x86_lwpins64 : 2238 ClangBuiltin<"__builtin_ia32_lwpins64">, 2239 Intrinsic<[llvm_i8_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], 2240 [ImmArg<ArgIndex<2>>]>; 2241 def int_x86_lwpval32 : 2242 ClangBuiltin<"__builtin_ia32_lwpval32">, 2243 Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2244 [ImmArg<ArgIndex<2>>]>; 2245 def int_x86_lwpval64 : 2246 ClangBuiltin<"__builtin_ia32_lwpval64">, 2247 Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], 2248 [ImmArg<ArgIndex<2>>]>; 2249} 2250 2251//===----------------------------------------------------------------------===// 2252// MMX 2253 2254// Empty MMX state op. 2255let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2256 def int_x86_mmx_emms : ClangBuiltin<"__builtin_ia32_emms">, 2257 Intrinsic<[], [], []>; 2258} 2259 2260// Integer arithmetic ops. 2261let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2262 // Addition 2263 def int_x86_mmx_padd_b : ClangBuiltin<"__builtin_ia32_paddb">, 2264 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2265 [IntrNoMem, Commutative]>; 2266 def int_x86_mmx_padd_w : ClangBuiltin<"__builtin_ia32_paddw">, 2267 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2268 [IntrNoMem, Commutative]>; 2269 def int_x86_mmx_padd_d : ClangBuiltin<"__builtin_ia32_paddd">, 2270 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2271 [IntrNoMem, Commutative]>; 2272 def int_x86_mmx_padd_q : ClangBuiltin<"__builtin_ia32_paddq">, 2273 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2274 [IntrNoMem, Commutative]>; 2275 2276 def int_x86_mmx_padds_b : ClangBuiltin<"__builtin_ia32_paddsb">, 2277 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2278 [IntrNoMem, Commutative]>; 2279 def int_x86_mmx_padds_w : ClangBuiltin<"__builtin_ia32_paddsw">, 2280 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2281 [IntrNoMem, Commutative]>; 2282 2283 def int_x86_mmx_paddus_b : ClangBuiltin<"__builtin_ia32_paddusb">, 2284 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2285 [IntrNoMem, Commutative]>; 2286 def int_x86_mmx_paddus_w : ClangBuiltin<"__builtin_ia32_paddusw">, 2287 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2288 [IntrNoMem, Commutative]>; 2289 2290 // Subtraction 2291 def int_x86_mmx_psub_b : ClangBuiltin<"__builtin_ia32_psubb">, 2292 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2293 [IntrNoMem]>; 2294 def int_x86_mmx_psub_w : ClangBuiltin<"__builtin_ia32_psubw">, 2295 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2296 [IntrNoMem]>; 2297 def int_x86_mmx_psub_d : ClangBuiltin<"__builtin_ia32_psubd">, 2298 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2299 [IntrNoMem]>; 2300 def int_x86_mmx_psub_q : ClangBuiltin<"__builtin_ia32_psubq">, 2301 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2302 [IntrNoMem]>; 2303 2304 def int_x86_mmx_psubs_b : ClangBuiltin<"__builtin_ia32_psubsb">, 2305 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2306 [IntrNoMem]>; 2307 def int_x86_mmx_psubs_w : ClangBuiltin<"__builtin_ia32_psubsw">, 2308 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2309 [IntrNoMem]>; 2310 2311 def int_x86_mmx_psubus_b : ClangBuiltin<"__builtin_ia32_psubusb">, 2312 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2313 [IntrNoMem]>; 2314 def int_x86_mmx_psubus_w : ClangBuiltin<"__builtin_ia32_psubusw">, 2315 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2316 [IntrNoMem]>; 2317 2318 // Multiplication 2319 def int_x86_mmx_pmulh_w : ClangBuiltin<"__builtin_ia32_pmulhw">, 2320 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2321 [IntrNoMem, Commutative]>; 2322 def int_x86_mmx_pmull_w : ClangBuiltin<"__builtin_ia32_pmullw">, 2323 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2324 [IntrNoMem, Commutative]>; 2325 def int_x86_mmx_pmulhu_w : ClangBuiltin<"__builtin_ia32_pmulhuw">, 2326 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2327 [IntrNoMem, Commutative]>; 2328 def int_x86_mmx_pmulu_dq : ClangBuiltin<"__builtin_ia32_pmuludq">, 2329 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2330 [IntrNoMem, Commutative]>; 2331 def int_x86_mmx_pmadd_wd : ClangBuiltin<"__builtin_ia32_pmaddwd">, 2332 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2333 [IntrNoMem, Commutative]>; 2334 2335 // Bitwise operations 2336 def int_x86_mmx_pand : ClangBuiltin<"__builtin_ia32_pand">, 2337 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2338 [IntrNoMem, Commutative]>; 2339 def int_x86_mmx_pandn : ClangBuiltin<"__builtin_ia32_pandn">, 2340 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2341 [IntrNoMem]>; 2342 def int_x86_mmx_por : ClangBuiltin<"__builtin_ia32_por">, 2343 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2344 [IntrNoMem, Commutative]>; 2345 def int_x86_mmx_pxor : ClangBuiltin<"__builtin_ia32_pxor">, 2346 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2347 [IntrNoMem, Commutative]>; 2348 2349 // Averages 2350 def int_x86_mmx_pavg_b : ClangBuiltin<"__builtin_ia32_pavgb">, 2351 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2352 [IntrNoMem, Commutative]>; 2353 def int_x86_mmx_pavg_w : ClangBuiltin<"__builtin_ia32_pavgw">, 2354 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2355 [IntrNoMem, Commutative]>; 2356 2357 // Maximum 2358 def int_x86_mmx_pmaxu_b : ClangBuiltin<"__builtin_ia32_pmaxub">, 2359 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2360 [IntrNoMem, Commutative]>; 2361 def int_x86_mmx_pmaxs_w : ClangBuiltin<"__builtin_ia32_pmaxsw">, 2362 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2363 [IntrNoMem, Commutative]>; 2364 2365 // Minimum 2366 def int_x86_mmx_pminu_b : ClangBuiltin<"__builtin_ia32_pminub">, 2367 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2368 [IntrNoMem, Commutative]>; 2369 def int_x86_mmx_pmins_w : ClangBuiltin<"__builtin_ia32_pminsw">, 2370 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2371 [IntrNoMem, Commutative]>; 2372 2373 // Packed sum of absolute differences 2374 def int_x86_mmx_psad_bw : ClangBuiltin<"__builtin_ia32_psadbw">, 2375 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2376 [IntrNoMem, Commutative]>; 2377} 2378 2379// Integer shift ops. 2380let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2381 // Shift left logical 2382 def int_x86_mmx_psll_w : ClangBuiltin<"__builtin_ia32_psllw">, 2383 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2384 [IntrNoMem]>; 2385 def int_x86_mmx_psll_d : ClangBuiltin<"__builtin_ia32_pslld">, 2386 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2387 [IntrNoMem]>; 2388 def int_x86_mmx_psll_q : ClangBuiltin<"__builtin_ia32_psllq">, 2389 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2390 [IntrNoMem]>; 2391 2392 def int_x86_mmx_psrl_w : ClangBuiltin<"__builtin_ia32_psrlw">, 2393 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2394 [IntrNoMem]>; 2395 def int_x86_mmx_psrl_d : ClangBuiltin<"__builtin_ia32_psrld">, 2396 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2397 [IntrNoMem]>; 2398 def int_x86_mmx_psrl_q : ClangBuiltin<"__builtin_ia32_psrlq">, 2399 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2400 [IntrNoMem]>; 2401 2402 def int_x86_mmx_psra_w : ClangBuiltin<"__builtin_ia32_psraw">, 2403 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2404 [IntrNoMem]>; 2405 def int_x86_mmx_psra_d : ClangBuiltin<"__builtin_ia32_psrad">, 2406 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2407 [IntrNoMem]>; 2408 2409 // Oddly these don't require an immediate due to a gcc compatibility issue. 2410 def int_x86_mmx_pslli_w : ClangBuiltin<"__builtin_ia32_psllwi">, 2411 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2412 [IntrNoMem]>; 2413 def int_x86_mmx_pslli_d : ClangBuiltin<"__builtin_ia32_pslldi">, 2414 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2415 [IntrNoMem]>; 2416 def int_x86_mmx_pslli_q : ClangBuiltin<"__builtin_ia32_psllqi">, 2417 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2418 [IntrNoMem]>; 2419 2420 def int_x86_mmx_psrli_w : ClangBuiltin<"__builtin_ia32_psrlwi">, 2421 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2422 [IntrNoMem]>; 2423 def int_x86_mmx_psrli_d : ClangBuiltin<"__builtin_ia32_psrldi">, 2424 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2425 [IntrNoMem]>; 2426 def int_x86_mmx_psrli_q : ClangBuiltin<"__builtin_ia32_psrlqi">, 2427 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2428 [IntrNoMem]>; 2429 2430 def int_x86_mmx_psrai_w : ClangBuiltin<"__builtin_ia32_psrawi">, 2431 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2432 [IntrNoMem]>; 2433 def int_x86_mmx_psrai_d : ClangBuiltin<"__builtin_ia32_psradi">, 2434 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2435 [IntrNoMem]>; 2436} 2437// Permute 2438let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2439 def int_x86_avx512_permvar_df_256 : ClangBuiltin<"__builtin_ia32_permvardf256">, 2440 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4i64_ty], 2441 [IntrNoMem]>; 2442 def int_x86_avx512_permvar_df_512 : ClangBuiltin<"__builtin_ia32_permvardf512">, 2443 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8i64_ty], 2444 [IntrNoMem]>; 2445 def int_x86_avx512_permvar_di_256 : ClangBuiltin<"__builtin_ia32_permvardi256">, 2446 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 2447 [IntrNoMem]>; 2448 def int_x86_avx512_permvar_di_512 : ClangBuiltin<"__builtin_ia32_permvardi512">, 2449 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 2450 [IntrNoMem]>; 2451 def int_x86_avx512_permvar_hi_128 : ClangBuiltin<"__builtin_ia32_permvarhi128">, 2452 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 2453 [IntrNoMem]>; 2454 def int_x86_avx512_permvar_hi_256 : ClangBuiltin<"__builtin_ia32_permvarhi256">, 2455 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty], 2456 [IntrNoMem]>; 2457 def int_x86_avx512_permvar_hi_512 : ClangBuiltin<"__builtin_ia32_permvarhi512">, 2458 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 2459 [IntrNoMem]>; 2460 def int_x86_avx512_permvar_qi_128 : ClangBuiltin<"__builtin_ia32_permvarqi128">, 2461 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 2462 [IntrNoMem]>; 2463 def int_x86_avx512_permvar_qi_256 : ClangBuiltin<"__builtin_ia32_permvarqi256">, 2464 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty], 2465 [IntrNoMem]>; 2466 def int_x86_avx512_permvar_qi_512 : ClangBuiltin<"__builtin_ia32_permvarqi512">, 2467 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 2468 [IntrNoMem]>; 2469 def int_x86_avx512_permvar_sf_512 : ClangBuiltin<"__builtin_ia32_permvarsf512">, 2470 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16i32_ty], 2471 [IntrNoMem]>; 2472 def int_x86_avx512_permvar_si_512 : ClangBuiltin<"__builtin_ia32_permvarsi512">, 2473 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 2474 [IntrNoMem]>; 2475} 2476// Pack ops. 2477let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2478 def int_x86_mmx_packsswb : ClangBuiltin<"__builtin_ia32_packsswb">, 2479 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2480 [IntrNoMem]>; 2481 def int_x86_mmx_packssdw : ClangBuiltin<"__builtin_ia32_packssdw">, 2482 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2483 [IntrNoMem]>; 2484 def int_x86_mmx_packuswb : ClangBuiltin<"__builtin_ia32_packuswb">, 2485 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2486 [IntrNoMem]>; 2487} 2488 2489// Unpacking ops. 2490let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2491 def int_x86_mmx_punpckhbw : ClangBuiltin<"__builtin_ia32_punpckhbw">, 2492 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2493 [IntrNoMem]>; 2494 def int_x86_mmx_punpckhwd : ClangBuiltin<"__builtin_ia32_punpckhwd">, 2495 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2496 [IntrNoMem]>; 2497 def int_x86_mmx_punpckhdq : ClangBuiltin<"__builtin_ia32_punpckhdq">, 2498 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2499 [IntrNoMem]>; 2500 def int_x86_mmx_punpcklbw : ClangBuiltin<"__builtin_ia32_punpcklbw">, 2501 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2502 [IntrNoMem]>; 2503 def int_x86_mmx_punpcklwd : ClangBuiltin<"__builtin_ia32_punpcklwd">, 2504 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2505 [IntrNoMem]>; 2506 def int_x86_mmx_punpckldq : ClangBuiltin<"__builtin_ia32_punpckldq">, 2507 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2508 [IntrNoMem]>; 2509} 2510 2511// Integer comparison ops 2512let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2513 def int_x86_mmx_pcmpeq_b : ClangBuiltin<"__builtin_ia32_pcmpeqb">, 2514 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2515 [IntrNoMem, Commutative]>; 2516 def int_x86_mmx_pcmpeq_w : ClangBuiltin<"__builtin_ia32_pcmpeqw">, 2517 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2518 [IntrNoMem, Commutative]>; 2519 def int_x86_mmx_pcmpeq_d : ClangBuiltin<"__builtin_ia32_pcmpeqd">, 2520 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2521 [IntrNoMem, Commutative]>; 2522 2523 def int_x86_mmx_pcmpgt_b : ClangBuiltin<"__builtin_ia32_pcmpgtb">, 2524 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2525 [IntrNoMem]>; 2526 def int_x86_mmx_pcmpgt_w : ClangBuiltin<"__builtin_ia32_pcmpgtw">, 2527 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2528 [IntrNoMem]>; 2529 def int_x86_mmx_pcmpgt_d : ClangBuiltin<"__builtin_ia32_pcmpgtd">, 2530 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2531 [IntrNoMem]>; 2532} 2533 2534// Misc. 2535let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2536 def int_x86_mmx_maskmovq : ClangBuiltin<"__builtin_ia32_maskmovq">, 2537 Intrinsic<[], [llvm_x86mmx_ty, llvm_x86mmx_ty, llvm_ptr_ty], []>; 2538 2539 def int_x86_mmx_pmovmskb : ClangBuiltin<"__builtin_ia32_pmovmskb">, 2540 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 2541 2542 def int_x86_mmx_movnt_dq : ClangBuiltin<"__builtin_ia32_movntq">, 2543 Intrinsic<[], [llvm_ptr_ty, llvm_x86mmx_ty], []>; 2544 2545 def int_x86_mmx_palignr_b : ClangBuiltin<"__builtin_ia32_palignr">, 2546 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], 2547 [llvm_x86mmx_ty, llvm_x86mmx_ty, llvm_i8_ty], 2548 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 2549 2550 def int_x86_mmx_pextr_w : ClangBuiltin<"__builtin_ia32_vec_ext_v4hi">, 2551 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2552 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2553 2554 def int_x86_mmx_pinsr_w : ClangBuiltin<"__builtin_ia32_vec_set_v4hi">, 2555 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], 2556 [llvm_x86mmx_ty, llvm_i32_ty, llvm_i32_ty], 2557 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 2558} 2559 2560//===----------------------------------------------------------------------===// 2561// BMI 2562 2563let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2564 def int_x86_bmi_bextr_32 : ClangBuiltin<"__builtin_ia32_bextr_u32">, 2565 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 2566 [IntrNoMem]>; 2567 def int_x86_bmi_bextr_64 : ClangBuiltin<"__builtin_ia32_bextr_u64">, 2568 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], 2569 [IntrNoMem]>; 2570 def int_x86_bmi_bzhi_32 : ClangBuiltin<"__builtin_ia32_bzhi_si">, 2571 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 2572 [IntrNoMem]>; 2573 def int_x86_bmi_bzhi_64 : ClangBuiltin<"__builtin_ia32_bzhi_di">, 2574 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], 2575 [IntrNoMem]>; 2576 def int_x86_bmi_pdep_32 : ClangBuiltin<"__builtin_ia32_pdep_si">, 2577 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 2578 [IntrNoMem]>; 2579 def int_x86_bmi_pdep_64 : ClangBuiltin<"__builtin_ia32_pdep_di">, 2580 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], 2581 [IntrNoMem]>; 2582 def int_x86_bmi_pext_32 : ClangBuiltin<"__builtin_ia32_pext_si">, 2583 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 2584 [IntrNoMem]>; 2585 def int_x86_bmi_pext_64 : ClangBuiltin<"__builtin_ia32_pext_di">, 2586 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], 2587 [IntrNoMem]>; 2588} 2589 2590//===----------------------------------------------------------------------===// 2591// FS/GS Base 2592 2593let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2594 def int_x86_rdfsbase_32 : ClangBuiltin<"__builtin_ia32_rdfsbase32">, 2595 Intrinsic<[llvm_i32_ty], []>; 2596 def int_x86_rdgsbase_32 : ClangBuiltin<"__builtin_ia32_rdgsbase32">, 2597 Intrinsic<[llvm_i32_ty], []>; 2598 def int_x86_rdfsbase_64 : ClangBuiltin<"__builtin_ia32_rdfsbase64">, 2599 Intrinsic<[llvm_i64_ty], []>; 2600 def int_x86_rdgsbase_64 : ClangBuiltin<"__builtin_ia32_rdgsbase64">, 2601 Intrinsic<[llvm_i64_ty], []>; 2602 def int_x86_wrfsbase_32 : ClangBuiltin<"__builtin_ia32_wrfsbase32">, 2603 Intrinsic<[], [llvm_i32_ty]>; 2604 def int_x86_wrgsbase_32 : ClangBuiltin<"__builtin_ia32_wrgsbase32">, 2605 Intrinsic<[], [llvm_i32_ty]>; 2606 def int_x86_wrfsbase_64 : ClangBuiltin<"__builtin_ia32_wrfsbase64">, 2607 Intrinsic<[], [llvm_i64_ty]>; 2608 def int_x86_wrgsbase_64 : ClangBuiltin<"__builtin_ia32_wrgsbase64">, 2609 Intrinsic<[], [llvm_i64_ty]>; 2610} 2611 2612//===----------------------------------------------------------------------===// 2613// FXSR 2614let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2615 def int_x86_fxrstor : ClangBuiltin<"__builtin_ia32_fxrstor">, 2616 Intrinsic<[], [llvm_ptr_ty], []>; 2617 def int_x86_fxrstor64 : ClangBuiltin<"__builtin_ia32_fxrstor64">, 2618 Intrinsic<[], [llvm_ptr_ty], []>; 2619 def int_x86_fxsave : ClangBuiltin<"__builtin_ia32_fxsave">, 2620 Intrinsic<[], [llvm_ptr_ty], []>; 2621 def int_x86_fxsave64 : ClangBuiltin<"__builtin_ia32_fxsave64">, 2622 Intrinsic<[], [llvm_ptr_ty], []>; 2623} 2624 2625//===----------------------------------------------------------------------===// 2626// XSAVE 2627let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2628 def int_x86_xsave : 2629 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2630 def int_x86_xsave64 : 2631 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2632 def int_x86_xrstor : 2633 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2634 def int_x86_xrstor64 : 2635 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2636 def int_x86_xsaveopt : 2637 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2638 def int_x86_xsaveopt64 : 2639 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2640 def int_x86_xrstors : 2641 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2642 def int_x86_xrstors64 : 2643 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2644 def int_x86_xsavec : 2645 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2646 def int_x86_xsavec64 : 2647 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2648 def int_x86_xsaves : 2649 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2650 def int_x86_xsaves64 : 2651 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 2652 def int_x86_xgetbv : 2653 Intrinsic<[llvm_i64_ty], [llvm_i32_ty], []>; 2654 def int_x86_xsetbv : 2655 Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>; 2656} 2657 2658//===----------------------------------------------------------------------===// 2659// CLFLUSHOPT and CLWB 2660let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2661 def int_x86_clflushopt : ClangBuiltin<"__builtin_ia32_clflushopt">, 2662 Intrinsic<[], [llvm_ptr_ty], []>; 2663 2664 def int_x86_clwb : ClangBuiltin<"__builtin_ia32_clwb">, 2665 Intrinsic<[], [llvm_ptr_ty], []>; 2666} 2667 2668//===----------------------------------------------------------------------===// 2669// Support protection key 2670let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2671 def int_x86_rdpkru : ClangBuiltin <"__builtin_ia32_rdpkru">, 2672 Intrinsic<[llvm_i32_ty], [], []>; 2673 def int_x86_wrpkru : ClangBuiltin<"__builtin_ia32_wrpkru">, 2674 Intrinsic<[], [llvm_i32_ty], []>; 2675} 2676//===----------------------------------------------------------------------===// 2677// Half float conversion 2678 2679let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2680 def int_x86_vcvtps2ph_128 : ClangBuiltin<"__builtin_ia32_vcvtps2ph">, 2681 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_i32_ty], 2682 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2683 def int_x86_vcvtps2ph_256 : ClangBuiltin<"__builtin_ia32_vcvtps2ph256">, 2684 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f32_ty, llvm_i32_ty], 2685 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2686 def int_x86_avx512_mask_vcvtph2ps_512 : 2687 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16i16_ty, llvm_v16f32_ty, 2688 llvm_i16_ty, llvm_i32_ty], 2689 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 2690 def int_x86_avx512_mask_vcvtps2ph_512 : ClangBuiltin<"__builtin_ia32_vcvtps2ph512_mask">, 2691 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16f32_ty, llvm_i32_ty, 2692 llvm_v16i16_ty, llvm_i16_ty], 2693 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2694 def int_x86_avx512_mask_vcvtps2ph_256 : ClangBuiltin<"__builtin_ia32_vcvtps2ph256_mask">, 2695 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f32_ty, llvm_i32_ty, 2696 llvm_v8i16_ty, llvm_i8_ty], 2697 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2698 def int_x86_avx512_mask_vcvtps2ph_128 : ClangBuiltin<"__builtin_ia32_vcvtps2ph_mask">, 2699 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_i32_ty, 2700 llvm_v8i16_ty, llvm_i8_ty], 2701 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2702} 2703 2704//===----------------------------------------------------------------------===// 2705// TBM 2706 2707let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2708 def int_x86_tbm_bextri_u32 : ClangBuiltin<"__builtin_ia32_bextri_u32">, 2709 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 2710 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2711 def int_x86_tbm_bextri_u64 : ClangBuiltin<"__builtin_ia32_bextri_u64">, 2712 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], 2713 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2714} 2715 2716//===----------------------------------------------------------------------===// 2717// RDRAND intrinsics - Return a random value and whether it is valid. 2718// RDSEED intrinsics - Return a NIST SP800-90B & C compliant random value and 2719// whether it is valid. 2720 2721let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2722 // These are declared side-effecting so they don't get eliminated by CSE or 2723 // LICM. 2724 def int_x86_rdrand_16 : Intrinsic<[llvm_i16_ty, llvm_i32_ty], [], []>; 2725 def int_x86_rdrand_32 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [], []>; 2726 def int_x86_rdrand_64 : Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>; 2727 def int_x86_rdseed_16 : Intrinsic<[llvm_i16_ty, llvm_i32_ty], [], []>; 2728 def int_x86_rdseed_32 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [], []>; 2729 def int_x86_rdseed_64 : Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>; 2730} 2731 2732//===----------------------------------------------------------------------===// 2733// ADX 2734 2735let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2736 def int_x86_addcarry_32: 2737 DefaultAttrsIntrinsic<[llvm_i8_ty, llvm_i32_ty], 2738 [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 2739 [IntrNoMem]>; 2740 def int_x86_addcarry_64: 2741 DefaultAttrsIntrinsic<[llvm_i8_ty, llvm_i64_ty], 2742 [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty], 2743 [IntrNoMem]>; 2744 def int_x86_subborrow_32: 2745 DefaultAttrsIntrinsic<[llvm_i8_ty, llvm_i32_ty], 2746 [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 2747 [IntrNoMem]>; 2748 def int_x86_subborrow_64: 2749 DefaultAttrsIntrinsic<[llvm_i8_ty, llvm_i64_ty], 2750 [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty], 2751 [IntrNoMem]>; 2752} 2753 2754//===----------------------------------------------------------------------===// 2755// RTM intrinsics. Transactional Memory support. 2756 2757let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2758 def int_x86_xbegin : ClangBuiltin<"__builtin_ia32_xbegin">, 2759 Intrinsic<[llvm_i32_ty], [], []>; 2760 def int_x86_xend : ClangBuiltin<"__builtin_ia32_xend">, 2761 Intrinsic<[], [], []>; 2762 def int_x86_xabort : ClangBuiltin<"__builtin_ia32_xabort">, 2763 Intrinsic<[], [llvm_i8_ty], [ImmArg<ArgIndex<0>>]>; 2764 def int_x86_xtest : ClangBuiltin<"__builtin_ia32_xtest">, 2765 Intrinsic<[llvm_i32_ty], [], []>; 2766} 2767 2768//===----------------------------------------------------------------------===// 2769// AVX512 2770 2771// Mask ops 2772let TargetPrefix = "x86" in { 2773 def int_x86_avx512_kadd_b : 2774 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8i1_ty, llvm_v8i1_ty], 2775 [IntrNoMem]>; 2776 def int_x86_avx512_kadd_w : 2777 DefaultAttrsIntrinsic<[llvm_v16i1_ty], [llvm_v16i1_ty, llvm_v16i1_ty], 2778 [IntrNoMem]>; 2779 def int_x86_avx512_kadd_d : 2780 DefaultAttrsIntrinsic<[llvm_v32i1_ty], [llvm_v32i1_ty, llvm_v32i1_ty], 2781 [IntrNoMem]>; 2782 def int_x86_avx512_kadd_q : 2783 DefaultAttrsIntrinsic<[llvm_v64i1_ty], [llvm_v64i1_ty, llvm_v64i1_ty], 2784 [IntrNoMem]>; 2785 2786 def int_x86_avx512_ktestc_b : 2787 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8i1_ty, llvm_v8i1_ty], 2788 [IntrNoMem]>; 2789 def int_x86_avx512_ktestc_w : 2790 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v16i1_ty, llvm_v16i1_ty], 2791 [IntrNoMem]>; 2792 def int_x86_avx512_ktestc_d : 2793 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v32i1_ty, llvm_v32i1_ty], 2794 [IntrNoMem]>; 2795 def int_x86_avx512_ktestc_q : 2796 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v64i1_ty, llvm_v64i1_ty], 2797 [IntrNoMem]>; 2798 2799 def int_x86_avx512_ktestz_b : 2800 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8i1_ty, llvm_v8i1_ty], 2801 [IntrNoMem]>; 2802 def int_x86_avx512_ktestz_w : 2803 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v16i1_ty, llvm_v16i1_ty], 2804 [IntrNoMem]>; 2805 def int_x86_avx512_ktestz_d : 2806 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v32i1_ty, llvm_v32i1_ty], 2807 [IntrNoMem]>; 2808 def int_x86_avx512_ktestz_q : 2809 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v64i1_ty, llvm_v64i1_ty], 2810 [IntrNoMem]>; 2811} 2812 2813// Conversion ops 2814let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2815 def int_x86_avx512_cvttss2si : ClangBuiltin<"__builtin_ia32_vcvttss2si32">, 2816 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], 2817 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2818 def int_x86_avx512_cvttss2si64 : ClangBuiltin<"__builtin_ia32_vcvttss2si64">, 2819 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], 2820 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2821 def int_x86_avx512_cvttss2usi : ClangBuiltin<"__builtin_ia32_vcvttss2usi32">, 2822 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], 2823 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2824 def int_x86_avx512_cvttss2usi64 : ClangBuiltin<"__builtin_ia32_vcvttss2usi64">, 2825 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], 2826 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2827 def int_x86_avx512_cvtusi2ss : ClangBuiltin<"__builtin_ia32_cvtusi2ss32">, 2828 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 2829 [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty], 2830 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 2831 def int_x86_avx512_cvtusi642ss : ClangBuiltin<"__builtin_ia32_cvtusi2ss64">, 2832 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 2833 [llvm_v4f32_ty, llvm_i64_ty, llvm_i32_ty], 2834 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 2835 def int_x86_avx512_cvttsd2si : ClangBuiltin<"__builtin_ia32_vcvttsd2si32">, 2836 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], 2837 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2838 def int_x86_avx512_cvttsd2si64 : ClangBuiltin<"__builtin_ia32_vcvttsd2si64">, 2839 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], 2840 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2841 def int_x86_avx512_cvttsd2usi : ClangBuiltin<"__builtin_ia32_vcvttsd2usi32">, 2842 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], 2843 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2844 def int_x86_avx512_cvttsd2usi64 : ClangBuiltin<"__builtin_ia32_vcvttsd2usi64">, 2845 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], 2846 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2847 def int_x86_avx512_cvtusi642sd : ClangBuiltin<"__builtin_ia32_cvtusi2sd64">, 2848 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 2849 [llvm_v2f64_ty, llvm_i64_ty, llvm_i32_ty], 2850 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 2851 def int_x86_avx512_vcvtss2usi32 : ClangBuiltin<"__builtin_ia32_vcvtss2usi32">, 2852 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], 2853 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2854 def int_x86_avx512_vcvtss2usi64 : ClangBuiltin<"__builtin_ia32_vcvtss2usi64">, 2855 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], 2856 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2857 def int_x86_avx512_vcvtss2si32 : ClangBuiltin<"__builtin_ia32_vcvtss2si32">, 2858 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], 2859 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2860 def int_x86_avx512_vcvtss2si64 : ClangBuiltin<"__builtin_ia32_vcvtss2si64">, 2861 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], 2862 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2863 def int_x86_avx512_vcvtsd2usi32 : ClangBuiltin<"__builtin_ia32_vcvtsd2usi32">, 2864 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], 2865 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2866 def int_x86_avx512_vcvtsd2usi64 : ClangBuiltin<"__builtin_ia32_vcvtsd2usi64">, 2867 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], 2868 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2869 def int_x86_avx512_vcvtsd2si32 : ClangBuiltin<"__builtin_ia32_vcvtsd2si32">, 2870 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], 2871 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2872 def int_x86_avx512_vcvtsd2si64 : ClangBuiltin<"__builtin_ia32_vcvtsd2si64">, 2873 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], 2874 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2875 def int_x86_avx512_cvtsi2ss32 : ClangBuiltin<"__builtin_ia32_cvtsi2ss32">, 2876 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 2877 [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty], 2878 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 2879 def int_x86_avx512_cvtsi2ss64 : ClangBuiltin<"__builtin_ia32_cvtsi2ss64">, 2880 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 2881 [llvm_v4f32_ty, llvm_i64_ty, llvm_i32_ty], 2882 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 2883 def int_x86_avx512_cvtsi2sd64 : ClangBuiltin<"__builtin_ia32_cvtsi2sd64">, 2884 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 2885 [llvm_v2f64_ty, llvm_i64_ty, llvm_i32_ty], 2886 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 2887} 2888 2889// Pack ops. 2890let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2891 def int_x86_avx512_packsswb_512 : ClangBuiltin<"__builtin_ia32_packsswb512">, 2892 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32i16_ty,llvm_v32i16_ty], 2893 [IntrNoMem]>; 2894 def int_x86_avx512_packssdw_512 : ClangBuiltin<"__builtin_ia32_packssdw512">, 2895 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 2896 [IntrNoMem]>; 2897 def int_x86_avx512_packuswb_512 : ClangBuiltin<"__builtin_ia32_packuswb512">, 2898 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32i16_ty,llvm_v32i16_ty], 2899 [IntrNoMem]>; 2900 def int_x86_avx512_packusdw_512 : ClangBuiltin<"__builtin_ia32_packusdw512">, 2901 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 2902 [IntrNoMem]>; 2903} 2904 2905// Vector convert 2906let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2907 def int_x86_avx512_sitofp_round : 2908 DefaultAttrsIntrinsic<[llvm_anyfloat_ty], [llvm_anyint_ty, llvm_i32_ty], 2909 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2910 2911 def int_x86_avx512_uitofp_round : 2912 DefaultAttrsIntrinsic<[llvm_anyfloat_ty], [llvm_anyint_ty, llvm_i32_ty], 2913 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2914 2915 def int_x86_avx512_mask_cvtpd2dq_128 : 2916 ClangBuiltin<"__builtin_ia32_cvtpd2dq128_mask">, 2917 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2918 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 2919 [IntrNoMem]>; 2920 2921 def int_x86_avx512_mask_cvtpd2dq_512 : 2922 ClangBuiltin<"__builtin_ia32_cvtpd2dq512_mask">, 2923 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 2924 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 2925 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 2926 2927 def int_x86_avx512_mask_cvtpd2ps_512 : 2928 ClangBuiltin<"__builtin_ia32_cvtpd2ps512_mask">, 2929 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 2930 [llvm_v8f64_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 2931 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 2932 2933 def int_x86_avx512_mask_cvtsd2ss_round : 2934 ClangBuiltin<"__builtin_ia32_cvtsd2ss_round_mask">, 2935 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 2936 [llvm_v4f32_ty, llvm_v2f64_ty, llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], 2937 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 2938 2939 def int_x86_avx512_mask_cvtss2sd_round : 2940 ClangBuiltin<"__builtin_ia32_cvtss2sd_round_mask">, 2941 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 2942 [llvm_v2f64_ty, llvm_v4f32_ty, llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], 2943 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 2944 2945 def int_x86_avx512_mask_cvtpd2ps : 2946 ClangBuiltin<"__builtin_ia32_cvtpd2ps_mask">, 2947 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 2948 [llvm_v2f64_ty, llvm_v4f32_ty, llvm_i8_ty], 2949 [IntrNoMem]>; 2950 2951 def int_x86_avx512_mask_cvtpd2qq_128 : 2952 ClangBuiltin<"__builtin_ia32_cvtpd2qq128_mask">, 2953 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 2954 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 2955 [IntrNoMem]>; 2956 2957 def int_x86_avx512_mask_cvtpd2qq_256 : 2958 ClangBuiltin<"__builtin_ia32_cvtpd2qq256_mask">, 2959 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 2960 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 2961 [IntrNoMem]>; 2962 2963 def int_x86_avx512_mask_cvtpd2qq_512 : 2964 ClangBuiltin<"__builtin_ia32_cvtpd2qq512_mask">, 2965 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 2966 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 2967 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 2968 2969 def int_x86_avx512_mask_cvtpd2udq_128 : 2970 ClangBuiltin<"__builtin_ia32_cvtpd2udq128_mask">, 2971 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2972 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 2973 [IntrNoMem]>; 2974 2975 def int_x86_avx512_mask_cvtpd2udq_256 : 2976 ClangBuiltin<"__builtin_ia32_cvtpd2udq256_mask">, 2977 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 2978 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty], 2979 [IntrNoMem]>; 2980 2981 def int_x86_avx512_mask_cvtpd2udq_512 : 2982 ClangBuiltin<"__builtin_ia32_cvtpd2udq512_mask">, 2983 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 2984 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 2985 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 2986 2987 def int_x86_avx512_mask_cvtpd2uqq_128 : 2988 ClangBuiltin<"__builtin_ia32_cvtpd2uqq128_mask">, 2989 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 2990 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 2991 [IntrNoMem]>; 2992 2993 def int_x86_avx512_mask_cvtpd2uqq_256 : 2994 ClangBuiltin<"__builtin_ia32_cvtpd2uqq256_mask">, 2995 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 2996 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 2997 [IntrNoMem]>; 2998 2999 def int_x86_avx512_mask_cvtpd2uqq_512 : 3000 ClangBuiltin<"__builtin_ia32_cvtpd2uqq512_mask">, 3001 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 3002 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3003 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3004 3005 def int_x86_avx512_mask_cvtps2dq_128 : 3006 ClangBuiltin<"__builtin_ia32_cvtps2dq128_mask">, 3007 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 3008 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 3009 [IntrNoMem]>; 3010 3011 def int_x86_avx512_mask_cvtps2dq_256 : 3012 ClangBuiltin<"__builtin_ia32_cvtps2dq256_mask">, 3013 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 3014 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 3015 [IntrNoMem]>; 3016 3017 def int_x86_avx512_mask_cvtps2dq_512 : 3018 ClangBuiltin<"__builtin_ia32_cvtps2dq512_mask">, 3019 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 3020 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 3021 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3022 3023 def int_x86_avx512_mask_cvtps2pd_512 : 3024 ClangBuiltin<"__builtin_ia32_cvtps2pd512_mask">, 3025 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3026 [llvm_v8f32_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], 3027 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3028 3029 def int_x86_avx512_mask_cvtps2qq_128 : 3030 ClangBuiltin<"__builtin_ia32_cvtps2qq128_mask">, 3031 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 3032 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 3033 [IntrNoMem]>; 3034 3035 def int_x86_avx512_mask_cvtps2qq_256 : 3036 ClangBuiltin<"__builtin_ia32_cvtps2qq256_mask">, 3037 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 3038 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 3039 [IntrNoMem]>; 3040 3041 def int_x86_avx512_mask_cvtps2qq_512 : 3042 ClangBuiltin<"__builtin_ia32_cvtps2qq512_mask">, 3043 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 3044 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3045 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3046 3047 def int_x86_avx512_mask_cvtps2udq_128 : 3048 ClangBuiltin<"__builtin_ia32_cvtps2udq128_mask">, 3049 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 3050 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 3051 [IntrNoMem]>; 3052 3053 def int_x86_avx512_mask_cvtps2udq_256 : 3054 ClangBuiltin<"__builtin_ia32_cvtps2udq256_mask">, 3055 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 3056 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 3057 [IntrNoMem]>; 3058 3059 def int_x86_avx512_mask_cvtps2udq_512 : 3060 ClangBuiltin<"__builtin_ia32_cvtps2udq512_mask">, 3061 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 3062 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 3063 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3064 3065 def int_x86_avx512_mask_cvtps2uqq_128 : 3066 ClangBuiltin<"__builtin_ia32_cvtps2uqq128_mask">, 3067 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 3068 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 3069 [IntrNoMem]>; 3070 3071 def int_x86_avx512_mask_cvtps2uqq_256 : 3072 ClangBuiltin<"__builtin_ia32_cvtps2uqq256_mask">, 3073 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 3074 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 3075 [IntrNoMem]>; 3076 3077 def int_x86_avx512_mask_cvtps2uqq_512 : 3078 ClangBuiltin<"__builtin_ia32_cvtps2uqq512_mask">, 3079 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 3080 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3081 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3082 3083 def int_x86_avx512_mask_cvtqq2ps_128 : 3084 ClangBuiltin<"__builtin_ia32_cvtqq2ps128_mask">, 3085 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3086 [llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty], 3087 [IntrNoMem]>; 3088 3089 def int_x86_avx512_mask_cvttpd2dq_128 : 3090 ClangBuiltin<"__builtin_ia32_cvttpd2dq128_mask">, 3091 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 3092 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 3093 [IntrNoMem]>; 3094 3095 def int_x86_avx512_mask_cvttpd2dq_512 : 3096 ClangBuiltin<"__builtin_ia32_cvttpd2dq512_mask">, 3097 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 3098 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 3099 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3100 3101 def int_x86_avx512_mask_cvttpd2qq_128 : 3102 ClangBuiltin<"__builtin_ia32_cvttpd2qq128_mask">, 3103 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 3104 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 3105 [IntrNoMem]>; 3106 3107 def int_x86_avx512_mask_cvttpd2qq_256 : 3108 ClangBuiltin<"__builtin_ia32_cvttpd2qq256_mask">, 3109 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 3110 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 3111 [IntrNoMem]>; 3112 3113 def int_x86_avx512_mask_cvttpd2qq_512 : 3114 ClangBuiltin<"__builtin_ia32_cvttpd2qq512_mask">, 3115 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 3116 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3117 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3118 3119 def int_x86_avx512_mask_cvttpd2udq_128 : 3120 ClangBuiltin<"__builtin_ia32_cvttpd2udq128_mask">, 3121 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 3122 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 3123 [IntrNoMem]>; 3124 3125 def int_x86_avx512_mask_cvttpd2udq_256 : 3126 ClangBuiltin<"__builtin_ia32_cvttpd2udq256_mask">, 3127 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 3128 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty], 3129 [IntrNoMem]>; 3130 3131 def int_x86_avx512_mask_cvttpd2udq_512 : 3132 ClangBuiltin<"__builtin_ia32_cvttpd2udq512_mask">, 3133 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 3134 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 3135 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3136 3137 def int_x86_avx512_mask_cvttpd2uqq_128 : 3138 ClangBuiltin<"__builtin_ia32_cvttpd2uqq128_mask">, 3139 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 3140 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 3141 [IntrNoMem]>; 3142 3143 def int_x86_avx512_mask_cvttpd2uqq_256 : 3144 ClangBuiltin<"__builtin_ia32_cvttpd2uqq256_mask">, 3145 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 3146 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 3147 [IntrNoMem]>; 3148 3149 def int_x86_avx512_mask_cvttpd2uqq_512 : 3150 ClangBuiltin<"__builtin_ia32_cvttpd2uqq512_mask">, 3151 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 3152 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3153 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3154 3155 def int_x86_avx512_mask_cvttps2dq_512 : 3156 ClangBuiltin<"__builtin_ia32_cvttps2dq512_mask">, 3157 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 3158 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 3159 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3160 3161 def int_x86_avx512_mask_cvttps2qq_128 : 3162 ClangBuiltin<"__builtin_ia32_cvttps2qq128_mask">, 3163 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 3164 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 3165 [IntrNoMem]>; 3166 3167 def int_x86_avx512_mask_cvttps2qq_256 : 3168 ClangBuiltin<"__builtin_ia32_cvttps2qq256_mask">, 3169 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 3170 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 3171 [IntrNoMem]>; 3172 3173 def int_x86_avx512_mask_cvttps2qq_512 : 3174 ClangBuiltin<"__builtin_ia32_cvttps2qq512_mask">, 3175 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 3176 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3177 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3178 3179 def int_x86_avx512_mask_cvttps2udq_128 : 3180 ClangBuiltin<"__builtin_ia32_cvttps2udq128_mask">, 3181 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 3182 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 3183 [IntrNoMem]>; 3184 3185 def int_x86_avx512_mask_cvttps2udq_256 : 3186 ClangBuiltin<"__builtin_ia32_cvttps2udq256_mask">, 3187 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 3188 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 3189 [IntrNoMem]>; 3190 3191 def int_x86_avx512_mask_cvttps2udq_512 : 3192 ClangBuiltin<"__builtin_ia32_cvttps2udq512_mask">, 3193 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 3194 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 3195 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3196 3197 def int_x86_avx512_mask_cvttps2uqq_128 : 3198 ClangBuiltin<"__builtin_ia32_cvttps2uqq128_mask">, 3199 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 3200 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 3201 [IntrNoMem]>; 3202 3203 def int_x86_avx512_mask_cvttps2uqq_256 : 3204 ClangBuiltin<"__builtin_ia32_cvttps2uqq256_mask">, 3205 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 3206 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 3207 [IntrNoMem]>; 3208 3209 def int_x86_avx512_mask_cvttps2uqq_512 : 3210 ClangBuiltin<"__builtin_ia32_cvttps2uqq512_mask">, 3211 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 3212 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3213 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3214 3215 def int_x86_avx512_mask_cvtuqq2ps_128 : 3216 ClangBuiltin<"__builtin_ia32_cvtuqq2ps128_mask">, 3217 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3218 [llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty], 3219 [IntrNoMem]>; 3220 3221 def int_x86_avx512_mask_rndscale_pd_128 : ClangBuiltin<"__builtin_ia32_rndscalepd_128_mask">, 3222 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3223 [llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, 3224 llvm_i8_ty], 3225 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3226 def int_x86_avx512_mask_rndscale_pd_256 : ClangBuiltin<"__builtin_ia32_rndscalepd_256_mask">, 3227 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3228 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, 3229 llvm_i8_ty], 3230 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3231 def int_x86_avx512_mask_rndscale_pd_512 : ClangBuiltin<"__builtin_ia32_rndscalepd_mask">, 3232 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3233 [llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, 3234 llvm_i8_ty, llvm_i32_ty], 3235 [IntrNoMem, ImmArg<ArgIndex<1>>, 3236 ImmArg<ArgIndex<4>>]>; 3237 def int_x86_avx512_mask_rndscale_ps_128 : ClangBuiltin<"__builtin_ia32_rndscaleps_128_mask">, 3238 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3239 [llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, 3240 llvm_i8_ty], 3241 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3242 def int_x86_avx512_mask_rndscale_ps_256 : ClangBuiltin<"__builtin_ia32_rndscaleps_256_mask">, 3243 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 3244 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, 3245 llvm_i8_ty], 3246 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3247 def int_x86_avx512_mask_rndscale_ps_512 : ClangBuiltin<"__builtin_ia32_rndscaleps_mask">, 3248 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 3249 [llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, 3250 llvm_i16_ty, llvm_i32_ty], 3251 [IntrNoMem, ImmArg<ArgIndex<1>>, 3252 ImmArg<ArgIndex<4>>]>; 3253 def int_x86_avx512_mask_reduce_pd_128 : ClangBuiltin<"__builtin_ia32_reducepd128_mask">, 3254 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3255 [llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, 3256 llvm_i8_ty], 3257 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3258 def int_x86_avx512_mask_reduce_pd_256 : ClangBuiltin<"__builtin_ia32_reducepd256_mask">, 3259 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3260 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, 3261 llvm_i8_ty], 3262 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3263 def int_x86_avx512_mask_reduce_pd_512 : ClangBuiltin<"__builtin_ia32_reducepd512_mask">, 3264 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3265 [llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, 3266 llvm_i8_ty, llvm_i32_ty], 3267 [IntrNoMem, ImmArg<ArgIndex<1>>, 3268 ImmArg<ArgIndex<4>>]>; 3269 def int_x86_avx512_mask_reduce_ps_128 : ClangBuiltin<"__builtin_ia32_reduceps128_mask">, 3270 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3271 [llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, 3272 llvm_i8_ty], 3273 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3274 def int_x86_avx512_mask_reduce_ps_256 : ClangBuiltin<"__builtin_ia32_reduceps256_mask">, 3275 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 3276 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, 3277 llvm_i8_ty], 3278 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3279 def int_x86_avx512_mask_reduce_ps_512 : ClangBuiltin<"__builtin_ia32_reduceps512_mask">, 3280 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 3281 [llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, 3282 llvm_i16_ty, llvm_i32_ty], 3283 [IntrNoMem, ImmArg<ArgIndex<1>>, 3284 ImmArg<ArgIndex<4>>]>; 3285def int_x86_avx512_mask_range_pd_128 : ClangBuiltin<"__builtin_ia32_rangepd128_mask">, 3286 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3287 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, 3288 llvm_v2f64_ty, llvm_i8_ty], 3289 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3290def int_x86_avx512_mask_range_pd_256 : ClangBuiltin<"__builtin_ia32_rangepd256_mask">, 3291 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3292 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, 3293 llvm_v4f64_ty, llvm_i8_ty], 3294 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3295def int_x86_avx512_mask_range_pd_512 : ClangBuiltin<"__builtin_ia32_rangepd512_mask">, 3296 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3297 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty, 3298 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], 3299 [IntrNoMem, ImmArg<ArgIndex<2>>, 3300 ImmArg<ArgIndex<5>>]>; 3301def int_x86_avx512_mask_range_ps_128 : ClangBuiltin<"__builtin_ia32_rangeps128_mask">, 3302 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3303 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, 3304 llvm_v4f32_ty, llvm_i8_ty], 3305 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3306def int_x86_avx512_mask_range_ps_256 : ClangBuiltin<"__builtin_ia32_rangeps256_mask">, 3307 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 3308 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, 3309 llvm_v8f32_ty, llvm_i8_ty], 3310 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3311def int_x86_avx512_mask_range_ps_512 : ClangBuiltin<"__builtin_ia32_rangeps512_mask">, 3312 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 3313 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty, 3314 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], 3315 [IntrNoMem, ImmArg<ArgIndex<2>>, 3316 ImmArg<ArgIndex<5>>]>; 3317} 3318 3319// Vector broadcast from mask 3320let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3321 def int_x86_avx512_broadcastmw_512 : 3322 ClangBuiltin<"__builtin_ia32_broadcastmw512">, 3323 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_i16_ty], [IntrNoMem]>; 3324 def int_x86_avx512_broadcastmw_256 : 3325 ClangBuiltin<"__builtin_ia32_broadcastmw256">, 3326 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_i16_ty], [IntrNoMem]>; 3327 def int_x86_avx512_broadcastmw_128 : 3328 ClangBuiltin<"__builtin_ia32_broadcastmw128">, 3329 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_i16_ty], [IntrNoMem]>; 3330 def int_x86_avx512_broadcastmb_512 : 3331 ClangBuiltin<"__builtin_ia32_broadcastmb512">, 3332 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_i8_ty], [IntrNoMem]>; 3333 def int_x86_avx512_broadcastmb_256 : 3334 ClangBuiltin<"__builtin_ia32_broadcastmb256">, 3335 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_i8_ty], [IntrNoMem]>; 3336 def int_x86_avx512_broadcastmb_128 : 3337 ClangBuiltin<"__builtin_ia32_broadcastmb128">, 3338 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_i8_ty], [IntrNoMem]>; 3339} 3340 3341// Arithmetic ops 3342let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3343 3344 def int_x86_avx512_add_ps_512 : ClangBuiltin<"__builtin_ia32_addps512">, 3345 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 3346 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3347 def int_x86_avx512_add_pd_512 : ClangBuiltin<"__builtin_ia32_addpd512">, 3348 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 3349 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3350 def int_x86_avx512_sub_ps_512 : ClangBuiltin<"__builtin_ia32_subps512">, 3351 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 3352 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3353 def int_x86_avx512_sub_pd_512 : ClangBuiltin<"__builtin_ia32_subpd512">, 3354 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 3355 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3356 def int_x86_avx512_mul_ps_512 : ClangBuiltin<"__builtin_ia32_mulps512">, 3357 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 3358 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3359 def int_x86_avx512_mul_pd_512 : ClangBuiltin<"__builtin_ia32_mulpd512">, 3360 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 3361 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3362 def int_x86_avx512_div_ps_512 : ClangBuiltin<"__builtin_ia32_divps512">, 3363 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 3364 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3365 def int_x86_avx512_div_pd_512 : ClangBuiltin<"__builtin_ia32_divpd512">, 3366 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 3367 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3368 3369 def int_x86_avx512_max_ps_512 : ClangBuiltin<"__builtin_ia32_maxps512">, 3370 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 3371 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3372 def int_x86_avx512_max_pd_512 : ClangBuiltin<"__builtin_ia32_maxpd512">, 3373 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 3374 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3375 def int_x86_avx512_min_ps_512 : ClangBuiltin<"__builtin_ia32_minps512">, 3376 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 3377 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3378 def int_x86_avx512_min_pd_512 : ClangBuiltin<"__builtin_ia32_minpd512">, 3379 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 3380 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3381 3382 def int_x86_avx512_mask_add_ss_round : ClangBuiltin<"__builtin_ia32_addss_round_mask">, 3383 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3384 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3385 llvm_i8_ty, llvm_i32_ty], 3386 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3387 def int_x86_avx512_mask_div_ss_round : ClangBuiltin<"__builtin_ia32_divss_round_mask">, 3388 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3389 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3390 llvm_i8_ty, llvm_i32_ty], 3391 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3392 def int_x86_avx512_mask_mul_ss_round : ClangBuiltin<"__builtin_ia32_mulss_round_mask">, 3393 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3394 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3395 llvm_i8_ty, llvm_i32_ty], 3396 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3397 def int_x86_avx512_mask_sub_ss_round : ClangBuiltin<"__builtin_ia32_subss_round_mask">, 3398 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3399 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3400 llvm_i8_ty, llvm_i32_ty], 3401 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3402 def int_x86_avx512_mask_max_ss_round : ClangBuiltin<"__builtin_ia32_maxss_round_mask">, 3403 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3404 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3405 llvm_i8_ty, llvm_i32_ty], 3406 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3407 def int_x86_avx512_mask_min_ss_round : ClangBuiltin<"__builtin_ia32_minss_round_mask">, 3408 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3409 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3410 llvm_i8_ty, llvm_i32_ty], 3411 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3412 def int_x86_avx512_mask_add_sd_round : ClangBuiltin<"__builtin_ia32_addsd_round_mask">, 3413 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3414 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3415 llvm_i8_ty, llvm_i32_ty], 3416 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3417 def int_x86_avx512_mask_div_sd_round : ClangBuiltin<"__builtin_ia32_divsd_round_mask">, 3418 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3419 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3420 llvm_i8_ty, llvm_i32_ty], 3421 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3422 def int_x86_avx512_mask_mul_sd_round : ClangBuiltin<"__builtin_ia32_mulsd_round_mask">, 3423 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3424 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3425 llvm_i8_ty, llvm_i32_ty], 3426 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3427 def int_x86_avx512_mask_sub_sd_round : ClangBuiltin<"__builtin_ia32_subsd_round_mask">, 3428 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3429 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3430 llvm_i8_ty, llvm_i32_ty], 3431 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3432 def int_x86_avx512_mask_max_sd_round : ClangBuiltin<"__builtin_ia32_maxsd_round_mask">, 3433 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3434 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3435 llvm_i8_ty, llvm_i32_ty], 3436 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3437 def int_x86_avx512_mask_min_sd_round : ClangBuiltin<"__builtin_ia32_minsd_round_mask">, 3438 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3439 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3440 llvm_i8_ty, llvm_i32_ty], 3441 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3442 3443 def int_x86_avx512_mask_rndscale_ss : ClangBuiltin<"__builtin_ia32_rndscaless_round_mask">, 3444 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3445 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3446 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 3447 [IntrNoMem, ImmArg<ArgIndex<4>>, 3448 ImmArg<ArgIndex<5>>]>; 3449 def int_x86_avx512_mask_rndscale_sd : ClangBuiltin<"__builtin_ia32_rndscalesd_round_mask">, 3450 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3451 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3452 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 3453 [IntrNoMem, ImmArg<ArgIndex<4>>, 3454 ImmArg<ArgIndex<5>>]>; 3455 def int_x86_avx512_mask_range_ss : ClangBuiltin<"__builtin_ia32_rangess128_round_mask">, 3456 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3457 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3458 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 3459 [IntrNoMem, ImmArg<ArgIndex<4>>, 3460 ImmArg<ArgIndex<5>>]>; 3461 def int_x86_avx512_mask_range_sd : ClangBuiltin<"__builtin_ia32_rangesd128_round_mask">, 3462 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3463 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3464 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 3465 [IntrNoMem, ImmArg<ArgIndex<4>>, 3466 ImmArg<ArgIndex<5>>]>; 3467 def int_x86_avx512_mask_reduce_ss : ClangBuiltin<"__builtin_ia32_reducess_mask">, 3468 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3469 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3470 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 3471 [IntrNoMem, ImmArg<ArgIndex<4>>, 3472 ImmArg<ArgIndex<5>>]>; 3473 def int_x86_avx512_mask_reduce_sd : ClangBuiltin<"__builtin_ia32_reducesd_mask">, 3474 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3475 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3476 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 3477 [IntrNoMem, ImmArg<ArgIndex<4>>, 3478 ImmArg<ArgIndex<5>>]>; 3479 def int_x86_avx512_mask_scalef_sd : ClangBuiltin<"__builtin_ia32_scalefsd_round_mask">, 3480 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3481 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3482 llvm_i8_ty, llvm_i32_ty], 3483 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3484 def int_x86_avx512_mask_scalef_ss : ClangBuiltin<"__builtin_ia32_scalefss_round_mask">, 3485 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3486 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3487 llvm_i8_ty, llvm_i32_ty], 3488 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3489 def int_x86_avx512_mask_scalef_pd_128 : ClangBuiltin<"__builtin_ia32_scalefpd128_mask">, 3490 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 3491 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 3492 def int_x86_avx512_mask_scalef_pd_256 : ClangBuiltin<"__builtin_ia32_scalefpd256_mask">, 3493 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3494 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, 3495 llvm_i8_ty], 3496 [IntrNoMem]>; 3497 def int_x86_avx512_mask_scalef_pd_512 : ClangBuiltin<"__builtin_ia32_scalefpd512_mask">, 3498 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3499 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, 3500 llvm_i8_ty, llvm_i32_ty], 3501 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3502 def int_x86_avx512_mask_scalef_ps_128 : ClangBuiltin<"__builtin_ia32_scalefps128_mask">, 3503 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 3504 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 3505 def int_x86_avx512_mask_scalef_ps_256 : ClangBuiltin<"__builtin_ia32_scalefps256_mask">, 3506 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 3507 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 3508 def int_x86_avx512_mask_scalef_ps_512 : ClangBuiltin<"__builtin_ia32_scalefps512_mask">, 3509 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 3510 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 3511 llvm_i16_ty, llvm_i32_ty], 3512 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3513 3514 def int_x86_avx512_mask_sqrt_ss : 3515 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3516 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3517 llvm_i8_ty, llvm_i32_ty], 3518 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3519 def int_x86_avx512_mask_sqrt_sd : 3520 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3521 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3522 llvm_i8_ty, llvm_i32_ty], 3523 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3524 3525 def int_x86_avx512_sqrt_pd_512 : 3526 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_i32_ty], 3527 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3528 def int_x86_avx512_sqrt_ps_512 : 3529 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_i32_ty], 3530 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3531 def int_x86_avx512_mask_fixupimm_pd_128 : 3532 ClangBuiltin<"__builtin_ia32_fixupimmpd128_mask">, 3533 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3534 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty], 3535 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3536 def int_x86_avx512_maskz_fixupimm_pd_128 : 3537 ClangBuiltin<"__builtin_ia32_fixupimmpd128_maskz">, 3538 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3539 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty], 3540 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3541 def int_x86_avx512_mask_fixupimm_pd_256 : 3542 ClangBuiltin<"__builtin_ia32_fixupimmpd256_mask">, 3543 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3544 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_i8_ty], 3545 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3546 def int_x86_avx512_maskz_fixupimm_pd_256 : 3547 ClangBuiltin<"__builtin_ia32_fixupimmpd256_maskz">, 3548 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3549 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_i8_ty], 3550 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3551 def int_x86_avx512_mask_fixupimm_pd_512 : 3552 ClangBuiltin<"__builtin_ia32_fixupimmpd512_mask">, 3553 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3554 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8i64_ty, llvm_i32_ty, llvm_i8_ty, 3555 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 3556 def int_x86_avx512_maskz_fixupimm_pd_512 : 3557 ClangBuiltin<"__builtin_ia32_fixupimmpd512_maskz">, 3558 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3559 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8i64_ty, llvm_i32_ty, llvm_i8_ty, 3560 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 3561 def int_x86_avx512_mask_fixupimm_ps_128 : 3562 ClangBuiltin<"__builtin_ia32_fixupimmps128_mask">, 3563 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3564 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty], 3565 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3566 def int_x86_avx512_maskz_fixupimm_ps_128 : 3567 ClangBuiltin<"__builtin_ia32_fixupimmps128_maskz">, 3568 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3569 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty], 3570 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3571 def int_x86_avx512_mask_fixupimm_ps_256 : 3572 ClangBuiltin<"__builtin_ia32_fixupimmps256_mask">, 3573 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 3574 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_i8_ty], 3575 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3576 def int_x86_avx512_maskz_fixupimm_ps_256 : 3577 ClangBuiltin<"__builtin_ia32_fixupimmps256_maskz">, 3578 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 3579 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_i8_ty], 3580 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3581 def int_x86_avx512_mask_fixupimm_ps_512 : 3582 ClangBuiltin<"__builtin_ia32_fixupimmps512_mask">, 3583 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 3584 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16i32_ty, llvm_i32_ty, 3585 llvm_i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 3586 def int_x86_avx512_maskz_fixupimm_ps_512 : 3587 ClangBuiltin<"__builtin_ia32_fixupimmps512_maskz">, 3588 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 3589 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16i32_ty, llvm_i32_ty, 3590 llvm_i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 3591 def int_x86_avx512_mask_fixupimm_sd : 3592 ClangBuiltin<"__builtin_ia32_fixupimmsd_mask">, 3593 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3594 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty, 3595 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 3596 def int_x86_avx512_maskz_fixupimm_sd : 3597 ClangBuiltin<"__builtin_ia32_fixupimmsd_maskz">, 3598 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3599 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty, 3600 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 3601 def int_x86_avx512_mask_fixupimm_ss : 3602 ClangBuiltin<"__builtin_ia32_fixupimmss_mask">, 3603 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3604 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty, 3605 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 3606 def int_x86_avx512_maskz_fixupimm_ss : 3607 ClangBuiltin<"__builtin_ia32_fixupimmss_maskz">, 3608 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3609 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty, 3610 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 3611 def int_x86_avx512_mask_getexp_pd_128 : ClangBuiltin<"__builtin_ia32_getexppd128_mask">, 3612 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3613 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3614 [IntrNoMem]>; 3615 def int_x86_avx512_mask_getexp_pd_256 : ClangBuiltin<"__builtin_ia32_getexppd256_mask">, 3616 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3617 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3618 [IntrNoMem]>; 3619 def int_x86_avx512_mask_getexp_pd_512 : ClangBuiltin<"__builtin_ia32_getexppd512_mask">, 3620 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3621 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 3622 llvm_i32_ty], 3623 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3624 def int_x86_avx512_mask_getexp_ps_128 : ClangBuiltin<"__builtin_ia32_getexpps128_mask">, 3625 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3626 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3627 [IntrNoMem]>; 3628 def int_x86_avx512_mask_getexp_ps_256 : ClangBuiltin<"__builtin_ia32_getexpps256_mask">, 3629 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 3630 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3631 [IntrNoMem]>; 3632 def int_x86_avx512_mask_getexp_ps_512 : ClangBuiltin<"__builtin_ia32_getexpps512_mask">, 3633 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 3634 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3635 llvm_i32_ty], 3636 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 3637 3638 def int_x86_avx512_mask_getexp_ss : ClangBuiltin<"__builtin_ia32_getexpss128_round_mask">, 3639 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3640 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3641 llvm_i8_ty, llvm_i32_ty], 3642 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3643 def int_x86_avx512_mask_getexp_sd : ClangBuiltin<"__builtin_ia32_getexpsd128_round_mask">, 3644 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3645 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3646 llvm_i8_ty, llvm_i32_ty], 3647 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 3648 3649 def int_x86_avx512_mask_getmant_pd_128 : 3650 ClangBuiltin<"__builtin_ia32_getmantpd128_mask">, 3651 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3652 [llvm_v2f64_ty,llvm_i32_ty, llvm_v2f64_ty, llvm_i8_ty], 3653 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3654 3655 def int_x86_avx512_mask_getmant_pd_256 : 3656 ClangBuiltin<"__builtin_ia32_getmantpd256_mask">, 3657 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3658 [llvm_v4f64_ty,llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty], 3659 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3660 3661 def int_x86_avx512_mask_getmant_pd_512 : 3662 ClangBuiltin<"__builtin_ia32_getmantpd512_mask">, 3663 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3664 [llvm_v8f64_ty,llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty,llvm_i32_ty ], 3665 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 3666 3667 def int_x86_avx512_mask_getmant_ps_128 : 3668 ClangBuiltin<"__builtin_ia32_getmantps128_mask">, 3669 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3670 [llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, llvm_i8_ty], 3671 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3672 3673 def int_x86_avx512_mask_getmant_ps_256 : 3674 ClangBuiltin<"__builtin_ia32_getmantps256_mask">, 3675 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 3676 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty], 3677 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 3678 3679 def int_x86_avx512_mask_getmant_ps_512 : 3680 ClangBuiltin<"__builtin_ia32_getmantps512_mask">, 3681 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 3682 [llvm_v16f32_ty,llvm_i32_ty, llvm_v16f32_ty,llvm_i16_ty,llvm_i32_ty], 3683 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 3684 3685 def int_x86_avx512_mask_getmant_ss : 3686 ClangBuiltin<"__builtin_ia32_getmantss_round_mask">, 3687 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3688 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, 3689 llvm_i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 3690 3691 def int_x86_avx512_mask_getmant_sd : 3692 ClangBuiltin<"__builtin_ia32_getmantsd_round_mask">, 3693 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3694 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, 3695 llvm_i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 3696 3697 def int_x86_avx512_rsqrt14_ss : ClangBuiltin<"__builtin_ia32_rsqrt14ss_mask">, 3698 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3699 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3700 llvm_i8_ty], 3701 [IntrNoMem]>; 3702 def int_x86_avx512_rsqrt14_sd : ClangBuiltin<"__builtin_ia32_rsqrt14sd_mask">, 3703 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3704 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3705 llvm_i8_ty], 3706 [IntrNoMem]>; 3707 3708 def int_x86_avx512_rsqrt14_pd_128 : ClangBuiltin<"__builtin_ia32_rsqrt14pd128_mask">, 3709 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3710 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3711 [IntrNoMem]>; 3712 def int_x86_avx512_rsqrt14_pd_256 : ClangBuiltin<"__builtin_ia32_rsqrt14pd256_mask">, 3713 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3714 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3715 [IntrNoMem]>; 3716 def int_x86_avx512_rsqrt14_pd_512 : ClangBuiltin<"__builtin_ia32_rsqrt14pd512_mask">, 3717 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3718 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty], 3719 [IntrNoMem]>; 3720 def int_x86_avx512_rsqrt14_ps_128 : ClangBuiltin<"__builtin_ia32_rsqrt14ps128_mask">, 3721 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3722 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3723 [IntrNoMem]>; 3724 def int_x86_avx512_rsqrt14_ps_256 : ClangBuiltin<"__builtin_ia32_rsqrt14ps256_mask">, 3725 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 3726 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3727 [IntrNoMem]>; 3728 def int_x86_avx512_rsqrt14_ps_512 : ClangBuiltin<"__builtin_ia32_rsqrt14ps512_mask">, 3729 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 3730 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], 3731 [IntrNoMem]>; 3732 def int_x86_avx512_rcp14_ss : ClangBuiltin<"__builtin_ia32_rcp14ss_mask">, 3733 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3734 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 3735 llvm_i8_ty], 3736 [IntrNoMem]>; 3737 def int_x86_avx512_rcp14_sd : ClangBuiltin<"__builtin_ia32_rcp14sd_mask">, 3738 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3739 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 3740 llvm_i8_ty], 3741 [IntrNoMem]>; 3742 3743 def int_x86_avx512_rcp14_pd_128 : ClangBuiltin<"__builtin_ia32_rcp14pd128_mask">, 3744 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3745 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3746 [IntrNoMem]>; 3747 def int_x86_avx512_rcp14_pd_256 : ClangBuiltin<"__builtin_ia32_rcp14pd256_mask">, 3748 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3749 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3750 [IntrNoMem]>; 3751 def int_x86_avx512_rcp14_pd_512 : ClangBuiltin<"__builtin_ia32_rcp14pd512_mask">, 3752 DefaultAttrsIntrinsic<[llvm_v8f64_ty], 3753 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty], 3754 [IntrNoMem]>; 3755 def int_x86_avx512_rcp14_ps_128 : ClangBuiltin<"__builtin_ia32_rcp14ps128_mask">, 3756 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3757 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3758 [IntrNoMem]>; 3759 def int_x86_avx512_rcp14_ps_256 : ClangBuiltin<"__builtin_ia32_rcp14ps256_mask">, 3760 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 3761 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3762 [IntrNoMem]>; 3763 def int_x86_avx512_rcp14_ps_512 : ClangBuiltin<"__builtin_ia32_rcp14ps512_mask">, 3764 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 3765 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], 3766 [IntrNoMem]>; 3767 def int_x86_avx512_psad_bw_512 : ClangBuiltin<"__builtin_ia32_psadbw512">, 3768 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 3769 [IntrNoMem, Commutative]>; 3770} 3771// Integer arithmetic ops 3772let TargetPrefix = "x86" in { 3773 def int_x86_avx512_pmulhu_w_512 : ClangBuiltin<"__builtin_ia32_pmulhuw512">, 3774 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 3775 [IntrNoMem, Commutative]>; 3776 def int_x86_avx512_pmulh_w_512 : ClangBuiltin<"__builtin_ia32_pmulhw512">, 3777 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 3778 [IntrNoMem, Commutative]>; 3779 def int_x86_avx512_pavg_b_512 : ClangBuiltin<"__builtin_ia32_pavgb512">, 3780 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 3781 [IntrNoMem]>; 3782 def int_x86_avx512_pavg_w_512 : ClangBuiltin<"__builtin_ia32_pavgw512">, 3783 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 3784 [IntrNoMem]>; 3785 def int_x86_avx512_pmaddw_d_512 : ClangBuiltin<"__builtin_ia32_pmaddwd512">, 3786 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 3787 [IntrNoMem, Commutative]>; 3788 def int_x86_avx512_pmaddubs_w_512 : ClangBuiltin<"__builtin_ia32_pmaddubsw512">, 3789 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 3790 [IntrNoMem]>; 3791 3792 def int_x86_avx512_dbpsadbw_128 : 3793 ClangBuiltin<"__builtin_ia32_dbpsadbw128">, 3794 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 3795 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty], 3796 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3797 3798 def int_x86_avx512_dbpsadbw_256 : 3799 ClangBuiltin<"__builtin_ia32_dbpsadbw256">, 3800 DefaultAttrsIntrinsic<[llvm_v16i16_ty], 3801 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 3802 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3803 3804 def int_x86_avx512_dbpsadbw_512 : 3805 ClangBuiltin<"__builtin_ia32_dbpsadbw512">, 3806 DefaultAttrsIntrinsic<[llvm_v32i16_ty], 3807 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i32_ty], 3808 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 3809} 3810 3811// Gather and Scatter ops 3812let TargetPrefix = "x86" in { 3813 // NOTE: These are deprecated in favor of the versions that take a vXi1 mask. 3814 // NOTE: These can't be ArgMemOnly because you can put the address completely 3815 // in the index register. 3816 def int_x86_avx512_gather_dpd_512 : 3817 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty, 3818 llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 3819 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3820 def int_x86_avx512_gather_dps_512 : 3821 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_ptr_ty, 3822 llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 3823 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3824 def int_x86_avx512_gather_qpd_512 : 3825 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty, 3826 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3827 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3828 def int_x86_avx512_gather_qps_512 : 3829 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_ptr_ty, 3830 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3831 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3832 3833 3834 def int_x86_avx512_gather_dpq_512 : 3835 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty, 3836 llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 3837 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3838 def int_x86_avx512_gather_dpi_512 : 3839 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_ptr_ty, 3840 llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 3841 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3842 def int_x86_avx512_gather_qpq_512 : 3843 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty, 3844 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3845 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3846 def int_x86_avx512_gather_qpi_512 : 3847 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_ptr_ty, 3848 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3849 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3850 3851 def int_x86_avx512_gather3div2_df : 3852 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3853 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 3854 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3855 3856 def int_x86_avx512_gather3div2_di : 3857 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 3858 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 3859 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3860 3861 def int_x86_avx512_gather3div4_df : 3862 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3863 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 3864 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3865 3866 def int_x86_avx512_gather3div4_di : 3867 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 3868 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 3869 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3870 3871 def int_x86_avx512_gather3div4_sf : 3872 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3873 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 3874 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3875 3876 def int_x86_avx512_gather3div4_si : 3877 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 3878 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 3879 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3880 3881 def int_x86_avx512_gather3div8_sf : 3882 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3883 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 3884 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3885 3886 def int_x86_avx512_gather3div8_si : 3887 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 3888 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 3889 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3890 3891 def int_x86_avx512_gather3siv2_df : 3892 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 3893 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 3894 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3895 3896 def int_x86_avx512_gather3siv2_di: 3897 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 3898 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 3899 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3900 3901 def int_x86_avx512_gather3siv4_df : 3902 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 3903 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 3904 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3905 3906 def int_x86_avx512_gather3siv4_di : 3907 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 3908 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 3909 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3910 3911 def int_x86_avx512_gather3siv4_sf : 3912 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 3913 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 3914 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3915 3916 def int_x86_avx512_gather3siv4_si : 3917 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 3918 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 3919 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3920 3921 def int_x86_avx512_gather3siv8_sf : 3922 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 3923 [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 3924 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3925 3926 def int_x86_avx512_gather3siv8_si : 3927 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 3928 [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 3929 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 3930 3931// scatter 3932 // NOTE: These are deprecated in favor of the versions that take a vXi1 mask. 3933 // NOTE: These can't be ArgMemOnly because you can put the address completely 3934 // in the index register. 3935 def int_x86_avx512_scatter_dpd_512 : 3936 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 3937 llvm_v8i32_ty, llvm_v8f64_ty, llvm_i32_ty], 3938 [ImmArg<ArgIndex<4>>]>; 3939 def int_x86_avx512_scatter_dps_512 : 3940 Intrinsic<[], [llvm_ptr_ty, llvm_i16_ty, 3941 llvm_v16i32_ty, llvm_v16f32_ty, llvm_i32_ty], 3942 [ImmArg<ArgIndex<4>>]>; 3943 def int_x86_avx512_scatter_qpd_512 : 3944 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 3945 llvm_v8i64_ty, llvm_v8f64_ty, llvm_i32_ty], 3946 [ImmArg<ArgIndex<4>>]>; 3947 def int_x86_avx512_scatter_qps_512 : 3948 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 3949 llvm_v8i64_ty, llvm_v8f32_ty, llvm_i32_ty], 3950 [ImmArg<ArgIndex<4>>]>; 3951 3952 3953 def int_x86_avx512_scatter_dpq_512 : 3954 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 3955 llvm_v8i32_ty, llvm_v8i64_ty, llvm_i32_ty], 3956 [ImmArg<ArgIndex<4>>]>; 3957 def int_x86_avx512_scatter_dpi_512 : 3958 Intrinsic<[], [llvm_ptr_ty, llvm_i16_ty, 3959 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty], 3960 [ImmArg<ArgIndex<4>>]>; 3961 def int_x86_avx512_scatter_qpq_512 : 3962 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,llvm_v8i64_ty, llvm_v8i64_ty, 3963 llvm_i32_ty], 3964 [ImmArg<ArgIndex<4>>]>; 3965 def int_x86_avx512_scatter_qpi_512 : 3966 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, llvm_v8i64_ty, llvm_v8i32_ty, 3967 llvm_i32_ty], 3968 [ImmArg<ArgIndex<4>>]>; 3969 3970 def int_x86_avx512_scatterdiv2_df : 3971 Intrinsic<[], 3972 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i32_ty], 3973 [ImmArg<ArgIndex<4>>]>; 3974 3975 def int_x86_avx512_scatterdiv2_di : 3976 Intrinsic<[], 3977 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty], 3978 [ImmArg<ArgIndex<4>>]>; 3979 3980 def int_x86_avx512_scatterdiv4_df : 3981 Intrinsic<[], 3982 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i32_ty], 3983 [ImmArg<ArgIndex<4>>]>; 3984 3985 def int_x86_avx512_scatterdiv4_di : 3986 Intrinsic<[], 3987 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty], 3988 [ImmArg<ArgIndex<4>>]>; 3989 3990 def int_x86_avx512_scatterdiv4_sf : 3991 Intrinsic<[], 3992 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i32_ty], 3993 [ImmArg<ArgIndex<4>>]>; 3994 3995 def int_x86_avx512_scatterdiv4_si : 3996 Intrinsic<[], 3997 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i32_ty], 3998 [ImmArg<ArgIndex<4>>]>; 3999 4000 def int_x86_avx512_scatterdiv8_sf : 4001 Intrinsic<[], 4002 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i32_ty], 4003 [ImmArg<ArgIndex<4>>]>; 4004 4005 def int_x86_avx512_scatterdiv8_si : 4006 Intrinsic<[], 4007 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i32_ty], 4008 [ImmArg<ArgIndex<4>>]>; 4009 4010 def int_x86_avx512_scattersiv2_df : 4011 Intrinsic<[], 4012 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i32_ty], 4013 [ImmArg<ArgIndex<4>>]>; 4014 4015 def int_x86_avx512_scattersiv2_di : 4016 Intrinsic<[], 4017 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i32_ty], 4018 [ImmArg<ArgIndex<4>>]>; 4019 4020 def int_x86_avx512_scattersiv4_df : 4021 Intrinsic<[], 4022 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i32_ty], 4023 [ImmArg<ArgIndex<4>>]>; 4024 4025 def int_x86_avx512_scattersiv4_di : 4026 Intrinsic<[], 4027 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i32_ty], 4028 [ImmArg<ArgIndex<4>>]>; 4029 4030 def int_x86_avx512_scattersiv4_sf : 4031 Intrinsic<[], 4032 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i32_ty], 4033 [ImmArg<ArgIndex<4>>]>; 4034 4035 def int_x86_avx512_scattersiv4_si : 4036 Intrinsic<[], 4037 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty], 4038 [ImmArg<ArgIndex<4>>]>; 4039 4040 def int_x86_avx512_scattersiv8_sf : 4041 Intrinsic<[], 4042 [llvm_ptr_ty, llvm_i8_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i32_ty], 4043 [ImmArg<ArgIndex<4>>]>; 4044 4045 def int_x86_avx512_scattersiv8_si : 4046 Intrinsic<[], 4047 [llvm_ptr_ty, llvm_i8_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty], 4048 [ImmArg<ArgIndex<4>>]>; 4049} 4050 4051// AVX512 gather/scatter intrinsics that use vXi1 masks. 4052let TargetPrefix = "x86" in { 4053 // NOTE: These can't be ArgMemOnly because you can put the address completely 4054 // in the index register. 4055 def int_x86_avx512_mask_gather_dpd_512 : 4056 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty, 4057 llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty], 4058 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4059 def int_x86_avx512_mask_gather_dps_512 : 4060 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_ptr_ty, 4061 llvm_v16i32_ty, llvm_v16i1_ty, llvm_i32_ty], 4062 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4063 def int_x86_avx512_mask_gather_qpd_512 : 4064 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty, 4065 llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty], 4066 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4067 def int_x86_avx512_mask_gather_qps_512 : 4068 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_ptr_ty, 4069 llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty], 4070 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4071 4072 4073 def int_x86_avx512_mask_gather_dpq_512 : 4074 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty, 4075 llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty], 4076 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4077 def int_x86_avx512_mask_gather_dpi_512 : 4078 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_ptr_ty, 4079 llvm_v16i32_ty, llvm_v16i1_ty, llvm_i32_ty], 4080 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4081 def int_x86_avx512_mask_gather_qpq_512 : 4082 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty, 4083 llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty], 4084 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4085 def int_x86_avx512_mask_gather_qpi_512 : 4086 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_ptr_ty, 4087 llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty], 4088 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4089 4090 def int_x86_avx512_mask_gather3div2_df : 4091 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 4092 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty], 4093 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4094 4095 def int_x86_avx512_mask_gather3div2_di : 4096 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 4097 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty], 4098 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4099 4100 def int_x86_avx512_mask_gather3div4_df : 4101 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 4102 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty], 4103 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4104 4105 def int_x86_avx512_mask_gather3div4_di : 4106 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 4107 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty], 4108 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4109 4110 def int_x86_avx512_mask_gather3div4_sf : 4111 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 4112 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty], 4113 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4114 4115 def int_x86_avx512_mask_gather3div4_si : 4116 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 4117 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty], 4118 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4119 4120 def int_x86_avx512_mask_gather3div8_sf : 4121 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 4122 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty], 4123 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4124 4125 def int_x86_avx512_mask_gather3div8_si : 4126 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 4127 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty], 4128 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4129 4130 def int_x86_avx512_mask_gather3siv2_df : 4131 DefaultAttrsIntrinsic<[llvm_v2f64_ty], 4132 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2i1_ty, llvm_i32_ty], 4133 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4134 4135 def int_x86_avx512_mask_gather3siv2_di : 4136 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 4137 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2i1_ty, llvm_i32_ty], 4138 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4139 4140 def int_x86_avx512_mask_gather3siv4_df : 4141 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 4142 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty], 4143 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4144 4145 def int_x86_avx512_mask_gather3siv4_di : 4146 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 4147 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty], 4148 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4149 4150 def int_x86_avx512_mask_gather3siv4_sf : 4151 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 4152 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty], 4153 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4154 4155 def int_x86_avx512_mask_gather3siv4_si : 4156 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 4157 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty], 4158 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4159 4160 def int_x86_avx512_mask_gather3siv8_sf : 4161 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 4162 [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty], 4163 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4164 4165 def int_x86_avx512_mask_gather3siv8_si : 4166 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 4167 [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty], 4168 [IntrReadMem, ImmArg<ArgIndex<4>>]>; 4169 4170 def int_x86_avx512_mask_scatter_dpd_512 : 4171 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty, 4172 llvm_v8i32_ty, llvm_v8f64_ty, llvm_i32_ty], 4173 [ImmArg<ArgIndex<4>>]>; 4174 def int_x86_avx512_mask_scatter_dps_512 : 4175 Intrinsic<[], [llvm_ptr_ty, llvm_v16i1_ty, 4176 llvm_v16i32_ty, llvm_v16f32_ty, llvm_i32_ty], 4177 [ImmArg<ArgIndex<4>>]>; 4178 def int_x86_avx512_mask_scatter_qpd_512 : 4179 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty, 4180 llvm_v8i64_ty, llvm_v8f64_ty, llvm_i32_ty], 4181 [ImmArg<ArgIndex<4>>]>; 4182 def int_x86_avx512_mask_scatter_qps_512 : 4183 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty, 4184 llvm_v8i64_ty, llvm_v8f32_ty, llvm_i32_ty], 4185 [ImmArg<ArgIndex<4>>]>; 4186 4187 4188 // NOTE: These can't be ArgMemOnly because you can put the address completely 4189 // in the index register. 4190 def int_x86_avx512_mask_scatter_dpq_512 : 4191 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty, 4192 llvm_v8i32_ty, llvm_v8i64_ty, llvm_i32_ty], 4193 [ImmArg<ArgIndex<4>>]>; 4194 def int_x86_avx512_mask_scatter_dpi_512 : 4195 Intrinsic<[], [llvm_ptr_ty, llvm_v16i1_ty, 4196 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty], 4197 [ImmArg<ArgIndex<4>>]>; 4198 def int_x86_avx512_mask_scatter_qpq_512 : 4199 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,llvm_v8i64_ty, llvm_v8i64_ty, 4200 llvm_i32_ty], 4201 [ImmArg<ArgIndex<4>>]>; 4202 def int_x86_avx512_mask_scatter_qpi_512 : 4203 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i64_ty, llvm_v8i32_ty, 4204 llvm_i32_ty], 4205 [ImmArg<ArgIndex<4>>]>; 4206 4207 def int_x86_avx512_mask_scatterdiv2_df : 4208 Intrinsic<[], 4209 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i32_ty], 4210 [ImmArg<ArgIndex<4>>]>; 4211 4212 def int_x86_avx512_mask_scatterdiv2_di : 4213 Intrinsic<[], 4214 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty], 4215 [ImmArg<ArgIndex<4>>]>; 4216 4217 def int_x86_avx512_mask_scatterdiv4_df : 4218 Intrinsic<[], 4219 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i32_ty], 4220 [ImmArg<ArgIndex<4>>]>; 4221 4222 def int_x86_avx512_mask_scatterdiv4_di : 4223 Intrinsic<[], 4224 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty], 4225 [ImmArg<ArgIndex<4>>]>; 4226 4227 def int_x86_avx512_mask_scatterdiv4_sf : 4228 Intrinsic<[], 4229 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i32_ty], 4230 [ImmArg<ArgIndex<4>>]>; 4231 4232 def int_x86_avx512_mask_scatterdiv4_si : 4233 Intrinsic<[], 4234 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i32_ty], 4235 [ImmArg<ArgIndex<4>>]>; 4236 4237 def int_x86_avx512_mask_scatterdiv8_sf : 4238 Intrinsic<[], 4239 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i32_ty], 4240 [ImmArg<ArgIndex<4>>]>; 4241 4242 def int_x86_avx512_mask_scatterdiv8_si : 4243 Intrinsic<[], 4244 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i32_ty], 4245 [ImmArg<ArgIndex<4>>]>; 4246 4247 def int_x86_avx512_mask_scattersiv2_df : 4248 Intrinsic<[], 4249 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i32_ty], 4250 [ImmArg<ArgIndex<4>>]>; 4251 4252 def int_x86_avx512_mask_scattersiv2_di : 4253 Intrinsic<[], 4254 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i32_ty], 4255 [ImmArg<ArgIndex<4>>]>; 4256 4257 def int_x86_avx512_mask_scattersiv4_df : 4258 Intrinsic<[], 4259 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i32_ty], 4260 [ImmArg<ArgIndex<4>>]>; 4261 4262 def int_x86_avx512_mask_scattersiv4_di : 4263 Intrinsic<[], 4264 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i32_ty], 4265 [ImmArg<ArgIndex<4>>]>; 4266 4267 def int_x86_avx512_mask_scattersiv4_sf : 4268 Intrinsic<[], 4269 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i32_ty], 4270 [ImmArg<ArgIndex<4>>]>; 4271 4272 def int_x86_avx512_mask_scattersiv4_si : 4273 Intrinsic<[], 4274 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty], 4275 [ImmArg<ArgIndex<4>>]>; 4276 4277 def int_x86_avx512_mask_scattersiv8_sf : 4278 Intrinsic<[], 4279 [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i32_ty], 4280 [ImmArg<ArgIndex<4>>]>; 4281 4282 def int_x86_avx512_mask_scattersiv8_si : 4283 Intrinsic<[], 4284 [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty], 4285 [ImmArg<ArgIndex<4>>]>; 4286} 4287 4288// AVX-512 conflict detection instruction 4289// Instructions that count the number of leading zero bits 4290let TargetPrefix = "x86" in { 4291 def int_x86_avx512_conflict_d_128 : 4292 ClangBuiltin<"__builtin_ia32_vpconflictsi_128">, 4293 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>; 4294 def int_x86_avx512_conflict_d_256 : 4295 ClangBuiltin<"__builtin_ia32_vpconflictsi_256">, 4296 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty], [IntrNoMem]>; 4297 def int_x86_avx512_conflict_d_512 : 4298 ClangBuiltin<"__builtin_ia32_vpconflictsi_512">, 4299 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty], 4300 [IntrNoMem]>; 4301 4302 def int_x86_avx512_conflict_q_128 : 4303 ClangBuiltin<"__builtin_ia32_vpconflictdi_128">, 4304 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>; 4305 def int_x86_avx512_conflict_q_256 : 4306 ClangBuiltin<"__builtin_ia32_vpconflictdi_256">, 4307 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty], [IntrNoMem]>; 4308 def int_x86_avx512_conflict_q_512 : 4309 ClangBuiltin<"__builtin_ia32_vpconflictdi_512">, 4310 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty], [IntrNoMem]>; 4311} 4312 4313// Compares 4314let TargetPrefix = "x86" in { 4315 // 512-bit 4316 def int_x86_avx512_vcomi_sd : ClangBuiltin<"__builtin_ia32_vcomisd">, 4317 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 4318 llvm_v2f64_ty, llvm_i32_ty, llvm_i32_ty], 4319 [IntrNoMem, ImmArg<ArgIndex<2>>, 4320 ImmArg<ArgIndex<3>>]>; 4321 def int_x86_avx512_vcomi_ss : ClangBuiltin<"__builtin_ia32_vcomiss">, 4322 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 4323 llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty], 4324 [IntrNoMem, ImmArg<ArgIndex<2>>, 4325 ImmArg<ArgIndex<3>>]>; 4326} 4327 4328// Compress, Expand 4329let TargetPrefix = "x86" in { 4330 def int_x86_avx512_mask_compress : 4331 DefaultAttrsIntrinsic<[llvm_anyvector_ty], 4332 [LLVMMatchType<0>, LLVMMatchType<0>, 4333 LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>], 4334 [IntrNoMem]>; 4335 def int_x86_avx512_mask_expand : 4336 DefaultAttrsIntrinsic<[llvm_anyvector_ty], 4337 [LLVMMatchType<0>, LLVMMatchType<0>, 4338 LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>], 4339 [IntrNoMem]>; 4340} 4341 4342// truncate 4343let TargetPrefix = "x86" in { 4344 def int_x86_avx512_mask_pmov_qb_128 : 4345 ClangBuiltin<"__builtin_ia32_pmovqb128_mask">, 4346 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4347 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty], 4348 [IntrNoMem]>; 4349 def int_x86_avx512_mask_pmov_qb_mem_128 : 4350 ClangBuiltin<"__builtin_ia32_pmovqb128mem_mask">, 4351 DefaultAttrsIntrinsic<[], 4352 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 4353 [IntrArgMemOnly]>; 4354 def int_x86_avx512_mask_pmovs_qb_128 : 4355 ClangBuiltin<"__builtin_ia32_pmovsqb128_mask">, 4356 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4357 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty], 4358 [IntrNoMem]>; 4359 def int_x86_avx512_mask_pmovs_qb_mem_128 : 4360 ClangBuiltin<"__builtin_ia32_pmovsqb128mem_mask">, 4361 DefaultAttrsIntrinsic<[], 4362 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 4363 [IntrArgMemOnly]>; 4364 def int_x86_avx512_mask_pmovus_qb_128 : 4365 ClangBuiltin<"__builtin_ia32_pmovusqb128_mask">, 4366 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4367 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty], 4368 [IntrNoMem]>; 4369 def int_x86_avx512_mask_pmovus_qb_mem_128 : 4370 ClangBuiltin<"__builtin_ia32_pmovusqb128mem_mask">, 4371 DefaultAttrsIntrinsic<[], 4372 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 4373 [IntrArgMemOnly]>; 4374 def int_x86_avx512_mask_pmov_qb_256 : 4375 ClangBuiltin<"__builtin_ia32_pmovqb256_mask">, 4376 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4377 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty], 4378 [IntrNoMem]>; 4379 def int_x86_avx512_mask_pmov_qb_mem_256 : 4380 ClangBuiltin<"__builtin_ia32_pmovqb256mem_mask">, 4381 DefaultAttrsIntrinsic<[], 4382 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 4383 [IntrArgMemOnly]>; 4384 def int_x86_avx512_mask_pmovs_qb_256 : 4385 ClangBuiltin<"__builtin_ia32_pmovsqb256_mask">, 4386 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4387 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty], 4388 [IntrNoMem]>; 4389 def int_x86_avx512_mask_pmovs_qb_mem_256 : 4390 ClangBuiltin<"__builtin_ia32_pmovsqb256mem_mask">, 4391 DefaultAttrsIntrinsic<[], 4392 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 4393 [IntrArgMemOnly]>; 4394 def int_x86_avx512_mask_pmovus_qb_256 : 4395 ClangBuiltin<"__builtin_ia32_pmovusqb256_mask">, 4396 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4397 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty], 4398 [IntrNoMem]>; 4399 def int_x86_avx512_mask_pmovus_qb_mem_256 : 4400 ClangBuiltin<"__builtin_ia32_pmovusqb256mem_mask">, 4401 DefaultAttrsIntrinsic<[], 4402 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 4403 [IntrArgMemOnly]>; 4404 def int_x86_avx512_mask_pmov_qb_512 : 4405 ClangBuiltin<"__builtin_ia32_pmovqb512_mask">, 4406 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4407 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty], 4408 [IntrNoMem]>; 4409 def int_x86_avx512_mask_pmov_qb_mem_512 : 4410 ClangBuiltin<"__builtin_ia32_pmovqb512mem_mask">, 4411 DefaultAttrsIntrinsic<[], 4412 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 4413 [IntrArgMemOnly]>; 4414 def int_x86_avx512_mask_pmovs_qb_512 : 4415 ClangBuiltin<"__builtin_ia32_pmovsqb512_mask">, 4416 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4417 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty], 4418 [IntrNoMem]>; 4419 def int_x86_avx512_mask_pmovs_qb_mem_512 : 4420 ClangBuiltin<"__builtin_ia32_pmovsqb512mem_mask">, 4421 DefaultAttrsIntrinsic<[], 4422 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 4423 [IntrArgMemOnly]>; 4424 def int_x86_avx512_mask_pmovus_qb_512 : 4425 ClangBuiltin<"__builtin_ia32_pmovusqb512_mask">, 4426 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4427 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty], 4428 [IntrNoMem]>; 4429 def int_x86_avx512_mask_pmovus_qb_mem_512 : 4430 ClangBuiltin<"__builtin_ia32_pmovusqb512mem_mask">, 4431 DefaultAttrsIntrinsic<[], 4432 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 4433 [IntrArgMemOnly]>; 4434 def int_x86_avx512_mask_pmov_qw_128 : 4435 ClangBuiltin<"__builtin_ia32_pmovqw128_mask">, 4436 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4437 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty], 4438 [IntrNoMem]>; 4439 def int_x86_avx512_mask_pmov_qw_mem_128 : 4440 ClangBuiltin<"__builtin_ia32_pmovqw128mem_mask">, 4441 DefaultAttrsIntrinsic<[], 4442 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 4443 [IntrArgMemOnly]>; 4444 def int_x86_avx512_mask_pmovs_qw_128 : 4445 ClangBuiltin<"__builtin_ia32_pmovsqw128_mask">, 4446 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4447 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty], 4448 [IntrNoMem]>; 4449 def int_x86_avx512_mask_pmovs_qw_mem_128 : 4450 ClangBuiltin<"__builtin_ia32_pmovsqw128mem_mask">, 4451 DefaultAttrsIntrinsic<[], 4452 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 4453 [IntrArgMemOnly]>; 4454 def int_x86_avx512_mask_pmovus_qw_128 : 4455 ClangBuiltin<"__builtin_ia32_pmovusqw128_mask">, 4456 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4457 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty], 4458 [IntrNoMem]>; 4459 def int_x86_avx512_mask_pmovus_qw_mem_128 : 4460 ClangBuiltin<"__builtin_ia32_pmovusqw128mem_mask">, 4461 DefaultAttrsIntrinsic<[], 4462 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 4463 [IntrArgMemOnly]>; 4464 def int_x86_avx512_mask_pmov_qw_256 : 4465 ClangBuiltin<"__builtin_ia32_pmovqw256_mask">, 4466 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4467 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty], 4468 [IntrNoMem]>; 4469 def int_x86_avx512_mask_pmov_qw_mem_256 : 4470 ClangBuiltin<"__builtin_ia32_pmovqw256mem_mask">, 4471 DefaultAttrsIntrinsic<[], 4472 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 4473 [IntrArgMemOnly]>; 4474 def int_x86_avx512_mask_pmovs_qw_256 : 4475 ClangBuiltin<"__builtin_ia32_pmovsqw256_mask">, 4476 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4477 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty], 4478 [IntrNoMem]>; 4479 def int_x86_avx512_mask_pmovs_qw_mem_256 : 4480 ClangBuiltin<"__builtin_ia32_pmovsqw256mem_mask">, 4481 DefaultAttrsIntrinsic<[], 4482 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 4483 [IntrArgMemOnly]>; 4484 def int_x86_avx512_mask_pmovus_qw_256 : 4485 ClangBuiltin<"__builtin_ia32_pmovusqw256_mask">, 4486 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4487 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty], 4488 [IntrNoMem]>; 4489 def int_x86_avx512_mask_pmovus_qw_mem_256 : 4490 ClangBuiltin<"__builtin_ia32_pmovusqw256mem_mask">, 4491 DefaultAttrsIntrinsic<[], 4492 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 4493 [IntrArgMemOnly]>; 4494 def int_x86_avx512_mask_pmov_qw_512 : 4495 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4496 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty], 4497 [IntrNoMem]>; 4498 def int_x86_avx512_mask_pmov_qw_mem_512 : 4499 ClangBuiltin<"__builtin_ia32_pmovqw512mem_mask">, 4500 DefaultAttrsIntrinsic<[], 4501 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 4502 [IntrArgMemOnly]>; 4503 def int_x86_avx512_mask_pmovs_qw_512 : 4504 ClangBuiltin<"__builtin_ia32_pmovsqw512_mask">, 4505 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4506 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty], 4507 [IntrNoMem]>; 4508 def int_x86_avx512_mask_pmovs_qw_mem_512 : 4509 ClangBuiltin<"__builtin_ia32_pmovsqw512mem_mask">, 4510 DefaultAttrsIntrinsic<[], 4511 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 4512 [IntrArgMemOnly]>; 4513 def int_x86_avx512_mask_pmovus_qw_512 : 4514 ClangBuiltin<"__builtin_ia32_pmovusqw512_mask">, 4515 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4516 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty], 4517 [IntrNoMem]>; 4518 def int_x86_avx512_mask_pmovus_qw_mem_512 : 4519 ClangBuiltin<"__builtin_ia32_pmovusqw512mem_mask">, 4520 DefaultAttrsIntrinsic<[], 4521 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 4522 [IntrArgMemOnly]>; 4523 def int_x86_avx512_mask_pmov_qd_128 : 4524 ClangBuiltin<"__builtin_ia32_pmovqd128_mask">, 4525 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 4526 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 4527 [IntrNoMem]>; 4528 def int_x86_avx512_mask_pmov_qd_mem_128 : 4529 ClangBuiltin<"__builtin_ia32_pmovqd128mem_mask">, 4530 DefaultAttrsIntrinsic<[], 4531 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 4532 [IntrArgMemOnly]>; 4533 def int_x86_avx512_mask_pmovs_qd_128 : 4534 ClangBuiltin<"__builtin_ia32_pmovsqd128_mask">, 4535 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 4536 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 4537 [IntrNoMem]>; 4538 def int_x86_avx512_mask_pmovs_qd_mem_128 : 4539 ClangBuiltin<"__builtin_ia32_pmovsqd128mem_mask">, 4540 DefaultAttrsIntrinsic<[], 4541 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 4542 [IntrArgMemOnly]>; 4543 def int_x86_avx512_mask_pmovus_qd_128 : 4544 ClangBuiltin<"__builtin_ia32_pmovusqd128_mask">, 4545 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 4546 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 4547 [IntrNoMem]>; 4548 def int_x86_avx512_mask_pmovus_qd_mem_128 : 4549 ClangBuiltin<"__builtin_ia32_pmovusqd128mem_mask">, 4550 DefaultAttrsIntrinsic<[], 4551 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 4552 [IntrArgMemOnly]>; 4553 def int_x86_avx512_mask_pmov_qd_mem_256 : 4554 ClangBuiltin<"__builtin_ia32_pmovqd256mem_mask">, 4555 DefaultAttrsIntrinsic<[], 4556 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 4557 [IntrArgMemOnly]>; 4558 def int_x86_avx512_mask_pmovs_qd_256 : 4559 ClangBuiltin<"__builtin_ia32_pmovsqd256_mask">, 4560 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 4561 [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 4562 [IntrNoMem]>; 4563 def int_x86_avx512_mask_pmovs_qd_mem_256 : 4564 ClangBuiltin<"__builtin_ia32_pmovsqd256mem_mask">, 4565 DefaultAttrsIntrinsic<[], 4566 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 4567 [IntrArgMemOnly]>; 4568 def int_x86_avx512_mask_pmovus_qd_256 : 4569 ClangBuiltin<"__builtin_ia32_pmovusqd256_mask">, 4570 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 4571 [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 4572 [IntrNoMem]>; 4573 def int_x86_avx512_mask_pmovus_qd_mem_256 : 4574 ClangBuiltin<"__builtin_ia32_pmovusqd256mem_mask">, 4575 DefaultAttrsIntrinsic<[], 4576 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 4577 [IntrArgMemOnly]>; 4578 def int_x86_avx512_mask_pmov_qd_mem_512 : 4579 ClangBuiltin<"__builtin_ia32_pmovqd512mem_mask">, 4580 DefaultAttrsIntrinsic<[], 4581 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 4582 [IntrArgMemOnly]>; 4583 def int_x86_avx512_mask_pmovs_qd_512 : 4584 ClangBuiltin<"__builtin_ia32_pmovsqd512_mask">, 4585 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 4586 [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty], 4587 [IntrNoMem]>; 4588 def int_x86_avx512_mask_pmovs_qd_mem_512 : 4589 ClangBuiltin<"__builtin_ia32_pmovsqd512mem_mask">, 4590 DefaultAttrsIntrinsic<[], 4591 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 4592 [IntrArgMemOnly]>; 4593 def int_x86_avx512_mask_pmovus_qd_512 : 4594 ClangBuiltin<"__builtin_ia32_pmovusqd512_mask">, 4595 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 4596 [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty], 4597 [IntrNoMem]>; 4598 def int_x86_avx512_mask_pmovus_qd_mem_512 : 4599 ClangBuiltin<"__builtin_ia32_pmovusqd512mem_mask">, 4600 DefaultAttrsIntrinsic<[], 4601 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 4602 [IntrArgMemOnly]>; 4603 def int_x86_avx512_mask_pmov_db_128 : 4604 ClangBuiltin<"__builtin_ia32_pmovdb128_mask">, 4605 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4606 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty], 4607 [IntrNoMem]>; 4608 def int_x86_avx512_mask_pmov_db_mem_128 : 4609 ClangBuiltin<"__builtin_ia32_pmovdb128mem_mask">, 4610 DefaultAttrsIntrinsic<[], 4611 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 4612 [IntrArgMemOnly]>; 4613 def int_x86_avx512_mask_pmovs_db_128 : 4614 ClangBuiltin<"__builtin_ia32_pmovsdb128_mask">, 4615 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4616 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty], 4617 [IntrNoMem]>; 4618 def int_x86_avx512_mask_pmovs_db_mem_128 : 4619 ClangBuiltin<"__builtin_ia32_pmovsdb128mem_mask">, 4620 DefaultAttrsIntrinsic<[], 4621 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 4622 [IntrArgMemOnly]>; 4623 def int_x86_avx512_mask_pmovus_db_128 : 4624 ClangBuiltin<"__builtin_ia32_pmovusdb128_mask">, 4625 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4626 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty], 4627 [IntrNoMem]>; 4628 def int_x86_avx512_mask_pmovus_db_mem_128 : 4629 ClangBuiltin<"__builtin_ia32_pmovusdb128mem_mask">, 4630 DefaultAttrsIntrinsic<[], 4631 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 4632 [IntrArgMemOnly]>; 4633 def int_x86_avx512_mask_pmov_db_256 : 4634 ClangBuiltin<"__builtin_ia32_pmovdb256_mask">, 4635 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4636 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty], 4637 [IntrNoMem]>; 4638 def int_x86_avx512_mask_pmov_db_mem_256 : 4639 ClangBuiltin<"__builtin_ia32_pmovdb256mem_mask">, 4640 DefaultAttrsIntrinsic<[], 4641 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 4642 [IntrArgMemOnly]>; 4643 def int_x86_avx512_mask_pmovs_db_256 : 4644 ClangBuiltin<"__builtin_ia32_pmovsdb256_mask">, 4645 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4646 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty], 4647 [IntrNoMem]>; 4648 def int_x86_avx512_mask_pmovs_db_mem_256 : 4649 ClangBuiltin<"__builtin_ia32_pmovsdb256mem_mask">, 4650 DefaultAttrsIntrinsic<[], 4651 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 4652 [IntrArgMemOnly]>; 4653 def int_x86_avx512_mask_pmovus_db_256 : 4654 ClangBuiltin<"__builtin_ia32_pmovusdb256_mask">, 4655 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4656 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty], 4657 [IntrNoMem]>; 4658 def int_x86_avx512_mask_pmovus_db_mem_256 : 4659 ClangBuiltin<"__builtin_ia32_pmovusdb256mem_mask">, 4660 DefaultAttrsIntrinsic<[], 4661 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 4662 [IntrArgMemOnly]>; 4663 def int_x86_avx512_mask_pmov_db_512 : 4664 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4665 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty], 4666 [IntrNoMem]>; 4667 def int_x86_avx512_mask_pmov_db_mem_512 : 4668 ClangBuiltin<"__builtin_ia32_pmovdb512mem_mask">, 4669 DefaultAttrsIntrinsic<[], 4670 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 4671 [IntrArgMemOnly]>; 4672 def int_x86_avx512_mask_pmovs_db_512 : 4673 ClangBuiltin<"__builtin_ia32_pmovsdb512_mask">, 4674 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4675 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty], 4676 [IntrNoMem]>; 4677 def int_x86_avx512_mask_pmovs_db_mem_512 : 4678 ClangBuiltin<"__builtin_ia32_pmovsdb512mem_mask">, 4679 DefaultAttrsIntrinsic<[], 4680 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 4681 [IntrArgMemOnly]>; 4682 def int_x86_avx512_mask_pmovus_db_512 : 4683 ClangBuiltin<"__builtin_ia32_pmovusdb512_mask">, 4684 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4685 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty], 4686 [IntrNoMem]>; 4687 def int_x86_avx512_mask_pmovus_db_mem_512 : 4688 ClangBuiltin<"__builtin_ia32_pmovusdb512mem_mask">, 4689 DefaultAttrsIntrinsic<[], 4690 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 4691 [IntrArgMemOnly]>; 4692 def int_x86_avx512_mask_pmov_dw_128 : 4693 ClangBuiltin<"__builtin_ia32_pmovdw128_mask">, 4694 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4695 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty], 4696 [IntrNoMem]>; 4697 def int_x86_avx512_mask_pmov_dw_mem_128 : 4698 ClangBuiltin<"__builtin_ia32_pmovdw128mem_mask">, 4699 DefaultAttrsIntrinsic<[], 4700 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 4701 [IntrArgMemOnly]>; 4702 def int_x86_avx512_mask_pmovs_dw_128 : 4703 ClangBuiltin<"__builtin_ia32_pmovsdw128_mask">, 4704 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4705 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty], 4706 [IntrNoMem]>; 4707 def int_x86_avx512_mask_pmovs_dw_mem_128 : 4708 ClangBuiltin<"__builtin_ia32_pmovsdw128mem_mask">, 4709 DefaultAttrsIntrinsic<[], 4710 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 4711 [IntrArgMemOnly]>; 4712 def int_x86_avx512_mask_pmovus_dw_128 : 4713 ClangBuiltin<"__builtin_ia32_pmovusdw128_mask">, 4714 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4715 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty], 4716 [IntrNoMem]>; 4717 def int_x86_avx512_mask_pmovus_dw_mem_128 : 4718 ClangBuiltin<"__builtin_ia32_pmovusdw128mem_mask">, 4719 DefaultAttrsIntrinsic<[], 4720 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 4721 [IntrArgMemOnly]>; 4722 def int_x86_avx512_mask_pmov_dw_256 : 4723 ClangBuiltin<"__builtin_ia32_pmovdw256_mask">, 4724 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4725 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty], 4726 [IntrNoMem]>; 4727 def int_x86_avx512_mask_pmov_dw_mem_256 : 4728 ClangBuiltin<"__builtin_ia32_pmovdw256mem_mask">, 4729 DefaultAttrsIntrinsic<[], 4730 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 4731 [IntrArgMemOnly]>; 4732 def int_x86_avx512_mask_pmovs_dw_256 : 4733 ClangBuiltin<"__builtin_ia32_pmovsdw256_mask">, 4734 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4735 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty], 4736 [IntrNoMem]>; 4737 def int_x86_avx512_mask_pmovs_dw_mem_256 : 4738 ClangBuiltin<"__builtin_ia32_pmovsdw256mem_mask">, 4739 DefaultAttrsIntrinsic<[], 4740 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 4741 [IntrArgMemOnly]>; 4742 def int_x86_avx512_mask_pmovus_dw_256 : 4743 ClangBuiltin<"__builtin_ia32_pmovusdw256_mask">, 4744 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 4745 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty], 4746 [IntrNoMem]>; 4747 def int_x86_avx512_mask_pmovus_dw_mem_256 : 4748 ClangBuiltin<"__builtin_ia32_pmovusdw256mem_mask">, 4749 DefaultAttrsIntrinsic<[], 4750 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 4751 [IntrArgMemOnly]>; 4752 def int_x86_avx512_mask_pmov_dw_512 : 4753 DefaultAttrsIntrinsic<[llvm_v16i16_ty], 4754 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty], 4755 [IntrNoMem]>; 4756 def int_x86_avx512_mask_pmov_dw_mem_512 : 4757 ClangBuiltin<"__builtin_ia32_pmovdw512mem_mask">, 4758 DefaultAttrsIntrinsic<[], 4759 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 4760 [IntrArgMemOnly]>; 4761 def int_x86_avx512_mask_pmovs_dw_512 : 4762 ClangBuiltin<"__builtin_ia32_pmovsdw512_mask">, 4763 DefaultAttrsIntrinsic<[llvm_v16i16_ty], 4764 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty], 4765 [IntrNoMem]>; 4766 def int_x86_avx512_mask_pmovs_dw_mem_512 : 4767 ClangBuiltin<"__builtin_ia32_pmovsdw512mem_mask">, 4768 DefaultAttrsIntrinsic<[], 4769 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 4770 [IntrArgMemOnly]>; 4771 def int_x86_avx512_mask_pmovus_dw_512 : 4772 ClangBuiltin<"__builtin_ia32_pmovusdw512_mask">, 4773 DefaultAttrsIntrinsic<[llvm_v16i16_ty], 4774 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty], 4775 [IntrNoMem]>; 4776 def int_x86_avx512_mask_pmovus_dw_mem_512 : 4777 ClangBuiltin<"__builtin_ia32_pmovusdw512mem_mask">, 4778 DefaultAttrsIntrinsic<[], 4779 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 4780 [IntrArgMemOnly]>; 4781 def int_x86_avx512_mask_pmov_wb_128 : 4782 ClangBuiltin<"__builtin_ia32_pmovwb128_mask">, 4783 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4784 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty], 4785 [IntrNoMem]>; 4786 def int_x86_avx512_mask_pmov_wb_mem_128 : 4787 ClangBuiltin<"__builtin_ia32_pmovwb128mem_mask">, 4788 DefaultAttrsIntrinsic<[], 4789 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty], 4790 [IntrArgMemOnly]>; 4791 def int_x86_avx512_mask_pmovs_wb_128 : 4792 ClangBuiltin<"__builtin_ia32_pmovswb128_mask">, 4793 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4794 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty], 4795 [IntrNoMem]>; 4796 def int_x86_avx512_mask_pmovs_wb_mem_128 : 4797 ClangBuiltin<"__builtin_ia32_pmovswb128mem_mask">, 4798 DefaultAttrsIntrinsic<[], 4799 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty], 4800 [IntrArgMemOnly]>; 4801 def int_x86_avx512_mask_pmovus_wb_128 : 4802 ClangBuiltin<"__builtin_ia32_pmovuswb128_mask">, 4803 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4804 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty], 4805 [IntrNoMem]>; 4806 def int_x86_avx512_mask_pmovus_wb_mem_128 : 4807 ClangBuiltin<"__builtin_ia32_pmovuswb128mem_mask">, 4808 DefaultAttrsIntrinsic<[], 4809 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty], 4810 [IntrArgMemOnly]>; 4811 def int_x86_avx512_mask_pmov_wb_mem_256 : 4812 ClangBuiltin<"__builtin_ia32_pmovwb256mem_mask">, 4813 DefaultAttrsIntrinsic<[], 4814 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty], 4815 [IntrArgMemOnly]>; 4816 def int_x86_avx512_mask_pmovs_wb_256 : 4817 ClangBuiltin<"__builtin_ia32_pmovswb256_mask">, 4818 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4819 [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty], 4820 [IntrNoMem]>; 4821 def int_x86_avx512_mask_pmovs_wb_mem_256 : 4822 ClangBuiltin<"__builtin_ia32_pmovswb256mem_mask">, 4823 DefaultAttrsIntrinsic<[], 4824 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty], 4825 [IntrArgMemOnly]>; 4826 def int_x86_avx512_mask_pmovus_wb_256 : 4827 ClangBuiltin<"__builtin_ia32_pmovuswb256_mask">, 4828 DefaultAttrsIntrinsic<[llvm_v16i8_ty], 4829 [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty], 4830 [IntrNoMem]>; 4831 def int_x86_avx512_mask_pmovus_wb_mem_256 : 4832 ClangBuiltin<"__builtin_ia32_pmovuswb256mem_mask">, 4833 DefaultAttrsIntrinsic<[], 4834 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty], 4835 [IntrArgMemOnly]>; 4836 def int_x86_avx512_mask_pmov_wb_mem_512 : 4837 ClangBuiltin<"__builtin_ia32_pmovwb512mem_mask">, 4838 DefaultAttrsIntrinsic<[], 4839 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty], 4840 [IntrArgMemOnly]>; 4841 def int_x86_avx512_mask_pmovs_wb_512 : 4842 ClangBuiltin<"__builtin_ia32_pmovswb512_mask">, 4843 DefaultAttrsIntrinsic<[llvm_v32i8_ty], 4844 [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty], 4845 [IntrNoMem]>; 4846 def int_x86_avx512_mask_pmovs_wb_mem_512 : 4847 ClangBuiltin<"__builtin_ia32_pmovswb512mem_mask">, 4848 DefaultAttrsIntrinsic<[], 4849 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty], 4850 [IntrArgMemOnly]>; 4851 def int_x86_avx512_mask_pmovus_wb_512 : 4852 ClangBuiltin<"__builtin_ia32_pmovuswb512_mask">, 4853 DefaultAttrsIntrinsic<[llvm_v32i8_ty], 4854 [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty], 4855 [IntrNoMem]>; 4856 def int_x86_avx512_mask_pmovus_wb_mem_512 : 4857 ClangBuiltin<"__builtin_ia32_pmovuswb512mem_mask">, 4858 DefaultAttrsIntrinsic<[], 4859 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty], 4860 [IntrArgMemOnly]>; 4861} 4862 4863// Bitwise ternary logic 4864let TargetPrefix = "x86" in { 4865 def int_x86_avx512_pternlog_d_128 : 4866 ClangBuiltin<"__builtin_ia32_pternlogd128">, 4867 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 4868 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, 4869 llvm_i32_ty], 4870 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 4871 4872 def int_x86_avx512_pternlog_d_256 : 4873 ClangBuiltin<"__builtin_ia32_pternlogd256">, 4874 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 4875 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, 4876 llvm_i32_ty], 4877 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 4878 4879 def int_x86_avx512_pternlog_d_512 : 4880 ClangBuiltin<"__builtin_ia32_pternlogd512">, 4881 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 4882 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, 4883 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>]>; 4884 4885 def int_x86_avx512_pternlog_q_128 : 4886 ClangBuiltin<"__builtin_ia32_pternlogq128">, 4887 DefaultAttrsIntrinsic<[llvm_v2i64_ty], 4888 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 4889 llvm_i32_ty], 4890 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 4891 4892 def int_x86_avx512_pternlog_q_256 : 4893 ClangBuiltin<"__builtin_ia32_pternlogq256">, 4894 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 4895 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, 4896 llvm_i32_ty], 4897 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 4898 4899 def int_x86_avx512_pternlog_q_512 : 4900 ClangBuiltin<"__builtin_ia32_pternlogq512">, 4901 DefaultAttrsIntrinsic<[llvm_v8i64_ty], 4902 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, 4903 llvm_i32_ty], 4904 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 4905} 4906 4907// vp2intersect 4908let TargetPrefix = "x86" in { 4909 def int_x86_avx512_vp2intersect_q_512 : 4910 DefaultAttrsIntrinsic<[llvm_v8i1_ty, llvm_v8i1_ty], 4911 [llvm_v8i64_ty, llvm_v8i64_ty], 4912 [IntrNoMem]>; 4913 def int_x86_avx512_vp2intersect_q_256 : 4914 DefaultAttrsIntrinsic<[llvm_v4i1_ty, llvm_v4i1_ty], 4915 [llvm_v4i64_ty, llvm_v4i64_ty], 4916 [IntrNoMem]>; 4917 def int_x86_avx512_vp2intersect_q_128 : 4918 DefaultAttrsIntrinsic<[llvm_v2i1_ty, llvm_v2i1_ty], 4919 [llvm_v2i64_ty, llvm_v2i64_ty], 4920 [IntrNoMem]>; 4921 def int_x86_avx512_vp2intersect_d_512 : 4922 DefaultAttrsIntrinsic<[llvm_v16i1_ty, llvm_v16i1_ty], 4923 [llvm_v16i32_ty, llvm_v16i32_ty], 4924 [IntrNoMem]>; 4925 def int_x86_avx512_vp2intersect_d_256 : 4926 DefaultAttrsIntrinsic<[llvm_v8i1_ty, llvm_v8i1_ty], 4927 [llvm_v8i32_ty, llvm_v8i32_ty], 4928 [IntrNoMem]>; 4929 def int_x86_avx512_vp2intersect_d_128 : 4930 DefaultAttrsIntrinsic<[llvm_v4i1_ty, llvm_v4i1_ty], 4931 [llvm_v4i32_ty, llvm_v4i32_ty], 4932 [IntrNoMem]>; 4933} 4934 4935// Misc. 4936let TargetPrefix = "x86" in { 4937 // NOTE: These comparison intrinsics are not used by clang as long as the 4938 // distinction in signaling behaviour is not implemented. 4939 def int_x86_avx512_mask_cmp_ps_512 : 4940 DefaultAttrsIntrinsic<[llvm_v16i1_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4941 llvm_i32_ty, llvm_v16i1_ty, llvm_i32_ty], 4942 [IntrNoMem, ImmArg<ArgIndex<2>>, 4943 ImmArg<ArgIndex<4>>]>; 4944 def int_x86_avx512_mask_cmp_pd_512 : 4945 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4946 llvm_i32_ty, llvm_v8i1_ty, llvm_i32_ty], 4947 [IntrNoMem, ImmArg<ArgIndex<2>>, 4948 ImmArg<ArgIndex<4>>]>; 4949 def int_x86_avx512_mask_cmp_ps_256 : 4950 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 4951 llvm_i32_ty, llvm_v8i1_ty], 4952 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 4953 def int_x86_avx512_mask_cmp_pd_256 : 4954 DefaultAttrsIntrinsic<[llvm_v4i1_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 4955 llvm_i32_ty, llvm_v4i1_ty], 4956 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 4957 def int_x86_avx512_mask_cmp_ps_128 : 4958 DefaultAttrsIntrinsic<[llvm_v4i1_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4959 llvm_i32_ty, llvm_v4i1_ty], 4960 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 4961 def int_x86_avx512_mask_cmp_pd_128 : 4962 DefaultAttrsIntrinsic<[llvm_v2i1_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4963 llvm_i32_ty, llvm_v2i1_ty], 4964 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 4965 4966 def int_x86_avx512_mask_cmp_ss : 4967 ClangBuiltin<"__builtin_ia32_cmpss_mask">, 4968 DefaultAttrsIntrinsic<[llvm_i8_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4969 llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], 4970 [IntrNoMem, ImmArg<ArgIndex<2>>, 4971 ImmArg<ArgIndex<4>>]>; 4972 def int_x86_avx512_mask_cmp_sd : 4973 ClangBuiltin<"__builtin_ia32_cmpsd_mask">, 4974 DefaultAttrsIntrinsic<[llvm_i8_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4975 llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], 4976 [IntrNoMem, ImmArg<ArgIndex<2>>, 4977 ImmArg<ArgIndex<4>>]>; 4978} 4979 4980//===----------------------------------------------------------------------===// 4981// SHA intrinsics 4982let TargetPrefix = "x86" in { 4983 def int_x86_sha1rnds4 : ClangBuiltin<"__builtin_ia32_sha1rnds4">, 4984 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 4985 llvm_i8_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 4986 def int_x86_sha1nexte : ClangBuiltin<"__builtin_ia32_sha1nexte">, 4987 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 4988 [IntrNoMem]>; 4989 def int_x86_sha1msg1 : ClangBuiltin<"__builtin_ia32_sha1msg1">, 4990 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 4991 [IntrNoMem]>; 4992 def int_x86_sha1msg2 : ClangBuiltin<"__builtin_ia32_sha1msg2">, 4993 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 4994 [IntrNoMem]>; 4995 def int_x86_sha256rnds2 : ClangBuiltin<"__builtin_ia32_sha256rnds2">, 4996 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 4997 llvm_v4i32_ty], [IntrNoMem]>; 4998 def int_x86_sha256msg1 : ClangBuiltin<"__builtin_ia32_sha256msg1">, 4999 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 5000 [IntrNoMem]>; 5001 def int_x86_sha256msg2 : ClangBuiltin<"__builtin_ia32_sha256msg2">, 5002 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 5003 [IntrNoMem]>; 5004} 5005 5006//===----------------------------------------------------------------------===// 5007// SHA512 intrinsics 5008let TargetPrefix = "x86" in { 5009def int_x86_vsha512msg1 : ClangBuiltin<"__builtin_ia32_vsha512msg1">, 5010 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v2i64_ty], 5011 [IntrNoMem]>; 5012def int_x86_vsha512msg2 : ClangBuiltin<"__builtin_ia32_vsha512msg2">, 5013 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 5014 [IntrNoMem]>; 5015def int_x86_vsha512rnds2 : ClangBuiltin<"__builtin_ia32_vsha512rnds2">, 5016 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v2i64_ty], 5017 [IntrNoMem]>; 5018} 5019 5020//===----------------------------------------------------------------------===// 5021// Thread synchronization ops with timer. 5022let TargetPrefix = "x86" in { 5023 def int_x86_monitorx 5024 : ClangBuiltin<"__builtin_ia32_monitorx">, 5025 Intrinsic<[], [ llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty ], []>; 5026 def int_x86_mwaitx 5027 : ClangBuiltin<"__builtin_ia32_mwaitx">, 5028 Intrinsic<[], [ llvm_i32_ty, llvm_i32_ty, llvm_i32_ty ], []>; 5029} 5030 5031//===----------------------------------------------------------------------===// 5032// Cache-line zero 5033let TargetPrefix = "x86" in { 5034 def int_x86_clzero : ClangBuiltin<"__builtin_ia32_clzero">, 5035 Intrinsic<[], [llvm_ptr_ty], []>; 5036} 5037 5038//===----------------------------------------------------------------------===// 5039// Cache write back intrinsics 5040 5041let TargetPrefix = "x86" in { 5042 // Write back and invalidate 5043 def int_x86_wbinvd : ClangBuiltin<"__builtin_ia32_wbinvd">, 5044 Intrinsic<[], [], []>; 5045 5046 // Write back no-invalidate 5047 def int_x86_wbnoinvd : ClangBuiltin<"__builtin_ia32_wbnoinvd">, 5048 Intrinsic<[], [], []>; 5049} 5050 5051//===----------------------------------------------------------------------===// 5052// Cache-line demote 5053 5054let TargetPrefix = "x86" in { 5055 def int_x86_cldemote : ClangBuiltin<"__builtin_ia32_cldemote">, 5056 Intrinsic<[], [llvm_ptr_ty], []>; 5057} 5058 5059//===----------------------------------------------------------------------===// 5060// Wait and pause enhancements 5061let TargetPrefix = "x86" in { 5062 def int_x86_umonitor : ClangBuiltin<"__builtin_ia32_umonitor">, 5063 Intrinsic<[], [llvm_ptr_ty], []>; 5064 def int_x86_umwait : ClangBuiltin<"__builtin_ia32_umwait">, 5065 Intrinsic<[llvm_i8_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>; 5066 def int_x86_tpause : ClangBuiltin<"__builtin_ia32_tpause">, 5067 Intrinsic<[llvm_i8_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>; 5068} 5069 5070//===----------------------------------------------------------------------===// 5071// Direct Move Instructions 5072 5073let TargetPrefix = "x86" in { 5074 def int_x86_directstore32 : ClangBuiltin<"__builtin_ia32_directstore_u32">, 5075 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], []>; 5076 def int_x86_directstore64 : ClangBuiltin<"__builtin_ia32_directstore_u64">, 5077 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], []>; 5078 def int_x86_movdir64b : ClangBuiltin<"__builtin_ia32_movdir64b">, 5079 Intrinsic<[], [llvm_ptr_ty, llvm_ptr_ty], []>; 5080} 5081 5082//===----------------------------------------------------------------------===// 5083// PTWrite - Write data to processor trace pocket 5084 5085let TargetPrefix = "x86" in { 5086 def int_x86_ptwrite32 : ClangBuiltin<"__builtin_ia32_ptwrite32">, 5087 Intrinsic<[], [llvm_i32_ty], []>; 5088 def int_x86_ptwrite64 : ClangBuiltin<"__builtin_ia32_ptwrite64">, 5089 Intrinsic<[], [llvm_i64_ty], []>; 5090} 5091 5092//===----------------------------------------------------------------------===// 5093// INVPCID - Invalidate Process-Context Identifier 5094 5095let TargetPrefix = "x86" in { 5096 def int_x86_invpcid : ClangBuiltin<"__builtin_ia32_invpcid">, 5097 Intrinsic<[], [llvm_i32_ty, llvm_ptr_ty], []>; 5098} 5099 5100let TargetPrefix = "x86" in { 5101 def int_x86_avx512bf16_cvtne2ps2bf16_128: 5102 ClangBuiltin<"__builtin_ia32_cvtne2ps2bf16_128">, 5103 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v4f32_ty, llvm_v4f32_ty], 5104 [IntrNoMem]>; 5105 def int_x86_avx512bf16_cvtne2ps2bf16_256: 5106 ClangBuiltin<"__builtin_ia32_cvtne2ps2bf16_256">, 5107 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v8f32_ty, llvm_v8f32_ty], 5108 [IntrNoMem]>; 5109 def int_x86_avx512bf16_cvtne2ps2bf16_512: 5110 ClangBuiltin<"__builtin_ia32_cvtne2ps2bf16_512">, 5111 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v16f32_ty, llvm_v16f32_ty], 5112 [IntrNoMem]>; 5113 // Intrinsic must be masked due to it producing less than 128 bits of results. 5114 def int_x86_avx512bf16_mask_cvtneps2bf16_128: 5115 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], 5116 [llvm_v4f32_ty, llvm_v8bf16_ty, llvm_v4i1_ty], 5117 [IntrNoMem]>; 5118 def int_x86_avx512bf16_cvtneps2bf16_256: 5119 ClangBuiltin<"__builtin_ia32_cvtneps2bf16_256">, 5120 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8f32_ty], [IntrNoMem]>; 5121 def int_x86_avx512bf16_cvtneps2bf16_512: 5122 ClangBuiltin<"__builtin_ia32_cvtneps2bf16_512">, 5123 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16f32_ty], [IntrNoMem]>; 5124 def int_x86_avx512bf16_dpbf16ps_128: 5125 ClangBuiltin<"__builtin_ia32_dpbf16ps_128">, 5126 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 5127 [llvm_v4f32_ty, llvm_v8bf16_ty, llvm_v8bf16_ty], 5128 [IntrNoMem]>; 5129 def int_x86_avx512bf16_dpbf16ps_256: 5130 ClangBuiltin<"__builtin_ia32_dpbf16ps_256">, 5131 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5132 [llvm_v8f32_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 5133 [IntrNoMem]>; 5134 def int_x86_avx512bf16_dpbf16ps_512: 5135 ClangBuiltin<"__builtin_ia32_dpbf16ps_512">, 5136 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 5137 [llvm_v16f32_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 5138 [IntrNoMem]>; 5139} 5140 5141//===----------------------------------------------------------------------===// 5142// ENQCMD - Enqueue Stores Instructions 5143 5144let TargetPrefix = "x86" in { 5145 def int_x86_enqcmd : ClangBuiltin<"__builtin_ia32_enqcmd">, 5146 Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_ptr_ty], []>; 5147 def int_x86_enqcmds : ClangBuiltin<"__builtin_ia32_enqcmds">, 5148 Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_ptr_ty], []>; 5149} 5150 5151//===----------------------------------------------------------------------===// 5152// SERIALIZE - Serialize instruction fetch and execution 5153 5154let TargetPrefix = "x86" in { 5155 def int_x86_serialize : ClangBuiltin<"__builtin_ia32_serialize">, 5156 Intrinsic<[], [], []>; 5157} 5158 5159//===----------------------------------------------------------------------===// 5160// TSXLDTRK - TSX Suspend Load Address Tracking 5161 5162let TargetPrefix = "x86" in { 5163 def int_x86_xsusldtrk : ClangBuiltin<"__builtin_ia32_xsusldtrk">, 5164 Intrinsic<[], [], []>; 5165 def int_x86_xresldtrk : ClangBuiltin<"__builtin_ia32_xresldtrk">, 5166 Intrinsic<[], [], []>; 5167} 5168 5169//===----------------------------------------------------------------------===// 5170// Key Locker 5171let TargetPrefix = "x86" in { 5172 def int_x86_loadiwkey : ClangBuiltin<"__builtin_ia32_loadiwkey">, 5173 Intrinsic<[], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty], 5174 []>; 5175 def int_x86_encodekey128 : 5176 Intrinsic<[llvm_i32_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5177 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5178 [llvm_i32_ty, llvm_v2i64_ty], []>; 5179 def int_x86_encodekey256 : 5180 Intrinsic<[llvm_i32_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5181 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5182 [llvm_i32_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>; 5183 def int_x86_aesenc128kl : 5184 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>; 5185 def int_x86_aesdec128kl : 5186 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>; 5187 def int_x86_aesenc256kl : 5188 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>; 5189 def int_x86_aesdec256kl : 5190 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>; 5191 def int_x86_aesencwide128kl : 5192 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5193 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5194 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5195 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5196 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5197 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>; 5198 def int_x86_aesdecwide128kl : 5199 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5200 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5201 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5202 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5203 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5204 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>; 5205 def int_x86_aesencwide256kl : 5206 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5207 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5208 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5209 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5210 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5211 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>; 5212 def int_x86_aesdecwide256kl : 5213 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5214 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5215 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5216 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5217 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5218 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>; 5219} 5220 5221//===----------------------------------------------------------------------===// 5222// AMX - Intel AMX extensions 5223 5224let TargetPrefix = "x86" in { 5225 def int_x86_ldtilecfg : ClangBuiltin<"__builtin_ia32_tile_loadconfig">, 5226 Intrinsic<[], [llvm_ptr_ty], []>; 5227 def int_x86_sttilecfg : ClangBuiltin<"__builtin_ia32_tile_storeconfig">, 5228 Intrinsic<[], [llvm_ptr_ty], []>; 5229 def int_x86_tilerelease : ClangBuiltin<"__builtin_ia32_tilerelease">, 5230 Intrinsic<[], [], []>; 5231 def int_x86_tilezero : ClangBuiltin<"__builtin_ia32_tilezero">, 5232 Intrinsic<[], [llvm_i8_ty], [ImmArg<ArgIndex<0>>]>; 5233 def int_x86_tileloadd64 : ClangBuiltin<"__builtin_ia32_tileloadd64">, 5234 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5235 [ImmArg<ArgIndex<0>>]>; 5236 def int_x86_tileloaddt164 : ClangBuiltin<"__builtin_ia32_tileloaddt164">, 5237 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5238 [ImmArg<ArgIndex<0>>]>; 5239 def int_x86_tilestored64 : ClangBuiltin<"__builtin_ia32_tilestored64">, 5240 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5241 [ImmArg<ArgIndex<0>>]>; 5242 def int_x86_tdpbssd : ClangBuiltin<"__builtin_ia32_tdpbssd">, 5243 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5244 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5245 ImmArg<ArgIndex<2>>]>; 5246 def int_x86_tdpbsud : ClangBuiltin<"__builtin_ia32_tdpbsud">, 5247 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5248 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5249 ImmArg<ArgIndex<2>>]>; 5250 def int_x86_tdpbusd : ClangBuiltin<"__builtin_ia32_tdpbusd">, 5251 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5252 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5253 ImmArg<ArgIndex<2>>]>; 5254 def int_x86_tdpbuud : ClangBuiltin<"__builtin_ia32_tdpbuud">, 5255 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5256 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5257 ImmArg<ArgIndex<2>>]>; 5258 def int_x86_tdpbf16ps : ClangBuiltin<"__builtin_ia32_tdpbf16ps">, 5259 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5260 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5261 ImmArg<ArgIndex<2>>]>; 5262 // AMX-FP16 - Intel FP16 AMX extensions 5263 def int_x86_tdpfp16ps : ClangBuiltin<"__builtin_ia32_tdpfp16ps">, 5264 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5265 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5266 ImmArg<ArgIndex<2>>]>; 5267 // AMX-COMPLEX 5268 def int_x86_tcmmimfp16ps : ClangBuiltin<"__builtin_ia32_tcmmimfp16ps">, 5269 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5270 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5271 ImmArg<ArgIndex<2>>]>; 5272 def int_x86_tcmmrlfp16ps : ClangBuiltin<"__builtin_ia32_tcmmrlfp16ps">, 5273 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5274 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5275 ImmArg<ArgIndex<2>>]>; 5276 5277 // AMX - internal intrinsics 5278 def int_x86_ldtilecfg_internal : 5279 ClangBuiltin<"__builtin_ia32_tile_loadconfig_internal">, 5280 Intrinsic<[], [llvm_ptr_ty], []>; 5281 def int_x86_tileloadd64_internal : 5282 ClangBuiltin<"__builtin_ia32_tileloadd64_internal">, 5283 Intrinsic<[llvm_x86amx_ty], 5284 [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 5285 []>; 5286 def int_x86_tileloaddt164_internal : 5287 ClangBuiltin<"__builtin_ia32_tileloaddt164_internal">, 5288 Intrinsic<[llvm_x86amx_ty], 5289 [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 5290 []>; 5291 def int_x86_tdpbssd_internal : 5292 ClangBuiltin<"__builtin_ia32_tdpbssd_internal">, 5293 Intrinsic<[llvm_x86amx_ty], 5294 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 5295 llvm_x86amx_ty, llvm_x86amx_ty, 5296 llvm_x86amx_ty], []>; 5297 def int_x86_tdpbsud_internal : 5298 ClangBuiltin<"__builtin_ia32_tdpbsud_internal">, 5299 Intrinsic<[llvm_x86amx_ty], 5300 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 5301 llvm_x86amx_ty, llvm_x86amx_ty, 5302 llvm_x86amx_ty], []>; 5303 def int_x86_tdpbusd_internal : 5304 ClangBuiltin<"__builtin_ia32_tdpbusd_internal">, 5305 Intrinsic<[llvm_x86amx_ty], 5306 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 5307 llvm_x86amx_ty, llvm_x86amx_ty, 5308 llvm_x86amx_ty], []>; 5309 def int_x86_tdpbuud_internal : 5310 ClangBuiltin<"__builtin_ia32_tdpbuud_internal">, 5311 Intrinsic<[llvm_x86amx_ty], 5312 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 5313 llvm_x86amx_ty, llvm_x86amx_ty, 5314 llvm_x86amx_ty], []>; 5315 def int_x86_tilestored64_internal : 5316 ClangBuiltin<"__builtin_ia32_tilestored64_internal">, 5317 Intrinsic<[], [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, 5318 llvm_i64_ty, llvm_x86amx_ty], []>; 5319 def int_x86_tilezero_internal : 5320 ClangBuiltin<"__builtin_ia32_tilezero_internal">, 5321 Intrinsic<[llvm_x86amx_ty], [llvm_i16_ty, llvm_i16_ty], 5322 []>; 5323 def int_x86_tdpbf16ps_internal : 5324 ClangBuiltin<"__builtin_ia32_tdpbf16ps_internal">, 5325 Intrinsic<[llvm_x86amx_ty], 5326 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 5327 llvm_x86amx_ty, llvm_x86amx_ty, 5328 llvm_x86amx_ty], []>; 5329 def int_x86_tdpfp16ps_internal : 5330 ClangBuiltin<"__builtin_ia32_tdpfp16ps_internal">, 5331 Intrinsic<[llvm_x86amx_ty], 5332 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 5333 llvm_x86amx_ty, llvm_x86amx_ty, 5334 llvm_x86amx_ty], []>; 5335 // the vector size can be smaller than AMX register size (1024 bytes) 5336 def int_x86_cast_vector_to_tile: 5337 DefaultAttrsIntrinsic<[llvm_x86amx_ty], [llvm_anyvector_ty], [IntrNoMem]>; 5338 // the vector size can be smaller than AMX register size (1024 bytes) 5339 def int_x86_cast_tile_to_vector: 5340 DefaultAttrsIntrinsic<[llvm_anyvector_ty], [llvm_x86amx_ty], [IntrNoMem]>; 5341 5342 def int_x86_tcmmimfp16ps_internal : 5343 ClangBuiltin<"__builtin_ia32_tcmmimfp16ps_internal">, 5344 Intrinsic<[llvm_x86amx_ty], 5345 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 5346 llvm_x86amx_ty, llvm_x86amx_ty, 5347 llvm_x86amx_ty], []>; 5348 def int_x86_tcmmrlfp16ps_internal : 5349 ClangBuiltin<"__builtin_ia32_tcmmrlfp16ps_internal">, 5350 Intrinsic<[llvm_x86amx_ty], 5351 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 5352 llvm_x86amx_ty, llvm_x86amx_ty, 5353 llvm_x86amx_ty], []>; 5354} 5355 5356//===----------------------------------------------------------------------===// 5357let TargetPrefix = "x86" in { 5358// CMPCCXADD 5359def int_x86_cmpccxadd32 5360 : ClangBuiltin<"__builtin_ia32_cmpccxadd32">, 5361 Intrinsic<[llvm_i32_ty], 5362 [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 5363 [IntrArgMemOnly, ImmArg<ArgIndex<3>>]>; 5364 5365def int_x86_cmpccxadd64 5366 : ClangBuiltin<"__builtin_ia32_cmpccxadd64">, 5367 Intrinsic<[llvm_i64_ty], 5368 [llvm_ptr_ty, llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], 5369 [IntrArgMemOnly, ImmArg<ArgIndex<3>>]>; 5370 5371// AVX-NE-CONVERT 5372def int_x86_vbcstnebf162ps128 5373 : ClangBuiltin<"__builtin_ia32_vbcstnebf162ps128">, 5374 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 5375 [IntrReadMem, IntrArgMemOnly]>; 5376def int_x86_vbcstnebf162ps256 5377 : ClangBuiltin<"__builtin_ia32_vbcstnebf162ps256">, 5378 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 5379 [IntrReadMem, IntrArgMemOnly]>; 5380def int_x86_vbcstnesh2ps128 5381 : ClangBuiltin<"__builtin_ia32_vbcstnesh2ps128">, 5382 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 5383 [IntrReadMem, IntrArgMemOnly]>; 5384def int_x86_vbcstnesh2ps256 5385 : ClangBuiltin<"__builtin_ia32_vbcstnesh2ps256">, 5386 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 5387 [IntrReadMem, IntrArgMemOnly]>; 5388def int_x86_vcvtneebf162ps128 5389 : ClangBuiltin<"__builtin_ia32_vcvtneebf162ps128">, 5390 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 5391 [IntrReadMem, IntrArgMemOnly]>; 5392def int_x86_vcvtneebf162ps256 5393 : ClangBuiltin<"__builtin_ia32_vcvtneebf162ps256">, 5394 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 5395 [IntrReadMem, IntrArgMemOnly]>; 5396def int_x86_vcvtneeph2ps128 5397 : ClangBuiltin<"__builtin_ia32_vcvtneeph2ps128">, 5398 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 5399 [IntrReadMem, IntrArgMemOnly]>; 5400def int_x86_vcvtneeph2ps256 5401 : ClangBuiltin<"__builtin_ia32_vcvtneeph2ps256">, 5402 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 5403 [IntrReadMem, IntrArgMemOnly]>; 5404def int_x86_vcvtneobf162ps128 5405 : ClangBuiltin<"__builtin_ia32_vcvtneobf162ps128">, 5406 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 5407 [IntrReadMem, IntrArgMemOnly]>; 5408def int_x86_vcvtneobf162ps256 5409 : ClangBuiltin<"__builtin_ia32_vcvtneobf162ps256">, 5410 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 5411 [IntrReadMem, IntrArgMemOnly]>; 5412def int_x86_vcvtneoph2ps128 5413 : ClangBuiltin<"__builtin_ia32_vcvtneoph2ps128">, 5414 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 5415 [IntrReadMem, IntrArgMemOnly]>; 5416def int_x86_vcvtneoph2ps256 5417 : ClangBuiltin<"__builtin_ia32_vcvtneoph2ps256">, 5418 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 5419 [IntrReadMem, IntrArgMemOnly]>; 5420def int_x86_vcvtneps2bf16128 5421 : ClangBuiltin<"__builtin_ia32_vcvtneps2bf16128">, 5422 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v4f32_ty], [IntrNoMem]>; 5423def int_x86_vcvtneps2bf16256 5424 : ClangBuiltin<"__builtin_ia32_vcvtneps2bf16256">, 5425 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8f32_ty], [IntrNoMem]>; 5426} 5427//===----------------------------------------------------------------------===// 5428// SM3 intrinsics 5429let TargetPrefix = "x86" in { 5430 def int_x86_vsm3msg1 5431 : ClangBuiltin<"__builtin_ia32_vsm3msg1">, 5432 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 5433 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 5434 [IntrNoMem]>; 5435 def int_x86_vsm3msg2 5436 : ClangBuiltin<"__builtin_ia32_vsm3msg2">, 5437 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 5438 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 5439 [IntrNoMem]>; 5440 def int_x86_vsm3rnds2 5441 : ClangBuiltin<"__builtin_ia32_vsm3rnds2">, 5442 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 5443 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty], 5444 [ImmArg<ArgIndex<3>>, IntrNoMem]>; 5445} 5446//===----------------------------------------------------------------------===// 5447// SM4 intrinsics 5448let TargetPrefix = "x86" in { 5449 def int_x86_vsm4key4128 5450 : ClangBuiltin<"__builtin_ia32_vsm4key4128">, 5451 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 5452 [llvm_v4i32_ty, llvm_v4i32_ty], 5453 [IntrNoMem]>; 5454 def int_x86_vsm4key4256 5455 : ClangBuiltin<"__builtin_ia32_vsm4key4256">, 5456 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 5457 [llvm_v8i32_ty, llvm_v8i32_ty], 5458 [IntrNoMem]>; 5459 def int_x86_vsm4rnds4128 5460 : ClangBuiltin<"__builtin_ia32_vsm4rnds4128">, 5461 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 5462 [llvm_v4i32_ty, llvm_v4i32_ty], 5463 [IntrNoMem]>; 5464 def int_x86_vsm4rnds4256 5465 : ClangBuiltin<"__builtin_ia32_vsm4rnds4256">, 5466 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 5467 [llvm_v8i32_ty, llvm_v8i32_ty], 5468 [IntrNoMem]>; 5469} 5470//===----------------------------------------------------------------------===// 5471// RAO-INT intrinsics 5472let TargetPrefix = "x86" in { 5473 def int_x86_aadd32 5474 : ClangBuiltin<"__builtin_ia32_aadd32">, 5475 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5476 def int_x86_aadd64 5477 : ClangBuiltin<"__builtin_ia32_aadd64">, 5478 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>; 5479 def int_x86_aand32 5480 : ClangBuiltin<"__builtin_ia32_aand32">, 5481 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5482 def int_x86_aand64 5483 : ClangBuiltin<"__builtin_ia32_aand64">, 5484 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>; 5485 def int_x86_aor32 5486 : ClangBuiltin<"__builtin_ia32_aor32">, 5487 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5488 def int_x86_aor64 5489 : ClangBuiltin<"__builtin_ia32_aor64">, 5490 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>; 5491 def int_x86_axor32 5492 : ClangBuiltin<"__builtin_ia32_axor32">, 5493 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5494 def int_x86_axor64 5495 : ClangBuiltin<"__builtin_ia32_axor64">, 5496 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>; 5497} 5498 5499//===----------------------------------------------------------------------===// 5500// UINTR - User Level Interrupt 5501 5502let TargetPrefix = "x86" in { 5503 def int_x86_clui : ClangBuiltin<"__builtin_ia32_clui">, 5504 Intrinsic<[], [], []>; 5505 def int_x86_stui : ClangBuiltin<"__builtin_ia32_stui">, 5506 Intrinsic<[], [], []>; 5507 def int_x86_testui : ClangBuiltin<"__builtin_ia32_testui">, 5508 Intrinsic<[llvm_i8_ty], [], []>; 5509 def int_x86_senduipi : ClangBuiltin<"__builtin_ia32_senduipi">, 5510 Intrinsic<[], [llvm_i64_ty], []>; 5511} 5512 5513let TargetPrefix = "x86" in { 5514def int_x86_urdmsr : ClangBuiltin<"__builtin_ia32_urdmsr">, 5515 Intrinsic<[llvm_i64_ty], [llvm_i64_ty], 5516 [IntrInaccessibleMemOnly]>; 5517def int_x86_uwrmsr : ClangBuiltin<"__builtin_ia32_uwrmsr">, 5518 Intrinsic<[], [llvm_i64_ty, llvm_i64_ty], 5519 [IntrInaccessibleMemOnly]>; 5520} 5521 5522//===----------------------------------------------------------------------===// 5523let TargetPrefix = "x86" in { 5524 def int_x86_avx512fp16_add_ph_512 5525 : ClangBuiltin<"__builtin_ia32_addph512">, 5526 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 5527 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 5528 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5529 def int_x86_avx512fp16_sub_ph_512 5530 : ClangBuiltin<"__builtin_ia32_subph512">, 5531 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 5532 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 5533 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5534 def int_x86_avx512fp16_mul_ph_512 5535 : ClangBuiltin<"__builtin_ia32_mulph512">, 5536 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 5537 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 5538 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5539 def int_x86_avx512fp16_div_ph_512 5540 : ClangBuiltin<"__builtin_ia32_divph512">, 5541 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 5542 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 5543 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5544 def int_x86_avx512fp16_max_ph_128 5545 : ClangBuiltin<"__builtin_ia32_maxph128">, 5546 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5547 [ llvm_v8f16_ty, llvm_v8f16_ty ], [ IntrNoMem ]>; 5548 def int_x86_avx512fp16_max_ph_256 5549 : ClangBuiltin<"__builtin_ia32_maxph256">, 5550 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 5551 [ llvm_v16f16_ty, llvm_v16f16_ty ], 5552 [ IntrNoMem ]>; 5553 def int_x86_avx512fp16_max_ph_512 5554 : ClangBuiltin<"__builtin_ia32_maxph512">, 5555 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 5556 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 5557 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5558 def int_x86_avx512fp16_min_ph_128 5559 : ClangBuiltin<"__builtin_ia32_minph128">, 5560 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5561 [ llvm_v8f16_ty, llvm_v8f16_ty ], [ IntrNoMem ]>; 5562 def int_x86_avx512fp16_min_ph_256 5563 : ClangBuiltin<"__builtin_ia32_minph256">, 5564 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 5565 [ llvm_v16f16_ty, llvm_v16f16_ty ], 5566 [ IntrNoMem ]>; 5567 def int_x86_avx512fp16_min_ph_512 5568 : ClangBuiltin<"__builtin_ia32_minph512">, 5569 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 5570 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 5571 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5572 5573 def int_x86_avx512fp16_mask_cmp_ph_512 5574 : DefaultAttrsIntrinsic<[ llvm_v32i1_ty ], 5575 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty, 5576 llvm_v32i1_ty, llvm_i32_ty ], 5577 [ IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<4>> ]>; 5578 def int_x86_avx512fp16_mask_cmp_ph_256 5579 : DefaultAttrsIntrinsic<[ llvm_v16i1_ty ], 5580 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty, 5581 llvm_v16i1_ty ], 5582 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5583 def int_x86_avx512fp16_mask_cmp_ph_128 5584 : DefaultAttrsIntrinsic<[ llvm_v8i1_ty ], 5585 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, 5586 llvm_v8i1_ty ], 5587 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5588 5589 def int_x86_avx512fp16_mask_add_sh_round 5590 : ClangBuiltin<"__builtin_ia32_addsh_round_mask">, 5591 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5592 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 5593 llvm_i8_ty, llvm_i32_ty ], 5594 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 5595 def int_x86_avx512fp16_mask_sub_sh_round 5596 : ClangBuiltin<"__builtin_ia32_subsh_round_mask">, 5597 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5598 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 5599 llvm_i8_ty, llvm_i32_ty ], 5600 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 5601 def int_x86_avx512fp16_mask_mul_sh_round 5602 : ClangBuiltin<"__builtin_ia32_mulsh_round_mask">, 5603 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5604 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 5605 llvm_i8_ty, llvm_i32_ty ], 5606 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 5607 def int_x86_avx512fp16_mask_div_sh_round 5608 : ClangBuiltin<"__builtin_ia32_divsh_round_mask">, 5609 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5610 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 5611 llvm_i8_ty, llvm_i32_ty ], 5612 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 5613 def int_x86_avx512fp16_mask_min_sh_round 5614 : ClangBuiltin<"__builtin_ia32_minsh_round_mask">, 5615 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5616 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 5617 llvm_i8_ty, llvm_i32_ty ], 5618 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 5619 def int_x86_avx512fp16_mask_max_sh_round 5620 : ClangBuiltin<"__builtin_ia32_maxsh_round_mask">, 5621 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5622 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 5623 llvm_i8_ty, llvm_i32_ty ], 5624 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 5625 def int_x86_avx512fp16_mask_cmp_sh 5626 : ClangBuiltin<"__builtin_ia32_cmpsh_mask">, 5627 DefaultAttrsIntrinsic<[ llvm_i8_ty ], 5628 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, 5629 llvm_i8_ty, llvm_i32_ty ], 5630 [ IntrNoMem, ImmArg<ArgIndex<2>>, 5631 ImmArg<ArgIndex<4>> ]>; 5632 def int_x86_avx512fp16_vcomi_sh 5633 : ClangBuiltin<"__builtin_ia32_vcomish">, 5634 DefaultAttrsIntrinsic<[ llvm_i32_ty ], 5635 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, 5636 llvm_i32_ty ], 5637 [ IntrNoMem, ImmArg<ArgIndex<2>>, 5638 ImmArg<ArgIndex<3>> ]>; 5639 5640 def int_x86_avx512fp16_mask_vcvtph2psx_128 5641 : ClangBuiltin<"__builtin_ia32_vcvtph2psx128_mask">, 5642 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 5643 [ llvm_v8f16_ty, llvm_v4f32_ty, llvm_i8_ty ], 5644 [ IntrNoMem ]>; 5645 def int_x86_avx512fp16_mask_vcvtph2psx_256 5646 : ClangBuiltin<"__builtin_ia32_vcvtph2psx256_mask">, 5647 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 5648 [ llvm_v8f16_ty, llvm_v8f32_ty, llvm_i8_ty ], 5649 [ IntrNoMem ]>; 5650 def int_x86_avx512fp16_mask_vcvtph2psx_512 5651 : ClangBuiltin<"__builtin_ia32_vcvtph2psx512_mask">, 5652 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 5653 [ llvm_v16f16_ty, llvm_v16f32_ty, llvm_i16_ty, 5654 llvm_i32_ty ], 5655 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5656 def int_x86_avx512fp16_mask_vcvtps2phx_128 5657 : ClangBuiltin<"__builtin_ia32_vcvtps2phx128_mask">, 5658 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5659 [ llvm_v4f32_ty, llvm_v8f16_ty, llvm_i8_ty ], 5660 [ IntrNoMem ]>; 5661 def int_x86_avx512fp16_mask_vcvtps2phx_256 5662 : ClangBuiltin<"__builtin_ia32_vcvtps2phx256_mask">, 5663 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5664 [ llvm_v8f32_ty, llvm_v8f16_ty, llvm_i8_ty ], 5665 [ IntrNoMem ]>; 5666 def int_x86_avx512fp16_mask_vcvtps2phx_512 5667 : ClangBuiltin<"__builtin_ia32_vcvtps2phx512_mask">, 5668 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 5669 [ llvm_v16f32_ty, llvm_v16f16_ty, llvm_i16_ty, 5670 llvm_i32_ty ], 5671 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5672 def int_x86_avx512fp16_mask_vcvtpd2ph_128 5673 : ClangBuiltin<"__builtin_ia32_vcvtpd2ph128_mask">, 5674 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5675 [ llvm_v2f64_ty, llvm_v8f16_ty, llvm_i8_ty ], 5676 [ IntrNoMem ]>; 5677 def int_x86_avx512fp16_mask_vcvtpd2ph_256 5678 : ClangBuiltin<"__builtin_ia32_vcvtpd2ph256_mask">, 5679 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5680 [ llvm_v4f64_ty, llvm_v8f16_ty, llvm_i8_ty ], 5681 [ IntrNoMem ]>; 5682 def int_x86_avx512fp16_mask_vcvtpd2ph_512 5683 : ClangBuiltin<"__builtin_ia32_vcvtpd2ph512_mask">, 5684 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5685 [ llvm_v8f64_ty, llvm_v8f16_ty, llvm_i8_ty, 5686 llvm_i32_ty ], 5687 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5688 def int_x86_avx512fp16_mask_vcvtph2pd_128 5689 : ClangBuiltin<"__builtin_ia32_vcvtph2pd128_mask">, 5690 DefaultAttrsIntrinsic<[ llvm_v2f64_ty ], 5691 [ llvm_v8f16_ty, llvm_v2f64_ty, llvm_i8_ty ], 5692 [ IntrNoMem ]>; 5693 def int_x86_avx512fp16_mask_vcvtph2pd_256 5694 : ClangBuiltin<"__builtin_ia32_vcvtph2pd256_mask">, 5695 DefaultAttrsIntrinsic<[ llvm_v4f64_ty ], 5696 [ llvm_v8f16_ty, llvm_v4f64_ty, llvm_i8_ty ], 5697 [ IntrNoMem ]>; 5698 def int_x86_avx512fp16_mask_vcvtph2pd_512 5699 : ClangBuiltin<"__builtin_ia32_vcvtph2pd512_mask">, 5700 DefaultAttrsIntrinsic<[ llvm_v8f64_ty ], 5701 [ llvm_v8f16_ty, llvm_v8f64_ty, llvm_i8_ty, 5702 llvm_i32_ty ], 5703 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5704 def int_x86_avx512fp16_mask_vcvtsh2ss_round 5705 : ClangBuiltin<"__builtin_ia32_vcvtsh2ss_round_mask">, 5706 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 5707 [ llvm_v4f32_ty, llvm_v8f16_ty, llvm_v4f32_ty, 5708 llvm_i8_ty, llvm_i32_ty ], 5709 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 5710 def int_x86_avx512fp16_mask_vcvtss2sh_round 5711 : ClangBuiltin<"__builtin_ia32_vcvtss2sh_round_mask">, 5712 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5713 [ llvm_v8f16_ty, llvm_v4f32_ty, llvm_v8f16_ty, 5714 llvm_i8_ty, llvm_i32_ty ], 5715 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 5716 def int_x86_avx512fp16_mask_vcvtsd2sh_round 5717 : ClangBuiltin<"__builtin_ia32_vcvtsd2sh_round_mask">, 5718 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5719 [ llvm_v8f16_ty, llvm_v2f64_ty, llvm_v8f16_ty, 5720 llvm_i8_ty, llvm_i32_ty ], 5721 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 5722 def int_x86_avx512fp16_mask_vcvtsh2sd_round 5723 : ClangBuiltin<"__builtin_ia32_vcvtsh2sd_round_mask">, 5724 DefaultAttrsIntrinsic<[ llvm_v2f64_ty ], 5725 [ llvm_v2f64_ty, llvm_v8f16_ty, llvm_v2f64_ty, 5726 llvm_i8_ty, llvm_i32_ty ], 5727 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 5728 5729 def int_x86_avx512fp16_mask_vcvtph2w_128 5730 : ClangBuiltin<"__builtin_ia32_vcvtph2w128_mask">, 5731 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ], 5732 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ], 5733 [ IntrNoMem ]>; 5734 def int_x86_avx512fp16_mask_vcvtph2w_256 5735 : ClangBuiltin<"__builtin_ia32_vcvtph2w256_mask">, 5736 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ], 5737 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ], 5738 [ IntrNoMem ]>; 5739 def int_x86_avx512fp16_mask_vcvtph2w_512 5740 : ClangBuiltin<"__builtin_ia32_vcvtph2w512_mask">, 5741 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ], 5742 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, 5743 llvm_i32_ty ], 5744 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5745 def int_x86_avx512fp16_mask_vcvttph2w_128 5746 : ClangBuiltin<"__builtin_ia32_vcvttph2w128_mask">, 5747 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ], 5748 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ], 5749 [ IntrNoMem ]>; 5750 def int_x86_avx512fp16_mask_vcvttph2w_256 5751 : ClangBuiltin<"__builtin_ia32_vcvttph2w256_mask">, 5752 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ], 5753 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ], 5754 [ IntrNoMem ]>; 5755 def int_x86_avx512fp16_mask_vcvttph2w_512 5756 : ClangBuiltin<"__builtin_ia32_vcvttph2w512_mask">, 5757 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ], 5758 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, 5759 llvm_i32_ty ], 5760 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5761 def int_x86_avx512fp16_mask_vcvtph2uw_128 5762 : ClangBuiltin<"__builtin_ia32_vcvtph2uw128_mask">, 5763 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ], 5764 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ], 5765 [ IntrNoMem ]>; 5766 def int_x86_avx512fp16_mask_vcvtph2uw_256 5767 : ClangBuiltin<"__builtin_ia32_vcvtph2uw256_mask">, 5768 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ], 5769 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ], 5770 [ IntrNoMem ]>; 5771 def int_x86_avx512fp16_mask_vcvtph2uw_512 5772 : ClangBuiltin<"__builtin_ia32_vcvtph2uw512_mask">, 5773 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ], 5774 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, 5775 llvm_i32_ty ], 5776 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5777 def int_x86_avx512fp16_mask_vcvttph2uw_128 5778 : ClangBuiltin<"__builtin_ia32_vcvttph2uw128_mask">, 5779 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ], 5780 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ], 5781 [ IntrNoMem ]>; 5782 def int_x86_avx512fp16_mask_vcvttph2uw_256 5783 : ClangBuiltin<"__builtin_ia32_vcvttph2uw256_mask">, 5784 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ], 5785 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ], 5786 [ IntrNoMem ]>; 5787 def int_x86_avx512fp16_mask_vcvttph2uw_512 5788 : ClangBuiltin<"__builtin_ia32_vcvttph2uw512_mask">, 5789 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ], 5790 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, 5791 llvm_i32_ty ], 5792 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5793 5794 def int_x86_avx512fp16_mask_vcvtph2dq_128 5795 : ClangBuiltin<"__builtin_ia32_vcvtph2dq128_mask">, 5796 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ], 5797 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ], 5798 [ IntrNoMem ]>; 5799 def int_x86_avx512fp16_mask_vcvtph2dq_256 5800 : ClangBuiltin<"__builtin_ia32_vcvtph2dq256_mask">, 5801 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ], 5802 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ], 5803 [ IntrNoMem ]>; 5804 def int_x86_avx512fp16_mask_vcvtph2dq_512 5805 : ClangBuiltin<"__builtin_ia32_vcvtph2dq512_mask">, 5806 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ], 5807 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty, 5808 llvm_i32_ty ], 5809 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5810 def int_x86_avx512fp16_mask_vcvtph2udq_128 5811 : ClangBuiltin<"__builtin_ia32_vcvtph2udq128_mask">, 5812 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ], 5813 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ], 5814 [ IntrNoMem ]>; 5815 def int_x86_avx512fp16_mask_vcvtph2udq_256 5816 : ClangBuiltin<"__builtin_ia32_vcvtph2udq256_mask">, 5817 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ], 5818 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ], 5819 [ IntrNoMem ]>; 5820 def int_x86_avx512fp16_mask_vcvtph2udq_512 5821 : ClangBuiltin<"__builtin_ia32_vcvtph2udq512_mask">, 5822 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ], 5823 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty, 5824 llvm_i32_ty ], 5825 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5826 def int_x86_avx512fp16_mask_vcvtdq2ph_128 5827 : ClangBuiltin<"__builtin_ia32_vcvtdq2ph128_mask">, 5828 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5829 [ llvm_v4i32_ty, llvm_v8f16_ty, llvm_i8_ty ], 5830 [ IntrNoMem ]>; 5831 def int_x86_avx512fp16_mask_vcvtudq2ph_128 5832 : ClangBuiltin<"__builtin_ia32_vcvtudq2ph128_mask">, 5833 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5834 [ llvm_v4i32_ty, llvm_v8f16_ty, llvm_i8_ty ], 5835 [ IntrNoMem ]>; 5836 def int_x86_avx512fp16_mask_vcvttph2dq_128 5837 : ClangBuiltin<"__builtin_ia32_vcvttph2dq128_mask">, 5838 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ], 5839 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ], 5840 [ IntrNoMem ]>; 5841 def int_x86_avx512fp16_mask_vcvttph2dq_256 5842 : ClangBuiltin<"__builtin_ia32_vcvttph2dq256_mask">, 5843 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ], 5844 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ], 5845 [ IntrNoMem ]>; 5846 def int_x86_avx512fp16_mask_vcvttph2dq_512 5847 : ClangBuiltin<"__builtin_ia32_vcvttph2dq512_mask">, 5848 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ], 5849 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty, 5850 llvm_i32_ty ], 5851 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5852 def int_x86_avx512fp16_mask_vcvttph2udq_128 5853 : ClangBuiltin<"__builtin_ia32_vcvttph2udq128_mask">, 5854 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ], 5855 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ], 5856 [ IntrNoMem ]>; 5857 def int_x86_avx512fp16_mask_vcvttph2udq_256 5858 : ClangBuiltin<"__builtin_ia32_vcvttph2udq256_mask">, 5859 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ], 5860 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ], 5861 [ IntrNoMem ]>; 5862 def int_x86_avx512fp16_mask_vcvttph2udq_512 5863 : ClangBuiltin<"__builtin_ia32_vcvttph2udq512_mask">, 5864 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ], 5865 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty, 5866 llvm_i32_ty ], 5867 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5868 5869 def int_x86_avx512fp16_mask_vcvtqq2ph_128 5870 : ClangBuiltin<"__builtin_ia32_vcvtqq2ph128_mask">, 5871 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5872 [ llvm_v2i64_ty, llvm_v8f16_ty, llvm_i8_ty ], 5873 [ IntrNoMem ]>; 5874 def int_x86_avx512fp16_mask_vcvtqq2ph_256 5875 : ClangBuiltin<"__builtin_ia32_vcvtqq2ph256_mask">, 5876 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5877 [ llvm_v4i64_ty, llvm_v8f16_ty, llvm_i8_ty ], 5878 [ IntrNoMem ]>; 5879 def int_x86_avx512fp16_mask_vcvtph2qq_128 5880 : ClangBuiltin<"__builtin_ia32_vcvtph2qq128_mask">, 5881 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ], 5882 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ], 5883 [ IntrNoMem ]>; 5884 def int_x86_avx512fp16_mask_vcvtph2qq_256 5885 : ClangBuiltin<"__builtin_ia32_vcvtph2qq256_mask">, 5886 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ], 5887 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ], 5888 [ IntrNoMem ]>; 5889 def int_x86_avx512fp16_mask_vcvtph2qq_512 5890 : ClangBuiltin<"__builtin_ia32_vcvtph2qq512_mask">, 5891 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ], 5892 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty, 5893 llvm_i32_ty ], 5894 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5895 def int_x86_avx512fp16_mask_vcvtuqq2ph_128 5896 : ClangBuiltin<"__builtin_ia32_vcvtuqq2ph128_mask">, 5897 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5898 [ llvm_v2i64_ty, llvm_v8f16_ty, llvm_i8_ty ], 5899 [ IntrNoMem ]>; 5900 def int_x86_avx512fp16_mask_vcvtuqq2ph_256 5901 : ClangBuiltin<"__builtin_ia32_vcvtuqq2ph256_mask">, 5902 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5903 [ llvm_v4i64_ty, llvm_v8f16_ty, llvm_i8_ty ], 5904 [ IntrNoMem ]>; 5905 def int_x86_avx512fp16_mask_vcvtph2uqq_128 5906 : ClangBuiltin<"__builtin_ia32_vcvtph2uqq128_mask">, 5907 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ], 5908 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ], 5909 [ IntrNoMem ]>; 5910 def int_x86_avx512fp16_mask_vcvtph2uqq_256 5911 : ClangBuiltin<"__builtin_ia32_vcvtph2uqq256_mask">, 5912 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ], 5913 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ], 5914 [ IntrNoMem ]>; 5915 def int_x86_avx512fp16_mask_vcvtph2uqq_512 5916 : ClangBuiltin<"__builtin_ia32_vcvtph2uqq512_mask">, 5917 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ], 5918 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty, 5919 llvm_i32_ty ], 5920 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5921 def int_x86_avx512fp16_mask_vcvttph2qq_128 5922 : ClangBuiltin<"__builtin_ia32_vcvttph2qq128_mask">, 5923 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ], 5924 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ], 5925 [ IntrNoMem ]>; 5926 def int_x86_avx512fp16_mask_vcvttph2qq_256 5927 : ClangBuiltin<"__builtin_ia32_vcvttph2qq256_mask">, 5928 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ], 5929 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ], 5930 [ IntrNoMem ]>; 5931 def int_x86_avx512fp16_mask_vcvttph2qq_512 5932 : ClangBuiltin<"__builtin_ia32_vcvttph2qq512_mask">, 5933 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ], 5934 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty, 5935 llvm_i32_ty ], 5936 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5937 def int_x86_avx512fp16_mask_vcvttph2uqq_128 5938 : ClangBuiltin<"__builtin_ia32_vcvttph2uqq128_mask">, 5939 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ], 5940 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ], 5941 [ IntrNoMem ]>; 5942 def int_x86_avx512fp16_mask_vcvttph2uqq_256 5943 : ClangBuiltin<"__builtin_ia32_vcvttph2uqq256_mask">, 5944 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ], 5945 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ], 5946 [ IntrNoMem ]>; 5947 def int_x86_avx512fp16_mask_vcvttph2uqq_512 5948 : ClangBuiltin<"__builtin_ia32_vcvttph2uqq512_mask">, 5949 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ], 5950 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty, 5951 llvm_i32_ty ], 5952 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 5953 5954 def int_x86_avx512fp16_vcvtsh2si32 5955 : ClangBuiltin<"__builtin_ia32_vcvtsh2si32">, 5956 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 5957 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 5958 def int_x86_avx512fp16_vcvtsh2usi32 5959 : ClangBuiltin<"__builtin_ia32_vcvtsh2usi32">, 5960 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 5961 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 5962 def int_x86_avx512fp16_vcvtsh2si64 5963 : ClangBuiltin<"__builtin_ia32_vcvtsh2si64">, 5964 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 5965 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 5966 def int_x86_avx512fp16_vcvtsh2usi64 5967 : ClangBuiltin<"__builtin_ia32_vcvtsh2usi64">, 5968 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 5969 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 5970 def int_x86_avx512fp16_vcvtusi2sh 5971 : ClangBuiltin<"__builtin_ia32_vcvtusi2sh">, 5972 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5973 [ llvm_v8f16_ty, llvm_i32_ty, llvm_i32_ty ], 5974 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5975 def int_x86_avx512fp16_vcvtusi642sh 5976 : ClangBuiltin<"__builtin_ia32_vcvtusi642sh">, 5977 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5978 [ llvm_v8f16_ty, llvm_i64_ty, llvm_i32_ty ], 5979 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5980 def int_x86_avx512fp16_vcvtsi2sh 5981 : ClangBuiltin<"__builtin_ia32_vcvtsi2sh">, 5982 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5983 [ llvm_v8f16_ty, llvm_i32_ty, llvm_i32_ty ], 5984 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5985 def int_x86_avx512fp16_vcvtsi642sh 5986 : ClangBuiltin<"__builtin_ia32_vcvtsi642sh">, 5987 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 5988 [ llvm_v8f16_ty, llvm_i64_ty, llvm_i32_ty ], 5989 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 5990 def int_x86_avx512fp16_vcvttsh2si32 5991 : ClangBuiltin<"__builtin_ia32_vcvttsh2si32">, 5992 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 5993 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 5994 def int_x86_avx512fp16_vcvttsh2si64 5995 : ClangBuiltin<"__builtin_ia32_vcvttsh2si64">, 5996 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 5997 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 5998 def int_x86_avx512fp16_vcvttsh2usi32 5999 : ClangBuiltin<"__builtin_ia32_vcvttsh2usi32">, 6000 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6001 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6002 def int_x86_avx512fp16_vcvttsh2usi64 6003 : ClangBuiltin<"__builtin_ia32_vcvttsh2usi64">, 6004 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6005 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6006 6007 def int_x86_avx512fp16_sqrt_ph_512 6008 : DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6009 [ llvm_v32f16_ty, llvm_i32_ty ], 6010 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6011 def int_x86_avx512fp16_mask_sqrt_sh 6012 : DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6013 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6014 llvm_i8_ty, llvm_i32_ty ], 6015 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6016 def int_x86_avx512fp16_mask_rsqrt_ph_128 6017 : ClangBuiltin<"__builtin_ia32_rsqrtph128_mask">, 6018 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6019 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i8_ty ], 6020 [ IntrNoMem ]>; 6021 def int_x86_avx512fp16_mask_rsqrt_ph_256 6022 : ClangBuiltin<"__builtin_ia32_rsqrtph256_mask">, 6023 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6024 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty ], 6025 [ IntrNoMem ]>; 6026 def int_x86_avx512fp16_mask_rsqrt_ph_512 6027 : ClangBuiltin<"__builtin_ia32_rsqrtph512_mask">, 6028 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6029 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 6030 [ IntrNoMem ]>; 6031 def int_x86_avx512fp16_mask_rsqrt_sh 6032 : ClangBuiltin<"__builtin_ia32_rsqrtsh_mask">, 6033 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6034 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6035 llvm_i8_ty ], 6036 [ IntrNoMem ]>; 6037 def int_x86_avx512fp16_mask_rcp_ph_128 6038 : ClangBuiltin<"__builtin_ia32_rcpph128_mask">, 6039 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6040 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i8_ty ], 6041 [ IntrNoMem ]>; 6042 def int_x86_avx512fp16_mask_rcp_ph_256 6043 : ClangBuiltin<"__builtin_ia32_rcpph256_mask">, 6044 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6045 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty ], 6046 [ IntrNoMem ]>; 6047 def int_x86_avx512fp16_mask_rcp_ph_512 6048 : ClangBuiltin<"__builtin_ia32_rcpph512_mask">, 6049 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6050 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 6051 [ IntrNoMem ]>; 6052 def int_x86_avx512fp16_mask_rcp_sh 6053 : ClangBuiltin<"__builtin_ia32_rcpsh_mask">, 6054 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6055 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6056 llvm_i8_ty ], 6057 [ IntrNoMem ]>; 6058 def int_x86_avx512fp16_mask_reduce_ph_128 6059 : ClangBuiltin<"__builtin_ia32_reduceph128_mask">, 6060 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6061 [ llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty, 6062 llvm_i8_ty ], 6063 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6064 def int_x86_avx512fp16_mask_reduce_ph_256 6065 : ClangBuiltin<"__builtin_ia32_reduceph256_mask">, 6066 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6067 [ llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, 6068 llvm_i16_ty ], 6069 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6070 def int_x86_avx512fp16_mask_reduce_ph_512 6071 : ClangBuiltin<"__builtin_ia32_reduceph512_mask">, 6072 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6073 [ llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty, 6074 llvm_i32_ty, llvm_i32_ty ], 6075 [ IntrNoMem, ImmArg<ArgIndex<1>>, 6076 ImmArg<ArgIndex<4>> ]>; 6077 def int_x86_avx512fp16_mask_reduce_sh 6078 : ClangBuiltin<"__builtin_ia32_reducesh_mask">, 6079 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6080 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6081 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty ], 6082 [ IntrNoMem, ImmArg<ArgIndex<4>>, 6083 ImmArg<ArgIndex<5>> ]>; 6084 def int_x86_avx512fp16_fpclass_ph_128 6085 : DefaultAttrsIntrinsic<[ llvm_v8i1_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6086 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6087 def int_x86_avx512fp16_fpclass_ph_256 6088 : DefaultAttrsIntrinsic<[ llvm_v16i1_ty ], 6089 [ llvm_v16f16_ty, llvm_i32_ty ], 6090 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6091 def int_x86_avx512fp16_fpclass_ph_512 6092 : DefaultAttrsIntrinsic<[ llvm_v32i1_ty ], 6093 [ llvm_v32f16_ty, llvm_i32_ty ], 6094 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6095 def int_x86_avx512fp16_mask_fpclass_sh 6096 : ClangBuiltin<"__builtin_ia32_fpclasssh_mask">, 6097 DefaultAttrsIntrinsic<[ llvm_i8_ty ], 6098 [ llvm_v8f16_ty, llvm_i32_ty, llvm_i8_ty ], 6099 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6100 def int_x86_avx512fp16_mask_getexp_ph_128 6101 : ClangBuiltin<"__builtin_ia32_getexpph128_mask">, 6102 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6103 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i8_ty ], 6104 [ IntrNoMem ]>; 6105 def int_x86_avx512fp16_mask_getexp_ph_256 6106 : ClangBuiltin<"__builtin_ia32_getexpph256_mask">, 6107 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6108 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty ], 6109 [ IntrNoMem ]>; 6110 def int_x86_avx512fp16_mask_getexp_ph_512 6111 : ClangBuiltin<"__builtin_ia32_getexpph512_mask">, 6112 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6113 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty, 6114 llvm_i32_ty ], 6115 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6116 def int_x86_avx512fp16_mask_getexp_sh 6117 : ClangBuiltin<"__builtin_ia32_getexpsh128_round_mask">, 6118 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6119 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6120 llvm_i8_ty, llvm_i32_ty ], 6121 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6122 def int_x86_avx512fp16_mask_getmant_ph_128 6123 : ClangBuiltin<"__builtin_ia32_getmantph128_mask">, 6124 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6125 [ llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty, 6126 llvm_i8_ty ], 6127 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6128 def int_x86_avx512fp16_mask_getmant_ph_256 6129 : ClangBuiltin<"__builtin_ia32_getmantph256_mask">, 6130 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6131 [ llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, 6132 llvm_i16_ty ], 6133 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6134 def int_x86_avx512fp16_mask_getmant_ph_512 6135 : ClangBuiltin<"__builtin_ia32_getmantph512_mask">, 6136 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6137 [ llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty, 6138 llvm_i32_ty, llvm_i32_ty ], 6139 [ IntrNoMem, ImmArg<ArgIndex<1>>, 6140 ImmArg<ArgIndex<4>> ]>; 6141 def int_x86_avx512fp16_mask_getmant_sh 6142 : ClangBuiltin<"__builtin_ia32_getmantsh_round_mask">, 6143 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6144 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, 6145 llvm_v8f16_ty, llvm_i8_ty, llvm_i32_ty ], 6146 [ IntrNoMem, ImmArg<ArgIndex<2>>, 6147 ImmArg<ArgIndex<5>> ]>; 6148 def int_x86_avx512fp16_mask_rndscale_ph_128 6149 : ClangBuiltin<"__builtin_ia32_rndscaleph_128_mask">, 6150 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6151 [ llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty, 6152 llvm_i8_ty ], 6153 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6154 def int_x86_avx512fp16_mask_rndscale_ph_256 6155 : ClangBuiltin<"__builtin_ia32_rndscaleph_256_mask">, 6156 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6157 [ llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, 6158 llvm_i16_ty ], 6159 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6160 def int_x86_avx512fp16_mask_rndscale_ph_512 6161 : ClangBuiltin<"__builtin_ia32_rndscaleph_mask">, 6162 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6163 [ llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty, 6164 llvm_i32_ty, llvm_i32_ty ], 6165 [ IntrNoMem, ImmArg<ArgIndex<1>>, 6166 ImmArg<ArgIndex<4>> ]>; 6167 def int_x86_avx512fp16_mask_rndscale_sh 6168 : ClangBuiltin<"__builtin_ia32_rndscalesh_round_mask">, 6169 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6170 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6171 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty ], 6172 [ IntrNoMem, ImmArg<ArgIndex<4>>, 6173 ImmArg<ArgIndex<5>> ]>; 6174 def int_x86_avx512fp16_mask_scalef_ph_128 6175 : ClangBuiltin<"__builtin_ia32_scalefph128_mask">, 6176 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6177 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6178 llvm_i8_ty ], 6179 [ IntrNoMem ]>; 6180 def int_x86_avx512fp16_mask_scalef_ph_256 6181 : ClangBuiltin<"__builtin_ia32_scalefph256_mask">, 6182 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6183 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_v16f16_ty, 6184 llvm_i16_ty ], 6185 [ IntrNoMem ]>; 6186 def int_x86_avx512fp16_mask_scalef_ph_512 6187 : ClangBuiltin<"__builtin_ia32_scalefph512_mask">, 6188 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6189 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_v32f16_ty, 6190 llvm_i32_ty, llvm_i32_ty ], 6191 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6192 def int_x86_avx512fp16_mask_scalef_sh 6193 : ClangBuiltin<"__builtin_ia32_scalefsh_round_mask">, 6194 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6195 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6196 llvm_i8_ty, llvm_i32_ty ], 6197 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6198 6199 def int_x86_avx512fp16_vfmadd_ph_512 6200 : DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6201 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_v32f16_ty, 6202 llvm_i32_ty ], 6203 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6204 def int_x86_avx512fp16_vfmaddsub_ph_128 6205 : ClangBuiltin<"__builtin_ia32_vfmaddsubph">, 6206 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6207 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty ], 6208 [ IntrNoMem ]>; 6209 def int_x86_avx512fp16_vfmaddsub_ph_256 6210 : ClangBuiltin<"__builtin_ia32_vfmaddsubph256">, 6211 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6212 [ llvm_v16f16_ty, llvm_v16f16_ty, 6213 llvm_v16f16_ty ], 6214 [ IntrNoMem ]>; 6215 def int_x86_avx512fp16_vfmaddsub_ph_512 6216 : DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6217 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_v32f16_ty, 6218 llvm_i32_ty ], 6219 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6220 def int_x86_avx512fp16_vfmadd_f16 6221 : DefaultAttrsIntrinsic<[ llvm_half_ty ], 6222 [ llvm_half_ty, llvm_half_ty, llvm_half_ty, 6223 llvm_i32_ty ], 6224 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6225 6226 def int_x86_avx512fp16_mask_vfcmadd_cph_128 6227 : ClangBuiltin<"__builtin_ia32_vfcmaddcph128_mask">, 6228 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6229 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6230 llvm_i8_ty ], 6231 [ IntrNoMem ]>; 6232 def int_x86_avx512fp16_maskz_vfcmadd_cph_128 6233 : ClangBuiltin<"__builtin_ia32_vfcmaddcph128_maskz">, 6234 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6235 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6236 llvm_i8_ty ], 6237 [ IntrNoMem ]>; 6238 def int_x86_avx512fp16_mask_vfcmadd_cph_256 6239 : ClangBuiltin<"__builtin_ia32_vfcmaddcph256_mask">, 6240 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 6241 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 6242 llvm_i8_ty ], 6243 [ IntrNoMem ]>; 6244 def int_x86_avx512fp16_maskz_vfcmadd_cph_256 6245 : ClangBuiltin<"__builtin_ia32_vfcmaddcph256_maskz">, 6246 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 6247 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 6248 llvm_i8_ty ], 6249 [ IntrNoMem ]>; 6250 def int_x86_avx512fp16_mask_vfcmadd_cph_512 6251 : ClangBuiltin<"__builtin_ia32_vfcmaddcph512_mask3">, 6252 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 6253 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 6254 llvm_i16_ty, llvm_i32_ty ], 6255 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6256 def int_x86_avx512fp16_maskz_vfcmadd_cph_512 6257 : ClangBuiltin<"__builtin_ia32_vfcmaddcph512_maskz">, 6258 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 6259 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 6260 llvm_i16_ty, llvm_i32_ty ], 6261 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6262 def int_x86_avx512fp16_mask_vfmadd_cph_128 6263 : ClangBuiltin<"__builtin_ia32_vfmaddcph128_mask">, 6264 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6265 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6266 llvm_i8_ty ], 6267 [ IntrNoMem ]>; 6268 def int_x86_avx512fp16_maskz_vfmadd_cph_128 6269 : ClangBuiltin<"__builtin_ia32_vfmaddcph128_maskz">, 6270 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6271 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6272 llvm_i8_ty ], 6273 [ IntrNoMem ]>; 6274 def int_x86_avx512fp16_mask_vfmadd_cph_256 6275 : ClangBuiltin<"__builtin_ia32_vfmaddcph256_mask">, 6276 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 6277 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 6278 llvm_i8_ty ], 6279 [ IntrNoMem ]>; 6280 def int_x86_avx512fp16_maskz_vfmadd_cph_256 6281 : ClangBuiltin<"__builtin_ia32_vfmaddcph256_maskz">, 6282 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 6283 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 6284 llvm_i8_ty ], 6285 [ IntrNoMem ]>; 6286 def int_x86_avx512fp16_mask_vfmadd_cph_512 6287 : ClangBuiltin<"__builtin_ia32_vfmaddcph512_mask3">, 6288 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 6289 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 6290 llvm_i16_ty, llvm_i32_ty ], 6291 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6292 def int_x86_avx512fp16_maskz_vfmadd_cph_512 6293 : ClangBuiltin<"__builtin_ia32_vfmaddcph512_maskz">, 6294 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 6295 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 6296 llvm_i16_ty, llvm_i32_ty ], 6297 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6298 def int_x86_avx512fp16_mask_vfmadd_csh 6299 : ClangBuiltin<"__builtin_ia32_vfmaddcsh_mask">, 6300 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6301 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6302 llvm_i8_ty, llvm_i32_ty ], 6303 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6304 def int_x86_avx512fp16_maskz_vfmadd_csh 6305 : ClangBuiltin<"__builtin_ia32_vfmaddcsh_maskz">, 6306 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6307 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6308 llvm_i8_ty, llvm_i32_ty ], 6309 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6310 def int_x86_avx512fp16_mask_vfcmadd_csh 6311 : ClangBuiltin<"__builtin_ia32_vfcmaddcsh_mask">, 6312 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6313 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6314 llvm_i8_ty, llvm_i32_ty ], 6315 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6316 def int_x86_avx512fp16_maskz_vfcmadd_csh 6317 : ClangBuiltin<"__builtin_ia32_vfcmaddcsh_maskz">, 6318 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6319 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6320 llvm_i8_ty, llvm_i32_ty ], 6321 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6322 def int_x86_avx512fp16_mask_vfmul_cph_128 6323 : ClangBuiltin<"__builtin_ia32_vfmulcph128_mask">, 6324 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6325 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6326 llvm_i8_ty ], 6327 [ IntrNoMem ]>; 6328 def int_x86_avx512fp16_mask_vfcmul_cph_128 6329 : ClangBuiltin<"__builtin_ia32_vfcmulcph128_mask">, 6330 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6331 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6332 llvm_i8_ty ], 6333 [ IntrNoMem ]>; 6334 def int_x86_avx512fp16_mask_vfmul_cph_256 6335 : ClangBuiltin<"__builtin_ia32_vfmulcph256_mask">, 6336 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 6337 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 6338 llvm_i8_ty ], 6339 [ IntrNoMem ]>; 6340 def int_x86_avx512fp16_mask_vfcmul_cph_256 6341 : ClangBuiltin<"__builtin_ia32_vfcmulcph256_mask">, 6342 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 6343 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 6344 llvm_i8_ty ], 6345 [ IntrNoMem ]>; 6346 def int_x86_avx512fp16_mask_vfmul_cph_512 6347 : ClangBuiltin<"__builtin_ia32_vfmulcph512_mask">, 6348 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 6349 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 6350 llvm_i16_ty, llvm_i32_ty ], 6351 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6352 def int_x86_avx512fp16_mask_vfcmul_cph_512 6353 : ClangBuiltin<"__builtin_ia32_vfcmulcph512_mask">, 6354 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 6355 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 6356 llvm_i16_ty, llvm_i32_ty ], 6357 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6358 def int_x86_avx512fp16_mask_vfmul_csh 6359 : ClangBuiltin<"__builtin_ia32_vfmulcsh_mask">, 6360 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6361 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6362 llvm_i8_ty, llvm_i32_ty ], 6363 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6364 def int_x86_avx512fp16_mask_vfcmul_csh 6365 : ClangBuiltin<"__builtin_ia32_vfcmulcsh_mask">, 6366 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6367 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 6368 llvm_i8_ty, llvm_i32_ty ], 6369 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6370} 6371