1//===- IntrinsicsX86.td - Defines X86 intrinsics -----------*- tablegen -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file defines all of the X86-specific intrinsics. 11// 12//===----------------------------------------------------------------------===// 13 14//===----------------------------------------------------------------------===// 15// Interrupt traps 16let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 17 def int_x86_int : Intrinsic<[], [llvm_i8_ty]>; 18} 19 20//===----------------------------------------------------------------------===// 21// SEH intrinsics for Windows 22let TargetPrefix = "x86" in { 23 def int_x86_seh_lsda : Intrinsic<[llvm_ptr_ty], [llvm_ptr_ty], [IntrNoMem]>; 24 25 // Marks the EH registration node created in LLVM IR prior to code generation. 26 def int_x86_seh_ehregnode : Intrinsic<[], [llvm_ptr_ty], []>; 27 28 // Given a pointer to the end of an EH registration object, returns the true 29 // parent frame address that can be used with llvm.localrecover. 30 def int_x86_seh_recoverfp : Intrinsic<[llvm_ptr_ty], 31 [llvm_ptr_ty, llvm_ptr_ty], 32 [IntrNoMem]>; 33} 34 35//===----------------------------------------------------------------------===// 36// Read Time Stamp Counter. 37let TargetPrefix = "x86" in { 38 def int_x86_rdtsc : GCCBuiltin<"__builtin_ia32_rdtsc">, 39 Intrinsic<[llvm_i64_ty], [], []>; 40 def int_x86_rdtscp : GCCBuiltin<"__builtin_ia32_rdtscp">, 41 Intrinsic<[llvm_i64_ty], [llvm_ptr_ty], [IntrReadWriteArgMem]>; 42} 43 44// Read Performance-Monitoring Counter. 45let TargetPrefix = "x86" in { 46 def int_x86_rdpmc : GCCBuiltin<"__builtin_ia32_rdpmc">, 47 Intrinsic<[llvm_i64_ty], [llvm_i32_ty], []>; 48} 49 50//===----------------------------------------------------------------------===// 51// 3DNow! 52 53let TargetPrefix = "x86" in { 54 def int_x86_3dnow_pavgusb : GCCBuiltin<"__builtin_ia32_pavgusb">, 55 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 56 [IntrNoMem]>; 57 def int_x86_3dnow_pf2id : GCCBuiltin<"__builtin_ia32_pf2id">, 58 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 59 def int_x86_3dnow_pfacc : GCCBuiltin<"__builtin_ia32_pfacc">, 60 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 61 [IntrNoMem]>; 62 def int_x86_3dnow_pfadd : GCCBuiltin<"__builtin_ia32_pfadd">, 63 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 64 [IntrNoMem]>; 65 def int_x86_3dnow_pfcmpeq : GCCBuiltin<"__builtin_ia32_pfcmpeq">, 66 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 67 [IntrNoMem]>; 68 def int_x86_3dnow_pfcmpge : GCCBuiltin<"__builtin_ia32_pfcmpge">, 69 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 70 [IntrNoMem]>; 71 def int_x86_3dnow_pfcmpgt : GCCBuiltin<"__builtin_ia32_pfcmpgt">, 72 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 73 [IntrNoMem]>; 74 def int_x86_3dnow_pfmax : GCCBuiltin<"__builtin_ia32_pfmax">, 75 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 76 [IntrNoMem]>; 77 def int_x86_3dnow_pfmin : GCCBuiltin<"__builtin_ia32_pfmin">, 78 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 79 [IntrNoMem]>; 80 def int_x86_3dnow_pfmul : GCCBuiltin<"__builtin_ia32_pfmul">, 81 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 82 [IntrNoMem]>; 83 def int_x86_3dnow_pfrcp : GCCBuiltin<"__builtin_ia32_pfrcp">, 84 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 85 def int_x86_3dnow_pfrcpit1 : GCCBuiltin<"__builtin_ia32_pfrcpit1">, 86 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 87 [IntrNoMem]>; 88 def int_x86_3dnow_pfrcpit2 : GCCBuiltin<"__builtin_ia32_pfrcpit2">, 89 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 90 [IntrNoMem]>; 91 def int_x86_3dnow_pfrsqrt : GCCBuiltin<"__builtin_ia32_pfrsqrt">, 92 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 93 def int_x86_3dnow_pfrsqit1 : GCCBuiltin<"__builtin_ia32_pfrsqit1">, 94 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 95 [IntrNoMem]>; 96 def int_x86_3dnow_pfsub : GCCBuiltin<"__builtin_ia32_pfsub">, 97 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 98 [IntrNoMem]>; 99 def int_x86_3dnow_pfsubr : GCCBuiltin<"__builtin_ia32_pfsubr">, 100 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 101 [IntrNoMem]>; 102 def int_x86_3dnow_pi2fd : GCCBuiltin<"__builtin_ia32_pi2fd">, 103 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 104 def int_x86_3dnow_pmulhrw : GCCBuiltin<"__builtin_ia32_pmulhrw">, 105 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 106 [IntrNoMem]>; 107} 108 109//===----------------------------------------------------------------------===// 110// 3DNow! extensions 111 112let TargetPrefix = "x86" in { 113 def int_x86_3dnowa_pf2iw : GCCBuiltin<"__builtin_ia32_pf2iw">, 114 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 115 def int_x86_3dnowa_pfnacc : GCCBuiltin<"__builtin_ia32_pfnacc">, 116 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 117 [IntrNoMem]>; 118 def int_x86_3dnowa_pfpnacc : GCCBuiltin<"__builtin_ia32_pfpnacc">, 119 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 120 [IntrNoMem]>; 121 def int_x86_3dnowa_pi2fw : GCCBuiltin<"__builtin_ia32_pi2fw">, 122 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 123 def int_x86_3dnowa_pswapd : 124 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 125} 126 127//===----------------------------------------------------------------------===// 128// SSE1 129 130// Arithmetic ops 131let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 132 def int_x86_sse_add_ss : GCCBuiltin<"__builtin_ia32_addss">, 133 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 134 llvm_v4f32_ty], [IntrNoMem]>; 135 def int_x86_sse_sub_ss : GCCBuiltin<"__builtin_ia32_subss">, 136 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 137 llvm_v4f32_ty], [IntrNoMem]>; 138 def int_x86_sse_mul_ss : GCCBuiltin<"__builtin_ia32_mulss">, 139 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 140 llvm_v4f32_ty], [IntrNoMem]>; 141 def int_x86_sse_div_ss : GCCBuiltin<"__builtin_ia32_divss">, 142 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 143 llvm_v4f32_ty], [IntrNoMem]>; 144 def int_x86_sse_sqrt_ss : GCCBuiltin<"__builtin_ia32_sqrtss">, 145 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 146 [IntrNoMem]>; 147 def int_x86_sse_sqrt_ps : GCCBuiltin<"__builtin_ia32_sqrtps">, 148 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 149 [IntrNoMem]>; 150 def int_x86_sse_rcp_ss : GCCBuiltin<"__builtin_ia32_rcpss">, 151 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 152 [IntrNoMem]>; 153 def int_x86_sse_rcp_ps : GCCBuiltin<"__builtin_ia32_rcpps">, 154 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 155 [IntrNoMem]>; 156 def int_x86_sse_rsqrt_ss : GCCBuiltin<"__builtin_ia32_rsqrtss">, 157 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 158 [IntrNoMem]>; 159 def int_x86_sse_rsqrt_ps : GCCBuiltin<"__builtin_ia32_rsqrtps">, 160 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 161 [IntrNoMem]>; 162 def int_x86_sse_min_ss : GCCBuiltin<"__builtin_ia32_minss">, 163 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 164 llvm_v4f32_ty], [IntrNoMem]>; 165 def int_x86_sse_min_ps : GCCBuiltin<"__builtin_ia32_minps">, 166 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 167 llvm_v4f32_ty], [IntrNoMem]>; 168 def int_x86_sse_max_ss : GCCBuiltin<"__builtin_ia32_maxss">, 169 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 170 llvm_v4f32_ty], [IntrNoMem]>; 171 def int_x86_sse_max_ps : GCCBuiltin<"__builtin_ia32_maxps">, 172 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 173 llvm_v4f32_ty], [IntrNoMem]>; 174} 175 176// Comparison ops 177let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 178 def int_x86_sse_cmp_ss : GCCBuiltin<"__builtin_ia32_cmpss">, 179 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 180 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 181 def int_x86_sse_cmp_ps : GCCBuiltin<"__builtin_ia32_cmpps">, 182 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 183 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 184 def int_x86_sse_comieq_ss : GCCBuiltin<"__builtin_ia32_comieq">, 185 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 186 llvm_v4f32_ty], [IntrNoMem]>; 187 def int_x86_sse_comilt_ss : GCCBuiltin<"__builtin_ia32_comilt">, 188 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 189 llvm_v4f32_ty], [IntrNoMem]>; 190 def int_x86_sse_comile_ss : GCCBuiltin<"__builtin_ia32_comile">, 191 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 192 llvm_v4f32_ty], [IntrNoMem]>; 193 def int_x86_sse_comigt_ss : GCCBuiltin<"__builtin_ia32_comigt">, 194 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 195 llvm_v4f32_ty], [IntrNoMem]>; 196 def int_x86_sse_comige_ss : GCCBuiltin<"__builtin_ia32_comige">, 197 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 198 llvm_v4f32_ty], [IntrNoMem]>; 199 def int_x86_sse_comineq_ss : GCCBuiltin<"__builtin_ia32_comineq">, 200 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 201 llvm_v4f32_ty], [IntrNoMem]>; 202 def int_x86_sse_ucomieq_ss : GCCBuiltin<"__builtin_ia32_ucomieq">, 203 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 204 llvm_v4f32_ty], [IntrNoMem]>; 205 def int_x86_sse_ucomilt_ss : GCCBuiltin<"__builtin_ia32_ucomilt">, 206 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 207 llvm_v4f32_ty], [IntrNoMem]>; 208 def int_x86_sse_ucomile_ss : GCCBuiltin<"__builtin_ia32_ucomile">, 209 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 210 llvm_v4f32_ty], [IntrNoMem]>; 211 def int_x86_sse_ucomigt_ss : GCCBuiltin<"__builtin_ia32_ucomigt">, 212 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 213 llvm_v4f32_ty], [IntrNoMem]>; 214 def int_x86_sse_ucomige_ss : GCCBuiltin<"__builtin_ia32_ucomige">, 215 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 216 llvm_v4f32_ty], [IntrNoMem]>; 217 def int_x86_sse_ucomineq_ss : GCCBuiltin<"__builtin_ia32_ucomineq">, 218 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 219 llvm_v4f32_ty], [IntrNoMem]>; 220} 221 222 223// Conversion ops 224let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 225 def int_x86_sse_cvtss2si : GCCBuiltin<"__builtin_ia32_cvtss2si">, 226 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 227 def int_x86_sse_cvtss2si64 : GCCBuiltin<"__builtin_ia32_cvtss2si64">, 228 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty], [IntrNoMem]>; 229 def int_x86_sse_cvttss2si : GCCBuiltin<"__builtin_ia32_cvttss2si">, 230 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 231 def int_x86_sse_cvttss2si64 : GCCBuiltin<"__builtin_ia32_cvttss2si64">, 232 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty], [IntrNoMem]>; 233 def int_x86_sse_cvtsi2ss : GCCBuiltin<"__builtin_ia32_cvtsi2ss">, 234 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 235 llvm_i32_ty], [IntrNoMem]>; 236 def int_x86_sse_cvtsi642ss : GCCBuiltin<"__builtin_ia32_cvtsi642ss">, 237 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 238 llvm_i64_ty], [IntrNoMem]>; 239 240 def int_x86_sse_cvtps2pi : GCCBuiltin<"__builtin_ia32_cvtps2pi">, 241 Intrinsic<[llvm_x86mmx_ty], [llvm_v4f32_ty], [IntrNoMem]>; 242 def int_x86_sse_cvttps2pi: GCCBuiltin<"__builtin_ia32_cvttps2pi">, 243 Intrinsic<[llvm_x86mmx_ty], [llvm_v4f32_ty], [IntrNoMem]>; 244 def int_x86_sse_cvtpi2ps : GCCBuiltin<"__builtin_ia32_cvtpi2ps">, 245 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 246 llvm_x86mmx_ty], [IntrNoMem]>; 247} 248 249// SIMD store ops 250let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 251 def int_x86_sse_storeu_ps : GCCBuiltin<"__builtin_ia32_storeups">, 252 Intrinsic<[], [llvm_ptr_ty, 253 llvm_v4f32_ty], [IntrReadWriteArgMem]>; 254} 255 256// Cacheability support ops 257let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 258 def int_x86_sse_sfence : GCCBuiltin<"__builtin_ia32_sfence">, 259 Intrinsic<[], [], []>; 260} 261 262// Control register. 263let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 264 def int_x86_sse_stmxcsr : 265 Intrinsic<[], [llvm_ptr_ty], []>; 266 def int_x86_sse_ldmxcsr : 267 Intrinsic<[], [llvm_ptr_ty], []>; 268} 269 270// Misc. 271let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 272 def int_x86_sse_movmsk_ps : GCCBuiltin<"__builtin_ia32_movmskps">, 273 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 274} 275 276//===----------------------------------------------------------------------===// 277// SSE2 278 279// FP arithmetic ops 280let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 281 def int_x86_sse2_add_sd : GCCBuiltin<"__builtin_ia32_addsd">, 282 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 283 llvm_v2f64_ty], [IntrNoMem]>; 284 def int_x86_sse2_sub_sd : GCCBuiltin<"__builtin_ia32_subsd">, 285 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 286 llvm_v2f64_ty], [IntrNoMem]>; 287 def int_x86_sse2_mul_sd : GCCBuiltin<"__builtin_ia32_mulsd">, 288 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 289 llvm_v2f64_ty], [IntrNoMem]>; 290 def int_x86_sse2_div_sd : GCCBuiltin<"__builtin_ia32_divsd">, 291 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 292 llvm_v2f64_ty], [IntrNoMem]>; 293 def int_x86_sse2_sqrt_sd : GCCBuiltin<"__builtin_ia32_sqrtsd">, 294 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], 295 [IntrNoMem]>; 296 def int_x86_sse2_sqrt_pd : GCCBuiltin<"__builtin_ia32_sqrtpd">, 297 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], 298 [IntrNoMem]>; 299 def int_x86_sse2_min_sd : GCCBuiltin<"__builtin_ia32_minsd">, 300 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 301 llvm_v2f64_ty], [IntrNoMem]>; 302 def int_x86_sse2_min_pd : GCCBuiltin<"__builtin_ia32_minpd">, 303 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 304 llvm_v2f64_ty], [IntrNoMem]>; 305 def int_x86_sse2_max_sd : GCCBuiltin<"__builtin_ia32_maxsd">, 306 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 307 llvm_v2f64_ty], [IntrNoMem]>; 308 def int_x86_sse2_max_pd : GCCBuiltin<"__builtin_ia32_maxpd">, 309 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 310 llvm_v2f64_ty], [IntrNoMem]>; 311} 312 313// FP comparison ops 314let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 315 def int_x86_sse2_cmp_sd : GCCBuiltin<"__builtin_ia32_cmpsd">, 316 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 317 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 318 def int_x86_sse2_cmp_pd : GCCBuiltin<"__builtin_ia32_cmppd">, 319 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 320 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 321 def int_x86_sse2_comieq_sd : GCCBuiltin<"__builtin_ia32_comisdeq">, 322 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 323 llvm_v2f64_ty], [IntrNoMem]>; 324 def int_x86_sse2_comilt_sd : GCCBuiltin<"__builtin_ia32_comisdlt">, 325 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 326 llvm_v2f64_ty], [IntrNoMem]>; 327 def int_x86_sse2_comile_sd : GCCBuiltin<"__builtin_ia32_comisdle">, 328 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 329 llvm_v2f64_ty], [IntrNoMem]>; 330 def int_x86_sse2_comigt_sd : GCCBuiltin<"__builtin_ia32_comisdgt">, 331 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 332 llvm_v2f64_ty], [IntrNoMem]>; 333 def int_x86_sse2_comige_sd : GCCBuiltin<"__builtin_ia32_comisdge">, 334 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 335 llvm_v2f64_ty], [IntrNoMem]>; 336 def int_x86_sse2_comineq_sd : GCCBuiltin<"__builtin_ia32_comisdneq">, 337 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 338 llvm_v2f64_ty], [IntrNoMem]>; 339 def int_x86_sse2_ucomieq_sd : GCCBuiltin<"__builtin_ia32_ucomisdeq">, 340 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 341 llvm_v2f64_ty], [IntrNoMem]>; 342 def int_x86_sse2_ucomilt_sd : GCCBuiltin<"__builtin_ia32_ucomisdlt">, 343 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 344 llvm_v2f64_ty], [IntrNoMem]>; 345 def int_x86_sse2_ucomile_sd : GCCBuiltin<"__builtin_ia32_ucomisdle">, 346 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 347 llvm_v2f64_ty], [IntrNoMem]>; 348 def int_x86_sse2_ucomigt_sd : GCCBuiltin<"__builtin_ia32_ucomisdgt">, 349 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 350 llvm_v2f64_ty], [IntrNoMem]>; 351 def int_x86_sse2_ucomige_sd : GCCBuiltin<"__builtin_ia32_ucomisdge">, 352 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 353 llvm_v2f64_ty], [IntrNoMem]>; 354 def int_x86_sse2_ucomineq_sd : GCCBuiltin<"__builtin_ia32_ucomisdneq">, 355 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 356 llvm_v2f64_ty], [IntrNoMem]>; 357} 358 359// Integer arithmetic ops. 360let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 361 def int_x86_sse2_padds_b : GCCBuiltin<"__builtin_ia32_paddsb128">, 362 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 363 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 364 def int_x86_sse2_padds_w : GCCBuiltin<"__builtin_ia32_paddsw128">, 365 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 366 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 367 def int_x86_sse2_paddus_b : GCCBuiltin<"__builtin_ia32_paddusb128">, 368 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 369 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 370 def int_x86_sse2_paddus_w : GCCBuiltin<"__builtin_ia32_paddusw128">, 371 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 372 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 373 def int_x86_sse2_psubs_b : GCCBuiltin<"__builtin_ia32_psubsb128">, 374 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 375 llvm_v16i8_ty], [IntrNoMem]>; 376 def int_x86_sse2_psubs_w : GCCBuiltin<"__builtin_ia32_psubsw128">, 377 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 378 llvm_v8i16_ty], [IntrNoMem]>; 379 def int_x86_sse2_psubus_b : GCCBuiltin<"__builtin_ia32_psubusb128">, 380 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 381 llvm_v16i8_ty], [IntrNoMem]>; 382 def int_x86_sse2_psubus_w : GCCBuiltin<"__builtin_ia32_psubusw128">, 383 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 384 llvm_v8i16_ty], [IntrNoMem]>; 385 def int_x86_sse2_pmulhu_w : GCCBuiltin<"__builtin_ia32_pmulhuw128">, 386 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 387 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 388 def int_x86_sse2_pmulh_w : GCCBuiltin<"__builtin_ia32_pmulhw128">, 389 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 390 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 391 def int_x86_sse2_pmulu_dq : GCCBuiltin<"__builtin_ia32_pmuludq128">, 392 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, 393 llvm_v4i32_ty], [IntrNoMem, Commutative]>; 394 def int_x86_sse2_pmadd_wd : GCCBuiltin<"__builtin_ia32_pmaddwd128">, 395 Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, 396 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 397 def int_x86_sse2_pavg_b : GCCBuiltin<"__builtin_ia32_pavgb128">, 398 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 399 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 400 def int_x86_sse2_pavg_w : GCCBuiltin<"__builtin_ia32_pavgw128">, 401 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 402 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 403 def int_x86_sse2_pmaxu_b : GCCBuiltin<"__builtin_ia32_pmaxub128">, 404 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 405 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 406 def int_x86_sse2_pmaxs_w : GCCBuiltin<"__builtin_ia32_pmaxsw128">, 407 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 408 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 409 def int_x86_sse2_pminu_b : GCCBuiltin<"__builtin_ia32_pminub128">, 410 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 411 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 412 def int_x86_sse2_pmins_w : GCCBuiltin<"__builtin_ia32_pminsw128">, 413 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 414 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 415 def int_x86_sse2_psad_bw : GCCBuiltin<"__builtin_ia32_psadbw128">, 416 Intrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty, 417 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 418} 419 420// Integer shift ops. 421let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 422 def int_x86_sse2_psll_w : GCCBuiltin<"__builtin_ia32_psllw128">, 423 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 424 llvm_v8i16_ty], [IntrNoMem]>; 425 def int_x86_sse2_psll_d : GCCBuiltin<"__builtin_ia32_pslld128">, 426 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 427 llvm_v4i32_ty], [IntrNoMem]>; 428 def int_x86_sse2_psll_q : GCCBuiltin<"__builtin_ia32_psllq128">, 429 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 430 llvm_v2i64_ty], [IntrNoMem]>; 431 def int_x86_sse2_psrl_w : GCCBuiltin<"__builtin_ia32_psrlw128">, 432 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 433 llvm_v8i16_ty], [IntrNoMem]>; 434 def int_x86_sse2_psrl_d : GCCBuiltin<"__builtin_ia32_psrld128">, 435 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 436 llvm_v4i32_ty], [IntrNoMem]>; 437 def int_x86_sse2_psrl_q : GCCBuiltin<"__builtin_ia32_psrlq128">, 438 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 439 llvm_v2i64_ty], [IntrNoMem]>; 440 def int_x86_sse2_psra_w : GCCBuiltin<"__builtin_ia32_psraw128">, 441 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 442 llvm_v8i16_ty], [IntrNoMem]>; 443 def int_x86_sse2_psra_d : GCCBuiltin<"__builtin_ia32_psrad128">, 444 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 445 llvm_v4i32_ty], [IntrNoMem]>; 446 447 def int_x86_sse2_pslli_w : GCCBuiltin<"__builtin_ia32_psllwi128">, 448 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 449 llvm_i32_ty], [IntrNoMem]>; 450 def int_x86_sse2_pslli_d : GCCBuiltin<"__builtin_ia32_pslldi128">, 451 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 452 llvm_i32_ty], [IntrNoMem]>; 453 def int_x86_sse2_pslli_q : GCCBuiltin<"__builtin_ia32_psllqi128">, 454 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 455 llvm_i32_ty], [IntrNoMem]>; 456 def int_x86_sse2_psrli_w : GCCBuiltin<"__builtin_ia32_psrlwi128">, 457 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 458 llvm_i32_ty], [IntrNoMem]>; 459 def int_x86_sse2_psrli_d : GCCBuiltin<"__builtin_ia32_psrldi128">, 460 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 461 llvm_i32_ty], [IntrNoMem]>; 462 def int_x86_sse2_psrli_q : GCCBuiltin<"__builtin_ia32_psrlqi128">, 463 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 464 llvm_i32_ty], [IntrNoMem]>; 465 def int_x86_sse2_psrai_w : GCCBuiltin<"__builtin_ia32_psrawi128">, 466 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 467 llvm_i32_ty], [IntrNoMem]>; 468 def int_x86_sse2_psrai_d : GCCBuiltin<"__builtin_ia32_psradi128">, 469 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 470 llvm_i32_ty], [IntrNoMem]>; 471} 472 473// Conversion ops 474let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 475 def int_x86_sse2_cvtdq2pd : GCCBuiltin<"__builtin_ia32_cvtdq2pd">, 476 Intrinsic<[llvm_v2f64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 477 def int_x86_sse2_cvtdq2ps : GCCBuiltin<"__builtin_ia32_cvtdq2ps">, 478 Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty], [IntrNoMem]>; 479 def int_x86_sse2_cvtpd2dq : GCCBuiltin<"__builtin_ia32_cvtpd2dq">, 480 Intrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 481 def int_x86_sse2_cvttpd2dq : GCCBuiltin<"__builtin_ia32_cvttpd2dq">, 482 Intrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 483 def int_x86_sse2_cvtpd2ps : GCCBuiltin<"__builtin_ia32_cvtpd2ps">, 484 Intrinsic<[llvm_v4f32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 485 def int_x86_sse2_cvtps2dq : GCCBuiltin<"__builtin_ia32_cvtps2dq">, 486 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 487 def int_x86_sse2_cvttps2dq : GCCBuiltin<"__builtin_ia32_cvttps2dq">, 488 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 489 def int_x86_sse2_cvtps2pd : GCCBuiltin<"__builtin_ia32_cvtps2pd">, 490 Intrinsic<[llvm_v2f64_ty], [llvm_v4f32_ty], [IntrNoMem]>; 491 def int_x86_sse2_cvtsd2si : GCCBuiltin<"__builtin_ia32_cvtsd2si">, 492 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 493 def int_x86_sse2_cvtsd2si64 : GCCBuiltin<"__builtin_ia32_cvtsd2si64">, 494 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 495 def int_x86_sse2_cvttsd2si : GCCBuiltin<"__builtin_ia32_cvttsd2si">, 496 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 497 def int_x86_sse2_cvttsd2si64 : GCCBuiltin<"__builtin_ia32_cvttsd2si64">, 498 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 499 def int_x86_sse2_cvtsi2sd : GCCBuiltin<"__builtin_ia32_cvtsi2sd">, 500 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 501 llvm_i32_ty], [IntrNoMem]>; 502 def int_x86_sse2_cvtsi642sd : GCCBuiltin<"__builtin_ia32_cvtsi642sd">, 503 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 504 llvm_i64_ty], [IntrNoMem]>; 505 def int_x86_sse2_cvtsd2ss : GCCBuiltin<"__builtin_ia32_cvtsd2ss">, 506 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 507 llvm_v2f64_ty], [IntrNoMem]>; 508 def int_x86_sse2_cvtss2sd : GCCBuiltin<"__builtin_ia32_cvtss2sd">, 509 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 510 llvm_v4f32_ty], [IntrNoMem]>; 511 def int_x86_sse_cvtpd2pi : GCCBuiltin<"__builtin_ia32_cvtpd2pi">, 512 Intrinsic<[llvm_x86mmx_ty], [llvm_v2f64_ty], [IntrNoMem]>; 513 def int_x86_sse_cvttpd2pi: GCCBuiltin<"__builtin_ia32_cvttpd2pi">, 514 Intrinsic<[llvm_x86mmx_ty], [llvm_v2f64_ty], [IntrNoMem]>; 515 def int_x86_sse_cvtpi2pd : GCCBuiltin<"__builtin_ia32_cvtpi2pd">, 516 Intrinsic<[llvm_v2f64_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 517} 518 519// SIMD store ops 520let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 521 def int_x86_sse2_storeu_pd : GCCBuiltin<"__builtin_ia32_storeupd">, 522 Intrinsic<[], [llvm_ptr_ty, 523 llvm_v2f64_ty], [IntrReadWriteArgMem]>; 524 def int_x86_sse2_storeu_dq : GCCBuiltin<"__builtin_ia32_storedqu">, 525 Intrinsic<[], [llvm_ptr_ty, 526 llvm_v16i8_ty], [IntrReadWriteArgMem]>; 527 def int_x86_sse2_storel_dq : GCCBuiltin<"__builtin_ia32_storelv4si">, 528 Intrinsic<[], [llvm_ptr_ty, 529 llvm_v4i32_ty], [IntrReadWriteArgMem]>; 530} 531 532// Misc. 533let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 534 def int_x86_sse2_packsswb_128 : GCCBuiltin<"__builtin_ia32_packsswb128">, 535 Intrinsic<[llvm_v16i8_ty], [llvm_v8i16_ty, 536 llvm_v8i16_ty], [IntrNoMem]>; 537 def int_x86_sse2_packssdw_128 : GCCBuiltin<"__builtin_ia32_packssdw128">, 538 Intrinsic<[llvm_v8i16_ty], [llvm_v4i32_ty, 539 llvm_v4i32_ty], [IntrNoMem]>; 540 def int_x86_sse2_packuswb_128 : GCCBuiltin<"__builtin_ia32_packuswb128">, 541 Intrinsic<[llvm_v16i8_ty], [llvm_v8i16_ty, 542 llvm_v8i16_ty], [IntrNoMem]>; 543 def int_x86_sse2_movmsk_pd : GCCBuiltin<"__builtin_ia32_movmskpd">, 544 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 545 def int_x86_sse2_pmovmskb_128 : GCCBuiltin<"__builtin_ia32_pmovmskb128">, 546 Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>; 547 def int_x86_sse2_maskmov_dqu : GCCBuiltin<"__builtin_ia32_maskmovdqu">, 548 Intrinsic<[], [llvm_v16i8_ty, 549 llvm_v16i8_ty, llvm_ptr_ty], []>; 550 def int_x86_sse2_clflush : GCCBuiltin<"__builtin_ia32_clflush">, 551 Intrinsic<[], [llvm_ptr_ty], []>; 552 def int_x86_sse2_lfence : GCCBuiltin<"__builtin_ia32_lfence">, 553 Intrinsic<[], [], []>; 554 def int_x86_sse2_mfence : GCCBuiltin<"__builtin_ia32_mfence">, 555 Intrinsic<[], [], []>; 556 def int_x86_sse2_pause : GCCBuiltin<"__builtin_ia32_pause">, 557 Intrinsic<[], [], []>; 558} 559 560//===----------------------------------------------------------------------===// 561// SSE3 562 563// Addition / subtraction ops. 564let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 565 def int_x86_sse3_addsub_ps : GCCBuiltin<"__builtin_ia32_addsubps">, 566 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 567 llvm_v4f32_ty], [IntrNoMem]>; 568 def int_x86_sse3_addsub_pd : GCCBuiltin<"__builtin_ia32_addsubpd">, 569 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 570 llvm_v2f64_ty], [IntrNoMem]>; 571} 572 573// Horizontal ops. 574let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 575 def int_x86_sse3_hadd_ps : GCCBuiltin<"__builtin_ia32_haddps">, 576 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 577 llvm_v4f32_ty], [IntrNoMem]>; 578 def int_x86_sse3_hadd_pd : GCCBuiltin<"__builtin_ia32_haddpd">, 579 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 580 llvm_v2f64_ty], [IntrNoMem]>; 581 def int_x86_sse3_hsub_ps : GCCBuiltin<"__builtin_ia32_hsubps">, 582 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 583 llvm_v4f32_ty], [IntrNoMem]>; 584 def int_x86_sse3_hsub_pd : GCCBuiltin<"__builtin_ia32_hsubpd">, 585 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 586 llvm_v2f64_ty], [IntrNoMem]>; 587} 588 589// Specialized unaligned load. 590let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 591 def int_x86_sse3_ldu_dq : GCCBuiltin<"__builtin_ia32_lddqu">, 592 Intrinsic<[llvm_v16i8_ty], [llvm_ptr_ty], [IntrReadMem]>; 593} 594 595// Thread synchronization ops. 596let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 597 def int_x86_sse3_monitor : GCCBuiltin<"__builtin_ia32_monitor">, 598 Intrinsic<[], [llvm_ptr_ty, 599 llvm_i32_ty, llvm_i32_ty], []>; 600 def int_x86_sse3_mwait : GCCBuiltin<"__builtin_ia32_mwait">, 601 Intrinsic<[], [llvm_i32_ty, 602 llvm_i32_ty], []>; 603} 604 605//===----------------------------------------------------------------------===// 606// SSSE3 607 608// Horizontal arithmetic ops 609let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 610 def int_x86_ssse3_phadd_w : GCCBuiltin<"__builtin_ia32_phaddw">, 611 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 612 llvm_x86mmx_ty], [IntrNoMem]>; 613 def int_x86_ssse3_phadd_w_128 : GCCBuiltin<"__builtin_ia32_phaddw128">, 614 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 615 llvm_v8i16_ty], [IntrNoMem]>; 616 617 def int_x86_ssse3_phadd_d : GCCBuiltin<"__builtin_ia32_phaddd">, 618 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 619 llvm_x86mmx_ty], [IntrNoMem]>; 620 def int_x86_ssse3_phadd_d_128 : GCCBuiltin<"__builtin_ia32_phaddd128">, 621 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 622 llvm_v4i32_ty], [IntrNoMem]>; 623 624 def int_x86_ssse3_phadd_sw : GCCBuiltin<"__builtin_ia32_phaddsw">, 625 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 626 llvm_x86mmx_ty], [IntrNoMem]>; 627 def int_x86_ssse3_phadd_sw_128 : GCCBuiltin<"__builtin_ia32_phaddsw128">, 628 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 629 llvm_v8i16_ty], [IntrNoMem]>; 630 631 def int_x86_ssse3_phsub_w : GCCBuiltin<"__builtin_ia32_phsubw">, 632 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 633 llvm_x86mmx_ty], [IntrNoMem]>; 634 def int_x86_ssse3_phsub_w_128 : GCCBuiltin<"__builtin_ia32_phsubw128">, 635 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 636 llvm_v8i16_ty], [IntrNoMem]>; 637 638 def int_x86_ssse3_phsub_d : GCCBuiltin<"__builtin_ia32_phsubd">, 639 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 640 llvm_x86mmx_ty], [IntrNoMem]>; 641 def int_x86_ssse3_phsub_d_128 : GCCBuiltin<"__builtin_ia32_phsubd128">, 642 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 643 llvm_v4i32_ty], [IntrNoMem]>; 644 645 def int_x86_ssse3_phsub_sw : GCCBuiltin<"__builtin_ia32_phsubsw">, 646 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 647 llvm_x86mmx_ty], [IntrNoMem]>; 648 def int_x86_ssse3_phsub_sw_128 : GCCBuiltin<"__builtin_ia32_phsubsw128">, 649 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 650 llvm_v8i16_ty], [IntrNoMem]>; 651 652 def int_x86_ssse3_pmadd_ub_sw : GCCBuiltin<"__builtin_ia32_pmaddubsw">, 653 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 654 llvm_x86mmx_ty], [IntrNoMem]>; 655 def int_x86_ssse3_pmadd_ub_sw_128 : GCCBuiltin<"__builtin_ia32_pmaddubsw128">, 656 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, 657 llvm_v16i8_ty], [IntrNoMem]>; 658} 659 660// Packed multiply high with round and scale 661let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 662 def int_x86_ssse3_pmul_hr_sw : GCCBuiltin<"__builtin_ia32_pmulhrsw">, 663 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 664 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 665 def int_x86_ssse3_pmul_hr_sw_128 : GCCBuiltin<"__builtin_ia32_pmulhrsw128">, 666 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 667 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 668} 669 670// Shuffle ops 671let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 672 def int_x86_ssse3_pshuf_b : GCCBuiltin<"__builtin_ia32_pshufb">, 673 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 674 llvm_x86mmx_ty], [IntrNoMem]>; 675 def int_x86_ssse3_pshuf_b_128 : GCCBuiltin<"__builtin_ia32_pshufb128">, 676 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 677 llvm_v16i8_ty], [IntrNoMem]>; 678 def int_x86_sse2_pshuf_d : GCCBuiltin<"__builtin_ia32_pshufd">, 679 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i8_ty], 680 [IntrNoMem]>; 681 def int_x86_sse2_pshufl_w : GCCBuiltin<"__builtin_ia32_pshuflw">, 682 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i8_ty], 683 [IntrNoMem]>; 684 def int_x86_sse2_pshufh_w : GCCBuiltin<"__builtin_ia32_pshufhw">, 685 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i8_ty], 686 [IntrNoMem]>; 687 def int_x86_sse_pshuf_w : GCCBuiltin<"__builtin_ia32_pshufw">, 688 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i8_ty], 689 [IntrNoMem]>; 690} 691 692// Sign ops 693let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 694 def int_x86_ssse3_psign_b : GCCBuiltin<"__builtin_ia32_psignb">, 695 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 696 llvm_x86mmx_ty], [IntrNoMem]>; 697 def int_x86_ssse3_psign_b_128 : GCCBuiltin<"__builtin_ia32_psignb128">, 698 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 699 llvm_v16i8_ty], [IntrNoMem]>; 700 701 def int_x86_ssse3_psign_w : GCCBuiltin<"__builtin_ia32_psignw">, 702 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 703 llvm_x86mmx_ty], [IntrNoMem]>; 704 def int_x86_ssse3_psign_w_128 : GCCBuiltin<"__builtin_ia32_psignw128">, 705 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 706 llvm_v8i16_ty], [IntrNoMem]>; 707 708 def int_x86_ssse3_psign_d : GCCBuiltin<"__builtin_ia32_psignd">, 709 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 710 llvm_x86mmx_ty], [IntrNoMem]>; 711 def int_x86_ssse3_psign_d_128 : GCCBuiltin<"__builtin_ia32_psignd128">, 712 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 713 llvm_v4i32_ty], [IntrNoMem]>; 714} 715 716// Absolute value ops 717let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 718 def int_x86_ssse3_pabs_b : GCCBuiltin<"__builtin_ia32_pabsb">, 719 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 720 def int_x86_ssse3_pabs_b_128 : GCCBuiltin<"__builtin_ia32_pabsb128">, 721 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], [IntrNoMem]>; 722 723 def int_x86_ssse3_pabs_w : GCCBuiltin<"__builtin_ia32_pabsw">, 724 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 725 def int_x86_ssse3_pabs_w_128 : GCCBuiltin<"__builtin_ia32_pabsw128">, 726 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], [IntrNoMem]>; 727 728 def int_x86_ssse3_pabs_d : GCCBuiltin<"__builtin_ia32_pabsd">, 729 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 730 def int_x86_ssse3_pabs_d_128 : GCCBuiltin<"__builtin_ia32_pabsd128">, 731 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>; 732} 733 734//===----------------------------------------------------------------------===// 735// SSE4.1 736 737// FP rounding ops 738let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 739 def int_x86_sse41_round_ss : GCCBuiltin<"__builtin_ia32_roundss">, 740 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 741 llvm_i32_ty], [IntrNoMem]>; 742 def int_x86_sse41_round_ps : GCCBuiltin<"__builtin_ia32_roundps">, 743 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 744 llvm_i32_ty], [IntrNoMem]>; 745 def int_x86_sse41_round_sd : GCCBuiltin<"__builtin_ia32_roundsd">, 746 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 747 llvm_i32_ty], [IntrNoMem]>; 748 def int_x86_sse41_round_pd : GCCBuiltin<"__builtin_ia32_roundpd">, 749 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 750 llvm_i32_ty], [IntrNoMem]>; 751} 752 753// Vector sign and zero extend 754let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 755 def int_x86_sse41_pmovsxbd : GCCBuiltin<"__builtin_ia32_pmovsxbd128">, 756 Intrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], 757 [IntrNoMem]>; 758 def int_x86_sse41_pmovsxbq : GCCBuiltin<"__builtin_ia32_pmovsxbq128">, 759 Intrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty], 760 [IntrNoMem]>; 761 def int_x86_sse41_pmovsxbw : GCCBuiltin<"__builtin_ia32_pmovsxbw128">, 762 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], 763 [IntrNoMem]>; 764 def int_x86_sse41_pmovsxdq : GCCBuiltin<"__builtin_ia32_pmovsxdq128">, 765 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], 766 [IntrNoMem]>; 767 def int_x86_sse41_pmovsxwd : GCCBuiltin<"__builtin_ia32_pmovsxwd128">, 768 Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], 769 [IntrNoMem]>; 770 def int_x86_sse41_pmovsxwq : GCCBuiltin<"__builtin_ia32_pmovsxwq128">, 771 Intrinsic<[llvm_v2i64_ty], [llvm_v8i16_ty], 772 [IntrNoMem]>; 773 def int_x86_sse41_pmovzxbd : GCCBuiltin<"__builtin_ia32_pmovzxbd128">, 774 Intrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], 775 [IntrNoMem]>; 776 def int_x86_sse41_pmovzxbq : GCCBuiltin<"__builtin_ia32_pmovzxbq128">, 777 Intrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty], 778 [IntrNoMem]>; 779 def int_x86_sse41_pmovzxbw : GCCBuiltin<"__builtin_ia32_pmovzxbw128">, 780 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], 781 [IntrNoMem]>; 782 def int_x86_sse41_pmovzxdq : GCCBuiltin<"__builtin_ia32_pmovzxdq128">, 783 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], 784 [IntrNoMem]>; 785 def int_x86_sse41_pmovzxwd : GCCBuiltin<"__builtin_ia32_pmovzxwd128">, 786 Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], 787 [IntrNoMem]>; 788 def int_x86_sse41_pmovzxwq : GCCBuiltin<"__builtin_ia32_pmovzxwq128">, 789 Intrinsic<[llvm_v2i64_ty], [llvm_v8i16_ty], 790 [IntrNoMem]>; 791} 792 793// Vector min element 794let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 795 def int_x86_sse41_phminposuw : GCCBuiltin<"__builtin_ia32_phminposuw128">, 796 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], 797 [IntrNoMem]>; 798} 799 800// Vector compare, min, max 801let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 802 def int_x86_sse41_pmaxsb : GCCBuiltin<"__builtin_ia32_pmaxsb128">, 803 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 804 [IntrNoMem, Commutative]>; 805 def int_x86_sse41_pmaxsd : GCCBuiltin<"__builtin_ia32_pmaxsd128">, 806 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 807 [IntrNoMem, Commutative]>; 808 def int_x86_sse41_pmaxud : GCCBuiltin<"__builtin_ia32_pmaxud128">, 809 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 810 [IntrNoMem, Commutative]>; 811 def int_x86_sse41_pmaxuw : GCCBuiltin<"__builtin_ia32_pmaxuw128">, 812 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 813 [IntrNoMem, Commutative]>; 814 def int_x86_sse41_pminsb : GCCBuiltin<"__builtin_ia32_pminsb128">, 815 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 816 [IntrNoMem, Commutative]>; 817 def int_x86_sse41_pminsd : GCCBuiltin<"__builtin_ia32_pminsd128">, 818 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 819 [IntrNoMem, Commutative]>; 820 def int_x86_sse41_pminud : GCCBuiltin<"__builtin_ia32_pminud128">, 821 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 822 [IntrNoMem, Commutative]>; 823 def int_x86_sse41_pminuw : GCCBuiltin<"__builtin_ia32_pminuw128">, 824 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 825 [IntrNoMem, Commutative]>; 826} 827 828// Advanced Encryption Standard (AES) Instructions 829let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 830 def int_x86_aesni_aesimc : GCCBuiltin<"__builtin_ia32_aesimc128">, 831 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], 832 [IntrNoMem]>; 833 def int_x86_aesni_aesenc : GCCBuiltin<"__builtin_ia32_aesenc128">, 834 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 835 [IntrNoMem]>; 836 def int_x86_aesni_aesenclast : GCCBuiltin<"__builtin_ia32_aesenclast128">, 837 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 838 [IntrNoMem]>; 839 def int_x86_aesni_aesdec : GCCBuiltin<"__builtin_ia32_aesdec128">, 840 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 841 [IntrNoMem]>; 842 def int_x86_aesni_aesdeclast : GCCBuiltin<"__builtin_ia32_aesdeclast128">, 843 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 844 [IntrNoMem]>; 845 def int_x86_aesni_aeskeygenassist : 846 GCCBuiltin<"__builtin_ia32_aeskeygenassist128">, 847 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i8_ty], 848 [IntrNoMem]>; 849} 850 851// PCLMUL instruction 852let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 853 def int_x86_pclmulqdq : GCCBuiltin<"__builtin_ia32_pclmulqdq128">, 854 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 855 [IntrNoMem]>; 856} 857 858// Vector pack 859let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 860 def int_x86_sse41_packusdw : GCCBuiltin<"__builtin_ia32_packusdw128">, 861 Intrinsic<[llvm_v8i16_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 862 [IntrNoMem]>; 863} 864 865// Vector multiply 866let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 867 def int_x86_sse41_pmuldq : GCCBuiltin<"__builtin_ia32_pmuldq128">, 868 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 869 [IntrNoMem, Commutative]>; 870} 871 872// Vector extract 873let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 874 def int_x86_sse41_pextrb : 875 Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty, llvm_i32_ty], 876 [IntrNoMem]>; 877 def int_x86_sse41_pextrd : 878 Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty, llvm_i32_ty], 879 [IntrNoMem]>; 880 def int_x86_sse41_pextrq : 881 Intrinsic<[llvm_i64_ty], [llvm_v2i64_ty, llvm_i32_ty], 882 [IntrNoMem]>; 883 def int_x86_sse41_extractps : GCCBuiltin<"__builtin_ia32_extractps128">, 884 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], 885 [IntrNoMem]>; 886} 887 888// Vector insert 889let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 890 def int_x86_sse41_insertps : GCCBuiltin<"__builtin_ia32_insertps128">, 891 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 892 [IntrNoMem]>; 893} 894 895// Vector blend 896let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 897 def int_x86_sse41_pblendvb : GCCBuiltin<"__builtin_ia32_pblendvb128">, 898 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty,llvm_v16i8_ty], 899 [IntrNoMem]>; 900 def int_x86_sse41_blendvpd : GCCBuiltin<"__builtin_ia32_blendvpd">, 901 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty,llvm_v2f64_ty], 902 [IntrNoMem]>; 903 def int_x86_sse41_blendvps : GCCBuiltin<"__builtin_ia32_blendvps">, 904 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty,llvm_v4f32_ty], 905 [IntrNoMem]>; 906} 907 908// Vector dot product 909let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 910 def int_x86_sse41_dppd : GCCBuiltin<"__builtin_ia32_dppd">, 911 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 912 [IntrNoMem, Commutative]>; 913 def int_x86_sse41_dpps : GCCBuiltin<"__builtin_ia32_dpps">, 914 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 915 [IntrNoMem, Commutative]>; 916} 917 918// Vector sum of absolute differences 919let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 920 def int_x86_sse41_mpsadbw : GCCBuiltin<"__builtin_ia32_mpsadbw128">, 921 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty,llvm_i8_ty], 922 [IntrNoMem, Commutative]>; 923} 924 925// Cacheability support ops 926let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 927 def int_x86_sse41_movntdqa : GCCBuiltin<"__builtin_ia32_movntdqa">, 928 Intrinsic<[llvm_v2i64_ty], [llvm_ptr_ty], [IntrReadMem]>; 929} 930 931// Test instruction with bitwise comparison. 932let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 933 def int_x86_sse41_ptestz : GCCBuiltin<"__builtin_ia32_ptestz128">, 934 Intrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 935 [IntrNoMem]>; 936 def int_x86_sse41_ptestc : GCCBuiltin<"__builtin_ia32_ptestc128">, 937 Intrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 938 [IntrNoMem]>; 939 def int_x86_sse41_ptestnzc : GCCBuiltin<"__builtin_ia32_ptestnzc128">, 940 Intrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 941 [IntrNoMem]>; 942} 943 944//===----------------------------------------------------------------------===// 945// SSE4.2 946 947// Miscellaneous 948// CRC Instruction 949let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 950 def int_x86_sse42_crc32_32_8 : GCCBuiltin<"__builtin_ia32_crc32qi">, 951 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i8_ty], 952 [IntrNoMem]>; 953 def int_x86_sse42_crc32_32_16 : GCCBuiltin<"__builtin_ia32_crc32hi">, 954 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i16_ty], 955 [IntrNoMem]>; 956 def int_x86_sse42_crc32_32_32 : GCCBuiltin<"__builtin_ia32_crc32si">, 957 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 958 [IntrNoMem]>; 959 def int_x86_sse42_crc32_64_64 : GCCBuiltin<"__builtin_ia32_crc32di">, 960 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], 961 [IntrNoMem]>; 962} 963 964// String/text processing ops. 965let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 966 def int_x86_sse42_pcmpistrm128 : GCCBuiltin<"__builtin_ia32_pcmpistrm128">, 967 Intrinsic<[llvm_v16i8_ty], 968 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 969 [IntrNoMem]>; 970 def int_x86_sse42_pcmpistri128 : GCCBuiltin<"__builtin_ia32_pcmpistri128">, 971 Intrinsic<[llvm_i32_ty], 972 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 973 [IntrNoMem]>; 974 def int_x86_sse42_pcmpistria128 : GCCBuiltin<"__builtin_ia32_pcmpistria128">, 975 Intrinsic<[llvm_i32_ty], 976 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 977 [IntrNoMem]>; 978 def int_x86_sse42_pcmpistric128 : GCCBuiltin<"__builtin_ia32_pcmpistric128">, 979 Intrinsic<[llvm_i32_ty], 980 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 981 [IntrNoMem]>; 982 def int_x86_sse42_pcmpistrio128 : GCCBuiltin<"__builtin_ia32_pcmpistrio128">, 983 Intrinsic<[llvm_i32_ty], 984 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 985 [IntrNoMem]>; 986 def int_x86_sse42_pcmpistris128 : GCCBuiltin<"__builtin_ia32_pcmpistris128">, 987 Intrinsic<[llvm_i32_ty], 988 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 989 [IntrNoMem]>; 990 def int_x86_sse42_pcmpistriz128 : GCCBuiltin<"__builtin_ia32_pcmpistriz128">, 991 Intrinsic<[llvm_i32_ty], 992 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 993 [IntrNoMem]>; 994 def int_x86_sse42_pcmpestrm128 : GCCBuiltin<"__builtin_ia32_pcmpestrm128">, 995 Intrinsic<[llvm_v16i8_ty], 996 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 997 llvm_i8_ty], 998 [IntrNoMem]>; 999 def int_x86_sse42_pcmpestri128 : GCCBuiltin<"__builtin_ia32_pcmpestri128">, 1000 Intrinsic<[llvm_i32_ty], 1001 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 1002 llvm_i8_ty], 1003 [IntrNoMem]>; 1004 def int_x86_sse42_pcmpestria128 : GCCBuiltin<"__builtin_ia32_pcmpestria128">, 1005 Intrinsic<[llvm_i32_ty], 1006 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 1007 llvm_i8_ty], 1008 [IntrNoMem]>; 1009 def int_x86_sse42_pcmpestric128 : GCCBuiltin<"__builtin_ia32_pcmpestric128">, 1010 Intrinsic<[llvm_i32_ty], 1011 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 1012 llvm_i8_ty], 1013 [IntrNoMem]>; 1014 def int_x86_sse42_pcmpestrio128 : GCCBuiltin<"__builtin_ia32_pcmpestrio128">, 1015 Intrinsic<[llvm_i32_ty], 1016 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 1017 llvm_i8_ty], 1018 [IntrNoMem]>; 1019 def int_x86_sse42_pcmpestris128 : GCCBuiltin<"__builtin_ia32_pcmpestris128">, 1020 Intrinsic<[llvm_i32_ty], 1021 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 1022 llvm_i8_ty], 1023 [IntrNoMem]>; 1024 def int_x86_sse42_pcmpestriz128 : GCCBuiltin<"__builtin_ia32_pcmpestriz128">, 1025 Intrinsic<[llvm_i32_ty], 1026 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 1027 llvm_i8_ty], 1028 [IntrNoMem]>; 1029} 1030 1031//===----------------------------------------------------------------------===// 1032// SSE4A 1033 1034let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1035 def int_x86_sse4a_extrqi : GCCBuiltin<"__builtin_ia32_extrqi">, 1036 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i8_ty, llvm_i8_ty], 1037 [IntrNoMem]>; 1038 def int_x86_sse4a_extrq : GCCBuiltin<"__builtin_ia32_extrq">, 1039 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v16i8_ty], [IntrNoMem]>; 1040 1041 def int_x86_sse4a_insertqi : GCCBuiltin<"__builtin_ia32_insertqi">, 1042 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 1043 llvm_i8_ty, llvm_i8_ty], [IntrNoMem]>; 1044 def int_x86_sse4a_insertq : GCCBuiltin<"__builtin_ia32_insertq">, 1045 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>; 1046 1047 def int_x86_sse4a_movnt_ss : GCCBuiltin<"__builtin_ia32_movntss">, 1048 Intrinsic<[], [llvm_ptr_ty, llvm_v4f32_ty], []>; 1049 def int_x86_sse4a_movnt_sd : GCCBuiltin<"__builtin_ia32_movntsd">, 1050 Intrinsic<[], [llvm_ptr_ty, llvm_v2f64_ty], []>; 1051} 1052 1053//===----------------------------------------------------------------------===// 1054// AVX 1055 1056// Arithmetic ops 1057let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1058 def int_x86_avx_addsub_pd_256 : GCCBuiltin<"__builtin_ia32_addsubpd256">, 1059 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1060 llvm_v4f64_ty], [IntrNoMem]>; 1061 def int_x86_avx_addsub_ps_256 : GCCBuiltin<"__builtin_ia32_addsubps256">, 1062 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1063 llvm_v8f32_ty], [IntrNoMem]>; 1064 def int_x86_avx_max_pd_256 : GCCBuiltin<"__builtin_ia32_maxpd256">, 1065 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1066 llvm_v4f64_ty], [IntrNoMem]>; 1067 def int_x86_avx_max_ps_256 : GCCBuiltin<"__builtin_ia32_maxps256">, 1068 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1069 llvm_v8f32_ty], [IntrNoMem]>; 1070 def int_x86_avx_min_pd_256 : GCCBuiltin<"__builtin_ia32_minpd256">, 1071 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1072 llvm_v4f64_ty], [IntrNoMem]>; 1073 def int_x86_avx_min_ps_256 : GCCBuiltin<"__builtin_ia32_minps256">, 1074 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1075 llvm_v8f32_ty], [IntrNoMem]>; 1076 1077 def int_x86_avx_sqrt_pd_256 : GCCBuiltin<"__builtin_ia32_sqrtpd256">, 1078 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1079 def int_x86_avx_sqrt_ps_256 : GCCBuiltin<"__builtin_ia32_sqrtps256">, 1080 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1081 1082 def int_x86_avx_rsqrt_ps_256 : GCCBuiltin<"__builtin_ia32_rsqrtps256">, 1083 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1084 1085 def int_x86_avx_rcp_ps_256 : GCCBuiltin<"__builtin_ia32_rcpps256">, 1086 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1087 1088 def int_x86_avx_round_pd_256 : GCCBuiltin<"__builtin_ia32_roundpd256">, 1089 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1090 llvm_i32_ty], [IntrNoMem]>; 1091 def int_x86_avx_round_ps_256 : GCCBuiltin<"__builtin_ia32_roundps256">, 1092 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1093 llvm_i32_ty], [IntrNoMem]>; 1094} 1095 1096// Horizontal ops 1097let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1098 def int_x86_avx_hadd_pd_256 : GCCBuiltin<"__builtin_ia32_haddpd256">, 1099 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1100 llvm_v4f64_ty], [IntrNoMem]>; 1101 def int_x86_avx_hsub_ps_256 : GCCBuiltin<"__builtin_ia32_hsubps256">, 1102 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1103 llvm_v8f32_ty], [IntrNoMem]>; 1104 def int_x86_avx_hsub_pd_256 : GCCBuiltin<"__builtin_ia32_hsubpd256">, 1105 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1106 llvm_v4f64_ty], [IntrNoMem]>; 1107 def int_x86_avx_hadd_ps_256 : GCCBuiltin<"__builtin_ia32_haddps256">, 1108 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1109 llvm_v8f32_ty], [IntrNoMem]>; 1110} 1111 1112// Vector permutation 1113let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1114 def int_x86_avx_vpermilvar_pd : GCCBuiltin<"__builtin_ia32_vpermilvarpd">, 1115 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 1116 llvm_v2i64_ty], [IntrNoMem]>; 1117 def int_x86_avx_vpermilvar_ps : GCCBuiltin<"__builtin_ia32_vpermilvarps">, 1118 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 1119 llvm_v4i32_ty], [IntrNoMem]>; 1120 1121 def int_x86_avx_vpermilvar_pd_256 : 1122 GCCBuiltin<"__builtin_ia32_vpermilvarpd256">, 1123 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4i64_ty], [IntrNoMem]>; 1124 def int_x86_avx_vpermilvar_ps_256 : 1125 GCCBuiltin<"__builtin_ia32_vpermilvarps256">, 1126 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8i32_ty], [IntrNoMem]>; 1127 1128 def int_x86_avx_vperm2f128_pd_256 : 1129 GCCBuiltin<"__builtin_ia32_vperm2f128_pd256">, 1130 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1131 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 1132 def int_x86_avx_vperm2f128_ps_256 : 1133 GCCBuiltin<"__builtin_ia32_vperm2f128_ps256">, 1134 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1135 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 1136 def int_x86_avx_vperm2f128_si_256 : 1137 GCCBuiltin<"__builtin_ia32_vperm2f128_si256">, 1138 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1139 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 1140 1141 def int_x86_avx512_mask_vpermi2var_d_128 : 1142 GCCBuiltin<"__builtin_ia32_vpermi2vard128_mask">, 1143 Intrinsic<[llvm_v4i32_ty], 1144 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 1145 [IntrNoMem]>; 1146 1147 def int_x86_avx512_mask_vpermi2var_d_256 : 1148 GCCBuiltin<"__builtin_ia32_vpermi2vard256_mask">, 1149 Intrinsic<[llvm_v8i32_ty], 1150 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 1151 [IntrNoMem]>; 1152 1153 def int_x86_avx512_mask_vpermi2var_d_512 : 1154 GCCBuiltin<"__builtin_ia32_vpermi2vard512_mask">, 1155 Intrinsic<[llvm_v16i32_ty], 1156 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 1157 [IntrNoMem]>; 1158 1159 def int_x86_avx512_mask_vpermi2var_hi_128 : 1160 GCCBuiltin<"__builtin_ia32_vpermi2varhi128_mask">, 1161 Intrinsic<[llvm_v8i16_ty], 1162 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 1163 [IntrNoMem]>; 1164 1165 def int_x86_avx512_mask_vpermi2var_hi_256 : 1166 GCCBuiltin<"__builtin_ia32_vpermi2varhi256_mask">, 1167 Intrinsic<[llvm_v16i16_ty], 1168 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 1169 [IntrNoMem]>; 1170 1171 def int_x86_avx512_mask_vpermi2var_hi_512 : 1172 GCCBuiltin<"__builtin_ia32_vpermi2varhi512_mask">, 1173 Intrinsic<[llvm_v32i16_ty], 1174 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 1175 [IntrNoMem]>; 1176 1177 def int_x86_avx512_mask_vpermi2var_pd_128 : 1178 GCCBuiltin<"__builtin_ia32_vpermi2varpd128_mask">, 1179 Intrinsic<[llvm_v2f64_ty], 1180 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty], 1181 [IntrNoMem]>; 1182 1183 def int_x86_avx512_mask_vpermi2var_pd_256 : 1184 GCCBuiltin<"__builtin_ia32_vpermi2varpd256_mask">, 1185 Intrinsic<[llvm_v4f64_ty], 1186 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], 1187 [IntrNoMem]>; 1188 1189 def int_x86_avx512_mask_vpermi2var_pd_512 : 1190 GCCBuiltin<"__builtin_ia32_vpermi2varpd512_mask">, 1191 Intrinsic<[llvm_v8f64_ty], 1192 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_v8f64_ty, llvm_i8_ty], 1193 [IntrNoMem]>; 1194 1195 def int_x86_avx512_mask_vpermi2var_ps_128 : 1196 GCCBuiltin<"__builtin_ia32_vpermi2varps128_mask">, 1197 Intrinsic<[llvm_v4f32_ty], 1198 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty], 1199 [IntrNoMem]>; 1200 1201 def int_x86_avx512_mask_vpermi2var_ps_256 : 1202 GCCBuiltin<"__builtin_ia32_vpermi2varps256_mask">, 1203 Intrinsic<[llvm_v8f32_ty], 1204 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], 1205 [IntrNoMem]>; 1206 1207 def int_x86_avx512_mask_vpermi2var_ps_512 : 1208 GCCBuiltin<"__builtin_ia32_vpermi2varps512_mask">, 1209 Intrinsic<[llvm_v16f32_ty], 1210 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_v16f32_ty, llvm_i16_ty], 1211 [IntrNoMem]>; 1212 1213 def int_x86_avx512_mask_vpermi2var_q_128 : 1214 GCCBuiltin<"__builtin_ia32_vpermi2varq128_mask">, 1215 Intrinsic<[llvm_v2i64_ty], 1216 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 1217 [IntrNoMem]>; 1218 1219 def int_x86_avx512_mask_vpermi2var_q_256 : 1220 GCCBuiltin<"__builtin_ia32_vpermi2varq256_mask">, 1221 Intrinsic<[llvm_v4i64_ty], 1222 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 1223 [IntrNoMem]>; 1224 1225 def int_x86_avx512_mask_vpermi2var_q_512 : 1226 GCCBuiltin<"__builtin_ia32_vpermi2varq512_mask">, 1227 Intrinsic<[llvm_v8i64_ty], 1228 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 1229 [IntrNoMem]>; 1230 1231 def int_x86_avx512_mask_vpermt2var_d_512: 1232 GCCBuiltin<"__builtin_ia32_vpermt2vard512_mask">, 1233 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1234 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 1235 1236 def int_x86_avx512_mask_vpermt2var_q_512: 1237 GCCBuiltin<"__builtin_ia32_vpermt2varq512_mask">, 1238 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1239 llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 1240 1241 def int_x86_avx512_mask_vpermt2var_ps_512: 1242 GCCBuiltin<"__builtin_ia32_vpermt2varps512_mask">, 1243 Intrinsic<[llvm_v16f32_ty], [llvm_v16i32_ty, 1244 llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 1245 1246 def int_x86_avx512_mask_vpermt2var_pd_512: 1247 GCCBuiltin<"__builtin_ia32_vpermt2varpd512_mask">, 1248 Intrinsic<[llvm_v8f64_ty], [llvm_v8i64_ty, 1249 llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty], [IntrNoMem]>; 1250 1251 def int_x86_avx512_mask_vpermt2var_d_128 : 1252 GCCBuiltin<"__builtin_ia32_vpermt2vard128_mask">, 1253 Intrinsic<[llvm_v4i32_ty], 1254 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 1255 [IntrNoMem]>; 1256 1257 def int_x86_avx512_maskz_vpermt2var_d_128 : 1258 GCCBuiltin<"__builtin_ia32_vpermt2vard128_maskz">, 1259 Intrinsic<[llvm_v4i32_ty], 1260 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 1261 [IntrNoMem]>; 1262 1263 def int_x86_avx512_mask_vpermt2var_d_256 : 1264 GCCBuiltin<"__builtin_ia32_vpermt2vard256_mask">, 1265 Intrinsic<[llvm_v8i32_ty], 1266 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 1267 [IntrNoMem]>; 1268 1269 def int_x86_avx512_maskz_vpermt2var_d_256 : 1270 GCCBuiltin<"__builtin_ia32_vpermt2vard256_maskz">, 1271 Intrinsic<[llvm_v8i32_ty], 1272 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 1273 [IntrNoMem]>; 1274 1275 def int_x86_avx512_maskz_vpermt2var_d_512 : 1276 GCCBuiltin<"__builtin_ia32_vpermt2vard512_maskz">, 1277 Intrinsic<[llvm_v16i32_ty], 1278 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 1279 [IntrNoMem]>; 1280 1281 def int_x86_avx512_mask_vpermt2var_hi_128 : 1282 GCCBuiltin<"__builtin_ia32_vpermt2varhi128_mask">, 1283 Intrinsic<[llvm_v8i16_ty], 1284 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 1285 [IntrNoMem]>; 1286 1287 def int_x86_avx512_maskz_vpermt2var_hi_128 : 1288 GCCBuiltin<"__builtin_ia32_vpermt2varhi128_maskz">, 1289 Intrinsic<[llvm_v8i16_ty], 1290 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 1291 [IntrNoMem]>; 1292 1293 def int_x86_avx512_mask_vpermt2var_hi_256 : 1294 GCCBuiltin<"__builtin_ia32_vpermt2varhi256_mask">, 1295 Intrinsic<[llvm_v16i16_ty], 1296 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 1297 [IntrNoMem]>; 1298 1299 def int_x86_avx512_maskz_vpermt2var_hi_256 : 1300 GCCBuiltin<"__builtin_ia32_vpermt2varhi256_maskz">, 1301 Intrinsic<[llvm_v16i16_ty], 1302 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 1303 [IntrNoMem]>; 1304 1305 def int_x86_avx512_mask_vpermt2var_hi_512 : 1306 GCCBuiltin<"__builtin_ia32_vpermt2varhi512_mask">, 1307 Intrinsic<[llvm_v32i16_ty], 1308 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 1309 [IntrNoMem]>; 1310 1311 def int_x86_avx512_maskz_vpermt2var_hi_512 : 1312 GCCBuiltin<"__builtin_ia32_vpermt2varhi512_maskz">, 1313 Intrinsic<[llvm_v32i16_ty], 1314 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 1315 [IntrNoMem]>; 1316 1317 def int_x86_avx512_mask_vpermt2var_pd_128 : 1318 GCCBuiltin<"__builtin_ia32_vpermt2varpd128_mask">, 1319 Intrinsic<[llvm_v2f64_ty], 1320 [llvm_v2i64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 1321 [IntrNoMem]>; 1322 1323 def int_x86_avx512_maskz_vpermt2var_pd_128 : 1324 GCCBuiltin<"__builtin_ia32_vpermt2varpd128_maskz">, 1325 Intrinsic<[llvm_v2f64_ty], 1326 [llvm_v2i64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 1327 [IntrNoMem]>; 1328 1329 def int_x86_avx512_mask_vpermt2var_pd_256 : 1330 GCCBuiltin<"__builtin_ia32_vpermt2varpd256_mask">, 1331 Intrinsic<[llvm_v4f64_ty], 1332 [llvm_v4i64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 1333 [IntrNoMem]>; 1334 1335 def int_x86_avx512_maskz_vpermt2var_pd_256 : 1336 GCCBuiltin<"__builtin_ia32_vpermt2varpd256_maskz">, 1337 Intrinsic<[llvm_v4f64_ty], 1338 [llvm_v4i64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 1339 [IntrNoMem]>; 1340 1341 def int_x86_avx512_maskz_vpermt2var_pd_512 : 1342 GCCBuiltin<"__builtin_ia32_vpermt2varpd512_maskz">, 1343 Intrinsic<[llvm_v8f64_ty], 1344 [llvm_v8i64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty], 1345 [IntrNoMem]>; 1346 1347 def int_x86_avx512_mask_vpermt2var_ps_128 : 1348 GCCBuiltin<"__builtin_ia32_vpermt2varps128_mask">, 1349 Intrinsic<[llvm_v4f32_ty], 1350 [llvm_v4i32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 1351 [IntrNoMem]>; 1352 1353 def int_x86_avx512_maskz_vpermt2var_ps_128 : 1354 GCCBuiltin<"__builtin_ia32_vpermt2varps128_maskz">, 1355 Intrinsic<[llvm_v4f32_ty], 1356 [llvm_v4i32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 1357 [IntrNoMem]>; 1358 1359 def int_x86_avx512_mask_vpermt2var_ps_256 : 1360 GCCBuiltin<"__builtin_ia32_vpermt2varps256_mask">, 1361 Intrinsic<[llvm_v8f32_ty], 1362 [llvm_v8i32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 1363 [IntrNoMem]>; 1364 1365 def int_x86_avx512_maskz_vpermt2var_ps_256 : 1366 GCCBuiltin<"__builtin_ia32_vpermt2varps256_maskz">, 1367 Intrinsic<[llvm_v8f32_ty], 1368 [llvm_v8i32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 1369 [IntrNoMem]>; 1370 1371 def int_x86_avx512_maskz_vpermt2var_ps_512 : 1372 GCCBuiltin<"__builtin_ia32_vpermt2varps512_maskz">, 1373 Intrinsic<[llvm_v16f32_ty], 1374 [llvm_v16i32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], 1375 [IntrNoMem]>; 1376 1377 def int_x86_avx512_mask_vpermt2var_q_128 : 1378 GCCBuiltin<"__builtin_ia32_vpermt2varq128_mask">, 1379 Intrinsic<[llvm_v2i64_ty], 1380 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 1381 [IntrNoMem]>; 1382 1383 def int_x86_avx512_maskz_vpermt2var_q_128 : 1384 GCCBuiltin<"__builtin_ia32_vpermt2varq128_maskz">, 1385 Intrinsic<[llvm_v2i64_ty], 1386 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 1387 [IntrNoMem]>; 1388 1389 def int_x86_avx512_mask_vpermt2var_q_256 : 1390 GCCBuiltin<"__builtin_ia32_vpermt2varq256_mask">, 1391 Intrinsic<[llvm_v4i64_ty], 1392 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 1393 [IntrNoMem]>; 1394 1395 def int_x86_avx512_maskz_vpermt2var_q_256 : 1396 GCCBuiltin<"__builtin_ia32_vpermt2varq256_maskz">, 1397 Intrinsic<[llvm_v4i64_ty], 1398 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 1399 [IntrNoMem]>; 1400 1401 def int_x86_avx512_maskz_vpermt2var_q_512 : 1402 GCCBuiltin<"__builtin_ia32_vpermt2varq512_maskz">, 1403 Intrinsic<[llvm_v8i64_ty], 1404 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 1405 [IntrNoMem]>; 1406 1407 def int_x86_avx512_mask_vpermil_pd_128 : 1408 GCCBuiltin<"__builtin_ia32_vpermilpd_mask">, 1409 Intrinsic<[llvm_v2f64_ty], 1410 [llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, llvm_i8_ty], 1411 [IntrNoMem]>; 1412 1413 def int_x86_avx512_mask_vpermil_pd_256 : 1414 GCCBuiltin<"__builtin_ia32_vpermilpd256_mask">, 1415 Intrinsic<[llvm_v4f64_ty], 1416 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty], 1417 [IntrNoMem]>; 1418 1419 def int_x86_avx512_mask_vpermil_pd_512 : 1420 GCCBuiltin<"__builtin_ia32_vpermilpd512_mask">, 1421 Intrinsic<[llvm_v8f64_ty], 1422 [llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty], 1423 [IntrNoMem]>; 1424 1425 def int_x86_avx512_mask_vpermil_ps_128 : 1426 GCCBuiltin<"__builtin_ia32_vpermilps_mask">, 1427 Intrinsic<[llvm_v4f32_ty], 1428 [llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, llvm_i8_ty], 1429 [IntrNoMem]>; 1430 1431 def int_x86_avx512_mask_vpermil_ps_256 : 1432 GCCBuiltin<"__builtin_ia32_vpermilps256_mask">, 1433 Intrinsic<[llvm_v8f32_ty], 1434 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty], 1435 [IntrNoMem]>; 1436 1437 def int_x86_avx512_mask_vpermil_ps_512 : 1438 GCCBuiltin<"__builtin_ia32_vpermilps512_mask">, 1439 Intrinsic<[llvm_v16f32_ty], 1440 [llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, llvm_i16_ty], 1441 [IntrNoMem]>; 1442 1443 def int_x86_avx512_mask_vpermilvar_pd_256 : 1444 GCCBuiltin<"__builtin_ia32_vpermilvarpd256_mask">, 1445 Intrinsic<[llvm_v4f64_ty], 1446 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], 1447 [IntrNoMem]>; 1448 1449 def int_x86_avx512_mask_vpermilvar_pd_512 : 1450 GCCBuiltin<"__builtin_ia32_vpermilvarpd512_mask">, 1451 Intrinsic<[llvm_v8f64_ty], 1452 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_v8f64_ty, llvm_i8_ty], 1453 [IntrNoMem]>; 1454 1455 def int_x86_avx512_mask_vpermilvar_pd_128 : 1456 GCCBuiltin<"__builtin_ia32_vpermilvarpd_mask">, 1457 Intrinsic<[llvm_v2f64_ty], 1458 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty], 1459 [IntrNoMem]>; 1460 1461 def int_x86_avx512_mask_vpermilvar_ps_256 : 1462 GCCBuiltin<"__builtin_ia32_vpermilvarps256_mask">, 1463 Intrinsic<[llvm_v8f32_ty], 1464 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], 1465 [IntrNoMem]>; 1466 1467 def int_x86_avx512_mask_vpermilvar_ps_512 : 1468 GCCBuiltin<"__builtin_ia32_vpermilvarps512_mask">, 1469 Intrinsic<[llvm_v16f32_ty], 1470 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_v16f32_ty, llvm_i16_ty], 1471 [IntrNoMem]>; 1472 1473 def int_x86_avx512_mask_vpermilvar_ps_128 : 1474 GCCBuiltin<"__builtin_ia32_vpermilvarps_mask">, 1475 Intrinsic<[llvm_v4f32_ty], 1476 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty], 1477 [IntrNoMem]>; 1478 1479 def int_x86_avx512_mask_pshuf_b_128 : 1480 GCCBuiltin<"__builtin_ia32_pshufb128_mask">, 1481 Intrinsic<[llvm_v16i8_ty], 1482 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 1483 [IntrNoMem]>; 1484 1485 def int_x86_avx512_mask_pshuf_b_256 : 1486 GCCBuiltin<"__builtin_ia32_pshufb256_mask">, 1487 Intrinsic<[llvm_v32i8_ty], 1488 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 1489 [IntrNoMem]>; 1490 1491 def int_x86_avx512_mask_pshuf_b_512 : 1492 GCCBuiltin<"__builtin_ia32_pshufb512_mask">, 1493 Intrinsic<[llvm_v64i8_ty], 1494 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 1495 [IntrNoMem]>; 1496 1497 def int_x86_avx512_mask_shuf_f32x4_256 : 1498 GCCBuiltin<"__builtin_ia32_shuf_f32x4_256_mask">, 1499 Intrinsic<[llvm_v8f32_ty], 1500 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty], 1501 [IntrNoMem]>; 1502 1503 def int_x86_avx512_mask_shuf_f32x4 : 1504 GCCBuiltin<"__builtin_ia32_shuf_f32x4_mask">, 1505 Intrinsic<[llvm_v16f32_ty], 1506 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, llvm_i16_ty], 1507 [IntrNoMem]>; 1508 1509 def int_x86_avx512_mask_shuf_f64x2_256 : 1510 GCCBuiltin<"__builtin_ia32_shuf_f64x2_256_mask">, 1511 Intrinsic<[llvm_v4f64_ty], 1512 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty], 1513 [IntrNoMem]>; 1514 1515 def int_x86_avx512_mask_shuf_f64x2 : 1516 GCCBuiltin<"__builtin_ia32_shuf_f64x2_mask">, 1517 Intrinsic<[llvm_v8f64_ty], 1518 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty], 1519 [IntrNoMem]>; 1520 1521 def int_x86_avx512_mask_shuf_i32x4_256 : 1522 GCCBuiltin<"__builtin_ia32_shuf_i32x4_256_mask">, 1523 Intrinsic<[llvm_v8i32_ty], 1524 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_v8i32_ty, llvm_i8_ty], 1525 [IntrNoMem]>; 1526 1527 def int_x86_avx512_mask_shuf_i32x4 : 1528 GCCBuiltin<"__builtin_ia32_shuf_i32x4_mask">, 1529 Intrinsic<[llvm_v16i32_ty], 1530 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, llvm_v16i32_ty, llvm_i16_ty], 1531 [IntrNoMem]>; 1532 1533 def int_x86_avx512_mask_shuf_i64x2_256 : 1534 GCCBuiltin<"__builtin_ia32_shuf_i64x2_256_mask">, 1535 Intrinsic<[llvm_v4i64_ty], 1536 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_v4i64_ty, llvm_i8_ty], 1537 [IntrNoMem]>; 1538 1539 def int_x86_avx512_mask_shuf_i64x2 : 1540 GCCBuiltin<"__builtin_ia32_shuf_i64x2_mask">, 1541 Intrinsic<[llvm_v8i64_ty], 1542 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, llvm_v8i64_ty, llvm_i8_ty], 1543 [IntrNoMem]>; 1544 1545 def int_x86_avx512_mask_shuf_pd_128 : 1546 GCCBuiltin<"__builtin_ia32_shufpd128_mask">, 1547 Intrinsic<[llvm_v2f64_ty], 1548 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, llvm_i8_ty], 1549 [IntrNoMem]>; 1550 1551 def int_x86_avx512_mask_shuf_pd_256 : 1552 GCCBuiltin<"__builtin_ia32_shufpd256_mask">, 1553 Intrinsic<[llvm_v4f64_ty], 1554 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty], 1555 [IntrNoMem]>; 1556 1557 def int_x86_avx512_mask_shuf_pd_512 : 1558 GCCBuiltin<"__builtin_ia32_shufpd512_mask">, 1559 Intrinsic<[llvm_v8f64_ty], 1560 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty], 1561 [IntrNoMem]>; 1562 1563 def int_x86_avx512_mask_shuf_ps_128 : 1564 GCCBuiltin<"__builtin_ia32_shufps128_mask">, 1565 Intrinsic<[llvm_v4f32_ty], 1566 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, llvm_i8_ty], 1567 [IntrNoMem]>; 1568 1569 def int_x86_avx512_mask_shuf_ps_256 : 1570 GCCBuiltin<"__builtin_ia32_shufps256_mask">, 1571 Intrinsic<[llvm_v8f32_ty], 1572 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty], 1573 [IntrNoMem]>; 1574 1575 def int_x86_avx512_mask_shuf_ps_512 : 1576 GCCBuiltin<"__builtin_ia32_shufps512_mask">, 1577 Intrinsic<[llvm_v16f32_ty], 1578 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, llvm_i16_ty], 1579 [IntrNoMem]>; 1580 1581 def int_x86_avx512_mask_movshdup_128 : 1582 GCCBuiltin<"__builtin_ia32_movshdup128_mask">, 1583 Intrinsic<[llvm_v4f32_ty], 1584 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 1585 [IntrNoMem]>; 1586 1587 def int_x86_avx512_mask_movshdup_256 : 1588 GCCBuiltin<"__builtin_ia32_movshdup256_mask">, 1589 Intrinsic<[llvm_v8f32_ty], 1590 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 1591 [IntrNoMem]>; 1592 1593 def int_x86_avx512_mask_movshdup_512 : 1594 GCCBuiltin<"__builtin_ia32_movshdup512_mask">, 1595 Intrinsic<[llvm_v16f32_ty], 1596 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], 1597 [IntrNoMem]>; 1598 1599 def int_x86_avx512_mask_movsldup_128 : 1600 GCCBuiltin<"__builtin_ia32_movsldup128_mask">, 1601 Intrinsic<[llvm_v4f32_ty], 1602 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 1603 [IntrNoMem]>; 1604 1605 def int_x86_avx512_mask_movsldup_256 : 1606 GCCBuiltin<"__builtin_ia32_movsldup256_mask">, 1607 Intrinsic<[llvm_v8f32_ty], 1608 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 1609 [IntrNoMem]>; 1610 1611 def int_x86_avx512_mask_movsldup_512 : 1612 GCCBuiltin<"__builtin_ia32_movsldup512_mask">, 1613 Intrinsic<[llvm_v16f32_ty], 1614 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], 1615 [IntrNoMem]>; 1616 1617 def int_x86_avx512_mask_movddup_128 : 1618 GCCBuiltin<"__builtin_ia32_movddup128_mask">, 1619 Intrinsic<[llvm_v2f64_ty], 1620 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 1621 [IntrNoMem]>; 1622 1623 def int_x86_avx512_mask_movddup_256 : 1624 GCCBuiltin<"__builtin_ia32_movddup256_mask">, 1625 Intrinsic<[llvm_v4f64_ty], 1626 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 1627 [IntrNoMem]>; 1628 1629 def int_x86_avx512_mask_movddup_512 : 1630 GCCBuiltin<"__builtin_ia32_movddup512_mask">, 1631 Intrinsic<[llvm_v8f64_ty], 1632 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty], 1633 [IntrNoMem]>; 1634} 1635 1636// Vector blend 1637let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1638 def int_x86_avx_blendv_pd_256 : GCCBuiltin<"__builtin_ia32_blendvpd256">, 1639 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1640 llvm_v4f64_ty, llvm_v4f64_ty], [IntrNoMem]>; 1641 def int_x86_avx_blendv_ps_256 : GCCBuiltin<"__builtin_ia32_blendvps256">, 1642 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1643 llvm_v8f32_ty, llvm_v8f32_ty], [IntrNoMem]>; 1644} 1645 1646// Vector dot product 1647let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1648 def int_x86_avx_dp_ps_256 : GCCBuiltin<"__builtin_ia32_dpps256">, 1649 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1650 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 1651} 1652 1653// Vector compare 1654let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1655 def int_x86_avx_cmp_pd_256 : GCCBuiltin<"__builtin_ia32_cmppd256">, 1656 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1657 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 1658 def int_x86_avx_cmp_ps_256 : GCCBuiltin<"__builtin_ia32_cmpps256">, 1659 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1660 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 1661} 1662 1663// Vector convert 1664let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1665 def int_x86_avx_cvtdq2_pd_256 : GCCBuiltin<"__builtin_ia32_cvtdq2pd256">, 1666 Intrinsic<[llvm_v4f64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 1667 def int_x86_avx_cvtdq2_ps_256 : GCCBuiltin<"__builtin_ia32_cvtdq2ps256">, 1668 Intrinsic<[llvm_v8f32_ty], [llvm_v8i32_ty], [IntrNoMem]>; 1669 def int_x86_avx_cvt_pd2_ps_256 : GCCBuiltin<"__builtin_ia32_cvtpd2ps256">, 1670 Intrinsic<[llvm_v4f32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1671 def int_x86_avx_cvt_ps2dq_256 : GCCBuiltin<"__builtin_ia32_cvtps2dq256">, 1672 Intrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1673 def int_x86_avx_cvt_ps2_pd_256 : GCCBuiltin<"__builtin_ia32_cvtps2pd256">, 1674 Intrinsic<[llvm_v4f64_ty], [llvm_v4f32_ty], [IntrNoMem]>; 1675 def int_x86_avx_cvtt_pd2dq_256 : GCCBuiltin<"__builtin_ia32_cvttpd2dq256">, 1676 Intrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1677 def int_x86_avx_cvt_pd2dq_256 : GCCBuiltin<"__builtin_ia32_cvtpd2dq256">, 1678 Intrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1679 def int_x86_avx_cvtt_ps2dq_256 : GCCBuiltin<"__builtin_ia32_cvttps2dq256">, 1680 Intrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1681} 1682 1683// Vector bit test 1684let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1685 def int_x86_avx_vtestz_pd : GCCBuiltin<"__builtin_ia32_vtestzpd">, 1686 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 1687 llvm_v2f64_ty], [IntrNoMem]>; 1688 def int_x86_avx_vtestc_pd : GCCBuiltin<"__builtin_ia32_vtestcpd">, 1689 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 1690 llvm_v2f64_ty], [IntrNoMem]>; 1691 def int_x86_avx_vtestnzc_pd : GCCBuiltin<"__builtin_ia32_vtestnzcpd">, 1692 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 1693 llvm_v2f64_ty], [IntrNoMem]>; 1694 def int_x86_avx_vtestz_ps : GCCBuiltin<"__builtin_ia32_vtestzps">, 1695 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 1696 llvm_v4f32_ty], [IntrNoMem]>; 1697 def int_x86_avx_vtestc_ps : GCCBuiltin<"__builtin_ia32_vtestcps">, 1698 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 1699 llvm_v4f32_ty], [IntrNoMem]>; 1700 def int_x86_avx_vtestnzc_ps : GCCBuiltin<"__builtin_ia32_vtestnzcps">, 1701 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 1702 llvm_v4f32_ty], [IntrNoMem]>; 1703 def int_x86_avx_vtestz_pd_256 : GCCBuiltin<"__builtin_ia32_vtestzpd256">, 1704 Intrinsic<[llvm_i32_ty], [llvm_v4f64_ty, 1705 llvm_v4f64_ty], [IntrNoMem]>; 1706 def int_x86_avx_vtestc_pd_256 : GCCBuiltin<"__builtin_ia32_vtestcpd256">, 1707 Intrinsic<[llvm_i32_ty], [llvm_v4f64_ty, 1708 llvm_v4f64_ty], [IntrNoMem]>; 1709 def int_x86_avx_vtestnzc_pd_256 : GCCBuiltin<"__builtin_ia32_vtestnzcpd256">, 1710 Intrinsic<[llvm_i32_ty], [llvm_v4f64_ty, 1711 llvm_v4f64_ty], [IntrNoMem]>; 1712 def int_x86_avx_vtestz_ps_256 : GCCBuiltin<"__builtin_ia32_vtestzps256">, 1713 Intrinsic<[llvm_i32_ty], [llvm_v8f32_ty, 1714 llvm_v8f32_ty], [IntrNoMem]>; 1715 def int_x86_avx_vtestc_ps_256 : GCCBuiltin<"__builtin_ia32_vtestcps256">, 1716 Intrinsic<[llvm_i32_ty], [llvm_v8f32_ty, 1717 llvm_v8f32_ty], [IntrNoMem]>; 1718 def int_x86_avx_vtestnzc_ps_256 : GCCBuiltin<"__builtin_ia32_vtestnzcps256">, 1719 Intrinsic<[llvm_i32_ty], [llvm_v8f32_ty, 1720 llvm_v8f32_ty], [IntrNoMem]>; 1721 def int_x86_avx_ptestz_256 : GCCBuiltin<"__builtin_ia32_ptestz256">, 1722 Intrinsic<[llvm_i32_ty], [llvm_v4i64_ty, 1723 llvm_v4i64_ty], [IntrNoMem]>; 1724 def int_x86_avx_ptestc_256 : GCCBuiltin<"__builtin_ia32_ptestc256">, 1725 Intrinsic<[llvm_i32_ty], [llvm_v4i64_ty, 1726 llvm_v4i64_ty], [IntrNoMem]>; 1727 def int_x86_avx_ptestnzc_256 : GCCBuiltin<"__builtin_ia32_ptestnzc256">, 1728 Intrinsic<[llvm_i32_ty], [llvm_v4i64_ty, 1729 llvm_v4i64_ty], [IntrNoMem]>; 1730 def int_x86_avx512_mask_ptestm_d_512 : GCCBuiltin<"__builtin_ia32_ptestmd512">, 1731 Intrinsic<[llvm_i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 1732 llvm_i16_ty], [IntrNoMem]>; 1733 def int_x86_avx512_mask_ptestm_q_512 : GCCBuiltin<"__builtin_ia32_ptestmq512">, 1734 Intrinsic<[llvm_i8_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 1735 llvm_i8_ty], [IntrNoMem]>; 1736 def int_x86_avx512_mask_fpclass_pd_128 : 1737 GCCBuiltin<"__builtin_ia32_fpclasspd128_mask">, 1738 Intrinsic<[llvm_i8_ty], [llvm_v2f64_ty, llvm_i32_ty, llvm_i8_ty], 1739 [IntrNoMem]>; 1740 def int_x86_avx512_mask_fpclass_pd_256 : 1741 GCCBuiltin<"__builtin_ia32_fpclasspd256_mask">, 1742 Intrinsic<[llvm_i8_ty], [llvm_v4f64_ty, llvm_i32_ty, llvm_i8_ty], 1743 [IntrNoMem]>; 1744 def int_x86_avx512_mask_fpclass_pd_512 : 1745 GCCBuiltin<"__builtin_ia32_fpclasspd512_mask">, 1746 Intrinsic<[llvm_i8_ty], [llvm_v8f64_ty, llvm_i32_ty, llvm_i8_ty], 1747 [IntrNoMem]>; 1748 def int_x86_avx512_mask_fpclass_ps_128 : 1749 GCCBuiltin<"__builtin_ia32_fpclassps128_mask">, 1750 Intrinsic<[llvm_i8_ty], [llvm_v4f32_ty, llvm_i32_ty, llvm_i8_ty], 1751 [IntrNoMem]>; 1752 def int_x86_avx512_mask_fpclass_ps_256 : 1753 GCCBuiltin<"__builtin_ia32_fpclassps256_mask">, 1754 Intrinsic<[llvm_i8_ty], [llvm_v8f32_ty, llvm_i32_ty, llvm_i8_ty], 1755 [IntrNoMem]>; 1756 def int_x86_avx512_mask_fpclass_ps_512 : 1757 GCCBuiltin<"__builtin_ia32_fpclassps512_mask">, 1758 Intrinsic<[llvm_i16_ty], [llvm_v16f32_ty, llvm_i32_ty, llvm_i16_ty], 1759 [IntrNoMem]>; 1760 def int_x86_avx512_mask_fpclass_sd : 1761 GCCBuiltin<"__builtin_ia32_fpclasssd">, 1762 Intrinsic<[llvm_i8_ty], [llvm_v2f64_ty, llvm_i32_ty, llvm_i8_ty], 1763 [IntrNoMem]>; 1764 def int_x86_avx512_mask_fpclass_ss : 1765 GCCBuiltin<"__builtin_ia32_fpclassss">, 1766 Intrinsic<[llvm_i8_ty], [llvm_v4f32_ty, llvm_i32_ty, llvm_i8_ty], 1767 [IntrNoMem]>; 1768} 1769 1770// Vector extract sign mask 1771let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1772 def int_x86_avx_movmsk_pd_256 : GCCBuiltin<"__builtin_ia32_movmskpd256">, 1773 Intrinsic<[llvm_i32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1774 def int_x86_avx_movmsk_ps_256 : GCCBuiltin<"__builtin_ia32_movmskps256">, 1775 Intrinsic<[llvm_i32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1776} 1777 1778// Vector zero 1779let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1780 def int_x86_avx_vzeroall : GCCBuiltin<"__builtin_ia32_vzeroall">, 1781 Intrinsic<[], [], []>; 1782 def int_x86_avx_vzeroupper : GCCBuiltin<"__builtin_ia32_vzeroupper">, 1783 Intrinsic<[], [], []>; 1784} 1785 1786// Vector load with broadcast 1787let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1788 def int_x86_avx_vbroadcastf128_pd_256 : 1789 GCCBuiltin<"__builtin_ia32_vbroadcastf128_pd256">, 1790 Intrinsic<[llvm_v4f64_ty], [llvm_ptr_ty], [IntrReadArgMem]>; 1791 def int_x86_avx_vbroadcastf128_ps_256 : 1792 GCCBuiltin<"__builtin_ia32_vbroadcastf128_ps256">, 1793 Intrinsic<[llvm_v8f32_ty], [llvm_ptr_ty], [IntrReadArgMem]>; 1794} 1795 1796// SIMD load ops 1797let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1798 def int_x86_avx_ldu_dq_256 : GCCBuiltin<"__builtin_ia32_lddqu256">, 1799 Intrinsic<[llvm_v32i8_ty], [llvm_ptr_ty], [IntrReadMem]>; 1800} 1801 1802// SIMD store ops 1803let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1804 def int_x86_avx_storeu_pd_256 : GCCBuiltin<"__builtin_ia32_storeupd256">, 1805 Intrinsic<[], [llvm_ptr_ty, llvm_v4f64_ty], [IntrReadWriteArgMem]>; 1806 def int_x86_avx_storeu_ps_256 : GCCBuiltin<"__builtin_ia32_storeups256">, 1807 Intrinsic<[], [llvm_ptr_ty, llvm_v8f32_ty], [IntrReadWriteArgMem]>; 1808 def int_x86_avx_storeu_dq_256 : GCCBuiltin<"__builtin_ia32_storedqu256">, 1809 Intrinsic<[], [llvm_ptr_ty, llvm_v32i8_ty], [IntrReadWriteArgMem]>; 1810} 1811 1812// Conditional load ops 1813let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1814 def int_x86_avx_maskload_pd : GCCBuiltin<"__builtin_ia32_maskloadpd">, 1815 Intrinsic<[llvm_v2f64_ty], [llvm_ptr_ty, llvm_v2i64_ty], 1816 [IntrReadArgMem]>; 1817 def int_x86_avx_maskload_ps : GCCBuiltin<"__builtin_ia32_maskloadps">, 1818 Intrinsic<[llvm_v4f32_ty], [llvm_ptr_ty, llvm_v4i32_ty], 1819 [IntrReadArgMem]>; 1820 def int_x86_avx_maskload_pd_256 : GCCBuiltin<"__builtin_ia32_maskloadpd256">, 1821 Intrinsic<[llvm_v4f64_ty], [llvm_ptr_ty, llvm_v4i64_ty], 1822 [IntrReadArgMem]>; 1823 def int_x86_avx_maskload_ps_256 : GCCBuiltin<"__builtin_ia32_maskloadps256">, 1824 Intrinsic<[llvm_v8f32_ty], [llvm_ptr_ty, llvm_v8i32_ty], 1825 [IntrReadArgMem]>; 1826 def int_x86_avx512_mask_loadu_ps_512 : GCCBuiltin<"__builtin_ia32_loadups512_mask">, 1827 Intrinsic<[llvm_v16f32_ty], [llvm_ptr_ty, llvm_v16f32_ty, llvm_i16_ty], 1828 [IntrReadArgMem]>; 1829 def int_x86_avx512_mask_loadu_pd_512 : GCCBuiltin<"__builtin_ia32_loadupd512_mask">, 1830 Intrinsic<[llvm_v8f64_ty], [llvm_ptr_ty, llvm_v8f64_ty, llvm_i8_ty], 1831 [IntrReadArgMem]>; 1832 def int_x86_avx512_mask_load_ps_512 : GCCBuiltin<"__builtin_ia32_loadaps512_mask">, 1833 Intrinsic<[llvm_v16f32_ty], [llvm_ptr_ty, llvm_v16f32_ty, llvm_i16_ty], 1834 [IntrReadArgMem]>; 1835 def int_x86_avx512_mask_load_pd_512 : GCCBuiltin<"__builtin_ia32_loadapd512_mask">, 1836 Intrinsic<[llvm_v8f64_ty], [llvm_ptr_ty, llvm_v8f64_ty, llvm_i8_ty], 1837 [IntrReadArgMem]>; 1838 1839 def int_x86_avx512_mask_move_ss : GCCBuiltin<"__builtin_ia32_movss_mask">, 1840 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 1841 [IntrNoMem]>; 1842 def int_x86_avx512_mask_move_sd : GCCBuiltin<"__builtin_ia32_movsd_mask">, 1843 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 1844 [IntrNoMem]>; 1845} 1846 1847// Conditional store ops 1848let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1849 def int_x86_avx_maskstore_pd : GCCBuiltin<"__builtin_ia32_maskstorepd">, 1850 Intrinsic<[], [llvm_ptr_ty, 1851 llvm_v2i64_ty, llvm_v2f64_ty], [IntrReadWriteArgMem]>; 1852 def int_x86_avx_maskstore_ps : GCCBuiltin<"__builtin_ia32_maskstoreps">, 1853 Intrinsic<[], [llvm_ptr_ty, 1854 llvm_v4i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>; 1855 def int_x86_avx_maskstore_pd_256 : 1856 GCCBuiltin<"__builtin_ia32_maskstorepd256">, 1857 Intrinsic<[], [llvm_ptr_ty, 1858 llvm_v4i64_ty, llvm_v4f64_ty], [IntrReadWriteArgMem]>; 1859 def int_x86_avx_maskstore_ps_256 : 1860 GCCBuiltin<"__builtin_ia32_maskstoreps256">, 1861 Intrinsic<[], [llvm_ptr_ty, 1862 llvm_v8i32_ty, llvm_v8f32_ty], [IntrReadWriteArgMem]>; 1863 def int_x86_avx512_mask_storeu_ps_512 : 1864 GCCBuiltin<"__builtin_ia32_storeups512_mask">, 1865 Intrinsic<[], [llvm_ptr_ty, llvm_v16f32_ty, llvm_i16_ty], 1866 [IntrReadWriteArgMem]>; 1867 def int_x86_avx512_mask_storeu_pd_512 : 1868 GCCBuiltin<"__builtin_ia32_storeupd512_mask">, 1869 Intrinsic<[], [llvm_ptr_ty, llvm_v8f64_ty, llvm_i8_ty], 1870 [IntrReadWriteArgMem]>; 1871 def int_x86_avx512_mask_store_ps_512 : 1872 GCCBuiltin<"__builtin_ia32_storeaps512_mask">, 1873 Intrinsic<[], [llvm_ptr_ty, llvm_v16f32_ty, llvm_i16_ty], 1874 [IntrReadWriteArgMem]>; 1875 def int_x86_avx512_mask_store_pd_512 : 1876 GCCBuiltin<"__builtin_ia32_storeapd512_mask">, 1877 Intrinsic<[], [llvm_ptr_ty, llvm_v8f64_ty, llvm_i8_ty], 1878 [IntrReadWriteArgMem]>; 1879 def int_x86_avx512_mask_store_ss : 1880 GCCBuiltin<"__builtin_ia32_storess_mask">, 1881 Intrinsic<[], [llvm_ptr_ty, llvm_v4f32_ty, llvm_i8_ty], 1882 [IntrReadWriteArgMem]>; 1883} 1884 1885//===----------------------------------------------------------------------===// 1886// AVX2 1887 1888// Integer arithmetic ops. 1889let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1890 def int_x86_avx2_padds_b : GCCBuiltin<"__builtin_ia32_paddsb256">, 1891 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1892 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1893 def int_x86_avx2_padds_w : GCCBuiltin<"__builtin_ia32_paddsw256">, 1894 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1895 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1896 def int_x86_avx2_paddus_b : GCCBuiltin<"__builtin_ia32_paddusb256">, 1897 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1898 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1899 def int_x86_avx2_paddus_w : GCCBuiltin<"__builtin_ia32_paddusw256">, 1900 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1901 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1902 def int_x86_avx2_psubs_b : GCCBuiltin<"__builtin_ia32_psubsb256">, 1903 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1904 llvm_v32i8_ty], [IntrNoMem]>; 1905 def int_x86_avx2_psubs_w : GCCBuiltin<"__builtin_ia32_psubsw256">, 1906 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1907 llvm_v16i16_ty], [IntrNoMem]>; 1908 def int_x86_avx2_psubus_b : GCCBuiltin<"__builtin_ia32_psubusb256">, 1909 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1910 llvm_v32i8_ty], [IntrNoMem]>; 1911 def int_x86_avx2_psubus_w : GCCBuiltin<"__builtin_ia32_psubusw256">, 1912 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1913 llvm_v16i16_ty], [IntrNoMem]>; 1914 def int_x86_avx2_pmulhu_w : GCCBuiltin<"__builtin_ia32_pmulhuw256">, 1915 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1916 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1917 def int_x86_avx2_pmulh_w : GCCBuiltin<"__builtin_ia32_pmulhw256">, 1918 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1919 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1920 def int_x86_avx2_pmulu_dq : GCCBuiltin<"__builtin_ia32_pmuludq256">, 1921 Intrinsic<[llvm_v4i64_ty], [llvm_v8i32_ty, 1922 llvm_v8i32_ty], [IntrNoMem, Commutative]>; 1923 def int_x86_avx2_pmul_dq : GCCBuiltin<"__builtin_ia32_pmuldq256">, 1924 Intrinsic<[llvm_v4i64_ty], [llvm_v8i32_ty, 1925 llvm_v8i32_ty], [IntrNoMem, Commutative]>; 1926 def int_x86_avx2_pmadd_wd : GCCBuiltin<"__builtin_ia32_pmaddwd256">, 1927 Intrinsic<[llvm_v8i32_ty], [llvm_v16i16_ty, 1928 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1929 def int_x86_avx2_pavg_b : GCCBuiltin<"__builtin_ia32_pavgb256">, 1930 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1931 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1932 def int_x86_avx2_pavg_w : GCCBuiltin<"__builtin_ia32_pavgw256">, 1933 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1934 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1935 def int_x86_avx2_psad_bw : GCCBuiltin<"__builtin_ia32_psadbw256">, 1936 Intrinsic<[llvm_v4i64_ty], [llvm_v32i8_ty, 1937 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1938} 1939 1940// Vector min, max 1941let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1942 def int_x86_avx2_pmaxu_b : GCCBuiltin<"__builtin_ia32_pmaxub256">, 1943 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1944 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1945 def int_x86_avx2_pmaxu_w : GCCBuiltin<"__builtin_ia32_pmaxuw256">, 1946 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1947 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1948 def int_x86_avx2_pmaxu_d : GCCBuiltin<"__builtin_ia32_pmaxud256">, 1949 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1950 llvm_v8i32_ty], [IntrNoMem, Commutative]>; 1951 def int_x86_avx2_pmaxs_b : GCCBuiltin<"__builtin_ia32_pmaxsb256">, 1952 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1953 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1954 def int_x86_avx2_pmaxs_w : GCCBuiltin<"__builtin_ia32_pmaxsw256">, 1955 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1956 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1957 def int_x86_avx2_pmaxs_d : GCCBuiltin<"__builtin_ia32_pmaxsd256">, 1958 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1959 llvm_v8i32_ty], [IntrNoMem, Commutative]>; 1960 def int_x86_avx2_pminu_b : GCCBuiltin<"__builtin_ia32_pminub256">, 1961 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1962 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1963 def int_x86_avx2_pminu_w : GCCBuiltin<"__builtin_ia32_pminuw256">, 1964 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1965 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1966 def int_x86_avx2_pminu_d : GCCBuiltin<"__builtin_ia32_pminud256">, 1967 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1968 llvm_v8i32_ty], [IntrNoMem, Commutative]>; 1969 def int_x86_avx2_pmins_b : GCCBuiltin<"__builtin_ia32_pminsb256">, 1970 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1971 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1972 def int_x86_avx2_pmins_w : GCCBuiltin<"__builtin_ia32_pminsw256">, 1973 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1974 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1975 def int_x86_avx2_pmins_d : GCCBuiltin<"__builtin_ia32_pminsd256">, 1976 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1977 llvm_v8i32_ty], [IntrNoMem, Commutative]>; 1978 def int_x86_avx512_mask_pmaxs_b_128 : GCCBuiltin<"__builtin_ia32_pmaxsb128_mask">, 1979 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 1980 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 1981 def int_x86_avx512_mask_pmaxs_b_256 : GCCBuiltin<"__builtin_ia32_pmaxsb256_mask">, 1982 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 1983 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 1984 def int_x86_avx512_mask_pmaxs_b_512 : GCCBuiltin<"__builtin_ia32_pmaxsb512_mask">, 1985 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 1986 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 1987 def int_x86_avx512_mask_pmaxu_b_128 : GCCBuiltin<"__builtin_ia32_pmaxub128_mask">, 1988 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 1989 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 1990 def int_x86_avx512_mask_pmaxu_b_256 : GCCBuiltin<"__builtin_ia32_pmaxub256_mask">, 1991 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 1992 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 1993 def int_x86_avx512_mask_pmaxu_b_512 : GCCBuiltin<"__builtin_ia32_pmaxub512_mask">, 1994 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 1995 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 1996 def int_x86_avx512_mask_pmaxs_w_128 : GCCBuiltin<"__builtin_ia32_pmaxsw128_mask">, 1997 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 1998 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 1999 def int_x86_avx512_mask_pmaxs_w_256 : GCCBuiltin<"__builtin_ia32_pmaxsw256_mask">, 2000 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 2001 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 2002 def int_x86_avx512_mask_pmaxs_w_512 : GCCBuiltin<"__builtin_ia32_pmaxsw512_mask">, 2003 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 2004 llvm_v32i16_ty, llvm_i32_ty],[IntrNoMem]>; 2005 def int_x86_avx512_mask_pmaxu_w_128 : GCCBuiltin<"__builtin_ia32_pmaxuw128_mask">, 2006 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 2007 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 2008 def int_x86_avx512_mask_pmaxu_w_256 : GCCBuiltin<"__builtin_ia32_pmaxuw256_mask">, 2009 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 2010 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 2011 def int_x86_avx512_mask_pmaxu_w_512 : GCCBuiltin<"__builtin_ia32_pmaxuw512_mask">, 2012 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 2013 llvm_v32i16_ty, llvm_i32_ty],[IntrNoMem]>; 2014 def int_x86_avx512_mask_pmins_b_128 : GCCBuiltin<"__builtin_ia32_pminsb128_mask">, 2015 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 2016 llvm_v16i8_ty,llvm_i16_ty], [IntrNoMem]>; 2017 def int_x86_avx512_mask_pmins_b_256 : GCCBuiltin<"__builtin_ia32_pminsb256_mask">, 2018 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 2019 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 2020 def int_x86_avx512_mask_pmins_b_512 : GCCBuiltin<"__builtin_ia32_pminsb512_mask">, 2021 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 2022 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 2023 def int_x86_avx512_mask_pminu_b_128 : GCCBuiltin<"__builtin_ia32_pminub128_mask">, 2024 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 2025 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 2026 def int_x86_avx512_mask_pminu_b_256 : GCCBuiltin<"__builtin_ia32_pminub256_mask">, 2027 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 2028 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 2029 def int_x86_avx512_mask_pminu_b_512 : GCCBuiltin<"__builtin_ia32_pminub512_mask">, 2030 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 2031 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 2032 def int_x86_avx512_mask_pmins_w_128 : GCCBuiltin<"__builtin_ia32_pminsw128_mask">, 2033 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 2034 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 2035 def int_x86_avx512_mask_pmins_w_256 : GCCBuiltin<"__builtin_ia32_pminsw256_mask">, 2036 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 2037 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 2038 def int_x86_avx512_mask_pmins_w_512 : GCCBuiltin<"__builtin_ia32_pminsw512_mask">, 2039 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 2040 llvm_v32i16_ty, llvm_i32_ty],[IntrNoMem]>; 2041 def int_x86_avx512_mask_pminu_w_128 : GCCBuiltin<"__builtin_ia32_pminuw128_mask">, 2042 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 2043 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 2044 def int_x86_avx512_mask_pminu_w_256 : GCCBuiltin<"__builtin_ia32_pminuw256_mask">, 2045 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 2046 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 2047 def int_x86_avx512_mask_pminu_w_512 : GCCBuiltin<"__builtin_ia32_pminuw512_mask">, 2048 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 2049 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 2050 def int_x86_avx512_mask_pmaxu_d_512 : GCCBuiltin<"__builtin_ia32_pmaxud512_mask">, 2051 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 2052 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2053 def int_x86_avx512_mask_pmaxu_d_256 : GCCBuiltin<"__builtin_ia32_pmaxud256_mask">, 2054 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 2055 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 2056 def int_x86_avx512_mask_pmaxu_d_128 : GCCBuiltin<"__builtin_ia32_pmaxud128_mask">, 2057 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 2058 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2059 def int_x86_avx512_mask_pmaxs_d_512 : GCCBuiltin<"__builtin_ia32_pmaxsd512_mask">, 2060 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 2061 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2062 def int_x86_avx512_mask_pmaxs_d_256 : GCCBuiltin<"__builtin_ia32_pmaxsd256_mask">, 2063 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 2064 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 2065 def int_x86_avx512_mask_pmaxs_d_128 : GCCBuiltin<"__builtin_ia32_pmaxsd128_mask">, 2066 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 2067 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2068 def int_x86_avx512_mask_pmaxu_q_512 : GCCBuiltin<"__builtin_ia32_pmaxuq512_mask">, 2069 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 2070 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2071 def int_x86_avx512_mask_pmaxu_q_256 : GCCBuiltin<"__builtin_ia32_pmaxuq256_mask">, 2072 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 2073 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2074 def int_x86_avx512_mask_pmaxu_q_128 : GCCBuiltin<"__builtin_ia32_pmaxuq128_mask">, 2075 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 2076 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2077 def int_x86_avx512_mask_pmaxs_q_512 : GCCBuiltin<"__builtin_ia32_pmaxsq512_mask">, 2078 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 2079 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2080 def int_x86_avx512_mask_pmaxs_q_256 : GCCBuiltin<"__builtin_ia32_pmaxsq256_mask">, 2081 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 2082 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2083 def int_x86_avx512_mask_pmaxs_q_128 : GCCBuiltin<"__builtin_ia32_pmaxsq128_mask">, 2084 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 2085 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2086 def int_x86_avx512_mask_pminu_d_512 : GCCBuiltin<"__builtin_ia32_pminud512_mask">, 2087 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 2088 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2089 def int_x86_avx512_mask_pminu_d_256 : GCCBuiltin<"__builtin_ia32_pminud256_mask">, 2090 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 2091 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 2092 def int_x86_avx512_mask_pminu_d_128 : GCCBuiltin<"__builtin_ia32_pminud128_mask">, 2093 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 2094 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2095 def int_x86_avx512_mask_pmins_d_512 : GCCBuiltin<"__builtin_ia32_pminsd512_mask">, 2096 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 2097 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2098 def int_x86_avx512_mask_pmins_d_256 : GCCBuiltin<"__builtin_ia32_pminsd256_mask">, 2099 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 2100 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 2101 def int_x86_avx512_mask_pmins_d_128 : GCCBuiltin<"__builtin_ia32_pminsd128_mask">, 2102 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 2103 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2104 def int_x86_avx512_mask_pminu_q_512 : GCCBuiltin<"__builtin_ia32_pminuq512_mask">, 2105 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 2106 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2107 def int_x86_avx512_mask_pminu_q_256 : GCCBuiltin<"__builtin_ia32_pminuq256_mask">, 2108 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 2109 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2110 def int_x86_avx512_mask_pminu_q_128 : GCCBuiltin<"__builtin_ia32_pminuq128_mask">, 2111 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 2112 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2113 def int_x86_avx512_mask_pmins_q_512 : GCCBuiltin<"__builtin_ia32_pminsq512_mask">, 2114 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 2115 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2116 def int_x86_avx512_mask_pmins_q_256 : GCCBuiltin<"__builtin_ia32_pminsq256_mask">, 2117 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 2118 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2119 def int_x86_avx512_mask_pmins_q_128 : GCCBuiltin<"__builtin_ia32_pminsq128_mask">, 2120 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 2121 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2122} 2123 2124// Integer shift ops. 2125let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2126 def int_x86_avx2_psll_w : GCCBuiltin<"__builtin_ia32_psllw256">, 2127 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2128 llvm_v8i16_ty], [IntrNoMem]>; 2129 def int_x86_avx2_psll_d : GCCBuiltin<"__builtin_ia32_pslld256">, 2130 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2131 llvm_v4i32_ty], [IntrNoMem]>; 2132 def int_x86_avx2_psll_q : GCCBuiltin<"__builtin_ia32_psllq256">, 2133 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 2134 llvm_v2i64_ty], [IntrNoMem]>; 2135 def int_x86_avx2_psrl_w : GCCBuiltin<"__builtin_ia32_psrlw256">, 2136 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2137 llvm_v8i16_ty], [IntrNoMem]>; 2138 def int_x86_avx2_psrl_d : GCCBuiltin<"__builtin_ia32_psrld256">, 2139 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2140 llvm_v4i32_ty], [IntrNoMem]>; 2141 def int_x86_avx2_psrl_q : GCCBuiltin<"__builtin_ia32_psrlq256">, 2142 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 2143 llvm_v2i64_ty], [IntrNoMem]>; 2144 def int_x86_avx2_psra_w : GCCBuiltin<"__builtin_ia32_psraw256">, 2145 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2146 llvm_v8i16_ty], [IntrNoMem]>; 2147 def int_x86_avx2_psra_d : GCCBuiltin<"__builtin_ia32_psrad256">, 2148 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2149 llvm_v4i32_ty], [IntrNoMem]>; 2150 2151 def int_x86_avx2_pslli_w : GCCBuiltin<"__builtin_ia32_psllwi256">, 2152 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2153 llvm_i32_ty], [IntrNoMem]>; 2154 def int_x86_avx2_pslli_d : GCCBuiltin<"__builtin_ia32_pslldi256">, 2155 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2156 llvm_i32_ty], [IntrNoMem]>; 2157 def int_x86_avx2_pslli_q : GCCBuiltin<"__builtin_ia32_psllqi256">, 2158 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 2159 llvm_i32_ty], [IntrNoMem]>; 2160 def int_x86_avx2_psrli_w : GCCBuiltin<"__builtin_ia32_psrlwi256">, 2161 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2162 llvm_i32_ty], [IntrNoMem]>; 2163 def int_x86_avx2_psrli_d : GCCBuiltin<"__builtin_ia32_psrldi256">, 2164 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2165 llvm_i32_ty], [IntrNoMem]>; 2166 def int_x86_avx2_psrli_q : GCCBuiltin<"__builtin_ia32_psrlqi256">, 2167 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 2168 llvm_i32_ty], [IntrNoMem]>; 2169 def int_x86_avx2_psrai_w : GCCBuiltin<"__builtin_ia32_psrawi256">, 2170 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2171 llvm_i32_ty], [IntrNoMem]>; 2172 def int_x86_avx2_psrai_d : GCCBuiltin<"__builtin_ia32_psradi256">, 2173 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2174 llvm_i32_ty], [IntrNoMem]>; 2175 2176 def int_x86_avx512_mask_pslli_d : GCCBuiltin<"__builtin_ia32_pslldi512">, 2177 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2178 llvm_i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2179 def int_x86_avx512_mask_pslli_q : GCCBuiltin<"__builtin_ia32_psllqi512">, 2180 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2181 llvm_i32_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2182 def int_x86_avx512_mask_psrli_d : GCCBuiltin<"__builtin_ia32_psrldi512">, 2183 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2184 llvm_i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2185 def int_x86_avx512_mask_psrli_q : GCCBuiltin<"__builtin_ia32_psrlqi512">, 2186 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2187 llvm_i32_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2188 def int_x86_avx512_mask_psrai_d : GCCBuiltin<"__builtin_ia32_psradi512">, 2189 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2190 llvm_i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2191 def int_x86_avx512_mask_psrai_q : GCCBuiltin<"__builtin_ia32_psraqi512">, 2192 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2193 llvm_i32_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2194 2195 def int_x86_avx512_mask_psll_d : GCCBuiltin<"__builtin_ia32_pslld512_mask">, 2196 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2197 llvm_v4i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2198 def int_x86_avx512_mask_psll_q : GCCBuiltin<"__builtin_ia32_psllq512_mask">, 2199 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2200 llvm_v2i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2201 def int_x86_avx512_mask_psrl_d : GCCBuiltin<"__builtin_ia32_psrld512_mask">, 2202 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2203 llvm_v4i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2204 def int_x86_avx512_mask_psrl_q : GCCBuiltin<"__builtin_ia32_psrlq512_mask">, 2205 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2206 llvm_v2i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2207 def int_x86_avx512_mask_psra_d : GCCBuiltin<"__builtin_ia32_psrad512_mask">, 2208 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2209 llvm_v4i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2210 def int_x86_avx512_mask_psra_q : GCCBuiltin<"__builtin_ia32_psraq512_mask">, 2211 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2212 llvm_v2i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2213} 2214 2215// Pack ops. 2216let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2217 def int_x86_avx2_packsswb : GCCBuiltin<"__builtin_ia32_packsswb256">, 2218 Intrinsic<[llvm_v32i8_ty], [llvm_v16i16_ty, 2219 llvm_v16i16_ty], [IntrNoMem]>; 2220 def int_x86_avx2_packssdw : GCCBuiltin<"__builtin_ia32_packssdw256">, 2221 Intrinsic<[llvm_v16i16_ty], [llvm_v8i32_ty, 2222 llvm_v8i32_ty], [IntrNoMem]>; 2223 def int_x86_avx2_packuswb : GCCBuiltin<"__builtin_ia32_packuswb256">, 2224 Intrinsic<[llvm_v32i8_ty], [llvm_v16i16_ty, 2225 llvm_v16i16_ty], [IntrNoMem]>; 2226 def int_x86_avx2_packusdw : GCCBuiltin<"__builtin_ia32_packusdw256">, 2227 Intrinsic<[llvm_v16i16_ty], [llvm_v8i32_ty, 2228 llvm_v8i32_ty], [IntrNoMem]>; 2229} 2230 2231// Absolute value ops 2232let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2233 def int_x86_avx2_pabs_b : GCCBuiltin<"__builtin_ia32_pabsb256">, 2234 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty], [IntrNoMem]>; 2235 def int_x86_avx2_pabs_w : GCCBuiltin<"__builtin_ia32_pabsw256">, 2236 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty], [IntrNoMem]>; 2237 def int_x86_avx2_pabs_d : GCCBuiltin<"__builtin_ia32_pabsd256">, 2238 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty], [IntrNoMem]>; 2239 2240 def int_x86_avx512_mask_pabs_b_128 : 2241 GCCBuiltin<"__builtin_ia32_pabsb128_mask">, 2242 Intrinsic<[llvm_v16i8_ty], 2243 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 2244 [IntrNoMem]>; 2245 2246 def int_x86_avx512_mask_pabs_b_256 : 2247 GCCBuiltin<"__builtin_ia32_pabsb256_mask">, 2248 Intrinsic<[llvm_v32i8_ty], 2249 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 2250 [IntrNoMem]>; 2251 2252 def int_x86_avx512_mask_pabs_b_512 : 2253 GCCBuiltin<"__builtin_ia32_pabsb512_mask">, 2254 Intrinsic<[llvm_v64i8_ty], 2255 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 2256 [IntrNoMem]>; 2257 2258 def int_x86_avx512_mask_pabs_d_128 : 2259 GCCBuiltin<"__builtin_ia32_pabsd128_mask">, 2260 Intrinsic<[llvm_v4i32_ty], 2261 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 2262 [IntrNoMem]>; 2263 2264 def int_x86_avx512_mask_pabs_d_256 : 2265 GCCBuiltin<"__builtin_ia32_pabsd256_mask">, 2266 Intrinsic<[llvm_v8i32_ty], 2267 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 2268 [IntrNoMem]>; 2269 2270 def int_x86_avx512_mask_pabs_d_512 : 2271 GCCBuiltin<"__builtin_ia32_pabsd512_mask">, 2272 Intrinsic<[llvm_v16i32_ty], 2273 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 2274 [IntrNoMem]>; 2275 2276 def int_x86_avx512_mask_pabs_q_128 : 2277 GCCBuiltin<"__builtin_ia32_pabsq128_mask">, 2278 Intrinsic<[llvm_v2i64_ty], 2279 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 2280 [IntrNoMem]>; 2281 2282 def int_x86_avx512_mask_pabs_q_256 : 2283 GCCBuiltin<"__builtin_ia32_pabsq256_mask">, 2284 Intrinsic<[llvm_v4i64_ty], 2285 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 2286 [IntrNoMem]>; 2287 2288 def int_x86_avx512_mask_pabs_q_512 : 2289 GCCBuiltin<"__builtin_ia32_pabsq512_mask">, 2290 Intrinsic<[llvm_v8i64_ty], 2291 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 2292 [IntrNoMem]>; 2293 2294 def int_x86_avx512_mask_pabs_w_128 : 2295 GCCBuiltin<"__builtin_ia32_pabsw128_mask">, 2296 Intrinsic<[llvm_v8i16_ty], 2297 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 2298 [IntrNoMem]>; 2299 2300 def int_x86_avx512_mask_pabs_w_256 : 2301 GCCBuiltin<"__builtin_ia32_pabsw256_mask">, 2302 Intrinsic<[llvm_v16i16_ty], 2303 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 2304 [IntrNoMem]>; 2305 2306 def int_x86_avx512_mask_pabs_w_512 : 2307 GCCBuiltin<"__builtin_ia32_pabsw512_mask">, 2308 Intrinsic<[llvm_v32i16_ty], 2309 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 2310 [IntrNoMem]>; 2311} 2312 2313// Horizontal arithmetic ops 2314let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2315 def int_x86_avx2_phadd_w : GCCBuiltin<"__builtin_ia32_phaddw256">, 2316 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2317 llvm_v16i16_ty], [IntrNoMem]>; 2318 def int_x86_avx2_phadd_d : GCCBuiltin<"__builtin_ia32_phaddd256">, 2319 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2320 llvm_v8i32_ty], [IntrNoMem]>; 2321 def int_x86_avx2_phadd_sw : GCCBuiltin<"__builtin_ia32_phaddsw256">, 2322 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2323 llvm_v16i16_ty], [IntrNoMem]>; 2324 def int_x86_avx2_phsub_w : GCCBuiltin<"__builtin_ia32_phsubw256">, 2325 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2326 llvm_v16i16_ty], [IntrNoMem]>; 2327 def int_x86_avx2_phsub_d : GCCBuiltin<"__builtin_ia32_phsubd256">, 2328 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2329 llvm_v8i32_ty], [IntrNoMem]>; 2330 def int_x86_avx2_phsub_sw : GCCBuiltin<"__builtin_ia32_phsubsw256">, 2331 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2332 llvm_v16i16_ty], [IntrNoMem]>; 2333 def int_x86_avx2_pmadd_ub_sw : GCCBuiltin<"__builtin_ia32_pmaddubsw256">, 2334 Intrinsic<[llvm_v16i16_ty], [llvm_v32i8_ty, 2335 llvm_v32i8_ty], [IntrNoMem]>; 2336} 2337 2338// Sign ops 2339let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2340 def int_x86_avx2_psign_b : GCCBuiltin<"__builtin_ia32_psignb256">, 2341 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 2342 llvm_v32i8_ty], [IntrNoMem]>; 2343 def int_x86_avx2_psign_w : GCCBuiltin<"__builtin_ia32_psignw256">, 2344 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2345 llvm_v16i16_ty], [IntrNoMem]>; 2346 def int_x86_avx2_psign_d : GCCBuiltin<"__builtin_ia32_psignd256">, 2347 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2348 llvm_v8i32_ty], [IntrNoMem]>; 2349} 2350 2351// Packed multiply high with round and scale 2352let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2353 def int_x86_avx2_pmul_hr_sw : GCCBuiltin<"__builtin_ia32_pmulhrsw256">, 2354 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 2355 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 2356 def int_x86_avx512_mask_pmul_hr_sw_128 : GCCBuiltin<"__builtin_ia32_pmulhrsw128_mask">, 2357 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 2358 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 2359 def int_x86_avx512_mask_pmul_hr_sw_256 : GCCBuiltin<"__builtin_ia32_pmulhrsw256_mask">, 2360 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 2361 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 2362 def int_x86_avx512_mask_pmul_hr_sw_512 : GCCBuiltin<"__builtin_ia32_pmulhrsw512_mask">, 2363 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 2364 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 2365} 2366 2367// Vector sign and zero extend 2368let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2369 def int_x86_avx2_pmovsxbd : GCCBuiltin<"__builtin_ia32_pmovsxbd256">, 2370 Intrinsic<[llvm_v8i32_ty], [llvm_v16i8_ty], 2371 [IntrNoMem]>; 2372 def int_x86_avx2_pmovsxbq : GCCBuiltin<"__builtin_ia32_pmovsxbq256">, 2373 Intrinsic<[llvm_v4i64_ty], [llvm_v16i8_ty], 2374 [IntrNoMem]>; 2375 def int_x86_avx2_pmovsxbw : GCCBuiltin<"__builtin_ia32_pmovsxbw256">, 2376 Intrinsic<[llvm_v16i16_ty], [llvm_v16i8_ty], 2377 [IntrNoMem]>; 2378 def int_x86_avx2_pmovsxdq : GCCBuiltin<"__builtin_ia32_pmovsxdq256">, 2379 Intrinsic<[llvm_v4i64_ty], [llvm_v4i32_ty], 2380 [IntrNoMem]>; 2381 def int_x86_avx2_pmovsxwd : GCCBuiltin<"__builtin_ia32_pmovsxwd256">, 2382 Intrinsic<[llvm_v8i32_ty], [llvm_v8i16_ty], 2383 [IntrNoMem]>; 2384 def int_x86_avx2_pmovsxwq : GCCBuiltin<"__builtin_ia32_pmovsxwq256">, 2385 Intrinsic<[llvm_v4i64_ty], [llvm_v8i16_ty], 2386 [IntrNoMem]>; 2387 def int_x86_avx2_pmovzxbd : GCCBuiltin<"__builtin_ia32_pmovzxbd256">, 2388 Intrinsic<[llvm_v8i32_ty], [llvm_v16i8_ty], 2389 [IntrNoMem]>; 2390 def int_x86_avx2_pmovzxbq : GCCBuiltin<"__builtin_ia32_pmovzxbq256">, 2391 Intrinsic<[llvm_v4i64_ty], [llvm_v16i8_ty], 2392 [IntrNoMem]>; 2393 def int_x86_avx2_pmovzxbw : GCCBuiltin<"__builtin_ia32_pmovzxbw256">, 2394 Intrinsic<[llvm_v16i16_ty], [llvm_v16i8_ty], 2395 [IntrNoMem]>; 2396 def int_x86_avx2_pmovzxdq : GCCBuiltin<"__builtin_ia32_pmovzxdq256">, 2397 Intrinsic<[llvm_v4i64_ty], [llvm_v4i32_ty], 2398 [IntrNoMem]>; 2399 def int_x86_avx2_pmovzxwd : GCCBuiltin<"__builtin_ia32_pmovzxwd256">, 2400 Intrinsic<[llvm_v8i32_ty], [llvm_v8i16_ty], 2401 [IntrNoMem]>; 2402 def int_x86_avx2_pmovzxwq : GCCBuiltin<"__builtin_ia32_pmovzxwq256">, 2403 Intrinsic<[llvm_v4i64_ty], [llvm_v8i16_ty], 2404 [IntrNoMem]>; 2405} 2406 2407// Vector blend 2408let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2409 def int_x86_avx2_pblendvb : GCCBuiltin<"__builtin_ia32_pblendvb256">, 2410 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 2411 llvm_v32i8_ty], [IntrNoMem]>; 2412} 2413 2414// Vector load with broadcast 2415let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2416 def int_x86_avx512_mask_pbroadcast_d_gpr_512 : 2417 GCCBuiltin<"__builtin_ia32_pbroadcastd512_gpr_mask">, 2418 Intrinsic<[llvm_v16i32_ty], [llvm_i32_ty, llvm_v16i32_ty, 2419 llvm_i16_ty], [IntrNoMem]>; 2420 def int_x86_avx512_mask_pbroadcast_q_gpr_512 : 2421 GCCBuiltin<"__builtin_ia32_pbroadcastq512_gpr_mask">, 2422 Intrinsic<[llvm_v8i64_ty], [llvm_i64_ty, llvm_v8i64_ty, 2423 llvm_i8_ty], [IntrNoMem]>; 2424 def int_x86_avx512_mask_pbroadcast_q_mem_512 : 2425 GCCBuiltin<"__builtin_ia32_pbroadcastq512_mem_mask">, 2426 Intrinsic<[llvm_v8i64_ty], [llvm_i64_ty, llvm_v8i64_ty, 2427 llvm_i8_ty], [IntrNoMem]>; 2428} 2429 2430// Vector permutation 2431let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2432 def int_x86_avx2_permd : GCCBuiltin<"__builtin_ia32_permvarsi256">, 2433 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 2434 [IntrNoMem]>; 2435 def int_x86_avx2_permps : GCCBuiltin<"__builtin_ia32_permvarsf256">, 2436 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8i32_ty], 2437 [IntrNoMem]>; 2438 def int_x86_avx2_vperm2i128 : GCCBuiltin<"__builtin_ia32_permti256">, 2439 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 2440 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2441} 2442 2443// Vector extract and insert 2444let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2445 def int_x86_avx512_mask_vextractf32x4_512 : 2446 GCCBuiltin<"__builtin_ia32_extractf32x4_mask">, 2447 Intrinsic<[llvm_v4f32_ty], [llvm_v16f32_ty, llvm_i32_ty, 2448 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 2449 def int_x86_avx512_mask_vextracti32x4_512 : 2450 GCCBuiltin<"__builtin_ia32_extracti32x4_mask">, 2451 Intrinsic<[llvm_v4i32_ty], [llvm_v16i32_ty, llvm_i32_ty, 2452 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2453 def int_x86_avx512_mask_vextractf32x4_256 : 2454 GCCBuiltin<"__builtin_ia32_extractf32x4_256_mask">, 2455 Intrinsic<[llvm_v4f32_ty], [llvm_v8f32_ty, llvm_i32_ty, 2456 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 2457 def int_x86_avx512_mask_vextracti32x4_256 : 2458 GCCBuiltin<"__builtin_ia32_extracti32x4_256_mask">, 2459 Intrinsic<[llvm_v4i32_ty], [llvm_v8i32_ty, llvm_i32_ty, 2460 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2461 def int_x86_avx512_mask_vextractf64x2_256 : 2462 GCCBuiltin<"__builtin_ia32_extractf64x2_256_mask">, 2463 Intrinsic<[llvm_v2f64_ty], [llvm_v4f64_ty, llvm_i32_ty, 2464 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 2465 def int_x86_avx512_mask_vextracti64x2_256 : 2466 GCCBuiltin<"__builtin_ia32_extracti64x2_256_mask">, 2467 Intrinsic<[llvm_v2i64_ty], [llvm_v4i64_ty, llvm_i32_ty, 2468 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2469 def int_x86_avx512_mask_vextractf64x2_512 : 2470 GCCBuiltin<"__builtin_ia32_extractf64x2_512_mask">, 2471 Intrinsic<[llvm_v2f64_ty], [llvm_v8f64_ty, llvm_i32_ty, 2472 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 2473 def int_x86_avx512_mask_vextracti64x2_512 : 2474 GCCBuiltin<"__builtin_ia32_extracti64x2_512_mask">, 2475 Intrinsic<[llvm_v2i64_ty], [llvm_v8i64_ty, llvm_i32_ty, 2476 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2477 def int_x86_avx512_mask_vextractf32x8_512 : 2478 GCCBuiltin<"__builtin_ia32_extractf32x8_mask">, 2479 Intrinsic<[llvm_v8f32_ty], [llvm_v16f32_ty, llvm_i32_ty, 2480 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 2481 def int_x86_avx512_mask_vextracti32x8_512 : 2482 GCCBuiltin<"__builtin_ia32_extracti32x8_mask">, 2483 Intrinsic<[llvm_v8i32_ty],[llvm_v16i32_ty, llvm_i32_ty, 2484 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 2485 def int_x86_avx512_mask_vextractf64x4_512 : 2486 GCCBuiltin<"__builtin_ia32_extractf64x4_mask">, 2487 Intrinsic<[llvm_v4f64_ty], [llvm_v8f64_ty, llvm_i32_ty, 2488 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 2489 def int_x86_avx512_mask_vextracti64x4_512 : 2490 GCCBuiltin<"__builtin_ia32_extracti64x4_mask">, 2491 Intrinsic<[llvm_v4i64_ty], [llvm_v8i64_ty, llvm_i32_ty, 2492 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2493 2494 def int_x86_avx512_mask_insertf32x4_256 : 2495 GCCBuiltin<"__builtin_ia32_insertf32x4_256_mask">, 2496 Intrinsic<[llvm_v8f32_ty], 2497 [llvm_v8f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty], 2498 [IntrNoMem]>; 2499 2500 def int_x86_avx512_mask_insertf32x4_512 : 2501 GCCBuiltin<"__builtin_ia32_insertf32x4_512_mask">, 2502 Intrinsic<[llvm_v16f32_ty], 2503 [llvm_v16f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v16f32_ty, llvm_i8_ty], 2504 [IntrNoMem]>; 2505 2506 def int_x86_avx512_mask_insertf32x8_512 : 2507 GCCBuiltin<"__builtin_ia32_insertf32x8_mask">, 2508 Intrinsic<[llvm_v16f32_ty], 2509 [llvm_v16f32_ty, llvm_v8f32_ty, llvm_i32_ty, llvm_v16f32_ty, llvm_i16_ty], 2510 [IntrNoMem]>; 2511 2512 def int_x86_avx512_mask_insertf64x2_256 : 2513 GCCBuiltin<"__builtin_ia32_insertf64x2_256_mask">, 2514 Intrinsic<[llvm_v4f64_ty], 2515 [llvm_v4f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty], 2516 [IntrNoMem]>; 2517 2518 def int_x86_avx512_mask_insertf64x2_512 : 2519 GCCBuiltin<"__builtin_ia32_insertf64x2_512_mask">, 2520 Intrinsic<[llvm_v8f64_ty], 2521 [llvm_v8f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty], 2522 [IntrNoMem]>; 2523 2524 def int_x86_avx512_mask_insertf64x4_512 : 2525 GCCBuiltin<"__builtin_ia32_insertf64x4_mask">, 2526 Intrinsic<[llvm_v8f64_ty], 2527 [llvm_v8f64_ty, llvm_v4f64_ty, llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty], 2528 [IntrNoMem]>; 2529 2530 def int_x86_avx512_mask_inserti32x4_256 : 2531 GCCBuiltin<"__builtin_ia32_inserti32x4_256_mask">, 2532 Intrinsic<[llvm_v8i32_ty], 2533 [llvm_v8i32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_v8i32_ty, llvm_i8_ty], 2534 [IntrNoMem]>; 2535 2536 def int_x86_avx512_mask_inserti32x4_512 : 2537 GCCBuiltin<"__builtin_ia32_inserti32x4_512_mask">, 2538 Intrinsic<[llvm_v16i32_ty], 2539 [llvm_v16i32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_v16i32_ty, llvm_i8_ty], 2540 [IntrNoMem]>; 2541 2542 def int_x86_avx512_mask_inserti32x8_512 : 2543 GCCBuiltin<"__builtin_ia32_inserti32x8_mask">, 2544 Intrinsic<[llvm_v16i32_ty], 2545 [llvm_v16i32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_v16i32_ty, llvm_i16_ty], 2546 [IntrNoMem]>; 2547 2548 def int_x86_avx512_mask_inserti64x2_256 : 2549 GCCBuiltin<"__builtin_ia32_inserti64x2_256_mask">, 2550 Intrinsic<[llvm_v4i64_ty], 2551 [llvm_v4i64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_v4i64_ty, llvm_i8_ty], 2552 [IntrNoMem]>; 2553 2554 def int_x86_avx512_mask_inserti64x2_512 : 2555 GCCBuiltin<"__builtin_ia32_inserti64x2_512_mask">, 2556 Intrinsic<[llvm_v8i64_ty], 2557 [llvm_v8i64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_v8i64_ty, llvm_i8_ty], 2558 [IntrNoMem]>; 2559 2560 def int_x86_avx512_mask_inserti64x4_512 : 2561 GCCBuiltin<"__builtin_ia32_inserti64x4_mask">, 2562 Intrinsic<[llvm_v8i64_ty], 2563 [llvm_v8i64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_v8i64_ty, llvm_i8_ty], 2564 [IntrNoMem]>; 2565} 2566 2567// Conditional load ops 2568let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2569 def int_x86_avx2_maskload_d : GCCBuiltin<"__builtin_ia32_maskloadd">, 2570 Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_v4i32_ty], 2571 [IntrReadArgMem]>; 2572 def int_x86_avx2_maskload_q : GCCBuiltin<"__builtin_ia32_maskloadq">, 2573 Intrinsic<[llvm_v2i64_ty], [llvm_ptr_ty, llvm_v2i64_ty], 2574 [IntrReadArgMem]>; 2575 def int_x86_avx2_maskload_d_256 : GCCBuiltin<"__builtin_ia32_maskloadd256">, 2576 Intrinsic<[llvm_v8i32_ty], [llvm_ptr_ty, llvm_v8i32_ty], 2577 [IntrReadArgMem]>; 2578 def int_x86_avx2_maskload_q_256 : GCCBuiltin<"__builtin_ia32_maskloadq256">, 2579 Intrinsic<[llvm_v4i64_ty], [llvm_ptr_ty, llvm_v4i64_ty], 2580 [IntrReadArgMem]>; 2581 def int_x86_avx512_mask_loadu_d_512 : GCCBuiltin<"__builtin_ia32_loaddqusi512_mask">, 2582 Intrinsic<[llvm_v16i32_ty], [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 2583 [IntrReadArgMem]>; 2584 def int_x86_avx512_mask_loadu_q_512 : GCCBuiltin<"__builtin_ia32_loaddqudi512_mask">, 2585 Intrinsic<[llvm_v8i64_ty], [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 2586 [IntrReadArgMem]>; 2587} 2588 2589// Conditional store ops 2590let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2591 def int_x86_avx2_maskstore_d : GCCBuiltin<"__builtin_ia32_maskstored">, 2592 Intrinsic<[], [llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i32_ty], 2593 [IntrReadWriteArgMem]>; 2594 def int_x86_avx2_maskstore_q : GCCBuiltin<"__builtin_ia32_maskstoreq">, 2595 Intrinsic<[], [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty], 2596 [IntrReadWriteArgMem]>; 2597 def int_x86_avx2_maskstore_d_256 : 2598 GCCBuiltin<"__builtin_ia32_maskstored256">, 2599 Intrinsic<[], [llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i32_ty], 2600 [IntrReadWriteArgMem]>; 2601 def int_x86_avx2_maskstore_q_256 : 2602 GCCBuiltin<"__builtin_ia32_maskstoreq256">, 2603 Intrinsic<[], [llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i64_ty], 2604 [IntrReadWriteArgMem]>; 2605 def int_x86_avx512_mask_storeu_d_512 : 2606 GCCBuiltin<"__builtin_ia32_storedqusi512_mask">, 2607 Intrinsic<[], [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 2608 [IntrReadWriteArgMem]>; 2609 def int_x86_avx512_mask_storeu_q_512 : 2610 GCCBuiltin<"__builtin_ia32_storedqudi512_mask">, 2611 Intrinsic<[], [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 2612 [IntrReadWriteArgMem]>; 2613} 2614 2615// Variable bit shift ops 2616let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2617 def int_x86_avx2_psllv_d : GCCBuiltin<"__builtin_ia32_psllv4si">, 2618 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 2619 [IntrNoMem]>; 2620 def int_x86_avx2_psllv_d_256 : GCCBuiltin<"__builtin_ia32_psllv8si">, 2621 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 2622 [IntrNoMem]>; 2623 def int_x86_avx2_psllv_q : GCCBuiltin<"__builtin_ia32_psllv2di">, 2624 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 2625 [IntrNoMem]>; 2626 def int_x86_avx2_psllv_q_256 : GCCBuiltin<"__builtin_ia32_psllv4di">, 2627 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 2628 [IntrNoMem]>; 2629 2630 def int_x86_avx2_psrlv_d : GCCBuiltin<"__builtin_ia32_psrlv4si">, 2631 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 2632 [IntrNoMem]>; 2633 def int_x86_avx2_psrlv_d_256 : GCCBuiltin<"__builtin_ia32_psrlv8si">, 2634 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 2635 [IntrNoMem]>; 2636 def int_x86_avx2_psrlv_q : GCCBuiltin<"__builtin_ia32_psrlv2di">, 2637 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 2638 [IntrNoMem]>; 2639 def int_x86_avx2_psrlv_q_256 : GCCBuiltin<"__builtin_ia32_psrlv4di">, 2640 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 2641 [IntrNoMem]>; 2642 2643 def int_x86_avx2_psrav_d : GCCBuiltin<"__builtin_ia32_psrav4si">, 2644 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 2645 [IntrNoMem]>; 2646 def int_x86_avx2_psrav_d_256 : GCCBuiltin<"__builtin_ia32_psrav8si">, 2647 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 2648 [IntrNoMem]>; 2649 2650 def int_x86_avx512_mask_psllv_d : GCCBuiltin<"__builtin_ia32_psllv16si_mask">, 2651 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2652 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 2653 [IntrNoMem]>; 2654 def int_x86_avx512_mask_psllv_q : GCCBuiltin<"__builtin_ia32_psllv8di_mask">, 2655 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2656 llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 2657 [IntrNoMem]>; 2658 def int_x86_avx512_mask_psrav_d : GCCBuiltin<"__builtin_ia32_psrav16si_mask">, 2659 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2660 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 2661 [IntrNoMem]>; 2662 def int_x86_avx512_mask_psrav_q : GCCBuiltin<"__builtin_ia32_psrav8di_mask">, 2663 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2664 llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 2665 [IntrNoMem]>; 2666 def int_x86_avx512_mask_psrlv_d : GCCBuiltin<"__builtin_ia32_psrlv16si_mask">, 2667 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2668 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 2669 [IntrNoMem]>; 2670 def int_x86_avx512_mask_psrlv_q : GCCBuiltin<"__builtin_ia32_psrlv8di_mask">, 2671 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2672 llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 2673 [IntrNoMem]>; 2674 def int_x86_avx512_psll_dq_512 : GCCBuiltin<"__builtin_ia32_pslldq512">, 2675 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_i32_ty], 2676 [IntrNoMem]>; 2677 def int_x86_avx512_psrl_dq_512 : GCCBuiltin<"__builtin_ia32_psrldq512">, 2678 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_i32_ty], 2679 [IntrNoMem]>; 2680} 2681 2682// Gather ops 2683let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2684 def int_x86_avx2_gather_d_pd : GCCBuiltin<"__builtin_ia32_gatherd_pd">, 2685 Intrinsic<[llvm_v2f64_ty], 2686 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i8_ty], 2687 [IntrReadArgMem]>; 2688 def int_x86_avx2_gather_d_pd_256 : GCCBuiltin<"__builtin_ia32_gatherd_pd256">, 2689 Intrinsic<[llvm_v4f64_ty], 2690 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i8_ty], 2691 [IntrReadArgMem]>; 2692 def int_x86_avx2_gather_q_pd : GCCBuiltin<"__builtin_ia32_gatherq_pd">, 2693 Intrinsic<[llvm_v2f64_ty], 2694 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty], 2695 [IntrReadArgMem]>; 2696 def int_x86_avx2_gather_q_pd_256 : GCCBuiltin<"__builtin_ia32_gatherq_pd256">, 2697 Intrinsic<[llvm_v4f64_ty], 2698 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], 2699 [IntrReadArgMem]>; 2700 def int_x86_avx2_gather_d_ps : GCCBuiltin<"__builtin_ia32_gatherd_ps">, 2701 Intrinsic<[llvm_v4f32_ty], 2702 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty], 2703 [IntrReadArgMem]>; 2704 def int_x86_avx2_gather_d_ps_256 : GCCBuiltin<"__builtin_ia32_gatherd_ps256">, 2705 Intrinsic<[llvm_v8f32_ty], 2706 [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], 2707 [IntrReadArgMem]>; 2708 def int_x86_avx2_gather_q_ps : GCCBuiltin<"__builtin_ia32_gatherq_ps">, 2709 Intrinsic<[llvm_v4f32_ty], 2710 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty], 2711 [IntrReadArgMem]>; 2712 def int_x86_avx2_gather_q_ps_256 : GCCBuiltin<"__builtin_ia32_gatherq_ps256">, 2713 Intrinsic<[llvm_v4f32_ty], 2714 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i8_ty], 2715 [IntrReadArgMem]>; 2716 2717 def int_x86_avx2_gather_d_q : GCCBuiltin<"__builtin_ia32_gatherd_q">, 2718 Intrinsic<[llvm_v2i64_ty], 2719 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i8_ty], 2720 [IntrReadArgMem]>; 2721 def int_x86_avx2_gather_d_q_256 : GCCBuiltin<"__builtin_ia32_gatherd_q256">, 2722 Intrinsic<[llvm_v4i64_ty], 2723 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i8_ty], 2724 [IntrReadArgMem]>; 2725 def int_x86_avx2_gather_q_q : GCCBuiltin<"__builtin_ia32_gatherq_q">, 2726 Intrinsic<[llvm_v2i64_ty], 2727 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 2728 [IntrReadArgMem]>; 2729 def int_x86_avx2_gather_q_q_256 : GCCBuiltin<"__builtin_ia32_gatherq_q256">, 2730 Intrinsic<[llvm_v4i64_ty], 2731 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 2732 [IntrReadArgMem]>; 2733 def int_x86_avx2_gather_d_d : GCCBuiltin<"__builtin_ia32_gatherd_d">, 2734 Intrinsic<[llvm_v4i32_ty], 2735 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 2736 [IntrReadArgMem]>; 2737 def int_x86_avx2_gather_d_d_256 : GCCBuiltin<"__builtin_ia32_gatherd_d256">, 2738 Intrinsic<[llvm_v8i32_ty], 2739 [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 2740 [IntrReadArgMem]>; 2741 def int_x86_avx2_gather_q_d : GCCBuiltin<"__builtin_ia32_gatherq_d">, 2742 Intrinsic<[llvm_v4i32_ty], 2743 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 2744 [IntrReadArgMem]>; 2745 def int_x86_avx2_gather_q_d_256 : GCCBuiltin<"__builtin_ia32_gatherq_d256">, 2746 Intrinsic<[llvm_v4i32_ty], 2747 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 2748 [IntrReadArgMem]>; 2749} 2750 2751// Misc. 2752let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2753 def int_x86_avx2_pmovmskb : GCCBuiltin<"__builtin_ia32_pmovmskb256">, 2754 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty], [IntrNoMem]>; 2755 def int_x86_avx2_pshuf_b : GCCBuiltin<"__builtin_ia32_pshufb256">, 2756 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 2757 llvm_v32i8_ty], [IntrNoMem]>; 2758 def int_x86_avx2_mpsadbw : GCCBuiltin<"__builtin_ia32_mpsadbw256">, 2759 Intrinsic<[llvm_v16i16_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 2760 llvm_i8_ty], [IntrNoMem, Commutative]>; 2761 def int_x86_avx2_movntdqa : GCCBuiltin<"__builtin_ia32_movntdqa256">, 2762 Intrinsic<[llvm_v4i64_ty], [llvm_ptr_ty], [IntrReadMem]>; 2763} 2764 2765//===----------------------------------------------------------------------===// 2766// FMA3 and FMA4 2767 2768let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2769 def int_x86_fma_vfmadd_ss : GCCBuiltin<"__builtin_ia32_vfmaddss">, 2770 Intrinsic<[llvm_v4f32_ty], 2771 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2772 [IntrNoMem]>; 2773 def int_x86_fma_vfmadd_sd : GCCBuiltin<"__builtin_ia32_vfmaddsd">, 2774 Intrinsic<[llvm_v2f64_ty], 2775 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2776 [IntrNoMem]>; 2777 def int_x86_fma_vfmadd_ps : GCCBuiltin<"__builtin_ia32_vfmaddps">, 2778 Intrinsic<[llvm_v4f32_ty], 2779 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2780 [IntrNoMem]>; 2781 def int_x86_fma_vfmadd_pd : GCCBuiltin<"__builtin_ia32_vfmaddpd">, 2782 Intrinsic<[llvm_v2f64_ty], 2783 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2784 [IntrNoMem]>; 2785 def int_x86_fma_vfmadd_ps_256 : GCCBuiltin<"__builtin_ia32_vfmaddps256">, 2786 Intrinsic<[llvm_v8f32_ty], 2787 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2788 [IntrNoMem]>; 2789 def int_x86_fma_vfmadd_pd_256 : GCCBuiltin<"__builtin_ia32_vfmaddpd256">, 2790 Intrinsic<[llvm_v4f64_ty], 2791 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2792 [IntrNoMem]>; 2793 2794 def int_x86_fma_vfmsub_ss : GCCBuiltin<"__builtin_ia32_vfmsubss">, 2795 Intrinsic<[llvm_v4f32_ty], 2796 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2797 [IntrNoMem]>; 2798 def int_x86_fma_vfmsub_sd : GCCBuiltin<"__builtin_ia32_vfmsubsd">, 2799 Intrinsic<[llvm_v2f64_ty], 2800 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2801 [IntrNoMem]>; 2802 def int_x86_fma_vfmsub_ps : GCCBuiltin<"__builtin_ia32_vfmsubps">, 2803 Intrinsic<[llvm_v4f32_ty], 2804 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2805 [IntrNoMem]>; 2806 def int_x86_fma_vfmsub_pd : GCCBuiltin<"__builtin_ia32_vfmsubpd">, 2807 Intrinsic<[llvm_v2f64_ty], 2808 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2809 [IntrNoMem]>; 2810 def int_x86_fma_vfmsub_ps_256 : GCCBuiltin<"__builtin_ia32_vfmsubps256">, 2811 Intrinsic<[llvm_v8f32_ty], 2812 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2813 [IntrNoMem]>; 2814 def int_x86_fma_vfmsub_pd_256 : GCCBuiltin<"__builtin_ia32_vfmsubpd256">, 2815 Intrinsic<[llvm_v4f64_ty], 2816 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2817 [IntrNoMem]>; 2818 def int_x86_fma_vfnmadd_ss : GCCBuiltin<"__builtin_ia32_vfnmaddss">, 2819 Intrinsic<[llvm_v4f32_ty], 2820 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2821 [IntrNoMem]>; 2822 def int_x86_fma_vfnmadd_sd : GCCBuiltin<"__builtin_ia32_vfnmaddsd">, 2823 Intrinsic<[llvm_v2f64_ty], 2824 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2825 [IntrNoMem]>; 2826 def int_x86_fma_vfnmadd_ps : GCCBuiltin<"__builtin_ia32_vfnmaddps">, 2827 Intrinsic<[llvm_v4f32_ty], 2828 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2829 [IntrNoMem]>; 2830 def int_x86_fma_vfnmadd_pd : GCCBuiltin<"__builtin_ia32_vfnmaddpd">, 2831 Intrinsic<[llvm_v2f64_ty], 2832 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2833 [IntrNoMem]>; 2834 def int_x86_fma_vfnmadd_ps_256 : GCCBuiltin<"__builtin_ia32_vfnmaddps256">, 2835 Intrinsic<[llvm_v8f32_ty], 2836 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2837 [IntrNoMem]>; 2838 def int_x86_fma_vfnmadd_pd_256 : GCCBuiltin<"__builtin_ia32_vfnmaddpd256">, 2839 Intrinsic<[llvm_v4f64_ty], 2840 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2841 [IntrNoMem]>; 2842 def int_x86_fma_vfnmsub_ss : GCCBuiltin<"__builtin_ia32_vfnmsubss">, 2843 Intrinsic<[llvm_v4f32_ty], 2844 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2845 [IntrNoMem]>; 2846 def int_x86_fma_vfnmsub_sd : GCCBuiltin<"__builtin_ia32_vfnmsubsd">, 2847 Intrinsic<[llvm_v2f64_ty], 2848 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2849 [IntrNoMem]>; 2850 def int_x86_fma_vfnmsub_ps : GCCBuiltin<"__builtin_ia32_vfnmsubps">, 2851 Intrinsic<[llvm_v4f32_ty], 2852 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2853 [IntrNoMem]>; 2854 def int_x86_fma_vfnmsub_pd : GCCBuiltin<"__builtin_ia32_vfnmsubpd">, 2855 Intrinsic<[llvm_v2f64_ty], 2856 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2857 [IntrNoMem]>; 2858 def int_x86_fma_vfnmsub_ps_256 : GCCBuiltin<"__builtin_ia32_vfnmsubps256">, 2859 Intrinsic<[llvm_v8f32_ty], 2860 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2861 [IntrNoMem]>; 2862 def int_x86_fma_vfnmsub_pd_256 : GCCBuiltin<"__builtin_ia32_vfnmsubpd256">, 2863 Intrinsic<[llvm_v4f64_ty], 2864 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2865 [IntrNoMem]>; 2866 def int_x86_fma_vfmaddsub_ps : GCCBuiltin<"__builtin_ia32_vfmaddsubps">, 2867 Intrinsic<[llvm_v4f32_ty], 2868 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2869 [IntrNoMem]>; 2870 def int_x86_fma_vfmaddsub_pd : GCCBuiltin<"__builtin_ia32_vfmaddsubpd">, 2871 Intrinsic<[llvm_v2f64_ty], 2872 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2873 [IntrNoMem]>; 2874 def int_x86_fma_vfmaddsub_ps_256 : 2875 GCCBuiltin<"__builtin_ia32_vfmaddsubps256">, 2876 Intrinsic<[llvm_v8f32_ty], 2877 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2878 [IntrNoMem]>; 2879 def int_x86_fma_vfmaddsub_pd_256 : 2880 GCCBuiltin<"__builtin_ia32_vfmaddsubpd256">, 2881 Intrinsic<[llvm_v4f64_ty], 2882 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2883 [IntrNoMem]>; 2884 def int_x86_fma_vfmsubadd_ps : GCCBuiltin<"__builtin_ia32_vfmsubaddps">, 2885 Intrinsic<[llvm_v4f32_ty], 2886 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2887 [IntrNoMem]>; 2888 def int_x86_fma_vfmsubadd_pd : GCCBuiltin<"__builtin_ia32_vfmsubaddpd">, 2889 Intrinsic<[llvm_v2f64_ty], 2890 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2891 [IntrNoMem]>; 2892 def int_x86_fma_vfmsubadd_ps_256 : 2893 GCCBuiltin<"__builtin_ia32_vfmsubaddps256">, 2894 Intrinsic<[llvm_v8f32_ty], 2895 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2896 [IntrNoMem]>; 2897 def int_x86_fma_vfmsubadd_pd_256 : 2898 GCCBuiltin<"__builtin_ia32_vfmsubaddpd256">, 2899 Intrinsic<[llvm_v4f64_ty], 2900 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2901 [IntrNoMem]>; 2902 2903 def int_x86_avx512_mask_vfmadd_pd_128 : 2904 GCCBuiltin<"__builtin_ia32_vfmaddpd128_mask">, 2905 Intrinsic<[llvm_v2f64_ty], 2906 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2907 [IntrNoMem]>; 2908 2909 def int_x86_avx512_mask3_vfmadd_pd_128 : 2910 GCCBuiltin<"__builtin_ia32_vfmaddpd128_mask3">, 2911 Intrinsic<[llvm_v2f64_ty], 2912 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2913 [IntrNoMem]>; 2914 2915 def int_x86_avx512_maskz_vfmadd_pd_128 : 2916 GCCBuiltin<"__builtin_ia32_vfmaddpd128_maskz">, 2917 Intrinsic<[llvm_v2f64_ty], 2918 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2919 [IntrNoMem]>; 2920 2921 def int_x86_avx512_mask_vfmadd_pd_256 : 2922 GCCBuiltin<"__builtin_ia32_vfmaddpd256_mask">, 2923 Intrinsic<[llvm_v4f64_ty], 2924 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2925 [IntrNoMem]>; 2926 2927 def int_x86_avx512_mask3_vfmadd_pd_256 : 2928 GCCBuiltin<"__builtin_ia32_vfmaddpd256_mask3">, 2929 Intrinsic<[llvm_v4f64_ty], 2930 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2931 [IntrNoMem]>; 2932 2933 def int_x86_avx512_maskz_vfmadd_pd_256 : 2934 GCCBuiltin<"__builtin_ia32_vfmaddpd256_maskz">, 2935 Intrinsic<[llvm_v4f64_ty], 2936 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2937 [IntrNoMem]>; 2938 2939 def int_x86_avx512_mask_vfmadd_pd_512 : 2940 GCCBuiltin<"__builtin_ia32_vfmaddpd512_mask">, 2941 Intrinsic<[llvm_v8f64_ty], 2942 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2943 llvm_i32_ty], [IntrNoMem]>; 2944 2945 def int_x86_avx512_mask3_vfmadd_pd_512 : 2946 GCCBuiltin<"__builtin_ia32_vfmaddpd512_mask3">, 2947 Intrinsic<[llvm_v8f64_ty], 2948 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2949 llvm_i32_ty], [IntrNoMem]>; 2950 2951 def int_x86_avx512_maskz_vfmadd_pd_512 : 2952 GCCBuiltin<"__builtin_ia32_vfmaddpd512_maskz">, 2953 Intrinsic<[llvm_v8f64_ty], 2954 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2955 llvm_i32_ty], [IntrNoMem]>; 2956 2957 def int_x86_avx512_mask_vfmadd_ps_128 : 2958 GCCBuiltin<"__builtin_ia32_vfmaddps128_mask">, 2959 Intrinsic<[llvm_v4f32_ty], 2960 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2961 [IntrNoMem]>; 2962 2963 def int_x86_avx512_mask3_vfmadd_ps_128 : 2964 GCCBuiltin<"__builtin_ia32_vfmaddps128_mask3">, 2965 Intrinsic<[llvm_v4f32_ty], 2966 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2967 [IntrNoMem]>; 2968 2969 def int_x86_avx512_maskz_vfmadd_ps_128 : 2970 GCCBuiltin<"__builtin_ia32_vfmaddps128_maskz">, 2971 Intrinsic<[llvm_v4f32_ty], 2972 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2973 [IntrNoMem]>; 2974 2975 def int_x86_avx512_mask_vfmadd_ps_256 : 2976 GCCBuiltin<"__builtin_ia32_vfmaddps256_mask">, 2977 Intrinsic<[llvm_v8f32_ty], 2978 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2979 [IntrNoMem]>; 2980 2981 def int_x86_avx512_mask3_vfmadd_ps_256 : 2982 GCCBuiltin<"__builtin_ia32_vfmaddps256_mask3">, 2983 Intrinsic<[llvm_v8f32_ty], 2984 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2985 [IntrNoMem]>; 2986 2987 def int_x86_avx512_maskz_vfmadd_ps_256 : 2988 GCCBuiltin<"__builtin_ia32_vfmaddps256_maskz">, 2989 Intrinsic<[llvm_v8f32_ty], 2990 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2991 [IntrNoMem]>; 2992 2993 def int_x86_avx512_mask_vfmadd_ps_512 : 2994 GCCBuiltin<"__builtin_ia32_vfmaddps512_mask">, 2995 Intrinsic<[llvm_v16f32_ty], 2996 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2997 llvm_i32_ty], [IntrNoMem]>; 2998 2999 def int_x86_avx512_mask3_vfmadd_ps_512 : 3000 GCCBuiltin<"__builtin_ia32_vfmaddps512_mask3">, 3001 Intrinsic<[llvm_v16f32_ty], 3002 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3003 llvm_i32_ty], [IntrNoMem]>; 3004 3005 def int_x86_avx512_maskz_vfmadd_ps_512 : 3006 GCCBuiltin<"__builtin_ia32_vfmaddps512_maskz">, 3007 Intrinsic<[llvm_v16f32_ty], 3008 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3009 llvm_i32_ty], [IntrNoMem]>; 3010 3011 def int_x86_avx512_mask_vfmaddsub_pd_128 : 3012 GCCBuiltin<"__builtin_ia32_vfmaddsubpd128_mask">, 3013 Intrinsic<[llvm_v2f64_ty], 3014 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3015 [IntrNoMem]>; 3016 3017 def int_x86_avx512_mask3_vfmaddsub_pd_128 : 3018 GCCBuiltin<"__builtin_ia32_vfmaddsubpd128_mask3">, 3019 Intrinsic<[llvm_v2f64_ty], 3020 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3021 [IntrNoMem]>; 3022 3023 def int_x86_avx512_maskz_vfmaddsub_pd_128 : 3024 GCCBuiltin<"__builtin_ia32_vfmaddsubpd128_maskz">, 3025 Intrinsic<[llvm_v2f64_ty], 3026 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3027 [IntrNoMem]>; 3028 3029 def int_x86_avx512_mask_vfmaddsub_pd_256 : 3030 GCCBuiltin<"__builtin_ia32_vfmaddsubpd256_mask">, 3031 Intrinsic<[llvm_v4f64_ty], 3032 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3033 [IntrNoMem]>; 3034 3035 def int_x86_avx512_mask3_vfmaddsub_pd_256 : 3036 GCCBuiltin<"__builtin_ia32_vfmaddsubpd256_mask3">, 3037 Intrinsic<[llvm_v4f64_ty], 3038 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3039 [IntrNoMem]>; 3040 3041 def int_x86_avx512_maskz_vfmaddsub_pd_256 : 3042 GCCBuiltin<"__builtin_ia32_vfmaddsubpd256_maskz">, 3043 Intrinsic<[llvm_v4f64_ty], 3044 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3045 [IntrNoMem]>; 3046 3047 def int_x86_avx512_mask_vfmaddsub_pd_512 : 3048 GCCBuiltin<"__builtin_ia32_vfmaddsubpd512_mask">, 3049 Intrinsic<[llvm_v8f64_ty], 3050 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 3051 llvm_i32_ty], [IntrNoMem]>; 3052 3053 def int_x86_avx512_mask3_vfmaddsub_pd_512 : 3054 GCCBuiltin<"__builtin_ia32_vfmaddsubpd512_mask3">, 3055 Intrinsic<[llvm_v8f64_ty], 3056 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 3057 llvm_i32_ty], [IntrNoMem]>; 3058 3059 def int_x86_avx512_maskz_vfmaddsub_pd_512 : 3060 GCCBuiltin<"__builtin_ia32_vfmaddsubpd512_maskz">, 3061 Intrinsic<[llvm_v8f64_ty], 3062 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 3063 llvm_i32_ty], [IntrNoMem]>; 3064 3065 def int_x86_avx512_mask_vfmaddsub_ps_128 : 3066 GCCBuiltin<"__builtin_ia32_vfmaddsubps128_mask">, 3067 Intrinsic<[llvm_v4f32_ty], 3068 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3069 [IntrNoMem]>; 3070 3071 def int_x86_avx512_mask3_vfmaddsub_ps_128 : 3072 GCCBuiltin<"__builtin_ia32_vfmaddsubps128_mask3">, 3073 Intrinsic<[llvm_v4f32_ty], 3074 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3075 [IntrNoMem]>; 3076 3077 def int_x86_avx512_maskz_vfmaddsub_ps_128 : 3078 GCCBuiltin<"__builtin_ia32_vfmaddsubps128_maskz">, 3079 Intrinsic<[llvm_v4f32_ty], 3080 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3081 [IntrNoMem]>; 3082 3083 def int_x86_avx512_mask_vfmaddsub_ps_256 : 3084 GCCBuiltin<"__builtin_ia32_vfmaddsubps256_mask">, 3085 Intrinsic<[llvm_v8f32_ty], 3086 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3087 [IntrNoMem]>; 3088 3089 def int_x86_avx512_mask3_vfmaddsub_ps_256 : 3090 GCCBuiltin<"__builtin_ia32_vfmaddsubps256_mask3">, 3091 Intrinsic<[llvm_v8f32_ty], 3092 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3093 [IntrNoMem]>; 3094 3095 def int_x86_avx512_maskz_vfmaddsub_ps_256 : 3096 GCCBuiltin<"__builtin_ia32_vfmaddsubps256_maskz">, 3097 Intrinsic<[llvm_v8f32_ty], 3098 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3099 [IntrNoMem]>; 3100 3101 def int_x86_avx512_mask_vfmaddsub_ps_512 : 3102 GCCBuiltin<"__builtin_ia32_vfmaddsubps512_mask">, 3103 Intrinsic<[llvm_v16f32_ty], 3104 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3105 llvm_i32_ty], [IntrNoMem]>; 3106 3107 def int_x86_avx512_mask3_vfmaddsub_ps_512 : 3108 GCCBuiltin<"__builtin_ia32_vfmaddsubps512_mask3">, 3109 Intrinsic<[llvm_v16f32_ty], 3110 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3111 llvm_i32_ty], [IntrNoMem]>; 3112 3113 def int_x86_avx512_maskz_vfmaddsub_ps_512 : 3114 GCCBuiltin<"__builtin_ia32_vfmaddsubps512_maskz">, 3115 Intrinsic<[llvm_v16f32_ty], 3116 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3117 llvm_i32_ty], [IntrNoMem]>; 3118 3119 def int_x86_avx512_mask3_vfmsub_pd_128 : 3120 GCCBuiltin<"__builtin_ia32_vfmsubpd128_mask3">, 3121 Intrinsic<[llvm_v2f64_ty], 3122 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3123 [IntrNoMem]>; 3124 3125 def int_x86_avx512_mask3_vfmsub_pd_256 : 3126 GCCBuiltin<"__builtin_ia32_vfmsubpd256_mask3">, 3127 Intrinsic<[llvm_v4f64_ty], 3128 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3129 [IntrNoMem]>; 3130 3131 def int_x86_avx512_mask3_vfmsub_pd_512 : 3132 GCCBuiltin<"__builtin_ia32_vfmsubpd512_mask3">, 3133 Intrinsic<[llvm_v8f64_ty], 3134 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 3135 llvm_i32_ty], [IntrNoMem]>; 3136 3137 def int_x86_avx512_mask3_vfmsub_ps_128 : 3138 GCCBuiltin<"__builtin_ia32_vfmsubps128_mask3">, 3139 Intrinsic<[llvm_v4f32_ty], 3140 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3141 [IntrNoMem]>; 3142 3143 def int_x86_avx512_mask3_vfmsub_ps_256 : 3144 GCCBuiltin<"__builtin_ia32_vfmsubps256_mask3">, 3145 Intrinsic<[llvm_v8f32_ty], 3146 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3147 [IntrNoMem]>; 3148 3149 def int_x86_avx512_mask3_vfmsub_ps_512 : 3150 GCCBuiltin<"__builtin_ia32_vfmsubps512_mask3">, 3151 Intrinsic<[llvm_v16f32_ty], 3152 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3153 llvm_i32_ty], [IntrNoMem]>; 3154 3155 def int_x86_avx512_mask3_vfmsubadd_pd_128 : 3156 GCCBuiltin<"__builtin_ia32_vfmsubaddpd128_mask3">, 3157 Intrinsic<[llvm_v2f64_ty], 3158 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3159 [IntrNoMem]>; 3160 3161 def int_x86_avx512_mask3_vfmsubadd_pd_256 : 3162 GCCBuiltin<"__builtin_ia32_vfmsubaddpd256_mask3">, 3163 Intrinsic<[llvm_v4f64_ty], 3164 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3165 [IntrNoMem]>; 3166 3167 def int_x86_avx512_mask3_vfmsubadd_pd_512 : 3168 GCCBuiltin<"__builtin_ia32_vfmsubaddpd512_mask3">, 3169 Intrinsic<[llvm_v8f64_ty], 3170 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 3171 llvm_i32_ty], [IntrNoMem]>; 3172 3173 def int_x86_avx512_mask3_vfmsubadd_ps_128 : 3174 GCCBuiltin<"__builtin_ia32_vfmsubaddps128_mask3">, 3175 Intrinsic<[llvm_v4f32_ty], 3176 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3177 [IntrNoMem]>; 3178 3179 def int_x86_avx512_mask3_vfmsubadd_ps_256 : 3180 GCCBuiltin<"__builtin_ia32_vfmsubaddps256_mask3">, 3181 Intrinsic<[llvm_v8f32_ty], 3182 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3183 [IntrNoMem]>; 3184 3185 def int_x86_avx512_mask3_vfmsubadd_ps_512 : 3186 GCCBuiltin<"__builtin_ia32_vfmsubaddps512_mask3">, 3187 Intrinsic<[llvm_v16f32_ty], 3188 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3189 llvm_i32_ty], [IntrNoMem]>; 3190 3191 def int_x86_avx512_mask_vfnmadd_pd_128 : 3192 GCCBuiltin<"__builtin_ia32_vfnmaddpd128_mask">, 3193 Intrinsic<[llvm_v2f64_ty], 3194 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3195 [IntrNoMem]>; 3196 3197 def int_x86_avx512_mask_vfnmadd_pd_256 : 3198 GCCBuiltin<"__builtin_ia32_vfnmaddpd256_mask">, 3199 Intrinsic<[llvm_v4f64_ty], 3200 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3201 [IntrNoMem]>; 3202 3203 def int_x86_avx512_mask_vfnmadd_pd_512 : 3204 GCCBuiltin<"__builtin_ia32_vfnmaddpd512_mask">, 3205 Intrinsic<[llvm_v8f64_ty], 3206 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 3207 llvm_i32_ty], [IntrNoMem]>; 3208 3209 def int_x86_avx512_mask_vfnmadd_ps_128 : 3210 GCCBuiltin<"__builtin_ia32_vfnmaddps128_mask">, 3211 Intrinsic<[llvm_v4f32_ty], 3212 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3213 [IntrNoMem]>; 3214 3215 def int_x86_avx512_mask_vfnmadd_ps_256 : 3216 GCCBuiltin<"__builtin_ia32_vfnmaddps256_mask">, 3217 Intrinsic<[llvm_v8f32_ty], 3218 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3219 [IntrNoMem]>; 3220 3221 def int_x86_avx512_mask_vfnmadd_ps_512 : 3222 GCCBuiltin<"__builtin_ia32_vfnmaddps512_mask">, 3223 Intrinsic<[llvm_v16f32_ty], 3224 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3225 llvm_i32_ty], [IntrNoMem]>; 3226 3227 def int_x86_avx512_mask_vfnmsub_pd_128 : 3228 GCCBuiltin<"__builtin_ia32_vfnmsubpd128_mask">, 3229 Intrinsic<[llvm_v2f64_ty], 3230 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3231 [IntrNoMem]>; 3232 3233 def int_x86_avx512_mask3_vfnmsub_pd_128 : 3234 GCCBuiltin<"__builtin_ia32_vfnmsubpd128_mask3">, 3235 Intrinsic<[llvm_v2f64_ty], 3236 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 3237 [IntrNoMem]>; 3238 3239 def int_x86_avx512_mask_vfnmsub_pd_256 : 3240 GCCBuiltin<"__builtin_ia32_vfnmsubpd256_mask">, 3241 Intrinsic<[llvm_v4f64_ty], 3242 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3243 [IntrNoMem]>; 3244 3245 def int_x86_avx512_mask3_vfnmsub_pd_256 : 3246 GCCBuiltin<"__builtin_ia32_vfnmsubpd256_mask3">, 3247 Intrinsic<[llvm_v4f64_ty], 3248 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 3249 [IntrNoMem]>; 3250 3251 def int_x86_avx512_mask_vfnmsub_pd_512 : 3252 GCCBuiltin<"__builtin_ia32_vfnmsubpd512_mask">, 3253 Intrinsic<[llvm_v8f64_ty], 3254 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 3255 llvm_i32_ty], [IntrNoMem]>; 3256 3257 def int_x86_avx512_mask3_vfnmsub_pd_512 : 3258 GCCBuiltin<"__builtin_ia32_vfnmsubpd512_mask3">, 3259 Intrinsic<[llvm_v8f64_ty], 3260 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 3261 llvm_i32_ty], [IntrNoMem]>; 3262 3263 def int_x86_avx512_mask_vfnmsub_ps_128 : 3264 GCCBuiltin<"__builtin_ia32_vfnmsubps128_mask">, 3265 Intrinsic<[llvm_v4f32_ty], 3266 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3267 [IntrNoMem]>; 3268 3269 def int_x86_avx512_mask3_vfnmsub_ps_128 : 3270 GCCBuiltin<"__builtin_ia32_vfnmsubps128_mask3">, 3271 Intrinsic<[llvm_v4f32_ty], 3272 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 3273 [IntrNoMem]>; 3274 3275 def int_x86_avx512_mask_vfnmsub_ps_256 : 3276 GCCBuiltin<"__builtin_ia32_vfnmsubps256_mask">, 3277 Intrinsic<[llvm_v8f32_ty], 3278 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3279 [IntrNoMem]>; 3280 3281 def int_x86_avx512_mask3_vfnmsub_ps_256 : 3282 GCCBuiltin<"__builtin_ia32_vfnmsubps256_mask3">, 3283 Intrinsic<[llvm_v8f32_ty], 3284 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 3285 [IntrNoMem]>; 3286 3287 def int_x86_avx512_mask_vfnmsub_ps_512 : 3288 GCCBuiltin<"__builtin_ia32_vfnmsubps512_mask">, 3289 Intrinsic<[llvm_v16f32_ty], 3290 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3291 llvm_i32_ty], [IntrNoMem]>; 3292 3293 def int_x86_avx512_mask3_vfnmsub_ps_512 : 3294 GCCBuiltin<"__builtin_ia32_vfnmsubps512_mask3">, 3295 Intrinsic<[llvm_v16f32_ty], 3296 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 3297 llvm_i32_ty], [IntrNoMem]>; 3298 3299} 3300 3301//===----------------------------------------------------------------------===// 3302// XOP 3303 3304 def int_x86_xop_vpermil2pd : GCCBuiltin<"__builtin_ia32_vpermil2pd">, 3305 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 3306 llvm_v2f64_ty, llvm_i8_ty], 3307 [IntrNoMem]>; 3308 3309 def int_x86_xop_vpermil2pd_256 : 3310 GCCBuiltin<"__builtin_ia32_vpermil2pd256">, 3311 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 3312 llvm_v4f64_ty, llvm_i8_ty], 3313 [IntrNoMem]>; 3314 3315 def int_x86_xop_vpermil2ps : GCCBuiltin<"__builtin_ia32_vpermil2ps">, 3316 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 3317 llvm_v4f32_ty, llvm_i8_ty], 3318 [IntrNoMem]>; 3319 def int_x86_xop_vpermil2ps_256 : 3320 GCCBuiltin<"__builtin_ia32_vpermil2ps256">, 3321 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 3322 llvm_v8f32_ty, llvm_i8_ty], 3323 [IntrNoMem]>; 3324 3325 def int_x86_xop_vfrcz_pd : GCCBuiltin<"__builtin_ia32_vfrczpd">, 3326 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 3327 def int_x86_xop_vfrcz_ps : GCCBuiltin<"__builtin_ia32_vfrczps">, 3328 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 3329 def int_x86_xop_vfrcz_sd : GCCBuiltin<"__builtin_ia32_vfrczsd">, 3330 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 3331 def int_x86_xop_vfrcz_ss : GCCBuiltin<"__builtin_ia32_vfrczss">, 3332 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 3333 def int_x86_xop_vfrcz_pd_256 : GCCBuiltin<"__builtin_ia32_vfrczpd256">, 3334 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty], [IntrNoMem]>; 3335 def int_x86_xop_vfrcz_ps_256 : GCCBuiltin<"__builtin_ia32_vfrczps256">, 3336 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 3337 3338 def int_x86_xop_vpcmov : 3339 GCCBuiltin<"__builtin_ia32_vpcmov">, 3340 Intrinsic<[llvm_v2i64_ty], 3341 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], 3342 [IntrNoMem]>; 3343 def int_x86_xop_vpcmov_256 : 3344 GCCBuiltin<"__builtin_ia32_vpcmov_256">, 3345 Intrinsic<[llvm_v4i64_ty], 3346 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty], 3347 [IntrNoMem]>; 3348 3349 def int_x86_xop_vpcomb : GCCBuiltin<"__builtin_ia32_vpcomb">, 3350 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 3351 llvm_i8_ty], [IntrNoMem]>; 3352 def int_x86_xop_vpcomw : GCCBuiltin<"__builtin_ia32_vpcomw">, 3353 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 3354 llvm_i8_ty], [IntrNoMem]>; 3355 def int_x86_xop_vpcomd : GCCBuiltin<"__builtin_ia32_vpcomd">, 3356 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 3357 llvm_i8_ty], [IntrNoMem]>; 3358 def int_x86_xop_vpcomq : GCCBuiltin<"__builtin_ia32_vpcomq">, 3359 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 3360 llvm_i8_ty], [IntrNoMem]>; 3361 def int_x86_xop_vpcomub : GCCBuiltin<"__builtin_ia32_vpcomub">, 3362 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 3363 llvm_i8_ty], [IntrNoMem]>; 3364 def int_x86_xop_vpcomuw : GCCBuiltin<"__builtin_ia32_vpcomuw">, 3365 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 3366 llvm_i8_ty], [IntrNoMem]>; 3367 def int_x86_xop_vpcomud : GCCBuiltin<"__builtin_ia32_vpcomud">, 3368 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 3369 llvm_i8_ty], [IntrNoMem]>; 3370 def int_x86_xop_vpcomuq : GCCBuiltin<"__builtin_ia32_vpcomuq">, 3371 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 3372 llvm_i8_ty], [IntrNoMem]>; 3373 3374 def int_x86_xop_vphaddbd : 3375 GCCBuiltin<"__builtin_ia32_vphaddbd">, 3376 Intrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3377 def int_x86_xop_vphaddbq : 3378 GCCBuiltin<"__builtin_ia32_vphaddbq">, 3379 Intrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3380 def int_x86_xop_vphaddbw : 3381 GCCBuiltin<"__builtin_ia32_vphaddbw">, 3382 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3383 def int_x86_xop_vphadddq : 3384 GCCBuiltin<"__builtin_ia32_vphadddq">, 3385 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 3386 def int_x86_xop_vphaddubd : 3387 GCCBuiltin<"__builtin_ia32_vphaddubd">, 3388 Intrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3389 def int_x86_xop_vphaddubq : 3390 GCCBuiltin<"__builtin_ia32_vphaddubq">, 3391 Intrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3392 def int_x86_xop_vphaddubw : 3393 GCCBuiltin<"__builtin_ia32_vphaddubw">, 3394 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3395 def int_x86_xop_vphaddudq : 3396 GCCBuiltin<"__builtin_ia32_vphaddudq">, 3397 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 3398 def int_x86_xop_vphadduwd : 3399 GCCBuiltin<"__builtin_ia32_vphadduwd">, 3400 Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3401 def int_x86_xop_vphadduwq : 3402 GCCBuiltin<"__builtin_ia32_vphadduwq">, 3403 Intrinsic<[llvm_v2i64_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3404 def int_x86_xop_vphaddwd : 3405 GCCBuiltin<"__builtin_ia32_vphaddwd">, 3406 Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3407 def int_x86_xop_vphaddwq : 3408 GCCBuiltin<"__builtin_ia32_vphaddwq">, 3409 Intrinsic<[llvm_v2i64_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3410 def int_x86_xop_vphsubbw : 3411 GCCBuiltin<"__builtin_ia32_vphsubbw">, 3412 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3413 def int_x86_xop_vphsubdq : 3414 GCCBuiltin<"__builtin_ia32_vphsubdq">, 3415 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 3416 def int_x86_xop_vphsubwd : 3417 GCCBuiltin<"__builtin_ia32_vphsubwd">, 3418 Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3419 def int_x86_xop_vpmacsdd : 3420 GCCBuiltin<"__builtin_ia32_vpmacsdd">, 3421 Intrinsic<[llvm_v4i32_ty], 3422 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 3423 [IntrNoMem]>; 3424 def int_x86_xop_vpmacsdqh : 3425 GCCBuiltin<"__builtin_ia32_vpmacsdqh">, 3426 Intrinsic<[llvm_v2i64_ty], 3427 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 3428 [IntrNoMem]>; 3429 def int_x86_xop_vpmacsdql : 3430 GCCBuiltin<"__builtin_ia32_vpmacsdql">, 3431 Intrinsic<[llvm_v2i64_ty], 3432 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 3433 [IntrNoMem]>; 3434 def int_x86_xop_vpmacssdd : 3435 GCCBuiltin<"__builtin_ia32_vpmacssdd">, 3436 Intrinsic<[llvm_v4i32_ty], 3437 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 3438 [IntrNoMem]>; 3439 def int_x86_xop_vpmacssdqh : 3440 GCCBuiltin<"__builtin_ia32_vpmacssdqh">, 3441 Intrinsic<[llvm_v2i64_ty], 3442 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 3443 [IntrNoMem]>; 3444 def int_x86_xop_vpmacssdql : 3445 GCCBuiltin<"__builtin_ia32_vpmacssdql">, 3446 Intrinsic<[llvm_v2i64_ty], 3447 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 3448 [IntrNoMem]>; 3449 def int_x86_xop_vpmacsswd : 3450 GCCBuiltin<"__builtin_ia32_vpmacsswd">, 3451 Intrinsic<[llvm_v4i32_ty], 3452 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 3453 [IntrNoMem]>; 3454 def int_x86_xop_vpmacssww : 3455 GCCBuiltin<"__builtin_ia32_vpmacssww">, 3456 Intrinsic<[llvm_v8i16_ty], 3457 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], 3458 [IntrNoMem]>; 3459 def int_x86_xop_vpmacswd : 3460 GCCBuiltin<"__builtin_ia32_vpmacswd">, 3461 Intrinsic<[llvm_v4i32_ty], 3462 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 3463 [IntrNoMem]>; 3464 def int_x86_xop_vpmacsww : 3465 GCCBuiltin<"__builtin_ia32_vpmacsww">, 3466 Intrinsic<[llvm_v8i16_ty], 3467 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], 3468 [IntrNoMem]>; 3469 def int_x86_xop_vpmadcsswd : 3470 GCCBuiltin<"__builtin_ia32_vpmadcsswd">, 3471 Intrinsic<[llvm_v4i32_ty], 3472 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 3473 [IntrNoMem]>; 3474 def int_x86_xop_vpmadcswd : 3475 GCCBuiltin<"__builtin_ia32_vpmadcswd">, 3476 Intrinsic<[llvm_v4i32_ty], 3477 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 3478 [IntrNoMem]>; 3479 def int_x86_xop_vpperm : 3480 GCCBuiltin<"__builtin_ia32_vpperm">, 3481 Intrinsic<[llvm_v16i8_ty], 3482 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty], 3483 [IntrNoMem]>; 3484 3485 def int_x86_xop_vprotb : GCCBuiltin<"__builtin_ia32_vprotb">, 3486 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 3487 [IntrNoMem]>; 3488 def int_x86_xop_vprotd : GCCBuiltin<"__builtin_ia32_vprotd">, 3489 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 3490 [IntrNoMem]>; 3491 def int_x86_xop_vprotq : GCCBuiltin<"__builtin_ia32_vprotq">, 3492 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 3493 [IntrNoMem]>; 3494 def int_x86_xop_vprotw : GCCBuiltin<"__builtin_ia32_vprotw">, 3495 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 3496 [IntrNoMem]>; 3497 def int_x86_xop_vprotbi : GCCBuiltin<"__builtin_ia32_vprotbi">, 3498 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i8_ty], 3499 [IntrNoMem]>; 3500 def int_x86_xop_vprotdi : GCCBuiltin<"__builtin_ia32_vprotdi">, 3501 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i8_ty], 3502 [IntrNoMem]>; 3503 def int_x86_xop_vprotqi : GCCBuiltin<"__builtin_ia32_vprotqi">, 3504 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i8_ty], 3505 [IntrNoMem]>; 3506 def int_x86_xop_vprotwi : GCCBuiltin<"__builtin_ia32_vprotwi">, 3507 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i8_ty], 3508 [IntrNoMem]>; 3509 3510 def int_x86_xop_vpshab : 3511 GCCBuiltin<"__builtin_ia32_vpshab">, 3512 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 3513 [IntrNoMem]>; 3514 def int_x86_xop_vpshad : 3515 GCCBuiltin<"__builtin_ia32_vpshad">, 3516 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 3517 [IntrNoMem]>; 3518 def int_x86_xop_vpshaq : 3519 GCCBuiltin<"__builtin_ia32_vpshaq">, 3520 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 3521 [IntrNoMem]>; 3522 def int_x86_xop_vpshaw : 3523 GCCBuiltin<"__builtin_ia32_vpshaw">, 3524 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 3525 [IntrNoMem]>; 3526 def int_x86_xop_vpshlb : 3527 GCCBuiltin<"__builtin_ia32_vpshlb">, 3528 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 3529 [IntrNoMem]>; 3530 def int_x86_xop_vpshld : 3531 GCCBuiltin<"__builtin_ia32_vpshld">, 3532 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 3533 [IntrNoMem]>; 3534 def int_x86_xop_vpshlq : 3535 GCCBuiltin<"__builtin_ia32_vpshlq">, 3536 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 3537 [IntrNoMem]>; 3538 def int_x86_xop_vpshlw : 3539 GCCBuiltin<"__builtin_ia32_vpshlw">, 3540 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 3541 [IntrNoMem]>; 3542 3543//===----------------------------------------------------------------------===// 3544// MMX 3545 3546// Empty MMX state op. 3547let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3548 def int_x86_mmx_emms : GCCBuiltin<"__builtin_ia32_emms">, 3549 Intrinsic<[], [], []>; 3550 def int_x86_mmx_femms : GCCBuiltin<"__builtin_ia32_femms">, 3551 Intrinsic<[], [], []>; 3552} 3553 3554// Integer arithmetic ops. 3555let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3556 // Addition 3557 def int_x86_mmx_padd_b : GCCBuiltin<"__builtin_ia32_paddb">, 3558 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3559 [IntrNoMem]>; 3560 def int_x86_mmx_padd_w : GCCBuiltin<"__builtin_ia32_paddw">, 3561 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3562 [IntrNoMem]>; 3563 def int_x86_mmx_padd_d : GCCBuiltin<"__builtin_ia32_paddd">, 3564 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3565 [IntrNoMem]>; 3566 def int_x86_mmx_padd_q : GCCBuiltin<"__builtin_ia32_paddq">, 3567 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3568 [IntrNoMem]>; 3569 3570 def int_x86_mmx_padds_b : GCCBuiltin<"__builtin_ia32_paddsb">, 3571 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3572 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3573 def int_x86_mmx_padds_w : GCCBuiltin<"__builtin_ia32_paddsw">, 3574 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3575 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3576 3577 def int_x86_mmx_paddus_b : GCCBuiltin<"__builtin_ia32_paddusb">, 3578 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3579 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3580 def int_x86_mmx_paddus_w : GCCBuiltin<"__builtin_ia32_paddusw">, 3581 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3582 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3583 3584 // Subtraction 3585 def int_x86_mmx_psub_b : GCCBuiltin<"__builtin_ia32_psubb">, 3586 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3587 [IntrNoMem]>; 3588 def int_x86_mmx_psub_w : GCCBuiltin<"__builtin_ia32_psubw">, 3589 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3590 [IntrNoMem]>; 3591 def int_x86_mmx_psub_d : GCCBuiltin<"__builtin_ia32_psubd">, 3592 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3593 [IntrNoMem]>; 3594 def int_x86_mmx_psub_q : GCCBuiltin<"__builtin_ia32_psubq">, 3595 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3596 [IntrNoMem]>; 3597 3598 def int_x86_mmx_psubs_b : GCCBuiltin<"__builtin_ia32_psubsb">, 3599 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3600 llvm_x86mmx_ty], [IntrNoMem]>; 3601 def int_x86_mmx_psubs_w : GCCBuiltin<"__builtin_ia32_psubsw">, 3602 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3603 llvm_x86mmx_ty], [IntrNoMem]>; 3604 3605 def int_x86_mmx_psubus_b : GCCBuiltin<"__builtin_ia32_psubusb">, 3606 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3607 llvm_x86mmx_ty], [IntrNoMem]>; 3608 def int_x86_mmx_psubus_w : GCCBuiltin<"__builtin_ia32_psubusw">, 3609 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3610 llvm_x86mmx_ty], [IntrNoMem]>; 3611 3612 // Multiplication 3613 def int_x86_mmx_pmulh_w : GCCBuiltin<"__builtin_ia32_pmulhw">, 3614 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3615 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3616 def int_x86_mmx_pmull_w : GCCBuiltin<"__builtin_ia32_pmullw">, 3617 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3618 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3619 def int_x86_mmx_pmulhu_w : GCCBuiltin<"__builtin_ia32_pmulhuw">, 3620 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3621 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3622 def int_x86_mmx_pmulu_dq : GCCBuiltin<"__builtin_ia32_pmuludq">, 3623 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3624 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3625 def int_x86_mmx_pmadd_wd : GCCBuiltin<"__builtin_ia32_pmaddwd">, 3626 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3627 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3628 3629 // Bitwise operations 3630 def int_x86_mmx_pand : GCCBuiltin<"__builtin_ia32_pand">, 3631 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3632 [IntrNoMem]>; 3633 def int_x86_mmx_pandn : GCCBuiltin<"__builtin_ia32_pandn">, 3634 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3635 [IntrNoMem]>; 3636 def int_x86_mmx_por : GCCBuiltin<"__builtin_ia32_por">, 3637 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3638 [IntrNoMem]>; 3639 def int_x86_mmx_pxor : GCCBuiltin<"__builtin_ia32_pxor">, 3640 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3641 [IntrNoMem]>; 3642 3643 // Averages 3644 def int_x86_mmx_pavg_b : GCCBuiltin<"__builtin_ia32_pavgb">, 3645 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3646 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3647 def int_x86_mmx_pavg_w : GCCBuiltin<"__builtin_ia32_pavgw">, 3648 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3649 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3650 3651 // Maximum 3652 def int_x86_mmx_pmaxu_b : GCCBuiltin<"__builtin_ia32_pmaxub">, 3653 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3654 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3655 def int_x86_mmx_pmaxs_w : GCCBuiltin<"__builtin_ia32_pmaxsw">, 3656 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3657 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3658 3659 // Minimum 3660 def int_x86_mmx_pminu_b : GCCBuiltin<"__builtin_ia32_pminub">, 3661 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3662 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3663 def int_x86_mmx_pmins_w : GCCBuiltin<"__builtin_ia32_pminsw">, 3664 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3665 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3666 3667 // Packed sum of absolute differences 3668 def int_x86_mmx_psad_bw : GCCBuiltin<"__builtin_ia32_psadbw">, 3669 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3670 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3671} 3672 3673// Integer shift ops. 3674let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3675 // Shift left logical 3676 def int_x86_mmx_psll_w : GCCBuiltin<"__builtin_ia32_psllw">, 3677 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3678 llvm_x86mmx_ty], [IntrNoMem]>; 3679 def int_x86_mmx_psll_d : GCCBuiltin<"__builtin_ia32_pslld">, 3680 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3681 llvm_x86mmx_ty], [IntrNoMem]>; 3682 def int_x86_mmx_psll_q : GCCBuiltin<"__builtin_ia32_psllq">, 3683 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3684 llvm_x86mmx_ty], [IntrNoMem]>; 3685 3686 def int_x86_mmx_psrl_w : GCCBuiltin<"__builtin_ia32_psrlw">, 3687 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3688 llvm_x86mmx_ty], [IntrNoMem]>; 3689 def int_x86_mmx_psrl_d : GCCBuiltin<"__builtin_ia32_psrld">, 3690 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3691 llvm_x86mmx_ty], [IntrNoMem]>; 3692 def int_x86_mmx_psrl_q : GCCBuiltin<"__builtin_ia32_psrlq">, 3693 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3694 llvm_x86mmx_ty], [IntrNoMem]>; 3695 3696 def int_x86_mmx_psra_w : GCCBuiltin<"__builtin_ia32_psraw">, 3697 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3698 llvm_x86mmx_ty], [IntrNoMem]>; 3699 def int_x86_mmx_psra_d : GCCBuiltin<"__builtin_ia32_psrad">, 3700 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3701 llvm_x86mmx_ty], [IntrNoMem]>; 3702 3703 def int_x86_mmx_pslli_w : GCCBuiltin<"__builtin_ia32_psllwi">, 3704 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3705 llvm_i32_ty], [IntrNoMem]>; 3706 def int_x86_mmx_pslli_d : GCCBuiltin<"__builtin_ia32_pslldi">, 3707 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3708 llvm_i32_ty], [IntrNoMem]>; 3709 def int_x86_mmx_pslli_q : GCCBuiltin<"__builtin_ia32_psllqi">, 3710 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3711 llvm_i32_ty], [IntrNoMem]>; 3712 3713 def int_x86_mmx_psrli_w : GCCBuiltin<"__builtin_ia32_psrlwi">, 3714 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3715 llvm_i32_ty], [IntrNoMem]>; 3716 def int_x86_mmx_psrli_d : GCCBuiltin<"__builtin_ia32_psrldi">, 3717 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3718 llvm_i32_ty], [IntrNoMem]>; 3719 def int_x86_mmx_psrli_q : GCCBuiltin<"__builtin_ia32_psrlqi">, 3720 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3721 llvm_i32_ty], [IntrNoMem]>; 3722 3723 def int_x86_mmx_psrai_w : GCCBuiltin<"__builtin_ia32_psrawi">, 3724 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3725 llvm_i32_ty], [IntrNoMem]>; 3726 def int_x86_mmx_psrai_d : GCCBuiltin<"__builtin_ia32_psradi">, 3727 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3728 llvm_i32_ty], [IntrNoMem]>; 3729} 3730 3731// Pack ops. 3732let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3733 def int_x86_mmx_packsswb : GCCBuiltin<"__builtin_ia32_packsswb">, 3734 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3735 llvm_x86mmx_ty], [IntrNoMem]>; 3736 def int_x86_mmx_packssdw : GCCBuiltin<"__builtin_ia32_packssdw">, 3737 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3738 llvm_x86mmx_ty], [IntrNoMem]>; 3739 def int_x86_mmx_packuswb : GCCBuiltin<"__builtin_ia32_packuswb">, 3740 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3741 llvm_x86mmx_ty], [IntrNoMem]>; 3742} 3743 3744// Unpacking ops. 3745let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3746 def int_x86_mmx_punpckhbw : GCCBuiltin<"__builtin_ia32_punpckhbw">, 3747 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3748 [IntrNoMem]>; 3749 def int_x86_mmx_punpckhwd : GCCBuiltin<"__builtin_ia32_punpckhwd">, 3750 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3751 [IntrNoMem]>; 3752 def int_x86_mmx_punpckhdq : GCCBuiltin<"__builtin_ia32_punpckhdq">, 3753 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3754 [IntrNoMem]>; 3755 def int_x86_mmx_punpcklbw : GCCBuiltin<"__builtin_ia32_punpcklbw">, 3756 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3757 [IntrNoMem]>; 3758 def int_x86_mmx_punpcklwd : GCCBuiltin<"__builtin_ia32_punpcklwd">, 3759 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3760 [IntrNoMem]>; 3761 def int_x86_mmx_punpckldq : GCCBuiltin<"__builtin_ia32_punpckldq">, 3762 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3763 [IntrNoMem]>; 3764} 3765 3766// Integer comparison ops 3767let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3768 def int_x86_mmx_pcmpeq_b : GCCBuiltin<"__builtin_ia32_pcmpeqb">, 3769 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3770 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3771 def int_x86_mmx_pcmpeq_w : GCCBuiltin<"__builtin_ia32_pcmpeqw">, 3772 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3773 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3774 def int_x86_mmx_pcmpeq_d : GCCBuiltin<"__builtin_ia32_pcmpeqd">, 3775 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3776 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3777 3778 def int_x86_mmx_pcmpgt_b : GCCBuiltin<"__builtin_ia32_pcmpgtb">, 3779 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3780 llvm_x86mmx_ty], [IntrNoMem]>; 3781 def int_x86_mmx_pcmpgt_w : GCCBuiltin<"__builtin_ia32_pcmpgtw">, 3782 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3783 llvm_x86mmx_ty], [IntrNoMem]>; 3784 def int_x86_mmx_pcmpgt_d : GCCBuiltin<"__builtin_ia32_pcmpgtd">, 3785 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3786 llvm_x86mmx_ty], [IntrNoMem]>; 3787} 3788 3789// Misc. 3790let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3791 def int_x86_mmx_maskmovq : GCCBuiltin<"__builtin_ia32_maskmovq">, 3792 Intrinsic<[], [llvm_x86mmx_ty, llvm_x86mmx_ty, llvm_ptr_ty], []>; 3793 3794 def int_x86_mmx_pmovmskb : GCCBuiltin<"__builtin_ia32_pmovmskb">, 3795 Intrinsic<[llvm_i32_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 3796 3797 def int_x86_mmx_movnt_dq : GCCBuiltin<"__builtin_ia32_movntq">, 3798 Intrinsic<[], [llvm_ptrx86mmx_ty, llvm_x86mmx_ty], []>; 3799 3800 def int_x86_mmx_palignr_b : GCCBuiltin<"__builtin_ia32_palignr">, 3801 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3802 llvm_x86mmx_ty, llvm_i8_ty], [IntrNoMem]>; 3803 3804 def int_x86_mmx_pextr_w : GCCBuiltin<"__builtin_ia32_vec_ext_v4hi">, 3805 Intrinsic<[llvm_i32_ty], [llvm_x86mmx_ty, llvm_i32_ty], 3806 [IntrNoMem]>; 3807 3808 def int_x86_mmx_pinsr_w : GCCBuiltin<"__builtin_ia32_vec_set_v4hi">, 3809 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3810 llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3811} 3812 3813//===----------------------------------------------------------------------===// 3814// BMI 3815 3816let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3817 def int_x86_bmi_bextr_32 : GCCBuiltin<"__builtin_ia32_bextr_u32">, 3818 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3819 def int_x86_bmi_bextr_64 : GCCBuiltin<"__builtin_ia32_bextr_u64">, 3820 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>; 3821 def int_x86_bmi_bzhi_32 : GCCBuiltin<"__builtin_ia32_bzhi_si">, 3822 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3823 def int_x86_bmi_bzhi_64 : GCCBuiltin<"__builtin_ia32_bzhi_di">, 3824 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>; 3825 def int_x86_bmi_pdep_32 : GCCBuiltin<"__builtin_ia32_pdep_si">, 3826 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3827 def int_x86_bmi_pdep_64 : GCCBuiltin<"__builtin_ia32_pdep_di">, 3828 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>; 3829 def int_x86_bmi_pext_32 : GCCBuiltin<"__builtin_ia32_pext_si">, 3830 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3831 def int_x86_bmi_pext_64 : GCCBuiltin<"__builtin_ia32_pext_di">, 3832 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>; 3833} 3834 3835//===----------------------------------------------------------------------===// 3836// FS/GS Base 3837 3838let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3839 def int_x86_rdfsbase_32 : GCCBuiltin<"__builtin_ia32_rdfsbase32">, 3840 Intrinsic<[llvm_i32_ty], []>; 3841 def int_x86_rdgsbase_32 : GCCBuiltin<"__builtin_ia32_rdgsbase32">, 3842 Intrinsic<[llvm_i32_ty], []>; 3843 def int_x86_rdfsbase_64 : GCCBuiltin<"__builtin_ia32_rdfsbase64">, 3844 Intrinsic<[llvm_i64_ty], []>; 3845 def int_x86_rdgsbase_64 : GCCBuiltin<"__builtin_ia32_rdgsbase64">, 3846 Intrinsic<[llvm_i64_ty], []>; 3847 def int_x86_wrfsbase_32 : GCCBuiltin<"__builtin_ia32_wrfsbase32">, 3848 Intrinsic<[], [llvm_i32_ty]>; 3849 def int_x86_wrgsbase_32 : GCCBuiltin<"__builtin_ia32_wrgsbase32">, 3850 Intrinsic<[], [llvm_i32_ty]>; 3851 def int_x86_wrfsbase_64 : GCCBuiltin<"__builtin_ia32_wrfsbase64">, 3852 Intrinsic<[], [llvm_i64_ty]>; 3853 def int_x86_wrgsbase_64 : GCCBuiltin<"__builtin_ia32_wrgsbase64">, 3854 Intrinsic<[], [llvm_i64_ty]>; 3855} 3856 3857//===----------------------------------------------------------------------===// 3858// FXSR 3859let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3860 def int_x86_fxrstor : GCCBuiltin<"__builtin_ia32_fxrstor">, 3861 Intrinsic<[], [llvm_ptr_ty], []>; 3862 def int_x86_fxrstor64 : GCCBuiltin<"__builtin_ia32_fxrstor64">, 3863 Intrinsic<[], [llvm_ptr_ty], []>; 3864 def int_x86_fxsave : GCCBuiltin<"__builtin_ia32_fxsave">, 3865 Intrinsic<[], [llvm_ptr_ty], []>; 3866 def int_x86_fxsave64 : GCCBuiltin<"__builtin_ia32_fxsave64">, 3867 Intrinsic<[], [llvm_ptr_ty], []>; 3868} 3869 3870//===----------------------------------------------------------------------===// 3871// XSAVE 3872let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3873 def int_x86_xsave : 3874 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3875 def int_x86_xsave64 : 3876 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3877 def int_x86_xrstor : 3878 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3879 def int_x86_xrstor64 : 3880 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3881 def int_x86_xsaveopt : 3882 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3883 def int_x86_xsaveopt64 : 3884 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3885 def int_x86_xrstors : 3886 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3887 def int_x86_xrstors64 : 3888 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3889 def int_x86_xsavec : 3890 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3891 def int_x86_xsavec64 : 3892 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3893 def int_x86_xsaves : 3894 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3895 def int_x86_xsaves64 : 3896 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3897} 3898 3899//===----------------------------------------------------------------------===// 3900// Half float conversion 3901 3902let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3903 def int_x86_vcvtph2ps_128 : GCCBuiltin<"__builtin_ia32_vcvtph2ps">, 3904 Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3905 def int_x86_vcvtph2ps_256 : GCCBuiltin<"__builtin_ia32_vcvtph2ps256">, 3906 Intrinsic<[llvm_v8f32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3907 def int_x86_vcvtps2ph_128 : GCCBuiltin<"__builtin_ia32_vcvtps2ph">, 3908 Intrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_i32_ty], 3909 [IntrNoMem]>; 3910 def int_x86_vcvtps2ph_256 : GCCBuiltin<"__builtin_ia32_vcvtps2ph256">, 3911 Intrinsic<[llvm_v8i16_ty], [llvm_v8f32_ty, llvm_i32_ty], 3912 [IntrNoMem]>; 3913 def int_x86_avx512_mask_vcvtph2ps_512 : GCCBuiltin<"__builtin_ia32_vcvtph2ps512_mask">, 3914 Intrinsic<[llvm_v16f32_ty], [llvm_v16i16_ty, llvm_v16f32_ty, 3915 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 3916 def int_x86_avx512_mask_vcvtph2ps_256 : GCCBuiltin<"__builtin_ia32_vcvtph2ps256_mask">, 3917 Intrinsic<[llvm_v8f32_ty], [llvm_v8i16_ty, llvm_v8f32_ty, 3918 llvm_i8_ty], [IntrNoMem]>; 3919 def int_x86_avx512_mask_vcvtph2ps_128 : GCCBuiltin<"__builtin_ia32_vcvtph2ps_mask">, 3920 Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty, llvm_v4f32_ty, 3921 llvm_i8_ty], [IntrNoMem]>; 3922 def int_x86_avx512_mask_vcvtps2ph_512 : GCCBuiltin<"__builtin_ia32_vcvtps2ph512_mask">, 3923 Intrinsic<[llvm_v16i16_ty], [llvm_v16f32_ty, llvm_i32_ty, 3924 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 3925 def int_x86_avx512_mask_vcvtps2ph_256 : GCCBuiltin<"__builtin_ia32_vcvtps2ph256_mask">, 3926 Intrinsic<[llvm_v8i16_ty], [llvm_v8f32_ty, llvm_i32_ty, 3927 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 3928 def int_x86_avx512_mask_vcvtps2ph_128 : GCCBuiltin<"__builtin_ia32_vcvtps2ph_mask">, 3929 Intrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_i32_ty, 3930 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 3931} 3932 3933//===----------------------------------------------------------------------===// 3934// TBM 3935 3936let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3937 def int_x86_tbm_bextri_u32 : GCCBuiltin<"__builtin_ia32_bextri_u32">, 3938 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3939 def int_x86_tbm_bextri_u64 : GCCBuiltin<"__builtin_ia32_bextri_u64">, 3940 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>; 3941} 3942 3943//===----------------------------------------------------------------------===// 3944// RDRAND intrinsics - Return a random value and whether it is valid. 3945// RDSEED intrinsics - Return a NIST SP800-90B & C compliant random value and 3946// whether it is valid. 3947 3948let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3949 // These are declared side-effecting so they don't get eliminated by CSE or 3950 // LICM. 3951 def int_x86_rdrand_16 : Intrinsic<[llvm_i16_ty, llvm_i32_ty], [], []>; 3952 def int_x86_rdrand_32 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [], []>; 3953 def int_x86_rdrand_64 : Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>; 3954 def int_x86_rdseed_16 : Intrinsic<[llvm_i16_ty, llvm_i32_ty], [], []>; 3955 def int_x86_rdseed_32 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [], []>; 3956 def int_x86_rdseed_64 : Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>; 3957} 3958 3959//===----------------------------------------------------------------------===// 3960// ADX 3961 3962let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3963 def int_x86_addcarryx_u32: GCCBuiltin<"__builtin_ia32_addcarryx_u32">, 3964 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty, 3965 llvm_ptr_ty], [IntrReadWriteArgMem]>; 3966 def int_x86_addcarryx_u64: GCCBuiltin<"__builtin_ia32_addcarryx_u64">, 3967 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty, 3968 llvm_ptr_ty], [IntrReadWriteArgMem]>; 3969 def int_x86_addcarry_u32: GCCBuiltin<"__builtin_ia32_addcarry_u32">, 3970 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty, 3971 llvm_ptr_ty], [IntrReadWriteArgMem]>; 3972 def int_x86_addcarry_u64: GCCBuiltin<"__builtin_ia32_addcarry_u64">, 3973 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty, 3974 llvm_ptr_ty], [IntrReadWriteArgMem]>; 3975 def int_x86_subborrow_u32: GCCBuiltin<"__builtin_ia32_subborrow_u32">, 3976 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty, 3977 llvm_ptr_ty], [IntrReadWriteArgMem]>; 3978 def int_x86_subborrow_u64: GCCBuiltin<"__builtin_ia32_subborrow_u64">, 3979 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty, 3980 llvm_ptr_ty], [IntrReadWriteArgMem]>; 3981} 3982 3983//===----------------------------------------------------------------------===// 3984// RTM intrinsics. Transactional Memory support. 3985 3986let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3987 def int_x86_xbegin : GCCBuiltin<"__builtin_ia32_xbegin">, 3988 Intrinsic<[llvm_i32_ty], [], []>; 3989 def int_x86_xend : GCCBuiltin<"__builtin_ia32_xend">, 3990 Intrinsic<[], [], []>; 3991 def int_x86_xabort : GCCBuiltin<"__builtin_ia32_xabort">, 3992 Intrinsic<[], [llvm_i8_ty], [IntrNoReturn]>; 3993 def int_x86_xtest : GCCBuiltin<"__builtin_ia32_xtest">, 3994 Intrinsic<[llvm_i32_ty], [], []>; 3995} 3996 3997//===----------------------------------------------------------------------===// 3998// AVX512 3999 4000// Mask ops 4001let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 4002 // Mask instructions 4003 // 16-bit mask 4004 def int_x86_avx512_kand_w : GCCBuiltin<"__builtin_ia32_kandhi">, 4005 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 4006 [IntrNoMem]>; 4007 def int_x86_avx512_kandn_w : GCCBuiltin<"__builtin_ia32_kandnhi">, 4008 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 4009 [IntrNoMem]>; 4010 def int_x86_avx512_knot_w : GCCBuiltin<"__builtin_ia32_knothi">, 4011 Intrinsic<[llvm_i16_ty], [llvm_i16_ty], [IntrNoMem]>; 4012 def int_x86_avx512_kor_w : GCCBuiltin<"__builtin_ia32_korhi">, 4013 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 4014 [IntrNoMem]>; 4015 def int_x86_avx512_kxor_w : GCCBuiltin<"__builtin_ia32_kxorhi">, 4016 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 4017 [IntrNoMem]>; 4018 def int_x86_avx512_kxnor_w : GCCBuiltin<"__builtin_ia32_kxnorhi">, 4019 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 4020 [IntrNoMem]>; 4021 def int_x86_avx512_kunpck_bw : GCCBuiltin<"__builtin_ia32_kunpckhi">, 4022 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 4023 [IntrNoMem]>; 4024 def int_x86_avx512_kunpck_wd : GCCBuiltin<"__builtin_ia32_kunpcksi">, 4025 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4026 [IntrNoMem]>; 4027 def int_x86_avx512_kunpck_dq : GCCBuiltin<"__builtin_ia32_kunpckdi">, 4028 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], 4029 [IntrNoMem]>; 4030 def int_x86_avx512_kortestz_w : GCCBuiltin<"__builtin_ia32_kortestzhi">, 4031 Intrinsic<[llvm_i32_ty], [llvm_i16_ty, llvm_i16_ty], 4032 [IntrNoMem]>; 4033 def int_x86_avx512_kortestc_w : GCCBuiltin<"__builtin_ia32_kortestchi">, 4034 Intrinsic<[llvm_i32_ty], [llvm_i16_ty, llvm_i16_ty], 4035 [IntrNoMem]>; 4036} 4037 4038// Conversion ops 4039let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 4040 def int_x86_avx512_cvtss2usi : GCCBuiltin<"__builtin_ia32_cvtss2usi">, 4041 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 4042 def int_x86_avx512_cvtss2usi64 : GCCBuiltin<"__builtin_ia32_cvtss2usi64">, 4043 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty], [IntrNoMem]>; 4044 def int_x86_avx512_cvttss2si : GCCBuiltin<"__builtin_ia32_vcvttss2si32">, 4045 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 4046 def int_x86_avx512_cvttss2si64 : GCCBuiltin<"__builtin_ia32_vcvttss2si64">, 4047 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 4048 def int_x86_avx512_cvttss2usi : GCCBuiltin<"__builtin_ia32_vcvttss2usi32">, 4049 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 4050 def int_x86_avx512_cvttss2usi64 : GCCBuiltin<"__builtin_ia32_vcvttss2usi64">, 4051 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 4052 def int_x86_avx512_cvtusi2ss : GCCBuiltin<"__builtin_ia32_cvtusi2ss32">, 4053 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 4054 llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 4055 def int_x86_avx512_cvtusi642ss : GCCBuiltin<"__builtin_ia32_cvtusi2ss64">, 4056 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 4057 llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>; 4058 4059 def int_x86_avx512_cvtsd2usi : GCCBuiltin<"__builtin_ia32_cvtsd2usi">, 4060 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 4061 def int_x86_avx512_cvtsd2usi64 : GCCBuiltin<"__builtin_ia32_cvtsd2usi64">, 4062 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 4063 def int_x86_avx512_cvttsd2si : GCCBuiltin<"__builtin_ia32_vcvttsd2si32">, 4064 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 4065 def int_x86_avx512_cvttsd2si64 : GCCBuiltin<"__builtin_ia32_vcvttsd2si64">, 4066 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 4067 def int_x86_avx512_cvttsd2usi : GCCBuiltin<"__builtin_ia32_vcvttsd2usi32">, 4068 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 4069 def int_x86_avx512_cvttsd2usi64 : GCCBuiltin<"__builtin_ia32_vcvttsd2usi64">, 4070 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 4071 def int_x86_avx512_cvtusi2sd : GCCBuiltin<"__builtin_ia32_cvtusi2sd32">, 4072 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 4073 llvm_i32_ty], [IntrNoMem]>; 4074 def int_x86_avx512_cvtusi642sd : GCCBuiltin<"__builtin_ia32_cvtusi2sd64">, 4075 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 4076 llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>; 4077 4078 def int_x86_avx512_cvtsi2ss32 : GCCBuiltin<"__builtin_ia32_cvtsi2ss32">, 4079 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 4080 llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 4081 def int_x86_avx512_cvtsi2ss64 : GCCBuiltin<"__builtin_ia32_cvtsi2ss64">, 4082 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 4083 llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>; 4084 def int_x86_avx512_cvtsi2sd32 : GCCBuiltin<"__builtin_ia32_cvtsi2sd32">, 4085 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 4086 llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 4087 def int_x86_avx512_cvtsi2sd64 : GCCBuiltin<"__builtin_ia32_cvtsi2sd64">, 4088 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 4089 llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>; 4090} 4091 4092// Pack ops. 4093let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 4094 def int_x86_avx512_mask_packsswb_128 : GCCBuiltin<"__builtin_ia32_packsswb128_mask">, 4095 Intrinsic<[llvm_v16i8_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 4096 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 4097 def int_x86_avx512_mask_packsswb_256 : GCCBuiltin<"__builtin_ia32_packsswb256_mask">, 4098 Intrinsic<[llvm_v32i8_ty], [llvm_v16i16_ty,llvm_v16i16_ty, 4099 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 4100 def int_x86_avx512_mask_packsswb_512 : GCCBuiltin<"__builtin_ia32_packsswb512_mask">, 4101 Intrinsic<[llvm_v64i8_ty], [llvm_v32i16_ty,llvm_v32i16_ty, 4102 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 4103 def int_x86_avx512_mask_packssdw_128 : GCCBuiltin<"__builtin_ia32_packssdw128_mask">, 4104 Intrinsic<[llvm_v8i16_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 4105 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 4106 def int_x86_avx512_mask_packssdw_256 : GCCBuiltin<"__builtin_ia32_packssdw256_mask">, 4107 Intrinsic<[llvm_v16i16_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 4108 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 4109 def int_x86_avx512_mask_packssdw_512 : GCCBuiltin<"__builtin_ia32_packssdw512_mask">, 4110 Intrinsic<[llvm_v32i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 4111 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 4112 def int_x86_avx512_mask_packuswb_128 : GCCBuiltin<"__builtin_ia32_packuswb128_mask">, 4113 Intrinsic<[llvm_v16i8_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 4114 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 4115 def int_x86_avx512_mask_packuswb_256 : GCCBuiltin<"__builtin_ia32_packuswb256_mask">, 4116 Intrinsic<[llvm_v32i8_ty], [llvm_v16i16_ty,llvm_v16i16_ty, 4117 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 4118 def int_x86_avx512_mask_packuswb_512 : GCCBuiltin<"__builtin_ia32_packuswb512_mask">, 4119 Intrinsic<[llvm_v64i8_ty], [llvm_v32i16_ty,llvm_v32i16_ty, 4120 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 4121 def int_x86_avx512_mask_packusdw_128 : GCCBuiltin<"__builtin_ia32_packusdw128_mask">, 4122 Intrinsic<[llvm_v8i16_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 4123 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 4124 def int_x86_avx512_mask_packusdw_256 : GCCBuiltin<"__builtin_ia32_packusdw256_mask">, 4125 Intrinsic<[llvm_v16i16_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 4126 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 4127 def int_x86_avx512_mask_packusdw_512 : GCCBuiltin<"__builtin_ia32_packusdw512_mask">, 4128 Intrinsic<[llvm_v32i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 4129 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 4130} 4131 4132// Unpack ops. 4133let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 4134 def int_x86_avx512_mask_unpckh_pd_128 : 4135 GCCBuiltin<"__builtin_ia32_unpckhpd128_mask">, 4136 Intrinsic<[llvm_v2f64_ty], 4137 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 4138 [IntrNoMem]>; 4139 4140 def int_x86_avx512_mask_unpckh_pd_256 : 4141 GCCBuiltin<"__builtin_ia32_unpckhpd256_mask">, 4142 Intrinsic<[llvm_v4f64_ty], 4143 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 4144 [IntrNoMem]>; 4145 4146 def int_x86_avx512_mask_unpckh_pd_512 : 4147 GCCBuiltin<"__builtin_ia32_unpckhpd512_mask">, 4148 Intrinsic<[llvm_v8f64_ty], 4149 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty], 4150 [IntrNoMem]>; 4151 4152 def int_x86_avx512_mask_unpckh_ps_128 : 4153 GCCBuiltin<"__builtin_ia32_unpckhps128_mask">, 4154 Intrinsic<[llvm_v4f32_ty], 4155 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 4156 [IntrNoMem]>; 4157 4158 def int_x86_avx512_mask_unpckh_ps_256 : 4159 GCCBuiltin<"__builtin_ia32_unpckhps256_mask">, 4160 Intrinsic<[llvm_v8f32_ty], 4161 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 4162 [IntrNoMem]>; 4163 4164 def int_x86_avx512_mask_unpckh_ps_512 : 4165 GCCBuiltin<"__builtin_ia32_unpckhps512_mask">, 4166 Intrinsic<[llvm_v16f32_ty], 4167 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], 4168 [IntrNoMem]>; 4169 4170 def int_x86_avx512_mask_unpckl_pd_128 : 4171 GCCBuiltin<"__builtin_ia32_unpcklpd128_mask">, 4172 Intrinsic<[llvm_v2f64_ty], 4173 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 4174 [IntrNoMem]>; 4175 4176 def int_x86_avx512_mask_unpckl_pd_256 : 4177 GCCBuiltin<"__builtin_ia32_unpcklpd256_mask">, 4178 Intrinsic<[llvm_v4f64_ty], 4179 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 4180 [IntrNoMem]>; 4181 4182 def int_x86_avx512_mask_unpckl_pd_512 : 4183 GCCBuiltin<"__builtin_ia32_unpcklpd512_mask">, 4184 Intrinsic<[llvm_v8f64_ty], 4185 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty], 4186 [IntrNoMem]>; 4187 4188 def int_x86_avx512_mask_unpckl_ps_128 : 4189 GCCBuiltin<"__builtin_ia32_unpcklps128_mask">, 4190 Intrinsic<[llvm_v4f32_ty], 4191 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 4192 [IntrNoMem]>; 4193 4194 def int_x86_avx512_mask_unpckl_ps_256 : 4195 GCCBuiltin<"__builtin_ia32_unpcklps256_mask">, 4196 Intrinsic<[llvm_v8f32_ty], 4197 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 4198 [IntrNoMem]>; 4199 4200 def int_x86_avx512_mask_unpckl_ps_512 : 4201 GCCBuiltin<"__builtin_ia32_unpcklps512_mask">, 4202 Intrinsic<[llvm_v16f32_ty], 4203 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], 4204 [IntrNoMem]>; 4205 4206 def int_x86_avx512_mask_punpckhb_w_128 : 4207 GCCBuiltin<"__builtin_ia32_punpckhbw128_mask">, 4208 Intrinsic<[llvm_v16i8_ty], 4209 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 4210 [IntrNoMem]>; 4211 4212 def int_x86_avx512_mask_punpckhb_w_256 : 4213 GCCBuiltin<"__builtin_ia32_punpckhbw256_mask">, 4214 Intrinsic<[llvm_v32i8_ty], 4215 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 4216 [IntrNoMem]>; 4217 4218 def int_x86_avx512_mask_punpckhb_w_512 : 4219 GCCBuiltin<"__builtin_ia32_punpckhbw512_mask">, 4220 Intrinsic<[llvm_v64i8_ty], 4221 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 4222 [IntrNoMem]>; 4223 4224 def int_x86_avx512_mask_punpckhd_q_128 : 4225 GCCBuiltin<"__builtin_ia32_punpckhdq128_mask">, 4226 Intrinsic<[llvm_v4i32_ty], 4227 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 4228 [IntrNoMem]>; 4229 4230 def int_x86_avx512_mask_punpckhd_q_256 : 4231 GCCBuiltin<"__builtin_ia32_punpckhdq256_mask">, 4232 Intrinsic<[llvm_v8i32_ty], 4233 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 4234 [IntrNoMem]>; 4235 4236 def int_x86_avx512_mask_punpckhd_q_512 : 4237 GCCBuiltin<"__builtin_ia32_punpckhdq512_mask">, 4238 Intrinsic<[llvm_v16i32_ty], 4239 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 4240 [IntrNoMem]>; 4241 4242 def int_x86_avx512_mask_punpckhqd_q_128 : 4243 GCCBuiltin<"__builtin_ia32_punpckhqdq128_mask">, 4244 Intrinsic<[llvm_v2i64_ty], 4245 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 4246 [IntrNoMem]>; 4247 4248 def int_x86_avx512_mask_punpckhqd_q_256 : 4249 GCCBuiltin<"__builtin_ia32_punpckhqdq256_mask">, 4250 Intrinsic<[llvm_v4i64_ty], 4251 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 4252 [IntrNoMem]>; 4253 4254 def int_x86_avx512_mask_punpckhqd_q_512 : 4255 GCCBuiltin<"__builtin_ia32_punpckhqdq512_mask">, 4256 Intrinsic<[llvm_v8i64_ty], 4257 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 4258 [IntrNoMem]>; 4259 4260 def int_x86_avx512_mask_punpckhw_d_128 : 4261 GCCBuiltin<"__builtin_ia32_punpckhwd128_mask">, 4262 Intrinsic<[llvm_v8i16_ty], 4263 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 4264 [IntrNoMem]>; 4265 4266 def int_x86_avx512_mask_punpckhw_d_256 : 4267 GCCBuiltin<"__builtin_ia32_punpckhwd256_mask">, 4268 Intrinsic<[llvm_v16i16_ty], 4269 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 4270 [IntrNoMem]>; 4271 4272 def int_x86_avx512_mask_punpckhw_d_512 : 4273 GCCBuiltin<"__builtin_ia32_punpckhwd512_mask">, 4274 Intrinsic<[llvm_v32i16_ty], 4275 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 4276 [IntrNoMem]>; 4277 4278 def int_x86_avx512_mask_punpcklb_w_128 : 4279 GCCBuiltin<"__builtin_ia32_punpcklbw128_mask">, 4280 Intrinsic<[llvm_v16i8_ty], 4281 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 4282 [IntrNoMem]>; 4283 4284 def int_x86_avx512_mask_punpcklb_w_256 : 4285 GCCBuiltin<"__builtin_ia32_punpcklbw256_mask">, 4286 Intrinsic<[llvm_v32i8_ty], 4287 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 4288 [IntrNoMem]>; 4289 4290 def int_x86_avx512_mask_punpcklb_w_512 : 4291 GCCBuiltin<"__builtin_ia32_punpcklbw512_mask">, 4292 Intrinsic<[llvm_v64i8_ty], 4293 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 4294 [IntrNoMem]>; 4295 4296 def int_x86_avx512_mask_punpckld_q_128 : 4297 GCCBuiltin<"__builtin_ia32_punpckldq128_mask">, 4298 Intrinsic<[llvm_v4i32_ty], 4299 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 4300 [IntrNoMem]>; 4301 4302 def int_x86_avx512_mask_punpckld_q_256 : 4303 GCCBuiltin<"__builtin_ia32_punpckldq256_mask">, 4304 Intrinsic<[llvm_v8i32_ty], 4305 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 4306 [IntrNoMem]>; 4307 4308 def int_x86_avx512_mask_punpckld_q_512 : 4309 GCCBuiltin<"__builtin_ia32_punpckldq512_mask">, 4310 Intrinsic<[llvm_v16i32_ty], 4311 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 4312 [IntrNoMem]>; 4313 4314 def int_x86_avx512_mask_punpcklqd_q_128 : 4315 GCCBuiltin<"__builtin_ia32_punpcklqdq128_mask">, 4316 Intrinsic<[llvm_v2i64_ty], 4317 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 4318 [IntrNoMem]>; 4319 4320 def int_x86_avx512_mask_punpcklqd_q_256 : 4321 GCCBuiltin<"__builtin_ia32_punpcklqdq256_mask">, 4322 Intrinsic<[llvm_v4i64_ty], 4323 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 4324 [IntrNoMem]>; 4325 4326 def int_x86_avx512_mask_punpcklqd_q_512 : 4327 GCCBuiltin<"__builtin_ia32_punpcklqdq512_mask">, 4328 Intrinsic<[llvm_v8i64_ty], 4329 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 4330 [IntrNoMem]>; 4331 4332 def int_x86_avx512_mask_punpcklw_d_128 : 4333 GCCBuiltin<"__builtin_ia32_punpcklwd128_mask">, 4334 Intrinsic<[llvm_v8i16_ty], 4335 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 4336 [IntrNoMem]>; 4337 4338 def int_x86_avx512_mask_punpcklw_d_256 : 4339 GCCBuiltin<"__builtin_ia32_punpcklwd256_mask">, 4340 Intrinsic<[llvm_v16i16_ty], 4341 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 4342 [IntrNoMem]>; 4343 4344 def int_x86_avx512_mask_punpcklw_d_512 : 4345 GCCBuiltin<"__builtin_ia32_punpcklwd512_mask">, 4346 Intrinsic<[llvm_v32i16_ty], 4347 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 4348 [IntrNoMem]>; 4349} 4350 4351// Vector convert 4352let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 4353 def int_x86_avx512_mask_cvtdq2pd_128 : 4354 GCCBuiltin<"__builtin_ia32_cvtdq2pd128_mask">, 4355 Intrinsic<[llvm_v2f64_ty], 4356 [llvm_v4i32_ty, llvm_v2f64_ty, llvm_i8_ty], 4357 [IntrNoMem]>; 4358 4359 def int_x86_avx512_mask_cvtdq2pd_256 : 4360 GCCBuiltin<"__builtin_ia32_cvtdq2pd256_mask">, 4361 Intrinsic<[llvm_v4f64_ty], 4362 [llvm_v4i32_ty, llvm_v4f64_ty, llvm_i8_ty], 4363 [IntrNoMem]>; 4364 4365 def int_x86_avx512_mask_cvtdq2pd_512 : 4366 GCCBuiltin<"__builtin_ia32_cvtdq2pd512_mask">, 4367 Intrinsic<[llvm_v8f64_ty], 4368 [llvm_v8i32_ty, llvm_v8f64_ty, llvm_i8_ty], 4369 [IntrNoMem]>; 4370 4371 def int_x86_avx512_mask_cvtdq2ps_128 : 4372 GCCBuiltin<"__builtin_ia32_cvtdq2ps128_mask">, 4373 Intrinsic<[llvm_v4f32_ty], 4374 [llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty], 4375 [IntrNoMem]>; 4376 4377 def int_x86_avx512_mask_cvtdq2ps_256 : 4378 GCCBuiltin<"__builtin_ia32_cvtdq2ps256_mask">, 4379 Intrinsic<[llvm_v8f32_ty], 4380 [llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], 4381 [IntrNoMem]>; 4382 4383 def int_x86_avx512_mask_cvtdq2ps_512 : 4384 GCCBuiltin<"__builtin_ia32_cvtdq2ps512_mask">, 4385 Intrinsic<[llvm_v16f32_ty], 4386 [llvm_v16i32_ty, llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], 4387 [IntrNoMem]>; 4388 4389 def int_x86_avx512_mask_cvtpd2dq_128 : 4390 GCCBuiltin<"__builtin_ia32_cvtpd2dq128_mask">, 4391 Intrinsic<[llvm_v4i32_ty], 4392 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4393 [IntrNoMem]>; 4394 4395 def int_x86_avx512_mask_cvtpd2dq_256 : 4396 GCCBuiltin<"__builtin_ia32_cvtpd2dq256_mask">, 4397 Intrinsic<[llvm_v4i32_ty], 4398 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4399 [IntrNoMem]>; 4400 4401 def int_x86_avx512_mask_cvtpd2dq_512 : 4402 GCCBuiltin<"__builtin_ia32_cvtpd2dq512_mask">, 4403 Intrinsic<[llvm_v8i32_ty], 4404 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 4405 [IntrNoMem]>; 4406 4407 def int_x86_avx512_mask_cvtpd2ps_256 : 4408 GCCBuiltin<"__builtin_ia32_cvtpd2ps256_mask">, 4409 Intrinsic<[llvm_v4f32_ty], 4410 [llvm_v4f64_ty, llvm_v4f32_ty, llvm_i8_ty], 4411 [IntrNoMem]>; 4412 4413 def int_x86_avx512_mask_cvtpd2ps_512 : 4414 GCCBuiltin<"__builtin_ia32_cvtpd2ps512_mask">, 4415 Intrinsic<[llvm_v8f32_ty], 4416 [llvm_v8f64_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 4417 [IntrNoMem]>; 4418 4419 def int_x86_avx512_mask_cvtsd2ss_round : 4420 GCCBuiltin<"__builtin_ia32_cvtsd2ss_round">, 4421 Intrinsic<[llvm_v4f32_ty], 4422 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], 4423 [IntrNoMem]>; 4424 4425 def int_x86_avx512_mask_cvtss2sd_round : 4426 GCCBuiltin<"__builtin_ia32_cvtss2sd_round">, 4427 Intrinsic<[llvm_v2f64_ty], 4428 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], 4429 [IntrNoMem]>; 4430 4431 def int_x86_avx512_mask_cvtpd2ps : 4432 GCCBuiltin<"__builtin_ia32_cvtpd2ps_mask">, 4433 Intrinsic<[llvm_v4f32_ty], 4434 [llvm_v2f64_ty, llvm_v4f32_ty, llvm_i8_ty], 4435 [IntrNoMem]>; 4436 4437 def int_x86_avx512_mask_cvtpd2qq_128 : 4438 GCCBuiltin<"__builtin_ia32_cvtpd2qq128_mask">, 4439 Intrinsic<[llvm_v2i64_ty], 4440 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 4441 [IntrNoMem]>; 4442 4443 def int_x86_avx512_mask_cvtpd2qq_256 : 4444 GCCBuiltin<"__builtin_ia32_cvtpd2qq256_mask">, 4445 Intrinsic<[llvm_v4i64_ty], 4446 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 4447 [IntrNoMem]>; 4448 4449 def int_x86_avx512_mask_cvtpd2qq_512 : 4450 GCCBuiltin<"__builtin_ia32_cvtpd2qq512_mask">, 4451 Intrinsic<[llvm_v8i64_ty], 4452 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4453 [IntrNoMem]>; 4454 4455 def int_x86_avx512_mask_cvtpd2udq_128 : 4456 GCCBuiltin<"__builtin_ia32_cvtpd2udq128_mask">, 4457 Intrinsic<[llvm_v4i32_ty], 4458 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4459 [IntrNoMem]>; 4460 4461 def int_x86_avx512_mask_cvtpd2udq_256 : 4462 GCCBuiltin<"__builtin_ia32_cvtpd2udq256_mask">, 4463 Intrinsic<[llvm_v4i32_ty], 4464 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4465 [IntrNoMem]>; 4466 4467 def int_x86_avx512_mask_cvtpd2udq_512 : 4468 GCCBuiltin<"__builtin_ia32_cvtpd2udq512_mask">, 4469 Intrinsic<[llvm_v8i32_ty], 4470 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 4471 [IntrNoMem]>; 4472 4473 def int_x86_avx512_mask_cvtpd2uqq_128 : 4474 GCCBuiltin<"__builtin_ia32_cvtpd2uqq128_mask">, 4475 Intrinsic<[llvm_v2i64_ty], 4476 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 4477 [IntrNoMem]>; 4478 4479 def int_x86_avx512_mask_cvtpd2uqq_256 : 4480 GCCBuiltin<"__builtin_ia32_cvtpd2uqq256_mask">, 4481 Intrinsic<[llvm_v4i64_ty], 4482 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 4483 [IntrNoMem]>; 4484 4485 def int_x86_avx512_mask_cvtpd2uqq_512 : 4486 GCCBuiltin<"__builtin_ia32_cvtpd2uqq512_mask">, 4487 Intrinsic<[llvm_v8i64_ty], 4488 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4489 [IntrNoMem]>; 4490 4491 def int_x86_avx512_mask_cvtps2dq_128 : 4492 GCCBuiltin<"__builtin_ia32_cvtps2dq128_mask">, 4493 Intrinsic<[llvm_v4i32_ty], 4494 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 4495 [IntrNoMem]>; 4496 4497 def int_x86_avx512_mask_cvtps2dq_256 : 4498 GCCBuiltin<"__builtin_ia32_cvtps2dq256_mask">, 4499 Intrinsic<[llvm_v8i32_ty], 4500 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 4501 [IntrNoMem]>; 4502 4503 def int_x86_avx512_mask_cvtps2dq_512 : 4504 GCCBuiltin<"__builtin_ia32_cvtps2dq512_mask">, 4505 Intrinsic<[llvm_v16i32_ty], 4506 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 4507 [IntrNoMem]>; 4508 4509 def int_x86_avx512_mask_cvtps2pd_128 : 4510 GCCBuiltin<"__builtin_ia32_cvtps2pd128_mask">, 4511 Intrinsic<[llvm_v2f64_ty], 4512 [llvm_v4f32_ty, llvm_v2f64_ty, llvm_i8_ty], 4513 [IntrNoMem]>; 4514 4515 def int_x86_avx512_mask_cvtps2pd_256 : 4516 GCCBuiltin<"__builtin_ia32_cvtps2pd256_mask">, 4517 Intrinsic<[llvm_v4f64_ty], 4518 [llvm_v4f32_ty, llvm_v4f64_ty, llvm_i8_ty], 4519 [IntrNoMem]>; 4520 4521 def int_x86_avx512_mask_cvtps2pd_512 : 4522 GCCBuiltin<"__builtin_ia32_cvtps2pd512_mask">, 4523 Intrinsic<[llvm_v8f64_ty], 4524 [llvm_v8f32_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], 4525 [IntrNoMem]>; 4526 4527 def int_x86_avx512_mask_cvtps2qq_128 : 4528 GCCBuiltin<"__builtin_ia32_cvtps2qq128_mask">, 4529 Intrinsic<[llvm_v2i64_ty], 4530 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 4531 [IntrNoMem]>; 4532 4533 def int_x86_avx512_mask_cvtps2qq_256 : 4534 GCCBuiltin<"__builtin_ia32_cvtps2qq256_mask">, 4535 Intrinsic<[llvm_v4i64_ty], 4536 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 4537 [IntrNoMem]>; 4538 4539 def int_x86_avx512_mask_cvtps2qq_512 : 4540 GCCBuiltin<"__builtin_ia32_cvtps2qq512_mask">, 4541 Intrinsic<[llvm_v8i64_ty], 4542 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4543 [IntrNoMem]>; 4544 4545 def int_x86_avx512_mask_cvtps2udq_128 : 4546 GCCBuiltin<"__builtin_ia32_cvtps2udq128_mask">, 4547 Intrinsic<[llvm_v4i32_ty], 4548 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 4549 [IntrNoMem]>; 4550 4551 def int_x86_avx512_mask_cvtps2udq_256 : 4552 GCCBuiltin<"__builtin_ia32_cvtps2udq256_mask">, 4553 Intrinsic<[llvm_v8i32_ty], 4554 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 4555 [IntrNoMem]>; 4556 4557 def int_x86_avx512_mask_cvtps2udq_512 : 4558 GCCBuiltin<"__builtin_ia32_cvtps2udq512_mask">, 4559 Intrinsic<[llvm_v16i32_ty], 4560 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 4561 [IntrNoMem]>; 4562 4563 def int_x86_avx512_mask_cvtps2uqq_128 : 4564 GCCBuiltin<"__builtin_ia32_cvtps2uqq128_mask">, 4565 Intrinsic<[llvm_v2i64_ty], 4566 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 4567 [IntrNoMem]>; 4568 4569 def int_x86_avx512_mask_cvtps2uqq_256 : 4570 GCCBuiltin<"__builtin_ia32_cvtps2uqq256_mask">, 4571 Intrinsic<[llvm_v4i64_ty], 4572 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 4573 [IntrNoMem]>; 4574 4575 def int_x86_avx512_mask_cvtps2uqq_512 : 4576 GCCBuiltin<"__builtin_ia32_cvtps2uqq512_mask">, 4577 Intrinsic<[llvm_v8i64_ty], 4578 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4579 [IntrNoMem]>; 4580 4581 def int_x86_avx512_mask_cvtqq2pd_128 : 4582 GCCBuiltin<"__builtin_ia32_cvtqq2pd128_mask">, 4583 Intrinsic<[llvm_v2f64_ty], 4584 [llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty], 4585 [IntrNoMem]>; 4586 4587 def int_x86_avx512_mask_cvtqq2pd_256 : 4588 GCCBuiltin<"__builtin_ia32_cvtqq2pd256_mask">, 4589 Intrinsic<[llvm_v4f64_ty], 4590 [llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], 4591 [IntrNoMem]>; 4592 4593 def int_x86_avx512_mask_cvtqq2pd_512 : 4594 GCCBuiltin<"__builtin_ia32_cvtqq2pd512_mask">, 4595 Intrinsic<[llvm_v8f64_ty], 4596 [llvm_v8i64_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], 4597 [IntrNoMem]>; 4598 4599 def int_x86_avx512_mask_cvtqq2ps_128 : 4600 GCCBuiltin<"__builtin_ia32_cvtqq2ps128_mask">, 4601 Intrinsic<[llvm_v4f32_ty], 4602 [llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty], 4603 [IntrNoMem]>; 4604 4605 def int_x86_avx512_mask_cvtqq2ps_256 : 4606 GCCBuiltin<"__builtin_ia32_cvtqq2ps256_mask">, 4607 Intrinsic<[llvm_v4f32_ty], 4608 [llvm_v4i64_ty, llvm_v4f32_ty, llvm_i8_ty], 4609 [IntrNoMem]>; 4610 4611 def int_x86_avx512_mask_cvtqq2ps_512 : 4612 GCCBuiltin<"__builtin_ia32_cvtqq2ps512_mask">, 4613 Intrinsic<[llvm_v8f32_ty], 4614 [llvm_v8i64_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 4615 [IntrNoMem]>; 4616 4617 def int_x86_avx512_mask_cvttpd2dq_128 : 4618 GCCBuiltin<"__builtin_ia32_cvttpd2dq128_mask">, 4619 Intrinsic<[llvm_v4i32_ty], 4620 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4621 [IntrNoMem]>; 4622 4623 def int_x86_avx512_mask_cvttpd2dq_256 : 4624 GCCBuiltin<"__builtin_ia32_cvttpd2dq256_mask">, 4625 Intrinsic<[llvm_v4i32_ty], 4626 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4627 [IntrNoMem]>; 4628 4629 def int_x86_avx512_mask_cvttpd2dq_512 : 4630 GCCBuiltin<"__builtin_ia32_cvttpd2dq512_mask">, 4631 Intrinsic<[llvm_v8i32_ty], 4632 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 4633 [IntrNoMem]>; 4634 4635 def int_x86_avx512_mask_cvttpd2qq_128 : 4636 GCCBuiltin<"__builtin_ia32_cvttpd2qq128_mask">, 4637 Intrinsic<[llvm_v2i64_ty], 4638 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 4639 [IntrNoMem]>; 4640 4641 def int_x86_avx512_mask_cvttpd2qq_256 : 4642 GCCBuiltin<"__builtin_ia32_cvttpd2qq256_mask">, 4643 Intrinsic<[llvm_v4i64_ty], 4644 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 4645 [IntrNoMem]>; 4646 4647 def int_x86_avx512_mask_cvttpd2qq_512 : 4648 GCCBuiltin<"__builtin_ia32_cvttpd2qq512_mask">, 4649 Intrinsic<[llvm_v8i64_ty], 4650 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4651 [IntrNoMem]>; 4652 4653 def int_x86_avx512_mask_cvttpd2udq_128 : 4654 GCCBuiltin<"__builtin_ia32_cvttpd2udq128_mask">, 4655 Intrinsic<[llvm_v4i32_ty], 4656 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4657 [IntrNoMem]>; 4658 4659 def int_x86_avx512_mask_cvttpd2udq_256 : 4660 GCCBuiltin<"__builtin_ia32_cvttpd2udq256_mask">, 4661 Intrinsic<[llvm_v4i32_ty], 4662 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4663 [IntrNoMem]>; 4664 4665 def int_x86_avx512_mask_cvttpd2udq_512 : 4666 GCCBuiltin<"__builtin_ia32_cvttpd2udq512_mask">, 4667 Intrinsic<[llvm_v8i32_ty], 4668 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 4669 [IntrNoMem]>; 4670 4671 def int_x86_avx512_mask_cvttpd2uqq_128 : 4672 GCCBuiltin<"__builtin_ia32_cvttpd2uqq128_mask">, 4673 Intrinsic<[llvm_v2i64_ty], 4674 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 4675 [IntrNoMem]>; 4676 4677 def int_x86_avx512_mask_cvttpd2uqq_256 : 4678 GCCBuiltin<"__builtin_ia32_cvttpd2uqq256_mask">, 4679 Intrinsic<[llvm_v4i64_ty], 4680 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 4681 [IntrNoMem]>; 4682 4683 def int_x86_avx512_mask_cvttpd2uqq_512 : 4684 GCCBuiltin<"__builtin_ia32_cvttpd2uqq512_mask">, 4685 Intrinsic<[llvm_v8i64_ty], 4686 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4687 [IntrNoMem]>; 4688 4689 def int_x86_avx512_mask_cvttps2dq_128 : 4690 GCCBuiltin<"__builtin_ia32_cvttps2dq128_mask">, 4691 Intrinsic<[llvm_v4i32_ty], 4692 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 4693 [IntrNoMem]>; 4694 4695 def int_x86_avx512_mask_cvttps2dq_256 : 4696 GCCBuiltin<"__builtin_ia32_cvttps2dq256_mask">, 4697 Intrinsic<[llvm_v8i32_ty], 4698 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 4699 [IntrNoMem]>; 4700 4701 def int_x86_avx512_mask_cvttps2dq_512 : 4702 GCCBuiltin<"__builtin_ia32_cvttps2dq512_mask">, 4703 Intrinsic<[llvm_v16i32_ty], 4704 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 4705 [IntrNoMem]>; 4706 4707 def int_x86_avx512_mask_cvttps2qq_128 : 4708 GCCBuiltin<"__builtin_ia32_cvttps2qq128_mask">, 4709 Intrinsic<[llvm_v2i64_ty], 4710 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 4711 [IntrNoMem]>; 4712 4713 def int_x86_avx512_mask_cvttps2qq_256 : 4714 GCCBuiltin<"__builtin_ia32_cvttps2qq256_mask">, 4715 Intrinsic<[llvm_v4i64_ty], 4716 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 4717 [IntrNoMem]>; 4718 4719 def int_x86_avx512_mask_cvttps2qq_512 : 4720 GCCBuiltin<"__builtin_ia32_cvttps2qq512_mask">, 4721 Intrinsic<[llvm_v8i64_ty], 4722 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4723 [IntrNoMem]>; 4724 4725 def int_x86_avx512_mask_cvttps2udq_128 : 4726 GCCBuiltin<"__builtin_ia32_cvttps2udq128_mask">, 4727 Intrinsic<[llvm_v4i32_ty], 4728 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 4729 [IntrNoMem]>; 4730 4731 def int_x86_avx512_mask_cvttps2udq_256 : 4732 GCCBuiltin<"__builtin_ia32_cvttps2udq256_mask">, 4733 Intrinsic<[llvm_v8i32_ty], 4734 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 4735 [IntrNoMem]>; 4736 4737 def int_x86_avx512_mask_cvttps2udq_512 : 4738 GCCBuiltin<"__builtin_ia32_cvttps2udq512_mask">, 4739 Intrinsic<[llvm_v16i32_ty], 4740 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 4741 [IntrNoMem]>; 4742 4743 def int_x86_avx512_mask_cvttps2uqq_128 : 4744 GCCBuiltin<"__builtin_ia32_cvttps2uqq128_mask">, 4745 Intrinsic<[llvm_v2i64_ty], 4746 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 4747 [IntrNoMem]>; 4748 4749 def int_x86_avx512_mask_cvttps2uqq_256 : 4750 GCCBuiltin<"__builtin_ia32_cvttps2uqq256_mask">, 4751 Intrinsic<[llvm_v4i64_ty], 4752 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 4753 [IntrNoMem]>; 4754 4755 def int_x86_avx512_mask_cvttps2uqq_512 : 4756 GCCBuiltin<"__builtin_ia32_cvttps2uqq512_mask">, 4757 Intrinsic<[llvm_v8i64_ty], 4758 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4759 [IntrNoMem]>; 4760 4761 def int_x86_avx512_mask_cvtudq2pd_128 : 4762 GCCBuiltin<"__builtin_ia32_cvtudq2pd128_mask">, 4763 Intrinsic<[llvm_v2f64_ty], 4764 [llvm_v4i32_ty, llvm_v2f64_ty, llvm_i8_ty], 4765 [IntrNoMem]>; 4766 4767 def int_x86_avx512_mask_cvtudq2pd_256 : 4768 GCCBuiltin<"__builtin_ia32_cvtudq2pd256_mask">, 4769 Intrinsic<[llvm_v4f64_ty], 4770 [llvm_v4i32_ty, llvm_v4f64_ty, llvm_i8_ty], 4771 [IntrNoMem]>; 4772 4773 def int_x86_avx512_mask_cvtudq2pd_512 : 4774 GCCBuiltin<"__builtin_ia32_cvtudq2pd512_mask">, 4775 Intrinsic<[llvm_v8f64_ty], 4776 [llvm_v8i32_ty, llvm_v8f64_ty, llvm_i8_ty], 4777 [IntrNoMem]>; 4778 4779 def int_x86_avx512_mask_cvtudq2ps_128 : 4780 GCCBuiltin<"__builtin_ia32_cvtudq2ps128_mask">, 4781 Intrinsic<[llvm_v4f32_ty], 4782 [llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty], 4783 [IntrNoMem]>; 4784 4785 def int_x86_avx512_mask_cvtudq2ps_256 : 4786 GCCBuiltin<"__builtin_ia32_cvtudq2ps256_mask">, 4787 Intrinsic<[llvm_v8f32_ty], 4788 [llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], 4789 [IntrNoMem]>; 4790 4791 def int_x86_avx512_mask_cvtudq2ps_512 : 4792 GCCBuiltin<"__builtin_ia32_cvtudq2ps512_mask">, 4793 Intrinsic<[llvm_v16f32_ty], 4794 [llvm_v16i32_ty, llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], 4795 [IntrNoMem]>; 4796 4797 def int_x86_avx512_mask_cvtuqq2pd_128 : 4798 GCCBuiltin<"__builtin_ia32_cvtuqq2pd128_mask">, 4799 Intrinsic<[llvm_v2f64_ty], 4800 [llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty], 4801 [IntrNoMem]>; 4802 4803 def int_x86_avx512_mask_cvtuqq2pd_256 : 4804 GCCBuiltin<"__builtin_ia32_cvtuqq2pd256_mask">, 4805 Intrinsic<[llvm_v4f64_ty], 4806 [llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], 4807 [IntrNoMem]>; 4808 4809 def int_x86_avx512_mask_cvtuqq2pd_512 : 4810 GCCBuiltin<"__builtin_ia32_cvtuqq2pd512_mask">, 4811 Intrinsic<[llvm_v8f64_ty], 4812 [llvm_v8i64_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], 4813 [IntrNoMem]>; 4814 4815 def int_x86_avx512_mask_cvtuqq2ps_128 : 4816 GCCBuiltin<"__builtin_ia32_cvtuqq2ps128_mask">, 4817 Intrinsic<[llvm_v4f32_ty], 4818 [llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty], 4819 [IntrNoMem]>; 4820 4821 def int_x86_avx512_mask_cvtuqq2ps_256 : 4822 GCCBuiltin<"__builtin_ia32_cvtuqq2ps256_mask">, 4823 Intrinsic<[llvm_v4f32_ty], 4824 [llvm_v4i64_ty, llvm_v4f32_ty, llvm_i8_ty], 4825 [IntrNoMem]>; 4826 4827 def int_x86_avx512_mask_cvtuqq2ps_512 : 4828 GCCBuiltin<"__builtin_ia32_cvtuqq2ps512_mask">, 4829 Intrinsic<[llvm_v8f32_ty], 4830 [llvm_v8i64_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 4831 [IntrNoMem]>; 4832 4833 def int_x86_avx512_mask_rndscale_pd_128 : GCCBuiltin<"__builtin_ia32_rndscalepd_128_mask">, 4834 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_i32_ty, 4835 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 4836 def int_x86_avx512_mask_rndscale_pd_256 : GCCBuiltin<"__builtin_ia32_rndscalepd_256_mask">, 4837 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_i32_ty, 4838 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 4839 def int_x86_avx512_mask_rndscale_pd_512 : GCCBuiltin<"__builtin_ia32_rndscalepd_mask">, 4840 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, 4841 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4842 def int_x86_avx512_mask_rndscale_ps_128 : GCCBuiltin<"__builtin_ia32_rndscaleps_128_mask">, 4843 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_i32_ty, 4844 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 4845 def int_x86_avx512_mask_rndscale_ps_256 : GCCBuiltin<"__builtin_ia32_rndscaleps_256_mask">, 4846 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_i32_ty, 4847 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 4848 def int_x86_avx512_mask_rndscale_ps_512 : GCCBuiltin<"__builtin_ia32_rndscaleps_mask">, 4849 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, 4850 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4851 def int_x86_avx512_mask_reduce_pd_128 : GCCBuiltin<"__builtin_ia32_reducepd128_mask">, 4852 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_i32_ty, 4853 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 4854 def int_x86_avx512_mask_reduce_pd_256 : GCCBuiltin<"__builtin_ia32_reducepd256_mask">, 4855 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_i32_ty, 4856 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 4857 def int_x86_avx512_mask_reduce_pd_512 : GCCBuiltin<"__builtin_ia32_reducepd512_mask">, 4858 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, 4859 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4860 def int_x86_avx512_mask_reduce_ps_128 : GCCBuiltin<"__builtin_ia32_reduceps128_mask">, 4861 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_i32_ty, 4862 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 4863 def int_x86_avx512_mask_reduce_ps_256 : GCCBuiltin<"__builtin_ia32_reduceps256_mask">, 4864 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_i32_ty, 4865 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 4866 def int_x86_avx512_mask_reduce_ps_512 : GCCBuiltin<"__builtin_ia32_reduceps512_mask">, 4867 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, 4868 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4869def int_x86_avx512_mask_range_pd_128 : GCCBuiltin<"__builtin_ia32_rangepd128_mask">, 4870 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, 4871 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 4872def int_x86_avx512_mask_range_pd_256 : GCCBuiltin<"__builtin_ia32_rangepd256_mask">, 4873 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, 4874 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 4875def int_x86_avx512_mask_range_pd_512 : GCCBuiltin<"__builtin_ia32_rangepd512_mask">, 4876 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty, 4877 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4878def int_x86_avx512_mask_range_ps_128 : GCCBuiltin<"__builtin_ia32_rangeps128_mask">, 4879 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, 4880 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 4881def int_x86_avx512_mask_range_ps_256 : GCCBuiltin<"__builtin_ia32_rangeps256_mask">, 4882 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, 4883 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 4884def int_x86_avx512_mask_range_ps_512 : GCCBuiltin<"__builtin_ia32_rangeps512_mask">, 4885 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty, 4886 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4887} 4888 4889// Vector load with broadcast 4890let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 4891 def int_x86_avx512_vbroadcast_ss_512 : 4892 GCCBuiltin<"__builtin_ia32_vbroadcastss512">, 4893 Intrinsic<[llvm_v16f32_ty], [llvm_ptr_ty], [IntrReadArgMem]>; 4894 def int_x86_avx512_vbroadcast_ss_ps_512 : 4895 GCCBuiltin<"__builtin_ia32_vbroadcastss_ps512">, 4896 Intrinsic<[llvm_v16f32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 4897 4898 def int_x86_avx512_vbroadcast_sd_512 : 4899 GCCBuiltin<"__builtin_ia32_vbroadcastsd512">, 4900 Intrinsic<[llvm_v8f64_ty], [llvm_ptr_ty], [IntrReadArgMem]>; 4901 def int_x86_avx512_vbroadcast_sd_pd_512 : 4902 GCCBuiltin<"__builtin_ia32_vbroadcastsd_pd512">, 4903 Intrinsic<[llvm_v8f64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 4904 4905 def int_x86_avx512_pbroadcastb_128 : 4906 GCCBuiltin<"__builtin_ia32_pbroadcastb128_mask">, 4907 Intrinsic<[llvm_v16i8_ty], 4908 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 4909 def int_x86_avx512_pbroadcastb_256 : 4910 GCCBuiltin<"__builtin_ia32_pbroadcastb256_mask">, 4911 Intrinsic<[llvm_v32i8_ty], 4912 [llvm_v16i8_ty, llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 4913 def int_x86_avx512_pbroadcastb_512 : 4914 GCCBuiltin<"__builtin_ia32_pbroadcastb512_mask">, 4915 Intrinsic<[llvm_v64i8_ty], 4916 [llvm_v16i8_ty, llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 4917 def int_x86_avx512_pbroadcastw_128 : 4918 GCCBuiltin<"__builtin_ia32_pbroadcastw128_mask">, 4919 Intrinsic<[llvm_v8i16_ty], 4920 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 4921 def int_x86_avx512_pbroadcastw_256 : 4922 GCCBuiltin<"__builtin_ia32_pbroadcastw256_mask">, 4923 Intrinsic<[llvm_v16i16_ty], 4924 [llvm_v8i16_ty, llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 4925 def int_x86_avx512_pbroadcastw_512 : 4926 GCCBuiltin<"__builtin_ia32_pbroadcastw512_mask">, 4927 Intrinsic<[llvm_v32i16_ty], 4928 [llvm_v8i16_ty, llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 4929 def int_x86_avx512_pbroadcastd_128 : 4930 GCCBuiltin<"__builtin_ia32_pbroadcastd128_mask">, 4931 Intrinsic<[llvm_v4i32_ty], 4932 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 4933 def int_x86_avx512_pbroadcastd_256 : 4934 GCCBuiltin<"__builtin_ia32_pbroadcastd256_mask">, 4935 Intrinsic<[llvm_v8i32_ty], 4936 [llvm_v4i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 4937 def int_x86_avx512_pbroadcastd_512 : 4938 GCCBuiltin<"__builtin_ia32_pbroadcastd512">, 4939 Intrinsic<[llvm_v16i32_ty], 4940 [llvm_v4i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 4941 def int_x86_avx512_pbroadcastq_128 : 4942 GCCBuiltin<"__builtin_ia32_pbroadcastq128_mask">, 4943 Intrinsic<[llvm_v2i64_ty], 4944 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 4945 def int_x86_avx512_pbroadcastq_256 : 4946 GCCBuiltin<"__builtin_ia32_pbroadcastq256_mask">, 4947 Intrinsic<[llvm_v4i64_ty], 4948 [llvm_v2i64_ty, llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 4949 def int_x86_avx512_pbroadcastq_512 : 4950 GCCBuiltin<"__builtin_ia32_pbroadcastq512">, 4951 Intrinsic<[llvm_v8i64_ty], 4952 [llvm_v2i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 4953 4954 def int_x86_avx512_mask_broadcastf32x2_256 : 4955 GCCBuiltin<"__builtin_ia32_broadcastf32x2_256_mask">, 4956 Intrinsic<[llvm_v8f32_ty], 4957 [llvm_v4f32_ty, llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 4958 4959 def int_x86_avx512_mask_broadcastf32x2_512 : 4960 GCCBuiltin<"__builtin_ia32_broadcastf32x2_512_mask">, 4961 Intrinsic<[llvm_v16f32_ty], 4962 [llvm_v4f32_ty, llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 4963 4964 def int_x86_avx512_mask_broadcasti32x2_128 : 4965 GCCBuiltin<"__builtin_ia32_broadcasti32x2_128_mask">, 4966 Intrinsic<[llvm_v4i32_ty], 4967 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 4968 4969 def int_x86_avx512_mask_broadcasti32x2_256 : 4970 GCCBuiltin<"__builtin_ia32_broadcasti32x2_256_mask">, 4971 Intrinsic<[llvm_v8i32_ty], 4972 [llvm_v4i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 4973 4974 def int_x86_avx512_mask_broadcasti32x2_512 : 4975 GCCBuiltin<"__builtin_ia32_broadcasti32x2_512_mask">, 4976 Intrinsic<[llvm_v16i32_ty], 4977 [llvm_v4i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 4978 4979 def int_x86_avx512_pbroadcastd_i32_512 : 4980 Intrinsic<[llvm_v16i32_ty], [llvm_i32_ty], [IntrNoMem]>; 4981 4982 def int_x86_avx512_pbroadcastq_i64_512 : 4983 Intrinsic<[llvm_v8i64_ty], [llvm_i64_ty], [IntrNoMem]>; 4984 def int_x86_avx512_broadcastmw_512 : 4985 GCCBuiltin<"__builtin_ia32_broadcastmw512">, 4986 Intrinsic<[llvm_v16i32_ty], [llvm_i16_ty], [IntrNoMem]>; 4987 def int_x86_avx512_broadcastmw_256 : 4988 GCCBuiltin<"__builtin_ia32_broadcastmw256">, 4989 Intrinsic<[llvm_v8i32_ty], [llvm_i16_ty], [IntrNoMem]>; 4990 def int_x86_avx512_broadcastmw_128 : 4991 GCCBuiltin<"__builtin_ia32_broadcastmw128">, 4992 Intrinsic<[llvm_v4i32_ty], [llvm_i16_ty], [IntrNoMem]>; 4993 def int_x86_avx512_broadcastmb_512 : 4994 GCCBuiltin<"__builtin_ia32_broadcastmb512">, 4995 Intrinsic<[llvm_v8i64_ty], [llvm_i8_ty], [IntrNoMem]>; 4996 def int_x86_avx512_broadcastmb_256 : 4997 GCCBuiltin<"__builtin_ia32_broadcastmb256">, 4998 Intrinsic<[llvm_v4i64_ty], [llvm_i8_ty], [IntrNoMem]>; 4999 def int_x86_avx512_broadcastmb_128 : 5000 GCCBuiltin<"__builtin_ia32_broadcastmb128">, 5001 Intrinsic<[llvm_v2i64_ty], [llvm_i8_ty], [IntrNoMem]>; 5002} 5003 5004// Vector sign and zero extend 5005let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 5006 def int_x86_avx512_pmovzxbq : GCCBuiltin<"__builtin_ia32_pmovzxbq512">, 5007 Intrinsic<[llvm_v8i64_ty], [llvm_v16i8_ty], 5008 [IntrNoMem]>; 5009 def int_x86_avx512_pmovzxwd : GCCBuiltin<"__builtin_ia32_pmovzxwd512">, 5010 Intrinsic<[llvm_v16i32_ty], [llvm_v16i16_ty], 5011 [IntrNoMem]>; 5012 def int_x86_avx512_pmovzxbd : GCCBuiltin<"__builtin_ia32_pmovzxbd512">, 5013 Intrinsic<[llvm_v16i32_ty], [llvm_v16i8_ty], 5014 [IntrNoMem]>; 5015 def int_x86_avx512_pmovzxwq : GCCBuiltin<"__builtin_ia32_pmovzxwq512">, 5016 Intrinsic<[llvm_v8i64_ty], [llvm_v8i16_ty], 5017 [IntrNoMem]>; 5018 def int_x86_avx512_pmovzxdq : GCCBuiltin<"__builtin_ia32_pmovzxdq512">, 5019 Intrinsic<[llvm_v8i64_ty], [llvm_v8i32_ty], 5020 [IntrNoMem]>; 5021} 5022//Bitwise Ops 5023let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 5024 def int_x86_avx512_mask_pand_d_128 : GCCBuiltin<"__builtin_ia32_pandd128_mask">, 5025 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5026 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 5027 def int_x86_avx512_mask_pand_d_256 : GCCBuiltin<"__builtin_ia32_pandd256_mask">, 5028 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5029 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 5030 def int_x86_avx512_mask_pand_d_512 : GCCBuiltin<"__builtin_ia32_pandd512_mask">, 5031 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5032 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 5033 def int_x86_avx512_mask_pand_q_128 : GCCBuiltin<"__builtin_ia32_pandq128_mask">, 5034 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 5035 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 5036 def int_x86_avx512_mask_pand_q_256 : GCCBuiltin<"__builtin_ia32_pandq256_mask">, 5037 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 5038 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 5039 def int_x86_avx512_mask_pand_q_512 : GCCBuiltin<"__builtin_ia32_pandq512_mask">, 5040 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 5041 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 5042 def int_x86_avx512_mask_pandn_d_128 : GCCBuiltin<"__builtin_ia32_pandnd128_mask">, 5043 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5044 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 5045 def int_x86_avx512_mask_pandn_d_256 : GCCBuiltin<"__builtin_ia32_pandnd256_mask">, 5046 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5047 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 5048 def int_x86_avx512_mask_pandn_d_512 : GCCBuiltin<"__builtin_ia32_pandnd512_mask">, 5049 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5050 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 5051 def int_x86_avx512_mask_pandn_q_128 : GCCBuiltin<"__builtin_ia32_pandnq128_mask">, 5052 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 5053 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 5054 def int_x86_avx512_mask_pandn_q_256 : GCCBuiltin<"__builtin_ia32_pandnq256_mask">, 5055 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 5056 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 5057 def int_x86_avx512_mask_pandn_q_512 : GCCBuiltin<"__builtin_ia32_pandnq512_mask">, 5058 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 5059 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 5060 def int_x86_avx512_mask_por_d_128 : GCCBuiltin<"__builtin_ia32_pord128_mask">, 5061 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5062 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 5063 def int_x86_avx512_mask_por_d_256 : GCCBuiltin<"__builtin_ia32_pord256_mask">, 5064 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5065 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 5066 def int_x86_avx512_mask_por_d_512 : GCCBuiltin<"__builtin_ia32_pord512_mask">, 5067 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5068 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 5069 def int_x86_avx512_mask_por_q_128 : GCCBuiltin<"__builtin_ia32_porq128_mask">, 5070 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 5071 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 5072 def int_x86_avx512_mask_por_q_256 : GCCBuiltin<"__builtin_ia32_porq256_mask">, 5073 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 5074 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 5075 def int_x86_avx512_mask_por_q_512 : GCCBuiltin<"__builtin_ia32_porq512_mask">, 5076 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 5077 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 5078 def int_x86_avx512_mask_pxor_d_128 : GCCBuiltin<"__builtin_ia32_pxord128_mask">, 5079 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5080 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 5081 def int_x86_avx512_mask_pxor_d_256 : GCCBuiltin<"__builtin_ia32_pxord256_mask">, 5082 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5083 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 5084 def int_x86_avx512_mask_pxor_d_512 : GCCBuiltin<"__builtin_ia32_pxord512_mask">, 5085 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5086 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 5087 def int_x86_avx512_mask_pxor_q_128 : GCCBuiltin<"__builtin_ia32_pxorq128_mask">, 5088 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 5089 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 5090 def int_x86_avx512_mask_pxor_q_256 : GCCBuiltin<"__builtin_ia32_pxorq256_mask">, 5091 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 5092 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 5093 def int_x86_avx512_mask_pxor_q_512 : GCCBuiltin<"__builtin_ia32_pxorq512_mask">, 5094 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 5095 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 5096} 5097// Arithmetic ops 5098let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 5099 5100 def int_x86_avx512_mask_add_ps_128 : GCCBuiltin<"__builtin_ia32_addps128_mask">, 5101 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5102 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5103 def int_x86_avx512_mask_add_ps_256 : GCCBuiltin<"__builtin_ia32_addps256_mask">, 5104 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5105 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5106 def int_x86_avx512_mask_add_ps_512 : GCCBuiltin<"__builtin_ia32_addps512_mask">, 5107 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5108 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5109 def int_x86_avx512_mask_add_pd_128 : GCCBuiltin<"__builtin_ia32_addpd128_mask">, 5110 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5111 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5112 def int_x86_avx512_mask_add_pd_256 : GCCBuiltin<"__builtin_ia32_addpd256_mask">, 5113 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5114 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 5115 def int_x86_avx512_mask_add_pd_512 : GCCBuiltin<"__builtin_ia32_addpd512_mask">, 5116 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5117 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5118 def int_x86_avx512_mask_sub_ps_128 : GCCBuiltin<"__builtin_ia32_subps128_mask">, 5119 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5120 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5121 def int_x86_avx512_mask_sub_ps_256 : GCCBuiltin<"__builtin_ia32_subps256_mask">, 5122 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5123 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5124 def int_x86_avx512_mask_sub_ps_512 : GCCBuiltin<"__builtin_ia32_subps512_mask">, 5125 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5126 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5127 def int_x86_avx512_mask_sub_pd_128 : GCCBuiltin<"__builtin_ia32_subpd128_mask">, 5128 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5129 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5130 def int_x86_avx512_mask_sub_pd_256 : GCCBuiltin<"__builtin_ia32_subpd256_mask">, 5131 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5132 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 5133 def int_x86_avx512_mask_sub_pd_512 : GCCBuiltin<"__builtin_ia32_subpd512_mask">, 5134 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5135 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5136 def int_x86_avx512_mask_mul_ps_128 : GCCBuiltin<"__builtin_ia32_mulps_mask">, 5137 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5138 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5139 def int_x86_avx512_mask_mul_ps_256 : GCCBuiltin<"__builtin_ia32_mulps256_mask">, 5140 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5141 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5142 def int_x86_avx512_mask_mul_ps_512 : GCCBuiltin<"__builtin_ia32_mulps512_mask">, 5143 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5144 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5145 def int_x86_avx512_mask_mul_pd_128 : GCCBuiltin<"__builtin_ia32_mulpd_mask">, 5146 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5147 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5148 def int_x86_avx512_mask_mul_pd_256 : GCCBuiltin<"__builtin_ia32_mulpd256_mask">, 5149 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5150 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 5151 def int_x86_avx512_mask_mul_pd_512 : GCCBuiltin<"__builtin_ia32_mulpd512_mask">, 5152 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5153 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5154 def int_x86_avx512_mask_div_ps_128 : GCCBuiltin<"__builtin_ia32_divps_mask">, 5155 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5156 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5157 def int_x86_avx512_mask_div_ps_256 : GCCBuiltin<"__builtin_ia32_divps256_mask">, 5158 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5159 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5160 def int_x86_avx512_mask_div_ps_512 : GCCBuiltin<"__builtin_ia32_divps512_mask">, 5161 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5162 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5163 def int_x86_avx512_mask_div_pd_128 : GCCBuiltin<"__builtin_ia32_divpd_mask">, 5164 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5165 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5166 def int_x86_avx512_mask_div_pd_256 : GCCBuiltin<"__builtin_ia32_divpd256_mask">, 5167 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5168 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 5169 def int_x86_avx512_mask_div_pd_512 : GCCBuiltin<"__builtin_ia32_divpd512_mask">, 5170 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5171 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5172 def int_x86_avx512_mask_max_ps_128 : GCCBuiltin<"__builtin_ia32_maxps_mask">, 5173 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5174 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5175 def int_x86_avx512_mask_max_ps_256 : GCCBuiltin<"__builtin_ia32_maxps256_mask">, 5176 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5177 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5178 def int_x86_avx512_mask_max_ps_512 : GCCBuiltin<"__builtin_ia32_maxps512_mask">, 5179 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5180 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5181 def int_x86_avx512_mask_max_pd_128 : GCCBuiltin<"__builtin_ia32_maxpd_mask">, 5182 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5183 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5184 def int_x86_avx512_mask_max_pd_256 : GCCBuiltin<"__builtin_ia32_maxpd256_mask">, 5185 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5186 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 5187 def int_x86_avx512_mask_max_pd_512 : GCCBuiltin<"__builtin_ia32_maxpd512_mask">, 5188 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5189 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5190 def int_x86_avx512_mask_min_ps_128 : GCCBuiltin<"__builtin_ia32_minps_mask">, 5191 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5192 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5193 def int_x86_avx512_mask_min_ps_256 : GCCBuiltin<"__builtin_ia32_minps256_mask">, 5194 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5195 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5196 def int_x86_avx512_mask_min_ps_512 : GCCBuiltin<"__builtin_ia32_minps512_mask">, 5197 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5198 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5199 def int_x86_avx512_mask_min_pd_128 : GCCBuiltin<"__builtin_ia32_minpd_mask">, 5200 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5201 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5202 def int_x86_avx512_mask_min_pd_256 : GCCBuiltin<"__builtin_ia32_minpd256_mask">, 5203 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5204 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 5205 def int_x86_avx512_mask_min_pd_512 : GCCBuiltin<"__builtin_ia32_minpd512_mask">, 5206 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5207 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5208 5209 def int_x86_avx512_mask_add_ss_round : GCCBuiltin<"__builtin_ia32_addss_round">, 5210 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5211 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5212 def int_x86_avx512_mask_div_ss_round : GCCBuiltin<"__builtin_ia32_divss_round">, 5213 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5214 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5215 def int_x86_avx512_mask_mul_ss_round : GCCBuiltin<"__builtin_ia32_mulss_round">, 5216 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5217 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5218 def int_x86_avx512_mask_sub_ss_round : GCCBuiltin<"__builtin_ia32_subss_round">, 5219 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5220 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5221 def int_x86_avx512_mask_max_ss_round : GCCBuiltin<"__builtin_ia32_maxss_round">, 5222 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5223 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5224 def int_x86_avx512_mask_min_ss_round : GCCBuiltin<"__builtin_ia32_minss_round">, 5225 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5226 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5227 def int_x86_avx512_mask_add_sd_round : GCCBuiltin<"__builtin_ia32_addsd_round">, 5228 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5229 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5230 def int_x86_avx512_mask_div_sd_round : GCCBuiltin<"__builtin_ia32_divsd_round">, 5231 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5232 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5233 def int_x86_avx512_mask_mul_sd_round : GCCBuiltin<"__builtin_ia32_mulsd_round">, 5234 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5235 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5236 def int_x86_avx512_mask_sub_sd_round : GCCBuiltin<"__builtin_ia32_subsd_round">, 5237 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5238 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5239 def int_x86_avx512_mask_max_sd_round : GCCBuiltin<"__builtin_ia32_maxsd_round">, 5240 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5241 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5242 def int_x86_avx512_mask_min_sd_round : GCCBuiltin<"__builtin_ia32_minsd_round">, 5243 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5244 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5245 5246 def int_x86_avx512_mask_rndscale_ss : GCCBuiltin<"__builtin_ia32_rndscaless_round">, 5247 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 5248 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 5249 [IntrNoMem]>; 5250 def int_x86_avx512_mask_rndscale_sd : GCCBuiltin<"__builtin_ia32_rndscalesd_round">, 5251 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 5252 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 5253 [IntrNoMem]>; 5254 def int_x86_avx512_mask_range_ss : GCCBuiltin<"__builtin_ia32_rangess128_round">, 5255 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 5256 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 5257 [IntrNoMem]>; 5258 def int_x86_avx512_mask_range_sd : GCCBuiltin<"__builtin_ia32_rangesd128_round">, 5259 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 5260 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 5261 [IntrNoMem]>; 5262 def int_x86_avx512_mask_reduce_ss : GCCBuiltin<"__builtin_ia32_reducess">, 5263 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 5264 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 5265 [IntrNoMem]>; 5266 def int_x86_avx512_mask_reduce_sd : GCCBuiltin<"__builtin_ia32_reducesd">, 5267 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 5268 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 5269 [IntrNoMem]>; 5270 def int_x86_avx512_mask_scalef_sd : GCCBuiltin<"__builtin_ia32_scalefsd_round">, 5271 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5272 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5273 def int_x86_avx512_mask_scalef_ss : GCCBuiltin<"__builtin_ia32_scalefss_round">, 5274 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5275 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5276 def int_x86_avx512_mask_scalef_pd_128 : GCCBuiltin<"__builtin_ia32_scalefpd128_mask">, 5277 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5278 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5279 def int_x86_avx512_mask_scalef_pd_256 : GCCBuiltin<"__builtin_ia32_scalefpd256_mask">, 5280 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5281 llvm_v4f64_ty, llvm_i8_ty],[IntrNoMem]>; 5282 def int_x86_avx512_mask_scalef_pd_512 : GCCBuiltin<"__builtin_ia32_scalefpd512_mask">, 5283 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5284 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5285 def int_x86_avx512_mask_scalef_ps_128 : GCCBuiltin<"__builtin_ia32_scalefps128_mask">, 5286 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5287 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5288 def int_x86_avx512_mask_scalef_ps_256 : GCCBuiltin<"__builtin_ia32_scalefps256_mask">, 5289 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5290 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5291 def int_x86_avx512_mask_scalef_ps_512 : GCCBuiltin<"__builtin_ia32_scalefps512_mask">, 5292 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5293 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5294 5295 def int_x86_avx512_mask_sqrt_ss : GCCBuiltin<"__builtin_ia32_sqrtss_round">, 5296 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 5297 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5298 def int_x86_avx512_mask_sqrt_sd : GCCBuiltin<"__builtin_ia32_sqrtsd_round">, 5299 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 5300 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5301 5302 def int_x86_avx512_mask_sqrt_pd_128 : GCCBuiltin<"__builtin_ia32_sqrtpd128_mask">, 5303 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5304 llvm_i8_ty], [IntrNoMem]>; 5305 def int_x86_avx512_mask_sqrt_pd_256 : GCCBuiltin<"__builtin_ia32_sqrtpd256_mask">, 5306 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5307 llvm_i8_ty], [IntrNoMem]>; 5308 def int_x86_avx512_mask_sqrt_pd_512 : GCCBuiltin<"__builtin_ia32_sqrtpd512_mask">, 5309 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5310 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5311 def int_x86_avx512_mask_sqrt_ps_128 : GCCBuiltin<"__builtin_ia32_sqrtps128_mask">, 5312 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5313 llvm_i8_ty], [IntrNoMem]>; 5314 def int_x86_avx512_mask_sqrt_ps_256 : GCCBuiltin<"__builtin_ia32_sqrtps256_mask">, 5315 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5316 llvm_i8_ty], [IntrNoMem]>; 5317 def int_x86_avx512_mask_sqrt_ps_512 : GCCBuiltin<"__builtin_ia32_sqrtps512_mask">, 5318 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5319 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5320 def int_x86_avx512_mask_getexp_pd_128 : GCCBuiltin<"__builtin_ia32_getexppd128_mask">, 5321 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5322 llvm_i8_ty], [IntrNoMem]>; 5323 def int_x86_avx512_mask_getexp_pd_256 : GCCBuiltin<"__builtin_ia32_getexppd256_mask">, 5324 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5325 llvm_i8_ty], [IntrNoMem]>; 5326 def int_x86_avx512_mask_getexp_pd_512 : GCCBuiltin<"__builtin_ia32_getexppd512_mask">, 5327 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5328 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5329 def int_x86_avx512_mask_getexp_ps_128 : GCCBuiltin<"__builtin_ia32_getexpps128_mask">, 5330 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5331 llvm_i8_ty], [IntrNoMem]>; 5332 def int_x86_avx512_mask_getexp_ps_256 : GCCBuiltin<"__builtin_ia32_getexpps256_mask">, 5333 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5334 llvm_i8_ty], [IntrNoMem]>; 5335 def int_x86_avx512_mask_getexp_ps_512 : GCCBuiltin<"__builtin_ia32_getexpps512_mask">, 5336 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5337 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5338 5339 def int_x86_avx512_mask_getexp_ss : GCCBuiltin<"__builtin_ia32_getexpss_mask">, 5340 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 5341 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5342 def int_x86_avx512_mask_getexp_sd : GCCBuiltin<"__builtin_ia32_getexpsd_mask">, 5343 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 5344 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5345 5346 def int_x86_avx512_mask_getmant_pd_128 : 5347 GCCBuiltin<"__builtin_ia32_getmantpd128_mask">, 5348 Intrinsic<[llvm_v2f64_ty], 5349 [llvm_v2f64_ty,llvm_i32_ty, llvm_v2f64_ty, llvm_i8_ty], 5350 [IntrNoMem]>; 5351 5352 def int_x86_avx512_mask_getmant_pd_256 : 5353 GCCBuiltin<"__builtin_ia32_getmantpd256_mask">, 5354 Intrinsic<[llvm_v4f64_ty], 5355 [llvm_v4f64_ty,llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty], 5356 [IntrNoMem]>; 5357 5358 def int_x86_avx512_mask_getmant_pd_512 : 5359 GCCBuiltin<"__builtin_ia32_getmantpd512_mask">, 5360 Intrinsic<[llvm_v8f64_ty], 5361 [llvm_v8f64_ty,llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty,llvm_i32_ty ], 5362 [IntrNoMem]>; 5363 5364 def int_x86_avx512_mask_getmant_ps_128 : 5365 GCCBuiltin<"__builtin_ia32_getmantps128_mask">, 5366 Intrinsic<[llvm_v4f32_ty], 5367 [llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, llvm_i8_ty], 5368 [IntrNoMem]>; 5369 5370 def int_x86_avx512_mask_getmant_ps_256 : 5371 GCCBuiltin<"__builtin_ia32_getmantps256_mask">, 5372 Intrinsic<[llvm_v8f32_ty], 5373 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty], 5374 [IntrNoMem]>; 5375 5376 def int_x86_avx512_mask_getmant_ps_512 : 5377 GCCBuiltin<"__builtin_ia32_getmantps512_mask">, 5378 Intrinsic<[llvm_v16f32_ty], 5379 [llvm_v16f32_ty,llvm_i32_ty, llvm_v16f32_ty,llvm_i16_ty,llvm_i32_ty], 5380 [IntrNoMem]>; 5381 5382 def int_x86_avx512_mask_getmant_ss : 5383 GCCBuiltin<"__builtin_ia32_getmantss_round">, 5384 Intrinsic<[llvm_v4f32_ty], 5385 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, 5386 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5387 5388 def int_x86_avx512_mask_getmant_sd : 5389 GCCBuiltin<"__builtin_ia32_getmantsd_round">, 5390 Intrinsic<[llvm_v2f64_ty], 5391 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, 5392 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5393 5394 def int_x86_avx512_rsqrt14_ss : GCCBuiltin<"__builtin_ia32_rsqrt14ss">, 5395 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 5396 llvm_i8_ty], [IntrNoMem]>; 5397 def int_x86_avx512_rsqrt14_sd : GCCBuiltin<"__builtin_ia32_rsqrt14sd">, 5398 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 5399 llvm_i8_ty], [IntrNoMem]>; 5400 5401 def int_x86_avx512_rsqrt14_pd_512 : GCCBuiltin<"__builtin_ia32_rsqrt14pd512_mask">, 5402 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5403 llvm_i8_ty], [IntrNoMem]>; 5404 def int_x86_avx512_rsqrt14_ps_512 : GCCBuiltin<"__builtin_ia32_rsqrt14ps512_mask">, 5405 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5406 llvm_i16_ty], [IntrNoMem]>; 5407 def int_x86_avx512_rcp14_ss : GCCBuiltin<"__builtin_ia32_rcp14ss">, 5408 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 5409 llvm_i8_ty], [IntrNoMem]>; 5410 def int_x86_avx512_rcp14_sd : GCCBuiltin<"__builtin_ia32_rcp14sd">, 5411 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 5412 llvm_i8_ty], [IntrNoMem]>; 5413 5414 def int_x86_avx512_rcp14_pd_512 : GCCBuiltin<"__builtin_ia32_rcp14pd512_mask">, 5415 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5416 llvm_i8_ty], [IntrNoMem]>; 5417 def int_x86_avx512_rcp14_ps_512 : GCCBuiltin<"__builtin_ia32_rcp14ps512_mask">, 5418 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5419 llvm_i16_ty], [IntrNoMem]>; 5420 5421 def int_x86_avx512_rcp28_ps : GCCBuiltin<"__builtin_ia32_rcp28ps_mask">, 5422 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5423 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5424 def int_x86_avx512_rcp28_pd : GCCBuiltin<"__builtin_ia32_rcp28pd_mask">, 5425 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5426 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5427 def int_x86_avx512_exp2_ps : GCCBuiltin<"__builtin_ia32_exp2ps_mask">, 5428 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5429 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 5430 def int_x86_avx512_exp2_pd : GCCBuiltin<"__builtin_ia32_exp2pd_mask">, 5431 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5432 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 5433 5434 def int_x86_avx512_rcp28_ss : GCCBuiltin<"__builtin_ia32_rcp28ss_round">, 5435 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5436 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], 5437 [IntrNoMem]>; 5438 def int_x86_avx512_rcp28_sd : GCCBuiltin<"__builtin_ia32_rcp28sd_round">, 5439 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5440 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], 5441 [IntrNoMem]>; 5442 def int_x86_avx512_rsqrt28_ps : GCCBuiltin<"__builtin_ia32_rsqrt28ps_mask">, 5443 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5444 llvm_i16_ty, llvm_i32_ty], 5445 [IntrNoMem]>; 5446 def int_x86_avx512_rsqrt28_pd : GCCBuiltin<"__builtin_ia32_rsqrt28pd_mask">, 5447 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5448 llvm_i8_ty, llvm_i32_ty], 5449 [IntrNoMem]>; 5450 def int_x86_avx512_rsqrt28_ss : GCCBuiltin<"__builtin_ia32_rsqrt28ss_round">, 5451 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5452 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], 5453 [IntrNoMem]>; 5454 def int_x86_avx512_rsqrt28_sd : GCCBuiltin<"__builtin_ia32_rsqrt28sd_round">, 5455 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5456 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], 5457 [IntrNoMem]>; 5458def int_x86_avx512_psad_bw_512 : GCCBuiltin<"__builtin_ia32_psadbw512">, 5459 Intrinsic<[llvm_v8i64_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 5460 [IntrNoMem]>; 5461} 5462// FP logical ops 5463let TargetPrefix = "x86" in { 5464 def int_x86_avx512_mask_and_pd_128 : GCCBuiltin<"__builtin_ia32_andpd128_mask">, 5465 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5466 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5467 def int_x86_avx512_mask_and_pd_256 : GCCBuiltin<"__builtin_ia32_andpd256_mask">, 5468 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5469 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 5470 def int_x86_avx512_mask_and_pd_512 : GCCBuiltin<"__builtin_ia32_andpd512_mask">, 5471 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5472 llvm_v8f64_ty, llvm_i8_ty], [IntrNoMem]>; 5473 def int_x86_avx512_mask_and_ps_128 : GCCBuiltin<"__builtin_ia32_andps128_mask">, 5474 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5475 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5476 def int_x86_avx512_mask_and_ps_256 : GCCBuiltin<"__builtin_ia32_andps256_mask">, 5477 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5478 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5479 def int_x86_avx512_mask_and_ps_512 : GCCBuiltin<"__builtin_ia32_andps512_mask">, 5480 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5481 llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 5482 def int_x86_avx512_mask_andn_pd_128 : GCCBuiltin<"__builtin_ia32_andnpd128_mask">, 5483 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5484 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5485 def int_x86_avx512_mask_andn_pd_256 : GCCBuiltin<"__builtin_ia32_andnpd256_mask">, 5486 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5487 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 5488 def int_x86_avx512_mask_andn_pd_512 : GCCBuiltin<"__builtin_ia32_andnpd512_mask">, 5489 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5490 llvm_v8f64_ty, llvm_i8_ty], [IntrNoMem]>; 5491 def int_x86_avx512_mask_andn_ps_128 : GCCBuiltin<"__builtin_ia32_andnps128_mask">, 5492 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5493 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5494 def int_x86_avx512_mask_andn_ps_256 : GCCBuiltin<"__builtin_ia32_andnps256_mask">, 5495 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5496 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5497 def int_x86_avx512_mask_andn_ps_512 : GCCBuiltin<"__builtin_ia32_andnps512_mask">, 5498 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5499 llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 5500 def int_x86_avx512_mask_or_pd_128 : GCCBuiltin<"__builtin_ia32_orpd128_mask">, 5501 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5502 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5503 def int_x86_avx512_mask_or_pd_256 : GCCBuiltin<"__builtin_ia32_orpd256_mask">, 5504 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5505 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 5506 def int_x86_avx512_mask_or_pd_512 : GCCBuiltin<"__builtin_ia32_orpd512_mask">, 5507 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5508 llvm_v8f64_ty, llvm_i8_ty], [IntrNoMem]>; 5509 def int_x86_avx512_mask_or_ps_128 : GCCBuiltin<"__builtin_ia32_orps128_mask">, 5510 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5511 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5512 def int_x86_avx512_mask_or_ps_256 : GCCBuiltin<"__builtin_ia32_orps256_mask">, 5513 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5514 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5515 def int_x86_avx512_mask_or_ps_512 : GCCBuiltin<"__builtin_ia32_orps512_mask">, 5516 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5517 llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 5518 5519 def int_x86_avx512_mask_xor_pd_128 : GCCBuiltin<"__builtin_ia32_xorpd128_mask">, 5520 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5521 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 5522 def int_x86_avx512_mask_xor_pd_256 : GCCBuiltin<"__builtin_ia32_xorpd256_mask">, 5523 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5524 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 5525 def int_x86_avx512_mask_xor_pd_512 : GCCBuiltin<"__builtin_ia32_xorpd512_mask">, 5526 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5527 llvm_v8f64_ty, llvm_i8_ty], [IntrNoMem]>; 5528 def int_x86_avx512_mask_xor_ps_128 : GCCBuiltin<"__builtin_ia32_xorps128_mask">, 5529 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5530 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 5531 def int_x86_avx512_mask_xor_ps_256 : GCCBuiltin<"__builtin_ia32_xorps256_mask">, 5532 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5533 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 5534 def int_x86_avx512_mask_xor_ps_512 : GCCBuiltin<"__builtin_ia32_xorps512_mask">, 5535 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5536 llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 5537} 5538// Integer arithmetic ops 5539let TargetPrefix = "x86" in { 5540 def int_x86_avx512_mask_padd_b_128 : GCCBuiltin<"__builtin_ia32_paddb128_mask">, 5541 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 5542 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 5543 def int_x86_avx512_mask_padd_b_256 : GCCBuiltin<"__builtin_ia32_paddb256_mask">, 5544 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 5545 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 5546 def int_x86_avx512_mask_padd_b_512 : GCCBuiltin<"__builtin_ia32_paddb512_mask">, 5547 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 5548 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 5549 def int_x86_avx512_mask_padd_w_128 : GCCBuiltin<"__builtin_ia32_paddw128_mask">, 5550 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5551 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5552 def int_x86_avx512_mask_padd_w_256 : GCCBuiltin<"__builtin_ia32_paddw256_mask">, 5553 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5554 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5555 def int_x86_avx512_mask_padd_w_512 : GCCBuiltin<"__builtin_ia32_paddw512_mask">, 5556 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5557 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5558 def int_x86_avx512_mask_padds_b_128 : GCCBuiltin<"__builtin_ia32_paddsb128_mask">, 5559 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 5560 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 5561 def int_x86_avx512_mask_padds_b_256 : GCCBuiltin<"__builtin_ia32_paddsb256_mask">, 5562 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 5563 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 5564 def int_x86_avx512_mask_padds_b_512 : GCCBuiltin<"__builtin_ia32_paddsb512_mask">, 5565 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 5566 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 5567 def int_x86_avx512_mask_padds_w_128 : GCCBuiltin<"__builtin_ia32_paddsw128_mask">, 5568 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5569 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5570 def int_x86_avx512_mask_padds_w_256 : GCCBuiltin<"__builtin_ia32_paddsw256_mask">, 5571 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5572 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5573 def int_x86_avx512_mask_padds_w_512 : GCCBuiltin<"__builtin_ia32_paddsw512_mask">, 5574 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5575 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5576 def int_x86_avx512_mask_paddus_b_128 : GCCBuiltin<"__builtin_ia32_paddusb128_mask">, 5577 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 5578 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 5579 def int_x86_avx512_mask_paddus_b_256 : GCCBuiltin<"__builtin_ia32_paddusb256_mask">, 5580 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 5581 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 5582 def int_x86_avx512_mask_paddus_b_512 : GCCBuiltin<"__builtin_ia32_paddusb512_mask">, 5583 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 5584 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 5585 def int_x86_avx512_mask_paddus_w_128 : GCCBuiltin<"__builtin_ia32_paddusw128_mask">, 5586 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5587 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5588 def int_x86_avx512_mask_paddus_w_256 : GCCBuiltin<"__builtin_ia32_paddusw256_mask">, 5589 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5590 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5591 def int_x86_avx512_mask_paddus_w_512 : GCCBuiltin<"__builtin_ia32_paddusw512_mask">, 5592 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5593 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5594 def int_x86_avx512_mask_padd_d_128 : GCCBuiltin<"__builtin_ia32_paddd128_mask">, 5595 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5596 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 5597 def int_x86_avx512_mask_padd_d_256 : GCCBuiltin<"__builtin_ia32_paddd256_mask">, 5598 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5599 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 5600 def int_x86_avx512_mask_padd_d_512 : GCCBuiltin<"__builtin_ia32_paddd512_mask">, 5601 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5602 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 5603 def int_x86_avx512_mask_padd_q_128 : GCCBuiltin<"__builtin_ia32_paddq128_mask">, 5604 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 5605 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 5606 def int_x86_avx512_mask_padd_q_256 : GCCBuiltin<"__builtin_ia32_paddq256_mask">, 5607 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 5608 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 5609 def int_x86_avx512_mask_padd_q_512 : GCCBuiltin<"__builtin_ia32_paddq512_mask">, 5610 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 5611 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 5612 def int_x86_avx512_mask_psub_b_128 : GCCBuiltin<"__builtin_ia32_psubb128_mask">, 5613 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 5614 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 5615 def int_x86_avx512_mask_psub_b_256 : GCCBuiltin<"__builtin_ia32_psubb256_mask">, 5616 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 5617 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 5618 def int_x86_avx512_mask_psub_b_512 : GCCBuiltin<"__builtin_ia32_psubb512_mask">, 5619 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 5620 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 5621 def int_x86_avx512_mask_psub_w_128 : GCCBuiltin<"__builtin_ia32_psubw128_mask">, 5622 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5623 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5624 def int_x86_avx512_mask_psub_w_256 : GCCBuiltin<"__builtin_ia32_psubw256_mask">, 5625 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5626 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5627 def int_x86_avx512_mask_psub_w_512 : GCCBuiltin<"__builtin_ia32_psubw512_mask">, 5628 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5629 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5630 def int_x86_avx512_mask_psubs_b_128 : GCCBuiltin<"__builtin_ia32_psubsb128_mask">, 5631 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 5632 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 5633 def int_x86_avx512_mask_psubs_b_256 : GCCBuiltin<"__builtin_ia32_psubsb256_mask">, 5634 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 5635 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 5636 def int_x86_avx512_mask_psubs_b_512 : GCCBuiltin<"__builtin_ia32_psubsb512_mask">, 5637 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 5638 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 5639 def int_x86_avx512_mask_psubs_w_128 : GCCBuiltin<"__builtin_ia32_psubsw128_mask">, 5640 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5641 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5642 def int_x86_avx512_mask_psubs_w_256 : GCCBuiltin<"__builtin_ia32_psubsw256_mask">, 5643 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5644 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5645 def int_x86_avx512_mask_psubs_w_512 : GCCBuiltin<"__builtin_ia32_psubsw512_mask">, 5646 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5647 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5648 def int_x86_avx512_mask_psubus_b_128 : GCCBuiltin<"__builtin_ia32_psubusb128_mask">, 5649 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 5650 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 5651 def int_x86_avx512_mask_psubus_b_256 : GCCBuiltin<"__builtin_ia32_psubusb256_mask">, 5652 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 5653 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 5654 def int_x86_avx512_mask_psubus_b_512 : GCCBuiltin<"__builtin_ia32_psubusb512_mask">, 5655 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 5656 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 5657 def int_x86_avx512_mask_psubus_w_128 : GCCBuiltin<"__builtin_ia32_psubusw128_mask">, 5658 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5659 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5660 def int_x86_avx512_mask_psubus_w_256 : GCCBuiltin<"__builtin_ia32_psubusw256_mask">, 5661 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5662 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5663 def int_x86_avx512_mask_psubus_w_512 : GCCBuiltin<"__builtin_ia32_psubusw512_mask">, 5664 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5665 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5666 def int_x86_avx512_mask_psub_d_128 : GCCBuiltin<"__builtin_ia32_psubd128_mask">, 5667 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5668 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 5669 def int_x86_avx512_mask_psub_d_256 : GCCBuiltin<"__builtin_ia32_psubd256_mask">, 5670 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5671 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 5672 def int_x86_avx512_mask_psub_d_512 : GCCBuiltin<"__builtin_ia32_psubd512_mask">, 5673 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5674 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 5675 def int_x86_avx512_mask_psub_q_128 : GCCBuiltin<"__builtin_ia32_psubq128_mask">, 5676 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 5677 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 5678 def int_x86_avx512_mask_psub_q_256 : GCCBuiltin<"__builtin_ia32_psubq256_mask">, 5679 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 5680 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 5681 def int_x86_avx512_mask_psub_q_512 : GCCBuiltin<"__builtin_ia32_psubq512_mask">, 5682 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 5683 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 5684 def int_x86_avx512_mask_pmulu_dq_128 : GCCBuiltin<"__builtin_ia32_pmuludq128_mask">, 5685 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5686 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 5687 def int_x86_avx512_mask_pmul_dq_128 : GCCBuiltin<"__builtin_ia32_pmuldq128_mask">, 5688 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5689 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 5690 def int_x86_avx512_mask_pmulu_dq_256 : GCCBuiltin<"__builtin_ia32_pmuludq256_mask">, 5691 Intrinsic<[llvm_v4i64_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5692 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 5693 def int_x86_avx512_mask_pmul_dq_256 : GCCBuiltin<"__builtin_ia32_pmuldq256_mask">, 5694 Intrinsic<[llvm_v4i64_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5695 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 5696 def int_x86_avx512_mask_pmulu_dq_512 : GCCBuiltin<"__builtin_ia32_pmuludq512_mask">, 5697 Intrinsic<[llvm_v8i64_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5698 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 5699 def int_x86_avx512_mask_pmul_dq_512 : GCCBuiltin<"__builtin_ia32_pmuldq512_mask">, 5700 Intrinsic<[llvm_v8i64_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5701 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 5702 def int_x86_avx512_mask_pmull_w_128 : GCCBuiltin<"__builtin_ia32_pmullw128_mask">, 5703 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5704 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5705 def int_x86_avx512_mask_pmull_w_256 : GCCBuiltin<"__builtin_ia32_pmullw256_mask">, 5706 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5707 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5708 def int_x86_avx512_mask_pmull_w_512 : GCCBuiltin<"__builtin_ia32_pmullw512_mask">, 5709 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5710 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5711 def int_x86_avx512_mask_pmull_d_128 : GCCBuiltin<"__builtin_ia32_pmulld128_mask">, 5712 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5713 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 5714 def int_x86_avx512_mask_pmull_d_256 : GCCBuiltin<"__builtin_ia32_pmulld256_mask">, 5715 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5716 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 5717 def int_x86_avx512_mask_pmull_d_512 : GCCBuiltin<"__builtin_ia32_pmulld512_mask">, 5718 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5719 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 5720 def int_x86_avx512_mask_pmull_q_128 : GCCBuiltin<"__builtin_ia32_pmullq128_mask">, 5721 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 5722 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 5723 def int_x86_avx512_mask_pmull_q_256 : GCCBuiltin<"__builtin_ia32_pmullq256_mask">, 5724 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 5725 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 5726 def int_x86_avx512_mask_pmull_q_512 : GCCBuiltin<"__builtin_ia32_pmullq512_mask">, 5727 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 5728 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 5729 def int_x86_avx512_mask_pmulhu_w_512 : GCCBuiltin<"__builtin_ia32_pmulhuw512_mask">, 5730 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5731 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5732 def int_x86_avx512_mask_pmulh_w_512 : GCCBuiltin<"__builtin_ia32_pmulhw512_mask">, 5733 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5734 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5735 def int_x86_avx512_mask_pmulhu_w_128 : GCCBuiltin<"__builtin_ia32_pmulhuw128_mask">, 5736 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5737 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5738 def int_x86_avx512_mask_pmulhu_w_256 : GCCBuiltin<"__builtin_ia32_pmulhuw256_mask">, 5739 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5740 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5741 def int_x86_avx512_mask_pmulh_w_128 : GCCBuiltin<"__builtin_ia32_pmulhw128_mask">, 5742 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5743 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5744 def int_x86_avx512_mask_pmulh_w_256 : GCCBuiltin<"__builtin_ia32_pmulhw256_mask">, 5745 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5746 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5747 def int_x86_avx512_mask_pavg_b_512 : GCCBuiltin<"__builtin_ia32_pavgb512_mask">, 5748 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 5749 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 5750 def int_x86_avx512_mask_pavg_w_512 : GCCBuiltin<"__builtin_ia32_pavgw512_mask">, 5751 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5752 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5753 def int_x86_avx512_mask_pavg_b_128 : GCCBuiltin<"__builtin_ia32_pavgb128_mask">, 5754 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 5755 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 5756 def int_x86_avx512_mask_pavg_b_256 : GCCBuiltin<"__builtin_ia32_pavgb256_mask">, 5757 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 5758 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 5759 def int_x86_avx512_mask_pavg_w_128 : GCCBuiltin<"__builtin_ia32_pavgw128_mask">, 5760 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5761 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5762 def int_x86_avx512_mask_pavg_w_256 : GCCBuiltin<"__builtin_ia32_pavgw256_mask">, 5763 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5764 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5765 def int_x86_avx512_mask_pmaddw_d_128 : 5766 GCCBuiltin<"__builtin_ia32_pmaddwd128_mask">, 5767 Intrinsic<[llvm_v4i32_ty], 5768 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty, llvm_i8_ty], 5769 [IntrNoMem]>; 5770 def int_x86_avx512_mask_pmaddw_d_256 : 5771 GCCBuiltin<"__builtin_ia32_pmaddwd256_mask">, 5772 Intrinsic<[llvm_v8i32_ty], 5773 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v8i32_ty, llvm_i8_ty], 5774 [IntrNoMem]>; 5775 def int_x86_avx512_mask_pmaddw_d_512 : 5776 GCCBuiltin<"__builtin_ia32_pmaddwd512_mask">, 5777 Intrinsic<[llvm_v16i32_ty], 5778 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v16i32_ty, llvm_i16_ty], 5779 [IntrNoMem]>; 5780 def int_x86_avx512_mask_pmaddubs_w_128 : 5781 GCCBuiltin<"__builtin_ia32_pmaddubsw128_mask">, 5782 Intrinsic<[llvm_v8i16_ty], 5783 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v8i16_ty, llvm_i8_ty], 5784 [IntrNoMem]>; 5785 def int_x86_avx512_mask_pmaddubs_w_256 : 5786 GCCBuiltin<"__builtin_ia32_pmaddubsw256_mask">, 5787 Intrinsic<[llvm_v16i16_ty], 5788 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_v16i16_ty, llvm_i16_ty], 5789 [IntrNoMem]>; 5790 def int_x86_avx512_mask_pmaddubs_w_512 : 5791 GCCBuiltin<"__builtin_ia32_pmaddubsw512_mask">, 5792 Intrinsic<[llvm_v32i16_ty], 5793 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_v32i16_ty, llvm_i32_ty], 5794 [IntrNoMem]>; 5795 5796 def int_x86_avx512_mask_dbpsadbw_128 : 5797 GCCBuiltin<"__builtin_ia32_dbpsadbw128_mask">, 5798 Intrinsic<[llvm_v8i16_ty], 5799 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty, llvm_v8i16_ty, 5800 llvm_i8_ty], [IntrNoMem]>; 5801 5802 def int_x86_avx512_mask_dbpsadbw_256 : 5803 GCCBuiltin<"__builtin_ia32_dbpsadbw256_mask">, 5804 Intrinsic<[llvm_v16i16_ty], 5805 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty, llvm_v16i16_ty, 5806 llvm_i16_ty], [IntrNoMem]>; 5807 5808 def int_x86_avx512_mask_dbpsadbw_512 : 5809 GCCBuiltin<"__builtin_ia32_dbpsadbw512_mask">, 5810 Intrinsic<[llvm_v32i16_ty], 5811 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i32_ty, llvm_v32i16_ty, 5812 llvm_i32_ty], [IntrNoMem]>; 5813} 5814 5815// Gather and Scatter ops 5816let TargetPrefix = "x86" in { 5817 def int_x86_avx512_gather_dpd_512 : GCCBuiltin<"__builtin_ia32_gathersiv8df">, 5818 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty, 5819 llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5820 [IntrReadArgMem]>; 5821 def int_x86_avx512_gather_dps_512 : GCCBuiltin<"__builtin_ia32_gathersiv16sf">, 5822 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_ptr_ty, 5823 llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 5824 [IntrReadArgMem]>; 5825 def int_x86_avx512_gather_qpd_512 : GCCBuiltin<"__builtin_ia32_gatherdiv8df">, 5826 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty, 5827 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5828 [IntrReadArgMem]>; 5829 def int_x86_avx512_gather_qps_512 : GCCBuiltin<"__builtin_ia32_gatherdiv16sf">, 5830 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_ptr_ty, 5831 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5832 [IntrReadArgMem]>; 5833 5834 5835 def int_x86_avx512_gather_dpq_512 : GCCBuiltin<"__builtin_ia32_gathersiv8di">, 5836 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty, 5837 llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5838 [IntrReadArgMem]>; 5839 def int_x86_avx512_gather_dpi_512 : GCCBuiltin<"__builtin_ia32_gathersiv16si">, 5840 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_ptr_ty, 5841 llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 5842 [IntrReadArgMem]>; 5843 def int_x86_avx512_gather_qpq_512 : GCCBuiltin<"__builtin_ia32_gatherdiv8di">, 5844 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty, 5845 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5846 [IntrReadArgMem]>; 5847 def int_x86_avx512_gather_qpi_512 : GCCBuiltin<"__builtin_ia32_gatherdiv16si">, 5848 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_ptr_ty, 5849 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5850 [IntrReadArgMem]>; 5851 5852 def int_x86_avx512_gather3div2_df : 5853 GCCBuiltin<"__builtin_ia32_gather3div2df">, 5854 Intrinsic<[llvm_v2f64_ty], 5855 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 5856 [IntrReadArgMem]>; 5857 5858 def int_x86_avx512_gather3div2_di : 5859 GCCBuiltin<"__builtin_ia32_gather3div2di">, 5860 Intrinsic<[llvm_v4i32_ty], 5861 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 5862 [IntrReadArgMem]>; 5863 5864 def int_x86_avx512_gather3div4_df : 5865 GCCBuiltin<"__builtin_ia32_gather3div4df">, 5866 Intrinsic<[llvm_v4f64_ty], 5867 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5868 [IntrReadArgMem]>; 5869 5870 def int_x86_avx512_gather3div4_di : 5871 GCCBuiltin<"__builtin_ia32_gather3div4di">, 5872 Intrinsic<[llvm_v8i32_ty], 5873 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5874 [IntrReadArgMem]>; 5875 5876 def int_x86_avx512_gather3div4_sf : 5877 GCCBuiltin<"__builtin_ia32_gather3div4sf">, 5878 Intrinsic<[llvm_v4f32_ty], 5879 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 5880 [IntrReadArgMem]>; 5881 5882 def int_x86_avx512_gather3div4_si : 5883 GCCBuiltin<"__builtin_ia32_gather3div4si">, 5884 Intrinsic<[llvm_v4i32_ty], 5885 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 5886 [IntrReadArgMem]>; 5887 5888 def int_x86_avx512_gather3div8_sf : 5889 GCCBuiltin<"__builtin_ia32_gather3div8sf">, 5890 Intrinsic<[llvm_v4f32_ty], 5891 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5892 [IntrReadArgMem]>; 5893 5894 def int_x86_avx512_gather3div8_si : 5895 GCCBuiltin<"__builtin_ia32_gather3div8si">, 5896 Intrinsic<[llvm_v4i32_ty], 5897 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5898 [IntrReadArgMem]>; 5899 5900 def int_x86_avx512_gather3siv2_df : 5901 GCCBuiltin<"__builtin_ia32_gather3siv2df">, 5902 Intrinsic<[llvm_v2f64_ty], 5903 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5904 [IntrReadArgMem]>; 5905 5906 def int_x86_avx512_gather3siv2_di : 5907 GCCBuiltin<"__builtin_ia32_gather3siv2di">, 5908 Intrinsic<[llvm_v4i32_ty], 5909 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5910 [IntrReadArgMem]>; 5911 5912 def int_x86_avx512_gather3siv4_df : 5913 GCCBuiltin<"__builtin_ia32_gather3siv4df">, 5914 Intrinsic<[llvm_v4f64_ty], 5915 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5916 [IntrReadArgMem]>; 5917 5918 def int_x86_avx512_gather3siv4_di : 5919 GCCBuiltin<"__builtin_ia32_gather3siv4di">, 5920 Intrinsic<[llvm_v8i32_ty], 5921 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5922 [IntrReadArgMem]>; 5923 5924 def int_x86_avx512_gather3siv4_sf : 5925 GCCBuiltin<"__builtin_ia32_gather3siv4sf">, 5926 Intrinsic<[llvm_v4f32_ty], 5927 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5928 [IntrReadArgMem]>; 5929 5930 def int_x86_avx512_gather3siv4_si : 5931 GCCBuiltin<"__builtin_ia32_gather3siv4si">, 5932 Intrinsic<[llvm_v4i32_ty], 5933 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5934 [IntrReadArgMem]>; 5935 5936 def int_x86_avx512_gather3siv8_sf : 5937 GCCBuiltin<"__builtin_ia32_gather3siv8sf">, 5938 Intrinsic<[llvm_v8f32_ty], 5939 [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5940 [IntrReadArgMem]>; 5941 5942 def int_x86_avx512_gather3siv8_si : 5943 GCCBuiltin<"__builtin_ia32_gather3siv8si">, 5944 Intrinsic<[llvm_v8i32_ty], 5945 [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5946 [IntrReadArgMem]>; 5947 5948// scatter 5949 def int_x86_avx512_scatter_dpd_512 : GCCBuiltin<"__builtin_ia32_scattersiv8df">, 5950 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 5951 llvm_v8i32_ty, llvm_v8f64_ty, llvm_i32_ty], 5952 [IntrReadWriteArgMem]>; 5953 def int_x86_avx512_scatter_dps_512 : GCCBuiltin<"__builtin_ia32_scattersiv16sf">, 5954 Intrinsic<[], [llvm_ptr_ty, llvm_i16_ty, 5955 llvm_v16i32_ty, llvm_v16f32_ty, llvm_i32_ty], 5956 [IntrReadWriteArgMem]>; 5957 def int_x86_avx512_scatter_qpd_512 : GCCBuiltin<"__builtin_ia32_scatterdiv8df">, 5958 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 5959 llvm_v8i64_ty, llvm_v8f64_ty, llvm_i32_ty], 5960 [IntrReadWriteArgMem]>; 5961 def int_x86_avx512_scatter_qps_512 : GCCBuiltin<"__builtin_ia32_scatterdiv16sf">, 5962 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 5963 llvm_v8i64_ty, llvm_v8f32_ty, llvm_i32_ty], 5964 [IntrReadWriteArgMem]>; 5965 5966 5967 def int_x86_avx512_scatter_dpq_512 : GCCBuiltin<"__builtin_ia32_scattersiv8di">, 5968 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 5969 llvm_v8i32_ty, llvm_v8i64_ty, llvm_i32_ty], 5970 [IntrReadWriteArgMem]>; 5971 def int_x86_avx512_scatter_dpi_512 : GCCBuiltin<"__builtin_ia32_scattersiv16si">, 5972 Intrinsic<[], [llvm_ptr_ty, llvm_i16_ty, 5973 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty], 5974 [IntrReadWriteArgMem]>; 5975 def int_x86_avx512_scatter_qpq_512 : GCCBuiltin<"__builtin_ia32_scatterdiv8di">, 5976 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,llvm_v8i64_ty, llvm_v8i64_ty, 5977 llvm_i32_ty], 5978 [IntrReadWriteArgMem]>; 5979 def int_x86_avx512_scatter_qpi_512 : GCCBuiltin<"__builtin_ia32_scatterdiv16si">, 5980 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, llvm_v8i64_ty, llvm_v8i32_ty, 5981 llvm_i32_ty], 5982 [IntrReadWriteArgMem]>; 5983 5984 def int_x86_avx512_scatterdiv2_df : 5985 GCCBuiltin<"__builtin_ia32_scatterdiv2df">, 5986 Intrinsic<[], 5987 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i32_ty], 5988 [IntrReadWriteArgMem]>; 5989 5990 def int_x86_avx512_scatterdiv2_di : 5991 GCCBuiltin<"__builtin_ia32_scatterdiv2di">, 5992 Intrinsic<[], 5993 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty], 5994 [IntrReadWriteArgMem]>; 5995 5996 def int_x86_avx512_scatterdiv4_df : 5997 GCCBuiltin<"__builtin_ia32_scatterdiv4df">, 5998 Intrinsic<[], 5999 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i32_ty], 6000 [IntrReadWriteArgMem]>; 6001 6002 def int_x86_avx512_scatterdiv4_di : 6003 GCCBuiltin<"__builtin_ia32_scatterdiv4di">, 6004 Intrinsic<[], 6005 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty], 6006 [IntrReadWriteArgMem]>; 6007 6008 def int_x86_avx512_scatterdiv4_sf : 6009 GCCBuiltin<"__builtin_ia32_scatterdiv4sf">, 6010 Intrinsic<[], 6011 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i32_ty], 6012 [IntrReadWriteArgMem]>; 6013 6014 def int_x86_avx512_scatterdiv4_si : 6015 GCCBuiltin<"__builtin_ia32_scatterdiv4si">, 6016 Intrinsic<[], 6017 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i32_ty], 6018 [IntrReadWriteArgMem]>; 6019 6020 def int_x86_avx512_scatterdiv8_sf : 6021 GCCBuiltin<"__builtin_ia32_scatterdiv8sf">, 6022 Intrinsic<[], 6023 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i32_ty], 6024 [IntrReadWriteArgMem]>; 6025 6026 def int_x86_avx512_scatterdiv8_si : 6027 GCCBuiltin<"__builtin_ia32_scatterdiv8si">, 6028 Intrinsic<[], 6029 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i32_ty], 6030 [IntrReadWriteArgMem]>; 6031 6032 def int_x86_avx512_scattersiv2_df : 6033 GCCBuiltin<"__builtin_ia32_scattersiv2df">, 6034 Intrinsic<[], 6035 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i32_ty], 6036 [IntrReadWriteArgMem]>; 6037 6038 def int_x86_avx512_scattersiv2_di : 6039 GCCBuiltin<"__builtin_ia32_scattersiv2di">, 6040 Intrinsic<[], 6041 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i32_ty], 6042 [IntrReadWriteArgMem]>; 6043 6044 def int_x86_avx512_scattersiv4_df : 6045 GCCBuiltin<"__builtin_ia32_scattersiv4df">, 6046 Intrinsic<[], 6047 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i32_ty], 6048 [IntrReadWriteArgMem]>; 6049 6050 def int_x86_avx512_scattersiv4_di : 6051 GCCBuiltin<"__builtin_ia32_scattersiv4di">, 6052 Intrinsic<[], 6053 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i32_ty], 6054 [IntrReadWriteArgMem]>; 6055 6056 def int_x86_avx512_scattersiv4_sf : 6057 GCCBuiltin<"__builtin_ia32_scattersiv4sf">, 6058 Intrinsic<[], 6059 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i32_ty], 6060 [IntrReadWriteArgMem]>; 6061 6062 def int_x86_avx512_scattersiv4_si : 6063 GCCBuiltin<"__builtin_ia32_scattersiv4si">, 6064 Intrinsic<[], 6065 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty], 6066 [IntrReadWriteArgMem]>; 6067 6068 def int_x86_avx512_scattersiv8_sf : 6069 GCCBuiltin<"__builtin_ia32_scattersiv8sf">, 6070 Intrinsic<[], 6071 [llvm_ptr_ty, llvm_i8_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i32_ty], 6072 [IntrReadWriteArgMem]>; 6073 6074 def int_x86_avx512_scattersiv8_si : 6075 GCCBuiltin<"__builtin_ia32_scattersiv8si">, 6076 Intrinsic<[], 6077 [llvm_ptr_ty, llvm_i8_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty], 6078 [IntrReadWriteArgMem]>; 6079 6080 // gather prefetch 6081 def int_x86_avx512_gatherpf_dpd_512 : GCCBuiltin<"__builtin_ia32_gatherpfdpd">, 6082 Intrinsic<[], [llvm_i8_ty, llvm_v8i32_ty, llvm_ptr_ty, 6083 llvm_i32_ty, llvm_i32_ty], [IntrReadWriteArgMem]>; 6084 def int_x86_avx512_gatherpf_dps_512 : GCCBuiltin<"__builtin_ia32_gatherpfdps">, 6085 Intrinsic<[], [llvm_i16_ty, llvm_v16i32_ty, llvm_ptr_ty, 6086 llvm_i32_ty, llvm_i32_ty], [IntrReadWriteArgMem]>; 6087 def int_x86_avx512_gatherpf_qpd_512 : GCCBuiltin<"__builtin_ia32_gatherpfqpd">, 6088 Intrinsic<[], [llvm_i8_ty, llvm_v8i64_ty, llvm_ptr_ty, 6089 llvm_i32_ty, llvm_i32_ty], [IntrReadWriteArgMem]>; 6090 def int_x86_avx512_gatherpf_qps_512 : GCCBuiltin<"__builtin_ia32_gatherpfqps">, 6091 Intrinsic<[], [llvm_i8_ty, llvm_v8i64_ty, llvm_ptr_ty, 6092 llvm_i32_ty, llvm_i32_ty], [IntrReadWriteArgMem]>; 6093 6094 // scatter prefetch 6095 def int_x86_avx512_scatterpf_dpd_512 : GCCBuiltin<"__builtin_ia32_scatterpfdpd">, 6096 Intrinsic<[], [llvm_i8_ty, llvm_v8i32_ty, llvm_ptr_ty, 6097 llvm_i32_ty, llvm_i32_ty], [IntrReadWriteArgMem]>; 6098 def int_x86_avx512_scatterpf_dps_512 : GCCBuiltin<"__builtin_ia32_scatterpfdps">, 6099 Intrinsic<[], [llvm_i16_ty, llvm_v16i32_ty, llvm_ptr_ty, 6100 llvm_i32_ty, llvm_i32_ty], [IntrReadWriteArgMem]>; 6101 def int_x86_avx512_scatterpf_qpd_512 : GCCBuiltin<"__builtin_ia32_scatterpfqpd">, 6102 Intrinsic<[], [llvm_i8_ty, llvm_v8i64_ty, llvm_ptr_ty, 6103 llvm_i32_ty, llvm_i32_ty], [IntrReadWriteArgMem]>; 6104 def int_x86_avx512_scatterpf_qps_512 : GCCBuiltin<"__builtin_ia32_scatterpfqps">, 6105 Intrinsic<[], [llvm_i8_ty, llvm_v8i64_ty, llvm_ptr_ty, 6106 llvm_i32_ty, llvm_i32_ty], [IntrReadWriteArgMem]>; 6107} 6108 6109// AVX-512 conflict detection instruction 6110// Instructions that count the number of leading zero bits 6111let TargetPrefix = "x86" in { 6112 def int_x86_avx512_mask_conflict_d_128 : 6113 GCCBuiltin<"__builtin_ia32_vpconflictsi_128_mask">, 6114 Intrinsic<[llvm_v4i32_ty], 6115 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 6116 [IntrNoMem]>; 6117 def int_x86_avx512_mask_conflict_d_256 : 6118 GCCBuiltin<"__builtin_ia32_vpconflictsi_256_mask">, 6119 Intrinsic<[llvm_v8i32_ty], 6120 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 6121 [IntrNoMem]>; 6122 def int_x86_avx512_mask_conflict_d_512 : 6123 GCCBuiltin<"__builtin_ia32_vpconflictsi_512_mask">, 6124 Intrinsic<[llvm_v16i32_ty], 6125 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 6126 [IntrNoMem]>; 6127 6128 def int_x86_avx512_mask_conflict_q_128 : 6129 GCCBuiltin<"__builtin_ia32_vpconflictdi_128_mask">, 6130 Intrinsic<[llvm_v2i64_ty], 6131 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 6132 [IntrNoMem]>; 6133 def int_x86_avx512_mask_conflict_q_256 : 6134 GCCBuiltin<"__builtin_ia32_vpconflictdi_256_mask">, 6135 Intrinsic<[llvm_v4i64_ty], 6136 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 6137 [IntrNoMem]>; 6138 def int_x86_avx512_mask_conflict_q_512 : 6139 GCCBuiltin<"__builtin_ia32_vpconflictdi_512_mask">, 6140 Intrinsic<[llvm_v8i64_ty], 6141 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 6142 [IntrNoMem]>; 6143 6144 def int_x86_avx512_mask_lzcnt_d_128 : 6145 GCCBuiltin<"__builtin_ia32_vplzcntd_128_mask">, 6146 Intrinsic<[llvm_v4i32_ty], 6147 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 6148 [IntrNoMem]>; 6149 def int_x86_avx512_mask_lzcnt_d_256 : 6150 GCCBuiltin<"__builtin_ia32_vplzcntd_256_mask">, 6151 Intrinsic<[llvm_v8i32_ty], 6152 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 6153 [IntrNoMem]>; 6154 def int_x86_avx512_mask_lzcnt_d_512 : 6155 GCCBuiltin<"__builtin_ia32_vplzcntd_512_mask">, 6156 Intrinsic<[llvm_v16i32_ty], 6157 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 6158 [IntrNoMem]>; 6159 6160 def int_x86_avx512_mask_lzcnt_q_128 : 6161 GCCBuiltin<"__builtin_ia32_vplzcntq_128_mask">, 6162 Intrinsic<[llvm_v2i64_ty], 6163 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 6164 [IntrNoMem]>; 6165 def int_x86_avx512_mask_lzcnt_q_256 : 6166 GCCBuiltin<"__builtin_ia32_vplzcntq_256_mask">, 6167 Intrinsic<[llvm_v4i64_ty], 6168 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 6169 [IntrNoMem]>; 6170 def int_x86_avx512_mask_lzcnt_q_512 : 6171 GCCBuiltin<"__builtin_ia32_vplzcntq_512_mask">, 6172 Intrinsic<[llvm_v8i64_ty], 6173 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 6174 [IntrNoMem]>; 6175} 6176 6177// Vector blend 6178let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 6179 def int_x86_avx512_mask_blend_ps_512 : GCCBuiltin<"__builtin_ia32_blendmps_512_mask">, 6180 Intrinsic<[llvm_v16f32_ty], 6181 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], 6182 [IntrNoMem]>; 6183 def int_x86_avx512_mask_blend_ps_256 : GCCBuiltin<"__builtin_ia32_blendmps_256_mask">, 6184 Intrinsic<[llvm_v8f32_ty], 6185 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 6186 [IntrNoMem]>; 6187 def int_x86_avx512_mask_blend_ps_128 : GCCBuiltin<"__builtin_ia32_blendmps_128_mask">, 6188 Intrinsic<[llvm_v4f32_ty], 6189 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 6190 [IntrNoMem]>; 6191 def int_x86_avx512_mask_blend_pd_512 : GCCBuiltin<"__builtin_ia32_blendmpd_512_mask">, 6192 Intrinsic<[llvm_v8f64_ty], 6193 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty], 6194 [IntrNoMem]>; 6195 def int_x86_avx512_mask_blend_pd_256 : GCCBuiltin<"__builtin_ia32_blendmpd_256_mask">, 6196 Intrinsic<[llvm_v4f64_ty], 6197 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 6198 [IntrNoMem]>; 6199 def int_x86_avx512_mask_blend_pd_128 : GCCBuiltin<"__builtin_ia32_blendmpd_128_mask">, 6200 Intrinsic<[llvm_v2f64_ty], 6201 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 6202 [IntrNoMem]>; 6203 6204 def int_x86_avx512_mask_blend_d_512 : GCCBuiltin<"__builtin_ia32_blendmd_512_mask">, 6205 Intrinsic<[llvm_v16i32_ty], 6206 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 6207 [IntrNoMem]>; 6208 def int_x86_avx512_mask_blend_q_512 : GCCBuiltin<"__builtin_ia32_blendmq_512_mask">, 6209 Intrinsic<[llvm_v8i64_ty], 6210 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 6211 [IntrNoMem]>; 6212 def int_x86_avx512_mask_blend_d_256 : GCCBuiltin<"__builtin_ia32_blendmd_256_mask">, 6213 Intrinsic<[llvm_v8i32_ty], 6214 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 6215 [IntrNoMem]>; 6216 def int_x86_avx512_mask_blend_q_256 : GCCBuiltin<"__builtin_ia32_blendmq_256_mask">, 6217 Intrinsic<[llvm_v4i64_ty], 6218 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 6219 [IntrNoMem]>; 6220 def int_x86_avx512_mask_blend_d_128 : GCCBuiltin<"__builtin_ia32_blendmd_128_mask">, 6221 Intrinsic<[llvm_v4i32_ty], 6222 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 6223 [IntrNoMem]>; 6224 def int_x86_avx512_mask_blend_q_128 : GCCBuiltin<"__builtin_ia32_blendmq_128_mask">, 6225 Intrinsic<[llvm_v2i64_ty], 6226 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 6227 [IntrNoMem]>; 6228 6229 def int_x86_avx512_mask_blend_w_512 : GCCBuiltin<"__builtin_ia32_blendmw_512_mask">, 6230 Intrinsic<[llvm_v32i16_ty], 6231 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 6232 [IntrNoMem]>; 6233 def int_x86_avx512_mask_blend_w_256 : GCCBuiltin<"__builtin_ia32_blendmw_256_mask">, 6234 Intrinsic<[llvm_v16i16_ty], 6235 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 6236 [IntrNoMem]>; 6237 def int_x86_avx512_mask_blend_w_128 : GCCBuiltin<"__builtin_ia32_blendmw_128_mask">, 6238 Intrinsic<[llvm_v8i16_ty], 6239 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 6240 [IntrNoMem]>; 6241 def int_x86_avx512_mask_blend_b_512 : GCCBuiltin<"__builtin_ia32_blendmb_512_mask">, 6242 Intrinsic<[llvm_v64i8_ty], 6243 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 6244 [IntrNoMem]>; 6245 def int_x86_avx512_mask_blend_b_256 : GCCBuiltin<"__builtin_ia32_blendmb_256_mask">, 6246 Intrinsic<[llvm_v32i8_ty], 6247 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 6248 [IntrNoMem]>; 6249 def int_x86_avx512_mask_blend_b_128 : GCCBuiltin<"__builtin_ia32_blendmb_128_mask">, 6250 Intrinsic<[llvm_v16i8_ty], 6251 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 6252 [IntrNoMem]>; 6253 6254} 6255 6256let TargetPrefix = "x86" in { 6257 def int_x86_avx512_mask_valign_q_512 : 6258 GCCBuiltin<"__builtin_ia32_alignq512_mask">, 6259 Intrinsic<[llvm_v8i64_ty], 6260 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, llvm_v8i64_ty, 6261 llvm_i8_ty], [IntrNoMem]>; 6262 6263 def int_x86_avx512_mask_valign_d_512 : 6264 GCCBuiltin<"__builtin_ia32_alignd512_mask">, 6265 Intrinsic<[llvm_v16i32_ty], 6266 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, llvm_v16i32_ty, 6267 llvm_i16_ty], [IntrNoMem]>; 6268 6269 def int_x86_avx512_mask_valign_q_256 : 6270 GCCBuiltin<"__builtin_ia32_alignq256_mask">, 6271 Intrinsic<[llvm_v4i64_ty], 6272 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_v4i64_ty, 6273 llvm_i8_ty], [IntrNoMem]>; 6274 6275 def int_x86_avx512_mask_valign_d_256 : 6276 GCCBuiltin<"__builtin_ia32_alignd256_mask">, 6277 Intrinsic<[llvm_v8i32_ty], 6278 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_v8i32_ty, 6279 llvm_i8_ty], [IntrNoMem]>; 6280 6281 def int_x86_avx512_mask_valign_q_128 : 6282 GCCBuiltin<"__builtin_ia32_alignq128_mask">, 6283 Intrinsic<[llvm_v2i64_ty], 6284 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_v2i64_ty, 6285 llvm_i8_ty], [IntrNoMem]>; 6286 6287 def int_x86_avx512_mask_valign_d_128 : 6288 GCCBuiltin<"__builtin_ia32_alignd128_mask">, 6289 Intrinsic<[llvm_v4i32_ty], 6290 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_v4i32_ty, 6291 llvm_i8_ty], [IntrNoMem]>; 6292 6293 def int_x86_avx512_mask_palignr_128 : 6294 GCCBuiltin<"__builtin_ia32_palignr128_mask">, 6295 Intrinsic<[llvm_v16i8_ty], 6296 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, 6297 llvm_i16_ty], [IntrNoMem]>; 6298 6299 def int_x86_avx512_mask_palignr_256 : 6300 GCCBuiltin<"__builtin_ia32_palignr256_mask">, 6301 Intrinsic<[llvm_v32i8_ty], 6302 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty, llvm_v32i8_ty, 6303 llvm_i32_ty], [IntrNoMem]>; 6304 6305 def int_x86_avx512_mask_palignr_512 : 6306 GCCBuiltin<"__builtin_ia32_palignr512_mask">, 6307 Intrinsic<[llvm_v64i8_ty], 6308 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i32_ty, llvm_v64i8_ty, 6309 llvm_i64_ty], [IntrNoMem]>; 6310} 6311 6312// Compares 6313let TargetPrefix = "x86" in { 6314 // 512-bit 6315 def int_x86_avx512_vcomi_sd : GCCBuiltin<"__builtin_ia32_vcomisd">, 6316 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 6317 llvm_v2f64_ty, llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 6318 def int_x86_avx512_vcomi_ss : GCCBuiltin<"__builtin_ia32_vcomiss">, 6319 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 6320 llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 6321 def int_x86_avx512_mask_pcmpeq_b_512 : GCCBuiltin<"__builtin_ia32_pcmpeqb512_mask">, 6322 Intrinsic<[llvm_i64_ty], [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 6323 [IntrNoMem]>; 6324 def int_x86_avx512_mask_pcmpeq_w_512 : GCCBuiltin<"__builtin_ia32_pcmpeqw512_mask">, 6325 Intrinsic<[llvm_i32_ty], [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 6326 [IntrNoMem]>; 6327 def int_x86_avx512_mask_pcmpeq_d_512 : GCCBuiltin<"__builtin_ia32_pcmpeqd512_mask">, 6328 Intrinsic<[llvm_i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 6329 [IntrNoMem]>; 6330 def int_x86_avx512_mask_pcmpeq_q_512 : GCCBuiltin<"__builtin_ia32_pcmpeqq512_mask">, 6331 Intrinsic<[llvm_i8_ty], [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 6332 [IntrNoMem]>; 6333 6334 def int_x86_avx512_mask_pcmpgt_b_512: GCCBuiltin<"__builtin_ia32_pcmpgtb512_mask">, 6335 Intrinsic<[llvm_i64_ty], [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 6336 [IntrNoMem]>; 6337 def int_x86_avx512_mask_pcmpgt_w_512: GCCBuiltin<"__builtin_ia32_pcmpgtw512_mask">, 6338 Intrinsic<[llvm_i32_ty], [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 6339 [IntrNoMem]>; 6340 def int_x86_avx512_mask_pcmpgt_d_512: GCCBuiltin<"__builtin_ia32_pcmpgtd512_mask">, 6341 Intrinsic<[llvm_i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 6342 [IntrNoMem]>; 6343 def int_x86_avx512_mask_pcmpgt_q_512: GCCBuiltin<"__builtin_ia32_pcmpgtq512_mask">, 6344 Intrinsic<[llvm_i8_ty], [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 6345 [IntrNoMem]>; 6346 6347 def int_x86_avx512_mask_cmp_b_512: GCCBuiltin<"__builtin_ia32_cmpb512_mask">, 6348 Intrinsic<[llvm_i64_ty], [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i32_ty, 6349 llvm_i64_ty], [IntrNoMem]>; 6350 def int_x86_avx512_mask_cmp_w_512: GCCBuiltin<"__builtin_ia32_cmpw512_mask">, 6351 Intrinsic<[llvm_i32_ty], [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty, 6352 llvm_i32_ty], [IntrNoMem]>; 6353 def int_x86_avx512_mask_cmp_d_512: GCCBuiltin<"__builtin_ia32_cmpd512_mask">, 6354 Intrinsic<[llvm_i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, 6355 llvm_i16_ty], [IntrNoMem ]>; 6356 def int_x86_avx512_mask_cmp_q_512: GCCBuiltin<"__builtin_ia32_cmpq512_mask">, 6357 Intrinsic<[llvm_i8_ty], [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, 6358 llvm_i8_ty], [IntrNoMem]>; 6359 6360 def int_x86_avx512_mask_ucmp_b_512: GCCBuiltin<"__builtin_ia32_ucmpb512_mask">, 6361 Intrinsic<[llvm_i64_ty], [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i32_ty, 6362 llvm_i64_ty], [IntrNoMem]>; 6363 def int_x86_avx512_mask_ucmp_w_512: GCCBuiltin<"__builtin_ia32_ucmpw512_mask">, 6364 Intrinsic<[llvm_i32_ty], [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty, 6365 llvm_i32_ty], [IntrNoMem]>; 6366 def int_x86_avx512_mask_ucmp_d_512: GCCBuiltin<"__builtin_ia32_ucmpd512_mask">, 6367 Intrinsic<[llvm_i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, 6368 llvm_i16_ty], [IntrNoMem]>; 6369 def int_x86_avx512_mask_ucmp_q_512: GCCBuiltin<"__builtin_ia32_ucmpq512_mask">, 6370 Intrinsic<[llvm_i8_ty], [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, 6371 llvm_i8_ty], [IntrNoMem]>; 6372 6373 // 256-bit 6374 def int_x86_avx512_mask_pcmpeq_b_256 : GCCBuiltin<"__builtin_ia32_pcmpeqb256_mask">, 6375 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 6376 [IntrNoMem]>; 6377 def int_x86_avx512_mask_pcmpeq_w_256 : GCCBuiltin<"__builtin_ia32_pcmpeqw256_mask">, 6378 Intrinsic<[llvm_i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 6379 [IntrNoMem]>; 6380 def int_x86_avx512_mask_pcmpeq_d_256 : GCCBuiltin<"__builtin_ia32_pcmpeqd256_mask">, 6381 Intrinsic<[llvm_i8_ty], [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 6382 [IntrNoMem]>; 6383 def int_x86_avx512_mask_pcmpeq_q_256 : GCCBuiltin<"__builtin_ia32_pcmpeqq256_mask">, 6384 Intrinsic<[llvm_i8_ty], [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 6385 [IntrNoMem]>; 6386 6387 def int_x86_avx512_mask_pcmpgt_b_256: GCCBuiltin<"__builtin_ia32_pcmpgtb256_mask">, 6388 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 6389 [IntrNoMem]>; 6390 def int_x86_avx512_mask_pcmpgt_w_256: GCCBuiltin<"__builtin_ia32_pcmpgtw256_mask">, 6391 Intrinsic<[llvm_i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 6392 [IntrNoMem]>; 6393 def int_x86_avx512_mask_pcmpgt_d_256: GCCBuiltin<"__builtin_ia32_pcmpgtd256_mask">, 6394 Intrinsic<[llvm_i8_ty], [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 6395 [IntrNoMem]>; 6396 def int_x86_avx512_mask_pcmpgt_q_256: GCCBuiltin<"__builtin_ia32_pcmpgtq256_mask">, 6397 Intrinsic<[llvm_i8_ty], [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 6398 [IntrNoMem]>; 6399 6400 def int_x86_avx512_mask_cmp_b_256: GCCBuiltin<"__builtin_ia32_cmpb256_mask">, 6401 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty, 6402 llvm_i32_ty], [IntrNoMem]>; 6403 def int_x86_avx512_mask_cmp_w_256: GCCBuiltin<"__builtin_ia32_cmpw256_mask">, 6404 Intrinsic<[llvm_i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i32_ty, 6405 llvm_i16_ty], [IntrNoMem]>; 6406 def int_x86_avx512_mask_cmp_d_256: GCCBuiltin<"__builtin_ia32_cmpd256_mask">, 6407 Intrinsic<[llvm_i8_ty], [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, 6408 llvm_i8_ty], [IntrNoMem]>; 6409 def int_x86_avx512_mask_cmp_q_256: GCCBuiltin<"__builtin_ia32_cmpq256_mask">, 6410 Intrinsic<[llvm_i8_ty], [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, 6411 llvm_i8_ty], [IntrNoMem]>; 6412 6413 def int_x86_avx512_mask_ucmp_b_256: GCCBuiltin<"__builtin_ia32_ucmpb256_mask">, 6414 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty, 6415 llvm_i32_ty], [IntrNoMem]>; 6416 def int_x86_avx512_mask_ucmp_w_256: GCCBuiltin<"__builtin_ia32_ucmpw256_mask">, 6417 Intrinsic<[llvm_i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i32_ty, 6418 llvm_i16_ty], [IntrNoMem]>; 6419 def int_x86_avx512_mask_ucmp_d_256: GCCBuiltin<"__builtin_ia32_ucmpd256_mask">, 6420 Intrinsic<[llvm_i8_ty], [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, 6421 llvm_i8_ty], [IntrNoMem]>; 6422 def int_x86_avx512_mask_ucmp_q_256: GCCBuiltin<"__builtin_ia32_ucmpq256_mask">, 6423 Intrinsic<[llvm_i8_ty], [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, 6424 llvm_i8_ty], [IntrNoMem]>; 6425 6426 // 128-bit 6427 def int_x86_avx512_mask_pcmpeq_b_128 : GCCBuiltin<"__builtin_ia32_pcmpeqb128_mask">, 6428 Intrinsic<[llvm_i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 6429 [IntrNoMem]>; 6430 def int_x86_avx512_mask_pcmpeq_w_128 : GCCBuiltin<"__builtin_ia32_pcmpeqw128_mask">, 6431 Intrinsic<[llvm_i8_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 6432 [IntrNoMem]>; 6433 def int_x86_avx512_mask_pcmpeq_d_128 : GCCBuiltin<"__builtin_ia32_pcmpeqd128_mask">, 6434 Intrinsic<[llvm_i8_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 6435 [IntrNoMem]>; 6436 def int_x86_avx512_mask_pcmpeq_q_128 : GCCBuiltin<"__builtin_ia32_pcmpeqq128_mask">, 6437 Intrinsic<[llvm_i8_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 6438 [IntrNoMem]>; 6439 6440 def int_x86_avx512_mask_pcmpgt_b_128: GCCBuiltin<"__builtin_ia32_pcmpgtb128_mask">, 6441 Intrinsic<[llvm_i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 6442 [IntrNoMem]>; 6443 def int_x86_avx512_mask_pcmpgt_w_128: GCCBuiltin<"__builtin_ia32_pcmpgtw128_mask">, 6444 Intrinsic<[llvm_i8_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 6445 [IntrNoMem]>; 6446 def int_x86_avx512_mask_pcmpgt_d_128: GCCBuiltin<"__builtin_ia32_pcmpgtd128_mask">, 6447 Intrinsic<[llvm_i8_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 6448 [IntrNoMem]>; 6449 def int_x86_avx512_mask_pcmpgt_q_128: GCCBuiltin<"__builtin_ia32_pcmpgtq128_mask">, 6450 Intrinsic<[llvm_i8_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 6451 [IntrNoMem]>; 6452 6453 def int_x86_avx512_mask_cmp_b_128: GCCBuiltin<"__builtin_ia32_cmpb128_mask">, 6454 Intrinsic<[llvm_i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty, 6455 llvm_i16_ty], [IntrNoMem]>; 6456 def int_x86_avx512_mask_cmp_w_128: GCCBuiltin<"__builtin_ia32_cmpw128_mask">, 6457 Intrinsic<[llvm_i8_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty, 6458 llvm_i8_ty], [IntrNoMem]>; 6459 def int_x86_avx512_mask_cmp_d_128: GCCBuiltin<"__builtin_ia32_cmpd128_mask">, 6460 Intrinsic<[llvm_i8_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty, 6461 llvm_i8_ty], [IntrNoMem]>; 6462 def int_x86_avx512_mask_cmp_q_128: GCCBuiltin<"__builtin_ia32_cmpq128_mask">, 6463 Intrinsic<[llvm_i8_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty, 6464 llvm_i8_ty], [IntrNoMem]>; 6465 6466 def int_x86_avx512_mask_ucmp_b_128: GCCBuiltin<"__builtin_ia32_ucmpb128_mask">, 6467 Intrinsic<[llvm_i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty, 6468 llvm_i16_ty], [IntrNoMem]>; 6469 def int_x86_avx512_mask_ucmp_w_128: GCCBuiltin<"__builtin_ia32_ucmpw128_mask">, 6470 Intrinsic<[llvm_i8_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty, 6471 llvm_i8_ty], [IntrNoMem]>; 6472 def int_x86_avx512_mask_ucmp_d_128: GCCBuiltin<"__builtin_ia32_ucmpd128_mask">, 6473 Intrinsic<[llvm_i8_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty, 6474 llvm_i8_ty], [IntrNoMem]>; 6475 def int_x86_avx512_mask_ucmp_q_128: GCCBuiltin<"__builtin_ia32_ucmpq128_mask">, 6476 Intrinsic<[llvm_i8_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty, 6477 llvm_i8_ty], [IntrNoMem]>; 6478} 6479 6480// Compress, Expand 6481let TargetPrefix = "x86" in { 6482 def int_x86_avx512_mask_compress_ps_512 : 6483 GCCBuiltin<"__builtin_ia32_compresssf512_mask">, 6484 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 6485 llvm_i16_ty], [IntrNoMem]>; 6486 def int_x86_avx512_mask_compress_pd_512 : 6487 GCCBuiltin<"__builtin_ia32_compressdf512_mask">, 6488 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 6489 llvm_i8_ty], [IntrNoMem]>; 6490 def int_x86_avx512_mask_compress_ps_256 : 6491 GCCBuiltin<"__builtin_ia32_compresssf256_mask">, 6492 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 6493 llvm_i8_ty], [IntrNoMem]>; 6494 def int_x86_avx512_mask_compress_pd_256 : 6495 GCCBuiltin<"__builtin_ia32_compressdf256_mask">, 6496 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 6497 llvm_i8_ty], [IntrNoMem]>; 6498 def int_x86_avx512_mask_compress_ps_128 : 6499 GCCBuiltin<"__builtin_ia32_compresssf128_mask">, 6500 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 6501 llvm_i8_ty], [IntrNoMem]>; 6502 def int_x86_avx512_mask_compress_pd_128 : 6503 GCCBuiltin<"__builtin_ia32_compressdf128_mask">, 6504 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 6505 llvm_i8_ty], [IntrNoMem]>; 6506 6507 def int_x86_avx512_mask_compress_store_ps_512 : 6508 GCCBuiltin<"__builtin_ia32_compressstoresf512_mask">, 6509 Intrinsic<[], [llvm_ptr_ty, llvm_v16f32_ty, 6510 llvm_i16_ty], [IntrReadWriteArgMem]>; 6511 def int_x86_avx512_mask_compress_store_pd_512 : 6512 GCCBuiltin<"__builtin_ia32_compressstoredf512_mask">, 6513 Intrinsic<[], [llvm_ptr_ty, llvm_v8f64_ty, 6514 llvm_i8_ty], [IntrReadWriteArgMem]>; 6515 def int_x86_avx512_mask_compress_store_ps_256 : 6516 GCCBuiltin<"__builtin_ia32_compressstoresf256_mask">, 6517 Intrinsic<[], [llvm_ptr_ty, llvm_v8f32_ty, 6518 llvm_i8_ty], [IntrReadWriteArgMem]>; 6519 def int_x86_avx512_mask_compress_store_pd_256 : 6520 GCCBuiltin<"__builtin_ia32_compressstoredf256_mask">, 6521 Intrinsic<[], [llvm_ptr_ty, llvm_v4f64_ty, 6522 llvm_i8_ty], [IntrReadWriteArgMem]>; 6523 def int_x86_avx512_mask_compress_store_ps_128 : 6524 GCCBuiltin<"__builtin_ia32_compressstoresf128_mask">, 6525 Intrinsic<[], [llvm_ptr_ty, llvm_v4f32_ty, 6526 llvm_i8_ty], [IntrReadWriteArgMem]>; 6527 def int_x86_avx512_mask_compress_store_pd_128 : 6528 GCCBuiltin<"__builtin_ia32_compressstoredf128_mask">, 6529 Intrinsic<[], [llvm_ptr_ty, llvm_v2f64_ty, 6530 llvm_i8_ty], [IntrReadWriteArgMem]>; 6531 6532 def int_x86_avx512_mask_compress_d_512 : 6533 GCCBuiltin<"__builtin_ia32_compresssi512_mask">, 6534 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 6535 llvm_i16_ty], [IntrNoMem]>; 6536 def int_x86_avx512_mask_compress_q_512 : 6537 GCCBuiltin<"__builtin_ia32_compressdi512_mask">, 6538 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 6539 llvm_i8_ty], [IntrNoMem]>; 6540 def int_x86_avx512_mask_compress_d_256 : 6541 GCCBuiltin<"__builtin_ia32_compresssi256_mask">, 6542 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 6543 llvm_i8_ty], [IntrNoMem]>; 6544 def int_x86_avx512_mask_compress_q_256 : 6545 GCCBuiltin<"__builtin_ia32_compressdi256_mask">, 6546 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 6547 llvm_i8_ty], [IntrNoMem]>; 6548 def int_x86_avx512_mask_compress_d_128 : 6549 GCCBuiltin<"__builtin_ia32_compresssi128_mask">, 6550 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 6551 llvm_i8_ty], [IntrNoMem]>; 6552 def int_x86_avx512_mask_compress_q_128 : 6553 GCCBuiltin<"__builtin_ia32_compressdi128_mask">, 6554 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 6555 llvm_i8_ty], [IntrNoMem]>; 6556 6557 def int_x86_avx512_mask_compress_store_d_512 : 6558 GCCBuiltin<"__builtin_ia32_compressstoresi512_mask">, 6559 Intrinsic<[], [llvm_ptr_ty, llvm_v16i32_ty, 6560 llvm_i16_ty], [IntrReadWriteArgMem]>; 6561 def int_x86_avx512_mask_compress_store_q_512 : 6562 GCCBuiltin<"__builtin_ia32_compressstoredi512_mask">, 6563 Intrinsic<[], [llvm_ptr_ty, llvm_v8i64_ty, 6564 llvm_i8_ty], [IntrReadWriteArgMem]>; 6565 def int_x86_avx512_mask_compress_store_d_256 : 6566 GCCBuiltin<"__builtin_ia32_compressstoresi256_mask">, 6567 Intrinsic<[], [llvm_ptr_ty, llvm_v8i32_ty, 6568 llvm_i8_ty], [IntrReadWriteArgMem]>; 6569 def int_x86_avx512_mask_compress_store_q_256 : 6570 GCCBuiltin<"__builtin_ia32_compressstoredi256_mask">, 6571 Intrinsic<[], [llvm_ptr_ty, llvm_v4i64_ty, 6572 llvm_i8_ty], [IntrReadWriteArgMem]>; 6573 def int_x86_avx512_mask_compress_store_d_128 : 6574 GCCBuiltin<"__builtin_ia32_compressstoresi128_mask">, 6575 Intrinsic<[], [llvm_ptr_ty, llvm_v4i32_ty, 6576 llvm_i8_ty], [IntrReadWriteArgMem]>; 6577 def int_x86_avx512_mask_compress_store_q_128 : 6578 GCCBuiltin<"__builtin_ia32_compressstoredi128_mask">, 6579 Intrinsic<[], [llvm_ptr_ty, llvm_v2i64_ty, 6580 llvm_i8_ty], [IntrReadWriteArgMem]>; 6581 6582// expand 6583 def int_x86_avx512_mask_expand_ps_512 : 6584 GCCBuiltin<"__builtin_ia32_expandsf512_mask">, 6585 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 6586 llvm_i16_ty], [IntrNoMem]>; 6587 def int_x86_avx512_mask_expand_pd_512 : 6588 GCCBuiltin<"__builtin_ia32_expanddf512_mask">, 6589 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 6590 llvm_i8_ty], [IntrNoMem]>; 6591 def int_x86_avx512_mask_expand_ps_256 : 6592 GCCBuiltin<"__builtin_ia32_expandsf256_mask">, 6593 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 6594 llvm_i8_ty], [IntrNoMem]>; 6595 def int_x86_avx512_mask_expand_pd_256 : 6596 GCCBuiltin<"__builtin_ia32_expanddf256_mask">, 6597 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 6598 llvm_i8_ty], [IntrNoMem]>; 6599 def int_x86_avx512_mask_expand_ps_128 : 6600 GCCBuiltin<"__builtin_ia32_expandsf128_mask">, 6601 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 6602 llvm_i8_ty], [IntrNoMem]>; 6603 def int_x86_avx512_mask_expand_pd_128 : 6604 GCCBuiltin<"__builtin_ia32_expanddf128_mask">, 6605 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 6606 llvm_i8_ty], [IntrNoMem]>; 6607 6608 def int_x86_avx512_mask_expand_load_ps_512 : 6609 GCCBuiltin<"__builtin_ia32_expandloadsf512_mask">, 6610 Intrinsic<[llvm_v16f32_ty], [llvm_ptr_ty, llvm_v16f32_ty, 6611 llvm_i16_ty], [IntrReadArgMem]>; 6612 def int_x86_avx512_mask_expand_load_pd_512 : 6613 GCCBuiltin<"__builtin_ia32_expandloaddf512_mask">, 6614 Intrinsic<[llvm_v8f64_ty], [llvm_ptr_ty, llvm_v8f64_ty, 6615 llvm_i8_ty], [IntrReadArgMem]>; 6616 def int_x86_avx512_mask_expand_load_ps_256 : 6617 GCCBuiltin<"__builtin_ia32_expandloadsf256_mask">, 6618 Intrinsic<[llvm_v8f32_ty], [llvm_ptr_ty, llvm_v8f32_ty, 6619 llvm_i8_ty], [IntrReadArgMem]>; 6620 def int_x86_avx512_mask_expand_load_pd_256 : 6621 GCCBuiltin<"__builtin_ia32_expandloaddf256_mask">, 6622 Intrinsic<[llvm_v4f64_ty], [llvm_ptr_ty, llvm_v4f64_ty, 6623 llvm_i8_ty], [IntrReadArgMem]>; 6624 def int_x86_avx512_mask_expand_load_ps_128 : 6625 GCCBuiltin<"__builtin_ia32_expandloadsf128_mask">, 6626 Intrinsic<[llvm_v4f32_ty], [llvm_ptr_ty, llvm_v4f32_ty, 6627 llvm_i8_ty], [IntrReadArgMem]>; 6628 def int_x86_avx512_mask_expand_load_pd_128 : 6629 GCCBuiltin<"__builtin_ia32_expandloaddf128_mask">, 6630 Intrinsic<[llvm_v2f64_ty], [llvm_ptr_ty, llvm_v2f64_ty, 6631 llvm_i8_ty], [IntrReadArgMem]>; 6632 6633 def int_x86_avx512_mask_expand_d_512 : 6634 GCCBuiltin<"__builtin_ia32_expandsi512_mask">, 6635 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 6636 llvm_i16_ty], [IntrNoMem]>; 6637 def int_x86_avx512_mask_expand_q_512 : 6638 GCCBuiltin<"__builtin_ia32_expanddi512_mask">, 6639 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 6640 llvm_i8_ty], [IntrNoMem]>; 6641 def int_x86_avx512_mask_expand_d_256 : 6642 GCCBuiltin<"__builtin_ia32_expandsi256_mask">, 6643 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 6644 llvm_i8_ty], [IntrNoMem]>; 6645 def int_x86_avx512_mask_expand_q_256 : 6646 GCCBuiltin<"__builtin_ia32_expanddi256_mask">, 6647 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 6648 llvm_i8_ty], [IntrNoMem]>; 6649 def int_x86_avx512_mask_expand_d_128 : 6650 GCCBuiltin<"__builtin_ia32_expandsi128_mask">, 6651 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 6652 llvm_i8_ty], [IntrNoMem]>; 6653 def int_x86_avx512_mask_expand_q_128 : 6654 GCCBuiltin<"__builtin_ia32_expanddi128_mask">, 6655 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 6656 llvm_i8_ty], [IntrNoMem]>; 6657 6658 def int_x86_avx512_mask_expand_load_d_512 : 6659 GCCBuiltin<"__builtin_ia32_expandloadsi512_mask">, 6660 Intrinsic<[llvm_v16i32_ty], [llvm_ptr_ty, llvm_v16i32_ty, 6661 llvm_i16_ty], [IntrReadArgMem]>; 6662 def int_x86_avx512_mask_expand_load_q_512 : 6663 GCCBuiltin<"__builtin_ia32_expandloaddi512_mask">, 6664 Intrinsic<[llvm_v8i64_ty], [llvm_ptr_ty, llvm_v8i64_ty, 6665 llvm_i8_ty], [IntrReadArgMem]>; 6666 def int_x86_avx512_mask_expand_load_d_256 : 6667 GCCBuiltin<"__builtin_ia32_expandloadsi256_mask">, 6668 Intrinsic<[llvm_v8i32_ty], [llvm_ptr_ty, llvm_v8i32_ty, 6669 llvm_i8_ty], [IntrReadArgMem]>; 6670 def int_x86_avx512_mask_expand_load_q_256 : 6671 GCCBuiltin<"__builtin_ia32_expandloaddi256_mask">, 6672 Intrinsic<[llvm_v4i64_ty], [llvm_ptr_ty, llvm_v4i64_ty, 6673 llvm_i8_ty], [IntrReadArgMem]>; 6674 def int_x86_avx512_mask_expand_load_d_128 : 6675 GCCBuiltin<"__builtin_ia32_expandloadsi128_mask">, 6676 Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_v4i32_ty, 6677 llvm_i8_ty], [IntrReadArgMem]>; 6678 def int_x86_avx512_mask_expand_load_q_128 : 6679 GCCBuiltin<"__builtin_ia32_expandloaddi128_mask">, 6680 Intrinsic<[llvm_v2i64_ty], [llvm_ptr_ty, llvm_v2i64_ty, 6681 llvm_i8_ty], [IntrReadArgMem]>; 6682 6683} 6684 6685// truncate 6686let TargetPrefix = "x86" in { 6687 def int_x86_avx512_mask_pmov_qb_128 : 6688 GCCBuiltin<"__builtin_ia32_pmovqb128_mask">, 6689 Intrinsic<[llvm_v16i8_ty], 6690 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty], 6691 [IntrNoMem]>; 6692 def int_x86_avx512_mask_pmov_qb_mem_128 : 6693 GCCBuiltin<"__builtin_ia32_pmovqb128mem_mask">, 6694 Intrinsic<[], 6695 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 6696 [IntrReadWriteArgMem]>; 6697 def int_x86_avx512_mask_pmovs_qb_128 : 6698 GCCBuiltin<"__builtin_ia32_pmovsqb128_mask">, 6699 Intrinsic<[llvm_v16i8_ty], 6700 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty], 6701 [IntrNoMem]>; 6702 def int_x86_avx512_mask_pmovs_qb_mem_128 : 6703 GCCBuiltin<"__builtin_ia32_pmovsqb128mem_mask">, 6704 Intrinsic<[], 6705 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 6706 [IntrReadWriteArgMem]>; 6707 def int_x86_avx512_mask_pmovus_qb_128 : 6708 GCCBuiltin<"__builtin_ia32_pmovusqb128_mask">, 6709 Intrinsic<[llvm_v16i8_ty], 6710 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty], 6711 [IntrNoMem]>; 6712 def int_x86_avx512_mask_pmovus_qb_mem_128 : 6713 GCCBuiltin<"__builtin_ia32_pmovusqb128mem_mask">, 6714 Intrinsic<[], 6715 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 6716 [IntrReadWriteArgMem]>; 6717 def int_x86_avx512_mask_pmov_qb_256 : 6718 GCCBuiltin<"__builtin_ia32_pmovqb256_mask">, 6719 Intrinsic<[llvm_v16i8_ty], 6720 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty], 6721 [IntrNoMem]>; 6722 def int_x86_avx512_mask_pmov_qb_mem_256 : 6723 GCCBuiltin<"__builtin_ia32_pmovqb256mem_mask">, 6724 Intrinsic<[], 6725 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 6726 [IntrReadWriteArgMem]>; 6727 def int_x86_avx512_mask_pmovs_qb_256 : 6728 GCCBuiltin<"__builtin_ia32_pmovsqb256_mask">, 6729 Intrinsic<[llvm_v16i8_ty], 6730 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty], 6731 [IntrNoMem]>; 6732 def int_x86_avx512_mask_pmovs_qb_mem_256 : 6733 GCCBuiltin<"__builtin_ia32_pmovsqb256mem_mask">, 6734 Intrinsic<[], 6735 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 6736 [IntrReadWriteArgMem]>; 6737 def int_x86_avx512_mask_pmovus_qb_256 : 6738 GCCBuiltin<"__builtin_ia32_pmovusqb256_mask">, 6739 Intrinsic<[llvm_v16i8_ty], 6740 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty], 6741 [IntrNoMem]>; 6742 def int_x86_avx512_mask_pmovus_qb_mem_256 : 6743 GCCBuiltin<"__builtin_ia32_pmovusqb256mem_mask">, 6744 Intrinsic<[], 6745 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 6746 [IntrReadWriteArgMem]>; 6747 def int_x86_avx512_mask_pmov_qb_512 : 6748 GCCBuiltin<"__builtin_ia32_pmovqb512_mask">, 6749 Intrinsic<[llvm_v16i8_ty], 6750 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty], 6751 [IntrNoMem]>; 6752 def int_x86_avx512_mask_pmov_qb_mem_512 : 6753 GCCBuiltin<"__builtin_ia32_pmovqb512mem_mask">, 6754 Intrinsic<[], 6755 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 6756 [IntrReadWriteArgMem]>; 6757 def int_x86_avx512_mask_pmovs_qb_512 : 6758 GCCBuiltin<"__builtin_ia32_pmovsqb512_mask">, 6759 Intrinsic<[llvm_v16i8_ty], 6760 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty], 6761 [IntrNoMem]>; 6762 def int_x86_avx512_mask_pmovs_qb_mem_512 : 6763 GCCBuiltin<"__builtin_ia32_pmovsqb512mem_mask">, 6764 Intrinsic<[], 6765 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 6766 [IntrReadWriteArgMem]>; 6767 def int_x86_avx512_mask_pmovus_qb_512 : 6768 GCCBuiltin<"__builtin_ia32_pmovusqb512_mask">, 6769 Intrinsic<[llvm_v16i8_ty], 6770 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty], 6771 [IntrNoMem]>; 6772 def int_x86_avx512_mask_pmovus_qb_mem_512 : 6773 GCCBuiltin<"__builtin_ia32_pmovusqb512mem_mask">, 6774 Intrinsic<[], 6775 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 6776 [IntrReadWriteArgMem]>; 6777 def int_x86_avx512_mask_pmov_qw_128 : 6778 GCCBuiltin<"__builtin_ia32_pmovqw128_mask">, 6779 Intrinsic<[llvm_v8i16_ty], 6780 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty], 6781 [IntrNoMem]>; 6782 def int_x86_avx512_mask_pmov_qw_mem_128 : 6783 GCCBuiltin<"__builtin_ia32_pmovqw128mem_mask">, 6784 Intrinsic<[], 6785 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 6786 [IntrReadWriteArgMem]>; 6787 def int_x86_avx512_mask_pmovs_qw_128 : 6788 GCCBuiltin<"__builtin_ia32_pmovsqw128_mask">, 6789 Intrinsic<[llvm_v8i16_ty], 6790 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty], 6791 [IntrNoMem]>; 6792 def int_x86_avx512_mask_pmovs_qw_mem_128 : 6793 GCCBuiltin<"__builtin_ia32_pmovsqw128mem_mask">, 6794 Intrinsic<[], 6795 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 6796 [IntrReadWriteArgMem]>; 6797 def int_x86_avx512_mask_pmovus_qw_128 : 6798 GCCBuiltin<"__builtin_ia32_pmovusqw128_mask">, 6799 Intrinsic<[llvm_v8i16_ty], 6800 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty], 6801 [IntrNoMem]>; 6802 def int_x86_avx512_mask_pmovus_qw_mem_128 : 6803 GCCBuiltin<"__builtin_ia32_pmovusqw128mem_mask">, 6804 Intrinsic<[], 6805 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 6806 [IntrReadWriteArgMem]>; 6807 def int_x86_avx512_mask_pmov_qw_256 : 6808 GCCBuiltin<"__builtin_ia32_pmovqw256_mask">, 6809 Intrinsic<[llvm_v8i16_ty], 6810 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty], 6811 [IntrNoMem]>; 6812 def int_x86_avx512_mask_pmov_qw_mem_256 : 6813 GCCBuiltin<"__builtin_ia32_pmovqw256mem_mask">, 6814 Intrinsic<[], 6815 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 6816 [IntrReadWriteArgMem]>; 6817 def int_x86_avx512_mask_pmovs_qw_256 : 6818 GCCBuiltin<"__builtin_ia32_pmovsqw256_mask">, 6819 Intrinsic<[llvm_v8i16_ty], 6820 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty], 6821 [IntrNoMem]>; 6822 def int_x86_avx512_mask_pmovs_qw_mem_256 : 6823 GCCBuiltin<"__builtin_ia32_pmovsqw256mem_mask">, 6824 Intrinsic<[], 6825 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 6826 [IntrReadWriteArgMem]>; 6827 def int_x86_avx512_mask_pmovus_qw_256 : 6828 GCCBuiltin<"__builtin_ia32_pmovusqw256_mask">, 6829 Intrinsic<[llvm_v8i16_ty], 6830 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty], 6831 [IntrNoMem]>; 6832 def int_x86_avx512_mask_pmovus_qw_mem_256 : 6833 GCCBuiltin<"__builtin_ia32_pmovusqw256mem_mask">, 6834 Intrinsic<[], 6835 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 6836 [IntrReadWriteArgMem]>; 6837 def int_x86_avx512_mask_pmov_qw_512 : 6838 GCCBuiltin<"__builtin_ia32_pmovqw512_mask">, 6839 Intrinsic<[llvm_v8i16_ty], 6840 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty], 6841 [IntrNoMem]>; 6842 def int_x86_avx512_mask_pmov_qw_mem_512 : 6843 GCCBuiltin<"__builtin_ia32_pmovqw512mem_mask">, 6844 Intrinsic<[], 6845 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 6846 [IntrReadWriteArgMem]>; 6847 def int_x86_avx512_mask_pmovs_qw_512 : 6848 GCCBuiltin<"__builtin_ia32_pmovsqw512_mask">, 6849 Intrinsic<[llvm_v8i16_ty], 6850 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty], 6851 [IntrNoMem]>; 6852 def int_x86_avx512_mask_pmovs_qw_mem_512 : 6853 GCCBuiltin<"__builtin_ia32_pmovsqw512mem_mask">, 6854 Intrinsic<[], 6855 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 6856 [IntrReadWriteArgMem]>; 6857 def int_x86_avx512_mask_pmovus_qw_512 : 6858 GCCBuiltin<"__builtin_ia32_pmovusqw512_mask">, 6859 Intrinsic<[llvm_v8i16_ty], 6860 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty], 6861 [IntrNoMem]>; 6862 def int_x86_avx512_mask_pmovus_qw_mem_512 : 6863 GCCBuiltin<"__builtin_ia32_pmovusqw512mem_mask">, 6864 Intrinsic<[], 6865 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 6866 [IntrReadWriteArgMem]>; 6867 def int_x86_avx512_mask_pmov_qd_128 : 6868 GCCBuiltin<"__builtin_ia32_pmovqd128_mask">, 6869 Intrinsic<[llvm_v4i32_ty], 6870 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 6871 [IntrNoMem]>; 6872 def int_x86_avx512_mask_pmov_qd_mem_128 : 6873 GCCBuiltin<"__builtin_ia32_pmovqd128mem_mask">, 6874 Intrinsic<[], 6875 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 6876 [IntrReadWriteArgMem]>; 6877 def int_x86_avx512_mask_pmovs_qd_128 : 6878 GCCBuiltin<"__builtin_ia32_pmovsqd128_mask">, 6879 Intrinsic<[llvm_v4i32_ty], 6880 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 6881 [IntrNoMem]>; 6882 def int_x86_avx512_mask_pmovs_qd_mem_128 : 6883 GCCBuiltin<"__builtin_ia32_pmovsqd128mem_mask">, 6884 Intrinsic<[], 6885 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 6886 [IntrReadWriteArgMem]>; 6887 def int_x86_avx512_mask_pmovus_qd_128 : 6888 GCCBuiltin<"__builtin_ia32_pmovusqd128_mask">, 6889 Intrinsic<[llvm_v4i32_ty], 6890 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 6891 [IntrNoMem]>; 6892 def int_x86_avx512_mask_pmovus_qd_mem_128 : 6893 GCCBuiltin<"__builtin_ia32_pmovusqd128mem_mask">, 6894 Intrinsic<[], 6895 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 6896 [IntrReadWriteArgMem]>; 6897 def int_x86_avx512_mask_pmov_qd_256 : 6898 GCCBuiltin<"__builtin_ia32_pmovqd256_mask">, 6899 Intrinsic<[llvm_v4i32_ty], 6900 [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 6901 [IntrNoMem]>; 6902 def int_x86_avx512_mask_pmov_qd_mem_256 : 6903 GCCBuiltin<"__builtin_ia32_pmovqd256mem_mask">, 6904 Intrinsic<[], 6905 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 6906 [IntrReadWriteArgMem]>; 6907 def int_x86_avx512_mask_pmovs_qd_256 : 6908 GCCBuiltin<"__builtin_ia32_pmovsqd256_mask">, 6909 Intrinsic<[llvm_v4i32_ty], 6910 [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 6911 [IntrNoMem]>; 6912 def int_x86_avx512_mask_pmovs_qd_mem_256 : 6913 GCCBuiltin<"__builtin_ia32_pmovsqd256mem_mask">, 6914 Intrinsic<[], 6915 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 6916 [IntrReadWriteArgMem]>; 6917 def int_x86_avx512_mask_pmovus_qd_256 : 6918 GCCBuiltin<"__builtin_ia32_pmovusqd256_mask">, 6919 Intrinsic<[llvm_v4i32_ty], 6920 [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 6921 [IntrNoMem]>; 6922 def int_x86_avx512_mask_pmovus_qd_mem_256 : 6923 GCCBuiltin<"__builtin_ia32_pmovusqd256mem_mask">, 6924 Intrinsic<[], 6925 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 6926 [IntrReadWriteArgMem]>; 6927 def int_x86_avx512_mask_pmov_qd_512 : 6928 GCCBuiltin<"__builtin_ia32_pmovqd512_mask">, 6929 Intrinsic<[llvm_v8i32_ty], 6930 [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty], 6931 [IntrNoMem]>; 6932 def int_x86_avx512_mask_pmov_qd_mem_512 : 6933 GCCBuiltin<"__builtin_ia32_pmovqd512mem_mask">, 6934 Intrinsic<[], 6935 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 6936 [IntrReadWriteArgMem]>; 6937 def int_x86_avx512_mask_pmovs_qd_512 : 6938 GCCBuiltin<"__builtin_ia32_pmovsqd512_mask">, 6939 Intrinsic<[llvm_v8i32_ty], 6940 [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty], 6941 [IntrNoMem]>; 6942 def int_x86_avx512_mask_pmovs_qd_mem_512 : 6943 GCCBuiltin<"__builtin_ia32_pmovsqd512mem_mask">, 6944 Intrinsic<[], 6945 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 6946 [IntrReadWriteArgMem]>; 6947 def int_x86_avx512_mask_pmovus_qd_512 : 6948 GCCBuiltin<"__builtin_ia32_pmovusqd512_mask">, 6949 Intrinsic<[llvm_v8i32_ty], 6950 [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty], 6951 [IntrNoMem]>; 6952 def int_x86_avx512_mask_pmovus_qd_mem_512 : 6953 GCCBuiltin<"__builtin_ia32_pmovusqd512mem_mask">, 6954 Intrinsic<[], 6955 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 6956 [IntrReadWriteArgMem]>; 6957 def int_x86_avx512_mask_pmov_db_128 : 6958 GCCBuiltin<"__builtin_ia32_pmovdb128_mask">, 6959 Intrinsic<[llvm_v16i8_ty], 6960 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty], 6961 [IntrNoMem]>; 6962 def int_x86_avx512_mask_pmov_db_mem_128 : 6963 GCCBuiltin<"__builtin_ia32_pmovdb128mem_mask">, 6964 Intrinsic<[], 6965 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 6966 [IntrReadWriteArgMem]>; 6967 def int_x86_avx512_mask_pmovs_db_128 : 6968 GCCBuiltin<"__builtin_ia32_pmovsdb128_mask">, 6969 Intrinsic<[llvm_v16i8_ty], 6970 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty], 6971 [IntrNoMem]>; 6972 def int_x86_avx512_mask_pmovs_db_mem_128 : 6973 GCCBuiltin<"__builtin_ia32_pmovsdb128mem_mask">, 6974 Intrinsic<[], 6975 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 6976 [IntrReadWriteArgMem]>; 6977 def int_x86_avx512_mask_pmovus_db_128 : 6978 GCCBuiltin<"__builtin_ia32_pmovusdb128_mask">, 6979 Intrinsic<[llvm_v16i8_ty], 6980 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty], 6981 [IntrNoMem]>; 6982 def int_x86_avx512_mask_pmovus_db_mem_128 : 6983 GCCBuiltin<"__builtin_ia32_pmovusdb128mem_mask">, 6984 Intrinsic<[], 6985 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 6986 [IntrReadWriteArgMem]>; 6987 def int_x86_avx512_mask_pmov_db_256 : 6988 GCCBuiltin<"__builtin_ia32_pmovdb256_mask">, 6989 Intrinsic<[llvm_v16i8_ty], 6990 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty], 6991 [IntrNoMem]>; 6992 def int_x86_avx512_mask_pmov_db_mem_256 : 6993 GCCBuiltin<"__builtin_ia32_pmovdb256mem_mask">, 6994 Intrinsic<[], 6995 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 6996 [IntrReadWriteArgMem]>; 6997 def int_x86_avx512_mask_pmovs_db_256 : 6998 GCCBuiltin<"__builtin_ia32_pmovsdb256_mask">, 6999 Intrinsic<[llvm_v16i8_ty], 7000 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty], 7001 [IntrNoMem]>; 7002 def int_x86_avx512_mask_pmovs_db_mem_256 : 7003 GCCBuiltin<"__builtin_ia32_pmovsdb256mem_mask">, 7004 Intrinsic<[], 7005 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 7006 [IntrReadWriteArgMem]>; 7007 def int_x86_avx512_mask_pmovus_db_256 : 7008 GCCBuiltin<"__builtin_ia32_pmovusdb256_mask">, 7009 Intrinsic<[llvm_v16i8_ty], 7010 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty], 7011 [IntrNoMem]>; 7012 def int_x86_avx512_mask_pmovus_db_mem_256 : 7013 GCCBuiltin<"__builtin_ia32_pmovusdb256mem_mask">, 7014 Intrinsic<[], 7015 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 7016 [IntrReadWriteArgMem]>; 7017 def int_x86_avx512_mask_pmov_db_512 : 7018 GCCBuiltin<"__builtin_ia32_pmovdb512_mask">, 7019 Intrinsic<[llvm_v16i8_ty], 7020 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty], 7021 [IntrNoMem]>; 7022 def int_x86_avx512_mask_pmov_db_mem_512 : 7023 GCCBuiltin<"__builtin_ia32_pmovdb512mem_mask">, 7024 Intrinsic<[], 7025 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 7026 [IntrReadWriteArgMem]>; 7027 def int_x86_avx512_mask_pmovs_db_512 : 7028 GCCBuiltin<"__builtin_ia32_pmovsdb512_mask">, 7029 Intrinsic<[llvm_v16i8_ty], 7030 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty], 7031 [IntrNoMem]>; 7032 def int_x86_avx512_mask_pmovs_db_mem_512 : 7033 GCCBuiltin<"__builtin_ia32_pmovsdb512mem_mask">, 7034 Intrinsic<[], 7035 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 7036 [IntrReadWriteArgMem]>; 7037 def int_x86_avx512_mask_pmovus_db_512 : 7038 GCCBuiltin<"__builtin_ia32_pmovusdb512_mask">, 7039 Intrinsic<[llvm_v16i8_ty], 7040 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty], 7041 [IntrNoMem]>; 7042 def int_x86_avx512_mask_pmovus_db_mem_512 : 7043 GCCBuiltin<"__builtin_ia32_pmovusdb512mem_mask">, 7044 Intrinsic<[], 7045 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 7046 [IntrReadWriteArgMem]>; 7047 def int_x86_avx512_mask_pmov_dw_128 : 7048 GCCBuiltin<"__builtin_ia32_pmovdw128_mask">, 7049 Intrinsic<[llvm_v8i16_ty], 7050 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty], 7051 [IntrNoMem]>; 7052 def int_x86_avx512_mask_pmov_dw_mem_128 : 7053 GCCBuiltin<"__builtin_ia32_pmovdw128mem_mask">, 7054 Intrinsic<[], 7055 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 7056 [IntrReadWriteArgMem]>; 7057 def int_x86_avx512_mask_pmovs_dw_128 : 7058 GCCBuiltin<"__builtin_ia32_pmovsdw128_mask">, 7059 Intrinsic<[llvm_v8i16_ty], 7060 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty], 7061 [IntrNoMem]>; 7062 def int_x86_avx512_mask_pmovs_dw_mem_128 : 7063 GCCBuiltin<"__builtin_ia32_pmovsdw128mem_mask">, 7064 Intrinsic<[], 7065 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 7066 [IntrReadWriteArgMem]>; 7067 def int_x86_avx512_mask_pmovus_dw_128 : 7068 GCCBuiltin<"__builtin_ia32_pmovusdw128_mask">, 7069 Intrinsic<[llvm_v8i16_ty], 7070 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty], 7071 [IntrNoMem]>; 7072 def int_x86_avx512_mask_pmovus_dw_mem_128 : 7073 GCCBuiltin<"__builtin_ia32_pmovusdw128mem_mask">, 7074 Intrinsic<[], 7075 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 7076 [IntrReadWriteArgMem]>; 7077 def int_x86_avx512_mask_pmov_dw_256 : 7078 GCCBuiltin<"__builtin_ia32_pmovdw256_mask">, 7079 Intrinsic<[llvm_v8i16_ty], 7080 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty], 7081 [IntrNoMem]>; 7082 def int_x86_avx512_mask_pmov_dw_mem_256 : 7083 GCCBuiltin<"__builtin_ia32_pmovdw256mem_mask">, 7084 Intrinsic<[], 7085 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 7086 [IntrReadWriteArgMem]>; 7087 def int_x86_avx512_mask_pmovs_dw_256 : 7088 GCCBuiltin<"__builtin_ia32_pmovsdw256_mask">, 7089 Intrinsic<[llvm_v8i16_ty], 7090 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty], 7091 [IntrNoMem]>; 7092 def int_x86_avx512_mask_pmovs_dw_mem_256 : 7093 GCCBuiltin<"__builtin_ia32_pmovsdw256mem_mask">, 7094 Intrinsic<[], 7095 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 7096 [IntrReadWriteArgMem]>; 7097 def int_x86_avx512_mask_pmovus_dw_256 : 7098 GCCBuiltin<"__builtin_ia32_pmovusdw256_mask">, 7099 Intrinsic<[llvm_v8i16_ty], 7100 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty], 7101 [IntrNoMem]>; 7102 def int_x86_avx512_mask_pmovus_dw_mem_256 : 7103 GCCBuiltin<"__builtin_ia32_pmovusdw256mem_mask">, 7104 Intrinsic<[], 7105 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 7106 [IntrReadWriteArgMem]>; 7107 def int_x86_avx512_mask_pmov_dw_512 : 7108 GCCBuiltin<"__builtin_ia32_pmovdw512_mask">, 7109 Intrinsic<[llvm_v16i16_ty], 7110 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty], 7111 [IntrNoMem]>; 7112 def int_x86_avx512_mask_pmov_dw_mem_512 : 7113 GCCBuiltin<"__builtin_ia32_pmovdw512mem_mask">, 7114 Intrinsic<[], 7115 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 7116 [IntrReadWriteArgMem]>; 7117 def int_x86_avx512_mask_pmovs_dw_512 : 7118 GCCBuiltin<"__builtin_ia32_pmovsdw512_mask">, 7119 Intrinsic<[llvm_v16i16_ty], 7120 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty], 7121 [IntrNoMem]>; 7122 def int_x86_avx512_mask_pmovs_dw_mem_512 : 7123 GCCBuiltin<"__builtin_ia32_pmovsdw512mem_mask">, 7124 Intrinsic<[], 7125 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 7126 [IntrReadWriteArgMem]>; 7127 def int_x86_avx512_mask_pmovus_dw_512 : 7128 GCCBuiltin<"__builtin_ia32_pmovusdw512_mask">, 7129 Intrinsic<[llvm_v16i16_ty], 7130 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty], 7131 [IntrNoMem]>; 7132 def int_x86_avx512_mask_pmovus_dw_mem_512 : 7133 GCCBuiltin<"__builtin_ia32_pmovusdw512mem_mask">, 7134 Intrinsic<[], 7135 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 7136 [IntrReadWriteArgMem]>; 7137 def int_x86_avx512_mask_pmov_wb_128 : 7138 GCCBuiltin<"__builtin_ia32_pmovwb128_mask">, 7139 Intrinsic<[llvm_v16i8_ty], 7140 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty], 7141 [IntrNoMem]>; 7142 def int_x86_avx512_mask_pmov_wb_mem_128 : 7143 GCCBuiltin<"__builtin_ia32_pmovwb128mem_mask">, 7144 Intrinsic<[], 7145 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty], 7146 [IntrReadWriteArgMem]>; 7147 def int_x86_avx512_mask_pmovs_wb_128 : 7148 GCCBuiltin<"__builtin_ia32_pmovswb128_mask">, 7149 Intrinsic<[llvm_v16i8_ty], 7150 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty], 7151 [IntrNoMem]>; 7152 def int_x86_avx512_mask_pmovs_wb_mem_128 : 7153 GCCBuiltin<"__builtin_ia32_pmovswb128mem_mask">, 7154 Intrinsic<[], 7155 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty], 7156 [IntrReadWriteArgMem]>; 7157 def int_x86_avx512_mask_pmovus_wb_128 : 7158 GCCBuiltin<"__builtin_ia32_pmovuswb128_mask">, 7159 Intrinsic<[llvm_v16i8_ty], 7160 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty], 7161 [IntrNoMem]>; 7162 def int_x86_avx512_mask_pmovus_wb_mem_128 : 7163 GCCBuiltin<"__builtin_ia32_pmovuswb128mem_mask">, 7164 Intrinsic<[], 7165 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty], 7166 [IntrReadWriteArgMem]>; 7167 def int_x86_avx512_mask_pmov_wb_256 : 7168 GCCBuiltin<"__builtin_ia32_pmovwb256_mask">, 7169 Intrinsic<[llvm_v16i8_ty], 7170 [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty], 7171 [IntrNoMem]>; 7172 def int_x86_avx512_mask_pmov_wb_mem_256 : 7173 GCCBuiltin<"__builtin_ia32_pmovwb256mem_mask">, 7174 Intrinsic<[], 7175 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty], 7176 [IntrReadWriteArgMem]>; 7177 def int_x86_avx512_mask_pmovs_wb_256 : 7178 GCCBuiltin<"__builtin_ia32_pmovswb256_mask">, 7179 Intrinsic<[llvm_v16i8_ty], 7180 [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty], 7181 [IntrNoMem]>; 7182 def int_x86_avx512_mask_pmovs_wb_mem_256 : 7183 GCCBuiltin<"__builtin_ia32_pmovswb256mem_mask">, 7184 Intrinsic<[], 7185 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty], 7186 [IntrReadWriteArgMem]>; 7187 def int_x86_avx512_mask_pmovus_wb_256 : 7188 GCCBuiltin<"__builtin_ia32_pmovuswb256_mask">, 7189 Intrinsic<[llvm_v16i8_ty], 7190 [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty], 7191 [IntrNoMem]>; 7192 def int_x86_avx512_mask_pmovus_wb_mem_256 : 7193 GCCBuiltin<"__builtin_ia32_pmovuswb256mem_mask">, 7194 Intrinsic<[], 7195 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty], 7196 [IntrReadWriteArgMem]>; 7197 def int_x86_avx512_mask_pmov_wb_512 : 7198 GCCBuiltin<"__builtin_ia32_pmovwb512_mask">, 7199 Intrinsic<[llvm_v32i8_ty], 7200 [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty], 7201 [IntrNoMem]>; 7202 def int_x86_avx512_mask_pmov_wb_mem_512 : 7203 GCCBuiltin<"__builtin_ia32_pmovwb512mem_mask">, 7204 Intrinsic<[], 7205 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty], 7206 [IntrReadWriteArgMem]>; 7207 def int_x86_avx512_mask_pmovs_wb_512 : 7208 GCCBuiltin<"__builtin_ia32_pmovswb512_mask">, 7209 Intrinsic<[llvm_v32i8_ty], 7210 [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty], 7211 [IntrNoMem]>; 7212 def int_x86_avx512_mask_pmovs_wb_mem_512 : 7213 GCCBuiltin<"__builtin_ia32_pmovswb512mem_mask">, 7214 Intrinsic<[], 7215 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty], 7216 [IntrReadWriteArgMem]>; 7217 def int_x86_avx512_mask_pmovus_wb_512 : 7218 GCCBuiltin<"__builtin_ia32_pmovuswb512_mask">, 7219 Intrinsic<[llvm_v32i8_ty], 7220 [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty], 7221 [IntrNoMem]>; 7222 def int_x86_avx512_mask_pmovus_wb_mem_512 : 7223 GCCBuiltin<"__builtin_ia32_pmovuswb512mem_mask">, 7224 Intrinsic<[], 7225 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty], 7226 [IntrReadWriteArgMem]>; 7227} 7228 7229// Bitwise ternary logic 7230let TargetPrefix = "x86" in { 7231 def int_x86_avx512_mask_pternlog_d_128 : 7232 GCCBuiltin<"__builtin_ia32_pternlogd128_mask">, 7233 Intrinsic<[llvm_v4i32_ty], 7234 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty, 7235 llvm_i8_ty], [IntrNoMem]>; 7236 7237 def int_x86_avx512_maskz_pternlog_d_128 : 7238 GCCBuiltin<"__builtin_ia32_pternlogd128_maskz">, 7239 Intrinsic<[llvm_v4i32_ty], 7240 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty, 7241 llvm_i8_ty], [IntrNoMem]>; 7242 7243 def int_x86_avx512_mask_pternlog_d_256 : 7244 GCCBuiltin<"__builtin_ia32_pternlogd256_mask">, 7245 Intrinsic<[llvm_v8i32_ty], 7246 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, 7247 llvm_i8_ty], [IntrNoMem]>; 7248 7249 def int_x86_avx512_maskz_pternlog_d_256 : 7250 GCCBuiltin<"__builtin_ia32_pternlogd256_maskz">, 7251 Intrinsic<[llvm_v8i32_ty], 7252 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, 7253 llvm_i8_ty], [IntrNoMem]>; 7254 7255 def int_x86_avx512_mask_pternlog_d_512 : 7256 GCCBuiltin<"__builtin_ia32_pternlogd512_mask">, 7257 Intrinsic<[llvm_v16i32_ty], 7258 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, 7259 llvm_i16_ty], [IntrNoMem]>; 7260 7261 def int_x86_avx512_maskz_pternlog_d_512 : 7262 GCCBuiltin<"__builtin_ia32_pternlogd512_maskz">, 7263 Intrinsic<[llvm_v16i32_ty], 7264 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, 7265 llvm_i16_ty], [IntrNoMem]>; 7266 7267 def int_x86_avx512_mask_pternlog_q_128 : 7268 GCCBuiltin<"__builtin_ia32_pternlogq128_mask">, 7269 Intrinsic<[llvm_v2i64_ty], 7270 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty, 7271 llvm_i8_ty], [IntrNoMem]>; 7272 7273 def int_x86_avx512_maskz_pternlog_q_128 : 7274 GCCBuiltin<"__builtin_ia32_pternlogq128_maskz">, 7275 Intrinsic<[llvm_v2i64_ty], 7276 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty, 7277 llvm_i8_ty], [IntrNoMem]>; 7278 7279 def int_x86_avx512_mask_pternlog_q_256 : 7280 GCCBuiltin<"__builtin_ia32_pternlogq256_mask">, 7281 Intrinsic<[llvm_v4i64_ty], 7282 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, 7283 llvm_i8_ty], [IntrNoMem]>; 7284 7285 def int_x86_avx512_maskz_pternlog_q_256 : 7286 GCCBuiltin<"__builtin_ia32_pternlogq256_maskz">, 7287 Intrinsic<[llvm_v4i64_ty], 7288 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, 7289 llvm_i8_ty], [IntrNoMem]>; 7290 7291 def int_x86_avx512_mask_pternlog_q_512 : 7292 GCCBuiltin<"__builtin_ia32_pternlogq512_mask">, 7293 Intrinsic<[llvm_v8i64_ty], 7294 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, 7295 llvm_i8_ty], [IntrNoMem]>; 7296 7297 def int_x86_avx512_maskz_pternlog_q_512 : 7298 GCCBuiltin<"__builtin_ia32_pternlogq512_maskz">, 7299 Intrinsic<[llvm_v8i64_ty], 7300 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, 7301 llvm_i8_ty], [IntrNoMem]>; 7302} 7303 7304// Misc. 7305let TargetPrefix = "x86" in { 7306 def int_x86_avx512_mask_cmp_ps_512 : 7307 GCCBuiltin<"__builtin_ia32_cmpps512_mask">, 7308 Intrinsic<[llvm_i16_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 7309 llvm_i32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 7310 def int_x86_avx512_mask_cmp_pd_512 : 7311 GCCBuiltin<"__builtin_ia32_cmppd512_mask">, 7312 Intrinsic<[llvm_i8_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 7313 llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 7314 def int_x86_avx512_mask_cmp_ps_256 : 7315 GCCBuiltin<"__builtin_ia32_cmpps256_mask">, 7316 Intrinsic<[llvm_i8_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 7317 llvm_i32_ty, llvm_i8_ty], [IntrNoMem]>; 7318 def int_x86_avx512_mask_cmp_pd_256 : 7319 GCCBuiltin<"__builtin_ia32_cmppd256_mask">, 7320 Intrinsic<[llvm_i8_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 7321 llvm_i32_ty, llvm_i8_ty], [IntrNoMem]>; 7322 def int_x86_avx512_mask_cmp_ps_128 : 7323 GCCBuiltin<"__builtin_ia32_cmpps128_mask">, 7324 Intrinsic<[llvm_i8_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 7325 llvm_i32_ty, llvm_i8_ty], [IntrNoMem]>; 7326 def int_x86_avx512_mask_cmp_pd_128 : 7327 GCCBuiltin<"__builtin_ia32_cmppd128_mask">, 7328 Intrinsic<[llvm_i8_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 7329 llvm_i32_ty, llvm_i8_ty], [IntrNoMem]>; 7330 def int_x86_avx512_mask_cmp_ss : 7331 GCCBuiltin<"__builtin_ia32_cmpss_mask">, 7332 Intrinsic<[llvm_i8_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 7333 llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 7334 def int_x86_avx512_mask_cmp_sd : 7335 GCCBuiltin<"__builtin_ia32_cmpsd_mask">, 7336 Intrinsic<[llvm_i8_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 7337 llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 7338 7339 def int_x86_avx512_movntdqa : 7340 GCCBuiltin<"__builtin_ia32_movntdqa512">, 7341 Intrinsic<[llvm_v8i64_ty], [llvm_ptr_ty], [IntrReadMem]>; 7342} 7343 7344//===----------------------------------------------------------------------===// 7345// SHA intrinsics 7346let TargetPrefix = "x86" in { 7347 def int_x86_sha1rnds4 : GCCBuiltin<"__builtin_ia32_sha1rnds4">, 7348 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 7349 [IntrNoMem]>; 7350 def int_x86_sha1nexte : GCCBuiltin<"__builtin_ia32_sha1nexte">, 7351 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>; 7352 def int_x86_sha1msg1 : GCCBuiltin<"__builtin_ia32_sha1msg1">, 7353 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>; 7354 def int_x86_sha1msg2 : GCCBuiltin<"__builtin_ia32_sha1msg2">, 7355 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>; 7356 def int_x86_sha256rnds2 : GCCBuiltin<"__builtin_ia32_sha256rnds2">, 7357 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 7358 [IntrNoMem]>; 7359 def int_x86_sha256msg1 : GCCBuiltin<"__builtin_ia32_sha256msg1">, 7360 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>; 7361 def int_x86_sha256msg2 : GCCBuiltin<"__builtin_ia32_sha256msg2">, 7362 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>; 7363} 7364