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