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 : 226 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v4f32_ty], [IntrNoMem]>; 227 def int_x86_sse_cvttps2pi: 228 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v4f32_ty], [IntrNoMem]>; 229 def int_x86_sse_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 : 430 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v2f64_ty], [IntrNoMem]>; 431 def int_x86_sse_cvttpd2pi: 432 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v2f64_ty], [IntrNoMem]>; 433 def int_x86_sse_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 : 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 : 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 : 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 : 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 : 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 : 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 : 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 : 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 : 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 : 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 : 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 : 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 : 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 : 615 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 616 617 def int_x86_ssse3_pabs_w : 618 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 619 620 def int_x86_ssse3_pabs_d : 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 : 2264 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2265 [IntrNoMem, Commutative]>; 2266 def int_x86_mmx_padd_w : 2267 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2268 [IntrNoMem, Commutative]>; 2269 def int_x86_mmx_padd_d : 2270 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2271 [IntrNoMem, Commutative]>; 2272 def int_x86_mmx_padd_q : 2273 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2274 [IntrNoMem, Commutative]>; 2275 2276 def int_x86_mmx_padds_b : 2277 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2278 [IntrNoMem, Commutative]>; 2279 def int_x86_mmx_padds_w : 2280 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2281 [IntrNoMem, Commutative]>; 2282 2283 def int_x86_mmx_paddus_b : 2284 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2285 [IntrNoMem, Commutative]>; 2286 def int_x86_mmx_paddus_w : 2287 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2288 [IntrNoMem, Commutative]>; 2289 2290 // Subtraction 2291 def int_x86_mmx_psub_b : 2292 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2293 [IntrNoMem]>; 2294 def int_x86_mmx_psub_w : 2295 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2296 [IntrNoMem]>; 2297 def int_x86_mmx_psub_d : 2298 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2299 [IntrNoMem]>; 2300 def int_x86_mmx_psub_q : 2301 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2302 [IntrNoMem]>; 2303 2304 def int_x86_mmx_psubs_b : 2305 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2306 [IntrNoMem]>; 2307 def int_x86_mmx_psubs_w : 2308 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2309 [IntrNoMem]>; 2310 2311 def int_x86_mmx_psubus_b : 2312 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2313 [IntrNoMem]>; 2314 def int_x86_mmx_psubus_w : 2315 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2316 [IntrNoMem]>; 2317 2318 // Multiplication 2319 def int_x86_mmx_pmulh_w : 2320 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2321 [IntrNoMem, Commutative]>; 2322 def int_x86_mmx_pmull_w : 2323 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2324 [IntrNoMem, Commutative]>; 2325 def int_x86_mmx_pmulhu_w : 2326 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2327 [IntrNoMem, Commutative]>; 2328 def int_x86_mmx_pmulu_dq : 2329 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2330 [IntrNoMem, Commutative]>; 2331 def int_x86_mmx_pmadd_wd : 2332 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2333 [IntrNoMem, Commutative]>; 2334 2335 // Bitwise operations 2336 def int_x86_mmx_pand : 2337 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2338 [IntrNoMem, Commutative]>; 2339 def int_x86_mmx_pandn : 2340 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2341 [IntrNoMem]>; 2342 def int_x86_mmx_por : 2343 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2344 [IntrNoMem, Commutative]>; 2345 def int_x86_mmx_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 : 2351 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2352 [IntrNoMem, Commutative]>; 2353 def int_x86_mmx_pavg_w : 2354 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2355 [IntrNoMem, Commutative]>; 2356 2357 // Maximum 2358 def int_x86_mmx_pmaxu_b : 2359 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2360 [IntrNoMem, Commutative]>; 2361 def int_x86_mmx_pmaxs_w : 2362 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2363 [IntrNoMem, Commutative]>; 2364 2365 // Minimum 2366 def int_x86_mmx_pminu_b : 2367 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2368 [IntrNoMem, Commutative]>; 2369 def int_x86_mmx_pmins_w : 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 : 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 : 2383 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2384 [IntrNoMem]>; 2385 def int_x86_mmx_psll_d : 2386 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2387 [IntrNoMem]>; 2388 def int_x86_mmx_psll_q : 2389 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2390 [IntrNoMem]>; 2391 2392 def int_x86_mmx_psrl_w : 2393 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2394 [IntrNoMem]>; 2395 def int_x86_mmx_psrl_d : 2396 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2397 [IntrNoMem]>; 2398 def int_x86_mmx_psrl_q : 2399 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2400 [IntrNoMem]>; 2401 2402 def int_x86_mmx_psra_w : 2403 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2404 [IntrNoMem]>; 2405 def int_x86_mmx_psra_d : 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 : 2411 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2412 [IntrNoMem]>; 2413 def int_x86_mmx_pslli_d : 2414 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2415 [IntrNoMem]>; 2416 def int_x86_mmx_pslli_q : 2417 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2418 [IntrNoMem]>; 2419 2420 def int_x86_mmx_psrli_w : 2421 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2422 [IntrNoMem]>; 2423 def int_x86_mmx_psrli_d : 2424 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2425 [IntrNoMem]>; 2426 def int_x86_mmx_psrli_q : 2427 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2428 [IntrNoMem]>; 2429 2430 def int_x86_mmx_psrai_w : 2431 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2432 [IntrNoMem]>; 2433 def int_x86_mmx_psrai_d : 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 : 2479 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2480 [IntrNoMem]>; 2481 def int_x86_mmx_packssdw : 2482 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2483 [IntrNoMem]>; 2484 def int_x86_mmx_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 : 2492 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2493 [IntrNoMem]>; 2494 def int_x86_mmx_punpckhwd : 2495 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2496 [IntrNoMem]>; 2497 def int_x86_mmx_punpckhdq : 2498 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2499 [IntrNoMem]>; 2500 def int_x86_mmx_punpcklbw : 2501 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2502 [IntrNoMem]>; 2503 def int_x86_mmx_punpcklwd : 2504 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2505 [IntrNoMem]>; 2506 def int_x86_mmx_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 : 2514 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2515 [IntrNoMem, Commutative]>; 2516 def int_x86_mmx_pcmpeq_w : 2517 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2518 [IntrNoMem, Commutative]>; 2519 def int_x86_mmx_pcmpeq_d : 2520 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2521 [IntrNoMem, Commutative]>; 2522 2523 def int_x86_mmx_pcmpgt_b : 2524 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2525 [IntrNoMem]>; 2526 def int_x86_mmx_pcmpgt_w : 2527 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 2528 [IntrNoMem]>; 2529 def int_x86_mmx_pcmpgt_d : 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 : 2537 Intrinsic<[], [llvm_x86mmx_ty, llvm_x86mmx_ty, llvm_ptr_ty], []>; 2538 2539 def int_x86_mmx_pmovmskb : 2540 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 2541 2542 def int_x86_mmx_movnt_dq : 2543 Intrinsic<[], [llvm_ptr_ty, llvm_x86mmx_ty], []>; 2544 2545 def int_x86_mmx_palignr_b : 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 : 2551 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_x86mmx_ty, llvm_i32_ty], 2552 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 2553 2554 def int_x86_mmx_pinsr_w : 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// AVX10.2 intrinsics 4982let TargetPrefix = "x86" in { 4983 // VNNI FP16 4984 def int_x86_avx10_vdpphps_128 : 4985 ClangBuiltin<"__builtin_ia32_vdpphps128">, 4986 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 4987 [llvm_v4f32_ty, llvm_v8f16_ty, llvm_v8f16_ty], 4988 [IntrNoMem]>; 4989 def int_x86_avx10_vdpphps_256 : 4990 ClangBuiltin<"__builtin_ia32_vdpphps256">, 4991 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 4992 [llvm_v8f32_ty, llvm_v16f16_ty, llvm_v16f16_ty], 4993 [IntrNoMem]>; 4994 def int_x86_avx10_vdpphps_512 : 4995 ClangBuiltin<"__builtin_ia32_vdpphps512">, 4996 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 4997 [llvm_v16f32_ty, llvm_v32f16_ty, llvm_v32f16_ty], 4998 [IntrNoMem]>; 4999 // VNNI INT8 5000 def int_x86_avx10_vpdpbssd_512 : 5001 ClangBuiltin<"__builtin_ia32_vpdpbssd512">, 5002 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5003 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5004 [IntrNoMem]>; 5005 def int_x86_avx10_vpdpbssds_512 : 5006 ClangBuiltin<"__builtin_ia32_vpdpbssds512">, 5007 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5008 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5009 [IntrNoMem]>; 5010 def int_x86_avx10_vpdpbsud_512 : 5011 ClangBuiltin<"__builtin_ia32_vpdpbsud512">, 5012 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5013 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5014 [IntrNoMem]>; 5015 def int_x86_avx10_vpdpbsuds_512 : 5016 ClangBuiltin<"__builtin_ia32_vpdpbsuds512">, 5017 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5018 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5019 [IntrNoMem]>; 5020 def int_x86_avx10_vpdpbuud_512 : 5021 ClangBuiltin<"__builtin_ia32_vpdpbuud512">, 5022 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5023 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5024 [IntrNoMem]>; 5025 def int_x86_avx10_vpdpbuuds_512 : 5026 ClangBuiltin<"__builtin_ia32_vpdpbuuds512">, 5027 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5028 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5029 [IntrNoMem]>; 5030 // VNNI INT16 5031 def int_x86_avx10_vpdpwsud_512 : 5032 ClangBuiltin<"__builtin_ia32_vpdpwsud512">, 5033 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5034 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5035 [IntrNoMem]>; 5036 def int_x86_avx10_vpdpwsuds_512 : 5037 ClangBuiltin<"__builtin_ia32_vpdpwsuds512">, 5038 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5039 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5040 [IntrNoMem]>; 5041 def int_x86_avx10_vpdpwusd_512 : 5042 ClangBuiltin<"__builtin_ia32_vpdpwusd512">, 5043 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5044 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5045 [IntrNoMem]>; 5046 def int_x86_avx10_vpdpwusds_512 : 5047 ClangBuiltin<"__builtin_ia32_vpdpwusds512">, 5048 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5049 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5050 [IntrNoMem]>; 5051 def int_x86_avx10_vpdpwuud_512 : 5052 ClangBuiltin<"__builtin_ia32_vpdpwuud512">, 5053 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5054 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5055 [IntrNoMem]>; 5056 def int_x86_avx10_vpdpwuuds_512 : 5057 ClangBuiltin<"__builtin_ia32_vpdpwuuds512">, 5058 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 5059 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty], 5060 [IntrNoMem]>; 5061 5062 // VMPSADBW 5063 def int_x86_avx10_vmpsadbw_512 : 5064 ClangBuiltin<"__builtin_ia32_mpsadbw512">, 5065 DefaultAttrsIntrinsic<[llvm_v32i16_ty], 5066 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i8_ty], 5067 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5068 5069 // YMM Rounding 5070 def int_x86_avx10_vaddpd256 : 5071 ClangBuiltin<"__builtin_ia32_vaddpd256_round">, 5072 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5073 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty], 5074 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5075 def int_x86_avx10_vaddph256 : 5076 ClangBuiltin<"__builtin_ia32_vaddph256_round">, 5077 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5078 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty], 5079 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5080 def int_x86_avx10_vaddps256 : 5081 ClangBuiltin<"__builtin_ia32_vaddps256_round">, 5082 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5083 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty], 5084 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5085 def int_x86_avx10_mask_vcmppd256 : 5086 DefaultAttrsIntrinsic<[llvm_v4i1_ty], 5087 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, llvm_v4i1_ty, llvm_i32_ty], 5088 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<4>>]>; 5089 def int_x86_avx10_mask_vcmpph256 : 5090 DefaultAttrsIntrinsic<[llvm_v16i1_ty], 5091 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty, llvm_v16i1_ty, llvm_i32_ty], 5092 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<4>>]>; 5093 def int_x86_avx10_mask_vcmpps256 : 5094 DefaultAttrsIntrinsic<[llvm_v8i1_ty], 5095 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, llvm_v8i1_ty, llvm_i32_ty], 5096 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<4>>]>; 5097 def int_x86_avx10_mask_vcvtpd2dq256 : 5098 ClangBuiltin<"__builtin_ia32_vcvtpd2dq256_round_mask">, 5099 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 5100 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5101 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5102 def int_x86_avx10_mask_vcvtpd2ph256 : 5103 ClangBuiltin<"__builtin_ia32_vcvtpd2ph256_round_mask">, 5104 DefaultAttrsIntrinsic<[llvm_v8f16_ty], 5105 [llvm_v4f64_ty, llvm_v8f16_ty, llvm_i8_ty, llvm_i32_ty], 5106 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5107 def int_x86_avx10_mask_vcvtpd2ps256 : 5108 ClangBuiltin<"__builtin_ia32_vcvtpd2ps256_round_mask">, 5109 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 5110 [llvm_v4f64_ty, llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], 5111 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5112 def int_x86_avx10_mask_vcvtpd2qq256 : 5113 ClangBuiltin<"__builtin_ia32_vcvtpd2qq256_round_mask">, 5114 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5115 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5116 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5117 def int_x86_avx10_mask_vcvtpd2udq256 : 5118 ClangBuiltin<"__builtin_ia32_vcvtpd2udq256_round_mask">, 5119 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 5120 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5121 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5122 def int_x86_avx10_mask_vcvtpd2uqq256 : 5123 ClangBuiltin<"__builtin_ia32_vcvtpd2uqq256_round_mask">, 5124 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5125 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5126 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5127 def int_x86_avx10_mask_vcvtph2dq256 : 5128 ClangBuiltin<"__builtin_ia32_vcvtph2dq256_round_mask">, 5129 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 5130 [llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5131 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5132 def int_x86_avx10_mask_vcvtph2pd256 : 5133 ClangBuiltin<"__builtin_ia32_vcvtph2pd256_round_mask">, 5134 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5135 [llvm_v8f16_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty], 5136 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5137 def int_x86_avx10_mask_vcvtph2psx256 : 5138 ClangBuiltin<"__builtin_ia32_vcvtph2psx256_round_mask">, 5139 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5140 [llvm_v8f16_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5141 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5142 def int_x86_avx10_mask_vcvtph2qq256 : 5143 ClangBuiltin<"__builtin_ia32_vcvtph2qq256_round_mask">, 5144 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5145 [llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5146 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5147 def int_x86_avx10_mask_vcvtph2udq256 : 5148 ClangBuiltin<"__builtin_ia32_vcvtph2udq256_round_mask">, 5149 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 5150 [llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5151 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5152 def int_x86_avx10_mask_vcvtph2uqq256 : 5153 ClangBuiltin<"__builtin_ia32_vcvtph2uqq256_round_mask">, 5154 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5155 [llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5156 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5157 def int_x86_avx10_mask_vcvtph2uw256 : 5158 ClangBuiltin<"__builtin_ia32_vcvtph2uw256_round_mask">, 5159 DefaultAttrsIntrinsic<[llvm_v16i16_ty], 5160 [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty], 5161 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5162 def int_x86_avx10_mask_vcvtph2w256 : 5163 ClangBuiltin<"__builtin_ia32_vcvtph2w256_round_mask">, 5164 DefaultAttrsIntrinsic<[llvm_v16i16_ty], 5165 [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty], 5166 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5167 def int_x86_avx10_mask_vcvtps2dq256 : 5168 ClangBuiltin<"__builtin_ia32_vcvtps2dq256_round_mask">, 5169 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 5170 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5171 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5172 def int_x86_avx10_mask_vcvtps2pd256 : 5173 ClangBuiltin<"__builtin_ia32_vcvtps2pd256_round_mask">, 5174 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5175 [llvm_v4f32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty], 5176 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5177 def int_x86_avx10_mask_vcvtps2ph256 : 5178 ClangBuiltin<"__builtin_ia32_vcvtps2ph256_round_mask">, 5179 DefaultAttrsIntrinsic<[llvm_v8i16_ty], 5180 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8i16_ty, llvm_i8_ty], 5181 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5182 def int_x86_avx10_mask_vcvtps2phx256 : 5183 ClangBuiltin<"__builtin_ia32_vcvtps2phx256_round_mask">, 5184 DefaultAttrsIntrinsic<[llvm_v8f16_ty], 5185 [llvm_v8f32_ty, llvm_v8f16_ty, llvm_i8_ty, llvm_i32_ty], 5186 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5187 def int_x86_avx10_mask_vcvtps2qq256 : 5188 ClangBuiltin<"__builtin_ia32_vcvtps2qq256_round_mask">, 5189 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5190 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5191 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5192 def int_x86_avx10_mask_vcvtps2udq256 : 5193 ClangBuiltin<"__builtin_ia32_vcvtps2udq256_round_mask">, 5194 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 5195 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5196 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5197 def int_x86_avx10_mask_vcvtps2uqq256 : 5198 ClangBuiltin<"__builtin_ia32_vcvtps2uqq256_round_mask">, 5199 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5200 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5201 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5202 def int_x86_avx10_mask_vcvttpd2dq256 : 5203 ClangBuiltin<"__builtin_ia32_vcvttpd2dq256_round_mask">, 5204 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 5205 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5206 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5207 def int_x86_avx10_mask_vcvttpd2qq256 : 5208 ClangBuiltin<"__builtin_ia32_vcvttpd2qq256_round_mask">, 5209 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5210 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5211 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5212 def int_x86_avx10_mask_vcvttpd2udq256 : 5213 ClangBuiltin<"__builtin_ia32_vcvttpd2udq256_round_mask">, 5214 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 5215 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5216 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5217 def int_x86_avx10_mask_vcvttpd2uqq256 : 5218 ClangBuiltin<"__builtin_ia32_vcvttpd2uqq256_round_mask">, 5219 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5220 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5221 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5222 def int_x86_avx10_mask_vcvttph2dq256 : 5223 ClangBuiltin<"__builtin_ia32_vcvttph2dq256_round_mask">, 5224 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 5225 [llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5226 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5227 def int_x86_avx10_mask_vcvttph2qq256 : 5228 ClangBuiltin<"__builtin_ia32_vcvttph2qq256_round_mask">, 5229 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5230 [llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5231 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5232 def int_x86_avx10_mask_vcvttph2udq256 : 5233 ClangBuiltin<"__builtin_ia32_vcvttph2udq256_round_mask">, 5234 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 5235 [llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5236 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5237 def int_x86_avx10_mask_vcvttph2uqq256 : 5238 ClangBuiltin<"__builtin_ia32_vcvttph2uqq256_round_mask">, 5239 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5240 [llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5241 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5242 def int_x86_avx10_mask_vcvttph2uw256 : 5243 ClangBuiltin<"__builtin_ia32_vcvttph2uw256_round_mask">, 5244 DefaultAttrsIntrinsic<[llvm_v16i16_ty], 5245 [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty], 5246 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5247 def int_x86_avx10_mask_vcvttph2w256 : 5248 ClangBuiltin<"__builtin_ia32_vcvttph2w256_round_mask">, 5249 DefaultAttrsIntrinsic<[llvm_v16i16_ty], 5250 [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty], 5251 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5252 def int_x86_avx10_mask_vcvttps2dq256 : 5253 ClangBuiltin<"__builtin_ia32_vcvttps2dq256_round_mask">, 5254 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 5255 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5256 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5257 def int_x86_avx10_mask_vcvttps2qq256 : 5258 ClangBuiltin<"__builtin_ia32_vcvttps2qq256_round_mask">, 5259 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5260 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5261 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5262 def int_x86_avx10_mask_vcvttps2udq256 : 5263 ClangBuiltin<"__builtin_ia32_vcvttps2udq256_round_mask">, 5264 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 5265 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5266 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5267 def int_x86_avx10_mask_vcvttps2uqq256 : 5268 ClangBuiltin<"__builtin_ia32_vcvttps2uqq256_round_mask">, 5269 DefaultAttrsIntrinsic<[llvm_v4i64_ty], 5270 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5271 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5272 def int_x86_avx10_vdivpd256 : 5273 ClangBuiltin<"__builtin_ia32_vdivpd256_round">, 5274 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5275 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty], 5276 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5277 def int_x86_avx10_vdivph256 : 5278 ClangBuiltin<"__builtin_ia32_vdivph256_round">, 5279 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5280 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty], 5281 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5282 def int_x86_avx10_vdivps256 : 5283 ClangBuiltin<"__builtin_ia32_vdivps256_round">, 5284 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5285 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty], 5286 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5287 def int_x86_avx10_mask_vfcmaddcph256 : 5288 ClangBuiltin<"__builtin_ia32_vfcmaddcph256_round_mask3">, 5289 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5290 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5291 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 5292 def int_x86_avx10_maskz_vfcmaddcph256 : 5293 ClangBuiltin<"__builtin_ia32_vfcmaddcph256_round_maskz">, 5294 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5295 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5296 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 5297 def int_x86_avx10_mask_vfcmulcph256 : 5298 ClangBuiltin<"__builtin_ia32_vfcmulcph256_round_mask">, 5299 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5300 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5301 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 5302 def int_x86_avx10_mask_vfixupimmpd256 : 5303 ClangBuiltin<"__builtin_ia32_vfixupimmpd256_round_mask">, 5304 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5305 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], 5306 [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 5307 def int_x86_avx10_maskz_vfixupimmpd256 : 5308 ClangBuiltin<"__builtin_ia32_vfixupimmpd256_round_maskz">, 5309 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5310 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], 5311 [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 5312 def int_x86_avx10_mask_vfixupimmps256 : 5313 ClangBuiltin<"__builtin_ia32_vfixupimmps256_round_mask">, 5314 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5315 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], 5316 [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 5317 def int_x86_avx10_maskz_vfixupimmps256 : 5318 ClangBuiltin<"__builtin_ia32_vfixupimmps256_round_maskz">, 5319 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5320 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], 5321 [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>; 5322 def int_x86_avx10_vfmaddpd256 : 5323 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5324 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty], 5325 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5326 def int_x86_avx10_vfmaddph256 : 5327 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5328 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty], 5329 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5330 def int_x86_avx10_vfmaddps256 : 5331 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5332 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty], 5333 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5334 def int_x86_avx10_mask_vfmaddcph256 : 5335 ClangBuiltin<"__builtin_ia32_vfmaddcph256_round_mask3">, 5336 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5337 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5338 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 5339 def int_x86_avx10_maskz_vfmaddcph256 : 5340 ClangBuiltin<"__builtin_ia32_vfmaddcph256_round_maskz">, 5341 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5342 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5343 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 5344 def int_x86_avx10_vfmaddsubpd256 : 5345 ClangBuiltin<"__builtin_ia32_vfmaddsubpd256_round">, 5346 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5347 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty], 5348 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5349 def int_x86_avx10_vfmaddsubph256 : 5350 ClangBuiltin<"__builtin_ia32_vfmaddsubph256_round">, 5351 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5352 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty], 5353 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5354 def int_x86_avx10_vfmaddsubps256 : 5355 ClangBuiltin<"__builtin_ia32_vfmaddsubps256_round">, 5356 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5357 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty], 5358 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5359 def int_x86_avx10_mask_vfmulcph256 : 5360 ClangBuiltin<"__builtin_ia32_vfmulcph256_round_mask">, 5361 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5362 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5363 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 5364 def int_x86_avx10_mask_vgetexppd256 : 5365 ClangBuiltin<"__builtin_ia32_vgetexppd256_round_mask">, 5366 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5367 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty], 5368 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5369 def int_x86_avx10_mask_vgetexpph256 : 5370 ClangBuiltin<"__builtin_ia32_vgetexpph256_round_mask">, 5371 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5372 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty], 5373 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5374 def int_x86_avx10_mask_vgetexpps256 : 5375 ClangBuiltin<"__builtin_ia32_vgetexpps256_round_mask">, 5376 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5377 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5378 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5379 def int_x86_avx10_mask_vgetmantpd256 : 5380 ClangBuiltin<"__builtin_ia32_vgetmantpd256_round_mask">, 5381 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5382 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty], 5383 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 5384 def int_x86_avx10_mask_vgetmantph256 : 5385 ClangBuiltin<"__builtin_ia32_vgetmantph256_round_mask">, 5386 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5387 [llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty], 5388 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 5389 def int_x86_avx10_mask_vgetmantps256 : 5390 ClangBuiltin<"__builtin_ia32_vgetmantps256_round_mask">, 5391 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5392 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5393 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 5394 def int_x86_avx10_vmaxpd256 : 5395 ClangBuiltin<"__builtin_ia32_vmaxpd256_round">, 5396 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5397 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty], 5398 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5399 def int_x86_avx10_vmaxph256 : 5400 ClangBuiltin<"__builtin_ia32_vmaxph256_round">, 5401 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5402 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty], 5403 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5404 def int_x86_avx10_vmaxps256 : 5405 ClangBuiltin<"__builtin_ia32_vmaxps256_round">, 5406 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5407 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty], 5408 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5409 def int_x86_avx10_vminpd256 : 5410 ClangBuiltin<"__builtin_ia32_vminpd256_round">, 5411 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5412 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty], 5413 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5414 def int_x86_avx10_vminph256 : 5415 ClangBuiltin<"__builtin_ia32_vminph256_round">, 5416 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5417 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty], 5418 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5419 def int_x86_avx10_vminps256 : 5420 ClangBuiltin<"__builtin_ia32_vminps256_round">, 5421 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5422 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty], 5423 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5424 def int_x86_avx10_vmulpd256 : 5425 ClangBuiltin<"__builtin_ia32_vmulpd256_round">, 5426 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5427 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty], 5428 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5429 def int_x86_avx10_vmulph256 : 5430 ClangBuiltin<"__builtin_ia32_vmulph256_round">, 5431 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5432 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty], 5433 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5434 def int_x86_avx10_vmulps256 : 5435 ClangBuiltin<"__builtin_ia32_vmulps256_round">, 5436 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5437 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty], 5438 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5439 def int_x86_avx10_mask_vrangepd256 : 5440 ClangBuiltin<"__builtin_ia32_vrangepd256_round_mask">, 5441 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5442 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty], 5443 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 5444 def int_x86_avx10_mask_vrangeps256 : 5445 ClangBuiltin<"__builtin_ia32_vrangeps256_round_mask">, 5446 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5447 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5448 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 5449 def int_x86_avx10_mask_vreducepd256 : 5450 ClangBuiltin<"__builtin_ia32_vreducepd256_round_mask">, 5451 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5452 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty], 5453 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 5454 def int_x86_avx10_mask_vreduceph256 : 5455 ClangBuiltin<"__builtin_ia32_vreduceph256_round_mask">, 5456 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5457 [llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty], 5458 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 5459 def int_x86_avx10_mask_vreduceps256 : 5460 ClangBuiltin<"__builtin_ia32_vreduceps256_round_mask">, 5461 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5462 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5463 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 5464 def int_x86_avx10_mask_vrndscalepd256 : 5465 ClangBuiltin<"__builtin_ia32_vrndscalepd256_round_mask">, 5466 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5467 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty], 5468 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 5469 def int_x86_avx10_mask_vrndscaleph256 : 5470 ClangBuiltin<"__builtin_ia32_vrndscaleph256_round_mask">, 5471 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5472 [llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty], 5473 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 5474 def int_x86_avx10_mask_vrndscaleps256 : 5475 ClangBuiltin<"__builtin_ia32_vrndscaleps256_round_mask">, 5476 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5477 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5478 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>; 5479 def int_x86_avx10_mask_vscalefpd256 : 5480 ClangBuiltin<"__builtin_ia32_vscalefpd256_round_mask">, 5481 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5482 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty], 5483 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 5484 def int_x86_avx10_mask_vscalefph256 : 5485 ClangBuiltin<"__builtin_ia32_vscalefph256_round_mask">, 5486 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5487 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty], 5488 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 5489 def int_x86_avx10_mask_vscalefps256 : 5490 ClangBuiltin<"__builtin_ia32_vscalefps256_round_mask">, 5491 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5492 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 5493 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 5494 def int_x86_avx10_vsqrtpd256 : ClangBuiltin<"__builtin_ia32_vsqrtpd256_round">, 5495 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5496 [llvm_v4f64_ty, llvm_i32_ty], 5497 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5498 def int_x86_avx10_vsqrtph256 : ClangBuiltin<"__builtin_ia32_vsqrtph256_round">, 5499 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5500 [llvm_v16f16_ty, llvm_i32_ty], 5501 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5502 def int_x86_avx10_vsqrtps256 : ClangBuiltin<"__builtin_ia32_vsqrtps256_round">, 5503 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5504 [llvm_v8f32_ty, llvm_i32_ty], 5505 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5506 def int_x86_avx10_vsubpd256 : 5507 ClangBuiltin<"__builtin_ia32_vsubpd256_round">, 5508 DefaultAttrsIntrinsic<[llvm_v4f64_ty], 5509 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty], 5510 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5511 def int_x86_avx10_vsubph256 : 5512 ClangBuiltin<"__builtin_ia32_vsubph256_round">, 5513 DefaultAttrsIntrinsic<[llvm_v16f16_ty], 5514 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty], 5515 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5516 def int_x86_avx10_vsubps256 : 5517 ClangBuiltin<"__builtin_ia32_vsubps256_round">, 5518 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5519 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty], 5520 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5521} 5522 5523// conversion with saturation 5524let TargetPrefix = "x86" in { 5525 def int_x86_avx10_vcvttss2sis : ClangBuiltin<"__builtin_ia32_vcvttss2sis32">, 5526 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], 5527 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5528 def int_x86_avx10_vcvttss2sis64 : ClangBuiltin<"__builtin_ia32_vcvttss2sis64">, 5529 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], 5530 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5531 def int_x86_avx10_vcvttss2usis : ClangBuiltin<"__builtin_ia32_vcvttss2usis32">, 5532 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], 5533 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5534 def int_x86_avx10_vcvttss2usis64 : ClangBuiltin<"__builtin_ia32_vcvttss2usis64">, 5535 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], 5536 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5537 def int_x86_avx10_vcvttsd2sis : ClangBuiltin<"__builtin_ia32_vcvttsd2sis32">, 5538 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], 5539 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5540 def int_x86_avx10_vcvttsd2sis64 : ClangBuiltin<"__builtin_ia32_vcvttsd2sis64">, 5541 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], 5542 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5543 def int_x86_avx10_vcvttsd2usis : ClangBuiltin<"__builtin_ia32_vcvttsd2usis32">, 5544 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], 5545 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5546 def int_x86_avx10_vcvttsd2usis64 : ClangBuiltin<"__builtin_ia32_vcvttsd2usis64">, 5547 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], 5548 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 5549 def int_x86_avx10_mask_vcvttpd2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs128_mask">, 5550 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 5551 [IntrNoMem]>; 5552 def int_x86_avx10_mask_vcvttpd2dqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2dqs256_round_mask">, 5553 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5554 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5555 def int_x86_avx10_mask_vcvttpd2dqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs512_round_mask">, 5556 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5557 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5558 def int_x86_avx10_mask_vcvttpd2udqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2udqs128_mask">, 5559 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty,llvm_v4i32_ty, llvm_i8_ty], 5560 [IntrNoMem]>; 5561 def int_x86_avx10_mask_vcvttpd2udqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2udqs256_round_mask">, 5562 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5563 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5564 def int_x86_avx10_mask_vcvttpd2udqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2udqs512_round_mask">, 5565 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5566 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5567 def int_x86_avx10_mask_vcvttpd2qqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2qqs128_mask">, 5568 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty,llvm_v2i64_ty, llvm_i8_ty], 5569 [IntrNoMem]>; 5570 def int_x86_avx10_mask_vcvttpd2qqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2qqs256_round_mask">, 5571 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5572 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5573 def int_x86_avx10_mask_vcvttpd2qqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2qqs512_round_mask">, 5574 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5575 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5576 def int_x86_avx10_mask_vcvttpd2uqqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs128_mask">, 5577 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty,llvm_v2i64_ty, llvm_i8_ty], 5578 [IntrNoMem]>; 5579 def int_x86_avx10_mask_vcvttpd2uqqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs256_round_mask">, 5580 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5581 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5582 def int_x86_avx10_mask_vcvttpd2uqqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs512_round_mask">, 5583 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5584 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5585 def int_x86_avx10_mask_vcvttps2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2dqs128_mask">, 5586 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 5587 [IntrNoMem]>; 5588 def int_x86_avx10_mask_vcvttps2dqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2dqs256_round_mask">, 5589 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5590 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5591 def int_x86_avx10_mask_vcvttps2dqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2dqs512_round_mask">, 5592 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 5593 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5594 def int_x86_avx10_mask_vcvttps2udqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2udqs128_mask">, 5595 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 5596 [IntrNoMem]>; 5597 def int_x86_avx10_mask_vcvttps2udqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2udqs256_round_mask">, 5598 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5599 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5600 def int_x86_avx10_mask_vcvttps2udqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2udqs512_round_mask">, 5601 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 5602 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5603 def int_x86_avx10_mask_vcvttps2qqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2qqs128_mask">, 5604 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 5605 [IntrNoMem]>; 5606 def int_x86_avx10_mask_vcvttps2qqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2qqs256_round_mask">, 5607 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5608 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5609 def int_x86_avx10_mask_vcvttps2qqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2qqs512_round_mask">, 5610 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5611 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5612 def int_x86_avx10_mask_vcvttps2uqqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2uqqs128_mask">, 5613 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4f32_ty,llvm_v2i64_ty, llvm_i8_ty], 5614 [IntrNoMem]>; 5615 def int_x86_avx10_mask_vcvttps2uqqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2uqqs256_round_mask">, 5616 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5617 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5618 def int_x86_avx10_mask_vcvttps2uqqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2uqqs512_round_mask">, 5619 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5620 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 5621} 5622 5623//===----------------------------------------------------------------------===// 5624// SHA intrinsics 5625let TargetPrefix = "x86" in { 5626 def int_x86_sha1rnds4 : ClangBuiltin<"__builtin_ia32_sha1rnds4">, 5627 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5628 llvm_i8_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>; 5629 def int_x86_sha1nexte : ClangBuiltin<"__builtin_ia32_sha1nexte">, 5630 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 5631 [IntrNoMem]>; 5632 def int_x86_sha1msg1 : ClangBuiltin<"__builtin_ia32_sha1msg1">, 5633 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 5634 [IntrNoMem]>; 5635 def int_x86_sha1msg2 : ClangBuiltin<"__builtin_ia32_sha1msg2">, 5636 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 5637 [IntrNoMem]>; 5638 def int_x86_sha256rnds2 : ClangBuiltin<"__builtin_ia32_sha256rnds2">, 5639 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5640 llvm_v4i32_ty], [IntrNoMem]>; 5641 def int_x86_sha256msg1 : ClangBuiltin<"__builtin_ia32_sha256msg1">, 5642 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 5643 [IntrNoMem]>; 5644 def int_x86_sha256msg2 : ClangBuiltin<"__builtin_ia32_sha256msg2">, 5645 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 5646 [IntrNoMem]>; 5647} 5648 5649//===----------------------------------------------------------------------===// 5650// SHA512 intrinsics 5651let TargetPrefix = "x86" in { 5652def int_x86_vsha512msg1 : ClangBuiltin<"__builtin_ia32_vsha512msg1">, 5653 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v2i64_ty], 5654 [IntrNoMem]>; 5655def int_x86_vsha512msg2 : ClangBuiltin<"__builtin_ia32_vsha512msg2">, 5656 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 5657 [IntrNoMem]>; 5658def int_x86_vsha512rnds2 : ClangBuiltin<"__builtin_ia32_vsha512rnds2">, 5659 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v2i64_ty], 5660 [IntrNoMem]>; 5661} 5662 5663//===----------------------------------------------------------------------===// 5664// Thread synchronization ops with timer. 5665let TargetPrefix = "x86" in { 5666 def int_x86_monitorx 5667 : ClangBuiltin<"__builtin_ia32_monitorx">, 5668 Intrinsic<[], [ llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty ], []>; 5669 def int_x86_mwaitx 5670 : ClangBuiltin<"__builtin_ia32_mwaitx">, 5671 Intrinsic<[], [ llvm_i32_ty, llvm_i32_ty, llvm_i32_ty ], []>; 5672} 5673 5674//===----------------------------------------------------------------------===// 5675// Cache-line zero 5676let TargetPrefix = "x86" in { 5677 def int_x86_clzero : ClangBuiltin<"__builtin_ia32_clzero">, 5678 Intrinsic<[], [llvm_ptr_ty], []>; 5679} 5680 5681//===----------------------------------------------------------------------===// 5682// Cache write back intrinsics 5683 5684let TargetPrefix = "x86" in { 5685 // Write back and invalidate 5686 def int_x86_wbinvd : ClangBuiltin<"__builtin_ia32_wbinvd">, 5687 Intrinsic<[], [], []>; 5688 5689 // Write back no-invalidate 5690 def int_x86_wbnoinvd : ClangBuiltin<"__builtin_ia32_wbnoinvd">, 5691 Intrinsic<[], [], []>; 5692} 5693 5694//===----------------------------------------------------------------------===// 5695// Cache-line demote 5696 5697let TargetPrefix = "x86" in { 5698 def int_x86_cldemote : ClangBuiltin<"__builtin_ia32_cldemote">, 5699 Intrinsic<[], [llvm_ptr_ty], []>; 5700} 5701 5702//===----------------------------------------------------------------------===// 5703// Wait and pause enhancements 5704let TargetPrefix = "x86" in { 5705 def int_x86_umonitor : ClangBuiltin<"__builtin_ia32_umonitor">, 5706 Intrinsic<[], [llvm_ptr_ty], []>; 5707 def int_x86_umwait : ClangBuiltin<"__builtin_ia32_umwait">, 5708 Intrinsic<[llvm_i8_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>; 5709 def int_x86_tpause : ClangBuiltin<"__builtin_ia32_tpause">, 5710 Intrinsic<[llvm_i8_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>; 5711} 5712 5713//===----------------------------------------------------------------------===// 5714// Direct Move Instructions 5715 5716let TargetPrefix = "x86" in { 5717 def int_x86_directstore32 : ClangBuiltin<"__builtin_ia32_directstore_u32">, 5718 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], []>; 5719 def int_x86_directstore64 : ClangBuiltin<"__builtin_ia32_directstore_u64">, 5720 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], []>; 5721 def int_x86_movdir64b : ClangBuiltin<"__builtin_ia32_movdir64b">, 5722 Intrinsic<[], [llvm_ptr_ty, llvm_ptr_ty], []>; 5723} 5724 5725//===----------------------------------------------------------------------===// 5726// PTWrite - Write data to processor trace pocket 5727 5728let TargetPrefix = "x86" in { 5729 def int_x86_ptwrite32 : ClangBuiltin<"__builtin_ia32_ptwrite32">, 5730 Intrinsic<[], [llvm_i32_ty], []>; 5731 def int_x86_ptwrite64 : ClangBuiltin<"__builtin_ia32_ptwrite64">, 5732 Intrinsic<[], [llvm_i64_ty], []>; 5733} 5734 5735//===----------------------------------------------------------------------===// 5736// INVPCID - Invalidate Process-Context Identifier 5737 5738let TargetPrefix = "x86" in { 5739 def int_x86_invpcid : ClangBuiltin<"__builtin_ia32_invpcid">, 5740 Intrinsic<[], [llvm_i32_ty, llvm_ptr_ty], []>; 5741} 5742 5743let TargetPrefix = "x86" in { 5744 def int_x86_avx512bf16_cvtne2ps2bf16_128: 5745 ClangBuiltin<"__builtin_ia32_cvtne2ps2bf16_128">, 5746 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v4f32_ty, llvm_v4f32_ty], 5747 [IntrNoMem]>; 5748 def int_x86_avx512bf16_cvtne2ps2bf16_256: 5749 ClangBuiltin<"__builtin_ia32_cvtne2ps2bf16_256">, 5750 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v8f32_ty, llvm_v8f32_ty], 5751 [IntrNoMem]>; 5752 def int_x86_avx512bf16_cvtne2ps2bf16_512: 5753 ClangBuiltin<"__builtin_ia32_cvtne2ps2bf16_512">, 5754 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v16f32_ty, llvm_v16f32_ty], 5755 [IntrNoMem]>; 5756 // Intrinsic must be masked due to it producing less than 128 bits of results. 5757 def int_x86_avx512bf16_mask_cvtneps2bf16_128: 5758 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], 5759 [llvm_v4f32_ty, llvm_v8bf16_ty, llvm_v4i1_ty], 5760 [IntrNoMem]>; 5761 def int_x86_avx512bf16_cvtneps2bf16_256: 5762 ClangBuiltin<"__builtin_ia32_cvtneps2bf16_256">, 5763 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8f32_ty], [IntrNoMem]>; 5764 def int_x86_avx512bf16_cvtneps2bf16_512: 5765 ClangBuiltin<"__builtin_ia32_cvtneps2bf16_512">, 5766 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16f32_ty], [IntrNoMem]>; 5767 def int_x86_avx512bf16_dpbf16ps_128: 5768 ClangBuiltin<"__builtin_ia32_dpbf16ps_128">, 5769 DefaultAttrsIntrinsic<[llvm_v4f32_ty], 5770 [llvm_v4f32_ty, llvm_v8bf16_ty, llvm_v8bf16_ty], 5771 [IntrNoMem]>; 5772 def int_x86_avx512bf16_dpbf16ps_256: 5773 ClangBuiltin<"__builtin_ia32_dpbf16ps_256">, 5774 DefaultAttrsIntrinsic<[llvm_v8f32_ty], 5775 [llvm_v8f32_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 5776 [IntrNoMem]>; 5777 def int_x86_avx512bf16_dpbf16ps_512: 5778 ClangBuiltin<"__builtin_ia32_dpbf16ps_512">, 5779 DefaultAttrsIntrinsic<[llvm_v16f32_ty], 5780 [llvm_v16f32_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 5781 [IntrNoMem]>; 5782} 5783 5784//===----------------------------------------------------------------------===// 5785// ENQCMD - Enqueue Stores Instructions 5786 5787let TargetPrefix = "x86" in { 5788 def int_x86_enqcmd : ClangBuiltin<"__builtin_ia32_enqcmd">, 5789 Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_ptr_ty], []>; 5790 def int_x86_enqcmds : ClangBuiltin<"__builtin_ia32_enqcmds">, 5791 Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_ptr_ty], []>; 5792} 5793 5794//===----------------------------------------------------------------------===// 5795// SERIALIZE - Serialize instruction fetch and execution 5796 5797let TargetPrefix = "x86" in { 5798 def int_x86_serialize : ClangBuiltin<"__builtin_ia32_serialize">, 5799 Intrinsic<[], [], []>; 5800} 5801 5802//===----------------------------------------------------------------------===// 5803// TSXLDTRK - TSX Suspend Load Address Tracking 5804 5805let TargetPrefix = "x86" in { 5806 def int_x86_xsusldtrk : ClangBuiltin<"__builtin_ia32_xsusldtrk">, 5807 Intrinsic<[], [], []>; 5808 def int_x86_xresldtrk : ClangBuiltin<"__builtin_ia32_xresldtrk">, 5809 Intrinsic<[], [], []>; 5810} 5811 5812//===----------------------------------------------------------------------===// 5813// Key Locker 5814let TargetPrefix = "x86" in { 5815 def int_x86_loadiwkey : ClangBuiltin<"__builtin_ia32_loadiwkey">, 5816 Intrinsic<[], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty], 5817 []>; 5818 def int_x86_encodekey128 : 5819 Intrinsic<[llvm_i32_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5820 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5821 [llvm_i32_ty, llvm_v2i64_ty], []>; 5822 def int_x86_encodekey256 : 5823 Intrinsic<[llvm_i32_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5824 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5825 [llvm_i32_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>; 5826 def int_x86_aesenc128kl : 5827 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>; 5828 def int_x86_aesdec128kl : 5829 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>; 5830 def int_x86_aesenc256kl : 5831 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>; 5832 def int_x86_aesdec256kl : 5833 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>; 5834 def int_x86_aesencwide128kl : 5835 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5836 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5837 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5838 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5839 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5840 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>; 5841 def int_x86_aesdecwide128kl : 5842 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5843 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5844 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5845 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5846 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5847 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>; 5848 def int_x86_aesencwide256kl : 5849 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5850 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5851 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5852 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5853 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5854 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>; 5855 def int_x86_aesdecwide256kl : 5856 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5857 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5858 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 5859 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5860 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, 5861 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>; 5862} 5863 5864//===----------------------------------------------------------------------===// 5865// AMX - Intel AMX extensions 5866 5867let TargetPrefix = "x86" in { 5868 def int_x86_ldtilecfg : ClangBuiltin<"__builtin_ia32_tile_loadconfig">, 5869 Intrinsic<[], [llvm_ptr_ty], []>; 5870 def int_x86_sttilecfg : ClangBuiltin<"__builtin_ia32_tile_storeconfig">, 5871 Intrinsic<[], [llvm_ptr_ty], []>; 5872 def int_x86_tilerelease : ClangBuiltin<"__builtin_ia32_tilerelease">, 5873 Intrinsic<[], [], []>; 5874 def int_x86_tilezero : ClangBuiltin<"__builtin_ia32_tilezero">, 5875 Intrinsic<[], [llvm_i8_ty], [ImmArg<ArgIndex<0>>]>; 5876 def int_x86_tileloadd64 : ClangBuiltin<"__builtin_ia32_tileloadd64">, 5877 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5878 [ImmArg<ArgIndex<0>>]>; 5879 def int_x86_tileloaddt164 : ClangBuiltin<"__builtin_ia32_tileloaddt164">, 5880 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5881 [ImmArg<ArgIndex<0>>]>; 5882 def int_x86_tilestored64 : ClangBuiltin<"__builtin_ia32_tilestored64">, 5883 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5884 [ImmArg<ArgIndex<0>>]>; 5885 def int_x86_tileloaddrs64 : ClangBuiltin<"__builtin_ia32_tileloaddrs64">, 5886 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5887 [ImmArg<ArgIndex<0>>]>; 5888 def int_x86_tileloaddrst164 : ClangBuiltin<"__builtin_ia32_tileloaddrst164">, 5889 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5890 [ImmArg<ArgIndex<0>>]>; 5891 def int_x86_tdpbssd : ClangBuiltin<"__builtin_ia32_tdpbssd">, 5892 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5893 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5894 ImmArg<ArgIndex<2>>]>; 5895 def int_x86_tdpbsud : ClangBuiltin<"__builtin_ia32_tdpbsud">, 5896 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5897 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5898 ImmArg<ArgIndex<2>>]>; 5899 def int_x86_tdpbusd : ClangBuiltin<"__builtin_ia32_tdpbusd">, 5900 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5901 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5902 ImmArg<ArgIndex<2>>]>; 5903 def int_x86_tdpbuud : ClangBuiltin<"__builtin_ia32_tdpbuud">, 5904 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5905 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5906 ImmArg<ArgIndex<2>>]>; 5907 def int_x86_tdpbf16ps : ClangBuiltin<"__builtin_ia32_tdpbf16ps">, 5908 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5909 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5910 ImmArg<ArgIndex<2>>]>; 5911 // AMX-FP16 - Intel FP16 AMX extensions 5912 def int_x86_tdpfp16ps : ClangBuiltin<"__builtin_ia32_tdpfp16ps">, 5913 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5914 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5915 ImmArg<ArgIndex<2>>]>; 5916 // AMX-COMPLEX 5917 def int_x86_tcmmimfp16ps : ClangBuiltin<"__builtin_ia32_tcmmimfp16ps">, 5918 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5919 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5920 ImmArg<ArgIndex<2>>]>; 5921 def int_x86_tcmmrlfp16ps : ClangBuiltin<"__builtin_ia32_tcmmrlfp16ps">, 5922 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5923 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5924 ImmArg<ArgIndex<2>>]>; 5925 5926 // AMX-FP8 5927 def int_x86_tdpbf8ps : ClangBuiltin<"__builtin_ia32_tdpbf8ps">, 5928 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5929 [ImmArg<ArgIndex<0>>, 5930 ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>; 5931 def int_x86_tdpbhf8ps : ClangBuiltin<"__builtin_ia32_tdpbhf8ps">, 5932 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5933 [ImmArg<ArgIndex<0>>, 5934 ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>; 5935 def int_x86_tdphbf8ps : ClangBuiltin<"__builtin_ia32_tdphbf8ps">, 5936 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5937 [ImmArg<ArgIndex<0>>, 5938 ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>; 5939 def int_x86_tdphf8ps : ClangBuiltin<"__builtin_ia32_tdphf8ps">, 5940 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5941 [ImmArg<ArgIndex<0>>, 5942 ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>; 5943 5944 // AMX-TRANSPOSE 5945 def int_x86_t2rpntlvwz0 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz0">, 5946 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5947 [ImmArg<ArgIndex<0>>]>; 5948 def int_x86_t2rpntlvwz0t1 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz0t1">, 5949 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5950 [ImmArg<ArgIndex<0>>]>; 5951 def int_x86_t2rpntlvwz1 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz1">, 5952 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5953 [ImmArg<ArgIndex<0>>]>; 5954 def int_x86_t2rpntlvwz1t1 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz1t1">, 5955 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5956 [ImmArg<ArgIndex<0>>]>; 5957 def int_x86_ttransposed : ClangBuiltin<"__builtin_ia32_ttransposed">, 5958 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty], 5959 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>; 5960 def int_x86_ttdpbf16ps : ClangBuiltin<"__builtin_ia32_ttdpbf16ps">, 5961 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5962 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5963 ImmArg<ArgIndex<2>>]>; 5964 def int_x86_ttdpfp16ps : ClangBuiltin<"__builtin_ia32_ttdpfp16ps">, 5965 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5966 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5967 ImmArg<ArgIndex<2>>]>; 5968 def int_x86_ttcmmimfp16ps : ClangBuiltin<"__builtin_ia32_ttcmmimfp16ps">, 5969 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5970 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5971 ImmArg<ArgIndex<2>>]>; 5972 def int_x86_ttcmmrlfp16ps : ClangBuiltin<"__builtin_ia32_ttcmmrlfp16ps">, 5973 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5974 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5975 ImmArg<ArgIndex<2>>]>; 5976 def int_x86_tconjtcmmimfp16ps : ClangBuiltin<"__builtin_ia32_tconjtcmmimfp16ps">, 5977 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 5978 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 5979 ImmArg<ArgIndex<2>>]>; 5980 def int_x86_tconjtfp16 : ClangBuiltin<"__builtin_ia32_tconjtfp16">, 5981 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty], 5982 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>; 5983 5984 // AMX-MORVS, AMX-TRANSPOSE 5985 def int_x86_t2rpntlvwz0rs : ClangBuiltin<"__builtin_ia32_t2rpntlvwz0rs">, 5986 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5987 [ImmArg<ArgIndex<0>>]>; 5988 def int_x86_t2rpntlvwz0rst1 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz0rst1">, 5989 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5990 [ImmArg<ArgIndex<0>>]>; 5991 def int_x86_t2rpntlvwz1rs : ClangBuiltin<"__builtin_ia32_t2rpntlvwz1rs">, 5992 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5993 [ImmArg<ArgIndex<0>>]>; 5994 def int_x86_t2rpntlvwz1rst1 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz1rst1">, 5995 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty], 5996 [ImmArg<ArgIndex<0>>]>; 5997 5998 // AMX-AVX512 5999 def int_x86_tcvtrowd2ps : ClangBuiltin<"__builtin_ia32_tcvtrowd2ps">, 6000 Intrinsic<[llvm_v16f32_ty], [llvm_i8_ty, llvm_i32_ty], 6001 [ImmArg<ArgIndex<0>>]>; 6002 def int_x86_tcvtrowps2bf16h : ClangBuiltin<"__builtin_ia32_tcvtrowps2bf16h">, 6003 Intrinsic<[llvm_v32bf16_ty], [llvm_i8_ty, llvm_i32_ty], 6004 [ImmArg<ArgIndex<0>>]>; 6005 def int_x86_tcvtrowps2bf16l : ClangBuiltin<"__builtin_ia32_tcvtrowps2bf16l">, 6006 Intrinsic<[llvm_v32bf16_ty], [llvm_i8_ty, llvm_i32_ty], 6007 [ImmArg<ArgIndex<0>>]>; 6008 def int_x86_tcvtrowps2phh : ClangBuiltin<"__builtin_ia32_tcvtrowps2phh">, 6009 Intrinsic<[llvm_v32f16_ty], [llvm_i8_ty, llvm_i32_ty], 6010 [ImmArg<ArgIndex<0>>]>; 6011 def int_x86_tcvtrowps2phl : ClangBuiltin<"__builtin_ia32_tcvtrowps2phl">, 6012 Intrinsic<[llvm_v32f16_ty], [llvm_i8_ty, llvm_i32_ty], 6013 [ImmArg<ArgIndex<0>>]>; 6014 def int_x86_tilemovrow : ClangBuiltin<"__builtin_ia32_tilemovrow">, 6015 Intrinsic<[llvm_v16i32_ty], [llvm_i8_ty, llvm_i32_ty], 6016 [ImmArg<ArgIndex<0>>]>; 6017 6018 // AMX - internal intrinsics 6019 def int_x86_ldtilecfg_internal : 6020 ClangBuiltin<"__builtin_ia32_tile_loadconfig_internal">, 6021 Intrinsic<[], [llvm_ptr_ty], []>; 6022 def int_x86_tileloadd64_internal : 6023 ClangBuiltin<"__builtin_ia32_tileloadd64_internal">, 6024 Intrinsic<[llvm_x86amx_ty], 6025 [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6026 []>; 6027 def int_x86_tileloaddt164_internal : 6028 ClangBuiltin<"__builtin_ia32_tileloaddt164_internal">, 6029 Intrinsic<[llvm_x86amx_ty], 6030 [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6031 []>; 6032 def int_x86_tileloaddrs64_internal : 6033 ClangBuiltin<"__builtin_ia32_tileloaddrs64_internal">, 6034 Intrinsic<[llvm_x86amx_ty], 6035 [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6036 []>; 6037 def int_x86_tileloaddrst164_internal : 6038 ClangBuiltin<"__builtin_ia32_tileloaddrst164_internal">, 6039 Intrinsic<[llvm_x86amx_ty], 6040 [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6041 []>; 6042 def int_x86_tdpbssd_internal : 6043 ClangBuiltin<"__builtin_ia32_tdpbssd_internal">, 6044 Intrinsic<[llvm_x86amx_ty], 6045 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6046 llvm_x86amx_ty, llvm_x86amx_ty, 6047 llvm_x86amx_ty], []>; 6048 def int_x86_tdpbsud_internal : 6049 ClangBuiltin<"__builtin_ia32_tdpbsud_internal">, 6050 Intrinsic<[llvm_x86amx_ty], 6051 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6052 llvm_x86amx_ty, llvm_x86amx_ty, 6053 llvm_x86amx_ty], []>; 6054 def int_x86_tdpbusd_internal : 6055 ClangBuiltin<"__builtin_ia32_tdpbusd_internal">, 6056 Intrinsic<[llvm_x86amx_ty], 6057 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6058 llvm_x86amx_ty, llvm_x86amx_ty, 6059 llvm_x86amx_ty], []>; 6060 def int_x86_tdpbuud_internal : 6061 ClangBuiltin<"__builtin_ia32_tdpbuud_internal">, 6062 Intrinsic<[llvm_x86amx_ty], 6063 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6064 llvm_x86amx_ty, llvm_x86amx_ty, 6065 llvm_x86amx_ty], []>; 6066 def int_x86_tilestored64_internal : 6067 ClangBuiltin<"__builtin_ia32_tilestored64_internal">, 6068 Intrinsic<[], [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, 6069 llvm_i64_ty, llvm_x86amx_ty], []>; 6070 def int_x86_tilezero_internal : 6071 ClangBuiltin<"__builtin_ia32_tilezero_internal">, 6072 Intrinsic<[llvm_x86amx_ty], [llvm_i16_ty, llvm_i16_ty], 6073 []>; 6074 def int_x86_tdpbf16ps_internal : 6075 ClangBuiltin<"__builtin_ia32_tdpbf16ps_internal">, 6076 Intrinsic<[llvm_x86amx_ty], 6077 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6078 llvm_x86amx_ty, llvm_x86amx_ty, 6079 llvm_x86amx_ty], []>; 6080 def int_x86_tdpfp16ps_internal : 6081 ClangBuiltin<"__builtin_ia32_tdpfp16ps_internal">, 6082 Intrinsic<[llvm_x86amx_ty], 6083 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6084 llvm_x86amx_ty, llvm_x86amx_ty, 6085 llvm_x86amx_ty], []>; 6086 // the vector size can be smaller than AMX register size (1024 bytes) 6087 def int_x86_cast_vector_to_tile: 6088 DefaultAttrsIntrinsic<[llvm_x86amx_ty], [llvm_anyvector_ty], [IntrNoMem]>; 6089 // the vector size can be smaller than AMX register size (1024 bytes) 6090 def int_x86_cast_tile_to_vector: 6091 DefaultAttrsIntrinsic<[llvm_anyvector_ty], [llvm_x86amx_ty], [IntrNoMem]>; 6092 6093 def int_x86_tcmmimfp16ps_internal : 6094 ClangBuiltin<"__builtin_ia32_tcmmimfp16ps_internal">, 6095 Intrinsic<[llvm_x86amx_ty], 6096 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6097 llvm_x86amx_ty, llvm_x86amx_ty, 6098 llvm_x86amx_ty], []>; 6099 def int_x86_tcmmrlfp16ps_internal : 6100 ClangBuiltin<"__builtin_ia32_tcmmrlfp16ps_internal">, 6101 Intrinsic<[llvm_x86amx_ty], 6102 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6103 llvm_x86amx_ty, llvm_x86amx_ty, 6104 llvm_x86amx_ty], []>; 6105 6106 // AMX-MORVS, AMX-TRANSPOSE - internal intrinsics 6107 def int_x86_t2rpntlvwz0rs_internal : 6108 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty], 6109 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6110 [IntrArgMemOnly, IntrReadMem]>; 6111 def int_x86_t2rpntlvwz0rst1_internal : 6112 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty], 6113 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6114 [IntrArgMemOnly]>; 6115 def int_x86_t2rpntlvwz1rs_internal : 6116 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty], 6117 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6118 [IntrArgMemOnly]>; 6119 def int_x86_t2rpntlvwz1rst1_internal : 6120 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty], 6121 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6122 [IntrArgMemOnly]>; 6123 6124 def int_x86_t2rpntlvwz0_internal : 6125 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty], 6126 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6127 []>; 6128 def int_x86_t2rpntlvwz0t1_internal : 6129 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty], 6130 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6131 []>; 6132 def int_x86_t2rpntlvwz1_internal : 6133 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty], 6134 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6135 []>; 6136 def int_x86_t2rpntlvwz1t1_internal : 6137 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty], 6138 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty], 6139 []>; 6140 def int_x86_ttransposed_internal : 6141 ClangBuiltin<"__builtin_ia32_ttransposed_internal">, 6142 Intrinsic<[llvm_x86amx_ty], 6143 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty], []>; 6144 def int_x86_ttdpbf16ps_internal : 6145 ClangBuiltin<"__builtin_ia32_ttdpbf16ps_internal">, 6146 Intrinsic<[llvm_x86amx_ty], 6147 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6148 llvm_x86amx_ty, llvm_x86amx_ty, 6149 llvm_x86amx_ty], []>; 6150 def int_x86_ttdpfp16ps_internal : 6151 ClangBuiltin<"__builtin_ia32_ttdpfp16ps_internal">, 6152 Intrinsic<[llvm_x86amx_ty], 6153 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6154 llvm_x86amx_ty, llvm_x86amx_ty, 6155 llvm_x86amx_ty], []>; 6156 def int_x86_ttcmmimfp16ps_internal : 6157 ClangBuiltin<"__builtin_ia32_ttcmmimfp16ps_internal">, 6158 Intrinsic<[llvm_x86amx_ty], 6159 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6160 llvm_x86amx_ty, llvm_x86amx_ty, 6161 llvm_x86amx_ty], []>; 6162 def int_x86_ttcmmrlfp16ps_internal : 6163 ClangBuiltin<"__builtin_ia32_ttcmmrlfp16ps_internal">, 6164 Intrinsic<[llvm_x86amx_ty], 6165 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6166 llvm_x86amx_ty, llvm_x86amx_ty, 6167 llvm_x86amx_ty], []>; 6168 def int_x86_tconjtcmmimfp16ps_internal : 6169 ClangBuiltin<"__builtin_ia32_tconjtcmmimfp16ps_internal">, 6170 Intrinsic<[llvm_x86amx_ty], 6171 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6172 llvm_x86amx_ty, llvm_x86amx_ty, 6173 llvm_x86amx_ty], []>; 6174 def int_x86_tconjtfp16_internal : 6175 ClangBuiltin<"__builtin_ia32_tconjtfp16_internal">, 6176 Intrinsic<[llvm_x86amx_ty], 6177 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty], []>; 6178 6179 def int_x86_tcvtrowd2ps_internal : 6180 ClangBuiltin<"__builtin_ia32_tcvtrowd2ps_internal">, 6181 Intrinsic<[llvm_v16f32_ty], 6182 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty], 6183 []>; 6184 def int_x86_tcvtrowps2bf16h_internal : 6185 ClangBuiltin<"__builtin_ia32_tcvtrowps2bf16h_internal">, 6186 Intrinsic<[llvm_v32bf16_ty], 6187 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty], 6188 []>; 6189 def int_x86_tcvtrowps2bf16l_internal : 6190 ClangBuiltin<"__builtin_ia32_tcvtrowps2bf16l_internal">, 6191 Intrinsic<[llvm_v32bf16_ty], 6192 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty], 6193 []>; 6194 def int_x86_tcvtrowps2phh_internal : 6195 ClangBuiltin<"__builtin_ia32_tcvtrowps2phh_internal">, 6196 Intrinsic<[llvm_v32f16_ty], 6197 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty], 6198 []>; 6199 def int_x86_tcvtrowps2phl_internal : 6200 ClangBuiltin<"__builtin_ia32_tcvtrowps2phl_internal">, 6201 Intrinsic<[llvm_v32f16_ty], 6202 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty], 6203 []>; 6204 def int_x86_tilemovrow_internal : 6205 ClangBuiltin<"__builtin_ia32_tilemovrow_internal">, 6206 Intrinsic<[llvm_v16i32_ty], 6207 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty], 6208 []>; 6209 6210 def int_x86_tmmultf32ps : ClangBuiltin<"__builtin_ia32_tmmultf32ps">, 6211 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 6212 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 6213 ImmArg<ArgIndex<2>>]>; 6214 def int_x86_ttmmultf32ps : ClangBuiltin<"__builtin_ia32_ttmmultf32ps">, 6215 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty], 6216 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, 6217 ImmArg<ArgIndex<2>>]>; 6218 def int_x86_tmmultf32ps_internal : 6219 ClangBuiltin<"__builtin_ia32_tmmultf32ps_internal">, 6220 Intrinsic<[llvm_x86amx_ty], 6221 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, 6222 llvm_x86amx_ty, llvm_x86amx_ty], []>; 6223 def int_x86_ttmmultf32ps_internal : 6224 ClangBuiltin<"__builtin_ia32_ttmmultf32ps_internal">, 6225 Intrinsic<[llvm_x86amx_ty], 6226 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, 6227 llvm_x86amx_ty, llvm_x86amx_ty], []>; 6228 6229 def int_x86_tdpbf8ps_internal : 6230 ClangBuiltin<"__builtin_ia32_tdpbf8ps_internal">, 6231 Intrinsic<[llvm_x86amx_ty], 6232 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6233 llvm_x86amx_ty, llvm_x86amx_ty, llvm_x86amx_ty], 6234 []>; 6235 def int_x86_tdpbhf8ps_internal : 6236 ClangBuiltin<"__builtin_ia32_tdpbhf8ps_internal">, 6237 Intrinsic<[llvm_x86amx_ty], 6238 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6239 llvm_x86amx_ty, llvm_x86amx_ty, llvm_x86amx_ty], 6240 []>; 6241 def int_x86_tdphbf8ps_internal : 6242 ClangBuiltin<"__builtin_ia32_tdphbf8ps_internal">, 6243 Intrinsic<[llvm_x86amx_ty], 6244 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6245 llvm_x86amx_ty, llvm_x86amx_ty, llvm_x86amx_ty], 6246 []>; 6247 def int_x86_tdphf8ps_internal : 6248 ClangBuiltin<"__builtin_ia32_tdphf8ps_internal">, 6249 Intrinsic<[llvm_x86amx_ty], 6250 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, 6251 llvm_x86amx_ty, llvm_x86amx_ty, llvm_x86amx_ty], 6252 []>; 6253} 6254 6255//===----------------------------------------------------------------------===// 6256let TargetPrefix = "x86" in { 6257// CMPCCXADD 6258def int_x86_cmpccxadd32 6259 : ClangBuiltin<"__builtin_ia32_cmpccxadd32">, 6260 Intrinsic<[llvm_i32_ty], 6261 [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 6262 [IntrArgMemOnly, ImmArg<ArgIndex<3>>]>; 6263 6264def int_x86_cmpccxadd64 6265 : ClangBuiltin<"__builtin_ia32_cmpccxadd64">, 6266 Intrinsic<[llvm_i64_ty], 6267 [llvm_ptr_ty, llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], 6268 [IntrArgMemOnly, ImmArg<ArgIndex<3>>]>; 6269 6270// AVX-NE-CONVERT 6271def int_x86_vbcstnebf162ps128 6272 : ClangBuiltin<"__builtin_ia32_vbcstnebf162ps128">, 6273 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 6274 [IntrReadMem, IntrArgMemOnly]>; 6275def int_x86_vbcstnebf162ps256 6276 : ClangBuiltin<"__builtin_ia32_vbcstnebf162ps256">, 6277 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 6278 [IntrReadMem, IntrArgMemOnly]>; 6279def int_x86_vbcstnesh2ps128 6280 : ClangBuiltin<"__builtin_ia32_vbcstnesh2ps128">, 6281 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 6282 [IntrReadMem, IntrArgMemOnly]>; 6283def int_x86_vbcstnesh2ps256 6284 : ClangBuiltin<"__builtin_ia32_vbcstnesh2ps256">, 6285 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 6286 [IntrReadMem, IntrArgMemOnly]>; 6287def int_x86_vcvtneebf162ps128 6288 : ClangBuiltin<"__builtin_ia32_vcvtneebf162ps128">, 6289 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 6290 [IntrReadMem, IntrArgMemOnly]>; 6291def int_x86_vcvtneebf162ps256 6292 : ClangBuiltin<"__builtin_ia32_vcvtneebf162ps256">, 6293 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 6294 [IntrReadMem, IntrArgMemOnly]>; 6295def int_x86_vcvtneeph2ps128 6296 : ClangBuiltin<"__builtin_ia32_vcvtneeph2ps128">, 6297 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 6298 [IntrReadMem, IntrArgMemOnly]>; 6299def int_x86_vcvtneeph2ps256 6300 : ClangBuiltin<"__builtin_ia32_vcvtneeph2ps256">, 6301 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 6302 [IntrReadMem, IntrArgMemOnly]>; 6303def int_x86_vcvtneobf162ps128 6304 : ClangBuiltin<"__builtin_ia32_vcvtneobf162ps128">, 6305 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 6306 [IntrReadMem, IntrArgMemOnly]>; 6307def int_x86_vcvtneobf162ps256 6308 : ClangBuiltin<"__builtin_ia32_vcvtneobf162ps256">, 6309 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 6310 [IntrReadMem, IntrArgMemOnly]>; 6311def int_x86_vcvtneoph2ps128 6312 : ClangBuiltin<"__builtin_ia32_vcvtneoph2ps128">, 6313 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty], 6314 [IntrReadMem, IntrArgMemOnly]>; 6315def int_x86_vcvtneoph2ps256 6316 : ClangBuiltin<"__builtin_ia32_vcvtneoph2ps256">, 6317 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], 6318 [IntrReadMem, IntrArgMemOnly]>; 6319def int_x86_vcvtneps2bf16128 6320 : ClangBuiltin<"__builtin_ia32_vcvtneps2bf16128">, 6321 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v4f32_ty], [IntrNoMem]>; 6322def int_x86_vcvtneps2bf16256 6323 : ClangBuiltin<"__builtin_ia32_vcvtneps2bf16256">, 6324 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8f32_ty], [IntrNoMem]>; 6325} 6326//===----------------------------------------------------------------------===// 6327// SM3 intrinsics 6328let TargetPrefix = "x86" in { 6329 def int_x86_vsm3msg1 6330 : ClangBuiltin<"__builtin_ia32_vsm3msg1">, 6331 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 6332 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 6333 [IntrNoMem]>; 6334 def int_x86_vsm3msg2 6335 : ClangBuiltin<"__builtin_ia32_vsm3msg2">, 6336 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 6337 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 6338 [IntrNoMem]>; 6339 def int_x86_vsm3rnds2 6340 : ClangBuiltin<"__builtin_ia32_vsm3rnds2">, 6341 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 6342 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty], 6343 [ImmArg<ArgIndex<3>>, IntrNoMem]>; 6344} 6345//===----------------------------------------------------------------------===// 6346// SM4 intrinsics 6347let TargetPrefix = "x86" in { 6348 def int_x86_vsm4key4128 6349 : ClangBuiltin<"__builtin_ia32_vsm4key4128">, 6350 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 6351 [llvm_v4i32_ty, llvm_v4i32_ty], 6352 [IntrNoMem]>; 6353 def int_x86_vsm4key4256 6354 : ClangBuiltin<"__builtin_ia32_vsm4key4256">, 6355 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 6356 [llvm_v8i32_ty, llvm_v8i32_ty], 6357 [IntrNoMem]>; 6358 def int_x86_vsm4key4512 6359 : ClangBuiltin<"__builtin_ia32_vsm4key4512">, 6360 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 6361 [llvm_v16i32_ty, llvm_v16i32_ty], 6362 [IntrNoMem]>; 6363 def int_x86_vsm4rnds4128 6364 : ClangBuiltin<"__builtin_ia32_vsm4rnds4128">, 6365 DefaultAttrsIntrinsic<[llvm_v4i32_ty], 6366 [llvm_v4i32_ty, llvm_v4i32_ty], 6367 [IntrNoMem]>; 6368 def int_x86_vsm4rnds4256 6369 : ClangBuiltin<"__builtin_ia32_vsm4rnds4256">, 6370 DefaultAttrsIntrinsic<[llvm_v8i32_ty], 6371 [llvm_v8i32_ty, llvm_v8i32_ty], 6372 [IntrNoMem]>; 6373 def int_x86_vsm4rnds4512 6374 : ClangBuiltin<"__builtin_ia32_vsm4rnds4512">, 6375 DefaultAttrsIntrinsic<[llvm_v16i32_ty], 6376 [llvm_v16i32_ty, llvm_v16i32_ty], 6377 [IntrNoMem]>; 6378} 6379//===----------------------------------------------------------------------===// 6380// RAO-INT intrinsics 6381let TargetPrefix = "x86" in { 6382 def int_x86_aadd32 6383 : ClangBuiltin<"__builtin_ia32_aadd32">, 6384 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>; 6385 def int_x86_aadd64 6386 : ClangBuiltin<"__builtin_ia32_aadd64">, 6387 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>; 6388 def int_x86_aand32 6389 : ClangBuiltin<"__builtin_ia32_aand32">, 6390 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>; 6391 def int_x86_aand64 6392 : ClangBuiltin<"__builtin_ia32_aand64">, 6393 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>; 6394 def int_x86_aor32 6395 : ClangBuiltin<"__builtin_ia32_aor32">, 6396 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>; 6397 def int_x86_aor64 6398 : ClangBuiltin<"__builtin_ia32_aor64">, 6399 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>; 6400 def int_x86_axor32 6401 : ClangBuiltin<"__builtin_ia32_axor32">, 6402 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>; 6403 def int_x86_axor64 6404 : ClangBuiltin<"__builtin_ia32_axor64">, 6405 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>; 6406} 6407 6408//===----------------------------------------------------------------------===// 6409// UINTR - User Level Interrupt 6410 6411let TargetPrefix = "x86" in { 6412 def int_x86_clui : ClangBuiltin<"__builtin_ia32_clui">, 6413 Intrinsic<[], [], []>; 6414 def int_x86_stui : ClangBuiltin<"__builtin_ia32_stui">, 6415 Intrinsic<[], [], []>; 6416 def int_x86_testui : ClangBuiltin<"__builtin_ia32_testui">, 6417 Intrinsic<[llvm_i8_ty], [], []>; 6418 def int_x86_senduipi : ClangBuiltin<"__builtin_ia32_senduipi">, 6419 Intrinsic<[], [llvm_i64_ty], []>; 6420} 6421 6422let TargetPrefix = "x86" in { 6423def int_x86_urdmsr : ClangBuiltin<"__builtin_ia32_urdmsr">, 6424 Intrinsic<[llvm_i64_ty], [llvm_i64_ty], 6425 [IntrInaccessibleMemOnly]>; 6426def int_x86_uwrmsr : ClangBuiltin<"__builtin_ia32_uwrmsr">, 6427 Intrinsic<[], [llvm_i64_ty, llvm_i64_ty], 6428 [IntrInaccessibleMemOnly]>; 6429} 6430 6431//===----------------------------------------------------------------------===// 6432let TargetPrefix = "x86" in { 6433 def int_x86_avx512fp16_add_ph_512 6434 : ClangBuiltin<"__builtin_ia32_addph512">, 6435 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6436 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 6437 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6438 def int_x86_avx512fp16_sub_ph_512 6439 : ClangBuiltin<"__builtin_ia32_subph512">, 6440 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6441 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 6442 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6443 def int_x86_avx512fp16_mul_ph_512 6444 : ClangBuiltin<"__builtin_ia32_mulph512">, 6445 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6446 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 6447 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6448 def int_x86_avx512fp16_div_ph_512 6449 : ClangBuiltin<"__builtin_ia32_divph512">, 6450 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6451 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 6452 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6453 def int_x86_avx512fp16_max_ph_128 6454 : ClangBuiltin<"__builtin_ia32_maxph128">, 6455 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6456 [ llvm_v8f16_ty, llvm_v8f16_ty ], [ IntrNoMem ]>; 6457 def int_x86_avx512fp16_max_ph_256 6458 : ClangBuiltin<"__builtin_ia32_maxph256">, 6459 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6460 [ llvm_v16f16_ty, llvm_v16f16_ty ], 6461 [ IntrNoMem ]>; 6462 def int_x86_avx512fp16_max_ph_512 6463 : ClangBuiltin<"__builtin_ia32_maxph512">, 6464 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6465 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 6466 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6467 def int_x86_avx512fp16_min_ph_128 6468 : ClangBuiltin<"__builtin_ia32_minph128">, 6469 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6470 [ llvm_v8f16_ty, llvm_v8f16_ty ], [ IntrNoMem ]>; 6471 def int_x86_avx512fp16_min_ph_256 6472 : ClangBuiltin<"__builtin_ia32_minph256">, 6473 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6474 [ llvm_v16f16_ty, llvm_v16f16_ty ], 6475 [ IntrNoMem ]>; 6476 def int_x86_avx512fp16_min_ph_512 6477 : ClangBuiltin<"__builtin_ia32_minph512">, 6478 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6479 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 6480 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6481 6482 def int_x86_avx512fp16_mask_cmp_ph_512 6483 : DefaultAttrsIntrinsic<[ llvm_v32i1_ty ], 6484 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty, 6485 llvm_v32i1_ty, llvm_i32_ty ], 6486 [ IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<4>> ]>; 6487 def int_x86_avx512fp16_mask_cmp_ph_256 6488 : DefaultAttrsIntrinsic<[ llvm_v16i1_ty ], 6489 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty, 6490 llvm_v16i1_ty ], 6491 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6492 def int_x86_avx512fp16_mask_cmp_ph_128 6493 : DefaultAttrsIntrinsic<[ llvm_v8i1_ty ], 6494 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, 6495 llvm_v8i1_ty ], 6496 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6497 6498 def int_x86_avx512fp16_mask_add_sh_round 6499 : ClangBuiltin<"__builtin_ia32_addsh_round_mask">, 6500 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6501 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6502 llvm_i8_ty, llvm_i32_ty ], 6503 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6504 def int_x86_avx512fp16_mask_sub_sh_round 6505 : ClangBuiltin<"__builtin_ia32_subsh_round_mask">, 6506 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6507 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6508 llvm_i8_ty, llvm_i32_ty ], 6509 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6510 def int_x86_avx512fp16_mask_mul_sh_round 6511 : ClangBuiltin<"__builtin_ia32_mulsh_round_mask">, 6512 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6513 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6514 llvm_i8_ty, llvm_i32_ty ], 6515 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6516 def int_x86_avx512fp16_mask_div_sh_round 6517 : ClangBuiltin<"__builtin_ia32_divsh_round_mask">, 6518 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6519 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6520 llvm_i8_ty, llvm_i32_ty ], 6521 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6522 def int_x86_avx512fp16_mask_min_sh_round 6523 : ClangBuiltin<"__builtin_ia32_minsh_round_mask">, 6524 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6525 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6526 llvm_i8_ty, llvm_i32_ty ], 6527 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6528 def int_x86_avx512fp16_mask_max_sh_round 6529 : ClangBuiltin<"__builtin_ia32_maxsh_round_mask">, 6530 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6531 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6532 llvm_i8_ty, llvm_i32_ty ], 6533 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6534 def int_x86_avx512fp16_mask_cmp_sh 6535 : ClangBuiltin<"__builtin_ia32_cmpsh_mask">, 6536 DefaultAttrsIntrinsic<[ llvm_i8_ty ], 6537 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, 6538 llvm_i8_ty, llvm_i32_ty ], 6539 [ IntrNoMem, ImmArg<ArgIndex<2>>, 6540 ImmArg<ArgIndex<4>> ]>; 6541 def int_x86_avx512fp16_vcomi_sh 6542 : ClangBuiltin<"__builtin_ia32_vcomish">, 6543 DefaultAttrsIntrinsic<[ llvm_i32_ty ], 6544 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, 6545 llvm_i32_ty ], 6546 [ IntrNoMem, ImmArg<ArgIndex<2>>, 6547 ImmArg<ArgIndex<3>> ]>; 6548 6549 def int_x86_avx512fp16_mask_vcvtph2psx_128 6550 : ClangBuiltin<"__builtin_ia32_vcvtph2psx128_mask">, 6551 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6552 [ llvm_v8f16_ty, llvm_v4f32_ty, llvm_i8_ty ], 6553 [ IntrNoMem ]>; 6554 def int_x86_avx512fp16_mask_vcvtph2psx_256 6555 : ClangBuiltin<"__builtin_ia32_vcvtph2psx256_mask">, 6556 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 6557 [ llvm_v8f16_ty, llvm_v8f32_ty, llvm_i8_ty ], 6558 [ IntrNoMem ]>; 6559 def int_x86_avx512fp16_mask_vcvtph2psx_512 6560 : ClangBuiltin<"__builtin_ia32_vcvtph2psx512_mask">, 6561 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 6562 [ llvm_v16f16_ty, llvm_v16f32_ty, llvm_i16_ty, 6563 llvm_i32_ty ], 6564 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6565 def int_x86_avx512fp16_mask_vcvtps2phx_128 6566 : ClangBuiltin<"__builtin_ia32_vcvtps2phx128_mask">, 6567 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6568 [ llvm_v4f32_ty, llvm_v8f16_ty, llvm_i8_ty ], 6569 [ IntrNoMem ]>; 6570 def int_x86_avx512fp16_mask_vcvtps2phx_256 6571 : ClangBuiltin<"__builtin_ia32_vcvtps2phx256_mask">, 6572 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6573 [ llvm_v8f32_ty, llvm_v8f16_ty, llvm_i8_ty ], 6574 [ IntrNoMem ]>; 6575 def int_x86_avx512fp16_mask_vcvtps2phx_512 6576 : ClangBuiltin<"__builtin_ia32_vcvtps2phx512_mask">, 6577 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6578 [ llvm_v16f32_ty, llvm_v16f16_ty, llvm_i16_ty, 6579 llvm_i32_ty ], 6580 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6581 def int_x86_avx512fp16_mask_vcvtpd2ph_128 6582 : ClangBuiltin<"__builtin_ia32_vcvtpd2ph128_mask">, 6583 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6584 [ llvm_v2f64_ty, llvm_v8f16_ty, llvm_i8_ty ], 6585 [ IntrNoMem ]>; 6586 def int_x86_avx512fp16_mask_vcvtpd2ph_256 6587 : ClangBuiltin<"__builtin_ia32_vcvtpd2ph256_mask">, 6588 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6589 [ llvm_v4f64_ty, llvm_v8f16_ty, llvm_i8_ty ], 6590 [ IntrNoMem ]>; 6591 def int_x86_avx512fp16_mask_vcvtpd2ph_512 6592 : ClangBuiltin<"__builtin_ia32_vcvtpd2ph512_mask">, 6593 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6594 [ llvm_v8f64_ty, llvm_v8f16_ty, llvm_i8_ty, 6595 llvm_i32_ty ], 6596 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6597 def int_x86_avx512fp16_mask_vcvtph2pd_128 6598 : ClangBuiltin<"__builtin_ia32_vcvtph2pd128_mask">, 6599 DefaultAttrsIntrinsic<[ llvm_v2f64_ty ], 6600 [ llvm_v8f16_ty, llvm_v2f64_ty, llvm_i8_ty ], 6601 [ IntrNoMem ]>; 6602 def int_x86_avx512fp16_mask_vcvtph2pd_256 6603 : ClangBuiltin<"__builtin_ia32_vcvtph2pd256_mask">, 6604 DefaultAttrsIntrinsic<[ llvm_v4f64_ty ], 6605 [ llvm_v8f16_ty, llvm_v4f64_ty, llvm_i8_ty ], 6606 [ IntrNoMem ]>; 6607 def int_x86_avx512fp16_mask_vcvtph2pd_512 6608 : ClangBuiltin<"__builtin_ia32_vcvtph2pd512_mask">, 6609 DefaultAttrsIntrinsic<[ llvm_v8f64_ty ], 6610 [ llvm_v8f16_ty, llvm_v8f64_ty, llvm_i8_ty, 6611 llvm_i32_ty ], 6612 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6613 def int_x86_avx512fp16_mask_vcvtsh2ss_round 6614 : ClangBuiltin<"__builtin_ia32_vcvtsh2ss_round_mask">, 6615 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 6616 [ llvm_v4f32_ty, llvm_v8f16_ty, llvm_v4f32_ty, 6617 llvm_i8_ty, llvm_i32_ty ], 6618 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6619 def int_x86_avx512fp16_mask_vcvtss2sh_round 6620 : ClangBuiltin<"__builtin_ia32_vcvtss2sh_round_mask">, 6621 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6622 [ llvm_v8f16_ty, llvm_v4f32_ty, llvm_v8f16_ty, 6623 llvm_i8_ty, llvm_i32_ty ], 6624 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6625 def int_x86_avx512fp16_mask_vcvtsd2sh_round 6626 : ClangBuiltin<"__builtin_ia32_vcvtsd2sh_round_mask">, 6627 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6628 [ llvm_v8f16_ty, llvm_v2f64_ty, llvm_v8f16_ty, 6629 llvm_i8_ty, llvm_i32_ty ], 6630 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6631 def int_x86_avx512fp16_mask_vcvtsh2sd_round 6632 : ClangBuiltin<"__builtin_ia32_vcvtsh2sd_round_mask">, 6633 DefaultAttrsIntrinsic<[ llvm_v2f64_ty ], 6634 [ llvm_v2f64_ty, llvm_v8f16_ty, llvm_v2f64_ty, 6635 llvm_i8_ty, llvm_i32_ty ], 6636 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6637 6638 def int_x86_avx512fp16_mask_vcvtph2w_128 6639 : ClangBuiltin<"__builtin_ia32_vcvtph2w128_mask">, 6640 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ], 6641 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ], 6642 [ IntrNoMem ]>; 6643 def int_x86_avx512fp16_mask_vcvtph2w_256 6644 : ClangBuiltin<"__builtin_ia32_vcvtph2w256_mask">, 6645 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ], 6646 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ], 6647 [ IntrNoMem ]>; 6648 def int_x86_avx512fp16_mask_vcvtph2w_512 6649 : ClangBuiltin<"__builtin_ia32_vcvtph2w512_mask">, 6650 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ], 6651 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, 6652 llvm_i32_ty ], 6653 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6654 def int_x86_avx512fp16_mask_vcvttph2w_128 6655 : ClangBuiltin<"__builtin_ia32_vcvttph2w128_mask">, 6656 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ], 6657 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ], 6658 [ IntrNoMem ]>; 6659 def int_x86_avx512fp16_mask_vcvttph2w_256 6660 : ClangBuiltin<"__builtin_ia32_vcvttph2w256_mask">, 6661 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ], 6662 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ], 6663 [ IntrNoMem ]>; 6664 def int_x86_avx512fp16_mask_vcvttph2w_512 6665 : ClangBuiltin<"__builtin_ia32_vcvttph2w512_mask">, 6666 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ], 6667 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, 6668 llvm_i32_ty ], 6669 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6670 def int_x86_avx512fp16_mask_vcvtph2uw_128 6671 : ClangBuiltin<"__builtin_ia32_vcvtph2uw128_mask">, 6672 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ], 6673 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ], 6674 [ IntrNoMem ]>; 6675 def int_x86_avx512fp16_mask_vcvtph2uw_256 6676 : ClangBuiltin<"__builtin_ia32_vcvtph2uw256_mask">, 6677 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ], 6678 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ], 6679 [ IntrNoMem ]>; 6680 def int_x86_avx512fp16_mask_vcvtph2uw_512 6681 : ClangBuiltin<"__builtin_ia32_vcvtph2uw512_mask">, 6682 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ], 6683 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, 6684 llvm_i32_ty ], 6685 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6686 def int_x86_avx512fp16_mask_vcvttph2uw_128 6687 : ClangBuiltin<"__builtin_ia32_vcvttph2uw128_mask">, 6688 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ], 6689 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ], 6690 [ IntrNoMem ]>; 6691 def int_x86_avx512fp16_mask_vcvttph2uw_256 6692 : ClangBuiltin<"__builtin_ia32_vcvttph2uw256_mask">, 6693 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ], 6694 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ], 6695 [ IntrNoMem ]>; 6696 def int_x86_avx512fp16_mask_vcvttph2uw_512 6697 : ClangBuiltin<"__builtin_ia32_vcvttph2uw512_mask">, 6698 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ], 6699 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, 6700 llvm_i32_ty ], 6701 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6702 6703 def int_x86_avx512fp16_mask_vcvtph2dq_128 6704 : ClangBuiltin<"__builtin_ia32_vcvtph2dq128_mask">, 6705 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ], 6706 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ], 6707 [ IntrNoMem ]>; 6708 def int_x86_avx512fp16_mask_vcvtph2dq_256 6709 : ClangBuiltin<"__builtin_ia32_vcvtph2dq256_mask">, 6710 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ], 6711 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ], 6712 [ IntrNoMem ]>; 6713 def int_x86_avx512fp16_mask_vcvtph2dq_512 6714 : ClangBuiltin<"__builtin_ia32_vcvtph2dq512_mask">, 6715 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ], 6716 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty, 6717 llvm_i32_ty ], 6718 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6719 def int_x86_avx512fp16_mask_vcvtph2udq_128 6720 : ClangBuiltin<"__builtin_ia32_vcvtph2udq128_mask">, 6721 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ], 6722 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ], 6723 [ IntrNoMem ]>; 6724 def int_x86_avx512fp16_mask_vcvtph2udq_256 6725 : ClangBuiltin<"__builtin_ia32_vcvtph2udq256_mask">, 6726 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ], 6727 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ], 6728 [ IntrNoMem ]>; 6729 def int_x86_avx512fp16_mask_vcvtph2udq_512 6730 : ClangBuiltin<"__builtin_ia32_vcvtph2udq512_mask">, 6731 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ], 6732 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty, 6733 llvm_i32_ty ], 6734 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6735 def int_x86_avx512fp16_mask_vcvtdq2ph_128 6736 : ClangBuiltin<"__builtin_ia32_vcvtdq2ph128_mask">, 6737 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6738 [ llvm_v4i32_ty, llvm_v8f16_ty, llvm_i8_ty ], 6739 [ IntrNoMem ]>; 6740 def int_x86_avx512fp16_mask_vcvtudq2ph_128 6741 : ClangBuiltin<"__builtin_ia32_vcvtudq2ph128_mask">, 6742 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6743 [ llvm_v4i32_ty, llvm_v8f16_ty, llvm_i8_ty ], 6744 [ IntrNoMem ]>; 6745 def int_x86_avx512fp16_mask_vcvttph2dq_128 6746 : ClangBuiltin<"__builtin_ia32_vcvttph2dq128_mask">, 6747 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ], 6748 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ], 6749 [ IntrNoMem ]>; 6750 def int_x86_avx512fp16_mask_vcvttph2dq_256 6751 : ClangBuiltin<"__builtin_ia32_vcvttph2dq256_mask">, 6752 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ], 6753 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ], 6754 [ IntrNoMem ]>; 6755 def int_x86_avx512fp16_mask_vcvttph2dq_512 6756 : ClangBuiltin<"__builtin_ia32_vcvttph2dq512_mask">, 6757 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ], 6758 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty, 6759 llvm_i32_ty ], 6760 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6761 def int_x86_avx512fp16_mask_vcvttph2udq_128 6762 : ClangBuiltin<"__builtin_ia32_vcvttph2udq128_mask">, 6763 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ], 6764 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ], 6765 [ IntrNoMem ]>; 6766 def int_x86_avx512fp16_mask_vcvttph2udq_256 6767 : ClangBuiltin<"__builtin_ia32_vcvttph2udq256_mask">, 6768 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ], 6769 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ], 6770 [ IntrNoMem ]>; 6771 def int_x86_avx512fp16_mask_vcvttph2udq_512 6772 : ClangBuiltin<"__builtin_ia32_vcvttph2udq512_mask">, 6773 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ], 6774 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty, 6775 llvm_i32_ty ], 6776 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6777 6778 def int_x86_avx512fp16_mask_vcvtqq2ph_128 6779 : ClangBuiltin<"__builtin_ia32_vcvtqq2ph128_mask">, 6780 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6781 [ llvm_v2i64_ty, llvm_v8f16_ty, llvm_i8_ty ], 6782 [ IntrNoMem ]>; 6783 def int_x86_avx512fp16_mask_vcvtqq2ph_256 6784 : ClangBuiltin<"__builtin_ia32_vcvtqq2ph256_mask">, 6785 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6786 [ llvm_v4i64_ty, llvm_v8f16_ty, llvm_i8_ty ], 6787 [ IntrNoMem ]>; 6788 def int_x86_avx512fp16_mask_vcvtph2qq_128 6789 : ClangBuiltin<"__builtin_ia32_vcvtph2qq128_mask">, 6790 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ], 6791 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ], 6792 [ IntrNoMem ]>; 6793 def int_x86_avx512fp16_mask_vcvtph2qq_256 6794 : ClangBuiltin<"__builtin_ia32_vcvtph2qq256_mask">, 6795 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ], 6796 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ], 6797 [ IntrNoMem ]>; 6798 def int_x86_avx512fp16_mask_vcvtph2qq_512 6799 : ClangBuiltin<"__builtin_ia32_vcvtph2qq512_mask">, 6800 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ], 6801 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty, 6802 llvm_i32_ty ], 6803 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6804 def int_x86_avx512fp16_mask_vcvtuqq2ph_128 6805 : ClangBuiltin<"__builtin_ia32_vcvtuqq2ph128_mask">, 6806 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6807 [ llvm_v2i64_ty, llvm_v8f16_ty, llvm_i8_ty ], 6808 [ IntrNoMem ]>; 6809 def int_x86_avx512fp16_mask_vcvtuqq2ph_256 6810 : ClangBuiltin<"__builtin_ia32_vcvtuqq2ph256_mask">, 6811 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6812 [ llvm_v4i64_ty, llvm_v8f16_ty, llvm_i8_ty ], 6813 [ IntrNoMem ]>; 6814 def int_x86_avx512fp16_mask_vcvtph2uqq_128 6815 : ClangBuiltin<"__builtin_ia32_vcvtph2uqq128_mask">, 6816 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ], 6817 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ], 6818 [ IntrNoMem ]>; 6819 def int_x86_avx512fp16_mask_vcvtph2uqq_256 6820 : ClangBuiltin<"__builtin_ia32_vcvtph2uqq256_mask">, 6821 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ], 6822 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ], 6823 [ IntrNoMem ]>; 6824 def int_x86_avx512fp16_mask_vcvtph2uqq_512 6825 : ClangBuiltin<"__builtin_ia32_vcvtph2uqq512_mask">, 6826 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ], 6827 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty, 6828 llvm_i32_ty ], 6829 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6830 def int_x86_avx512fp16_mask_vcvttph2qq_128 6831 : ClangBuiltin<"__builtin_ia32_vcvttph2qq128_mask">, 6832 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ], 6833 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ], 6834 [ IntrNoMem ]>; 6835 def int_x86_avx512fp16_mask_vcvttph2qq_256 6836 : ClangBuiltin<"__builtin_ia32_vcvttph2qq256_mask">, 6837 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ], 6838 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ], 6839 [ IntrNoMem ]>; 6840 def int_x86_avx512fp16_mask_vcvttph2qq_512 6841 : ClangBuiltin<"__builtin_ia32_vcvttph2qq512_mask">, 6842 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ], 6843 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty, 6844 llvm_i32_ty ], 6845 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6846 def int_x86_avx512fp16_mask_vcvttph2uqq_128 6847 : ClangBuiltin<"__builtin_ia32_vcvttph2uqq128_mask">, 6848 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ], 6849 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ], 6850 [ IntrNoMem ]>; 6851 def int_x86_avx512fp16_mask_vcvttph2uqq_256 6852 : ClangBuiltin<"__builtin_ia32_vcvttph2uqq256_mask">, 6853 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ], 6854 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ], 6855 [ IntrNoMem ]>; 6856 def int_x86_avx512fp16_mask_vcvttph2uqq_512 6857 : ClangBuiltin<"__builtin_ia32_vcvttph2uqq512_mask">, 6858 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ], 6859 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty, 6860 llvm_i32_ty ], 6861 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 6862 6863 def int_x86_avx512fp16_vcvtsh2si32 6864 : ClangBuiltin<"__builtin_ia32_vcvtsh2si32">, 6865 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6866 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6867 def int_x86_avx512fp16_vcvtsh2usi32 6868 : ClangBuiltin<"__builtin_ia32_vcvtsh2usi32">, 6869 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6870 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6871 def int_x86_avx512fp16_vcvtsh2si64 6872 : ClangBuiltin<"__builtin_ia32_vcvtsh2si64">, 6873 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6874 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6875 def int_x86_avx512fp16_vcvtsh2usi64 6876 : ClangBuiltin<"__builtin_ia32_vcvtsh2usi64">, 6877 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6878 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6879 def int_x86_avx512fp16_vcvtusi2sh 6880 : ClangBuiltin<"__builtin_ia32_vcvtusi2sh">, 6881 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6882 [ llvm_v8f16_ty, llvm_i32_ty, llvm_i32_ty ], 6883 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6884 def int_x86_avx512fp16_vcvtusi642sh 6885 : ClangBuiltin<"__builtin_ia32_vcvtusi642sh">, 6886 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6887 [ llvm_v8f16_ty, llvm_i64_ty, llvm_i32_ty ], 6888 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6889 def int_x86_avx512fp16_vcvtsi2sh 6890 : ClangBuiltin<"__builtin_ia32_vcvtsi2sh">, 6891 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6892 [ llvm_v8f16_ty, llvm_i32_ty, llvm_i32_ty ], 6893 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6894 def int_x86_avx512fp16_vcvtsi642sh 6895 : ClangBuiltin<"__builtin_ia32_vcvtsi642sh">, 6896 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6897 [ llvm_v8f16_ty, llvm_i64_ty, llvm_i32_ty ], 6898 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>; 6899 def int_x86_avx512fp16_vcvttsh2si32 6900 : ClangBuiltin<"__builtin_ia32_vcvttsh2si32">, 6901 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6902 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6903 def int_x86_avx512fp16_vcvttsh2si64 6904 : ClangBuiltin<"__builtin_ia32_vcvttsh2si64">, 6905 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6906 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6907 def int_x86_avx512fp16_vcvttsh2usi32 6908 : ClangBuiltin<"__builtin_ia32_vcvttsh2usi32">, 6909 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6910 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6911 def int_x86_avx512fp16_vcvttsh2usi64 6912 : ClangBuiltin<"__builtin_ia32_vcvttsh2usi64">, 6913 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6914 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6915 6916 def int_x86_avx512fp16_sqrt_ph_512 6917 : DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6918 [ llvm_v32f16_ty, llvm_i32_ty ], 6919 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6920 def int_x86_avx512fp16_mask_sqrt_sh 6921 : DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6922 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6923 llvm_i8_ty, llvm_i32_ty ], 6924 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 6925 def int_x86_avx512fp16_mask_rsqrt_ph_128 6926 : ClangBuiltin<"__builtin_ia32_rsqrtph128_mask">, 6927 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6928 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i8_ty ], 6929 [ IntrNoMem ]>; 6930 def int_x86_avx512fp16_mask_rsqrt_ph_256 6931 : ClangBuiltin<"__builtin_ia32_rsqrtph256_mask">, 6932 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6933 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty ], 6934 [ IntrNoMem ]>; 6935 def int_x86_avx512fp16_mask_rsqrt_ph_512 6936 : ClangBuiltin<"__builtin_ia32_rsqrtph512_mask">, 6937 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6938 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 6939 [ IntrNoMem ]>; 6940 def int_x86_avx512fp16_mask_rsqrt_sh 6941 : ClangBuiltin<"__builtin_ia32_rsqrtsh_mask">, 6942 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6943 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6944 llvm_i8_ty ], 6945 [ IntrNoMem ]>; 6946 def int_x86_avx512fp16_mask_rcp_ph_128 6947 : ClangBuiltin<"__builtin_ia32_rcpph128_mask">, 6948 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6949 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i8_ty ], 6950 [ IntrNoMem ]>; 6951 def int_x86_avx512fp16_mask_rcp_ph_256 6952 : ClangBuiltin<"__builtin_ia32_rcpph256_mask">, 6953 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6954 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty ], 6955 [ IntrNoMem ]>; 6956 def int_x86_avx512fp16_mask_rcp_ph_512 6957 : ClangBuiltin<"__builtin_ia32_rcpph512_mask">, 6958 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6959 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ], 6960 [ IntrNoMem ]>; 6961 def int_x86_avx512fp16_mask_rcp_sh 6962 : ClangBuiltin<"__builtin_ia32_rcpsh_mask">, 6963 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6964 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6965 llvm_i8_ty ], 6966 [ IntrNoMem ]>; 6967 def int_x86_avx512fp16_mask_reduce_ph_128 6968 : ClangBuiltin<"__builtin_ia32_reduceph128_mask">, 6969 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6970 [ llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty, 6971 llvm_i8_ty ], 6972 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6973 def int_x86_avx512fp16_mask_reduce_ph_256 6974 : ClangBuiltin<"__builtin_ia32_reduceph256_mask">, 6975 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 6976 [ llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, 6977 llvm_i16_ty ], 6978 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6979 def int_x86_avx512fp16_mask_reduce_ph_512 6980 : ClangBuiltin<"__builtin_ia32_reduceph512_mask">, 6981 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 6982 [ llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty, 6983 llvm_i32_ty, llvm_i32_ty ], 6984 [ IntrNoMem, ImmArg<ArgIndex<1>>, 6985 ImmArg<ArgIndex<4>> ]>; 6986 def int_x86_avx512fp16_mask_reduce_sh 6987 : ClangBuiltin<"__builtin_ia32_reducesh_mask">, 6988 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 6989 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 6990 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty ], 6991 [ IntrNoMem, ImmArg<ArgIndex<4>>, 6992 ImmArg<ArgIndex<5>> ]>; 6993 def int_x86_avx512fp16_fpclass_ph_128 6994 : DefaultAttrsIntrinsic<[ llvm_v8i1_ty ], [ llvm_v8f16_ty, llvm_i32_ty ], 6995 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 6996 def int_x86_avx512fp16_fpclass_ph_256 6997 : DefaultAttrsIntrinsic<[ llvm_v16i1_ty ], 6998 [ llvm_v16f16_ty, llvm_i32_ty ], 6999 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 7000 def int_x86_avx512fp16_fpclass_ph_512 7001 : DefaultAttrsIntrinsic<[ llvm_v32i1_ty ], 7002 [ llvm_v32f16_ty, llvm_i32_ty ], 7003 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 7004 def int_x86_avx512fp16_mask_fpclass_sh 7005 : ClangBuiltin<"__builtin_ia32_fpclasssh_mask">, 7006 DefaultAttrsIntrinsic<[ llvm_i8_ty ], 7007 [ llvm_v8f16_ty, llvm_i32_ty, llvm_i8_ty ], 7008 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 7009 def int_x86_avx512fp16_mask_getexp_ph_128 7010 : ClangBuiltin<"__builtin_ia32_getexpph128_mask">, 7011 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 7012 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i8_ty ], 7013 [ IntrNoMem ]>; 7014 def int_x86_avx512fp16_mask_getexp_ph_256 7015 : ClangBuiltin<"__builtin_ia32_getexpph256_mask">, 7016 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 7017 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty ], 7018 [ IntrNoMem ]>; 7019 def int_x86_avx512fp16_mask_getexp_ph_512 7020 : ClangBuiltin<"__builtin_ia32_getexpph512_mask">, 7021 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 7022 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty, 7023 llvm_i32_ty ], 7024 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 7025 def int_x86_avx512fp16_mask_getexp_sh 7026 : ClangBuiltin<"__builtin_ia32_getexpsh128_round_mask">, 7027 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 7028 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 7029 llvm_i8_ty, llvm_i32_ty ], 7030 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7031 def int_x86_avx512fp16_mask_getmant_ph_128 7032 : ClangBuiltin<"__builtin_ia32_getmantph128_mask">, 7033 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 7034 [ llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty, 7035 llvm_i8_ty ], 7036 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 7037 def int_x86_avx512fp16_mask_getmant_ph_256 7038 : ClangBuiltin<"__builtin_ia32_getmantph256_mask">, 7039 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 7040 [ llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, 7041 llvm_i16_ty ], 7042 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 7043 def int_x86_avx512fp16_mask_getmant_ph_512 7044 : ClangBuiltin<"__builtin_ia32_getmantph512_mask">, 7045 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 7046 [ llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty, 7047 llvm_i32_ty, llvm_i32_ty ], 7048 [ IntrNoMem, ImmArg<ArgIndex<1>>, 7049 ImmArg<ArgIndex<4>> ]>; 7050 def int_x86_avx512fp16_mask_getmant_sh 7051 : ClangBuiltin<"__builtin_ia32_getmantsh_round_mask">, 7052 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 7053 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, 7054 llvm_v8f16_ty, llvm_i8_ty, llvm_i32_ty ], 7055 [ IntrNoMem, ImmArg<ArgIndex<2>>, 7056 ImmArg<ArgIndex<5>> ]>; 7057 def int_x86_avx512fp16_mask_rndscale_ph_128 7058 : ClangBuiltin<"__builtin_ia32_rndscaleph_128_mask">, 7059 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 7060 [ llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty, 7061 llvm_i8_ty ], 7062 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 7063 def int_x86_avx512fp16_mask_rndscale_ph_256 7064 : ClangBuiltin<"__builtin_ia32_rndscaleph_256_mask">, 7065 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 7066 [ llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, 7067 llvm_i16_ty ], 7068 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>; 7069 def int_x86_avx512fp16_mask_rndscale_ph_512 7070 : ClangBuiltin<"__builtin_ia32_rndscaleph_mask">, 7071 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 7072 [ llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty, 7073 llvm_i32_ty, llvm_i32_ty ], 7074 [ IntrNoMem, ImmArg<ArgIndex<1>>, 7075 ImmArg<ArgIndex<4>> ]>; 7076 def int_x86_avx512fp16_mask_rndscale_sh 7077 : ClangBuiltin<"__builtin_ia32_rndscalesh_round_mask">, 7078 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 7079 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 7080 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty ], 7081 [ IntrNoMem, ImmArg<ArgIndex<4>>, 7082 ImmArg<ArgIndex<5>> ]>; 7083 def int_x86_avx512fp16_mask_scalef_ph_128 7084 : ClangBuiltin<"__builtin_ia32_scalefph128_mask">, 7085 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 7086 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 7087 llvm_i8_ty ], 7088 [ IntrNoMem ]>; 7089 def int_x86_avx512fp16_mask_scalef_ph_256 7090 : ClangBuiltin<"__builtin_ia32_scalefph256_mask">, 7091 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 7092 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_v16f16_ty, 7093 llvm_i16_ty ], 7094 [ IntrNoMem ]>; 7095 def int_x86_avx512fp16_mask_scalef_ph_512 7096 : ClangBuiltin<"__builtin_ia32_scalefph512_mask">, 7097 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 7098 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_v32f16_ty, 7099 llvm_i32_ty, llvm_i32_ty ], 7100 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7101 def int_x86_avx512fp16_mask_scalef_sh 7102 : ClangBuiltin<"__builtin_ia32_scalefsh_round_mask">, 7103 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 7104 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty, 7105 llvm_i8_ty, llvm_i32_ty ], 7106 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7107 7108 def int_x86_avx512fp16_vfmadd_ph_512 7109 : DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 7110 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_v32f16_ty, 7111 llvm_i32_ty ], 7112 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 7113 def int_x86_avx512fp16_vfmaddsub_ph_128 7114 : ClangBuiltin<"__builtin_ia32_vfmaddsubph">, 7115 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ], 7116 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty ], 7117 [ IntrNoMem ]>; 7118 def int_x86_avx512fp16_vfmaddsub_ph_256 7119 : ClangBuiltin<"__builtin_ia32_vfmaddsubph256">, 7120 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ], 7121 [ llvm_v16f16_ty, llvm_v16f16_ty, 7122 llvm_v16f16_ty ], 7123 [ IntrNoMem ]>; 7124 def int_x86_avx512fp16_vfmaddsub_ph_512 7125 : DefaultAttrsIntrinsic<[ llvm_v32f16_ty ], 7126 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_v32f16_ty, 7127 llvm_i32_ty ], 7128 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 7129 def int_x86_avx512fp16_vfmadd_f16 7130 : DefaultAttrsIntrinsic<[ llvm_half_ty ], 7131 [ llvm_half_ty, llvm_half_ty, llvm_half_ty, 7132 llvm_i32_ty ], 7133 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>; 7134 7135 def int_x86_avx512fp16_mask_vfcmadd_cph_128 7136 : ClangBuiltin<"__builtin_ia32_vfcmaddcph128_mask">, 7137 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7138 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7139 llvm_i8_ty ], 7140 [ IntrNoMem ]>; 7141 def int_x86_avx512fp16_maskz_vfcmadd_cph_128 7142 : ClangBuiltin<"__builtin_ia32_vfcmaddcph128_maskz">, 7143 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7144 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7145 llvm_i8_ty ], 7146 [ IntrNoMem ]>; 7147 def int_x86_avx512fp16_mask_vfcmadd_cph_256 7148 : ClangBuiltin<"__builtin_ia32_vfcmaddcph256_mask">, 7149 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 7150 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 7151 llvm_i8_ty ], 7152 [ IntrNoMem ]>; 7153 def int_x86_avx512fp16_maskz_vfcmadd_cph_256 7154 : ClangBuiltin<"__builtin_ia32_vfcmaddcph256_maskz">, 7155 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 7156 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 7157 llvm_i8_ty ], 7158 [ IntrNoMem ]>; 7159 def int_x86_avx512fp16_mask_vfcmadd_cph_512 7160 : ClangBuiltin<"__builtin_ia32_vfcmaddcph512_mask3">, 7161 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 7162 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 7163 llvm_i16_ty, llvm_i32_ty ], 7164 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7165 def int_x86_avx512fp16_maskz_vfcmadd_cph_512 7166 : ClangBuiltin<"__builtin_ia32_vfcmaddcph512_maskz">, 7167 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 7168 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 7169 llvm_i16_ty, llvm_i32_ty ], 7170 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7171 def int_x86_avx512fp16_mask_vfmadd_cph_128 7172 : ClangBuiltin<"__builtin_ia32_vfmaddcph128_mask">, 7173 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7174 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7175 llvm_i8_ty ], 7176 [ IntrNoMem ]>; 7177 def int_x86_avx512fp16_maskz_vfmadd_cph_128 7178 : ClangBuiltin<"__builtin_ia32_vfmaddcph128_maskz">, 7179 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7180 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7181 llvm_i8_ty ], 7182 [ IntrNoMem ]>; 7183 def int_x86_avx512fp16_mask_vfmadd_cph_256 7184 : ClangBuiltin<"__builtin_ia32_vfmaddcph256_mask">, 7185 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 7186 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 7187 llvm_i8_ty ], 7188 [ IntrNoMem ]>; 7189 def int_x86_avx512fp16_maskz_vfmadd_cph_256 7190 : ClangBuiltin<"__builtin_ia32_vfmaddcph256_maskz">, 7191 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 7192 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 7193 llvm_i8_ty ], 7194 [ IntrNoMem ]>; 7195 def int_x86_avx512fp16_mask_vfmadd_cph_512 7196 : ClangBuiltin<"__builtin_ia32_vfmaddcph512_mask3">, 7197 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 7198 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 7199 llvm_i16_ty, llvm_i32_ty ], 7200 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7201 def int_x86_avx512fp16_maskz_vfmadd_cph_512 7202 : ClangBuiltin<"__builtin_ia32_vfmaddcph512_maskz">, 7203 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 7204 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 7205 llvm_i16_ty, llvm_i32_ty ], 7206 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7207 def int_x86_avx512fp16_mask_vfmadd_csh 7208 : ClangBuiltin<"__builtin_ia32_vfmaddcsh_mask">, 7209 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7210 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7211 llvm_i8_ty, llvm_i32_ty ], 7212 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7213 def int_x86_avx512fp16_maskz_vfmadd_csh 7214 : ClangBuiltin<"__builtin_ia32_vfmaddcsh_maskz">, 7215 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7216 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7217 llvm_i8_ty, llvm_i32_ty ], 7218 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7219 def int_x86_avx512fp16_mask_vfcmadd_csh 7220 : ClangBuiltin<"__builtin_ia32_vfcmaddcsh_mask">, 7221 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7222 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7223 llvm_i8_ty, llvm_i32_ty ], 7224 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7225 def int_x86_avx512fp16_maskz_vfcmadd_csh 7226 : ClangBuiltin<"__builtin_ia32_vfcmaddcsh_maskz">, 7227 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7228 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7229 llvm_i8_ty, llvm_i32_ty ], 7230 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7231 def int_x86_avx512fp16_mask_vfmul_cph_128 7232 : ClangBuiltin<"__builtin_ia32_vfmulcph128_mask">, 7233 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7234 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7235 llvm_i8_ty ], 7236 [ IntrNoMem ]>; 7237 def int_x86_avx512fp16_mask_vfcmul_cph_128 7238 : ClangBuiltin<"__builtin_ia32_vfcmulcph128_mask">, 7239 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7240 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7241 llvm_i8_ty ], 7242 [ IntrNoMem ]>; 7243 def int_x86_avx512fp16_mask_vfmul_cph_256 7244 : ClangBuiltin<"__builtin_ia32_vfmulcph256_mask">, 7245 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 7246 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 7247 llvm_i8_ty ], 7248 [ IntrNoMem ]>; 7249 def int_x86_avx512fp16_mask_vfcmul_cph_256 7250 : ClangBuiltin<"__builtin_ia32_vfcmulcph256_mask">, 7251 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ], 7252 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, 7253 llvm_i8_ty ], 7254 [ IntrNoMem ]>; 7255 def int_x86_avx512fp16_mask_vfmul_cph_512 7256 : ClangBuiltin<"__builtin_ia32_vfmulcph512_mask">, 7257 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 7258 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 7259 llvm_i16_ty, llvm_i32_ty ], 7260 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7261 def int_x86_avx512fp16_mask_vfcmul_cph_512 7262 : ClangBuiltin<"__builtin_ia32_vfcmulcph512_mask">, 7263 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ], 7264 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, 7265 llvm_i16_ty, llvm_i32_ty ], 7266 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7267 def int_x86_avx512fp16_mask_vfmul_csh 7268 : ClangBuiltin<"__builtin_ia32_vfmulcsh_mask">, 7269 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7270 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7271 llvm_i8_ty, llvm_i32_ty ], 7272 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7273 def int_x86_avx512fp16_mask_vfcmul_csh 7274 : ClangBuiltin<"__builtin_ia32_vfcmulcsh_mask">, 7275 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ], 7276 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 7277 llvm_i8_ty, llvm_i32_ty ], 7278 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>; 7279} 7280 7281let TargetPrefix = "x86" in { 7282def int_x86_avx10_vminmaxbf16128 : ClangBuiltin<"__builtin_ia32_vminmaxbf16128">, 7283 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_i32_ty], 7284 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7285def int_x86_avx10_vminmaxbf16256 : ClangBuiltin<"__builtin_ia32_vminmaxbf16256">, 7286 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_i32_ty], 7287 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7288def int_x86_avx10_vminmaxbf16512 : ClangBuiltin<"__builtin_ia32_vminmaxbf16512">, 7289 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_i32_ty], 7290 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7291def int_x86_avx10_vminmaxpd128 : ClangBuiltin<"__builtin_ia32_vminmaxpd128">, 7292 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty], 7293 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7294def int_x86_avx10_mask_vminmaxpd128 : ClangBuiltin<"__builtin_ia32_vminmaxpd128_mask">, 7295 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, llvm_i8_ty], 7296 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7297def int_x86_avx10_vminmaxpd256 : ClangBuiltin<"__builtin_ia32_vminmaxpd256">, 7298 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty], 7299 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7300def int_x86_avx10_mask_vminmaxpd256_round : ClangBuiltin<"__builtin_ia32_vminmaxpd256_round_mask">, 7301 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty], 7302 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 7303def int_x86_avx10_mask_vminmaxpd_round : ClangBuiltin<"__builtin_ia32_vminmaxpd512_round_mask">, 7304 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], 7305 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 7306def int_x86_avx10_vminmaxph128 : ClangBuiltin<"__builtin_ia32_vminmaxph128">, 7307 DefaultAttrsIntrinsic<[llvm_v8f16_ty], [llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty], 7308 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7309def int_x86_avx10_mask_vminmaxph128 : ClangBuiltin<"__builtin_ia32_vminmaxph128_mask">, 7310 DefaultAttrsIntrinsic<[llvm_v8f16_ty], [llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty, llvm_i8_ty], 7311 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7312def int_x86_avx10_vminmaxph256 : ClangBuiltin<"__builtin_ia32_vminmaxph256">, 7313 DefaultAttrsIntrinsic<[llvm_v16f16_ty], [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty], 7314 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7315def int_x86_avx10_mask_vminmaxph256_round : ClangBuiltin<"__builtin_ia32_vminmaxph256_round_mask">, 7316 DefaultAttrsIntrinsic<[llvm_v16f16_ty], [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty], 7317 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7318def int_x86_avx10_mask_vminmaxph_round : ClangBuiltin<"__builtin_ia32_vminmaxph512_round_mask">, 7319 DefaultAttrsIntrinsic<[llvm_v32f16_ty], [llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty, llvm_i32_ty, llvm_i32_ty], 7320 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 7321def int_x86_avx10_vminmaxps128 : ClangBuiltin<"__builtin_ia32_vminmaxps128">, 7322 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty], 7323 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7324def int_x86_avx10_mask_vminmaxps128 : ClangBuiltin<"__builtin_ia32_vminmaxps128_mask">, 7325 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, llvm_i8_ty], 7326 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7327def int_x86_avx10_vminmaxps256 : ClangBuiltin<"__builtin_ia32_vminmaxps256">, 7328 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty], 7329 [IntrNoMem, ImmArg<ArgIndex<2>>]>; 7330def int_x86_avx10_mask_vminmaxps256_round : ClangBuiltin<"__builtin_ia32_vminmaxps256_round_mask">, 7331 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 7332 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 7333def int_x86_avx10_mask_vminmaxps_round : ClangBuiltin<"__builtin_ia32_vminmaxps512_round_mask">, 7334 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], 7335 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 7336def int_x86_avx10_mask_vminmaxsd_round : ClangBuiltin<"__builtin_ia32_vminmaxsd_round_mask">, 7337 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], 7338 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 7339def int_x86_avx10_mask_vminmaxsh_round : ClangBuiltin<"__builtin_ia32_vminmaxsh_round_mask">, 7340 DefaultAttrsIntrinsic<[llvm_v8f16_ty], [llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty, llvm_i8_ty, llvm_i32_ty], 7341 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 7342def int_x86_avx10_mask_vminmaxss_round : ClangBuiltin<"__builtin_ia32_vminmaxss_round_mask">, 7343 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], 7344 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>; 7345} 7346 7347//===----------------------------------------------------------------------===// 7348let TargetPrefix = "x86" in { 7349def int_x86_avx10_vcvtbf162ibs128 : ClangBuiltin<"__builtin_ia32_vcvtbf162ibs128">, 7350 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8bf16_ty], 7351 [IntrNoMem]>; 7352def int_x86_avx10_vcvtbf162ibs256 : ClangBuiltin<"__builtin_ia32_vcvtbf162ibs256">, 7353 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16bf16_ty], 7354 [IntrNoMem]>; 7355def int_x86_avx10_vcvtbf162ibs512 : ClangBuiltin<"__builtin_ia32_vcvtbf162ibs512">, 7356 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32bf16_ty], 7357 [IntrNoMem]>; 7358def int_x86_avx10_vcvtbf162iubs128 : ClangBuiltin<"__builtin_ia32_vcvtbf162iubs128">, 7359 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8bf16_ty], 7360 [IntrNoMem]>; 7361def int_x86_avx10_vcvtbf162iubs256 : ClangBuiltin<"__builtin_ia32_vcvtbf162iubs256">, 7362 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16bf16_ty], 7363 [IntrNoMem]>; 7364def int_x86_avx10_vcvtbf162iubs512 : ClangBuiltin<"__builtin_ia32_vcvtbf162iubs512">, 7365 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32bf16_ty], 7366 [IntrNoMem]>; 7367def int_x86_avx10_mask_vcvtph2ibs128 : ClangBuiltin<"__builtin_ia32_vcvtph2ibs128_mask">, 7368 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty], 7369 [IntrNoMem]>; 7370def int_x86_avx10_mask_vcvtph2ibs256 : ClangBuiltin<"__builtin_ia32_vcvtph2ibs256_mask">, 7371 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty], 7372 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7373def int_x86_avx10_mask_vcvtph2ibs512 : ClangBuiltin<"__builtin_ia32_vcvtph2ibs512_mask">, 7374 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, llvm_i32_ty], 7375 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7376def int_x86_avx10_mask_vcvtph2iubs128 : ClangBuiltin<"__builtin_ia32_vcvtph2iubs128_mask">, 7377 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty], 7378 [IntrNoMem]>; 7379def int_x86_avx10_mask_vcvtph2iubs256 : ClangBuiltin<"__builtin_ia32_vcvtph2iubs256_mask">, 7380 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty], 7381 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7382def int_x86_avx10_mask_vcvtph2iubs512 : ClangBuiltin<"__builtin_ia32_vcvtph2iubs512_mask">, 7383 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, llvm_i32_ty], 7384 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7385def int_x86_avx10_mask_vcvtps2ibs128 : ClangBuiltin<"__builtin_ia32_vcvtps2ibs128_mask">, 7386 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 7387 [IntrNoMem]>; 7388def int_x86_avx10_mask_vcvtps2ibs256 : ClangBuiltin<"__builtin_ia32_vcvtps2ibs256_mask">, 7389 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 7390 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7391def int_x86_avx10_mask_vcvtps2ibs512 : ClangBuiltin<"__builtin_ia32_vcvtps2ibs512_mask">, 7392 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 7393 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7394def int_x86_avx10_mask_vcvtps2iubs128 : ClangBuiltin<"__builtin_ia32_vcvtps2iubs128_mask">, 7395 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 7396 [IntrNoMem]>; 7397def int_x86_avx10_mask_vcvtps2iubs256 : ClangBuiltin<"__builtin_ia32_vcvtps2iubs256_mask">, 7398 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 7399 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7400def int_x86_avx10_mask_vcvtps2iubs512 : ClangBuiltin<"__builtin_ia32_vcvtps2iubs512_mask">, 7401 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 7402 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7403def int_x86_avx10_vcvttbf162ibs128 : ClangBuiltin<"__builtin_ia32_vcvttbf162ibs128">, 7404 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8bf16_ty], 7405 [IntrNoMem]>; 7406def int_x86_avx10_vcvttbf162ibs256 : ClangBuiltin<"__builtin_ia32_vcvttbf162ibs256">, 7407 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16bf16_ty], 7408 [IntrNoMem]>; 7409def int_x86_avx10_vcvttbf162ibs512 : ClangBuiltin<"__builtin_ia32_vcvttbf162ibs512">, 7410 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32bf16_ty], 7411 [IntrNoMem]>; 7412def int_x86_avx10_vcvttbf162iubs128 : ClangBuiltin<"__builtin_ia32_vcvttbf162iubs128">, 7413 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8bf16_ty], 7414 [IntrNoMem]>; 7415def int_x86_avx10_vcvttbf162iubs256 : ClangBuiltin<"__builtin_ia32_vcvttbf162iubs256">, 7416 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16bf16_ty], 7417 [IntrNoMem]>; 7418def int_x86_avx10_vcvttbf162iubs512 : ClangBuiltin<"__builtin_ia32_vcvttbf162iubs512">, 7419 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32bf16_ty], 7420 [IntrNoMem]>; 7421def int_x86_avx10_mask_vcvttph2ibs128 : ClangBuiltin<"__builtin_ia32_vcvttph2ibs128_mask">, 7422 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty], 7423 [IntrNoMem]>; 7424def int_x86_avx10_mask_vcvttph2ibs256 : ClangBuiltin<"__builtin_ia32_vcvttph2ibs256_mask">, 7425 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty], 7426 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7427def int_x86_avx10_mask_vcvttph2ibs512 : ClangBuiltin<"__builtin_ia32_vcvttph2ibs512_mask">, 7428 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, llvm_i32_ty], 7429 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7430def int_x86_avx10_mask_vcvttph2iubs128 : ClangBuiltin<"__builtin_ia32_vcvttph2iubs128_mask">, 7431 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty], 7432 [IntrNoMem]>; 7433def int_x86_avx10_mask_vcvttph2iubs256 : ClangBuiltin<"__builtin_ia32_vcvttph2iubs256_mask">, 7434 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty], 7435 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7436def int_x86_avx10_mask_vcvttph2iubs512 : ClangBuiltin<"__builtin_ia32_vcvttph2iubs512_mask">, 7437 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, llvm_i32_ty], 7438 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7439def int_x86_avx10_mask_vcvttps2ibs128 : ClangBuiltin<"__builtin_ia32_vcvttps2ibs128_mask">, 7440 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 7441 [IntrNoMem]>; 7442def int_x86_avx10_mask_vcvttps2ibs256 : ClangBuiltin<"__builtin_ia32_vcvttps2ibs256_mask">, 7443 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 7444 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7445def int_x86_avx10_mask_vcvttps2ibs512 : ClangBuiltin<"__builtin_ia32_vcvttps2ibs512_mask">, 7446 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 7447 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7448def int_x86_avx10_mask_vcvttps2iubs128 : ClangBuiltin<"__builtin_ia32_vcvttps2iubs128_mask">, 7449 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 7450 [IntrNoMem]>; 7451def int_x86_avx10_mask_vcvttps2iubs256 : ClangBuiltin<"__builtin_ia32_vcvttps2iubs256_mask">, 7452 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 7453 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7454def int_x86_avx10_mask_vcvttps2iubs512 : ClangBuiltin<"__builtin_ia32_vcvttps2iubs512_mask">, 7455 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 7456 [IntrNoMem, ImmArg<ArgIndex<3>>]>; 7457} 7458 7459//===----------------------------------------------------------------------===// 7460let TargetPrefix = "x86" in { 7461def int_x86_avx10_mask_vcvt2ps2phx_128 : ClangBuiltin<"__builtin_ia32_vcvt2ps2phx128_mask">, 7462 DefaultAttrsIntrinsic<[llvm_v8f16_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v8f16_ty, llvm_i8_ty], 7463 [IntrNoMem]>; 7464def int_x86_avx10_mask_vcvt2ps2phx_256 : ClangBuiltin<"__builtin_ia32_vcvt2ps2phx256_mask">, 7465 DefaultAttrsIntrinsic<[llvm_v16f16_ty], [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty], 7466 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 7467def int_x86_avx10_mask_vcvt2ps2phx_512 : ClangBuiltin<"__builtin_ia32_vcvt2ps2phx512_mask">, 7468 DefaultAttrsIntrinsic<[llvm_v32f16_ty], [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v32f16_ty, llvm_i32_ty, llvm_i32_ty], 7469 [IntrNoMem, ImmArg<ArgIndex<4>>]>; 7470def int_x86_avx10_mask_vcvtbiasph2bf8128 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8_128_mask">, 7471 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty], 7472 [IntrNoMem]>; 7473def int_x86_avx10_mask_vcvtbiasph2bf8256 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8_256_mask">, 7474 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v32i8_ty, llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty], 7475 [IntrNoMem]>; 7476def int_x86_avx10_mask_vcvtbiasph2bf8512 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8_512_mask">, 7477 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v64i8_ty, llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty], 7478 [IntrNoMem]>; 7479def int_x86_avx10_mask_vcvtbiasph2bf8s128 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8s_128_mask">, 7480 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty], 7481 [IntrNoMem]>; 7482def int_x86_avx10_mask_vcvtbiasph2bf8s256 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8s_256_mask">, 7483 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v32i8_ty, llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty], 7484 [IntrNoMem]>; 7485def int_x86_avx10_mask_vcvtbiasph2bf8s512 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8s_512_mask">, 7486 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v64i8_ty, llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty], 7487 [IntrNoMem]>; 7488def int_x86_avx10_mask_vcvtbiasph2hf8128 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8_128_mask">, 7489 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty], 7490 [IntrNoMem]>; 7491def int_x86_avx10_mask_vcvtbiasph2hf8256 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8_256_mask">, 7492 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v32i8_ty, llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty], 7493 [IntrNoMem]>; 7494def int_x86_avx10_mask_vcvtbiasph2hf8512 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8_512_mask">, 7495 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v64i8_ty, llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty], 7496 [IntrNoMem]>; 7497def int_x86_avx10_mask_vcvtbiasph2hf8s128 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8s_128_mask">, 7498 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty], 7499 [IntrNoMem]>; 7500def int_x86_avx10_mask_vcvtbiasph2hf8s256 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8s_256_mask">, 7501 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v32i8_ty, llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty], 7502 [IntrNoMem]>; 7503def int_x86_avx10_mask_vcvtbiasph2hf8s512 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8s_512_mask">, 7504 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v64i8_ty, llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty], 7505 [IntrNoMem]>; 7506def int_x86_avx10_vcvt2ph2bf8128 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8_128">, 7507 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v8f16_ty], 7508 [IntrNoMem]>; 7509def int_x86_avx10_vcvt2ph2bf8256 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8_256">, 7510 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16f16_ty, llvm_v16f16_ty], 7511 [IntrNoMem]>; 7512def int_x86_avx10_vcvt2ph2bf8512 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8_512">, 7513 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32f16_ty, llvm_v32f16_ty], 7514 [IntrNoMem]>; 7515def int_x86_avx10_vcvt2ph2bf8s128 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8s_128">, 7516 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v8f16_ty], 7517 [IntrNoMem]>; 7518def int_x86_avx10_vcvt2ph2bf8s256 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8s_256">, 7519 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16f16_ty, llvm_v16f16_ty], 7520 [IntrNoMem]>; 7521def int_x86_avx10_vcvt2ph2bf8s512 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8s_512">, 7522 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32f16_ty, llvm_v32f16_ty], 7523 [IntrNoMem]>; 7524def int_x86_avx10_vcvt2ph2hf8128 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8_128">, 7525 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v8f16_ty], 7526 [IntrNoMem]>; 7527def int_x86_avx10_vcvt2ph2hf8256 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8_256">, 7528 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16f16_ty, llvm_v16f16_ty], 7529 [IntrNoMem]>; 7530def int_x86_avx10_vcvt2ph2hf8512 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8_512">, 7531 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32f16_ty, llvm_v32f16_ty], 7532 [IntrNoMem]>; 7533def int_x86_avx10_vcvt2ph2hf8s128 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8s_128">, 7534 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v8f16_ty], 7535 [IntrNoMem]>; 7536def int_x86_avx10_vcvt2ph2hf8s256 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8s_256">, 7537 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16f16_ty, llvm_v16f16_ty], 7538 [IntrNoMem]>; 7539def int_x86_avx10_vcvt2ph2hf8s512 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8s_512">, 7540 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32f16_ty, llvm_v32f16_ty], 7541 [IntrNoMem]>; 7542def int_x86_avx10_mask_vcvthf82ph128 : ClangBuiltin<"__builtin_ia32_vcvthf8_2ph128_mask">, 7543 DefaultAttrsIntrinsic<[llvm_v8f16_ty], [llvm_v16i8_ty, llvm_v8f16_ty, llvm_i8_ty], 7544 [IntrNoMem]>; 7545def int_x86_avx10_mask_vcvthf82ph256 : ClangBuiltin<"__builtin_ia32_vcvthf8_2ph256_mask">, 7546 DefaultAttrsIntrinsic<[llvm_v16f16_ty], [llvm_v16i8_ty, llvm_v16f16_ty, llvm_i16_ty], 7547 [IntrNoMem]>; 7548def int_x86_avx10_mask_vcvthf82ph512 : ClangBuiltin<"__builtin_ia32_vcvthf8_2ph512_mask">, 7549 DefaultAttrsIntrinsic<[llvm_v32f16_ty], [llvm_v32i8_ty, llvm_v32f16_ty, llvm_i32_ty], 7550 [IntrNoMem]>; 7551def int_x86_avx10_mask_vcvtph2bf8128 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8_128_mask">, 7552 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty], 7553 [IntrNoMem]>; 7554def int_x86_avx10_mask_vcvtph2bf8256 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8_256_mask">, 7555 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty], 7556 [IntrNoMem]>; 7557def int_x86_avx10_mask_vcvtph2bf8512 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8_512_mask">, 7558 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty], 7559 [IntrNoMem]>; 7560def int_x86_avx10_mask_vcvtph2bf8s128 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8s_128_mask">, 7561 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty], 7562 [IntrNoMem]>; 7563def int_x86_avx10_mask_vcvtph2bf8s256 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8s_256_mask">, 7564 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty], 7565 [IntrNoMem]>; 7566def int_x86_avx10_mask_vcvtph2bf8s512 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8s_512_mask">, 7567 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty], 7568 [IntrNoMem]>; 7569def int_x86_avx10_mask_vcvtph2hf8128 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8_128_mask">, 7570 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty], 7571 [IntrNoMem]>; 7572def int_x86_avx10_mask_vcvtph2hf8256 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8_256_mask">, 7573 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty], 7574 [IntrNoMem]>; 7575def int_x86_avx10_mask_vcvtph2hf8512 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8_512_mask">, 7576 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty], 7577 [IntrNoMem]>; 7578def int_x86_avx10_mask_vcvtph2hf8s128 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8s_128_mask">, 7579 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty], 7580 [IntrNoMem]>; 7581def int_x86_avx10_mask_vcvtph2hf8s256 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8s_256_mask">, 7582 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty], 7583 [IntrNoMem]>; 7584def int_x86_avx10_mask_vcvtph2hf8s512 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8s_512_mask">, 7585 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty], 7586 [IntrNoMem]>; 7587} 7588 7589//===----------------------------------------------------------------------===// 7590let TargetPrefix = "x86" in { 7591def int_x86_avx10_vaddbf16512 : ClangBuiltin<"__builtin_ia32_vaddbf16512">, 7592 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty], 7593 [IntrNoMem]>; 7594def int_x86_avx10_vaddbf16256 : ClangBuiltin<"__builtin_ia32_vaddbf16256">, 7595 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty], 7596 [IntrNoMem]>; 7597def int_x86_avx10_vaddbf16128 : ClangBuiltin<"__builtin_ia32_vaddbf16128">, 7598 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7599 [IntrNoMem]>; 7600def int_x86_avx10_vsubbf16512 : ClangBuiltin<"__builtin_ia32_vsubbf16512">, 7601 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty], 7602 [IntrNoMem]>; 7603def int_x86_avx10_vsubbf16256 : ClangBuiltin<"__builtin_ia32_vsubbf16256">, 7604 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty], 7605 [IntrNoMem]>; 7606def int_x86_avx10_vsubbf16128 : ClangBuiltin<"__builtin_ia32_vsubbf16128">, 7607 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7608 [IntrNoMem]>; 7609def int_x86_avx10_vmulbf16512 : ClangBuiltin<"__builtin_ia32_vmulbf16512">, 7610 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty], 7611 [IntrNoMem]>; 7612def int_x86_avx10_vmulbf16256 : ClangBuiltin<"__builtin_ia32_vmulbf16256">, 7613 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty], 7614 [IntrNoMem]>; 7615def int_x86_avx10_vmulbf16128 : ClangBuiltin<"__builtin_ia32_vmulbf16128">, 7616 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7617 [IntrNoMem]>; 7618def int_x86_avx10_vdivbf16512 : ClangBuiltin<"__builtin_ia32_vdivbf16512">, 7619 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty], 7620 [IntrNoMem]>; 7621def int_x86_avx10_vdivbf16256 : ClangBuiltin<"__builtin_ia32_vdivbf16256">, 7622 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty], 7623 [IntrNoMem]>; 7624def int_x86_avx10_vdivbf16128 : ClangBuiltin<"__builtin_ia32_vdivbf16128">, 7625 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7626 [IntrNoMem]>; 7627def int_x86_avx10_vmaxbf16512 : ClangBuiltin<"__builtin_ia32_vmaxbf16512">, 7628 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty], 7629 [IntrNoMem]>; 7630def int_x86_avx10_vmaxbf16256 : ClangBuiltin<"__builtin_ia32_vmaxbf16256">, 7631 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty], 7632 [IntrNoMem]>; 7633def int_x86_avx10_vmaxbf16128 : ClangBuiltin<"__builtin_ia32_vmaxbf16128">, 7634 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7635 [IntrNoMem]>; 7636def int_x86_avx10_vminbf16512 : ClangBuiltin<"__builtin_ia32_vminbf16512">, 7637 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty], 7638 [IntrNoMem]>; 7639def int_x86_avx10_vminbf16256 : ClangBuiltin<"__builtin_ia32_vminbf16256">, 7640 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty], 7641 [IntrNoMem]>; 7642def int_x86_avx10_vminbf16128 : ClangBuiltin<"__builtin_ia32_vminbf16128">, 7643 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7644 [IntrNoMem]>; 7645def int_x86_avx10_vcomisbf16eq : ClangBuiltin<"__builtin_ia32_vcomisbf16eq">, 7646 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7647 [IntrNoMem]>; 7648def int_x86_avx10_vcomisbf16lt : ClangBuiltin<"__builtin_ia32_vcomisbf16lt">, 7649 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty,llvm_v8bf16_ty], 7650 [IntrNoMem]>; 7651def int_x86_avx10_vcomisbf16le : ClangBuiltin<"__builtin_ia32_vcomisbf16le">, 7652 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7653 [IntrNoMem]>; 7654def int_x86_avx10_vcomisbf16gt : ClangBuiltin<"__builtin_ia32_vcomisbf16gt">, 7655 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7656 [IntrNoMem]>; 7657def int_x86_avx10_vcomisbf16ge : ClangBuiltin<"__builtin_ia32_vcomisbf16ge">, 7658 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7659 [IntrNoMem]>; 7660def int_x86_avx10_vcomisbf16neq : ClangBuiltin<"__builtin_ia32_vcomisbf16neq">, 7661 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty], 7662 [IntrNoMem]>; 7663def int_x86_avx10_mask_rsqrt_bf16_128 : ClangBuiltin<"__builtin_ia32_vrsqrtbf16128_mask">, 7664 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_i8_ty], 7665 [IntrNoMem]>; 7666def int_x86_avx10_mask_rsqrt_bf16_256 : ClangBuiltin<"__builtin_ia32_vrsqrtbf16256_mask">, 7667 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_i16_ty], 7668 [IntrNoMem]>; 7669def int_x86_avx10_mask_rsqrt_bf16_512 : ClangBuiltin<"__builtin_ia32_vrsqrtbf16512_mask">, 7670 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_i32_ty], 7671 [IntrNoMem]>; 7672def int_x86_avx10_mask_rcp_bf16_128 : ClangBuiltin<"__builtin_ia32_vrcpbf16128_mask">, 7673 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_i8_ty], 7674 [IntrNoMem]>; 7675def int_x86_avx10_mask_rcp_bf16_256 : ClangBuiltin<"__builtin_ia32_vrcpbf16256_mask">, 7676 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_i16_ty], 7677 [IntrNoMem]>; 7678def int_x86_avx10_mask_rcp_bf16_512 : ClangBuiltin<"__builtin_ia32_vrcpbf16512_mask">, 7679 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_i32_ty], 7680 [IntrNoMem]>; 7681def int_x86_avx10_mask_reduce_bf16_128 : ClangBuiltin<"__builtin_ia32_vreducebf16128_mask">, 7682 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_i32_ty, llvm_v8bf16_ty, llvm_i8_ty], 7683 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7684def int_x86_avx10_mask_reduce_bf16_256 : ClangBuiltin<"__builtin_ia32_vreducebf16256_mask">, 7685 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_i32_ty, llvm_v16bf16_ty, llvm_i16_ty], 7686 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7687def int_x86_avx10_mask_reduce_bf16_512 : ClangBuiltin<"__builtin_ia32_vreducebf16512_mask">, 7688 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_i32_ty, llvm_v32bf16_ty, llvm_i32_ty], 7689 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7690def int_x86_avx10_fpclass_bf16_128 : 7691 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8bf16_ty, llvm_i32_ty], 7692 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7693def int_x86_avx10_fpclass_bf16_256 : 7694 DefaultAttrsIntrinsic<[llvm_v16i1_ty], [llvm_v16bf16_ty, llvm_i32_ty], 7695 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7696def int_x86_avx10_fpclass_bf16_512 : 7697 DefaultAttrsIntrinsic<[llvm_v32i1_ty], [llvm_v32bf16_ty, llvm_i32_ty], 7698 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7699def int_x86_avx10_mask_getexp_bf16_128 : ClangBuiltin<"__builtin_ia32_vgetexpbf16128_mask">, 7700 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_i8_ty], 7701 [IntrNoMem]>; 7702def int_x86_avx10_mask_getexp_bf16_256 : ClangBuiltin<"__builtin_ia32_vgetexpbf16256_mask">, 7703 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_i16_ty], 7704 [IntrNoMem]>; 7705def int_x86_avx10_mask_getexp_bf16_512 : ClangBuiltin<"__builtin_ia32_vgetexpbf16512_mask">, 7706 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_i32_ty], 7707 [IntrNoMem]>; 7708def int_x86_avx10_mask_getmant_bf16_128 : ClangBuiltin<"__builtin_ia32_vgetmantbf16128_mask">, 7709 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_i32_ty, llvm_v8bf16_ty, llvm_i8_ty], 7710 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7711def int_x86_avx10_mask_getmant_bf16_256 : ClangBuiltin<"__builtin_ia32_vgetmantbf16256_mask">, 7712 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_i32_ty, llvm_v16bf16_ty, llvm_i16_ty], 7713 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7714def int_x86_avx10_mask_getmant_bf16_512 : ClangBuiltin<"__builtin_ia32_vgetmantbf16512_mask">, 7715 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_i32_ty, llvm_v32bf16_ty, llvm_i32_ty], 7716 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7717def int_x86_avx10_mask_rndscale_bf16_128 : ClangBuiltin<"__builtin_ia32_vrndscalebf16_128_mask">, 7718 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_i32_ty, llvm_v8bf16_ty, llvm_i8_ty], 7719 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7720def int_x86_avx10_mask_rndscale_bf16_256 : ClangBuiltin<"__builtin_ia32_vrndscalebf16_256_mask">, 7721 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_i32_ty, llvm_v16bf16_ty, llvm_i16_ty], 7722 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7723def int_x86_avx10_mask_rndscale_bf16_512 : ClangBuiltin<"__builtin_ia32_vrndscalebf16_mask">, 7724 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_i32_ty, llvm_v32bf16_ty, llvm_i32_ty], 7725 [IntrNoMem, ImmArg<ArgIndex<1>>]>; 7726def int_x86_avx10_mask_scalef_bf16_128 : ClangBuiltin<"__builtin_ia32_vscalefbf16128_mask">, 7727 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_i8_ty], 7728 [IntrNoMem]>; 7729def int_x86_avx10_mask_scalef_bf16_256 : ClangBuiltin<"__builtin_ia32_vscalefbf16256_mask">, 7730 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_i16_ty], 7731 [IntrNoMem]>; 7732def int_x86_avx10_mask_scalef_bf16_512 : ClangBuiltin<"__builtin_ia32_vscalefbf16512_mask">, 7733 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_i32_ty], 7734 [IntrNoMem]>; 7735def int_x86_avx10_vfmadd213bf16256 : ClangBuiltin<"__builtin_ia32_vfmadd213bf16256">, 7736 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7737 [IntrNoMem]>; 7738def int_x86_avx10_vfmadd213bf16128 : ClangBuiltin<"__builtin_ia32_vfmadd213bf16128">, 7739 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7740 [IntrNoMem]>; 7741def int_x86_avx10_vfmadd132bf16512 : ClangBuiltin<"__builtin_ia32_vfmadd132bf16512">, 7742 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7743 [IntrNoMem]>; 7744def int_x86_avx10_vfmadd132bf16256 : ClangBuiltin<"__builtin_ia32_vfmadd132bf16256">, 7745 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7746 [IntrNoMem]>; 7747def int_x86_avx10_vfmadd132bf16128 : ClangBuiltin<"__builtin_ia32_vfmadd132bf16128">, 7748 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7749 [IntrNoMem]>; 7750def int_x86_avx10_vfmadd231bf16512 : ClangBuiltin<"__builtin_ia32_vfmadd231bf16512">, 7751 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7752 [IntrNoMem]>; 7753def int_x86_avx10_vfmadd231bf16256 : ClangBuiltin<"__builtin_ia32_vfmadd231bf16256">, 7754 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7755 [IntrNoMem]>; 7756def int_x86_avx10_vfmadd231bf16128 : ClangBuiltin<"__builtin_ia32_vfmadd231bf16128">, 7757 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7758 [IntrNoMem]>; 7759def int_x86_avx10_vfmsub213bf16512 : ClangBuiltin<"__builtin_ia32_vfmsub213bf16512">, 7760 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7761 [IntrNoMem]>; 7762def int_x86_avx10_vfmsub213bf16256 : ClangBuiltin<"__builtin_ia32_vfmsub213bf16256">, 7763 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7764 [IntrNoMem]>; 7765def int_x86_avx10_vfmsub213bf16128 : ClangBuiltin<"__builtin_ia32_vfmsub213bf16128">, 7766 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7767 [IntrNoMem]>; 7768def int_x86_avx10_vfmsub132bf16512 : ClangBuiltin<"__builtin_ia32_vfmsub132bf16512">, 7769 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7770 [IntrNoMem]>; 7771def int_x86_avx10_vfmsub132bf16256 : ClangBuiltin<"__builtin_ia32_vfmsub132bf16256">, 7772 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7773 [IntrNoMem]>; 7774def int_x86_avx10_vfmsub132bf16128 : ClangBuiltin<"__builtin_ia32_vfmsub132bf16128">, 7775 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7776 [IntrNoMem]>; 7777def int_x86_avx10_vfmsub231bf16512 : ClangBuiltin<"__builtin_ia32_vfmsub231bf16512">, 7778 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7779 [IntrNoMem]>; 7780def int_x86_avx10_vfmsub231bf16256 : ClangBuiltin<"__builtin_ia32_vfmsub231bf16256">, 7781 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7782 [IntrNoMem]>; 7783def int_x86_avx10_vfmsub231bf16128 : ClangBuiltin<"__builtin_ia32_vfmsub231bf16128">, 7784 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7785 [IntrNoMem]>; 7786def int_x86_avx10_vfnmadd213bf16512 : ClangBuiltin<"__builtin_ia32_vfnmadd213bf16512">, 7787 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7788 [IntrNoMem]>; 7789def int_x86_avx10_vfnmadd213bf16256 : ClangBuiltin<"__builtin_ia32_vfnmadd213bf16256">, 7790 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7791 [IntrNoMem]>; 7792def int_x86_avx10_vfnmadd213bf16128 : ClangBuiltin<"__builtin_ia32_vfnmadd213bf16128">, 7793 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7794 [IntrNoMem]>; 7795def int_x86_avx10_vfnmadd132bf16512 : ClangBuiltin<"__builtin_ia32_vfnmadd132bf16512">, 7796 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7797 [IntrNoMem]>; 7798def int_x86_avx10_vfnmadd132bf16256 : ClangBuiltin<"__builtin_ia32_vfnmadd132bf16256">, 7799 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7800 [IntrNoMem]>; 7801def int_x86_avx10_vfnmadd132bf16128 : ClangBuiltin<"__builtin_ia32_vfnmadd132bf16128">, 7802 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7803 [IntrNoMem]>; 7804def int_x86_avx10_vfnmadd231bf16512 : ClangBuiltin<"__builtin_ia32_vfnmadd231bf16512">, 7805 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7806 [IntrNoMem]>; 7807def int_x86_avx10_vfnmadd231bf16256 : ClangBuiltin<"__builtin_ia32_vfnmadd231bf16256">, 7808 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7809 [IntrNoMem]>; 7810def int_x86_avx10_vfnmadd231bf16128 : ClangBuiltin<"__builtin_ia32_vfnmadd231bf16128">, 7811 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7812 [IntrNoMem]>; 7813def int_x86_avx10_vfnmsub213bf16512 : ClangBuiltin<"__builtin_ia32_vfnmsub213bf16512">, 7814 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7815 [IntrNoMem]>; 7816def int_x86_avx10_vfnmsub213bf16256 : ClangBuiltin<"__builtin_ia32_vfnmsub213bf16256">, 7817 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7818 [IntrNoMem]>; 7819def int_x86_avx10_vfnmsub213bf16128 : ClangBuiltin<"__builtin_ia32_vfnmsub213bf16128">, 7820 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7821 [IntrNoMem]>; 7822def int_x86_avx10_vfnmsub132bf16512 : ClangBuiltin<"__builtin_ia32_vfnmsub132bf16512">, 7823 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7824 [IntrNoMem]>; 7825def int_x86_avx10_vfnmsub132bf16256 : ClangBuiltin<"__builtin_ia32_vfnmsub132bf16256">, 7826 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7827 [IntrNoMem]>; 7828def int_x86_avx10_vfnmsub132bf16128 : ClangBuiltin<"__builtin_ia32_vfnmsub132bf16128">, 7829 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7830 [IntrNoMem]>; 7831def int_x86_avx10_vfnmsub231bf16512 : ClangBuiltin<"__builtin_ia32_vfnmsub231bf16512">, 7832 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty], 7833 [IntrNoMem]>; 7834def int_x86_avx10_vfnmsub231bf16256 : ClangBuiltin<"__builtin_ia32_vfnmsub231bf16256">, 7835 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty], 7836 [IntrNoMem]>; 7837def int_x86_avx10_vfnmsub231bf16128 : ClangBuiltin<"__builtin_ia32_vfnmsub231bf16128">, 7838 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ], 7839 [IntrNoMem]>; 7840} 7841 7842let TargetPrefix = "x86" in { 7843def int_x86_avx10_vmovrsb128 : ClangBuiltin<"__builtin_ia32_vmovrsb128">, 7844 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_ptr_ty], 7845 [IntrReadMem]>; 7846def int_x86_avx10_vmovrsb256 : ClangBuiltin<"__builtin_ia32_vmovrsb256">, 7847 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_ptr_ty], 7848 [IntrReadMem]>; 7849def int_x86_avx10_vmovrsb512 : ClangBuiltin<"__builtin_ia32_vmovrsb512">, 7850 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_ptr_ty], 7851 [IntrReadMem]>; 7852def int_x86_avx10_vmovrsd128 : ClangBuiltin<"__builtin_ia32_vmovrsd128">, 7853 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], 7854 [IntrReadMem]>; 7855def int_x86_avx10_vmovrsd256 : ClangBuiltin<"__builtin_ia32_vmovrsd256">, 7856 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_ptr_ty], 7857 [IntrReadMem]>; 7858def int_x86_avx10_vmovrsd512 : ClangBuiltin<"__builtin_ia32_vmovrsd512">, 7859 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_ptr_ty], 7860 [IntrReadMem]>; 7861def int_x86_avx10_vmovrsq128 : ClangBuiltin<"__builtin_ia32_vmovrsq128">, 7862 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_ptr_ty], 7863 [IntrReadMem]>; 7864def int_x86_avx10_vmovrsq256 : ClangBuiltin<"__builtin_ia32_vmovrsq256">, 7865 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_ptr_ty], 7866 [IntrReadMem]>; 7867def int_x86_avx10_vmovrsq512 : ClangBuiltin<"__builtin_ia32_vmovrsq512">, 7868 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_ptr_ty], 7869 [IntrReadMem]>; 7870def int_x86_avx10_vmovrsw128 : ClangBuiltin<"__builtin_ia32_vmovrsw128">, 7871 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_ptr_ty], 7872 [IntrReadMem]>; 7873def int_x86_avx10_vmovrsw256 : ClangBuiltin<"__builtin_ia32_vmovrsw256">, 7874 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_ptr_ty], 7875 [IntrReadMem]>; 7876def int_x86_avx10_vmovrsw512 : ClangBuiltin<"__builtin_ia32_vmovrsw512">, 7877 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_ptr_ty], 7878 [IntrReadMem]>; 7879} 7880 7881let TargetPrefix = "x86" in { 7882def int_x86_movrsqi : ClangBuiltin<"__builtin_ia32_movrsqi">, 7883 Intrinsic<[llvm_i8_ty], [llvm_ptr_ty], 7884 [IntrReadMem]>; 7885def int_x86_movrshi : ClangBuiltin<"__builtin_ia32_movrshi">, 7886 Intrinsic<[llvm_i16_ty], [llvm_ptr_ty], 7887 [IntrReadMem]>; 7888def int_x86_movrssi : ClangBuiltin<"__builtin_ia32_movrssi">, 7889 Intrinsic<[llvm_i32_ty], [llvm_ptr_ty], 7890 [IntrReadMem]>; 7891def int_x86_movrsdi : ClangBuiltin<"__builtin_ia32_movrsdi">, 7892 Intrinsic<[llvm_i64_ty], [llvm_ptr_ty], 7893 [IntrReadMem]>; 7894def int_x86_prefetchrs : ClangBuiltin<"__builtin_ia32_prefetchrs">, 7895 Intrinsic<[], [llvm_ptr_ty], []>; 7896} 7897