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 16 let 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 22 let 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 // Marks the EH guard slot node created in LLVM IR prior to code generation. 29 def int_x86_seh_ehguard : Intrinsic<[], [llvm_ptr_ty], []>; 30 31 // Given a pointer to the end of an EH registration object, returns the true 32 // parent frame address that can be used with llvm.localrecover. 33 def int_x86_seh_recoverfp : Intrinsic<[llvm_ptr_ty], 34 [llvm_ptr_ty, llvm_ptr_ty], 35 [IntrNoMem]>; 36 } 37 38 //===----------------------------------------------------------------------===// 39 // FLAGS. 40 let TargetPrefix = "x86" in { 41 def int_x86_flags_read_u32 : GCCBuiltin<"__builtin_ia32_readeflags_u32">, 42 Intrinsic<[llvm_i32_ty], [], []>; 43 def int_x86_flags_read_u64 : GCCBuiltin<"__builtin_ia32_readeflags_u64">, 44 Intrinsic<[llvm_i64_ty], [], []>; 45 def int_x86_flags_write_u32 : GCCBuiltin<"__builtin_ia32_writeeflags_u32">, 46 Intrinsic<[], [llvm_i32_ty], []>; 47 def int_x86_flags_write_u64 : GCCBuiltin<"__builtin_ia32_writeeflags_u64">, 48 Intrinsic<[], [llvm_i64_ty], []>; 49 } 50 51 //===----------------------------------------------------------------------===// 52 // Read Time Stamp Counter. 53 let TargetPrefix = "x86" in { 54 def int_x86_rdtsc : GCCBuiltin<"__builtin_ia32_rdtsc">, 55 Intrinsic<[llvm_i64_ty], [], []>; 56 def int_x86_rdtscp : GCCBuiltin<"__builtin_ia32_rdtscp">, 57 Intrinsic<[llvm_i64_ty], [llvm_ptr_ty], [IntrArgMemOnly]>; 58 } 59 60 // Read Performance-Monitoring Counter. 61 let TargetPrefix = "x86" in { 62 def int_x86_rdpmc : GCCBuiltin<"__builtin_ia32_rdpmc">, 63 Intrinsic<[llvm_i64_ty], [llvm_i32_ty], []>; 64 } 65 66 //===----------------------------------------------------------------------===// 67 // 3DNow! 68 69 let TargetPrefix = "x86" in { 70 def int_x86_3dnow_pavgusb : GCCBuiltin<"__builtin_ia32_pavgusb">, 71 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 72 [IntrNoMem]>; 73 def int_x86_3dnow_pf2id : GCCBuiltin<"__builtin_ia32_pf2id">, 74 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 75 def int_x86_3dnow_pfacc : GCCBuiltin<"__builtin_ia32_pfacc">, 76 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 77 [IntrNoMem]>; 78 def int_x86_3dnow_pfadd : GCCBuiltin<"__builtin_ia32_pfadd">, 79 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 80 [IntrNoMem]>; 81 def int_x86_3dnow_pfcmpeq : GCCBuiltin<"__builtin_ia32_pfcmpeq">, 82 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 83 [IntrNoMem]>; 84 def int_x86_3dnow_pfcmpge : GCCBuiltin<"__builtin_ia32_pfcmpge">, 85 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 86 [IntrNoMem]>; 87 def int_x86_3dnow_pfcmpgt : GCCBuiltin<"__builtin_ia32_pfcmpgt">, 88 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 89 [IntrNoMem]>; 90 def int_x86_3dnow_pfmax : GCCBuiltin<"__builtin_ia32_pfmax">, 91 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 92 [IntrNoMem]>; 93 def int_x86_3dnow_pfmin : GCCBuiltin<"__builtin_ia32_pfmin">, 94 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 95 [IntrNoMem]>; 96 def int_x86_3dnow_pfmul : GCCBuiltin<"__builtin_ia32_pfmul">, 97 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 98 [IntrNoMem]>; 99 def int_x86_3dnow_pfrcp : GCCBuiltin<"__builtin_ia32_pfrcp">, 100 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 101 def int_x86_3dnow_pfrcpit1 : GCCBuiltin<"__builtin_ia32_pfrcpit1">, 102 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 103 [IntrNoMem]>; 104 def int_x86_3dnow_pfrcpit2 : GCCBuiltin<"__builtin_ia32_pfrcpit2">, 105 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 106 [IntrNoMem]>; 107 def int_x86_3dnow_pfrsqrt : GCCBuiltin<"__builtin_ia32_pfrsqrt">, 108 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 109 def int_x86_3dnow_pfrsqit1 : GCCBuiltin<"__builtin_ia32_pfrsqit1">, 110 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 111 [IntrNoMem]>; 112 def int_x86_3dnow_pfsub : GCCBuiltin<"__builtin_ia32_pfsub">, 113 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 114 [IntrNoMem]>; 115 def int_x86_3dnow_pfsubr : GCCBuiltin<"__builtin_ia32_pfsubr">, 116 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 117 [IntrNoMem]>; 118 def int_x86_3dnow_pi2fd : GCCBuiltin<"__builtin_ia32_pi2fd">, 119 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 120 def int_x86_3dnow_pmulhrw : GCCBuiltin<"__builtin_ia32_pmulhrw">, 121 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 122 [IntrNoMem]>; 123 } 124 125 //===----------------------------------------------------------------------===// 126 // 3DNow! extensions 127 128 let TargetPrefix = "x86" in { 129 def int_x86_3dnowa_pf2iw : GCCBuiltin<"__builtin_ia32_pf2iw">, 130 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 131 def int_x86_3dnowa_pfnacc : GCCBuiltin<"__builtin_ia32_pfnacc">, 132 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 133 [IntrNoMem]>; 134 def int_x86_3dnowa_pfpnacc : GCCBuiltin<"__builtin_ia32_pfpnacc">, 135 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 136 [IntrNoMem]>; 137 def int_x86_3dnowa_pi2fw : GCCBuiltin<"__builtin_ia32_pi2fw">, 138 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 139 def int_x86_3dnowa_pswapd : 140 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 141 } 142 143 //===----------------------------------------------------------------------===// 144 // SSE1 145 146 // Arithmetic ops 147 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 148 def int_x86_sse_sqrt_ss : GCCBuiltin<"__builtin_ia32_sqrtss">, 149 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 150 [IntrNoMem]>; 151 def int_x86_sse_sqrt_ps : GCCBuiltin<"__builtin_ia32_sqrtps">, 152 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 153 [IntrNoMem]>; 154 def int_x86_sse_rcp_ss : GCCBuiltin<"__builtin_ia32_rcpss">, 155 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 156 [IntrNoMem]>; 157 def int_x86_sse_rcp_ps : GCCBuiltin<"__builtin_ia32_rcpps">, 158 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 159 [IntrNoMem]>; 160 def int_x86_sse_rsqrt_ss : GCCBuiltin<"__builtin_ia32_rsqrtss">, 161 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 162 [IntrNoMem]>; 163 def int_x86_sse_rsqrt_ps : GCCBuiltin<"__builtin_ia32_rsqrtps">, 164 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], 165 [IntrNoMem]>; 166 def int_x86_sse_min_ss : GCCBuiltin<"__builtin_ia32_minss">, 167 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 168 llvm_v4f32_ty], [IntrNoMem]>; 169 def int_x86_sse_min_ps : GCCBuiltin<"__builtin_ia32_minps">, 170 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 171 llvm_v4f32_ty], [IntrNoMem]>; 172 def int_x86_sse_max_ss : GCCBuiltin<"__builtin_ia32_maxss">, 173 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 174 llvm_v4f32_ty], [IntrNoMem]>; 175 def int_x86_sse_max_ps : GCCBuiltin<"__builtin_ia32_maxps">, 176 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 177 llvm_v4f32_ty], [IntrNoMem]>; 178 } 179 180 // Comparison ops 181 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 182 def int_x86_sse_cmp_ss : GCCBuiltin<"__builtin_ia32_cmpss">, 183 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 184 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 185 def int_x86_sse_cmp_ps : 186 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 187 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 188 def int_x86_sse_comieq_ss : GCCBuiltin<"__builtin_ia32_comieq">, 189 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 190 llvm_v4f32_ty], [IntrNoMem]>; 191 def int_x86_sse_comilt_ss : GCCBuiltin<"__builtin_ia32_comilt">, 192 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 193 llvm_v4f32_ty], [IntrNoMem]>; 194 def int_x86_sse_comile_ss : GCCBuiltin<"__builtin_ia32_comile">, 195 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 196 llvm_v4f32_ty], [IntrNoMem]>; 197 def int_x86_sse_comigt_ss : GCCBuiltin<"__builtin_ia32_comigt">, 198 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 199 llvm_v4f32_ty], [IntrNoMem]>; 200 def int_x86_sse_comige_ss : GCCBuiltin<"__builtin_ia32_comige">, 201 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 202 llvm_v4f32_ty], [IntrNoMem]>; 203 def int_x86_sse_comineq_ss : GCCBuiltin<"__builtin_ia32_comineq">, 204 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 205 llvm_v4f32_ty], [IntrNoMem]>; 206 def int_x86_sse_ucomieq_ss : GCCBuiltin<"__builtin_ia32_ucomieq">, 207 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 208 llvm_v4f32_ty], [IntrNoMem]>; 209 def int_x86_sse_ucomilt_ss : GCCBuiltin<"__builtin_ia32_ucomilt">, 210 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 211 llvm_v4f32_ty], [IntrNoMem]>; 212 def int_x86_sse_ucomile_ss : GCCBuiltin<"__builtin_ia32_ucomile">, 213 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 214 llvm_v4f32_ty], [IntrNoMem]>; 215 def int_x86_sse_ucomigt_ss : GCCBuiltin<"__builtin_ia32_ucomigt">, 216 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 217 llvm_v4f32_ty], [IntrNoMem]>; 218 def int_x86_sse_ucomige_ss : GCCBuiltin<"__builtin_ia32_ucomige">, 219 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 220 llvm_v4f32_ty], [IntrNoMem]>; 221 def int_x86_sse_ucomineq_ss : GCCBuiltin<"__builtin_ia32_ucomineq">, 222 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 223 llvm_v4f32_ty], [IntrNoMem]>; 224 } 225 226 227 // Conversion ops 228 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 229 def int_x86_sse_cvtss2si : GCCBuiltin<"__builtin_ia32_cvtss2si">, 230 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 231 def int_x86_sse_cvtss2si64 : GCCBuiltin<"__builtin_ia32_cvtss2si64">, 232 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty], [IntrNoMem]>; 233 def int_x86_sse_cvttss2si : GCCBuiltin<"__builtin_ia32_cvttss2si">, 234 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 235 def int_x86_sse_cvttss2si64 : GCCBuiltin<"__builtin_ia32_cvttss2si64">, 236 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty], [IntrNoMem]>; 237 def int_x86_sse_cvtsi2ss : // TODO: Remove this intrinsic. 238 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 239 llvm_i32_ty], [IntrNoMem]>; 240 def int_x86_sse_cvtsi642ss : // TODO: Remove this intrinsic. 241 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 242 llvm_i64_ty], [IntrNoMem]>; 243 244 def int_x86_sse_cvtps2pi : GCCBuiltin<"__builtin_ia32_cvtps2pi">, 245 Intrinsic<[llvm_x86mmx_ty], [llvm_v4f32_ty], [IntrNoMem]>; 246 def int_x86_sse_cvttps2pi: GCCBuiltin<"__builtin_ia32_cvttps2pi">, 247 Intrinsic<[llvm_x86mmx_ty], [llvm_v4f32_ty], [IntrNoMem]>; 248 def int_x86_sse_cvtpi2ps : GCCBuiltin<"__builtin_ia32_cvtpi2ps">, 249 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 250 llvm_x86mmx_ty], [IntrNoMem]>; 251 } 252 253 // Cacheability support ops 254 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 255 def int_x86_sse_sfence : GCCBuiltin<"__builtin_ia32_sfence">, 256 Intrinsic<[], [], []>; 257 } 258 259 // Control register. 260 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 261 def int_x86_sse_stmxcsr : 262 Intrinsic<[], [llvm_ptr_ty], []>; 263 def int_x86_sse_ldmxcsr : 264 Intrinsic<[], [llvm_ptr_ty], []>; 265 } 266 267 // Misc. 268 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 269 def int_x86_sse_movmsk_ps : GCCBuiltin<"__builtin_ia32_movmskps">, 270 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 271 } 272 273 //===----------------------------------------------------------------------===// 274 // SSE2 275 276 // FP arithmetic ops 277 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 278 def int_x86_sse2_sqrt_sd : GCCBuiltin<"__builtin_ia32_sqrtsd">, 279 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], 280 [IntrNoMem]>; 281 def int_x86_sse2_sqrt_pd : GCCBuiltin<"__builtin_ia32_sqrtpd">, 282 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], 283 [IntrNoMem]>; 284 def int_x86_sse2_min_sd : GCCBuiltin<"__builtin_ia32_minsd">, 285 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 286 llvm_v2f64_ty], [IntrNoMem]>; 287 def int_x86_sse2_min_pd : GCCBuiltin<"__builtin_ia32_minpd">, 288 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 289 llvm_v2f64_ty], [IntrNoMem]>; 290 def int_x86_sse2_max_sd : GCCBuiltin<"__builtin_ia32_maxsd">, 291 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 292 llvm_v2f64_ty], [IntrNoMem]>; 293 def int_x86_sse2_max_pd : GCCBuiltin<"__builtin_ia32_maxpd">, 294 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 295 llvm_v2f64_ty], [IntrNoMem]>; 296 } 297 298 // FP comparison ops 299 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 300 def int_x86_sse2_cmp_sd : GCCBuiltin<"__builtin_ia32_cmpsd">, 301 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 302 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 303 def int_x86_sse2_cmp_pd : 304 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 305 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 306 def int_x86_sse2_comieq_sd : GCCBuiltin<"__builtin_ia32_comisdeq">, 307 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 308 llvm_v2f64_ty], [IntrNoMem]>; 309 def int_x86_sse2_comilt_sd : GCCBuiltin<"__builtin_ia32_comisdlt">, 310 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 311 llvm_v2f64_ty], [IntrNoMem]>; 312 def int_x86_sse2_comile_sd : GCCBuiltin<"__builtin_ia32_comisdle">, 313 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 314 llvm_v2f64_ty], [IntrNoMem]>; 315 def int_x86_sse2_comigt_sd : GCCBuiltin<"__builtin_ia32_comisdgt">, 316 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 317 llvm_v2f64_ty], [IntrNoMem]>; 318 def int_x86_sse2_comige_sd : GCCBuiltin<"__builtin_ia32_comisdge">, 319 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 320 llvm_v2f64_ty], [IntrNoMem]>; 321 def int_x86_sse2_comineq_sd : GCCBuiltin<"__builtin_ia32_comisdneq">, 322 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 323 llvm_v2f64_ty], [IntrNoMem]>; 324 def int_x86_sse2_ucomieq_sd : GCCBuiltin<"__builtin_ia32_ucomisdeq">, 325 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 326 llvm_v2f64_ty], [IntrNoMem]>; 327 def int_x86_sse2_ucomilt_sd : GCCBuiltin<"__builtin_ia32_ucomisdlt">, 328 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 329 llvm_v2f64_ty], [IntrNoMem]>; 330 def int_x86_sse2_ucomile_sd : GCCBuiltin<"__builtin_ia32_ucomisdle">, 331 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 332 llvm_v2f64_ty], [IntrNoMem]>; 333 def int_x86_sse2_ucomigt_sd : GCCBuiltin<"__builtin_ia32_ucomisdgt">, 334 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 335 llvm_v2f64_ty], [IntrNoMem]>; 336 def int_x86_sse2_ucomige_sd : GCCBuiltin<"__builtin_ia32_ucomisdge">, 337 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 338 llvm_v2f64_ty], [IntrNoMem]>; 339 def int_x86_sse2_ucomineq_sd : GCCBuiltin<"__builtin_ia32_ucomisdneq">, 340 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 341 llvm_v2f64_ty], [IntrNoMem]>; 342 } 343 344 // Integer arithmetic ops. 345 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 346 def int_x86_sse2_padds_b : GCCBuiltin<"__builtin_ia32_paddsb128">, 347 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 348 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 349 def int_x86_sse2_padds_w : GCCBuiltin<"__builtin_ia32_paddsw128">, 350 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 351 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 352 def int_x86_sse2_paddus_b : GCCBuiltin<"__builtin_ia32_paddusb128">, 353 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 354 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 355 def int_x86_sse2_paddus_w : GCCBuiltin<"__builtin_ia32_paddusw128">, 356 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 357 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 358 def int_x86_sse2_psubs_b : GCCBuiltin<"__builtin_ia32_psubsb128">, 359 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 360 llvm_v16i8_ty], [IntrNoMem]>; 361 def int_x86_sse2_psubs_w : GCCBuiltin<"__builtin_ia32_psubsw128">, 362 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 363 llvm_v8i16_ty], [IntrNoMem]>; 364 def int_x86_sse2_psubus_b : GCCBuiltin<"__builtin_ia32_psubusb128">, 365 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 366 llvm_v16i8_ty], [IntrNoMem]>; 367 def int_x86_sse2_psubus_w : GCCBuiltin<"__builtin_ia32_psubusw128">, 368 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 369 llvm_v8i16_ty], [IntrNoMem]>; 370 def int_x86_sse2_pmulhu_w : GCCBuiltin<"__builtin_ia32_pmulhuw128">, 371 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 372 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 373 def int_x86_sse2_pmulh_w : GCCBuiltin<"__builtin_ia32_pmulhw128">, 374 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 375 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 376 def int_x86_sse2_pmulu_dq : GCCBuiltin<"__builtin_ia32_pmuludq128">, 377 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, 378 llvm_v4i32_ty], [IntrNoMem, Commutative]>; 379 def int_x86_sse2_pmadd_wd : GCCBuiltin<"__builtin_ia32_pmaddwd128">, 380 Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, 381 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 382 def int_x86_sse2_pavg_b : GCCBuiltin<"__builtin_ia32_pavgb128">, 383 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 384 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 385 def int_x86_sse2_pavg_w : GCCBuiltin<"__builtin_ia32_pavgw128">, 386 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 387 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 388 def int_x86_sse2_psad_bw : GCCBuiltin<"__builtin_ia32_psadbw128">, 389 Intrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty, 390 llvm_v16i8_ty], [IntrNoMem, Commutative]>; 391 } 392 393 // Integer shift ops. 394 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 395 def int_x86_sse2_psll_w : GCCBuiltin<"__builtin_ia32_psllw128">, 396 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 397 llvm_v8i16_ty], [IntrNoMem]>; 398 def int_x86_sse2_psll_d : GCCBuiltin<"__builtin_ia32_pslld128">, 399 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 400 llvm_v4i32_ty], [IntrNoMem]>; 401 def int_x86_sse2_psll_q : GCCBuiltin<"__builtin_ia32_psllq128">, 402 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 403 llvm_v2i64_ty], [IntrNoMem]>; 404 def int_x86_sse2_psrl_w : GCCBuiltin<"__builtin_ia32_psrlw128">, 405 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 406 llvm_v8i16_ty], [IntrNoMem]>; 407 def int_x86_sse2_psrl_d : GCCBuiltin<"__builtin_ia32_psrld128">, 408 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 409 llvm_v4i32_ty], [IntrNoMem]>; 410 def int_x86_sse2_psrl_q : GCCBuiltin<"__builtin_ia32_psrlq128">, 411 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 412 llvm_v2i64_ty], [IntrNoMem]>; 413 def int_x86_sse2_psra_w : GCCBuiltin<"__builtin_ia32_psraw128">, 414 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 415 llvm_v8i16_ty], [IntrNoMem]>; 416 def int_x86_sse2_psra_d : GCCBuiltin<"__builtin_ia32_psrad128">, 417 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 418 llvm_v4i32_ty], [IntrNoMem]>; 419 420 def int_x86_sse2_pslli_w : GCCBuiltin<"__builtin_ia32_psllwi128">, 421 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 422 llvm_i32_ty], [IntrNoMem]>; 423 def int_x86_sse2_pslli_d : GCCBuiltin<"__builtin_ia32_pslldi128">, 424 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 425 llvm_i32_ty], [IntrNoMem]>; 426 def int_x86_sse2_pslli_q : GCCBuiltin<"__builtin_ia32_psllqi128">, 427 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 428 llvm_i32_ty], [IntrNoMem]>; 429 def int_x86_sse2_psrli_w : GCCBuiltin<"__builtin_ia32_psrlwi128">, 430 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 431 llvm_i32_ty], [IntrNoMem]>; 432 def int_x86_sse2_psrli_d : GCCBuiltin<"__builtin_ia32_psrldi128">, 433 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 434 llvm_i32_ty], [IntrNoMem]>; 435 def int_x86_sse2_psrli_q : GCCBuiltin<"__builtin_ia32_psrlqi128">, 436 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 437 llvm_i32_ty], [IntrNoMem]>; 438 def int_x86_sse2_psrai_w : GCCBuiltin<"__builtin_ia32_psrawi128">, 439 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 440 llvm_i32_ty], [IntrNoMem]>; 441 def int_x86_sse2_psrai_d : GCCBuiltin<"__builtin_ia32_psradi128">, 442 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 443 llvm_i32_ty], [IntrNoMem]>; 444 } 445 446 // Conversion ops 447 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 448 def int_x86_sse2_cvtdq2ps : GCCBuiltin<"__builtin_ia32_cvtdq2ps">, 449 Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty], [IntrNoMem]>; 450 def int_x86_sse2_cvtpd2dq : GCCBuiltin<"__builtin_ia32_cvtpd2dq">, 451 Intrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 452 def int_x86_sse2_cvttpd2dq : GCCBuiltin<"__builtin_ia32_cvttpd2dq">, 453 Intrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 454 def int_x86_sse2_cvtpd2ps : GCCBuiltin<"__builtin_ia32_cvtpd2ps">, 455 Intrinsic<[llvm_v4f32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 456 def int_x86_sse2_cvtps2dq : GCCBuiltin<"__builtin_ia32_cvtps2dq">, 457 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 458 def int_x86_sse2_cvttps2dq : GCCBuiltin<"__builtin_ia32_cvttps2dq">, 459 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 460 def int_x86_sse2_cvtsd2si : GCCBuiltin<"__builtin_ia32_cvtsd2si">, 461 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 462 def int_x86_sse2_cvtsd2si64 : GCCBuiltin<"__builtin_ia32_cvtsd2si64">, 463 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 464 def int_x86_sse2_cvttsd2si : GCCBuiltin<"__builtin_ia32_cvttsd2si">, 465 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 466 def int_x86_sse2_cvttsd2si64 : GCCBuiltin<"__builtin_ia32_cvttsd2si64">, 467 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 468 def int_x86_sse2_cvtsi2sd : // TODO: Remove this intrinsic. 469 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 470 llvm_i32_ty], [IntrNoMem]>; 471 def int_x86_sse2_cvtsi642sd : // TODO: Remove this intrinsic. 472 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 473 llvm_i64_ty], [IntrNoMem]>; 474 def int_x86_sse2_cvtsd2ss : GCCBuiltin<"__builtin_ia32_cvtsd2ss">, 475 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 476 llvm_v2f64_ty], [IntrNoMem]>; 477 def int_x86_sse2_cvtss2sd : // TODO: Remove this intrinsic. 478 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 479 llvm_v4f32_ty], [IntrNoMem]>; 480 def int_x86_sse_cvtpd2pi : GCCBuiltin<"__builtin_ia32_cvtpd2pi">, 481 Intrinsic<[llvm_x86mmx_ty], [llvm_v2f64_ty], [IntrNoMem]>; 482 def int_x86_sse_cvttpd2pi: GCCBuiltin<"__builtin_ia32_cvttpd2pi">, 483 Intrinsic<[llvm_x86mmx_ty], [llvm_v2f64_ty], [IntrNoMem]>; 484 def int_x86_sse_cvtpi2pd : GCCBuiltin<"__builtin_ia32_cvtpi2pd">, 485 Intrinsic<[llvm_v2f64_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 486 } 487 488 // Misc. 489 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 490 def int_x86_sse2_packsswb_128 : GCCBuiltin<"__builtin_ia32_packsswb128">, 491 Intrinsic<[llvm_v16i8_ty], [llvm_v8i16_ty, 492 llvm_v8i16_ty], [IntrNoMem]>; 493 def int_x86_sse2_packssdw_128 : GCCBuiltin<"__builtin_ia32_packssdw128">, 494 Intrinsic<[llvm_v8i16_ty], [llvm_v4i32_ty, 495 llvm_v4i32_ty], [IntrNoMem]>; 496 def int_x86_sse2_packuswb_128 : GCCBuiltin<"__builtin_ia32_packuswb128">, 497 Intrinsic<[llvm_v16i8_ty], [llvm_v8i16_ty, 498 llvm_v8i16_ty], [IntrNoMem]>; 499 def int_x86_sse2_movmsk_pd : GCCBuiltin<"__builtin_ia32_movmskpd">, 500 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>; 501 def int_x86_sse2_pmovmskb_128 : GCCBuiltin<"__builtin_ia32_pmovmskb128">, 502 Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>; 503 def int_x86_sse2_maskmov_dqu : GCCBuiltin<"__builtin_ia32_maskmovdqu">, 504 Intrinsic<[], [llvm_v16i8_ty, 505 llvm_v16i8_ty, llvm_ptr_ty], []>; 506 def int_x86_sse2_clflush : GCCBuiltin<"__builtin_ia32_clflush">, 507 Intrinsic<[], [llvm_ptr_ty], []>; 508 def int_x86_sse2_lfence : GCCBuiltin<"__builtin_ia32_lfence">, 509 Intrinsic<[], [], []>; 510 def int_x86_sse2_mfence : GCCBuiltin<"__builtin_ia32_mfence">, 511 Intrinsic<[], [], []>; 512 def int_x86_sse2_pause : GCCBuiltin<"__builtin_ia32_pause">, 513 Intrinsic<[], [], []>; 514 } 515 516 //===----------------------------------------------------------------------===// 517 // SSE3 518 519 // Addition / subtraction ops. 520 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 521 def int_x86_sse3_addsub_ps : GCCBuiltin<"__builtin_ia32_addsubps">, 522 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 523 llvm_v4f32_ty], [IntrNoMem]>; 524 def int_x86_sse3_addsub_pd : GCCBuiltin<"__builtin_ia32_addsubpd">, 525 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 526 llvm_v2f64_ty], [IntrNoMem]>; 527 } 528 529 // Horizontal ops. 530 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 531 def int_x86_sse3_hadd_ps : GCCBuiltin<"__builtin_ia32_haddps">, 532 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 533 llvm_v4f32_ty], [IntrNoMem]>; 534 def int_x86_sse3_hadd_pd : GCCBuiltin<"__builtin_ia32_haddpd">, 535 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 536 llvm_v2f64_ty], [IntrNoMem]>; 537 def int_x86_sse3_hsub_ps : GCCBuiltin<"__builtin_ia32_hsubps">, 538 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 539 llvm_v4f32_ty], [IntrNoMem]>; 540 def int_x86_sse3_hsub_pd : GCCBuiltin<"__builtin_ia32_hsubpd">, 541 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 542 llvm_v2f64_ty], [IntrNoMem]>; 543 } 544 545 // Specialized unaligned load. 546 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 547 def int_x86_sse3_ldu_dq : GCCBuiltin<"__builtin_ia32_lddqu">, 548 Intrinsic<[llvm_v16i8_ty], [llvm_ptr_ty], [IntrReadMem]>; 549 } 550 551 // Thread synchronization ops. 552 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 553 def int_x86_sse3_monitor : GCCBuiltin<"__builtin_ia32_monitor">, 554 Intrinsic<[], [llvm_ptr_ty, 555 llvm_i32_ty, llvm_i32_ty], []>; 556 def int_x86_sse3_mwait : GCCBuiltin<"__builtin_ia32_mwait">, 557 Intrinsic<[], [llvm_i32_ty, 558 llvm_i32_ty], []>; 559 } 560 561 //===----------------------------------------------------------------------===// 562 // SSSE3 563 564 // Horizontal arithmetic ops 565 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 566 def int_x86_ssse3_phadd_w : GCCBuiltin<"__builtin_ia32_phaddw">, 567 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 568 llvm_x86mmx_ty], [IntrNoMem]>; 569 def int_x86_ssse3_phadd_w_128 : GCCBuiltin<"__builtin_ia32_phaddw128">, 570 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 571 llvm_v8i16_ty], [IntrNoMem]>; 572 573 def int_x86_ssse3_phadd_d : GCCBuiltin<"__builtin_ia32_phaddd">, 574 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 575 llvm_x86mmx_ty], [IntrNoMem]>; 576 def int_x86_ssse3_phadd_d_128 : GCCBuiltin<"__builtin_ia32_phaddd128">, 577 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 578 llvm_v4i32_ty], [IntrNoMem]>; 579 580 def int_x86_ssse3_phadd_sw : GCCBuiltin<"__builtin_ia32_phaddsw">, 581 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 582 llvm_x86mmx_ty], [IntrNoMem]>; 583 def int_x86_ssse3_phadd_sw_128 : GCCBuiltin<"__builtin_ia32_phaddsw128">, 584 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 585 llvm_v8i16_ty], [IntrNoMem]>; 586 587 def int_x86_ssse3_phsub_w : GCCBuiltin<"__builtin_ia32_phsubw">, 588 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 589 llvm_x86mmx_ty], [IntrNoMem]>; 590 def int_x86_ssse3_phsub_w_128 : GCCBuiltin<"__builtin_ia32_phsubw128">, 591 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 592 llvm_v8i16_ty], [IntrNoMem]>; 593 594 def int_x86_ssse3_phsub_d : GCCBuiltin<"__builtin_ia32_phsubd">, 595 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 596 llvm_x86mmx_ty], [IntrNoMem]>; 597 def int_x86_ssse3_phsub_d_128 : GCCBuiltin<"__builtin_ia32_phsubd128">, 598 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 599 llvm_v4i32_ty], [IntrNoMem]>; 600 601 def int_x86_ssse3_phsub_sw : GCCBuiltin<"__builtin_ia32_phsubsw">, 602 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 603 llvm_x86mmx_ty], [IntrNoMem]>; 604 def int_x86_ssse3_phsub_sw_128 : GCCBuiltin<"__builtin_ia32_phsubsw128">, 605 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 606 llvm_v8i16_ty], [IntrNoMem]>; 607 608 def int_x86_ssse3_pmadd_ub_sw : GCCBuiltin<"__builtin_ia32_pmaddubsw">, 609 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 610 llvm_x86mmx_ty], [IntrNoMem]>; 611 def int_x86_ssse3_pmadd_ub_sw_128 : GCCBuiltin<"__builtin_ia32_pmaddubsw128">, 612 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, 613 llvm_v16i8_ty], [IntrNoMem]>; 614 } 615 616 // Packed multiply high with round and scale 617 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 618 def int_x86_ssse3_pmul_hr_sw : GCCBuiltin<"__builtin_ia32_pmulhrsw">, 619 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 620 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 621 def int_x86_ssse3_pmul_hr_sw_128 : GCCBuiltin<"__builtin_ia32_pmulhrsw128">, 622 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 623 llvm_v8i16_ty], [IntrNoMem, Commutative]>; 624 } 625 626 // Shuffle ops 627 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 628 def int_x86_ssse3_pshuf_b : GCCBuiltin<"__builtin_ia32_pshufb">, 629 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 630 llvm_x86mmx_ty], [IntrNoMem]>; 631 def int_x86_ssse3_pshuf_b_128 : GCCBuiltin<"__builtin_ia32_pshufb128">, 632 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 633 llvm_v16i8_ty], [IntrNoMem]>; 634 def int_x86_sse_pshuf_w : GCCBuiltin<"__builtin_ia32_pshufw">, 635 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i8_ty], 636 [IntrNoMem]>; 637 } 638 639 // Sign ops 640 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 641 def int_x86_ssse3_psign_b : GCCBuiltin<"__builtin_ia32_psignb">, 642 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 643 llvm_x86mmx_ty], [IntrNoMem]>; 644 def int_x86_ssse3_psign_b_128 : GCCBuiltin<"__builtin_ia32_psignb128">, 645 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 646 llvm_v16i8_ty], [IntrNoMem]>; 647 648 def int_x86_ssse3_psign_w : GCCBuiltin<"__builtin_ia32_psignw">, 649 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 650 llvm_x86mmx_ty], [IntrNoMem]>; 651 def int_x86_ssse3_psign_w_128 : GCCBuiltin<"__builtin_ia32_psignw128">, 652 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 653 llvm_v8i16_ty], [IntrNoMem]>; 654 655 def int_x86_ssse3_psign_d : GCCBuiltin<"__builtin_ia32_psignd">, 656 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 657 llvm_x86mmx_ty], [IntrNoMem]>; 658 def int_x86_ssse3_psign_d_128 : GCCBuiltin<"__builtin_ia32_psignd128">, 659 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 660 llvm_v4i32_ty], [IntrNoMem]>; 661 } 662 663 // Absolute value ops 664 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 665 def int_x86_ssse3_pabs_b : GCCBuiltin<"__builtin_ia32_pabsb">, 666 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 667 def int_x86_ssse3_pabs_b_128 : GCCBuiltin<"__builtin_ia32_pabsb128">, 668 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], [IntrNoMem]>; 669 670 def int_x86_ssse3_pabs_w : GCCBuiltin<"__builtin_ia32_pabsw">, 671 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 672 def int_x86_ssse3_pabs_w_128 : GCCBuiltin<"__builtin_ia32_pabsw128">, 673 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], [IntrNoMem]>; 674 675 def int_x86_ssse3_pabs_d : GCCBuiltin<"__builtin_ia32_pabsd">, 676 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 677 def int_x86_ssse3_pabs_d_128 : GCCBuiltin<"__builtin_ia32_pabsd128">, 678 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>; 679 } 680 681 //===----------------------------------------------------------------------===// 682 // SSE4.1 683 684 // FP rounding ops 685 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 686 def int_x86_sse41_round_ss : GCCBuiltin<"__builtin_ia32_roundss">, 687 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 688 llvm_i32_ty], [IntrNoMem]>; 689 def int_x86_sse41_round_ps : GCCBuiltin<"__builtin_ia32_roundps">, 690 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 691 llvm_i32_ty], [IntrNoMem]>; 692 def int_x86_sse41_round_sd : GCCBuiltin<"__builtin_ia32_roundsd">, 693 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 694 llvm_i32_ty], [IntrNoMem]>; 695 def int_x86_sse41_round_pd : GCCBuiltin<"__builtin_ia32_roundpd">, 696 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 697 llvm_i32_ty], [IntrNoMem]>; 698 } 699 700 // Vector min element 701 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 702 def int_x86_sse41_phminposuw : GCCBuiltin<"__builtin_ia32_phminposuw128">, 703 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], 704 [IntrNoMem]>; 705 } 706 707 // Advanced Encryption Standard (AES) Instructions 708 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 709 def int_x86_aesni_aesimc : GCCBuiltin<"__builtin_ia32_aesimc128">, 710 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], 711 [IntrNoMem]>; 712 def int_x86_aesni_aesenc : GCCBuiltin<"__builtin_ia32_aesenc128">, 713 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 714 [IntrNoMem]>; 715 def int_x86_aesni_aesenclast : GCCBuiltin<"__builtin_ia32_aesenclast128">, 716 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 717 [IntrNoMem]>; 718 def int_x86_aesni_aesdec : GCCBuiltin<"__builtin_ia32_aesdec128">, 719 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 720 [IntrNoMem]>; 721 def int_x86_aesni_aesdeclast : GCCBuiltin<"__builtin_ia32_aesdeclast128">, 722 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 723 [IntrNoMem]>; 724 def int_x86_aesni_aeskeygenassist : 725 GCCBuiltin<"__builtin_ia32_aeskeygenassist128">, 726 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i8_ty], 727 [IntrNoMem]>; 728 } 729 730 // PCLMUL instruction 731 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 732 def int_x86_pclmulqdq : GCCBuiltin<"__builtin_ia32_pclmulqdq128">, 733 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 734 [IntrNoMem]>; 735 } 736 737 // Vector pack 738 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 739 def int_x86_sse41_packusdw : GCCBuiltin<"__builtin_ia32_packusdw128">, 740 Intrinsic<[llvm_v8i16_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 741 [IntrNoMem]>; 742 } 743 744 // Vector multiply 745 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 746 def int_x86_sse41_pmuldq : GCCBuiltin<"__builtin_ia32_pmuldq128">, 747 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 748 [IntrNoMem, Commutative]>; 749 } 750 751 // Vector insert 752 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 753 def int_x86_sse41_insertps : GCCBuiltin<"__builtin_ia32_insertps128">, 754 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 755 [IntrNoMem]>; 756 } 757 758 // Vector blend 759 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 760 def int_x86_sse41_pblendvb : GCCBuiltin<"__builtin_ia32_pblendvb128">, 761 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty,llvm_v16i8_ty], 762 [IntrNoMem]>; 763 def int_x86_sse41_blendvpd : GCCBuiltin<"__builtin_ia32_blendvpd">, 764 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty,llvm_v2f64_ty], 765 [IntrNoMem]>; 766 def int_x86_sse41_blendvps : GCCBuiltin<"__builtin_ia32_blendvps">, 767 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty,llvm_v4f32_ty], 768 [IntrNoMem]>; 769 } 770 771 // Vector dot product 772 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 773 def int_x86_sse41_dppd : GCCBuiltin<"__builtin_ia32_dppd">, 774 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 775 [IntrNoMem, Commutative]>; 776 def int_x86_sse41_dpps : GCCBuiltin<"__builtin_ia32_dpps">, 777 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 778 [IntrNoMem, Commutative]>; 779 } 780 781 // Vector sum of absolute differences 782 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 783 def int_x86_sse41_mpsadbw : GCCBuiltin<"__builtin_ia32_mpsadbw128">, 784 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty,llvm_i8_ty], 785 [IntrNoMem, Commutative]>; 786 } 787 788 // Cacheability support ops 789 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 790 def int_x86_sse41_movntdqa : GCCBuiltin<"__builtin_ia32_movntdqa">, 791 Intrinsic<[llvm_v2i64_ty], [llvm_ptr_ty], [IntrReadMem]>; 792 } 793 794 // Test instruction with bitwise comparison. 795 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 796 def int_x86_sse41_ptestz : GCCBuiltin<"__builtin_ia32_ptestz128">, 797 Intrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 798 [IntrNoMem]>; 799 def int_x86_sse41_ptestc : GCCBuiltin<"__builtin_ia32_ptestc128">, 800 Intrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 801 [IntrNoMem]>; 802 def int_x86_sse41_ptestnzc : GCCBuiltin<"__builtin_ia32_ptestnzc128">, 803 Intrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 804 [IntrNoMem]>; 805 } 806 807 //===----------------------------------------------------------------------===// 808 // SSE4.2 809 810 // Miscellaneous 811 // CRC Instruction 812 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 813 def int_x86_sse42_crc32_32_8 : GCCBuiltin<"__builtin_ia32_crc32qi">, 814 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i8_ty], 815 [IntrNoMem]>; 816 def int_x86_sse42_crc32_32_16 : GCCBuiltin<"__builtin_ia32_crc32hi">, 817 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i16_ty], 818 [IntrNoMem]>; 819 def int_x86_sse42_crc32_32_32 : GCCBuiltin<"__builtin_ia32_crc32si">, 820 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 821 [IntrNoMem]>; 822 def int_x86_sse42_crc32_64_64 : GCCBuiltin<"__builtin_ia32_crc32di">, 823 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], 824 [IntrNoMem]>; 825 } 826 827 // String/text processing ops. 828 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 829 def int_x86_sse42_pcmpistrm128 : GCCBuiltin<"__builtin_ia32_pcmpistrm128">, 830 Intrinsic<[llvm_v16i8_ty], 831 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 832 [IntrNoMem]>; 833 def int_x86_sse42_pcmpistri128 : GCCBuiltin<"__builtin_ia32_pcmpistri128">, 834 Intrinsic<[llvm_i32_ty], 835 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 836 [IntrNoMem]>; 837 def int_x86_sse42_pcmpistria128 : GCCBuiltin<"__builtin_ia32_pcmpistria128">, 838 Intrinsic<[llvm_i32_ty], 839 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 840 [IntrNoMem]>; 841 def int_x86_sse42_pcmpistric128 : GCCBuiltin<"__builtin_ia32_pcmpistric128">, 842 Intrinsic<[llvm_i32_ty], 843 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 844 [IntrNoMem]>; 845 def int_x86_sse42_pcmpistrio128 : GCCBuiltin<"__builtin_ia32_pcmpistrio128">, 846 Intrinsic<[llvm_i32_ty], 847 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 848 [IntrNoMem]>; 849 def int_x86_sse42_pcmpistris128 : GCCBuiltin<"__builtin_ia32_pcmpistris128">, 850 Intrinsic<[llvm_i32_ty], 851 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 852 [IntrNoMem]>; 853 def int_x86_sse42_pcmpistriz128 : GCCBuiltin<"__builtin_ia32_pcmpistriz128">, 854 Intrinsic<[llvm_i32_ty], 855 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty], 856 [IntrNoMem]>; 857 def int_x86_sse42_pcmpestrm128 : GCCBuiltin<"__builtin_ia32_pcmpestrm128">, 858 Intrinsic<[llvm_v16i8_ty], 859 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 860 llvm_i8_ty], 861 [IntrNoMem]>; 862 def int_x86_sse42_pcmpestri128 : GCCBuiltin<"__builtin_ia32_pcmpestri128">, 863 Intrinsic<[llvm_i32_ty], 864 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 865 llvm_i8_ty], 866 [IntrNoMem]>; 867 def int_x86_sse42_pcmpestria128 : GCCBuiltin<"__builtin_ia32_pcmpestria128">, 868 Intrinsic<[llvm_i32_ty], 869 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 870 llvm_i8_ty], 871 [IntrNoMem]>; 872 def int_x86_sse42_pcmpestric128 : GCCBuiltin<"__builtin_ia32_pcmpestric128">, 873 Intrinsic<[llvm_i32_ty], 874 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 875 llvm_i8_ty], 876 [IntrNoMem]>; 877 def int_x86_sse42_pcmpestrio128 : GCCBuiltin<"__builtin_ia32_pcmpestrio128">, 878 Intrinsic<[llvm_i32_ty], 879 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 880 llvm_i8_ty], 881 [IntrNoMem]>; 882 def int_x86_sse42_pcmpestris128 : GCCBuiltin<"__builtin_ia32_pcmpestris128">, 883 Intrinsic<[llvm_i32_ty], 884 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 885 llvm_i8_ty], 886 [IntrNoMem]>; 887 def int_x86_sse42_pcmpestriz128 : GCCBuiltin<"__builtin_ia32_pcmpestriz128">, 888 Intrinsic<[llvm_i32_ty], 889 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty, 890 llvm_i8_ty], 891 [IntrNoMem]>; 892 } 893 894 //===----------------------------------------------------------------------===// 895 // SSE4A 896 897 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 898 def int_x86_sse4a_extrqi : GCCBuiltin<"__builtin_ia32_extrqi">, 899 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i8_ty, llvm_i8_ty], 900 [IntrNoMem]>; 901 def int_x86_sse4a_extrq : GCCBuiltin<"__builtin_ia32_extrq">, 902 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v16i8_ty], [IntrNoMem]>; 903 904 def int_x86_sse4a_insertqi : GCCBuiltin<"__builtin_ia32_insertqi">, 905 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 906 llvm_i8_ty, llvm_i8_ty], [IntrNoMem]>; 907 def int_x86_sse4a_insertq : GCCBuiltin<"__builtin_ia32_insertq">, 908 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>; 909 } 910 911 //===----------------------------------------------------------------------===// 912 // AVX 913 914 // Arithmetic ops 915 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 916 def int_x86_avx_addsub_pd_256 : GCCBuiltin<"__builtin_ia32_addsubpd256">, 917 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 918 llvm_v4f64_ty], [IntrNoMem]>; 919 def int_x86_avx_addsub_ps_256 : GCCBuiltin<"__builtin_ia32_addsubps256">, 920 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 921 llvm_v8f32_ty], [IntrNoMem]>; 922 def int_x86_avx_max_pd_256 : GCCBuiltin<"__builtin_ia32_maxpd256">, 923 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 924 llvm_v4f64_ty], [IntrNoMem]>; 925 def int_x86_avx_max_ps_256 : GCCBuiltin<"__builtin_ia32_maxps256">, 926 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 927 llvm_v8f32_ty], [IntrNoMem]>; 928 def int_x86_avx_min_pd_256 : GCCBuiltin<"__builtin_ia32_minpd256">, 929 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 930 llvm_v4f64_ty], [IntrNoMem]>; 931 def int_x86_avx_min_ps_256 : GCCBuiltin<"__builtin_ia32_minps256">, 932 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 933 llvm_v8f32_ty], [IntrNoMem]>; 934 935 def int_x86_avx_sqrt_pd_256 : GCCBuiltin<"__builtin_ia32_sqrtpd256">, 936 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty], [IntrNoMem]>; 937 def int_x86_avx_sqrt_ps_256 : GCCBuiltin<"__builtin_ia32_sqrtps256">, 938 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 939 940 def int_x86_avx_rsqrt_ps_256 : GCCBuiltin<"__builtin_ia32_rsqrtps256">, 941 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 942 943 def int_x86_avx_rcp_ps_256 : GCCBuiltin<"__builtin_ia32_rcpps256">, 944 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 945 946 def int_x86_avx_round_pd_256 : GCCBuiltin<"__builtin_ia32_roundpd256">, 947 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 948 llvm_i32_ty], [IntrNoMem]>; 949 def int_x86_avx_round_ps_256 : GCCBuiltin<"__builtin_ia32_roundps256">, 950 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 951 llvm_i32_ty], [IntrNoMem]>; 952 } 953 954 // Horizontal ops 955 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 956 def int_x86_avx_hadd_pd_256 : GCCBuiltin<"__builtin_ia32_haddpd256">, 957 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 958 llvm_v4f64_ty], [IntrNoMem]>; 959 def int_x86_avx_hsub_ps_256 : GCCBuiltin<"__builtin_ia32_hsubps256">, 960 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 961 llvm_v8f32_ty], [IntrNoMem]>; 962 def int_x86_avx_hsub_pd_256 : GCCBuiltin<"__builtin_ia32_hsubpd256">, 963 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 964 llvm_v4f64_ty], [IntrNoMem]>; 965 def int_x86_avx_hadd_ps_256 : GCCBuiltin<"__builtin_ia32_haddps256">, 966 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 967 llvm_v8f32_ty], [IntrNoMem]>; 968 } 969 970 // Vector permutation 971 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 972 def int_x86_avx_vpermilvar_pd : GCCBuiltin<"__builtin_ia32_vpermilvarpd">, 973 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 974 llvm_v2i64_ty], [IntrNoMem]>; 975 def int_x86_avx_vpermilvar_ps : GCCBuiltin<"__builtin_ia32_vpermilvarps">, 976 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 977 llvm_v4i32_ty], [IntrNoMem]>; 978 979 def int_x86_avx_vpermilvar_pd_256 : 980 GCCBuiltin<"__builtin_ia32_vpermilvarpd256">, 981 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4i64_ty], [IntrNoMem]>; 982 def int_x86_avx_vpermilvar_ps_256 : 983 GCCBuiltin<"__builtin_ia32_vpermilvarps256">, 984 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8i32_ty], [IntrNoMem]>; 985 986 def int_x86_avx_vperm2f128_pd_256 : 987 GCCBuiltin<"__builtin_ia32_vperm2f128_pd256">, 988 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 989 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 990 def int_x86_avx_vperm2f128_ps_256 : 991 GCCBuiltin<"__builtin_ia32_vperm2f128_ps256">, 992 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 993 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 994 def int_x86_avx_vperm2f128_si_256 : 995 GCCBuiltin<"__builtin_ia32_vperm2f128_si256">, 996 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 997 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 998 999 def int_x86_avx512_mask_vpermi2var_d_128 : 1000 GCCBuiltin<"__builtin_ia32_vpermi2vard128_mask">, 1001 Intrinsic<[llvm_v4i32_ty], 1002 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 1003 [IntrNoMem]>; 1004 1005 def int_x86_avx512_mask_vpermi2var_d_256 : 1006 GCCBuiltin<"__builtin_ia32_vpermi2vard256_mask">, 1007 Intrinsic<[llvm_v8i32_ty], 1008 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 1009 [IntrNoMem]>; 1010 1011 def int_x86_avx512_mask_vpermi2var_d_512 : 1012 GCCBuiltin<"__builtin_ia32_vpermi2vard512_mask">, 1013 Intrinsic<[llvm_v16i32_ty], 1014 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 1015 [IntrNoMem]>; 1016 1017 def int_x86_avx512_mask_vpermi2var_hi_128 : 1018 GCCBuiltin<"__builtin_ia32_vpermi2varhi128_mask">, 1019 Intrinsic<[llvm_v8i16_ty], 1020 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 1021 [IntrNoMem]>; 1022 1023 def int_x86_avx512_mask_vpermi2var_hi_256 : 1024 GCCBuiltin<"__builtin_ia32_vpermi2varhi256_mask">, 1025 Intrinsic<[llvm_v16i16_ty], 1026 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 1027 [IntrNoMem]>; 1028 1029 def int_x86_avx512_mask_vpermi2var_hi_512 : 1030 GCCBuiltin<"__builtin_ia32_vpermi2varhi512_mask">, 1031 Intrinsic<[llvm_v32i16_ty], 1032 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 1033 [IntrNoMem]>; 1034 1035 def int_x86_avx512_mask_vpermi2var_pd_128 : 1036 GCCBuiltin<"__builtin_ia32_vpermi2varpd128_mask">, 1037 Intrinsic<[llvm_v2f64_ty], 1038 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty], 1039 [IntrNoMem]>; 1040 1041 def int_x86_avx512_mask_vpermi2var_pd_256 : 1042 GCCBuiltin<"__builtin_ia32_vpermi2varpd256_mask">, 1043 Intrinsic<[llvm_v4f64_ty], 1044 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], 1045 [IntrNoMem]>; 1046 1047 def int_x86_avx512_mask_vpermi2var_pd_512 : 1048 GCCBuiltin<"__builtin_ia32_vpermi2varpd512_mask">, 1049 Intrinsic<[llvm_v8f64_ty], 1050 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_v8f64_ty, llvm_i8_ty], 1051 [IntrNoMem]>; 1052 1053 def int_x86_avx512_mask_vpermi2var_ps_128 : 1054 GCCBuiltin<"__builtin_ia32_vpermi2varps128_mask">, 1055 Intrinsic<[llvm_v4f32_ty], 1056 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty], 1057 [IntrNoMem]>; 1058 1059 def int_x86_avx512_mask_vpermi2var_ps_256 : 1060 GCCBuiltin<"__builtin_ia32_vpermi2varps256_mask">, 1061 Intrinsic<[llvm_v8f32_ty], 1062 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], 1063 [IntrNoMem]>; 1064 1065 def int_x86_avx512_mask_vpermi2var_ps_512 : 1066 GCCBuiltin<"__builtin_ia32_vpermi2varps512_mask">, 1067 Intrinsic<[llvm_v16f32_ty], 1068 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_v16f32_ty, llvm_i16_ty], 1069 [IntrNoMem]>; 1070 1071 def int_x86_avx512_mask_vpermi2var_q_128 : 1072 GCCBuiltin<"__builtin_ia32_vpermi2varq128_mask">, 1073 Intrinsic<[llvm_v2i64_ty], 1074 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 1075 [IntrNoMem]>; 1076 1077 def int_x86_avx512_mask_vpermi2var_q_256 : 1078 GCCBuiltin<"__builtin_ia32_vpermi2varq256_mask">, 1079 Intrinsic<[llvm_v4i64_ty], 1080 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 1081 [IntrNoMem]>; 1082 1083 def int_x86_avx512_mask_vpermi2var_q_512 : 1084 GCCBuiltin<"__builtin_ia32_vpermi2varq512_mask">, 1085 Intrinsic<[llvm_v8i64_ty], 1086 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 1087 [IntrNoMem]>; 1088 1089 def int_x86_avx512_mask_vpermt2var_d_512: 1090 GCCBuiltin<"__builtin_ia32_vpermt2vard512_mask">, 1091 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1092 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 1093 1094 def int_x86_avx512_mask_vpermt2var_q_512: 1095 GCCBuiltin<"__builtin_ia32_vpermt2varq512_mask">, 1096 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1097 llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 1098 1099 def int_x86_avx512_mask_vpermt2var_ps_512: 1100 GCCBuiltin<"__builtin_ia32_vpermt2varps512_mask">, 1101 Intrinsic<[llvm_v16f32_ty], [llvm_v16i32_ty, 1102 llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 1103 1104 def int_x86_avx512_mask_vpermt2var_pd_512: 1105 GCCBuiltin<"__builtin_ia32_vpermt2varpd512_mask">, 1106 Intrinsic<[llvm_v8f64_ty], [llvm_v8i64_ty, 1107 llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty], [IntrNoMem]>; 1108 1109 def int_x86_avx512_mask_vpermt2var_d_128 : 1110 GCCBuiltin<"__builtin_ia32_vpermt2vard128_mask">, 1111 Intrinsic<[llvm_v4i32_ty], 1112 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 1113 [IntrNoMem]>; 1114 1115 def int_x86_avx512_maskz_vpermt2var_d_128 : 1116 GCCBuiltin<"__builtin_ia32_vpermt2vard128_maskz">, 1117 Intrinsic<[llvm_v4i32_ty], 1118 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 1119 [IntrNoMem]>; 1120 1121 def int_x86_avx512_mask_vpermt2var_d_256 : 1122 GCCBuiltin<"__builtin_ia32_vpermt2vard256_mask">, 1123 Intrinsic<[llvm_v8i32_ty], 1124 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 1125 [IntrNoMem]>; 1126 1127 def int_x86_avx512_maskz_vpermt2var_d_256 : 1128 GCCBuiltin<"__builtin_ia32_vpermt2vard256_maskz">, 1129 Intrinsic<[llvm_v8i32_ty], 1130 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 1131 [IntrNoMem]>; 1132 1133 def int_x86_avx512_maskz_vpermt2var_d_512 : 1134 GCCBuiltin<"__builtin_ia32_vpermt2vard512_maskz">, 1135 Intrinsic<[llvm_v16i32_ty], 1136 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 1137 [IntrNoMem]>; 1138 1139 def int_x86_avx512_mask_vpermt2var_hi_128 : 1140 GCCBuiltin<"__builtin_ia32_vpermt2varhi128_mask">, 1141 Intrinsic<[llvm_v8i16_ty], 1142 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 1143 [IntrNoMem]>; 1144 1145 def int_x86_avx512_maskz_vpermt2var_hi_128 : 1146 GCCBuiltin<"__builtin_ia32_vpermt2varhi128_maskz">, 1147 Intrinsic<[llvm_v8i16_ty], 1148 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 1149 [IntrNoMem]>; 1150 1151 def int_x86_avx512_mask_vpermt2var_hi_256 : 1152 GCCBuiltin<"__builtin_ia32_vpermt2varhi256_mask">, 1153 Intrinsic<[llvm_v16i16_ty], 1154 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 1155 [IntrNoMem]>; 1156 1157 def int_x86_avx512_maskz_vpermt2var_hi_256 : 1158 GCCBuiltin<"__builtin_ia32_vpermt2varhi256_maskz">, 1159 Intrinsic<[llvm_v16i16_ty], 1160 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 1161 [IntrNoMem]>; 1162 1163 def int_x86_avx512_mask_vpermt2var_hi_512 : 1164 GCCBuiltin<"__builtin_ia32_vpermt2varhi512_mask">, 1165 Intrinsic<[llvm_v32i16_ty], 1166 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 1167 [IntrNoMem]>; 1168 1169 def int_x86_avx512_maskz_vpermt2var_hi_512 : 1170 GCCBuiltin<"__builtin_ia32_vpermt2varhi512_maskz">, 1171 Intrinsic<[llvm_v32i16_ty], 1172 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 1173 [IntrNoMem]>; 1174 1175 def int_x86_avx512_mask_vpermt2var_pd_128 : 1176 GCCBuiltin<"__builtin_ia32_vpermt2varpd128_mask">, 1177 Intrinsic<[llvm_v2f64_ty], 1178 [llvm_v2i64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 1179 [IntrNoMem]>; 1180 1181 def int_x86_avx512_maskz_vpermt2var_pd_128 : 1182 GCCBuiltin<"__builtin_ia32_vpermt2varpd128_maskz">, 1183 Intrinsic<[llvm_v2f64_ty], 1184 [llvm_v2i64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 1185 [IntrNoMem]>; 1186 1187 def int_x86_avx512_mask_vpermt2var_pd_256 : 1188 GCCBuiltin<"__builtin_ia32_vpermt2varpd256_mask">, 1189 Intrinsic<[llvm_v4f64_ty], 1190 [llvm_v4i64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 1191 [IntrNoMem]>; 1192 1193 def int_x86_avx512_maskz_vpermt2var_pd_256 : 1194 GCCBuiltin<"__builtin_ia32_vpermt2varpd256_maskz">, 1195 Intrinsic<[llvm_v4f64_ty], 1196 [llvm_v4i64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 1197 [IntrNoMem]>; 1198 1199 def int_x86_avx512_maskz_vpermt2var_pd_512 : 1200 GCCBuiltin<"__builtin_ia32_vpermt2varpd512_maskz">, 1201 Intrinsic<[llvm_v8f64_ty], 1202 [llvm_v8i64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty], 1203 [IntrNoMem]>; 1204 1205 def int_x86_avx512_mask_vpermt2var_ps_128 : 1206 GCCBuiltin<"__builtin_ia32_vpermt2varps128_mask">, 1207 Intrinsic<[llvm_v4f32_ty], 1208 [llvm_v4i32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 1209 [IntrNoMem]>; 1210 1211 def int_x86_avx512_maskz_vpermt2var_ps_128 : 1212 GCCBuiltin<"__builtin_ia32_vpermt2varps128_maskz">, 1213 Intrinsic<[llvm_v4f32_ty], 1214 [llvm_v4i32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 1215 [IntrNoMem]>; 1216 1217 def int_x86_avx512_mask_vpermt2var_ps_256 : 1218 GCCBuiltin<"__builtin_ia32_vpermt2varps256_mask">, 1219 Intrinsic<[llvm_v8f32_ty], 1220 [llvm_v8i32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 1221 [IntrNoMem]>; 1222 1223 def int_x86_avx512_maskz_vpermt2var_ps_256 : 1224 GCCBuiltin<"__builtin_ia32_vpermt2varps256_maskz">, 1225 Intrinsic<[llvm_v8f32_ty], 1226 [llvm_v8i32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 1227 [IntrNoMem]>; 1228 1229 def int_x86_avx512_maskz_vpermt2var_ps_512 : 1230 GCCBuiltin<"__builtin_ia32_vpermt2varps512_maskz">, 1231 Intrinsic<[llvm_v16f32_ty], 1232 [llvm_v16i32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty], 1233 [IntrNoMem]>; 1234 1235 def int_x86_avx512_mask_vpermt2var_q_128 : 1236 GCCBuiltin<"__builtin_ia32_vpermt2varq128_mask">, 1237 Intrinsic<[llvm_v2i64_ty], 1238 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 1239 [IntrNoMem]>; 1240 1241 def int_x86_avx512_maskz_vpermt2var_q_128 : 1242 GCCBuiltin<"__builtin_ia32_vpermt2varq128_maskz">, 1243 Intrinsic<[llvm_v2i64_ty], 1244 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 1245 [IntrNoMem]>; 1246 1247 def int_x86_avx512_mask_vpermt2var_q_256 : 1248 GCCBuiltin<"__builtin_ia32_vpermt2varq256_mask">, 1249 Intrinsic<[llvm_v4i64_ty], 1250 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 1251 [IntrNoMem]>; 1252 1253 def int_x86_avx512_maskz_vpermt2var_q_256 : 1254 GCCBuiltin<"__builtin_ia32_vpermt2varq256_maskz">, 1255 Intrinsic<[llvm_v4i64_ty], 1256 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 1257 [IntrNoMem]>; 1258 1259 def int_x86_avx512_maskz_vpermt2var_q_512 : 1260 GCCBuiltin<"__builtin_ia32_vpermt2varq512_maskz">, 1261 Intrinsic<[llvm_v8i64_ty], 1262 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 1263 [IntrNoMem]>; 1264 1265 def int_x86_avx512_mask_vpermi2var_qi_128 : 1266 GCCBuiltin<"__builtin_ia32_vpermi2varqi128_mask">, 1267 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 1268 llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 1269 [IntrNoMem]>; 1270 1271 def int_x86_avx512_mask_vpermt2var_qi_128 : 1272 GCCBuiltin<"__builtin_ia32_vpermt2varqi128_mask">, 1273 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 1274 llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 1275 [IntrNoMem]>; 1276 1277 def int_x86_avx512_maskz_vpermt2var_qi_128 : 1278 GCCBuiltin<"__builtin_ia32_vpermt2varqi128_maskz">, 1279 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 1280 llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 1281 [IntrNoMem]>; 1282 1283 def int_x86_avx512_mask_vpermi2var_qi_256 : 1284 GCCBuiltin<"__builtin_ia32_vpermi2varqi256_mask">, 1285 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1286 llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 1287 [IntrNoMem]>; 1288 1289 def int_x86_avx512_mask_vpermt2var_qi_256 : 1290 GCCBuiltin<"__builtin_ia32_vpermt2varqi256_mask">, 1291 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1292 llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 1293 [IntrNoMem]>; 1294 1295 def int_x86_avx512_maskz_vpermt2var_qi_256 : 1296 GCCBuiltin<"__builtin_ia32_vpermt2varqi256_maskz">, 1297 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1298 llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 1299 [IntrNoMem]>; 1300 1301 def int_x86_avx512_mask_vpermi2var_qi_512 : 1302 GCCBuiltin<"__builtin_ia32_vpermi2varqi512_mask">, 1303 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, 1304 llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 1305 [IntrNoMem]>; 1306 1307 def int_x86_avx512_mask_vpermt2var_qi_512 : 1308 GCCBuiltin<"__builtin_ia32_vpermt2varqi512_mask">, 1309 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, 1310 llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 1311 [IntrNoMem]>; 1312 1313 def int_x86_avx512_maskz_vpermt2var_qi_512 : 1314 GCCBuiltin<"__builtin_ia32_vpermt2varqi512_maskz">, 1315 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, 1316 llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 1317 [IntrNoMem]>; 1318 1319 def int_x86_avx512_vpermilvar_pd_512 : 1320 GCCBuiltin<"__builtin_ia32_vpermilvarpd512">, 1321 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8i64_ty], 1322 [IntrNoMem]>; 1323 1324 def int_x86_avx512_vpermilvar_ps_512 : 1325 GCCBuiltin<"__builtin_ia32_vpermilvarps512">, 1326 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16i32_ty], 1327 [IntrNoMem]>; 1328 1329 def int_x86_avx512_pshuf_b_512 : 1330 GCCBuiltin<"__builtin_ia32_pshufb512">, 1331 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 1332 [IntrNoMem]>; 1333 1334 def int_x86_avx512_mask_shuf_f32x4_256 : 1335 GCCBuiltin<"__builtin_ia32_shuf_f32x4_256_mask">, 1336 Intrinsic<[llvm_v8f32_ty], 1337 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty], 1338 [IntrNoMem]>; 1339 1340 def int_x86_avx512_mask_shuf_f32x4 : 1341 GCCBuiltin<"__builtin_ia32_shuf_f32x4_mask">, 1342 Intrinsic<[llvm_v16f32_ty], 1343 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, llvm_i16_ty], 1344 [IntrNoMem]>; 1345 1346 def int_x86_avx512_mask_shuf_f64x2_256 : 1347 GCCBuiltin<"__builtin_ia32_shuf_f64x2_256_mask">, 1348 Intrinsic<[llvm_v4f64_ty], 1349 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty], 1350 [IntrNoMem]>; 1351 1352 def int_x86_avx512_mask_shuf_f64x2 : 1353 GCCBuiltin<"__builtin_ia32_shuf_f64x2_mask">, 1354 Intrinsic<[llvm_v8f64_ty], 1355 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty], 1356 [IntrNoMem]>; 1357 1358 def int_x86_avx512_mask_shuf_i32x4_256 : 1359 GCCBuiltin<"__builtin_ia32_shuf_i32x4_256_mask">, 1360 Intrinsic<[llvm_v8i32_ty], 1361 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_v8i32_ty, llvm_i8_ty], 1362 [IntrNoMem]>; 1363 1364 def int_x86_avx512_mask_shuf_i32x4 : 1365 GCCBuiltin<"__builtin_ia32_shuf_i32x4_mask">, 1366 Intrinsic<[llvm_v16i32_ty], 1367 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, llvm_v16i32_ty, llvm_i16_ty], 1368 [IntrNoMem]>; 1369 1370 def int_x86_avx512_mask_shuf_i64x2_256 : 1371 GCCBuiltin<"__builtin_ia32_shuf_i64x2_256_mask">, 1372 Intrinsic<[llvm_v4i64_ty], 1373 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_v4i64_ty, llvm_i8_ty], 1374 [IntrNoMem]>; 1375 1376 def int_x86_avx512_mask_shuf_i64x2 : 1377 GCCBuiltin<"__builtin_ia32_shuf_i64x2_mask">, 1378 Intrinsic<[llvm_v8i64_ty], 1379 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, llvm_v8i64_ty, llvm_i8_ty], 1380 [IntrNoMem]>; 1381 } 1382 1383 // Vector blend 1384 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1385 def int_x86_avx_blendv_pd_256 : GCCBuiltin<"__builtin_ia32_blendvpd256">, 1386 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1387 llvm_v4f64_ty, llvm_v4f64_ty], [IntrNoMem]>; 1388 def int_x86_avx_blendv_ps_256 : GCCBuiltin<"__builtin_ia32_blendvps256">, 1389 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1390 llvm_v8f32_ty, llvm_v8f32_ty], [IntrNoMem]>; 1391 } 1392 1393 // Vector dot product 1394 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1395 def int_x86_avx_dp_ps_256 : GCCBuiltin<"__builtin_ia32_dpps256">, 1396 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1397 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem, Commutative]>; 1398 } 1399 1400 // Vector compare 1401 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1402 def int_x86_avx_cmp_pd_256 : 1403 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 1404 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 1405 def int_x86_avx_cmp_ps_256 : 1406 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 1407 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 1408 } 1409 1410 // Vector convert 1411 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1412 def int_x86_avx_cvtdq2_ps_256 : GCCBuiltin<"__builtin_ia32_cvtdq2ps256">, 1413 Intrinsic<[llvm_v8f32_ty], [llvm_v8i32_ty], [IntrNoMem]>; 1414 def int_x86_avx_cvt_pd2_ps_256 : GCCBuiltin<"__builtin_ia32_cvtpd2ps256">, 1415 Intrinsic<[llvm_v4f32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1416 def int_x86_avx_cvt_ps2dq_256 : GCCBuiltin<"__builtin_ia32_cvtps2dq256">, 1417 Intrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1418 def int_x86_avx_cvtt_pd2dq_256 : GCCBuiltin<"__builtin_ia32_cvttpd2dq256">, 1419 Intrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1420 def int_x86_avx_cvt_pd2dq_256 : GCCBuiltin<"__builtin_ia32_cvtpd2dq256">, 1421 Intrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1422 def int_x86_avx_cvtt_ps2dq_256 : GCCBuiltin<"__builtin_ia32_cvttps2dq256">, 1423 Intrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1424 } 1425 1426 // Vector bit test 1427 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1428 def int_x86_avx_vtestz_pd : GCCBuiltin<"__builtin_ia32_vtestzpd">, 1429 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 1430 llvm_v2f64_ty], [IntrNoMem]>; 1431 def int_x86_avx_vtestc_pd : GCCBuiltin<"__builtin_ia32_vtestcpd">, 1432 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 1433 llvm_v2f64_ty], [IntrNoMem]>; 1434 def int_x86_avx_vtestnzc_pd : GCCBuiltin<"__builtin_ia32_vtestnzcpd">, 1435 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 1436 llvm_v2f64_ty], [IntrNoMem]>; 1437 def int_x86_avx_vtestz_ps : GCCBuiltin<"__builtin_ia32_vtestzps">, 1438 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 1439 llvm_v4f32_ty], [IntrNoMem]>; 1440 def int_x86_avx_vtestc_ps : GCCBuiltin<"__builtin_ia32_vtestcps">, 1441 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 1442 llvm_v4f32_ty], [IntrNoMem]>; 1443 def int_x86_avx_vtestnzc_ps : GCCBuiltin<"__builtin_ia32_vtestnzcps">, 1444 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 1445 llvm_v4f32_ty], [IntrNoMem]>; 1446 def int_x86_avx_vtestz_pd_256 : GCCBuiltin<"__builtin_ia32_vtestzpd256">, 1447 Intrinsic<[llvm_i32_ty], [llvm_v4f64_ty, 1448 llvm_v4f64_ty], [IntrNoMem]>; 1449 def int_x86_avx_vtestc_pd_256 : GCCBuiltin<"__builtin_ia32_vtestcpd256">, 1450 Intrinsic<[llvm_i32_ty], [llvm_v4f64_ty, 1451 llvm_v4f64_ty], [IntrNoMem]>; 1452 def int_x86_avx_vtestnzc_pd_256 : GCCBuiltin<"__builtin_ia32_vtestnzcpd256">, 1453 Intrinsic<[llvm_i32_ty], [llvm_v4f64_ty, 1454 llvm_v4f64_ty], [IntrNoMem]>; 1455 def int_x86_avx_vtestz_ps_256 : GCCBuiltin<"__builtin_ia32_vtestzps256">, 1456 Intrinsic<[llvm_i32_ty], [llvm_v8f32_ty, 1457 llvm_v8f32_ty], [IntrNoMem]>; 1458 def int_x86_avx_vtestc_ps_256 : GCCBuiltin<"__builtin_ia32_vtestcps256">, 1459 Intrinsic<[llvm_i32_ty], [llvm_v8f32_ty, 1460 llvm_v8f32_ty], [IntrNoMem]>; 1461 def int_x86_avx_vtestnzc_ps_256 : GCCBuiltin<"__builtin_ia32_vtestnzcps256">, 1462 Intrinsic<[llvm_i32_ty], [llvm_v8f32_ty, 1463 llvm_v8f32_ty], [IntrNoMem]>; 1464 def int_x86_avx_ptestz_256 : GCCBuiltin<"__builtin_ia32_ptestz256">, 1465 Intrinsic<[llvm_i32_ty], [llvm_v4i64_ty, 1466 llvm_v4i64_ty], [IntrNoMem]>; 1467 def int_x86_avx_ptestc_256 : GCCBuiltin<"__builtin_ia32_ptestc256">, 1468 Intrinsic<[llvm_i32_ty], [llvm_v4i64_ty, 1469 llvm_v4i64_ty], [IntrNoMem]>; 1470 def int_x86_avx_ptestnzc_256 : GCCBuiltin<"__builtin_ia32_ptestnzc256">, 1471 Intrinsic<[llvm_i32_ty], [llvm_v4i64_ty, 1472 llvm_v4i64_ty], [IntrNoMem]>; 1473 def int_x86_avx512_ptestm_d_512 : GCCBuiltin<"__builtin_ia32_ptestmd512">, 1474 Intrinsic<[llvm_i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 1475 llvm_i16_ty], [IntrNoMem]>; 1476 def int_x86_avx512_ptestm_q_512 : GCCBuiltin<"__builtin_ia32_ptestmq512">, 1477 Intrinsic<[llvm_i8_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 1478 llvm_i8_ty], [IntrNoMem]>; 1479 1480 def int_x86_avx512_ptestm_b_128 : GCCBuiltin<"__builtin_ia32_ptestmb128">, 1481 Intrinsic<[llvm_i16_ty], [llvm_v16i8_ty, 1482 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 1483 def int_x86_avx512_ptestm_b_256 : GCCBuiltin<"__builtin_ia32_ptestmb256">, 1484 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty, 1485 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 1486 def int_x86_avx512_ptestm_b_512 : GCCBuiltin<"__builtin_ia32_ptestmb512">, 1487 Intrinsic<[llvm_i64_ty], [llvm_v64i8_ty, 1488 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 1489 def int_x86_avx512_ptestm_d_128 : GCCBuiltin<"__builtin_ia32_ptestmd128">, 1490 Intrinsic<[llvm_i8_ty], [llvm_v4i32_ty, 1491 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 1492 def int_x86_avx512_ptestm_d_256 : GCCBuiltin<"__builtin_ia32_ptestmd256">, 1493 Intrinsic<[llvm_i8_ty], [llvm_v8i32_ty, 1494 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 1495 def int_x86_avx512_ptestm_q_128 : GCCBuiltin<"__builtin_ia32_ptestmq128">, 1496 Intrinsic<[llvm_i8_ty], [llvm_v2i64_ty, 1497 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 1498 def int_x86_avx512_ptestm_q_256 : GCCBuiltin<"__builtin_ia32_ptestmq256">, 1499 Intrinsic<[llvm_i8_ty], [llvm_v4i64_ty, 1500 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 1501 def int_x86_avx512_ptestm_w_128 : GCCBuiltin<"__builtin_ia32_ptestmw128">, 1502 Intrinsic<[llvm_i8_ty], [llvm_v8i16_ty, 1503 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 1504 def int_x86_avx512_ptestm_w_256 : GCCBuiltin<"__builtin_ia32_ptestmw256">, 1505 Intrinsic<[llvm_i16_ty], [llvm_v16i16_ty, 1506 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 1507 def int_x86_avx512_ptestm_w_512 : GCCBuiltin<"__builtin_ia32_ptestmw512">, 1508 Intrinsic<[llvm_i32_ty], [llvm_v32i16_ty, 1509 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 1510 1511 def int_x86_avx512_ptestnm_b_128 : GCCBuiltin<"__builtin_ia32_ptestnmb128">, 1512 Intrinsic<[llvm_i16_ty], [llvm_v16i8_ty, 1513 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 1514 def int_x86_avx512_ptestnm_b_256 : GCCBuiltin<"__builtin_ia32_ptestnmb256">, 1515 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty, 1516 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 1517 def int_x86_avx512_ptestnm_b_512 : GCCBuiltin<"__builtin_ia32_ptestnmb512">, 1518 Intrinsic<[llvm_i64_ty], [llvm_v64i8_ty, 1519 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 1520 def int_x86_avx512_ptestnm_d_128 : GCCBuiltin<"__builtin_ia32_ptestnmd128">, 1521 Intrinsic<[llvm_i8_ty], [llvm_v4i32_ty, 1522 llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 1523 def int_x86_avx512_ptestnm_d_256 : GCCBuiltin<"__builtin_ia32_ptestnmd256">, 1524 Intrinsic<[llvm_i8_ty], [llvm_v8i32_ty, 1525 llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 1526 def int_x86_avx512_ptestnm_d_512 : GCCBuiltin<"__builtin_ia32_ptestnmd512">, 1527 Intrinsic<[llvm_i16_ty], [llvm_v16i32_ty, 1528 llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 1529 def int_x86_avx512_ptestnm_q_128 : GCCBuiltin<"__builtin_ia32_ptestnmq128">, 1530 Intrinsic<[llvm_i8_ty], [llvm_v2i64_ty, 1531 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 1532 def int_x86_avx512_ptestnm_q_256 : GCCBuiltin<"__builtin_ia32_ptestnmq256">, 1533 Intrinsic<[llvm_i8_ty], [llvm_v4i64_ty, 1534 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 1535 def int_x86_avx512_ptestnm_q_512 : GCCBuiltin<"__builtin_ia32_ptestnmq512">, 1536 Intrinsic<[llvm_i8_ty], [llvm_v8i64_ty, 1537 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 1538 def int_x86_avx512_ptestnm_w_128 : GCCBuiltin<"__builtin_ia32_ptestnmw128">, 1539 Intrinsic<[llvm_i8_ty], [llvm_v8i16_ty, 1540 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 1541 def int_x86_avx512_ptestnm_w_256 : GCCBuiltin<"__builtin_ia32_ptestnmw256">, 1542 Intrinsic<[llvm_i16_ty], [llvm_v16i16_ty, 1543 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 1544 def int_x86_avx512_ptestnm_w_512 : GCCBuiltin<"__builtin_ia32_ptestnmw512">, 1545 Intrinsic<[llvm_i32_ty], [llvm_v32i16_ty, 1546 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 1547 1548 def int_x86_avx512_mask_fpclass_pd_128 : 1549 GCCBuiltin<"__builtin_ia32_fpclasspd128_mask">, 1550 Intrinsic<[llvm_i8_ty], [llvm_v2f64_ty, llvm_i32_ty, llvm_i8_ty], 1551 [IntrNoMem]>; 1552 def int_x86_avx512_mask_fpclass_pd_256 : 1553 GCCBuiltin<"__builtin_ia32_fpclasspd256_mask">, 1554 Intrinsic<[llvm_i8_ty], [llvm_v4f64_ty, llvm_i32_ty, llvm_i8_ty], 1555 [IntrNoMem]>; 1556 def int_x86_avx512_mask_fpclass_pd_512 : 1557 GCCBuiltin<"__builtin_ia32_fpclasspd512_mask">, 1558 Intrinsic<[llvm_i8_ty], [llvm_v8f64_ty, llvm_i32_ty, llvm_i8_ty], 1559 [IntrNoMem]>; 1560 def int_x86_avx512_mask_fpclass_ps_128 : 1561 GCCBuiltin<"__builtin_ia32_fpclassps128_mask">, 1562 Intrinsic<[llvm_i8_ty], [llvm_v4f32_ty, llvm_i32_ty, llvm_i8_ty], 1563 [IntrNoMem]>; 1564 def int_x86_avx512_mask_fpclass_ps_256 : 1565 GCCBuiltin<"__builtin_ia32_fpclassps256_mask">, 1566 Intrinsic<[llvm_i8_ty], [llvm_v8f32_ty, llvm_i32_ty, llvm_i8_ty], 1567 [IntrNoMem]>; 1568 def int_x86_avx512_mask_fpclass_ps_512 : 1569 GCCBuiltin<"__builtin_ia32_fpclassps512_mask">, 1570 Intrinsic<[llvm_i16_ty], [llvm_v16f32_ty, llvm_i32_ty, llvm_i16_ty], 1571 [IntrNoMem]>; 1572 def int_x86_avx512_mask_fpclass_sd : 1573 GCCBuiltin<"__builtin_ia32_fpclasssd_mask">, 1574 Intrinsic<[llvm_i8_ty], [llvm_v2f64_ty, llvm_i32_ty, llvm_i8_ty], 1575 [IntrNoMem]>; 1576 def int_x86_avx512_mask_fpclass_ss : 1577 GCCBuiltin<"__builtin_ia32_fpclassss_mask">, 1578 Intrinsic<[llvm_i8_ty], [llvm_v4f32_ty, llvm_i32_ty, llvm_i8_ty], 1579 [IntrNoMem]>; 1580 } 1581 1582 // Vector extract sign mask 1583 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1584 def int_x86_avx_movmsk_pd_256 : GCCBuiltin<"__builtin_ia32_movmskpd256">, 1585 Intrinsic<[llvm_i32_ty], [llvm_v4f64_ty], [IntrNoMem]>; 1586 def int_x86_avx_movmsk_ps_256 : GCCBuiltin<"__builtin_ia32_movmskps256">, 1587 Intrinsic<[llvm_i32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 1588 } 1589 1590 // Vector zero 1591 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1592 def int_x86_avx_vzeroall : GCCBuiltin<"__builtin_ia32_vzeroall">, 1593 Intrinsic<[], [], []>; 1594 def int_x86_avx_vzeroupper : GCCBuiltin<"__builtin_ia32_vzeroupper">, 1595 Intrinsic<[], [], []>; 1596 } 1597 1598 // SIMD load ops 1599 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1600 def int_x86_avx_ldu_dq_256 : GCCBuiltin<"__builtin_ia32_lddqu256">, 1601 Intrinsic<[llvm_v32i8_ty], [llvm_ptr_ty], [IntrReadMem]>; 1602 } 1603 1604 // Conditional load ops 1605 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1606 def int_x86_avx_maskload_pd : GCCBuiltin<"__builtin_ia32_maskloadpd">, 1607 Intrinsic<[llvm_v2f64_ty], [llvm_ptr_ty, llvm_v2i64_ty], 1608 [IntrReadMem, IntrArgMemOnly]>; 1609 def int_x86_avx_maskload_ps : GCCBuiltin<"__builtin_ia32_maskloadps">, 1610 Intrinsic<[llvm_v4f32_ty], [llvm_ptr_ty, llvm_v4i32_ty], 1611 [IntrReadMem, IntrArgMemOnly]>; 1612 def int_x86_avx_maskload_pd_256 : GCCBuiltin<"__builtin_ia32_maskloadpd256">, 1613 Intrinsic<[llvm_v4f64_ty], [llvm_ptr_ty, llvm_v4i64_ty], 1614 [IntrReadMem, IntrArgMemOnly]>; 1615 def int_x86_avx_maskload_ps_256 : GCCBuiltin<"__builtin_ia32_maskloadps256">, 1616 Intrinsic<[llvm_v8f32_ty], [llvm_ptr_ty, llvm_v8i32_ty], 1617 [IntrReadMem, IntrArgMemOnly]>; 1618 } 1619 1620 // Conditional store ops 1621 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1622 def int_x86_avx_maskstore_pd : GCCBuiltin<"__builtin_ia32_maskstorepd">, 1623 Intrinsic<[], [llvm_ptr_ty, 1624 llvm_v2i64_ty, llvm_v2f64_ty], [IntrArgMemOnly]>; 1625 def int_x86_avx_maskstore_ps : GCCBuiltin<"__builtin_ia32_maskstoreps">, 1626 Intrinsic<[], [llvm_ptr_ty, 1627 llvm_v4i32_ty, llvm_v4f32_ty], [IntrArgMemOnly]>; 1628 def int_x86_avx_maskstore_pd_256 : 1629 GCCBuiltin<"__builtin_ia32_maskstorepd256">, 1630 Intrinsic<[], [llvm_ptr_ty, 1631 llvm_v4i64_ty, llvm_v4f64_ty], [IntrArgMemOnly]>; 1632 def int_x86_avx_maskstore_ps_256 : 1633 GCCBuiltin<"__builtin_ia32_maskstoreps256">, 1634 Intrinsic<[], [llvm_ptr_ty, 1635 llvm_v8i32_ty, llvm_v8f32_ty], [IntrArgMemOnly]>; 1636 1637 def int_x86_avx512_mask_store_ss : 1638 GCCBuiltin<"__builtin_ia32_storess_mask">, 1639 Intrinsic<[], [llvm_ptr_ty, llvm_v4f32_ty, llvm_i8_ty], 1640 [IntrArgMemOnly]>; 1641 } 1642 1643 //===----------------------------------------------------------------------===// 1644 // AVX2 1645 1646 // Integer arithmetic ops. 1647 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1648 def int_x86_avx2_padds_b : GCCBuiltin<"__builtin_ia32_paddsb256">, 1649 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1650 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1651 def int_x86_avx2_padds_w : GCCBuiltin<"__builtin_ia32_paddsw256">, 1652 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1653 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1654 def int_x86_avx2_paddus_b : GCCBuiltin<"__builtin_ia32_paddusb256">, 1655 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1656 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1657 def int_x86_avx2_paddus_w : GCCBuiltin<"__builtin_ia32_paddusw256">, 1658 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1659 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1660 def int_x86_avx2_psubs_b : GCCBuiltin<"__builtin_ia32_psubsb256">, 1661 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1662 llvm_v32i8_ty], [IntrNoMem]>; 1663 def int_x86_avx2_psubs_w : GCCBuiltin<"__builtin_ia32_psubsw256">, 1664 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1665 llvm_v16i16_ty], [IntrNoMem]>; 1666 def int_x86_avx2_psubus_b : GCCBuiltin<"__builtin_ia32_psubusb256">, 1667 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1668 llvm_v32i8_ty], [IntrNoMem]>; 1669 def int_x86_avx2_psubus_w : GCCBuiltin<"__builtin_ia32_psubusw256">, 1670 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1671 llvm_v16i16_ty], [IntrNoMem]>; 1672 def int_x86_avx2_pmulhu_w : GCCBuiltin<"__builtin_ia32_pmulhuw256">, 1673 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1674 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1675 def int_x86_avx2_pmulh_w : GCCBuiltin<"__builtin_ia32_pmulhw256">, 1676 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1677 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1678 def int_x86_avx2_pmulu_dq : GCCBuiltin<"__builtin_ia32_pmuludq256">, 1679 Intrinsic<[llvm_v4i64_ty], [llvm_v8i32_ty, 1680 llvm_v8i32_ty], [IntrNoMem, Commutative]>; 1681 def int_x86_avx2_pmul_dq : GCCBuiltin<"__builtin_ia32_pmuldq256">, 1682 Intrinsic<[llvm_v4i64_ty], [llvm_v8i32_ty, 1683 llvm_v8i32_ty], [IntrNoMem, Commutative]>; 1684 def int_x86_avx2_pmadd_wd : GCCBuiltin<"__builtin_ia32_pmaddwd256">, 1685 Intrinsic<[llvm_v8i32_ty], [llvm_v16i16_ty, 1686 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1687 def int_x86_avx2_pavg_b : GCCBuiltin<"__builtin_ia32_pavgb256">, 1688 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1689 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1690 def int_x86_avx2_pavg_w : GCCBuiltin<"__builtin_ia32_pavgw256">, 1691 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1692 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1693 def int_x86_avx2_psad_bw : GCCBuiltin<"__builtin_ia32_psadbw256">, 1694 Intrinsic<[llvm_v4i64_ty], [llvm_v32i8_ty, 1695 llvm_v32i8_ty], [IntrNoMem, Commutative]>; 1696 } 1697 1698 // Integer shift ops. 1699 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1700 def int_x86_avx2_psll_w : GCCBuiltin<"__builtin_ia32_psllw256">, 1701 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1702 llvm_v8i16_ty], [IntrNoMem]>; 1703 def int_x86_avx2_psll_d : GCCBuiltin<"__builtin_ia32_pslld256">, 1704 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1705 llvm_v4i32_ty], [IntrNoMem]>; 1706 def int_x86_avx2_psll_q : GCCBuiltin<"__builtin_ia32_psllq256">, 1707 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1708 llvm_v2i64_ty], [IntrNoMem]>; 1709 def int_x86_avx2_psrl_w : GCCBuiltin<"__builtin_ia32_psrlw256">, 1710 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1711 llvm_v8i16_ty], [IntrNoMem]>; 1712 def int_x86_avx2_psrl_d : GCCBuiltin<"__builtin_ia32_psrld256">, 1713 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1714 llvm_v4i32_ty], [IntrNoMem]>; 1715 def int_x86_avx2_psrl_q : GCCBuiltin<"__builtin_ia32_psrlq256">, 1716 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1717 llvm_v2i64_ty], [IntrNoMem]>; 1718 def int_x86_avx2_psra_w : GCCBuiltin<"__builtin_ia32_psraw256">, 1719 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1720 llvm_v8i16_ty], [IntrNoMem]>; 1721 def int_x86_avx2_psra_d : GCCBuiltin<"__builtin_ia32_psrad256">, 1722 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1723 llvm_v4i32_ty], [IntrNoMem]>; 1724 1725 def int_x86_avx2_pslli_w : GCCBuiltin<"__builtin_ia32_psllwi256">, 1726 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1727 llvm_i32_ty], [IntrNoMem]>; 1728 def int_x86_avx2_pslli_d : GCCBuiltin<"__builtin_ia32_pslldi256">, 1729 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1730 llvm_i32_ty], [IntrNoMem]>; 1731 def int_x86_avx2_pslli_q : GCCBuiltin<"__builtin_ia32_psllqi256">, 1732 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1733 llvm_i32_ty], [IntrNoMem]>; 1734 def int_x86_avx2_psrli_w : GCCBuiltin<"__builtin_ia32_psrlwi256">, 1735 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1736 llvm_i32_ty], [IntrNoMem]>; 1737 def int_x86_avx2_psrli_d : GCCBuiltin<"__builtin_ia32_psrldi256">, 1738 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1739 llvm_i32_ty], [IntrNoMem]>; 1740 def int_x86_avx2_psrli_q : GCCBuiltin<"__builtin_ia32_psrlqi256">, 1741 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1742 llvm_i32_ty], [IntrNoMem]>; 1743 def int_x86_avx2_psrai_w : GCCBuiltin<"__builtin_ia32_psrawi256">, 1744 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1745 llvm_i32_ty], [IntrNoMem]>; 1746 def int_x86_avx2_psrai_d : GCCBuiltin<"__builtin_ia32_psradi256">, 1747 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1748 llvm_i32_ty], [IntrNoMem]>; 1749 1750 def int_x86_avx512_psra_q_128 : GCCBuiltin<"__builtin_ia32_psraq128">, 1751 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 1752 llvm_v2i64_ty], [IntrNoMem]>; 1753 def int_x86_avx512_psra_q_256 : GCCBuiltin<"__builtin_ia32_psraq256">, 1754 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1755 llvm_v2i64_ty], [IntrNoMem]>; 1756 1757 def int_x86_avx512_psrai_q_128 : GCCBuiltin<"__builtin_ia32_psraqi128">, 1758 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 1759 llvm_i32_ty], [IntrNoMem]>; 1760 def int_x86_avx512_psrai_q_256 : GCCBuiltin<"__builtin_ia32_psraqi256">, 1761 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 1762 llvm_i32_ty], [IntrNoMem]>; 1763 1764 def int_x86_avx512_psll_w_512 : GCCBuiltin<"__builtin_ia32_psllw512">, 1765 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1766 llvm_v8i16_ty], [IntrNoMem]>; 1767 def int_x86_avx512_psll_d_512 : GCCBuiltin<"__builtin_ia32_pslld512">, 1768 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1769 llvm_v4i32_ty], [IntrNoMem]>; 1770 def int_x86_avx512_psll_q_512 : GCCBuiltin<"__builtin_ia32_psllq512">, 1771 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1772 llvm_v2i64_ty], [IntrNoMem]>; 1773 def int_x86_avx512_psrl_w_512 : GCCBuiltin<"__builtin_ia32_psrlw512">, 1774 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1775 llvm_v8i16_ty], [IntrNoMem]>; 1776 def int_x86_avx512_psrl_d_512 : GCCBuiltin<"__builtin_ia32_psrld512">, 1777 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1778 llvm_v4i32_ty], [IntrNoMem]>; 1779 def int_x86_avx512_psrl_q_512 : GCCBuiltin<"__builtin_ia32_psrlq512">, 1780 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1781 llvm_v2i64_ty], [IntrNoMem]>; 1782 def int_x86_avx512_psra_w_512 : GCCBuiltin<"__builtin_ia32_psraw512">, 1783 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1784 llvm_v8i16_ty], [IntrNoMem]>; 1785 def int_x86_avx512_psra_d_512 : GCCBuiltin<"__builtin_ia32_psrad512">, 1786 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1787 llvm_v4i32_ty], [IntrNoMem]>; 1788 def int_x86_avx512_psra_q_512 : GCCBuiltin<"__builtin_ia32_psraq512">, 1789 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1790 llvm_v2i64_ty], [IntrNoMem]>; 1791 1792 def int_x86_avx512_pslli_w_512 : GCCBuiltin<"__builtin_ia32_psllwi512">, 1793 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1794 llvm_i32_ty], [IntrNoMem]>; 1795 def int_x86_avx512_pslli_d_512 : GCCBuiltin<"__builtin_ia32_pslldi512">, 1796 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1797 llvm_i32_ty], [IntrNoMem]>; 1798 def int_x86_avx512_pslli_q_512 : GCCBuiltin<"__builtin_ia32_psllqi512">, 1799 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1800 llvm_i32_ty], [IntrNoMem]>; 1801 def int_x86_avx512_psrli_w_512 : GCCBuiltin<"__builtin_ia32_psrlwi512">, 1802 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1803 llvm_i32_ty], [IntrNoMem]>; 1804 def int_x86_avx512_psrli_d_512 : GCCBuiltin<"__builtin_ia32_psrldi512">, 1805 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1806 llvm_i32_ty], [IntrNoMem]>; 1807 def int_x86_avx512_psrli_q_512 : GCCBuiltin<"__builtin_ia32_psrlqi512">, 1808 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1809 llvm_i32_ty], [IntrNoMem]>; 1810 def int_x86_avx512_psrai_w_512 : GCCBuiltin<"__builtin_ia32_psrawi512">, 1811 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 1812 llvm_i32_ty], [IntrNoMem]>; 1813 def int_x86_avx512_psrai_d_512 : GCCBuiltin<"__builtin_ia32_psradi512">, 1814 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 1815 llvm_i32_ty], [IntrNoMem]>; 1816 def int_x86_avx512_psrai_q_512 : GCCBuiltin<"__builtin_ia32_psraqi512">, 1817 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 1818 llvm_i32_ty], [IntrNoMem]>; 1819 1820 def int_x86_avx512_mask_pmultishift_qb_128: 1821 GCCBuiltin<"__builtin_ia32_vpmultishiftqb128_mask">, 1822 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 1823 llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 1824 def int_x86_avx512_mask_pmultishift_qb_256: 1825 GCCBuiltin<"__builtin_ia32_vpmultishiftqb256_mask">, 1826 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1827 llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 1828 def int_x86_avx512_mask_pmultishift_qb_512: 1829 GCCBuiltin<"__builtin_ia32_vpmultishiftqb512_mask">, 1830 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, 1831 llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 1832 } 1833 1834 // Pack ops. 1835 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1836 def int_x86_avx2_packsswb : GCCBuiltin<"__builtin_ia32_packsswb256">, 1837 Intrinsic<[llvm_v32i8_ty], [llvm_v16i16_ty, 1838 llvm_v16i16_ty], [IntrNoMem]>; 1839 def int_x86_avx2_packssdw : GCCBuiltin<"__builtin_ia32_packssdw256">, 1840 Intrinsic<[llvm_v16i16_ty], [llvm_v8i32_ty, 1841 llvm_v8i32_ty], [IntrNoMem]>; 1842 def int_x86_avx2_packuswb : GCCBuiltin<"__builtin_ia32_packuswb256">, 1843 Intrinsic<[llvm_v32i8_ty], [llvm_v16i16_ty, 1844 llvm_v16i16_ty], [IntrNoMem]>; 1845 def int_x86_avx2_packusdw : GCCBuiltin<"__builtin_ia32_packusdw256">, 1846 Intrinsic<[llvm_v16i16_ty], [llvm_v8i32_ty, 1847 llvm_v8i32_ty], [IntrNoMem]>; 1848 } 1849 1850 // Absolute value ops 1851 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1852 def int_x86_avx2_pabs_b : GCCBuiltin<"__builtin_ia32_pabsb256">, 1853 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty], [IntrNoMem]>; 1854 def int_x86_avx2_pabs_w : GCCBuiltin<"__builtin_ia32_pabsw256">, 1855 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty], [IntrNoMem]>; 1856 def int_x86_avx2_pabs_d : GCCBuiltin<"__builtin_ia32_pabsd256">, 1857 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty], [IntrNoMem]>; 1858 1859 def int_x86_avx512_mask_pabs_b_128 : 1860 GCCBuiltin<"__builtin_ia32_pabsb128_mask">, 1861 Intrinsic<[llvm_v16i8_ty], 1862 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], 1863 [IntrNoMem]>; 1864 1865 def int_x86_avx512_mask_pabs_b_256 : 1866 GCCBuiltin<"__builtin_ia32_pabsb256_mask">, 1867 Intrinsic<[llvm_v32i8_ty], 1868 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], 1869 [IntrNoMem]>; 1870 1871 def int_x86_avx512_mask_pabs_b_512 : 1872 GCCBuiltin<"__builtin_ia32_pabsb512_mask">, 1873 Intrinsic<[llvm_v64i8_ty], 1874 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], 1875 [IntrNoMem]>; 1876 1877 def int_x86_avx512_mask_pabs_d_128 : 1878 GCCBuiltin<"__builtin_ia32_pabsd128_mask">, 1879 Intrinsic<[llvm_v4i32_ty], 1880 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 1881 [IntrNoMem]>; 1882 1883 def int_x86_avx512_mask_pabs_d_256 : 1884 GCCBuiltin<"__builtin_ia32_pabsd256_mask">, 1885 Intrinsic<[llvm_v8i32_ty], 1886 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 1887 [IntrNoMem]>; 1888 1889 def int_x86_avx512_mask_pabs_d_512 : 1890 GCCBuiltin<"__builtin_ia32_pabsd512_mask">, 1891 Intrinsic<[llvm_v16i32_ty], 1892 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 1893 [IntrNoMem]>; 1894 1895 def int_x86_avx512_mask_pabs_q_128 : 1896 GCCBuiltin<"__builtin_ia32_pabsq128_mask">, 1897 Intrinsic<[llvm_v2i64_ty], 1898 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 1899 [IntrNoMem]>; 1900 1901 def int_x86_avx512_mask_pabs_q_256 : 1902 GCCBuiltin<"__builtin_ia32_pabsq256_mask">, 1903 Intrinsic<[llvm_v4i64_ty], 1904 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 1905 [IntrNoMem]>; 1906 1907 def int_x86_avx512_mask_pabs_q_512 : 1908 GCCBuiltin<"__builtin_ia32_pabsq512_mask">, 1909 Intrinsic<[llvm_v8i64_ty], 1910 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 1911 [IntrNoMem]>; 1912 1913 def int_x86_avx512_mask_pabs_w_128 : 1914 GCCBuiltin<"__builtin_ia32_pabsw128_mask">, 1915 Intrinsic<[llvm_v8i16_ty], 1916 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], 1917 [IntrNoMem]>; 1918 1919 def int_x86_avx512_mask_pabs_w_256 : 1920 GCCBuiltin<"__builtin_ia32_pabsw256_mask">, 1921 Intrinsic<[llvm_v16i16_ty], 1922 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], 1923 [IntrNoMem]>; 1924 1925 def int_x86_avx512_mask_pabs_w_512 : 1926 GCCBuiltin<"__builtin_ia32_pabsw512_mask">, 1927 Intrinsic<[llvm_v32i16_ty], 1928 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], 1929 [IntrNoMem]>; 1930 } 1931 1932 // Horizontal arithmetic ops 1933 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1934 def int_x86_avx2_phadd_w : GCCBuiltin<"__builtin_ia32_phaddw256">, 1935 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1936 llvm_v16i16_ty], [IntrNoMem]>; 1937 def int_x86_avx2_phadd_d : GCCBuiltin<"__builtin_ia32_phaddd256">, 1938 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1939 llvm_v8i32_ty], [IntrNoMem]>; 1940 def int_x86_avx2_phadd_sw : GCCBuiltin<"__builtin_ia32_phaddsw256">, 1941 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1942 llvm_v16i16_ty], [IntrNoMem]>; 1943 def int_x86_avx2_phsub_w : GCCBuiltin<"__builtin_ia32_phsubw256">, 1944 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1945 llvm_v16i16_ty], [IntrNoMem]>; 1946 def int_x86_avx2_phsub_d : GCCBuiltin<"__builtin_ia32_phsubd256">, 1947 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1948 llvm_v8i32_ty], [IntrNoMem]>; 1949 def int_x86_avx2_phsub_sw : GCCBuiltin<"__builtin_ia32_phsubsw256">, 1950 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1951 llvm_v16i16_ty], [IntrNoMem]>; 1952 def int_x86_avx2_pmadd_ub_sw : GCCBuiltin<"__builtin_ia32_pmaddubsw256">, 1953 Intrinsic<[llvm_v16i16_ty], [llvm_v32i8_ty, 1954 llvm_v32i8_ty], [IntrNoMem]>; 1955 } 1956 1957 // Sign ops 1958 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1959 def int_x86_avx2_psign_b : GCCBuiltin<"__builtin_ia32_psignb256">, 1960 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 1961 llvm_v32i8_ty], [IntrNoMem]>; 1962 def int_x86_avx2_psign_w : GCCBuiltin<"__builtin_ia32_psignw256">, 1963 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1964 llvm_v16i16_ty], [IntrNoMem]>; 1965 def int_x86_avx2_psign_d : GCCBuiltin<"__builtin_ia32_psignd256">, 1966 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 1967 llvm_v8i32_ty], [IntrNoMem]>; 1968 } 1969 1970 // Packed multiply high with round and scale 1971 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1972 def int_x86_avx2_pmul_hr_sw : GCCBuiltin<"__builtin_ia32_pmulhrsw256">, 1973 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 1974 llvm_v16i16_ty], [IntrNoMem, Commutative]>; 1975 def int_x86_avx512_mask_pmul_hr_sw_128 : GCCBuiltin<"__builtin_ia32_pmulhrsw128_mask">, 1976 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 1977 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 1978 def int_x86_avx512_mask_pmul_hr_sw_256 : GCCBuiltin<"__builtin_ia32_pmulhrsw256_mask">, 1979 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 1980 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 1981 def int_x86_avx512_mask_pmul_hr_sw_512 : GCCBuiltin<"__builtin_ia32_pmulhrsw512_mask">, 1982 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 1983 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 1984 } 1985 1986 // Vector blend 1987 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1988 def int_x86_avx2_pblendvb : GCCBuiltin<"__builtin_ia32_pblendvb256">, 1989 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 1990 llvm_v32i8_ty], [IntrNoMem]>; 1991 } 1992 1993 // Vector load with broadcast 1994 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 1995 def int_x86_avx512_mask_pbroadcast_b_gpr_128 : 1996 GCCBuiltin<"__builtin_ia32_pbroadcastb128_gpr_mask">, 1997 Intrinsic<[llvm_v16i8_ty], 1998 [llvm_i8_ty, llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 1999 def int_x86_avx512_mask_pbroadcast_b_gpr_256 : 2000 GCCBuiltin<"__builtin_ia32_pbroadcastb256_gpr_mask">, 2001 Intrinsic<[llvm_v32i8_ty], 2002 [llvm_i8_ty, llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 2003 def int_x86_avx512_mask_pbroadcast_b_gpr_512 : 2004 GCCBuiltin<"__builtin_ia32_pbroadcastb512_gpr_mask">, 2005 Intrinsic<[llvm_v64i8_ty], 2006 [llvm_i8_ty, llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 2007 2008 def int_x86_avx512_mask_pbroadcast_w_gpr_128 : 2009 GCCBuiltin<"__builtin_ia32_pbroadcastw128_gpr_mask">, 2010 Intrinsic<[llvm_v8i16_ty], 2011 [llvm_i16_ty, llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 2012 def int_x86_avx512_mask_pbroadcast_w_gpr_256 : 2013 GCCBuiltin<"__builtin_ia32_pbroadcastw256_gpr_mask">, 2014 Intrinsic<[llvm_v16i16_ty], 2015 [llvm_i16_ty, llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 2016 def int_x86_avx512_mask_pbroadcast_w_gpr_512 : 2017 GCCBuiltin<"__builtin_ia32_pbroadcastw512_gpr_mask">, 2018 Intrinsic<[llvm_v32i16_ty], 2019 [llvm_i16_ty, llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 2020 2021 def int_x86_avx512_mask_pbroadcast_d_gpr_128 : 2022 GCCBuiltin<"__builtin_ia32_pbroadcastd128_gpr_mask">, 2023 Intrinsic<[llvm_v4i32_ty], 2024 [llvm_i32_ty, llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2025 def int_x86_avx512_mask_pbroadcast_d_gpr_256 : 2026 GCCBuiltin<"__builtin_ia32_pbroadcastd256_gpr_mask">, 2027 Intrinsic<[llvm_v8i32_ty], 2028 [llvm_i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 2029 def int_x86_avx512_mask_pbroadcast_d_gpr_512 : 2030 GCCBuiltin<"__builtin_ia32_pbroadcastd512_gpr_mask">, 2031 Intrinsic<[llvm_v16i32_ty], 2032 [llvm_i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2033 2034 def int_x86_avx512_mask_pbroadcast_q_gpr_128 : 2035 GCCBuiltin<"__builtin_ia32_pbroadcastq128_gpr_mask">, 2036 Intrinsic<[llvm_v2i64_ty], 2037 [llvm_i64_ty, llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2038 def int_x86_avx512_mask_pbroadcast_q_gpr_256 : 2039 GCCBuiltin<"__builtin_ia32_pbroadcastq256_gpr_mask">, 2040 Intrinsic<[llvm_v4i64_ty], 2041 [llvm_i64_ty, llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2042 def int_x86_avx512_mask_pbroadcast_q_gpr_512 : 2043 GCCBuiltin<"__builtin_ia32_pbroadcastq512_gpr_mask">, 2044 Intrinsic<[llvm_v8i64_ty], 2045 [llvm_i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2046 2047 def int_x86_avx512_mask_pbroadcast_q_mem_512 : 2048 GCCBuiltin<"__builtin_ia32_pbroadcastq512_mem_mask">, 2049 Intrinsic<[llvm_v8i64_ty], 2050 [llvm_i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2051 } 2052 2053 // Vector permutation 2054 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2055 def int_x86_avx2_permd : GCCBuiltin<"__builtin_ia32_permvarsi256">, 2056 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 2057 [IntrNoMem]>; 2058 def int_x86_avx2_permps : GCCBuiltin<"__builtin_ia32_permvarsf256">, 2059 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8i32_ty], 2060 [IntrNoMem]>; 2061 def int_x86_avx2_vperm2i128 : GCCBuiltin<"__builtin_ia32_permti256">, 2062 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 2063 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2064 } 2065 2066 // Conditional load ops 2067 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2068 def int_x86_avx2_maskload_d : GCCBuiltin<"__builtin_ia32_maskloadd">, 2069 Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_v4i32_ty], 2070 [IntrReadMem, IntrArgMemOnly]>; 2071 def int_x86_avx2_maskload_q : GCCBuiltin<"__builtin_ia32_maskloadq">, 2072 Intrinsic<[llvm_v2i64_ty], [llvm_ptr_ty, llvm_v2i64_ty], 2073 [IntrReadMem, IntrArgMemOnly]>; 2074 def int_x86_avx2_maskload_d_256 : GCCBuiltin<"__builtin_ia32_maskloadd256">, 2075 Intrinsic<[llvm_v8i32_ty], [llvm_ptr_ty, llvm_v8i32_ty], 2076 [IntrReadMem, IntrArgMemOnly]>; 2077 def int_x86_avx2_maskload_q_256 : GCCBuiltin<"__builtin_ia32_maskloadq256">, 2078 Intrinsic<[llvm_v4i64_ty], [llvm_ptr_ty, llvm_v4i64_ty], 2079 [IntrReadMem, IntrArgMemOnly]>; 2080 } 2081 2082 // Conditional store ops 2083 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2084 def int_x86_avx2_maskstore_d : GCCBuiltin<"__builtin_ia32_maskstored">, 2085 Intrinsic<[], [llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i32_ty], 2086 [IntrArgMemOnly]>; 2087 def int_x86_avx2_maskstore_q : GCCBuiltin<"__builtin_ia32_maskstoreq">, 2088 Intrinsic<[], [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty], 2089 [IntrArgMemOnly]>; 2090 def int_x86_avx2_maskstore_d_256 : 2091 GCCBuiltin<"__builtin_ia32_maskstored256">, 2092 Intrinsic<[], [llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i32_ty], 2093 [IntrArgMemOnly]>; 2094 def int_x86_avx2_maskstore_q_256 : 2095 GCCBuiltin<"__builtin_ia32_maskstoreq256">, 2096 Intrinsic<[], [llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i64_ty], 2097 [IntrArgMemOnly]>; 2098 } 2099 2100 // Variable bit shift ops 2101 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2102 def int_x86_avx2_psllv_d : GCCBuiltin<"__builtin_ia32_psllv4si">, 2103 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 2104 [IntrNoMem]>; 2105 def int_x86_avx2_psllv_d_256 : GCCBuiltin<"__builtin_ia32_psllv8si">, 2106 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 2107 [IntrNoMem]>; 2108 def int_x86_avx2_psllv_q : GCCBuiltin<"__builtin_ia32_psllv2di">, 2109 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 2110 [IntrNoMem]>; 2111 def int_x86_avx2_psllv_q_256 : GCCBuiltin<"__builtin_ia32_psllv4di">, 2112 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 2113 [IntrNoMem]>; 2114 2115 def int_x86_avx512_psllv_d_512 : GCCBuiltin<"__builtin_ia32_psllv16si">, 2116 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 2117 [IntrNoMem]>; 2118 def int_x86_avx512_psllv_q_512 : GCCBuiltin<"__builtin_ia32_psllv8di">, 2119 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 2120 [IntrNoMem]>; 2121 2122 def int_x86_avx2_psrlv_d : GCCBuiltin<"__builtin_ia32_psrlv4si">, 2123 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 2124 [IntrNoMem]>; 2125 def int_x86_avx2_psrlv_d_256 : GCCBuiltin<"__builtin_ia32_psrlv8si">, 2126 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 2127 [IntrNoMem]>; 2128 def int_x86_avx2_psrlv_q : GCCBuiltin<"__builtin_ia32_psrlv2di">, 2129 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 2130 [IntrNoMem]>; 2131 def int_x86_avx2_psrlv_q_256 : GCCBuiltin<"__builtin_ia32_psrlv4di">, 2132 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 2133 [IntrNoMem]>; 2134 2135 def int_x86_avx512_psrlv_d_512 : GCCBuiltin<"__builtin_ia32_psrlv16si">, 2136 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 2137 [IntrNoMem]>; 2138 def int_x86_avx512_psrlv_q_512 : GCCBuiltin<"__builtin_ia32_psrlv8di">, 2139 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 2140 [IntrNoMem]>; 2141 2142 def int_x86_avx2_psrav_d : GCCBuiltin<"__builtin_ia32_psrav4si">, 2143 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 2144 [IntrNoMem]>; 2145 def int_x86_avx2_psrav_d_256 : GCCBuiltin<"__builtin_ia32_psrav8si">, 2146 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty], 2147 [IntrNoMem]>; 2148 2149 def int_x86_avx512_psrav_d_512 : GCCBuiltin<"__builtin_ia32_psrav16si">, 2150 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 2151 [IntrNoMem]>; 2152 def int_x86_avx512_psrav_q_128 : GCCBuiltin<"__builtin_ia32_psravq128">, 2153 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 2154 [IntrNoMem]>; 2155 def int_x86_avx512_psrav_q_256 : GCCBuiltin<"__builtin_ia32_psravq256">, 2156 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty], 2157 [IntrNoMem]>; 2158 def int_x86_avx512_psrav_q_512 : GCCBuiltin<"__builtin_ia32_psrav8di">, 2159 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty], 2160 [IntrNoMem]>; 2161 2162 def int_x86_avx512_psllv_w_128 : GCCBuiltin<"__builtin_ia32_psllv8hi">, 2163 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 2164 [IntrNoMem]>; 2165 def int_x86_avx512_psllv_w_256 : GCCBuiltin<"__builtin_ia32_psllv16hi">, 2166 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty], 2167 [IntrNoMem]>; 2168 def int_x86_avx512_psllv_w_512 : GCCBuiltin<"__builtin_ia32_psllv32hi">, 2169 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 2170 [IntrNoMem]>; 2171 2172 def int_x86_avx512_psrlv_w_128 : GCCBuiltin<"__builtin_ia32_psrlv8hi">, 2173 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 2174 [IntrNoMem]>; 2175 def int_x86_avx512_psrlv_w_256 : GCCBuiltin<"__builtin_ia32_psrlv16hi">, 2176 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty], 2177 [IntrNoMem]>; 2178 def int_x86_avx512_psrlv_w_512 : GCCBuiltin<"__builtin_ia32_psrlv32hi">, 2179 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 2180 [IntrNoMem]>; 2181 2182 def int_x86_avx512_psrav_w_128 : GCCBuiltin<"__builtin_ia32_psrav8hi">, 2183 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 2184 [IntrNoMem]>; 2185 def int_x86_avx512_psrav_w_256 : GCCBuiltin<"__builtin_ia32_psrav16hi">, 2186 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty], 2187 [IntrNoMem]>; 2188 def int_x86_avx512_psrav_w_512 : GCCBuiltin<"__builtin_ia32_psrav32hi">, 2189 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty], 2190 [IntrNoMem]>; 2191 2192 def int_x86_avx512_mask_prorv_d_128 : GCCBuiltin<"__builtin_ia32_prorvd128_mask">, 2193 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 2194 llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2195 def int_x86_avx512_mask_prorv_d_256 : GCCBuiltin<"__builtin_ia32_prorvd256_mask">, 2196 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2197 llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 2198 def int_x86_avx512_mask_prorv_d_512 : GCCBuiltin<"__builtin_ia32_prorvd512_mask">, 2199 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2200 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2201 def int_x86_avx512_mask_prorv_q_128 : GCCBuiltin<"__builtin_ia32_prorvq128_mask">, 2202 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 2203 llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2204 def int_x86_avx512_mask_prorv_q_256 : GCCBuiltin<"__builtin_ia32_prorvq256_mask">, 2205 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 2206 llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2207 def int_x86_avx512_mask_prorv_q_512 : GCCBuiltin<"__builtin_ia32_prorvq512_mask">, 2208 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2209 llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2210 2211 def int_x86_avx512_mask_prol_d_128 : GCCBuiltin<"__builtin_ia32_prold128_mask">, 2212 Intrinsic<[llvm_v4i32_ty] , [llvm_v4i32_ty, 2213 llvm_i32_ty, llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2214 def int_x86_avx512_mask_prol_d_256 : GCCBuiltin<"__builtin_ia32_prold256_mask">, 2215 Intrinsic<[llvm_v8i32_ty] , [llvm_v8i32_ty, 2216 llvm_i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 2217 def int_x86_avx512_mask_prol_d_512 : GCCBuiltin<"__builtin_ia32_prold512_mask">, 2218 Intrinsic<[llvm_v16i32_ty] , [llvm_v16i32_ty, 2219 llvm_i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2220 def int_x86_avx512_mask_prol_q_128 : GCCBuiltin<"__builtin_ia32_prolq128_mask">, 2221 Intrinsic<[llvm_v2i64_ty] , [llvm_v2i64_ty, 2222 llvm_i32_ty, llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2223 def int_x86_avx512_mask_prol_q_256 : GCCBuiltin<"__builtin_ia32_prolq256_mask">, 2224 Intrinsic<[llvm_v4i64_ty] , [llvm_v4i64_ty, 2225 llvm_i32_ty, llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2226 def int_x86_avx512_mask_prol_q_512 : GCCBuiltin<"__builtin_ia32_prolq512_mask">, 2227 Intrinsic<[llvm_v8i64_ty] , [llvm_v8i64_ty, 2228 llvm_i32_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2229 2230 2231 def int_x86_avx512_mask_prolv_d_128 : GCCBuiltin<"__builtin_ia32_prolvd128_mask">, 2232 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 2233 llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2234 def int_x86_avx512_mask_prolv_d_256 : GCCBuiltin<"__builtin_ia32_prolvd256_mask">, 2235 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2236 llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 2237 def int_x86_avx512_mask_prolv_d_512 : GCCBuiltin<"__builtin_ia32_prolvd512_mask">, 2238 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2239 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2240 def int_x86_avx512_mask_prolv_q_128 : GCCBuiltin<"__builtin_ia32_prolvq128_mask">, 2241 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 2242 llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2243 def int_x86_avx512_mask_prolv_q_256 : GCCBuiltin<"__builtin_ia32_prolvq256_mask">, 2244 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 2245 llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2246 def int_x86_avx512_mask_prolv_q_512 : GCCBuiltin<"__builtin_ia32_prolvq512_mask">, 2247 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2248 llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2249 def int_x86_avx512_mask_pror_d_128 : GCCBuiltin<"__builtin_ia32_prord128_mask">, 2250 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, 2251 llvm_i32_ty, llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 2252 def int_x86_avx512_mask_pror_d_256 : GCCBuiltin<"__builtin_ia32_prord256_mask">, 2253 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 2254 llvm_i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 2255 def int_x86_avx512_mask_pror_d_512 : GCCBuiltin<"__builtin_ia32_prord512_mask">, 2256 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 2257 llvm_i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 2258 def int_x86_avx512_mask_pror_q_128 : GCCBuiltin<"__builtin_ia32_prorq128_mask">, 2259 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, 2260 llvm_i32_ty, llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2261 def int_x86_avx512_mask_pror_q_256 : GCCBuiltin<"__builtin_ia32_prorq256_mask">, 2262 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 2263 llvm_i32_ty, llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2264 def int_x86_avx512_mask_pror_q_512 : GCCBuiltin<"__builtin_ia32_prorq512_mask">, 2265 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 2266 llvm_i32_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2267 2268 } 2269 2270 // Gather ops 2271 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2272 def int_x86_avx2_gather_d_pd : GCCBuiltin<"__builtin_ia32_gatherd_pd">, 2273 Intrinsic<[llvm_v2f64_ty], 2274 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i8_ty], 2275 [IntrReadMem, IntrArgMemOnly]>; 2276 def int_x86_avx2_gather_d_pd_256 : GCCBuiltin<"__builtin_ia32_gatherd_pd256">, 2277 Intrinsic<[llvm_v4f64_ty], 2278 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i8_ty], 2279 [IntrReadMem, IntrArgMemOnly]>; 2280 def int_x86_avx2_gather_q_pd : GCCBuiltin<"__builtin_ia32_gatherq_pd">, 2281 Intrinsic<[llvm_v2f64_ty], 2282 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty], 2283 [IntrReadMem, IntrArgMemOnly]>; 2284 def int_x86_avx2_gather_q_pd_256 : GCCBuiltin<"__builtin_ia32_gatherq_pd256">, 2285 Intrinsic<[llvm_v4f64_ty], 2286 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], 2287 [IntrReadMem, IntrArgMemOnly]>; 2288 def int_x86_avx2_gather_d_ps : GCCBuiltin<"__builtin_ia32_gatherd_ps">, 2289 Intrinsic<[llvm_v4f32_ty], 2290 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty], 2291 [IntrReadMem, IntrArgMemOnly]>; 2292 def int_x86_avx2_gather_d_ps_256 : GCCBuiltin<"__builtin_ia32_gatherd_ps256">, 2293 Intrinsic<[llvm_v8f32_ty], 2294 [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], 2295 [IntrReadMem, IntrArgMemOnly]>; 2296 def int_x86_avx2_gather_q_ps : GCCBuiltin<"__builtin_ia32_gatherq_ps">, 2297 Intrinsic<[llvm_v4f32_ty], 2298 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty], 2299 [IntrReadMem, IntrArgMemOnly]>; 2300 def int_x86_avx2_gather_q_ps_256 : GCCBuiltin<"__builtin_ia32_gatherq_ps256">, 2301 Intrinsic<[llvm_v4f32_ty], 2302 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i8_ty], 2303 [IntrReadMem, IntrArgMemOnly]>; 2304 2305 def int_x86_avx2_gather_d_q : GCCBuiltin<"__builtin_ia32_gatherd_q">, 2306 Intrinsic<[llvm_v2i64_ty], 2307 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i8_ty], 2308 [IntrReadMem, IntrArgMemOnly]>; 2309 def int_x86_avx2_gather_d_q_256 : GCCBuiltin<"__builtin_ia32_gatherd_q256">, 2310 Intrinsic<[llvm_v4i64_ty], 2311 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i8_ty], 2312 [IntrReadMem, IntrArgMemOnly]>; 2313 def int_x86_avx2_gather_q_q : GCCBuiltin<"__builtin_ia32_gatherq_q">, 2314 Intrinsic<[llvm_v2i64_ty], 2315 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 2316 [IntrReadMem, IntrArgMemOnly]>; 2317 def int_x86_avx2_gather_q_q_256 : GCCBuiltin<"__builtin_ia32_gatherq_q256">, 2318 Intrinsic<[llvm_v4i64_ty], 2319 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 2320 [IntrReadMem, IntrArgMemOnly]>; 2321 def int_x86_avx2_gather_d_d : GCCBuiltin<"__builtin_ia32_gatherd_d">, 2322 Intrinsic<[llvm_v4i32_ty], 2323 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 2324 [IntrReadMem, IntrArgMemOnly]>; 2325 def int_x86_avx2_gather_d_d_256 : GCCBuiltin<"__builtin_ia32_gatherd_d256">, 2326 Intrinsic<[llvm_v8i32_ty], 2327 [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 2328 [IntrReadMem, IntrArgMemOnly]>; 2329 def int_x86_avx2_gather_q_d : GCCBuiltin<"__builtin_ia32_gatherq_d">, 2330 Intrinsic<[llvm_v4i32_ty], 2331 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 2332 [IntrReadMem, IntrArgMemOnly]>; 2333 def int_x86_avx2_gather_q_d_256 : GCCBuiltin<"__builtin_ia32_gatherq_d256">, 2334 Intrinsic<[llvm_v4i32_ty], 2335 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 2336 [IntrReadMem, IntrArgMemOnly]>; 2337 } 2338 2339 // Misc. 2340 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2341 def int_x86_avx2_pmovmskb : GCCBuiltin<"__builtin_ia32_pmovmskb256">, 2342 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty], [IntrNoMem]>; 2343 def int_x86_avx2_pshuf_b : GCCBuiltin<"__builtin_ia32_pshufb256">, 2344 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 2345 llvm_v32i8_ty], [IntrNoMem]>; 2346 def int_x86_avx2_mpsadbw : GCCBuiltin<"__builtin_ia32_mpsadbw256">, 2347 Intrinsic<[llvm_v16i16_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 2348 llvm_i8_ty], [IntrNoMem, Commutative]>; 2349 def int_x86_avx2_movntdqa : GCCBuiltin<"__builtin_ia32_movntdqa256">, 2350 Intrinsic<[llvm_v4i64_ty], [llvm_ptr_ty], [IntrReadMem]>; 2351 } 2352 2353 //===----------------------------------------------------------------------===// 2354 // FMA3 and FMA4 2355 2356 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 2357 def int_x86_fma_vfmadd_ss : GCCBuiltin<"__builtin_ia32_vfmaddss">, 2358 Intrinsic<[llvm_v4f32_ty], 2359 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2360 [IntrNoMem]>; 2361 def int_x86_fma_vfmadd_sd : GCCBuiltin<"__builtin_ia32_vfmaddsd">, 2362 Intrinsic<[llvm_v2f64_ty], 2363 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2364 [IntrNoMem]>; 2365 def int_x86_fma_vfmadd_ps : GCCBuiltin<"__builtin_ia32_vfmaddps">, 2366 Intrinsic<[llvm_v4f32_ty], 2367 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2368 [IntrNoMem]>; 2369 def int_x86_fma_vfmadd_pd : GCCBuiltin<"__builtin_ia32_vfmaddpd">, 2370 Intrinsic<[llvm_v2f64_ty], 2371 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2372 [IntrNoMem]>; 2373 def int_x86_fma_vfmadd_ps_256 : GCCBuiltin<"__builtin_ia32_vfmaddps256">, 2374 Intrinsic<[llvm_v8f32_ty], 2375 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2376 [IntrNoMem]>; 2377 def int_x86_fma_vfmadd_pd_256 : GCCBuiltin<"__builtin_ia32_vfmaddpd256">, 2378 Intrinsic<[llvm_v4f64_ty], 2379 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2380 [IntrNoMem]>; 2381 2382 def int_x86_fma_vfmsub_ss : GCCBuiltin<"__builtin_ia32_vfmsubss">, 2383 Intrinsic<[llvm_v4f32_ty], 2384 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2385 [IntrNoMem]>; 2386 def int_x86_fma_vfmsub_sd : GCCBuiltin<"__builtin_ia32_vfmsubsd">, 2387 Intrinsic<[llvm_v2f64_ty], 2388 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2389 [IntrNoMem]>; 2390 def int_x86_fma_vfmsub_ps : GCCBuiltin<"__builtin_ia32_vfmsubps">, 2391 Intrinsic<[llvm_v4f32_ty], 2392 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2393 [IntrNoMem]>; 2394 def int_x86_fma_vfmsub_pd : GCCBuiltin<"__builtin_ia32_vfmsubpd">, 2395 Intrinsic<[llvm_v2f64_ty], 2396 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2397 [IntrNoMem]>; 2398 def int_x86_fma_vfmsub_ps_256 : GCCBuiltin<"__builtin_ia32_vfmsubps256">, 2399 Intrinsic<[llvm_v8f32_ty], 2400 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2401 [IntrNoMem]>; 2402 def int_x86_fma_vfmsub_pd_256 : GCCBuiltin<"__builtin_ia32_vfmsubpd256">, 2403 Intrinsic<[llvm_v4f64_ty], 2404 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2405 [IntrNoMem]>; 2406 def int_x86_fma_vfnmadd_ss : GCCBuiltin<"__builtin_ia32_vfnmaddss">, 2407 Intrinsic<[llvm_v4f32_ty], 2408 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2409 [IntrNoMem]>; 2410 def int_x86_fma_vfnmadd_sd : GCCBuiltin<"__builtin_ia32_vfnmaddsd">, 2411 Intrinsic<[llvm_v2f64_ty], 2412 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2413 [IntrNoMem]>; 2414 def int_x86_fma_vfnmadd_ps : GCCBuiltin<"__builtin_ia32_vfnmaddps">, 2415 Intrinsic<[llvm_v4f32_ty], 2416 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2417 [IntrNoMem]>; 2418 def int_x86_fma_vfnmadd_pd : GCCBuiltin<"__builtin_ia32_vfnmaddpd">, 2419 Intrinsic<[llvm_v2f64_ty], 2420 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2421 [IntrNoMem]>; 2422 def int_x86_fma_vfnmadd_ps_256 : GCCBuiltin<"__builtin_ia32_vfnmaddps256">, 2423 Intrinsic<[llvm_v8f32_ty], 2424 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2425 [IntrNoMem]>; 2426 def int_x86_fma_vfnmadd_pd_256 : GCCBuiltin<"__builtin_ia32_vfnmaddpd256">, 2427 Intrinsic<[llvm_v4f64_ty], 2428 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2429 [IntrNoMem]>; 2430 def int_x86_fma_vfnmsub_ss : GCCBuiltin<"__builtin_ia32_vfnmsubss">, 2431 Intrinsic<[llvm_v4f32_ty], 2432 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2433 [IntrNoMem]>; 2434 def int_x86_fma_vfnmsub_sd : GCCBuiltin<"__builtin_ia32_vfnmsubsd">, 2435 Intrinsic<[llvm_v2f64_ty], 2436 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2437 [IntrNoMem]>; 2438 def int_x86_fma_vfnmsub_ps : GCCBuiltin<"__builtin_ia32_vfnmsubps">, 2439 Intrinsic<[llvm_v4f32_ty], 2440 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2441 [IntrNoMem]>; 2442 def int_x86_fma_vfnmsub_pd : GCCBuiltin<"__builtin_ia32_vfnmsubpd">, 2443 Intrinsic<[llvm_v2f64_ty], 2444 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2445 [IntrNoMem]>; 2446 def int_x86_fma_vfnmsub_ps_256 : GCCBuiltin<"__builtin_ia32_vfnmsubps256">, 2447 Intrinsic<[llvm_v8f32_ty], 2448 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2449 [IntrNoMem]>; 2450 def int_x86_fma_vfnmsub_pd_256 : GCCBuiltin<"__builtin_ia32_vfnmsubpd256">, 2451 Intrinsic<[llvm_v4f64_ty], 2452 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2453 [IntrNoMem]>; 2454 def int_x86_fma_vfmaddsub_ps : GCCBuiltin<"__builtin_ia32_vfmaddsubps">, 2455 Intrinsic<[llvm_v4f32_ty], 2456 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2457 [IntrNoMem]>; 2458 def int_x86_fma_vfmaddsub_pd : GCCBuiltin<"__builtin_ia32_vfmaddsubpd">, 2459 Intrinsic<[llvm_v2f64_ty], 2460 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2461 [IntrNoMem]>; 2462 def int_x86_fma_vfmaddsub_ps_256 : 2463 GCCBuiltin<"__builtin_ia32_vfmaddsubps256">, 2464 Intrinsic<[llvm_v8f32_ty], 2465 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2466 [IntrNoMem]>; 2467 def int_x86_fma_vfmaddsub_pd_256 : 2468 GCCBuiltin<"__builtin_ia32_vfmaddsubpd256">, 2469 Intrinsic<[llvm_v4f64_ty], 2470 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2471 [IntrNoMem]>; 2472 def int_x86_fma_vfmsubadd_ps : GCCBuiltin<"__builtin_ia32_vfmsubaddps">, 2473 Intrinsic<[llvm_v4f32_ty], 2474 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], 2475 [IntrNoMem]>; 2476 def int_x86_fma_vfmsubadd_pd : GCCBuiltin<"__builtin_ia32_vfmsubaddpd">, 2477 Intrinsic<[llvm_v2f64_ty], 2478 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], 2479 [IntrNoMem]>; 2480 def int_x86_fma_vfmsubadd_ps_256 : 2481 GCCBuiltin<"__builtin_ia32_vfmsubaddps256">, 2482 Intrinsic<[llvm_v8f32_ty], 2483 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty], 2484 [IntrNoMem]>; 2485 def int_x86_fma_vfmsubadd_pd_256 : 2486 GCCBuiltin<"__builtin_ia32_vfmsubaddpd256">, 2487 Intrinsic<[llvm_v4f64_ty], 2488 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty], 2489 [IntrNoMem]>; 2490 2491 def int_x86_avx512_mask_vfmadd_pd_128 : 2492 GCCBuiltin<"__builtin_ia32_vfmaddpd128_mask">, 2493 Intrinsic<[llvm_v2f64_ty], 2494 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2495 [IntrNoMem]>; 2496 2497 def int_x86_avx512_mask3_vfmadd_pd_128 : 2498 GCCBuiltin<"__builtin_ia32_vfmaddpd128_mask3">, 2499 Intrinsic<[llvm_v2f64_ty], 2500 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2501 [IntrNoMem]>; 2502 2503 def int_x86_avx512_maskz_vfmadd_pd_128 : 2504 GCCBuiltin<"__builtin_ia32_vfmaddpd128_maskz">, 2505 Intrinsic<[llvm_v2f64_ty], 2506 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2507 [IntrNoMem]>; 2508 2509 def int_x86_avx512_mask_vfmadd_pd_256 : 2510 GCCBuiltin<"__builtin_ia32_vfmaddpd256_mask">, 2511 Intrinsic<[llvm_v4f64_ty], 2512 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2513 [IntrNoMem]>; 2514 2515 def int_x86_avx512_mask3_vfmadd_pd_256 : 2516 GCCBuiltin<"__builtin_ia32_vfmaddpd256_mask3">, 2517 Intrinsic<[llvm_v4f64_ty], 2518 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2519 [IntrNoMem]>; 2520 2521 def int_x86_avx512_maskz_vfmadd_pd_256 : 2522 GCCBuiltin<"__builtin_ia32_vfmaddpd256_maskz">, 2523 Intrinsic<[llvm_v4f64_ty], 2524 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2525 [IntrNoMem]>; 2526 2527 def int_x86_avx512_mask_vfmadd_pd_512 : 2528 GCCBuiltin<"__builtin_ia32_vfmaddpd512_mask">, 2529 Intrinsic<[llvm_v8f64_ty], 2530 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2531 llvm_i32_ty], [IntrNoMem]>; 2532 2533 def int_x86_avx512_mask3_vfmadd_pd_512 : 2534 GCCBuiltin<"__builtin_ia32_vfmaddpd512_mask3">, 2535 Intrinsic<[llvm_v8f64_ty], 2536 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2537 llvm_i32_ty], [IntrNoMem]>; 2538 2539 def int_x86_avx512_maskz_vfmadd_pd_512 : 2540 GCCBuiltin<"__builtin_ia32_vfmaddpd512_maskz">, 2541 Intrinsic<[llvm_v8f64_ty], 2542 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2543 llvm_i32_ty], [IntrNoMem]>; 2544 2545 def int_x86_avx512_mask_vfmadd_ps_128 : 2546 GCCBuiltin<"__builtin_ia32_vfmaddps128_mask">, 2547 Intrinsic<[llvm_v4f32_ty], 2548 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2549 [IntrNoMem]>; 2550 2551 def int_x86_avx512_mask3_vfmadd_ps_128 : 2552 GCCBuiltin<"__builtin_ia32_vfmaddps128_mask3">, 2553 Intrinsic<[llvm_v4f32_ty], 2554 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2555 [IntrNoMem]>; 2556 2557 def int_x86_avx512_maskz_vfmadd_ps_128 : 2558 GCCBuiltin<"__builtin_ia32_vfmaddps128_maskz">, 2559 Intrinsic<[llvm_v4f32_ty], 2560 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2561 [IntrNoMem]>; 2562 2563 def int_x86_avx512_mask_vfmadd_ps_256 : 2564 GCCBuiltin<"__builtin_ia32_vfmaddps256_mask">, 2565 Intrinsic<[llvm_v8f32_ty], 2566 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2567 [IntrNoMem]>; 2568 2569 def int_x86_avx512_mask3_vfmadd_ps_256 : 2570 GCCBuiltin<"__builtin_ia32_vfmaddps256_mask3">, 2571 Intrinsic<[llvm_v8f32_ty], 2572 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2573 [IntrNoMem]>; 2574 2575 def int_x86_avx512_maskz_vfmadd_ps_256 : 2576 GCCBuiltin<"__builtin_ia32_vfmaddps256_maskz">, 2577 Intrinsic<[llvm_v8f32_ty], 2578 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2579 [IntrNoMem]>; 2580 2581 def int_x86_avx512_mask_vfmadd_ps_512 : 2582 GCCBuiltin<"__builtin_ia32_vfmaddps512_mask">, 2583 Intrinsic<[llvm_v16f32_ty], 2584 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2585 llvm_i32_ty], [IntrNoMem]>; 2586 2587 def int_x86_avx512_mask3_vfmadd_ps_512 : 2588 GCCBuiltin<"__builtin_ia32_vfmaddps512_mask3">, 2589 Intrinsic<[llvm_v16f32_ty], 2590 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2591 llvm_i32_ty], [IntrNoMem]>; 2592 2593 def int_x86_avx512_maskz_vfmadd_ps_512 : 2594 GCCBuiltin<"__builtin_ia32_vfmaddps512_maskz">, 2595 Intrinsic<[llvm_v16f32_ty], 2596 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2597 llvm_i32_ty], [IntrNoMem]>; 2598 2599 def int_x86_avx512_mask_vfmaddsub_pd_128 : 2600 GCCBuiltin<"__builtin_ia32_vfmaddsubpd128_mask">, 2601 Intrinsic<[llvm_v2f64_ty], 2602 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2603 [IntrNoMem]>; 2604 2605 def int_x86_avx512_mask3_vfmaddsub_pd_128 : 2606 GCCBuiltin<"__builtin_ia32_vfmaddsubpd128_mask3">, 2607 Intrinsic<[llvm_v2f64_ty], 2608 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2609 [IntrNoMem]>; 2610 2611 def int_x86_avx512_maskz_vfmaddsub_pd_128 : 2612 GCCBuiltin<"__builtin_ia32_vfmaddsubpd128_maskz">, 2613 Intrinsic<[llvm_v2f64_ty], 2614 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2615 [IntrNoMem]>; 2616 2617 def int_x86_avx512_mask_vfmaddsub_pd_256 : 2618 GCCBuiltin<"__builtin_ia32_vfmaddsubpd256_mask">, 2619 Intrinsic<[llvm_v4f64_ty], 2620 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2621 [IntrNoMem]>; 2622 2623 def int_x86_avx512_mask3_vfmaddsub_pd_256 : 2624 GCCBuiltin<"__builtin_ia32_vfmaddsubpd256_mask3">, 2625 Intrinsic<[llvm_v4f64_ty], 2626 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2627 [IntrNoMem]>; 2628 2629 def int_x86_avx512_maskz_vfmaddsub_pd_256 : 2630 GCCBuiltin<"__builtin_ia32_vfmaddsubpd256_maskz">, 2631 Intrinsic<[llvm_v4f64_ty], 2632 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2633 [IntrNoMem]>; 2634 2635 def int_x86_avx512_mask_vfmaddsub_pd_512 : 2636 GCCBuiltin<"__builtin_ia32_vfmaddsubpd512_mask">, 2637 Intrinsic<[llvm_v8f64_ty], 2638 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2639 llvm_i32_ty], [IntrNoMem]>; 2640 2641 def int_x86_avx512_mask3_vfmaddsub_pd_512 : 2642 GCCBuiltin<"__builtin_ia32_vfmaddsubpd512_mask3">, 2643 Intrinsic<[llvm_v8f64_ty], 2644 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2645 llvm_i32_ty], [IntrNoMem]>; 2646 2647 def int_x86_avx512_maskz_vfmaddsub_pd_512 : 2648 GCCBuiltin<"__builtin_ia32_vfmaddsubpd512_maskz">, 2649 Intrinsic<[llvm_v8f64_ty], 2650 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2651 llvm_i32_ty], [IntrNoMem]>; 2652 2653 def int_x86_avx512_mask_vfmaddsub_ps_128 : 2654 GCCBuiltin<"__builtin_ia32_vfmaddsubps128_mask">, 2655 Intrinsic<[llvm_v4f32_ty], 2656 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2657 [IntrNoMem]>; 2658 2659 def int_x86_avx512_mask3_vfmaddsub_ps_128 : 2660 GCCBuiltin<"__builtin_ia32_vfmaddsubps128_mask3">, 2661 Intrinsic<[llvm_v4f32_ty], 2662 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2663 [IntrNoMem]>; 2664 2665 def int_x86_avx512_maskz_vfmaddsub_ps_128 : 2666 GCCBuiltin<"__builtin_ia32_vfmaddsubps128_maskz">, 2667 Intrinsic<[llvm_v4f32_ty], 2668 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2669 [IntrNoMem]>; 2670 2671 def int_x86_avx512_mask_vfmaddsub_ps_256 : 2672 GCCBuiltin<"__builtin_ia32_vfmaddsubps256_mask">, 2673 Intrinsic<[llvm_v8f32_ty], 2674 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2675 [IntrNoMem]>; 2676 2677 def int_x86_avx512_mask3_vfmaddsub_ps_256 : 2678 GCCBuiltin<"__builtin_ia32_vfmaddsubps256_mask3">, 2679 Intrinsic<[llvm_v8f32_ty], 2680 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2681 [IntrNoMem]>; 2682 2683 def int_x86_avx512_maskz_vfmaddsub_ps_256 : 2684 GCCBuiltin<"__builtin_ia32_vfmaddsubps256_maskz">, 2685 Intrinsic<[llvm_v8f32_ty], 2686 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2687 [IntrNoMem]>; 2688 2689 def int_x86_avx512_mask_vfmaddsub_ps_512 : 2690 GCCBuiltin<"__builtin_ia32_vfmaddsubps512_mask">, 2691 Intrinsic<[llvm_v16f32_ty], 2692 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2693 llvm_i32_ty], [IntrNoMem]>; 2694 2695 def int_x86_avx512_mask3_vfmaddsub_ps_512 : 2696 GCCBuiltin<"__builtin_ia32_vfmaddsubps512_mask3">, 2697 Intrinsic<[llvm_v16f32_ty], 2698 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2699 llvm_i32_ty], [IntrNoMem]>; 2700 2701 def int_x86_avx512_maskz_vfmaddsub_ps_512 : 2702 GCCBuiltin<"__builtin_ia32_vfmaddsubps512_maskz">, 2703 Intrinsic<[llvm_v16f32_ty], 2704 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2705 llvm_i32_ty], [IntrNoMem]>; 2706 2707 2708 def int_x86_avx512_mask_vfmadd_sd : 2709 GCCBuiltin<"__builtin_ia32_vfmaddsd3_mask">, 2710 Intrinsic<[llvm_v2f64_ty], 2711 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty, 2712 llvm_i32_ty], [IntrNoMem]>; 2713 2714 def int_x86_avx512_mask_vfmadd_ss : 2715 GCCBuiltin<"__builtin_ia32_vfmaddss3_mask">, 2716 Intrinsic<[llvm_v4f32_ty], 2717 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty, 2718 llvm_i32_ty], [IntrNoMem]>; 2719 2720 def int_x86_avx512_maskz_vfmadd_sd : 2721 GCCBuiltin<"__builtin_ia32_vfmaddsd3_maskz">, 2722 Intrinsic<[llvm_v2f64_ty], 2723 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty, 2724 llvm_i32_ty], [IntrNoMem]>; 2725 2726 def int_x86_avx512_maskz_vfmadd_ss : 2727 GCCBuiltin<"__builtin_ia32_vfmaddss3_maskz">, 2728 Intrinsic<[llvm_v4f32_ty], 2729 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty, 2730 llvm_i32_ty], [IntrNoMem]>; 2731 2732 def int_x86_avx512_mask3_vfmadd_sd : 2733 GCCBuiltin<"__builtin_ia32_vfmaddsd3_mask3">, 2734 Intrinsic<[llvm_v2f64_ty], 2735 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty, 2736 llvm_i32_ty], [IntrNoMem]>; 2737 2738 def int_x86_avx512_mask3_vfmadd_ss : 2739 GCCBuiltin<"__builtin_ia32_vfmaddss3_mask3">, 2740 Intrinsic<[llvm_v4f32_ty], 2741 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty, 2742 llvm_i32_ty], [IntrNoMem]>; 2743 2744 def int_x86_avx512_mask3_vfmsub_sd : 2745 GCCBuiltin<"__builtin_ia32_vfmsubsd3_mask3">, 2746 Intrinsic<[llvm_v2f64_ty], 2747 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty, 2748 llvm_i32_ty], [IntrNoMem]>; 2749 2750 def int_x86_avx512_mask3_vfmsub_ss : 2751 GCCBuiltin<"__builtin_ia32_vfmsubss3_mask3">, 2752 Intrinsic<[llvm_v4f32_ty], 2753 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty, 2754 llvm_i32_ty], [IntrNoMem]>; 2755 2756 def int_x86_avx512_mask3_vfmsub_pd_128 : 2757 GCCBuiltin<"__builtin_ia32_vfmsubpd128_mask3">, 2758 Intrinsic<[llvm_v2f64_ty], 2759 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2760 [IntrNoMem]>; 2761 2762 def int_x86_avx512_mask3_vfmsub_pd_256 : 2763 GCCBuiltin<"__builtin_ia32_vfmsubpd256_mask3">, 2764 Intrinsic<[llvm_v4f64_ty], 2765 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2766 [IntrNoMem]>; 2767 2768 def int_x86_avx512_mask3_vfmsub_pd_512 : 2769 GCCBuiltin<"__builtin_ia32_vfmsubpd512_mask3">, 2770 Intrinsic<[llvm_v8f64_ty], 2771 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2772 llvm_i32_ty], [IntrNoMem]>; 2773 2774 def int_x86_avx512_mask3_vfmsub_ps_128 : 2775 GCCBuiltin<"__builtin_ia32_vfmsubps128_mask3">, 2776 Intrinsic<[llvm_v4f32_ty], 2777 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2778 [IntrNoMem]>; 2779 2780 def int_x86_avx512_mask3_vfmsub_ps_256 : 2781 GCCBuiltin<"__builtin_ia32_vfmsubps256_mask3">, 2782 Intrinsic<[llvm_v8f32_ty], 2783 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2784 [IntrNoMem]>; 2785 2786 def int_x86_avx512_mask3_vfmsub_ps_512 : 2787 GCCBuiltin<"__builtin_ia32_vfmsubps512_mask3">, 2788 Intrinsic<[llvm_v16f32_ty], 2789 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2790 llvm_i32_ty], [IntrNoMem]>; 2791 2792 def int_x86_avx512_mask3_vfmsubadd_pd_128 : 2793 GCCBuiltin<"__builtin_ia32_vfmsubaddpd128_mask3">, 2794 Intrinsic<[llvm_v2f64_ty], 2795 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2796 [IntrNoMem]>; 2797 2798 def int_x86_avx512_mask3_vfmsubadd_pd_256 : 2799 GCCBuiltin<"__builtin_ia32_vfmsubaddpd256_mask3">, 2800 Intrinsic<[llvm_v4f64_ty], 2801 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2802 [IntrNoMem]>; 2803 2804 def int_x86_avx512_mask3_vfmsubadd_pd_512 : 2805 GCCBuiltin<"__builtin_ia32_vfmsubaddpd512_mask3">, 2806 Intrinsic<[llvm_v8f64_ty], 2807 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2808 llvm_i32_ty], [IntrNoMem]>; 2809 2810 def int_x86_avx512_mask3_vfmsubadd_ps_128 : 2811 GCCBuiltin<"__builtin_ia32_vfmsubaddps128_mask3">, 2812 Intrinsic<[llvm_v4f32_ty], 2813 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2814 [IntrNoMem]>; 2815 2816 def int_x86_avx512_mask3_vfmsubadd_ps_256 : 2817 GCCBuiltin<"__builtin_ia32_vfmsubaddps256_mask3">, 2818 Intrinsic<[llvm_v8f32_ty], 2819 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2820 [IntrNoMem]>; 2821 2822 def int_x86_avx512_mask3_vfmsubadd_ps_512 : 2823 GCCBuiltin<"__builtin_ia32_vfmsubaddps512_mask3">, 2824 Intrinsic<[llvm_v16f32_ty], 2825 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2826 llvm_i32_ty], [IntrNoMem]>; 2827 2828 def int_x86_avx512_mask_vfnmadd_pd_128 : 2829 GCCBuiltin<"__builtin_ia32_vfnmaddpd128_mask">, 2830 Intrinsic<[llvm_v2f64_ty], 2831 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2832 [IntrNoMem]>; 2833 2834 def int_x86_avx512_mask_vfnmadd_pd_256 : 2835 GCCBuiltin<"__builtin_ia32_vfnmaddpd256_mask">, 2836 Intrinsic<[llvm_v4f64_ty], 2837 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2838 [IntrNoMem]>; 2839 2840 def int_x86_avx512_mask_vfnmadd_pd_512 : 2841 GCCBuiltin<"__builtin_ia32_vfnmaddpd512_mask">, 2842 Intrinsic<[llvm_v8f64_ty], 2843 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2844 llvm_i32_ty], [IntrNoMem]>; 2845 2846 def int_x86_avx512_mask_vfnmadd_ps_128 : 2847 GCCBuiltin<"__builtin_ia32_vfnmaddps128_mask">, 2848 Intrinsic<[llvm_v4f32_ty], 2849 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2850 [IntrNoMem]>; 2851 2852 def int_x86_avx512_mask_vfnmadd_ps_256 : 2853 GCCBuiltin<"__builtin_ia32_vfnmaddps256_mask">, 2854 Intrinsic<[llvm_v8f32_ty], 2855 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2856 [IntrNoMem]>; 2857 2858 def int_x86_avx512_mask_vfnmadd_ps_512 : 2859 GCCBuiltin<"__builtin_ia32_vfnmaddps512_mask">, 2860 Intrinsic<[llvm_v16f32_ty], 2861 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2862 llvm_i32_ty], [IntrNoMem]>; 2863 2864 def int_x86_avx512_mask3_vfnmsub_sd : 2865 GCCBuiltin<"__builtin_ia32_vfnmsubsd3_mask3">, 2866 Intrinsic<[llvm_v2f64_ty], 2867 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty, 2868 llvm_i32_ty], [IntrNoMem]>; 2869 2870 def int_x86_avx512_mask3_vfnmsub_ss : 2871 GCCBuiltin<"__builtin_ia32_vfnmsubss3_mask3">, 2872 Intrinsic<[llvm_v4f32_ty], 2873 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty, 2874 llvm_i32_ty], [IntrNoMem]>; 2875 2876 def int_x86_avx512_mask_vfnmsub_pd_128 : 2877 GCCBuiltin<"__builtin_ia32_vfnmsubpd128_mask">, 2878 Intrinsic<[llvm_v2f64_ty], 2879 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2880 [IntrNoMem]>; 2881 2882 def int_x86_avx512_mask3_vfnmsub_pd_128 : 2883 GCCBuiltin<"__builtin_ia32_vfnmsubpd128_mask3">, 2884 Intrinsic<[llvm_v2f64_ty], 2885 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty], 2886 [IntrNoMem]>; 2887 2888 def int_x86_avx512_mask_vfnmsub_pd_256 : 2889 GCCBuiltin<"__builtin_ia32_vfnmsubpd256_mask">, 2890 Intrinsic<[llvm_v4f64_ty], 2891 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2892 [IntrNoMem]>; 2893 2894 def int_x86_avx512_mask3_vfnmsub_pd_256 : 2895 GCCBuiltin<"__builtin_ia32_vfnmsubpd256_mask3">, 2896 Intrinsic<[llvm_v4f64_ty], 2897 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty], 2898 [IntrNoMem]>; 2899 2900 def int_x86_avx512_mask_vfnmsub_pd_512 : 2901 GCCBuiltin<"__builtin_ia32_vfnmsubpd512_mask">, 2902 Intrinsic<[llvm_v8f64_ty], 2903 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2904 llvm_i32_ty], [IntrNoMem]>; 2905 2906 def int_x86_avx512_mask3_vfnmsub_pd_512 : 2907 GCCBuiltin<"__builtin_ia32_vfnmsubpd512_mask3">, 2908 Intrinsic<[llvm_v8f64_ty], 2909 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty, 2910 llvm_i32_ty], [IntrNoMem]>; 2911 2912 def int_x86_avx512_mask_vfnmsub_ps_128 : 2913 GCCBuiltin<"__builtin_ia32_vfnmsubps128_mask">, 2914 Intrinsic<[llvm_v4f32_ty], 2915 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2916 [IntrNoMem]>; 2917 2918 def int_x86_avx512_mask3_vfnmsub_ps_128 : 2919 GCCBuiltin<"__builtin_ia32_vfnmsubps128_mask3">, 2920 Intrinsic<[llvm_v4f32_ty], 2921 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty], 2922 [IntrNoMem]>; 2923 2924 def int_x86_avx512_mask_vfnmsub_ps_256 : 2925 GCCBuiltin<"__builtin_ia32_vfnmsubps256_mask">, 2926 Intrinsic<[llvm_v8f32_ty], 2927 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2928 [IntrNoMem]>; 2929 2930 def int_x86_avx512_mask3_vfnmsub_ps_256 : 2931 GCCBuiltin<"__builtin_ia32_vfnmsubps256_mask3">, 2932 Intrinsic<[llvm_v8f32_ty], 2933 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty], 2934 [IntrNoMem]>; 2935 2936 def int_x86_avx512_mask_vfnmsub_ps_512 : 2937 GCCBuiltin<"__builtin_ia32_vfnmsubps512_mask">, 2938 Intrinsic<[llvm_v16f32_ty], 2939 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2940 llvm_i32_ty], [IntrNoMem]>; 2941 2942 def int_x86_avx512_mask3_vfnmsub_ps_512 : 2943 GCCBuiltin<"__builtin_ia32_vfnmsubps512_mask3">, 2944 Intrinsic<[llvm_v16f32_ty], 2945 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty, 2946 llvm_i32_ty], [IntrNoMem]>; 2947 2948 def int_x86_avx512_mask_vpmadd52h_uq_128 : 2949 GCCBuiltin<"__builtin_ia32_vpmadd52huq128_mask">, 2950 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 2951 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2952 def int_x86_avx512_maskz_vpmadd52h_uq_128 : 2953 GCCBuiltin<"__builtin_ia32_vpmadd52huq128_maskz">, 2954 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 2955 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2956 def int_x86_avx512_mask_vpmadd52l_uq_128 : 2957 GCCBuiltin<"__builtin_ia32_vpmadd52luq128_mask">, 2958 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 2959 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2960 def int_x86_avx512_maskz_vpmadd52l_uq_128 : 2961 GCCBuiltin<"__builtin_ia32_vpmadd52luq128_maskz">, 2962 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 2963 llvm_v2i64_ty, llvm_i8_ty], [IntrNoMem]>; 2964 def int_x86_avx512_mask_vpmadd52h_uq_256 : 2965 GCCBuiltin<"__builtin_ia32_vpmadd52huq256_mask">, 2966 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 2967 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2968 def int_x86_avx512_maskz_vpmadd52h_uq_256 : 2969 GCCBuiltin<"__builtin_ia32_vpmadd52huq256_maskz">, 2970 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 2971 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2972 def int_x86_avx512_mask_vpmadd52l_uq_256 : 2973 GCCBuiltin<"__builtin_ia32_vpmadd52luq256_mask">, 2974 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 2975 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2976 def int_x86_avx512_maskz_vpmadd52l_uq_256 : 2977 GCCBuiltin<"__builtin_ia32_vpmadd52luq256_maskz">, 2978 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 2979 llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 2980 def int_x86_avx512_mask_vpmadd52h_uq_512 : 2981 GCCBuiltin<"__builtin_ia32_vpmadd52huq512_mask">, 2982 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 2983 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2984 def int_x86_avx512_maskz_vpmadd52h_uq_512 : 2985 GCCBuiltin<"__builtin_ia32_vpmadd52huq512_maskz">, 2986 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 2987 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2988 def int_x86_avx512_mask_vpmadd52l_uq_512 : 2989 GCCBuiltin<"__builtin_ia32_vpmadd52luq512_mask">, 2990 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 2991 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2992 def int_x86_avx512_maskz_vpmadd52l_uq_512 : 2993 GCCBuiltin<"__builtin_ia32_vpmadd52luq512_maskz">, 2994 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 2995 llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 2996 } 2997 2998 //===----------------------------------------------------------------------===// 2999 // XOP 3000 3001 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3002 def int_x86_xop_vpermil2pd : GCCBuiltin<"__builtin_ia32_vpermil2pd">, 3003 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 3004 llvm_v2i64_ty, llvm_i8_ty], 3005 [IntrNoMem]>; 3006 3007 def int_x86_xop_vpermil2pd_256 : 3008 GCCBuiltin<"__builtin_ia32_vpermil2pd256">, 3009 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 3010 llvm_v4i64_ty, llvm_i8_ty], 3011 [IntrNoMem]>; 3012 3013 def int_x86_xop_vpermil2ps : GCCBuiltin<"__builtin_ia32_vpermil2ps">, 3014 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 3015 llvm_v4i32_ty, llvm_i8_ty], 3016 [IntrNoMem]>; 3017 def int_x86_xop_vpermil2ps_256 : 3018 GCCBuiltin<"__builtin_ia32_vpermil2ps256">, 3019 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 3020 llvm_v8i32_ty, llvm_i8_ty], 3021 [IntrNoMem]>; 3022 3023 def int_x86_xop_vfrcz_pd : GCCBuiltin<"__builtin_ia32_vfrczpd">, 3024 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 3025 def int_x86_xop_vfrcz_ps : GCCBuiltin<"__builtin_ia32_vfrczps">, 3026 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 3027 def int_x86_xop_vfrcz_sd : GCCBuiltin<"__builtin_ia32_vfrczsd">, 3028 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>; 3029 def int_x86_xop_vfrcz_ss : GCCBuiltin<"__builtin_ia32_vfrczss">, 3030 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>; 3031 def int_x86_xop_vfrcz_pd_256 : GCCBuiltin<"__builtin_ia32_vfrczpd256">, 3032 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty], [IntrNoMem]>; 3033 def int_x86_xop_vfrcz_ps_256 : GCCBuiltin<"__builtin_ia32_vfrczps256">, 3034 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>; 3035 3036 def int_x86_xop_vpcomb : GCCBuiltin<"__builtin_ia32_vpcomb">, 3037 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 3038 llvm_i8_ty], [IntrNoMem]>; 3039 def int_x86_xop_vpcomw : GCCBuiltin<"__builtin_ia32_vpcomw">, 3040 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 3041 llvm_i8_ty], [IntrNoMem]>; 3042 def int_x86_xop_vpcomd : GCCBuiltin<"__builtin_ia32_vpcomd">, 3043 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 3044 llvm_i8_ty], [IntrNoMem]>; 3045 def int_x86_xop_vpcomq : GCCBuiltin<"__builtin_ia32_vpcomq">, 3046 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 3047 llvm_i8_ty], [IntrNoMem]>; 3048 def int_x86_xop_vpcomub : GCCBuiltin<"__builtin_ia32_vpcomub">, 3049 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 3050 llvm_i8_ty], [IntrNoMem]>; 3051 def int_x86_xop_vpcomuw : GCCBuiltin<"__builtin_ia32_vpcomuw">, 3052 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 3053 llvm_i8_ty], [IntrNoMem]>; 3054 def int_x86_xop_vpcomud : GCCBuiltin<"__builtin_ia32_vpcomud">, 3055 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 3056 llvm_i8_ty], [IntrNoMem]>; 3057 def int_x86_xop_vpcomuq : GCCBuiltin<"__builtin_ia32_vpcomuq">, 3058 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 3059 llvm_i8_ty], [IntrNoMem]>; 3060 3061 def int_x86_xop_vphaddbd : 3062 GCCBuiltin<"__builtin_ia32_vphaddbd">, 3063 Intrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3064 def int_x86_xop_vphaddbq : 3065 GCCBuiltin<"__builtin_ia32_vphaddbq">, 3066 Intrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3067 def int_x86_xop_vphaddbw : 3068 GCCBuiltin<"__builtin_ia32_vphaddbw">, 3069 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3070 def int_x86_xop_vphadddq : 3071 GCCBuiltin<"__builtin_ia32_vphadddq">, 3072 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 3073 def int_x86_xop_vphaddubd : 3074 GCCBuiltin<"__builtin_ia32_vphaddubd">, 3075 Intrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3076 def int_x86_xop_vphaddubq : 3077 GCCBuiltin<"__builtin_ia32_vphaddubq">, 3078 Intrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3079 def int_x86_xop_vphaddubw : 3080 GCCBuiltin<"__builtin_ia32_vphaddubw">, 3081 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3082 def int_x86_xop_vphaddudq : 3083 GCCBuiltin<"__builtin_ia32_vphaddudq">, 3084 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 3085 def int_x86_xop_vphadduwd : 3086 GCCBuiltin<"__builtin_ia32_vphadduwd">, 3087 Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3088 def int_x86_xop_vphadduwq : 3089 GCCBuiltin<"__builtin_ia32_vphadduwq">, 3090 Intrinsic<[llvm_v2i64_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3091 def int_x86_xop_vphaddwd : 3092 GCCBuiltin<"__builtin_ia32_vphaddwd">, 3093 Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3094 def int_x86_xop_vphaddwq : 3095 GCCBuiltin<"__builtin_ia32_vphaddwq">, 3096 Intrinsic<[llvm_v2i64_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3097 def int_x86_xop_vphsubbw : 3098 GCCBuiltin<"__builtin_ia32_vphsubbw">, 3099 Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3100 def int_x86_xop_vphsubdq : 3101 GCCBuiltin<"__builtin_ia32_vphsubdq">, 3102 Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>; 3103 def int_x86_xop_vphsubwd : 3104 GCCBuiltin<"__builtin_ia32_vphsubwd">, 3105 Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3106 def int_x86_xop_vpmacsdd : 3107 GCCBuiltin<"__builtin_ia32_vpmacsdd">, 3108 Intrinsic<[llvm_v4i32_ty], 3109 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 3110 [IntrNoMem]>; 3111 def int_x86_xop_vpmacsdqh : 3112 GCCBuiltin<"__builtin_ia32_vpmacsdqh">, 3113 Intrinsic<[llvm_v2i64_ty], 3114 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 3115 [IntrNoMem]>; 3116 def int_x86_xop_vpmacsdql : 3117 GCCBuiltin<"__builtin_ia32_vpmacsdql">, 3118 Intrinsic<[llvm_v2i64_ty], 3119 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 3120 [IntrNoMem]>; 3121 def int_x86_xop_vpmacssdd : 3122 GCCBuiltin<"__builtin_ia32_vpmacssdd">, 3123 Intrinsic<[llvm_v4i32_ty], 3124 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 3125 [IntrNoMem]>; 3126 def int_x86_xop_vpmacssdqh : 3127 GCCBuiltin<"__builtin_ia32_vpmacssdqh">, 3128 Intrinsic<[llvm_v2i64_ty], 3129 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 3130 [IntrNoMem]>; 3131 def int_x86_xop_vpmacssdql : 3132 GCCBuiltin<"__builtin_ia32_vpmacssdql">, 3133 Intrinsic<[llvm_v2i64_ty], 3134 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty], 3135 [IntrNoMem]>; 3136 def int_x86_xop_vpmacsswd : 3137 GCCBuiltin<"__builtin_ia32_vpmacsswd">, 3138 Intrinsic<[llvm_v4i32_ty], 3139 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 3140 [IntrNoMem]>; 3141 def int_x86_xop_vpmacssww : 3142 GCCBuiltin<"__builtin_ia32_vpmacssww">, 3143 Intrinsic<[llvm_v8i16_ty], 3144 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], 3145 [IntrNoMem]>; 3146 def int_x86_xop_vpmacswd : 3147 GCCBuiltin<"__builtin_ia32_vpmacswd">, 3148 Intrinsic<[llvm_v4i32_ty], 3149 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 3150 [IntrNoMem]>; 3151 def int_x86_xop_vpmacsww : 3152 GCCBuiltin<"__builtin_ia32_vpmacsww">, 3153 Intrinsic<[llvm_v8i16_ty], 3154 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty], 3155 [IntrNoMem]>; 3156 def int_x86_xop_vpmadcsswd : 3157 GCCBuiltin<"__builtin_ia32_vpmadcsswd">, 3158 Intrinsic<[llvm_v4i32_ty], 3159 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 3160 [IntrNoMem]>; 3161 def int_x86_xop_vpmadcswd : 3162 GCCBuiltin<"__builtin_ia32_vpmadcswd">, 3163 Intrinsic<[llvm_v4i32_ty], 3164 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty], 3165 [IntrNoMem]>; 3166 def int_x86_xop_vpperm : 3167 GCCBuiltin<"__builtin_ia32_vpperm">, 3168 Intrinsic<[llvm_v16i8_ty], 3169 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty], 3170 [IntrNoMem]>; 3171 3172 def int_x86_xop_vprotb : GCCBuiltin<"__builtin_ia32_vprotb">, 3173 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 3174 [IntrNoMem]>; 3175 def int_x86_xop_vprotd : GCCBuiltin<"__builtin_ia32_vprotd">, 3176 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 3177 [IntrNoMem]>; 3178 def int_x86_xop_vprotq : GCCBuiltin<"__builtin_ia32_vprotq">, 3179 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 3180 [IntrNoMem]>; 3181 def int_x86_xop_vprotw : GCCBuiltin<"__builtin_ia32_vprotw">, 3182 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 3183 [IntrNoMem]>; 3184 def int_x86_xop_vprotbi : GCCBuiltin<"__builtin_ia32_vprotbi">, 3185 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i8_ty], 3186 [IntrNoMem]>; 3187 def int_x86_xop_vprotdi : GCCBuiltin<"__builtin_ia32_vprotdi">, 3188 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i8_ty], 3189 [IntrNoMem]>; 3190 def int_x86_xop_vprotqi : GCCBuiltin<"__builtin_ia32_vprotqi">, 3191 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i8_ty], 3192 [IntrNoMem]>; 3193 def int_x86_xop_vprotwi : GCCBuiltin<"__builtin_ia32_vprotwi">, 3194 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i8_ty], 3195 [IntrNoMem]>; 3196 3197 def int_x86_xop_vpshab : 3198 GCCBuiltin<"__builtin_ia32_vpshab">, 3199 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 3200 [IntrNoMem]>; 3201 def int_x86_xop_vpshad : 3202 GCCBuiltin<"__builtin_ia32_vpshad">, 3203 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 3204 [IntrNoMem]>; 3205 def int_x86_xop_vpshaq : 3206 GCCBuiltin<"__builtin_ia32_vpshaq">, 3207 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 3208 [IntrNoMem]>; 3209 def int_x86_xop_vpshaw : 3210 GCCBuiltin<"__builtin_ia32_vpshaw">, 3211 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 3212 [IntrNoMem]>; 3213 def int_x86_xop_vpshlb : 3214 GCCBuiltin<"__builtin_ia32_vpshlb">, 3215 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], 3216 [IntrNoMem]>; 3217 def int_x86_xop_vpshld : 3218 GCCBuiltin<"__builtin_ia32_vpshld">, 3219 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], 3220 [IntrNoMem]>; 3221 def int_x86_xop_vpshlq : 3222 GCCBuiltin<"__builtin_ia32_vpshlq">, 3223 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], 3224 [IntrNoMem]>; 3225 def int_x86_xop_vpshlw : 3226 GCCBuiltin<"__builtin_ia32_vpshlw">, 3227 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], 3228 [IntrNoMem]>; 3229 } 3230 3231 //===----------------------------------------------------------------------===// 3232 // MMX 3233 3234 // Empty MMX state op. 3235 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3236 def int_x86_mmx_emms : GCCBuiltin<"__builtin_ia32_emms">, 3237 Intrinsic<[], [], []>; 3238 def int_x86_mmx_femms : GCCBuiltin<"__builtin_ia32_femms">, 3239 Intrinsic<[], [], []>; 3240 } 3241 3242 // Integer arithmetic ops. 3243 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3244 // Addition 3245 def int_x86_mmx_padd_b : GCCBuiltin<"__builtin_ia32_paddb">, 3246 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3247 [IntrNoMem, Commutative]>; 3248 def int_x86_mmx_padd_w : GCCBuiltin<"__builtin_ia32_paddw">, 3249 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3250 [IntrNoMem, Commutative]>; 3251 def int_x86_mmx_padd_d : GCCBuiltin<"__builtin_ia32_paddd">, 3252 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3253 [IntrNoMem, Commutative]>; 3254 def int_x86_mmx_padd_q : GCCBuiltin<"__builtin_ia32_paddq">, 3255 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3256 [IntrNoMem, Commutative]>; 3257 3258 def int_x86_mmx_padds_b : GCCBuiltin<"__builtin_ia32_paddsb">, 3259 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3260 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3261 def int_x86_mmx_padds_w : GCCBuiltin<"__builtin_ia32_paddsw">, 3262 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3263 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3264 3265 def int_x86_mmx_paddus_b : GCCBuiltin<"__builtin_ia32_paddusb">, 3266 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3267 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3268 def int_x86_mmx_paddus_w : GCCBuiltin<"__builtin_ia32_paddusw">, 3269 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3270 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3271 3272 // Subtraction 3273 def int_x86_mmx_psub_b : GCCBuiltin<"__builtin_ia32_psubb">, 3274 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3275 [IntrNoMem]>; 3276 def int_x86_mmx_psub_w : GCCBuiltin<"__builtin_ia32_psubw">, 3277 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3278 [IntrNoMem]>; 3279 def int_x86_mmx_psub_d : GCCBuiltin<"__builtin_ia32_psubd">, 3280 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3281 [IntrNoMem]>; 3282 def int_x86_mmx_psub_q : GCCBuiltin<"__builtin_ia32_psubq">, 3283 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3284 [IntrNoMem]>; 3285 3286 def int_x86_mmx_psubs_b : GCCBuiltin<"__builtin_ia32_psubsb">, 3287 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3288 llvm_x86mmx_ty], [IntrNoMem]>; 3289 def int_x86_mmx_psubs_w : GCCBuiltin<"__builtin_ia32_psubsw">, 3290 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3291 llvm_x86mmx_ty], [IntrNoMem]>; 3292 3293 def int_x86_mmx_psubus_b : GCCBuiltin<"__builtin_ia32_psubusb">, 3294 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3295 llvm_x86mmx_ty], [IntrNoMem]>; 3296 def int_x86_mmx_psubus_w : GCCBuiltin<"__builtin_ia32_psubusw">, 3297 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3298 llvm_x86mmx_ty], [IntrNoMem]>; 3299 3300 // Multiplication 3301 def int_x86_mmx_pmulh_w : GCCBuiltin<"__builtin_ia32_pmulhw">, 3302 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3303 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3304 def int_x86_mmx_pmull_w : GCCBuiltin<"__builtin_ia32_pmullw">, 3305 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3306 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3307 def int_x86_mmx_pmulhu_w : GCCBuiltin<"__builtin_ia32_pmulhuw">, 3308 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3309 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3310 def int_x86_mmx_pmulu_dq : GCCBuiltin<"__builtin_ia32_pmuludq">, 3311 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3312 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3313 def int_x86_mmx_pmadd_wd : GCCBuiltin<"__builtin_ia32_pmaddwd">, 3314 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3315 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3316 3317 // Bitwise operations 3318 def int_x86_mmx_pand : GCCBuiltin<"__builtin_ia32_pand">, 3319 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3320 [IntrNoMem, Commutative]>; 3321 def int_x86_mmx_pandn : GCCBuiltin<"__builtin_ia32_pandn">, 3322 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3323 [IntrNoMem]>; 3324 def int_x86_mmx_por : GCCBuiltin<"__builtin_ia32_por">, 3325 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3326 [IntrNoMem, Commutative]>; 3327 def int_x86_mmx_pxor : GCCBuiltin<"__builtin_ia32_pxor">, 3328 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3329 [IntrNoMem, Commutative]>; 3330 3331 // Averages 3332 def int_x86_mmx_pavg_b : GCCBuiltin<"__builtin_ia32_pavgb">, 3333 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3334 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3335 def int_x86_mmx_pavg_w : GCCBuiltin<"__builtin_ia32_pavgw">, 3336 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3337 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3338 3339 // Maximum 3340 def int_x86_mmx_pmaxu_b : GCCBuiltin<"__builtin_ia32_pmaxub">, 3341 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3342 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3343 def int_x86_mmx_pmaxs_w : GCCBuiltin<"__builtin_ia32_pmaxsw">, 3344 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3345 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3346 3347 // Minimum 3348 def int_x86_mmx_pminu_b : GCCBuiltin<"__builtin_ia32_pminub">, 3349 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3350 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3351 def int_x86_mmx_pmins_w : GCCBuiltin<"__builtin_ia32_pminsw">, 3352 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3353 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3354 3355 // Packed sum of absolute differences 3356 def int_x86_mmx_psad_bw : GCCBuiltin<"__builtin_ia32_psadbw">, 3357 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3358 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3359 } 3360 3361 // Integer shift ops. 3362 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3363 // Shift left logical 3364 def int_x86_mmx_psll_w : GCCBuiltin<"__builtin_ia32_psllw">, 3365 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3366 llvm_x86mmx_ty], [IntrNoMem]>; 3367 def int_x86_mmx_psll_d : GCCBuiltin<"__builtin_ia32_pslld">, 3368 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3369 llvm_x86mmx_ty], [IntrNoMem]>; 3370 def int_x86_mmx_psll_q : GCCBuiltin<"__builtin_ia32_psllq">, 3371 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3372 llvm_x86mmx_ty], [IntrNoMem]>; 3373 3374 def int_x86_mmx_psrl_w : GCCBuiltin<"__builtin_ia32_psrlw">, 3375 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3376 llvm_x86mmx_ty], [IntrNoMem]>; 3377 def int_x86_mmx_psrl_d : GCCBuiltin<"__builtin_ia32_psrld">, 3378 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3379 llvm_x86mmx_ty], [IntrNoMem]>; 3380 def int_x86_mmx_psrl_q : GCCBuiltin<"__builtin_ia32_psrlq">, 3381 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3382 llvm_x86mmx_ty], [IntrNoMem]>; 3383 3384 def int_x86_mmx_psra_w : GCCBuiltin<"__builtin_ia32_psraw">, 3385 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3386 llvm_x86mmx_ty], [IntrNoMem]>; 3387 def int_x86_mmx_psra_d : GCCBuiltin<"__builtin_ia32_psrad">, 3388 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3389 llvm_x86mmx_ty], [IntrNoMem]>; 3390 3391 def int_x86_mmx_pslli_w : GCCBuiltin<"__builtin_ia32_psllwi">, 3392 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3393 llvm_i32_ty], [IntrNoMem]>; 3394 def int_x86_mmx_pslli_d : GCCBuiltin<"__builtin_ia32_pslldi">, 3395 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3396 llvm_i32_ty], [IntrNoMem]>; 3397 def int_x86_mmx_pslli_q : GCCBuiltin<"__builtin_ia32_psllqi">, 3398 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3399 llvm_i32_ty], [IntrNoMem]>; 3400 3401 def int_x86_mmx_psrli_w : GCCBuiltin<"__builtin_ia32_psrlwi">, 3402 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3403 llvm_i32_ty], [IntrNoMem]>; 3404 def int_x86_mmx_psrli_d : GCCBuiltin<"__builtin_ia32_psrldi">, 3405 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3406 llvm_i32_ty], [IntrNoMem]>; 3407 def int_x86_mmx_psrli_q : GCCBuiltin<"__builtin_ia32_psrlqi">, 3408 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3409 llvm_i32_ty], [IntrNoMem]>; 3410 3411 def int_x86_mmx_psrai_w : GCCBuiltin<"__builtin_ia32_psrawi">, 3412 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3413 llvm_i32_ty], [IntrNoMem]>; 3414 def int_x86_mmx_psrai_d : GCCBuiltin<"__builtin_ia32_psradi">, 3415 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3416 llvm_i32_ty], [IntrNoMem]>; 3417 } 3418 // Permute 3419 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3420 def int_x86_avx512_mask_permvar_df_256 : GCCBuiltin<"__builtin_ia32_permvardf256_mask">, 3421 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, 3422 llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 3423 def int_x86_avx512_mask_permvar_df_512 : GCCBuiltin<"__builtin_ia32_permvardf512_mask">, 3424 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, 3425 llvm_v8i64_ty, llvm_v8f64_ty, llvm_i8_ty], [IntrNoMem]>; 3426 def int_x86_avx512_mask_permvar_di_256 : GCCBuiltin<"__builtin_ia32_permvardi256_mask">, 3427 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, 3428 llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 3429 def int_x86_avx512_mask_permvar_di_512 : GCCBuiltin<"__builtin_ia32_permvardi512_mask">, 3430 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, 3431 llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 3432 def int_x86_avx512_mask_permvar_hi_128 : GCCBuiltin<"__builtin_ia32_permvarhi128_mask">, 3433 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, 3434 llvm_v8i16_ty, llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 3435 def int_x86_avx512_mask_permvar_hi_256 : GCCBuiltin<"__builtin_ia32_permvarhi256_mask">, 3436 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, 3437 llvm_v16i16_ty, llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 3438 def int_x86_avx512_mask_permvar_hi_512 : GCCBuiltin<"__builtin_ia32_permvarhi512_mask">, 3439 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, 3440 llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 3441 def int_x86_avx512_mask_permvar_qi_128 : GCCBuiltin<"__builtin_ia32_permvarqi128_mask">, 3442 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, 3443 llvm_v16i8_ty, llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 3444 def int_x86_avx512_mask_permvar_qi_256 : GCCBuiltin<"__builtin_ia32_permvarqi256_mask">, 3445 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, 3446 llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 3447 def int_x86_avx512_mask_permvar_qi_512 : GCCBuiltin<"__builtin_ia32_permvarqi512_mask">, 3448 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, 3449 llvm_v64i8_ty, llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 3450 def int_x86_avx512_mask_permvar_sf_256 : GCCBuiltin<"__builtin_ia32_permvarsf256_mask">, 3451 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, 3452 llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 3453 def int_x86_avx512_mask_permvar_sf_512 : GCCBuiltin<"__builtin_ia32_permvarsf512_mask">, 3454 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, 3455 llvm_v16i32_ty, llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 3456 def int_x86_avx512_mask_permvar_si_256 : GCCBuiltin<"__builtin_ia32_permvarsi256_mask">, 3457 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, 3458 llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 3459 def int_x86_avx512_mask_permvar_si_512 : GCCBuiltin<"__builtin_ia32_permvarsi512_mask">, 3460 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, 3461 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 3462 } 3463 // Pack ops. 3464 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3465 def int_x86_mmx_packsswb : GCCBuiltin<"__builtin_ia32_packsswb">, 3466 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3467 llvm_x86mmx_ty], [IntrNoMem]>; 3468 def int_x86_mmx_packssdw : GCCBuiltin<"__builtin_ia32_packssdw">, 3469 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3470 llvm_x86mmx_ty], [IntrNoMem]>; 3471 def int_x86_mmx_packuswb : GCCBuiltin<"__builtin_ia32_packuswb">, 3472 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3473 llvm_x86mmx_ty], [IntrNoMem]>; 3474 } 3475 3476 // Unpacking ops. 3477 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3478 def int_x86_mmx_punpckhbw : GCCBuiltin<"__builtin_ia32_punpckhbw">, 3479 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3480 [IntrNoMem]>; 3481 def int_x86_mmx_punpckhwd : GCCBuiltin<"__builtin_ia32_punpckhwd">, 3482 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3483 [IntrNoMem]>; 3484 def int_x86_mmx_punpckhdq : GCCBuiltin<"__builtin_ia32_punpckhdq">, 3485 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3486 [IntrNoMem]>; 3487 def int_x86_mmx_punpcklbw : GCCBuiltin<"__builtin_ia32_punpcklbw">, 3488 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3489 [IntrNoMem]>; 3490 def int_x86_mmx_punpcklwd : GCCBuiltin<"__builtin_ia32_punpcklwd">, 3491 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3492 [IntrNoMem]>; 3493 def int_x86_mmx_punpckldq : GCCBuiltin<"__builtin_ia32_punpckldq">, 3494 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty], 3495 [IntrNoMem]>; 3496 } 3497 3498 // Integer comparison ops 3499 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3500 def int_x86_mmx_pcmpeq_b : GCCBuiltin<"__builtin_ia32_pcmpeqb">, 3501 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3502 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3503 def int_x86_mmx_pcmpeq_w : GCCBuiltin<"__builtin_ia32_pcmpeqw">, 3504 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3505 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3506 def int_x86_mmx_pcmpeq_d : GCCBuiltin<"__builtin_ia32_pcmpeqd">, 3507 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3508 llvm_x86mmx_ty], [IntrNoMem, Commutative]>; 3509 3510 def int_x86_mmx_pcmpgt_b : GCCBuiltin<"__builtin_ia32_pcmpgtb">, 3511 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3512 llvm_x86mmx_ty], [IntrNoMem]>; 3513 def int_x86_mmx_pcmpgt_w : GCCBuiltin<"__builtin_ia32_pcmpgtw">, 3514 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3515 llvm_x86mmx_ty], [IntrNoMem]>; 3516 def int_x86_mmx_pcmpgt_d : GCCBuiltin<"__builtin_ia32_pcmpgtd">, 3517 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3518 llvm_x86mmx_ty], [IntrNoMem]>; 3519 } 3520 3521 // Misc. 3522 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3523 def int_x86_mmx_maskmovq : GCCBuiltin<"__builtin_ia32_maskmovq">, 3524 Intrinsic<[], [llvm_x86mmx_ty, llvm_x86mmx_ty, llvm_ptr_ty], []>; 3525 3526 def int_x86_mmx_pmovmskb : GCCBuiltin<"__builtin_ia32_pmovmskb">, 3527 Intrinsic<[llvm_i32_ty], [llvm_x86mmx_ty], [IntrNoMem]>; 3528 3529 def int_x86_mmx_movnt_dq : GCCBuiltin<"__builtin_ia32_movntq">, 3530 Intrinsic<[], [llvm_ptrx86mmx_ty, llvm_x86mmx_ty], []>; 3531 3532 def int_x86_mmx_palignr_b : GCCBuiltin<"__builtin_ia32_palignr">, 3533 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3534 llvm_x86mmx_ty, llvm_i8_ty], [IntrNoMem]>; 3535 3536 def int_x86_mmx_pextr_w : GCCBuiltin<"__builtin_ia32_vec_ext_v4hi">, 3537 Intrinsic<[llvm_i32_ty], [llvm_x86mmx_ty, llvm_i32_ty], 3538 [IntrNoMem]>; 3539 3540 def int_x86_mmx_pinsr_w : GCCBuiltin<"__builtin_ia32_vec_set_v4hi">, 3541 Intrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, 3542 llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3543 } 3544 3545 //===----------------------------------------------------------------------===// 3546 // BMI 3547 3548 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3549 def int_x86_bmi_bextr_32 : GCCBuiltin<"__builtin_ia32_bextr_u32">, 3550 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3551 def int_x86_bmi_bextr_64 : GCCBuiltin<"__builtin_ia32_bextr_u64">, 3552 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>; 3553 def int_x86_bmi_bzhi_32 : GCCBuiltin<"__builtin_ia32_bzhi_si">, 3554 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3555 def int_x86_bmi_bzhi_64 : GCCBuiltin<"__builtin_ia32_bzhi_di">, 3556 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>; 3557 def int_x86_bmi_pdep_32 : GCCBuiltin<"__builtin_ia32_pdep_si">, 3558 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3559 def int_x86_bmi_pdep_64 : GCCBuiltin<"__builtin_ia32_pdep_di">, 3560 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>; 3561 def int_x86_bmi_pext_32 : GCCBuiltin<"__builtin_ia32_pext_si">, 3562 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3563 def int_x86_bmi_pext_64 : GCCBuiltin<"__builtin_ia32_pext_di">, 3564 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>; 3565 } 3566 3567 //===----------------------------------------------------------------------===// 3568 // FS/GS Base 3569 3570 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3571 def int_x86_rdfsbase_32 : GCCBuiltin<"__builtin_ia32_rdfsbase32">, 3572 Intrinsic<[llvm_i32_ty], []>; 3573 def int_x86_rdgsbase_32 : GCCBuiltin<"__builtin_ia32_rdgsbase32">, 3574 Intrinsic<[llvm_i32_ty], []>; 3575 def int_x86_rdfsbase_64 : GCCBuiltin<"__builtin_ia32_rdfsbase64">, 3576 Intrinsic<[llvm_i64_ty], []>; 3577 def int_x86_rdgsbase_64 : GCCBuiltin<"__builtin_ia32_rdgsbase64">, 3578 Intrinsic<[llvm_i64_ty], []>; 3579 def int_x86_wrfsbase_32 : GCCBuiltin<"__builtin_ia32_wrfsbase32">, 3580 Intrinsic<[], [llvm_i32_ty]>; 3581 def int_x86_wrgsbase_32 : GCCBuiltin<"__builtin_ia32_wrgsbase32">, 3582 Intrinsic<[], [llvm_i32_ty]>; 3583 def int_x86_wrfsbase_64 : GCCBuiltin<"__builtin_ia32_wrfsbase64">, 3584 Intrinsic<[], [llvm_i64_ty]>; 3585 def int_x86_wrgsbase_64 : GCCBuiltin<"__builtin_ia32_wrgsbase64">, 3586 Intrinsic<[], [llvm_i64_ty]>; 3587 } 3588 3589 //===----------------------------------------------------------------------===// 3590 // FXSR 3591 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3592 def int_x86_fxrstor : GCCBuiltin<"__builtin_ia32_fxrstor">, 3593 Intrinsic<[], [llvm_ptr_ty], []>; 3594 def int_x86_fxrstor64 : GCCBuiltin<"__builtin_ia32_fxrstor64">, 3595 Intrinsic<[], [llvm_ptr_ty], []>; 3596 def int_x86_fxsave : GCCBuiltin<"__builtin_ia32_fxsave">, 3597 Intrinsic<[], [llvm_ptr_ty], []>; 3598 def int_x86_fxsave64 : GCCBuiltin<"__builtin_ia32_fxsave64">, 3599 Intrinsic<[], [llvm_ptr_ty], []>; 3600 } 3601 3602 //===----------------------------------------------------------------------===// 3603 // XSAVE 3604 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3605 def int_x86_xsave : 3606 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3607 def int_x86_xsave64 : 3608 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3609 def int_x86_xrstor : 3610 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3611 def int_x86_xrstor64 : 3612 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3613 def int_x86_xsaveopt : 3614 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3615 def int_x86_xsaveopt64 : 3616 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3617 def int_x86_xrstors : 3618 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3619 def int_x86_xrstors64 : 3620 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3621 def int_x86_xsavec : 3622 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3623 def int_x86_xsavec64 : 3624 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3625 def int_x86_xsaves : 3626 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3627 def int_x86_xsaves64 : 3628 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>; 3629 def int_x86_xgetbv : 3630 Intrinsic<[llvm_i64_ty], [llvm_i32_ty], []>; 3631 def int_x86_xsetbv : 3632 Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>; 3633 } 3634 3635 //===----------------------------------------------------------------------===// 3636 // CLFLUSHOPT 3637 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3638 def int_x86_clflushopt : GCCBuiltin<"__builtin_ia32_clflushopt">, 3639 Intrinsic<[], [llvm_ptr_ty], []>; 3640 } 3641 3642 //===----------------------------------------------------------------------===// 3643 // Support protection key 3644 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3645 def int_x86_rdpkru : GCCBuiltin <"__builtin_ia32_rdpkru">, 3646 Intrinsic<[llvm_i32_ty], [], []>; 3647 def int_x86_wrpkru : GCCBuiltin<"__builtin_ia32_wrpkru">, 3648 Intrinsic<[], [llvm_i32_ty], []>; 3649 } 3650 //===----------------------------------------------------------------------===// 3651 // Half float conversion 3652 3653 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3654 def int_x86_vcvtph2ps_128 : GCCBuiltin<"__builtin_ia32_vcvtph2ps">, 3655 Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3656 def int_x86_vcvtph2ps_256 : GCCBuiltin<"__builtin_ia32_vcvtph2ps256">, 3657 Intrinsic<[llvm_v8f32_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3658 def int_x86_vcvtps2ph_128 : GCCBuiltin<"__builtin_ia32_vcvtps2ph">, 3659 Intrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_i32_ty], 3660 [IntrNoMem]>; 3661 def int_x86_vcvtps2ph_256 : GCCBuiltin<"__builtin_ia32_vcvtps2ph256">, 3662 Intrinsic<[llvm_v8i16_ty], [llvm_v8f32_ty, llvm_i32_ty], 3663 [IntrNoMem]>; 3664 def int_x86_avx512_mask_vcvtph2ps_512 : GCCBuiltin<"__builtin_ia32_vcvtph2ps512_mask">, 3665 Intrinsic<[llvm_v16f32_ty], [llvm_v16i16_ty, llvm_v16f32_ty, 3666 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 3667 def int_x86_avx512_mask_vcvtph2ps_256 : GCCBuiltin<"__builtin_ia32_vcvtph2ps256_mask">, 3668 Intrinsic<[llvm_v8f32_ty], [llvm_v8i16_ty, llvm_v8f32_ty, 3669 llvm_i8_ty], [IntrNoMem]>; 3670 def int_x86_avx512_mask_vcvtph2ps_128 : GCCBuiltin<"__builtin_ia32_vcvtph2ps_mask">, 3671 Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty, llvm_v4f32_ty, 3672 llvm_i8_ty], [IntrNoMem]>; 3673 def int_x86_avx512_mask_vcvtps2ph_512 : GCCBuiltin<"__builtin_ia32_vcvtps2ph512_mask">, 3674 Intrinsic<[llvm_v16i16_ty], [llvm_v16f32_ty, llvm_i32_ty, 3675 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 3676 def int_x86_avx512_mask_vcvtps2ph_256 : GCCBuiltin<"__builtin_ia32_vcvtps2ph256_mask">, 3677 Intrinsic<[llvm_v8i16_ty], [llvm_v8f32_ty, llvm_i32_ty, 3678 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 3679 def int_x86_avx512_mask_vcvtps2ph_128 : GCCBuiltin<"__builtin_ia32_vcvtps2ph_mask">, 3680 Intrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_i32_ty, 3681 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 3682 } 3683 3684 //===----------------------------------------------------------------------===// 3685 // TBM 3686 3687 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3688 def int_x86_tbm_bextri_u32 : GCCBuiltin<"__builtin_ia32_bextri_u32">, 3689 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3690 def int_x86_tbm_bextri_u64 : GCCBuiltin<"__builtin_ia32_bextri_u64">, 3691 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], [IntrNoMem]>; 3692 } 3693 3694 //===----------------------------------------------------------------------===// 3695 // RDRAND intrinsics - Return a random value and whether it is valid. 3696 // RDSEED intrinsics - Return a NIST SP800-90B & C compliant random value and 3697 // whether it is valid. 3698 3699 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3700 // These are declared side-effecting so they don't get eliminated by CSE or 3701 // LICM. 3702 def int_x86_rdrand_16 : Intrinsic<[llvm_i16_ty, llvm_i32_ty], [], []>; 3703 def int_x86_rdrand_32 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [], []>; 3704 def int_x86_rdrand_64 : Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>; 3705 def int_x86_rdseed_16 : Intrinsic<[llvm_i16_ty, llvm_i32_ty], [], []>; 3706 def int_x86_rdseed_32 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [], []>; 3707 def int_x86_rdseed_64 : Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>; 3708 } 3709 3710 //===----------------------------------------------------------------------===// 3711 // ADX 3712 3713 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3714 def int_x86_addcarryx_u32: GCCBuiltin<"__builtin_ia32_addcarryx_u32">, 3715 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty, 3716 llvm_ptr_ty], [IntrArgMemOnly]>; 3717 def int_x86_addcarryx_u64: GCCBuiltin<"__builtin_ia32_addcarryx_u64">, 3718 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty, 3719 llvm_ptr_ty], [IntrArgMemOnly]>; 3720 def int_x86_addcarry_u32: GCCBuiltin<"__builtin_ia32_addcarry_u32">, 3721 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty, 3722 llvm_ptr_ty], [IntrArgMemOnly]>; 3723 def int_x86_addcarry_u64: GCCBuiltin<"__builtin_ia32_addcarry_u64">, 3724 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty, 3725 llvm_ptr_ty], [IntrArgMemOnly]>; 3726 def int_x86_subborrow_u32: GCCBuiltin<"__builtin_ia32_subborrow_u32">, 3727 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty, 3728 llvm_ptr_ty], [IntrArgMemOnly]>; 3729 def int_x86_subborrow_u64: GCCBuiltin<"__builtin_ia32_subborrow_u64">, 3730 Intrinsic<[llvm_i8_ty], [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty, 3731 llvm_ptr_ty], [IntrArgMemOnly]>; 3732 } 3733 3734 //===----------------------------------------------------------------------===// 3735 // RTM intrinsics. Transactional Memory support. 3736 3737 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3738 def int_x86_xbegin : GCCBuiltin<"__builtin_ia32_xbegin">, 3739 Intrinsic<[llvm_i32_ty], [], []>; 3740 def int_x86_xend : GCCBuiltin<"__builtin_ia32_xend">, 3741 Intrinsic<[], [], []>; 3742 def int_x86_xabort : GCCBuiltin<"__builtin_ia32_xabort">, 3743 Intrinsic<[], [llvm_i8_ty], []>; 3744 def int_x86_xtest : GCCBuiltin<"__builtin_ia32_xtest">, 3745 Intrinsic<[llvm_i32_ty], [], []>; 3746 } 3747 3748 //===----------------------------------------------------------------------===// 3749 // AVX512 3750 3751 // Mask ops 3752 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3753 // Mask instructions 3754 // 16-bit mask 3755 def int_x86_avx512_kand_w : GCCBuiltin<"__builtin_ia32_kandhi">, 3756 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 3757 [IntrNoMem]>; 3758 def int_x86_avx512_kandn_w : GCCBuiltin<"__builtin_ia32_kandnhi">, 3759 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 3760 [IntrNoMem]>; 3761 def int_x86_avx512_knot_w : GCCBuiltin<"__builtin_ia32_knothi">, 3762 Intrinsic<[llvm_i16_ty], [llvm_i16_ty], [IntrNoMem]>; 3763 def int_x86_avx512_kor_w : GCCBuiltin<"__builtin_ia32_korhi">, 3764 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 3765 [IntrNoMem]>; 3766 def int_x86_avx512_kxor_w : GCCBuiltin<"__builtin_ia32_kxorhi">, 3767 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 3768 [IntrNoMem]>; 3769 def int_x86_avx512_kxnor_w : GCCBuiltin<"__builtin_ia32_kxnorhi">, 3770 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 3771 [IntrNoMem]>; 3772 def int_x86_avx512_kunpck_bw : GCCBuiltin<"__builtin_ia32_kunpckhi">, 3773 Intrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty], 3774 [IntrNoMem]>; 3775 def int_x86_avx512_kunpck_wd : GCCBuiltin<"__builtin_ia32_kunpcksi">, 3776 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 3777 [IntrNoMem]>; 3778 def int_x86_avx512_kunpck_dq : GCCBuiltin<"__builtin_ia32_kunpckdi">, 3779 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty], 3780 [IntrNoMem]>; 3781 def int_x86_avx512_kortestz_w : GCCBuiltin<"__builtin_ia32_kortestzhi">, 3782 Intrinsic<[llvm_i32_ty], [llvm_i16_ty, llvm_i16_ty], 3783 [IntrNoMem]>; 3784 def int_x86_avx512_kortestc_w : GCCBuiltin<"__builtin_ia32_kortestchi">, 3785 Intrinsic<[llvm_i32_ty], [llvm_i16_ty, llvm_i16_ty], 3786 [IntrNoMem]>; 3787 } 3788 3789 // Conversion ops 3790 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3791 def int_x86_avx512_cvttss2si : GCCBuiltin<"__builtin_ia32_vcvttss2si32">, 3792 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 3793 def int_x86_avx512_cvttss2si64 : GCCBuiltin<"__builtin_ia32_vcvttss2si64">, 3794 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 3795 def int_x86_avx512_cvttss2usi : GCCBuiltin<"__builtin_ia32_vcvttss2usi32">, 3796 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 3797 def int_x86_avx512_cvttss2usi64 : GCCBuiltin<"__builtin_ia32_vcvttss2usi64">, 3798 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 3799 def int_x86_avx512_cvtusi2ss : GCCBuiltin<"__builtin_ia32_cvtusi2ss32">, 3800 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 3801 llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3802 def int_x86_avx512_cvtusi642ss : GCCBuiltin<"__builtin_ia32_cvtusi2ss64">, 3803 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 3804 llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>; 3805 def int_x86_avx512_cvttsd2si : GCCBuiltin<"__builtin_ia32_vcvttsd2si32">, 3806 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 3807 def int_x86_avx512_cvttsd2si64 : GCCBuiltin<"__builtin_ia32_vcvttsd2si64">, 3808 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 3809 def int_x86_avx512_cvttsd2usi : GCCBuiltin<"__builtin_ia32_vcvttsd2usi32">, 3810 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 3811 def int_x86_avx512_cvttsd2usi64 : GCCBuiltin<"__builtin_ia32_vcvttsd2usi64">, 3812 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 3813 def int_x86_avx512_cvtusi2sd : GCCBuiltin<"__builtin_ia32_cvtusi2sd32">, 3814 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 3815 llvm_i32_ty], [IntrNoMem]>; 3816 def int_x86_avx512_cvtusi642sd : GCCBuiltin<"__builtin_ia32_cvtusi2sd64">, 3817 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 3818 llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>; 3819 def int_x86_avx512_vcvtss2usi32 : GCCBuiltin<"__builtin_ia32_vcvtss2usi32">, 3820 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 3821 def int_x86_avx512_vcvtss2usi64 : GCCBuiltin<"__builtin_ia32_vcvtss2usi64">, 3822 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 3823 def int_x86_avx512_vcvtss2si32 : GCCBuiltin<"__builtin_ia32_vcvtss2si32">, 3824 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 3825 def int_x86_avx512_vcvtss2si64 : GCCBuiltin<"__builtin_ia32_vcvtss2si64">, 3826 Intrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty], [IntrNoMem]>; 3827 def int_x86_avx512_vcvtsd2usi32 : GCCBuiltin<"__builtin_ia32_vcvtsd2usi32">, 3828 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 3829 def int_x86_avx512_vcvtsd2usi64 : GCCBuiltin<"__builtin_ia32_vcvtsd2usi64">, 3830 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 3831 def int_x86_avx512_vcvtsd2si32 : GCCBuiltin<"__builtin_ia32_vcvtsd2si32">, 3832 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 3833 def int_x86_avx512_vcvtsd2si64 : GCCBuiltin<"__builtin_ia32_vcvtsd2si64">, 3834 Intrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem]>; 3835 def int_x86_avx512_cvtsi2ss32 : GCCBuiltin<"__builtin_ia32_cvtsi2ss32">, 3836 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 3837 llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 3838 def int_x86_avx512_cvtsi2ss64 : GCCBuiltin<"__builtin_ia32_cvtsi2ss64">, 3839 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, 3840 llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>; 3841 def int_x86_avx512_cvtsi2sd64 : GCCBuiltin<"__builtin_ia32_cvtsi2sd64">, 3842 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, 3843 llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>; 3844 3845 def int_x86_avx512_cvtb2mask_128 : GCCBuiltin<"__builtin_ia32_cvtb2mask128">, 3846 Intrinsic<[llvm_i16_ty], [llvm_v16i8_ty], [IntrNoMem]>; 3847 def int_x86_avx512_cvtb2mask_256 : GCCBuiltin<"__builtin_ia32_cvtb2mask256">, 3848 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty], [IntrNoMem]>; 3849 def int_x86_avx512_cvtb2mask_512 : GCCBuiltin<"__builtin_ia32_cvtb2mask512">, 3850 Intrinsic<[llvm_i64_ty], [llvm_v64i8_ty], [IntrNoMem]>; 3851 3852 def int_x86_avx512_cvtw2mask_128 : GCCBuiltin<"__builtin_ia32_cvtw2mask128">, 3853 Intrinsic<[llvm_i8_ty], [llvm_v8i16_ty], [IntrNoMem]>; 3854 def int_x86_avx512_cvtw2mask_256 : GCCBuiltin<"__builtin_ia32_cvtw2mask256">, 3855 Intrinsic<[llvm_i16_ty], [llvm_v16i16_ty], [IntrNoMem]>; 3856 def int_x86_avx512_cvtw2mask_512 : GCCBuiltin<"__builtin_ia32_cvtw2mask512">, 3857 Intrinsic<[llvm_i32_ty], [llvm_v32i16_ty], [IntrNoMem]>; 3858 3859 def int_x86_avx512_cvtd2mask_128 : GCCBuiltin<"__builtin_ia32_cvtd2mask128">, 3860 Intrinsic<[llvm_i8_ty], [llvm_v4i32_ty], [IntrNoMem]>; 3861 def int_x86_avx512_cvtd2mask_256 : GCCBuiltin<"__builtin_ia32_cvtd2mask256">, 3862 Intrinsic<[llvm_i8_ty], [llvm_v8i32_ty], [IntrNoMem]>; 3863 def int_x86_avx512_cvtd2mask_512 : GCCBuiltin<"__builtin_ia32_cvtd2mask512">, 3864 Intrinsic<[llvm_i16_ty], [llvm_v16i32_ty], [IntrNoMem]>; 3865 3866 def int_x86_avx512_cvtq2mask_128 : GCCBuiltin<"__builtin_ia32_cvtq2mask128">, 3867 Intrinsic<[llvm_i8_ty], [llvm_v2i64_ty], [IntrNoMem]>; 3868 def int_x86_avx512_cvtq2mask_256 : GCCBuiltin<"__builtin_ia32_cvtq2mask256">, 3869 Intrinsic<[llvm_i8_ty], [llvm_v4i64_ty], [IntrNoMem]>; 3870 def int_x86_avx512_cvtq2mask_512 : GCCBuiltin<"__builtin_ia32_cvtq2mask512">, 3871 Intrinsic<[llvm_i8_ty], [llvm_v8i64_ty], [IntrNoMem]>; 3872 3873 } 3874 3875 // Pack ops. 3876 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3877 def int_x86_avx512_packsswb_512 : GCCBuiltin<"__builtin_ia32_packsswb512">, 3878 Intrinsic<[llvm_v64i8_ty], [llvm_v32i16_ty,llvm_v32i16_ty], 3879 [IntrNoMem]>; 3880 def int_x86_avx512_packssdw_512 : GCCBuiltin<"__builtin_ia32_packssdw512">, 3881 Intrinsic<[llvm_v32i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 3882 [IntrNoMem]>; 3883 def int_x86_avx512_packuswb_512 : GCCBuiltin<"__builtin_ia32_packuswb512">, 3884 Intrinsic<[llvm_v64i8_ty], [llvm_v32i16_ty,llvm_v32i16_ty], 3885 [IntrNoMem]>; 3886 def int_x86_avx512_packusdw_512 : GCCBuiltin<"__builtin_ia32_packusdw512">, 3887 Intrinsic<[llvm_v32i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty], 3888 [IntrNoMem]>; 3889 } 3890 3891 // Vector convert 3892 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 3893 def int_x86_avx512_mask_cvtdq2ps_128 : 3894 GCCBuiltin<"__builtin_ia32_cvtdq2ps128_mask">, 3895 Intrinsic<[llvm_v4f32_ty], 3896 [llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty], 3897 [IntrNoMem]>; 3898 3899 def int_x86_avx512_mask_cvtdq2ps_256 : 3900 GCCBuiltin<"__builtin_ia32_cvtdq2ps256_mask">, 3901 Intrinsic<[llvm_v8f32_ty], 3902 [llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], 3903 [IntrNoMem]>; 3904 3905 def int_x86_avx512_mask_cvtdq2ps_512 : 3906 GCCBuiltin<"__builtin_ia32_cvtdq2ps512_mask">, 3907 Intrinsic<[llvm_v16f32_ty], 3908 [llvm_v16i32_ty, llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], 3909 [IntrNoMem]>; 3910 3911 def int_x86_avx512_mask_cvtpd2dq_128 : 3912 GCCBuiltin<"__builtin_ia32_cvtpd2dq128_mask">, 3913 Intrinsic<[llvm_v4i32_ty], 3914 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 3915 [IntrNoMem]>; 3916 3917 def int_x86_avx512_mask_cvtpd2dq_256 : 3918 GCCBuiltin<"__builtin_ia32_cvtpd2dq256_mask">, 3919 Intrinsic<[llvm_v4i32_ty], 3920 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty], 3921 [IntrNoMem]>; 3922 3923 def int_x86_avx512_mask_cvtpd2dq_512 : 3924 GCCBuiltin<"__builtin_ia32_cvtpd2dq512_mask">, 3925 Intrinsic<[llvm_v8i32_ty], 3926 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 3927 [IntrNoMem]>; 3928 3929 def int_x86_avx512_mask_cvtpd2ps_256 : 3930 GCCBuiltin<"__builtin_ia32_cvtpd2ps256_mask">, 3931 Intrinsic<[llvm_v4f32_ty], 3932 [llvm_v4f64_ty, llvm_v4f32_ty, llvm_i8_ty], 3933 [IntrNoMem]>; 3934 3935 def int_x86_avx512_mask_cvtpd2ps_512 : 3936 GCCBuiltin<"__builtin_ia32_cvtpd2ps512_mask">, 3937 Intrinsic<[llvm_v8f32_ty], 3938 [llvm_v8f64_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 3939 [IntrNoMem]>; 3940 3941 def int_x86_avx512_mask_cvtsd2ss_round : 3942 GCCBuiltin<"__builtin_ia32_cvtsd2ss_round_mask">, 3943 Intrinsic<[llvm_v4f32_ty], 3944 [llvm_v4f32_ty, llvm_v2f64_ty, llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], 3945 [IntrNoMem]>; 3946 3947 def int_x86_avx512_mask_cvtss2sd_round : 3948 GCCBuiltin<"__builtin_ia32_cvtss2sd_round_mask">, 3949 Intrinsic<[llvm_v2f64_ty], 3950 [llvm_v2f64_ty, llvm_v4f32_ty, llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], 3951 [IntrNoMem]>; 3952 3953 def int_x86_avx512_mask_cvtpd2ps : 3954 GCCBuiltin<"__builtin_ia32_cvtpd2ps_mask">, 3955 Intrinsic<[llvm_v4f32_ty], 3956 [llvm_v2f64_ty, llvm_v4f32_ty, llvm_i8_ty], 3957 [IntrNoMem]>; 3958 3959 def int_x86_avx512_mask_cvtpd2qq_128 : 3960 GCCBuiltin<"__builtin_ia32_cvtpd2qq128_mask">, 3961 Intrinsic<[llvm_v2i64_ty], 3962 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 3963 [IntrNoMem]>; 3964 3965 def int_x86_avx512_mask_cvtpd2qq_256 : 3966 GCCBuiltin<"__builtin_ia32_cvtpd2qq256_mask">, 3967 Intrinsic<[llvm_v4i64_ty], 3968 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 3969 [IntrNoMem]>; 3970 3971 def int_x86_avx512_mask_cvtpd2qq_512 : 3972 GCCBuiltin<"__builtin_ia32_cvtpd2qq512_mask">, 3973 Intrinsic<[llvm_v8i64_ty], 3974 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 3975 [IntrNoMem]>; 3976 3977 def int_x86_avx512_mask_cvtpd2udq_128 : 3978 GCCBuiltin<"__builtin_ia32_cvtpd2udq128_mask">, 3979 Intrinsic<[llvm_v4i32_ty], 3980 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 3981 [IntrNoMem]>; 3982 3983 def int_x86_avx512_mask_cvtpd2udq_256 : 3984 GCCBuiltin<"__builtin_ia32_cvtpd2udq256_mask">, 3985 Intrinsic<[llvm_v4i32_ty], 3986 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty], 3987 [IntrNoMem]>; 3988 3989 def int_x86_avx512_mask_cvtpd2udq_512 : 3990 GCCBuiltin<"__builtin_ia32_cvtpd2udq512_mask">, 3991 Intrinsic<[llvm_v8i32_ty], 3992 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 3993 [IntrNoMem]>; 3994 3995 def int_x86_avx512_mask_cvtpd2uqq_128 : 3996 GCCBuiltin<"__builtin_ia32_cvtpd2uqq128_mask">, 3997 Intrinsic<[llvm_v2i64_ty], 3998 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 3999 [IntrNoMem]>; 4000 4001 def int_x86_avx512_mask_cvtpd2uqq_256 : 4002 GCCBuiltin<"__builtin_ia32_cvtpd2uqq256_mask">, 4003 Intrinsic<[llvm_v4i64_ty], 4004 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 4005 [IntrNoMem]>; 4006 4007 def int_x86_avx512_mask_cvtpd2uqq_512 : 4008 GCCBuiltin<"__builtin_ia32_cvtpd2uqq512_mask">, 4009 Intrinsic<[llvm_v8i64_ty], 4010 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4011 [IntrNoMem]>; 4012 4013 def int_x86_avx512_mask_cvtps2dq_128 : 4014 GCCBuiltin<"__builtin_ia32_cvtps2dq128_mask">, 4015 Intrinsic<[llvm_v4i32_ty], 4016 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 4017 [IntrNoMem]>; 4018 4019 def int_x86_avx512_mask_cvtps2dq_256 : 4020 GCCBuiltin<"__builtin_ia32_cvtps2dq256_mask">, 4021 Intrinsic<[llvm_v8i32_ty], 4022 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 4023 [IntrNoMem]>; 4024 4025 def int_x86_avx512_mask_cvtps2dq_512 : 4026 GCCBuiltin<"__builtin_ia32_cvtps2dq512_mask">, 4027 Intrinsic<[llvm_v16i32_ty], 4028 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 4029 [IntrNoMem]>; 4030 4031 def int_x86_avx512_mask_cvtps2pd_128 : 4032 GCCBuiltin<"__builtin_ia32_cvtps2pd128_mask">, 4033 Intrinsic<[llvm_v2f64_ty], 4034 [llvm_v4f32_ty, llvm_v2f64_ty, llvm_i8_ty], 4035 [IntrNoMem]>; 4036 4037 def int_x86_avx512_mask_cvtps2pd_256 : 4038 GCCBuiltin<"__builtin_ia32_cvtps2pd256_mask">, 4039 Intrinsic<[llvm_v4f64_ty], 4040 [llvm_v4f32_ty, llvm_v4f64_ty, llvm_i8_ty], 4041 [IntrNoMem]>; 4042 4043 def int_x86_avx512_mask_cvtps2pd_512 : 4044 GCCBuiltin<"__builtin_ia32_cvtps2pd512_mask">, 4045 Intrinsic<[llvm_v8f64_ty], 4046 [llvm_v8f32_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], 4047 [IntrNoMem]>; 4048 4049 def int_x86_avx512_mask_cvtps2qq_128 : 4050 GCCBuiltin<"__builtin_ia32_cvtps2qq128_mask">, 4051 Intrinsic<[llvm_v2i64_ty], 4052 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 4053 [IntrNoMem]>; 4054 4055 def int_x86_avx512_mask_cvtps2qq_256 : 4056 GCCBuiltin<"__builtin_ia32_cvtps2qq256_mask">, 4057 Intrinsic<[llvm_v4i64_ty], 4058 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 4059 [IntrNoMem]>; 4060 4061 def int_x86_avx512_mask_cvtps2qq_512 : 4062 GCCBuiltin<"__builtin_ia32_cvtps2qq512_mask">, 4063 Intrinsic<[llvm_v8i64_ty], 4064 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4065 [IntrNoMem]>; 4066 4067 def int_x86_avx512_mask_cvtps2udq_128 : 4068 GCCBuiltin<"__builtin_ia32_cvtps2udq128_mask">, 4069 Intrinsic<[llvm_v4i32_ty], 4070 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 4071 [IntrNoMem]>; 4072 4073 def int_x86_avx512_mask_cvtps2udq_256 : 4074 GCCBuiltin<"__builtin_ia32_cvtps2udq256_mask">, 4075 Intrinsic<[llvm_v8i32_ty], 4076 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 4077 [IntrNoMem]>; 4078 4079 def int_x86_avx512_mask_cvtps2udq_512 : 4080 GCCBuiltin<"__builtin_ia32_cvtps2udq512_mask">, 4081 Intrinsic<[llvm_v16i32_ty], 4082 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 4083 [IntrNoMem]>; 4084 4085 def int_x86_avx512_mask_cvtps2uqq_128 : 4086 GCCBuiltin<"__builtin_ia32_cvtps2uqq128_mask">, 4087 Intrinsic<[llvm_v2i64_ty], 4088 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 4089 [IntrNoMem]>; 4090 4091 def int_x86_avx512_mask_cvtps2uqq_256 : 4092 GCCBuiltin<"__builtin_ia32_cvtps2uqq256_mask">, 4093 Intrinsic<[llvm_v4i64_ty], 4094 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 4095 [IntrNoMem]>; 4096 4097 def int_x86_avx512_mask_cvtps2uqq_512 : 4098 GCCBuiltin<"__builtin_ia32_cvtps2uqq512_mask">, 4099 Intrinsic<[llvm_v8i64_ty], 4100 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4101 [IntrNoMem]>; 4102 4103 def int_x86_avx512_mask_cvtqq2pd_128 : 4104 GCCBuiltin<"__builtin_ia32_cvtqq2pd128_mask">, 4105 Intrinsic<[llvm_v2f64_ty], 4106 [llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty], 4107 [IntrNoMem]>; 4108 4109 def int_x86_avx512_mask_cvtqq2pd_256 : 4110 GCCBuiltin<"__builtin_ia32_cvtqq2pd256_mask">, 4111 Intrinsic<[llvm_v4f64_ty], 4112 [llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], 4113 [IntrNoMem]>; 4114 4115 def int_x86_avx512_mask_cvtqq2pd_512 : 4116 GCCBuiltin<"__builtin_ia32_cvtqq2pd512_mask">, 4117 Intrinsic<[llvm_v8f64_ty], 4118 [llvm_v8i64_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], 4119 [IntrNoMem]>; 4120 4121 def int_x86_avx512_mask_cvtqq2ps_128 : 4122 GCCBuiltin<"__builtin_ia32_cvtqq2ps128_mask">, 4123 Intrinsic<[llvm_v4f32_ty], 4124 [llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty], 4125 [IntrNoMem]>; 4126 4127 def int_x86_avx512_mask_cvtqq2ps_256 : 4128 GCCBuiltin<"__builtin_ia32_cvtqq2ps256_mask">, 4129 Intrinsic<[llvm_v4f32_ty], 4130 [llvm_v4i64_ty, llvm_v4f32_ty, llvm_i8_ty], 4131 [IntrNoMem]>; 4132 4133 def int_x86_avx512_mask_cvtqq2ps_512 : 4134 GCCBuiltin<"__builtin_ia32_cvtqq2ps512_mask">, 4135 Intrinsic<[llvm_v8f32_ty], 4136 [llvm_v8i64_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 4137 [IntrNoMem]>; 4138 4139 def int_x86_avx512_mask_cvttpd2dq_128 : 4140 GCCBuiltin<"__builtin_ia32_cvttpd2dq128_mask">, 4141 Intrinsic<[llvm_v4i32_ty], 4142 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4143 [IntrNoMem]>; 4144 4145 def int_x86_avx512_mask_cvttpd2dq_256 : 4146 GCCBuiltin<"__builtin_ia32_cvttpd2dq256_mask">, 4147 Intrinsic<[llvm_v4i32_ty], 4148 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4149 [IntrNoMem]>; 4150 4151 def int_x86_avx512_mask_cvttpd2dq_512 : 4152 GCCBuiltin<"__builtin_ia32_cvttpd2dq512_mask">, 4153 Intrinsic<[llvm_v8i32_ty], 4154 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 4155 [IntrNoMem]>; 4156 4157 def int_x86_avx512_mask_cvttpd2qq_128 : 4158 GCCBuiltin<"__builtin_ia32_cvttpd2qq128_mask">, 4159 Intrinsic<[llvm_v2i64_ty], 4160 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 4161 [IntrNoMem]>; 4162 4163 def int_x86_avx512_mask_cvttpd2qq_256 : 4164 GCCBuiltin<"__builtin_ia32_cvttpd2qq256_mask">, 4165 Intrinsic<[llvm_v4i64_ty], 4166 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 4167 [IntrNoMem]>; 4168 4169 def int_x86_avx512_mask_cvttpd2qq_512 : 4170 GCCBuiltin<"__builtin_ia32_cvttpd2qq512_mask">, 4171 Intrinsic<[llvm_v8i64_ty], 4172 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4173 [IntrNoMem]>; 4174 4175 def int_x86_avx512_mask_cvttpd2udq_128 : 4176 GCCBuiltin<"__builtin_ia32_cvttpd2udq128_mask">, 4177 Intrinsic<[llvm_v4i32_ty], 4178 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4179 [IntrNoMem]>; 4180 4181 def int_x86_avx512_mask_cvttpd2udq_256 : 4182 GCCBuiltin<"__builtin_ia32_cvttpd2udq256_mask">, 4183 Intrinsic<[llvm_v4i32_ty], 4184 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty], 4185 [IntrNoMem]>; 4186 4187 def int_x86_avx512_mask_cvttpd2udq_512 : 4188 GCCBuiltin<"__builtin_ia32_cvttpd2udq512_mask">, 4189 Intrinsic<[llvm_v8i32_ty], 4190 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 4191 [IntrNoMem]>; 4192 4193 def int_x86_avx512_mask_cvttpd2uqq_128 : 4194 GCCBuiltin<"__builtin_ia32_cvttpd2uqq128_mask">, 4195 Intrinsic<[llvm_v2i64_ty], 4196 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty], 4197 [IntrNoMem]>; 4198 4199 def int_x86_avx512_mask_cvttpd2uqq_256 : 4200 GCCBuiltin<"__builtin_ia32_cvttpd2uqq256_mask">, 4201 Intrinsic<[llvm_v4i64_ty], 4202 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty], 4203 [IntrNoMem]>; 4204 4205 def int_x86_avx512_mask_cvttpd2uqq_512 : 4206 GCCBuiltin<"__builtin_ia32_cvttpd2uqq512_mask">, 4207 Intrinsic<[llvm_v8i64_ty], 4208 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4209 [IntrNoMem]>; 4210 4211 def int_x86_avx512_mask_cvttps2dq_128 : 4212 GCCBuiltin<"__builtin_ia32_cvttps2dq128_mask">, 4213 Intrinsic<[llvm_v4i32_ty], 4214 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 4215 [IntrNoMem]>; 4216 4217 def int_x86_avx512_mask_cvttps2dq_256 : 4218 GCCBuiltin<"__builtin_ia32_cvttps2dq256_mask">, 4219 Intrinsic<[llvm_v8i32_ty], 4220 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 4221 [IntrNoMem]>; 4222 4223 def int_x86_avx512_mask_cvttps2dq_512 : 4224 GCCBuiltin<"__builtin_ia32_cvttps2dq512_mask">, 4225 Intrinsic<[llvm_v16i32_ty], 4226 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 4227 [IntrNoMem]>; 4228 4229 def int_x86_avx512_mask_cvttps2qq_128 : 4230 GCCBuiltin<"__builtin_ia32_cvttps2qq128_mask">, 4231 Intrinsic<[llvm_v2i64_ty], 4232 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 4233 [IntrNoMem]>; 4234 4235 def int_x86_avx512_mask_cvttps2qq_256 : 4236 GCCBuiltin<"__builtin_ia32_cvttps2qq256_mask">, 4237 Intrinsic<[llvm_v4i64_ty], 4238 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 4239 [IntrNoMem]>; 4240 4241 def int_x86_avx512_mask_cvttps2qq_512 : 4242 GCCBuiltin<"__builtin_ia32_cvttps2qq512_mask">, 4243 Intrinsic<[llvm_v8i64_ty], 4244 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4245 [IntrNoMem]>; 4246 4247 def int_x86_avx512_mask_cvttps2udq_128 : 4248 GCCBuiltin<"__builtin_ia32_cvttps2udq128_mask">, 4249 Intrinsic<[llvm_v4i32_ty], 4250 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty], 4251 [IntrNoMem]>; 4252 4253 def int_x86_avx512_mask_cvttps2udq_256 : 4254 GCCBuiltin<"__builtin_ia32_cvttps2udq256_mask">, 4255 Intrinsic<[llvm_v8i32_ty], 4256 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty], 4257 [IntrNoMem]>; 4258 4259 def int_x86_avx512_mask_cvttps2udq_512 : 4260 GCCBuiltin<"__builtin_ia32_cvttps2udq512_mask">, 4261 Intrinsic<[llvm_v16i32_ty], 4262 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 4263 [IntrNoMem]>; 4264 4265 def int_x86_avx512_mask_cvttps2uqq_128 : 4266 GCCBuiltin<"__builtin_ia32_cvttps2uqq128_mask">, 4267 Intrinsic<[llvm_v2i64_ty], 4268 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty], 4269 [IntrNoMem]>; 4270 4271 def int_x86_avx512_mask_cvttps2uqq_256 : 4272 GCCBuiltin<"__builtin_ia32_cvttps2uqq256_mask">, 4273 Intrinsic<[llvm_v4i64_ty], 4274 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty], 4275 [IntrNoMem]>; 4276 4277 def int_x86_avx512_mask_cvttps2uqq_512 : 4278 GCCBuiltin<"__builtin_ia32_cvttps2uqq512_mask">, 4279 Intrinsic<[llvm_v8i64_ty], 4280 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 4281 [IntrNoMem]>; 4282 4283 def int_x86_avx512_mask_cvtudq2ps_128 : 4284 GCCBuiltin<"__builtin_ia32_cvtudq2ps128_mask">, 4285 Intrinsic<[llvm_v4f32_ty], 4286 [llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty], 4287 [IntrNoMem]>; 4288 4289 def int_x86_avx512_mask_cvtudq2ps_256 : 4290 GCCBuiltin<"__builtin_ia32_cvtudq2ps256_mask">, 4291 Intrinsic<[llvm_v8f32_ty], 4292 [llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty], 4293 [IntrNoMem]>; 4294 4295 def int_x86_avx512_mask_cvtudq2ps_512 : 4296 GCCBuiltin<"__builtin_ia32_cvtudq2ps512_mask">, 4297 Intrinsic<[llvm_v16f32_ty], 4298 [llvm_v16i32_ty, llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], 4299 [IntrNoMem]>; 4300 4301 def int_x86_avx512_mask_cvtuqq2pd_128 : 4302 GCCBuiltin<"__builtin_ia32_cvtuqq2pd128_mask">, 4303 Intrinsic<[llvm_v2f64_ty], 4304 [llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty], 4305 [IntrNoMem]>; 4306 4307 def int_x86_avx512_mask_cvtuqq2pd_256 : 4308 GCCBuiltin<"__builtin_ia32_cvtuqq2pd256_mask">, 4309 Intrinsic<[llvm_v4f64_ty], 4310 [llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty], 4311 [IntrNoMem]>; 4312 4313 def int_x86_avx512_mask_cvtuqq2pd_512 : 4314 GCCBuiltin<"__builtin_ia32_cvtuqq2pd512_mask">, 4315 Intrinsic<[llvm_v8f64_ty], 4316 [llvm_v8i64_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], 4317 [IntrNoMem]>; 4318 4319 def int_x86_avx512_mask_cvtuqq2ps_128 : 4320 GCCBuiltin<"__builtin_ia32_cvtuqq2ps128_mask">, 4321 Intrinsic<[llvm_v4f32_ty], 4322 [llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty], 4323 [IntrNoMem]>; 4324 4325 def int_x86_avx512_mask_cvtuqq2ps_256 : 4326 GCCBuiltin<"__builtin_ia32_cvtuqq2ps256_mask">, 4327 Intrinsic<[llvm_v4f32_ty], 4328 [llvm_v4i64_ty, llvm_v4f32_ty, llvm_i8_ty], 4329 [IntrNoMem]>; 4330 4331 def int_x86_avx512_mask_cvtuqq2ps_512 : 4332 GCCBuiltin<"__builtin_ia32_cvtuqq2ps512_mask">, 4333 Intrinsic<[llvm_v8f32_ty], 4334 [llvm_v8i64_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty], 4335 [IntrNoMem]>; 4336 4337 def int_x86_avx512_mask_rndscale_pd_128 : GCCBuiltin<"__builtin_ia32_rndscalepd_128_mask">, 4338 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_i32_ty, 4339 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 4340 def int_x86_avx512_mask_rndscale_pd_256 : GCCBuiltin<"__builtin_ia32_rndscalepd_256_mask">, 4341 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_i32_ty, 4342 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 4343 def int_x86_avx512_mask_rndscale_pd_512 : GCCBuiltin<"__builtin_ia32_rndscalepd_mask">, 4344 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, 4345 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4346 def int_x86_avx512_mask_rndscale_ps_128 : GCCBuiltin<"__builtin_ia32_rndscaleps_128_mask">, 4347 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_i32_ty, 4348 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 4349 def int_x86_avx512_mask_rndscale_ps_256 : GCCBuiltin<"__builtin_ia32_rndscaleps_256_mask">, 4350 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_i32_ty, 4351 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 4352 def int_x86_avx512_mask_rndscale_ps_512 : GCCBuiltin<"__builtin_ia32_rndscaleps_mask">, 4353 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, 4354 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4355 def int_x86_avx512_mask_reduce_pd_128 : GCCBuiltin<"__builtin_ia32_reducepd128_mask">, 4356 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_i32_ty, 4357 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 4358 def int_x86_avx512_mask_reduce_pd_256 : GCCBuiltin<"__builtin_ia32_reducepd256_mask">, 4359 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_i32_ty, 4360 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 4361 def int_x86_avx512_mask_reduce_pd_512 : GCCBuiltin<"__builtin_ia32_reducepd512_mask">, 4362 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, 4363 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4364 def int_x86_avx512_mask_reduce_ps_128 : GCCBuiltin<"__builtin_ia32_reduceps128_mask">, 4365 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_i32_ty, 4366 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 4367 def int_x86_avx512_mask_reduce_ps_256 : GCCBuiltin<"__builtin_ia32_reduceps256_mask">, 4368 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_i32_ty, 4369 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 4370 def int_x86_avx512_mask_reduce_ps_512 : GCCBuiltin<"__builtin_ia32_reduceps512_mask">, 4371 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, 4372 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4373 def int_x86_avx512_mask_range_pd_128 : GCCBuiltin<"__builtin_ia32_rangepd128_mask">, 4374 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, 4375 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 4376 def int_x86_avx512_mask_range_pd_256 : GCCBuiltin<"__builtin_ia32_rangepd256_mask">, 4377 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, 4378 llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 4379 def int_x86_avx512_mask_range_pd_512 : GCCBuiltin<"__builtin_ia32_rangepd512_mask">, 4380 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty, 4381 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4382 def int_x86_avx512_mask_range_ps_128 : GCCBuiltin<"__builtin_ia32_rangeps128_mask">, 4383 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, 4384 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 4385 def int_x86_avx512_mask_range_ps_256 : GCCBuiltin<"__builtin_ia32_rangeps256_mask">, 4386 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, 4387 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 4388 def int_x86_avx512_mask_range_ps_512 : GCCBuiltin<"__builtin_ia32_rangeps512_mask">, 4389 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty, 4390 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4391 } 4392 4393 // Vector load with broadcast 4394 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 4395 def int_x86_avx512_vbroadcast_ss_512 : 4396 GCCBuiltin<"__builtin_ia32_vbroadcastss512">, 4397 Intrinsic<[llvm_v16f32_ty], [llvm_ptr_ty], [IntrReadMem, IntrArgMemOnly]>; 4398 4399 def int_x86_avx512_vbroadcast_sd_512 : 4400 GCCBuiltin<"__builtin_ia32_vbroadcastsd512">, 4401 Intrinsic<[llvm_v8f64_ty], [llvm_ptr_ty], [IntrReadMem, IntrArgMemOnly]>; 4402 4403 def int_x86_avx512_mask_broadcastf32x2_256 : 4404 GCCBuiltin<"__builtin_ia32_broadcastf32x2_256_mask">, 4405 Intrinsic<[llvm_v8f32_ty], 4406 [llvm_v4f32_ty, llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 4407 4408 def int_x86_avx512_mask_broadcastf32x2_512 : 4409 GCCBuiltin<"__builtin_ia32_broadcastf32x2_512_mask">, 4410 Intrinsic<[llvm_v16f32_ty], 4411 [llvm_v4f32_ty, llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 4412 4413 def int_x86_avx512_mask_broadcasti32x2_128 : 4414 GCCBuiltin<"__builtin_ia32_broadcasti32x2_128_mask">, 4415 Intrinsic<[llvm_v4i32_ty], 4416 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>; 4417 4418 def int_x86_avx512_mask_broadcasti32x2_256 : 4419 GCCBuiltin<"__builtin_ia32_broadcasti32x2_256_mask">, 4420 Intrinsic<[llvm_v8i32_ty], 4421 [llvm_v4i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 4422 4423 def int_x86_avx512_mask_broadcasti32x2_512 : 4424 GCCBuiltin<"__builtin_ia32_broadcasti32x2_512_mask">, 4425 Intrinsic<[llvm_v16i32_ty], 4426 [llvm_v4i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 4427 4428 def int_x86_avx512_mask_broadcastf32x4_256 : 4429 GCCBuiltin<"__builtin_ia32_broadcastf32x4_256_mask">, 4430 Intrinsic<[llvm_v8f32_ty], 4431 [llvm_v4f32_ty, llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 4432 4433 def int_x86_avx512_mask_broadcastf32x4_512 : 4434 GCCBuiltin<"__builtin_ia32_broadcastf32x4_512">, 4435 Intrinsic<[llvm_v16f32_ty], 4436 [llvm_v4f32_ty, llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 4437 4438 def int_x86_avx512_mask_broadcastf32x8_512 : 4439 GCCBuiltin<"__builtin_ia32_broadcastf32x8_512_mask">, 4440 Intrinsic<[llvm_v16f32_ty], 4441 [llvm_v8f32_ty, llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>; 4442 4443 def int_x86_avx512_mask_broadcastf64x2_256 : 4444 GCCBuiltin<"__builtin_ia32_broadcastf64x2_256_mask">, 4445 Intrinsic<[llvm_v4f64_ty], 4446 [llvm_v2f64_ty, llvm_v4f64_ty, llvm_i8_ty], [IntrNoMem]>; 4447 4448 def int_x86_avx512_mask_broadcastf64x2_512 : 4449 GCCBuiltin<"__builtin_ia32_broadcastf64x2_512_mask">, 4450 Intrinsic<[llvm_v8f64_ty], 4451 [llvm_v2f64_ty, llvm_v8f64_ty, llvm_i8_ty], [IntrNoMem]>; 4452 4453 def int_x86_avx512_mask_broadcastf64x4_512 : 4454 GCCBuiltin<"__builtin_ia32_broadcastf64x4_512">, 4455 Intrinsic<[llvm_v8f64_ty], 4456 [llvm_v4f64_ty, llvm_v8f64_ty, llvm_i8_ty], [IntrNoMem]>; 4457 4458 def int_x86_avx512_mask_broadcasti32x4_256 : 4459 GCCBuiltin<"__builtin_ia32_broadcasti32x4_256_mask">, 4460 Intrinsic<[llvm_v8i32_ty], 4461 [llvm_v4i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>; 4462 4463 def int_x86_avx512_mask_broadcasti32x4_512 : 4464 GCCBuiltin<"__builtin_ia32_broadcasti32x4_512">, 4465 Intrinsic<[llvm_v16i32_ty], 4466 [llvm_v4i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 4467 4468 def int_x86_avx512_mask_broadcasti32x8_512 : 4469 GCCBuiltin<"__builtin_ia32_broadcasti32x8_512_mask">, 4470 Intrinsic<[llvm_v16i32_ty], 4471 [llvm_v8i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>; 4472 4473 def int_x86_avx512_mask_broadcasti64x2_256 : 4474 GCCBuiltin<"__builtin_ia32_broadcasti64x2_256_mask">, 4475 Intrinsic<[llvm_v4i64_ty], 4476 [llvm_v2i64_ty, llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>; 4477 4478 def int_x86_avx512_mask_broadcasti64x2_512 : 4479 GCCBuiltin<"__builtin_ia32_broadcasti64x2_512_mask">, 4480 Intrinsic<[llvm_v8i64_ty], 4481 [llvm_v2i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 4482 4483 def int_x86_avx512_mask_broadcasti64x4_512 : 4484 GCCBuiltin<"__builtin_ia32_broadcasti64x4_512">, 4485 Intrinsic<[llvm_v8i64_ty], 4486 [llvm_v4i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; 4487 4488 def int_x86_avx512_broadcastmw_512 : 4489 GCCBuiltin<"__builtin_ia32_broadcastmw512">, 4490 Intrinsic<[llvm_v16i32_ty], [llvm_i16_ty], [IntrNoMem]>; 4491 def int_x86_avx512_broadcastmw_256 : 4492 GCCBuiltin<"__builtin_ia32_broadcastmw256">, 4493 Intrinsic<[llvm_v8i32_ty], [llvm_i16_ty], [IntrNoMem]>; 4494 def int_x86_avx512_broadcastmw_128 : 4495 GCCBuiltin<"__builtin_ia32_broadcastmw128">, 4496 Intrinsic<[llvm_v4i32_ty], [llvm_i16_ty], [IntrNoMem]>; 4497 def int_x86_avx512_broadcastmb_512 : 4498 GCCBuiltin<"__builtin_ia32_broadcastmb512">, 4499 Intrinsic<[llvm_v8i64_ty], [llvm_i8_ty], [IntrNoMem]>; 4500 def int_x86_avx512_broadcastmb_256 : 4501 GCCBuiltin<"__builtin_ia32_broadcastmb256">, 4502 Intrinsic<[llvm_v4i64_ty], [llvm_i8_ty], [IntrNoMem]>; 4503 def int_x86_avx512_broadcastmb_128 : 4504 GCCBuiltin<"__builtin_ia32_broadcastmb128">, 4505 Intrinsic<[llvm_v2i64_ty], [llvm_i8_ty], [IntrNoMem]>; 4506 } 4507 4508 // Arithmetic ops 4509 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.". 4510 4511 def int_x86_avx512_mask_add_ps_512 : GCCBuiltin<"__builtin_ia32_addps512_mask">, 4512 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4513 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4514 def int_x86_avx512_mask_add_pd_512 : GCCBuiltin<"__builtin_ia32_addpd512_mask">, 4515 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4516 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4517 def int_x86_avx512_mask_sub_ps_512 : GCCBuiltin<"__builtin_ia32_subps512_mask">, 4518 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4519 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4520 def int_x86_avx512_mask_sub_pd_512 : GCCBuiltin<"__builtin_ia32_subpd512_mask">, 4521 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4522 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4523 def int_x86_avx512_mask_mul_ps_512 : GCCBuiltin<"__builtin_ia32_mulps512_mask">, 4524 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4525 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4526 def int_x86_avx512_mask_mul_pd_512 : GCCBuiltin<"__builtin_ia32_mulpd512_mask">, 4527 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4528 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4529 def int_x86_avx512_mask_div_ps_512 : GCCBuiltin<"__builtin_ia32_divps512_mask">, 4530 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4531 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4532 def int_x86_avx512_mask_div_pd_512 : GCCBuiltin<"__builtin_ia32_divpd512_mask">, 4533 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4534 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4535 def int_x86_avx512_mask_max_ps_512 : GCCBuiltin<"__builtin_ia32_maxps512_mask">, 4536 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4537 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4538 def int_x86_avx512_mask_max_pd_512 : GCCBuiltin<"__builtin_ia32_maxpd512_mask">, 4539 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4540 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4541 def int_x86_avx512_mask_min_ps_512 : GCCBuiltin<"__builtin_ia32_minps512_mask">, 4542 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4543 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4544 def int_x86_avx512_mask_min_pd_512 : GCCBuiltin<"__builtin_ia32_minpd512_mask">, 4545 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4546 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4547 4548 def int_x86_avx512_mask_add_ss_round : GCCBuiltin<"__builtin_ia32_addss_round_mask">, 4549 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4550 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4551 def int_x86_avx512_mask_div_ss_round : GCCBuiltin<"__builtin_ia32_divss_round_mask">, 4552 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4553 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4554 def int_x86_avx512_mask_mul_ss_round : GCCBuiltin<"__builtin_ia32_mulss_round_mask">, 4555 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4556 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4557 def int_x86_avx512_mask_sub_ss_round : GCCBuiltin<"__builtin_ia32_subss_round_mask">, 4558 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4559 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4560 def int_x86_avx512_mask_max_ss_round : GCCBuiltin<"__builtin_ia32_maxss_round_mask">, 4561 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4562 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4563 def int_x86_avx512_mask_min_ss_round : GCCBuiltin<"__builtin_ia32_minss_round_mask">, 4564 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4565 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4566 def int_x86_avx512_mask_add_sd_round : GCCBuiltin<"__builtin_ia32_addsd_round_mask">, 4567 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4568 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4569 def int_x86_avx512_mask_div_sd_round : GCCBuiltin<"__builtin_ia32_divsd_round_mask">, 4570 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4571 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4572 def int_x86_avx512_mask_mul_sd_round : GCCBuiltin<"__builtin_ia32_mulsd_round_mask">, 4573 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4574 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4575 def int_x86_avx512_mask_sub_sd_round : GCCBuiltin<"__builtin_ia32_subsd_round_mask">, 4576 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4577 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4578 def int_x86_avx512_mask_max_sd_round : GCCBuiltin<"__builtin_ia32_maxsd_round_mask">, 4579 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4580 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4581 def int_x86_avx512_mask_min_sd_round : GCCBuiltin<"__builtin_ia32_minsd_round_mask">, 4582 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4583 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4584 4585 def int_x86_avx512_mask_rndscale_ss : GCCBuiltin<"__builtin_ia32_rndscaless_round_mask">, 4586 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 4587 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 4588 [IntrNoMem]>; 4589 def int_x86_avx512_mask_rndscale_sd : GCCBuiltin<"__builtin_ia32_rndscalesd_round_mask">, 4590 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 4591 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 4592 [IntrNoMem]>; 4593 def int_x86_avx512_mask_range_ss : GCCBuiltin<"__builtin_ia32_rangess128_round_mask">, 4594 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 4595 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 4596 [IntrNoMem]>; 4597 def int_x86_avx512_mask_range_sd : GCCBuiltin<"__builtin_ia32_rangesd128_round_mask">, 4598 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 4599 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 4600 [IntrNoMem]>; 4601 def int_x86_avx512_mask_reduce_ss : GCCBuiltin<"__builtin_ia32_reducess_mask">, 4602 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 4603 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 4604 [IntrNoMem]>; 4605 def int_x86_avx512_mask_reduce_sd : GCCBuiltin<"__builtin_ia32_reducesd_mask">, 4606 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 4607 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty], 4608 [IntrNoMem]>; 4609 def int_x86_avx512_mask_scalef_sd : GCCBuiltin<"__builtin_ia32_scalefsd_round_mask">, 4610 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4611 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4612 def int_x86_avx512_mask_scalef_ss : GCCBuiltin<"__builtin_ia32_scalefss_round_mask">, 4613 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4614 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4615 def int_x86_avx512_mask_scalef_pd_128 : GCCBuiltin<"__builtin_ia32_scalefpd128_mask">, 4616 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4617 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>; 4618 def int_x86_avx512_mask_scalef_pd_256 : GCCBuiltin<"__builtin_ia32_scalefpd256_mask">, 4619 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 4620 llvm_v4f64_ty, llvm_i8_ty],[IntrNoMem]>; 4621 def int_x86_avx512_mask_scalef_pd_512 : GCCBuiltin<"__builtin_ia32_scalefpd512_mask">, 4622 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4623 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4624 def int_x86_avx512_mask_scalef_ps_128 : GCCBuiltin<"__builtin_ia32_scalefps128_mask">, 4625 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4626 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>; 4627 def int_x86_avx512_mask_scalef_ps_256 : GCCBuiltin<"__builtin_ia32_scalefps256_mask">, 4628 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 4629 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>; 4630 def int_x86_avx512_mask_scalef_ps_512 : GCCBuiltin<"__builtin_ia32_scalefps512_mask">, 4631 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4632 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4633 4634 def int_x86_avx512_mask_sqrt_ss : GCCBuiltin<"__builtin_ia32_sqrtss_round_mask">, 4635 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 4636 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4637 def int_x86_avx512_mask_sqrt_sd : GCCBuiltin<"__builtin_ia32_sqrtsd_round_mask">, 4638 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 4639 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4640 4641 def int_x86_avx512_mask_sqrt_pd_128 : GCCBuiltin<"__builtin_ia32_sqrtpd128_mask">, 4642 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4643 llvm_i8_ty], [IntrNoMem]>; 4644 def int_x86_avx512_mask_sqrt_pd_256 : GCCBuiltin<"__builtin_ia32_sqrtpd256_mask">, 4645 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 4646 llvm_i8_ty], [IntrNoMem]>; 4647 def int_x86_avx512_mask_sqrt_pd_512 : GCCBuiltin<"__builtin_ia32_sqrtpd512_mask">, 4648 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4649 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4650 def int_x86_avx512_mask_sqrt_ps_128 : GCCBuiltin<"__builtin_ia32_sqrtps128_mask">, 4651 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4652 llvm_i8_ty], [IntrNoMem]>; 4653 def int_x86_avx512_mask_sqrt_ps_256 : GCCBuiltin<"__builtin_ia32_sqrtps256_mask">, 4654 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 4655 llvm_i8_ty], [IntrNoMem]>; 4656 def int_x86_avx512_mask_sqrt_ps_512 : GCCBuiltin<"__builtin_ia32_sqrtps512_mask">, 4657 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4658 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4659 def int_x86_avx512_mask_fixupimm_pd_128 : 4660 GCCBuiltin<"__builtin_ia32_fixupimmpd128_mask">, 4661 Intrinsic<[llvm_v2f64_ty], 4662 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty], 4663 [IntrNoMem]>; 4664 def int_x86_avx512_maskz_fixupimm_pd_128 : 4665 GCCBuiltin<"__builtin_ia32_fixupimmpd128_maskz">, 4666 Intrinsic<[llvm_v2f64_ty], 4667 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty], 4668 [IntrNoMem]>; 4669 def int_x86_avx512_mask_fixupimm_pd_256 : 4670 GCCBuiltin<"__builtin_ia32_fixupimmpd256_mask">, 4671 Intrinsic<[llvm_v4f64_ty], 4672 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_i8_ty], 4673 [IntrNoMem]>; 4674 def int_x86_avx512_maskz_fixupimm_pd_256 : 4675 GCCBuiltin<"__builtin_ia32_fixupimmpd256_maskz">, 4676 Intrinsic<[llvm_v4f64_ty], 4677 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_i8_ty], 4678 [IntrNoMem]>; 4679 def int_x86_avx512_mask_fixupimm_pd_512 : 4680 GCCBuiltin<"__builtin_ia32_fixupimmpd512_mask">, 4681 Intrinsic<[llvm_v8f64_ty], 4682 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8i64_ty, llvm_i32_ty, llvm_i8_ty, 4683 llvm_i32_ty], [IntrNoMem]>; 4684 def int_x86_avx512_maskz_fixupimm_pd_512 : 4685 GCCBuiltin<"__builtin_ia32_fixupimmpd512_maskz">, 4686 Intrinsic<[llvm_v8f64_ty], 4687 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8i64_ty, llvm_i32_ty, llvm_i8_ty, 4688 llvm_i32_ty], [IntrNoMem]>; 4689 def int_x86_avx512_mask_fixupimm_ps_128 : 4690 GCCBuiltin<"__builtin_ia32_fixupimmps128_mask">, 4691 Intrinsic<[llvm_v4f32_ty], 4692 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty], 4693 [IntrNoMem]>; 4694 def int_x86_avx512_maskz_fixupimm_ps_128 : 4695 GCCBuiltin<"__builtin_ia32_fixupimmps128_maskz">, 4696 Intrinsic<[llvm_v4f32_ty], 4697 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty], 4698 [IntrNoMem]>; 4699 def int_x86_avx512_mask_fixupimm_ps_256 : 4700 GCCBuiltin<"__builtin_ia32_fixupimmps256_mask">, 4701 Intrinsic<[llvm_v8f32_ty], 4702 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_i8_ty], 4703 [IntrNoMem]>; 4704 def int_x86_avx512_maskz_fixupimm_ps_256 : 4705 GCCBuiltin<"__builtin_ia32_fixupimmps256_maskz">, 4706 Intrinsic<[llvm_v8f32_ty], 4707 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_i8_ty], 4708 [IntrNoMem]>; 4709 def int_x86_avx512_mask_fixupimm_ps_512 : 4710 GCCBuiltin<"__builtin_ia32_fixupimmps512_mask">, 4711 Intrinsic<[llvm_v16f32_ty], 4712 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16i32_ty, llvm_i32_ty, 4713 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4714 def int_x86_avx512_maskz_fixupimm_ps_512 : 4715 GCCBuiltin<"__builtin_ia32_fixupimmps512_maskz">, 4716 Intrinsic<[llvm_v16f32_ty], 4717 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16i32_ty, llvm_i32_ty, 4718 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4719 def int_x86_avx512_mask_fixupimm_sd : 4720 GCCBuiltin<"__builtin_ia32_fixupimmsd_mask">, 4721 Intrinsic<[llvm_v2f64_ty], 4722 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty, 4723 llvm_i32_ty], [IntrNoMem]>; 4724 def int_x86_avx512_maskz_fixupimm_sd : 4725 GCCBuiltin<"__builtin_ia32_fixupimmsd_maskz">, 4726 Intrinsic<[llvm_v2f64_ty], 4727 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty, 4728 llvm_i32_ty], [IntrNoMem]>; 4729 def int_x86_avx512_mask_fixupimm_ss : 4730 GCCBuiltin<"__builtin_ia32_fixupimmss_mask">, 4731 Intrinsic<[llvm_v4f32_ty], 4732 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty, 4733 llvm_i32_ty], [IntrNoMem]>; 4734 def int_x86_avx512_maskz_fixupimm_ss : 4735 GCCBuiltin<"__builtin_ia32_fixupimmss_maskz">, 4736 Intrinsic<[llvm_v4f32_ty], 4737 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty, 4738 llvm_i32_ty], [IntrNoMem]>; 4739 def int_x86_avx512_mask_getexp_pd_128 : GCCBuiltin<"__builtin_ia32_getexppd128_mask">, 4740 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4741 llvm_i8_ty], [IntrNoMem]>; 4742 def int_x86_avx512_mask_getexp_pd_256 : GCCBuiltin<"__builtin_ia32_getexppd256_mask">, 4743 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 4744 llvm_i8_ty], [IntrNoMem]>; 4745 def int_x86_avx512_mask_getexp_pd_512 : GCCBuiltin<"__builtin_ia32_getexppd512_mask">, 4746 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4747 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4748 def int_x86_avx512_mask_getexp_ps_128 : GCCBuiltin<"__builtin_ia32_getexpps128_mask">, 4749 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4750 llvm_i8_ty], [IntrNoMem]>; 4751 def int_x86_avx512_mask_getexp_ps_256 : GCCBuiltin<"__builtin_ia32_getexpps256_mask">, 4752 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 4753 llvm_i8_ty], [IntrNoMem]>; 4754 def int_x86_avx512_mask_getexp_ps_512 : GCCBuiltin<"__builtin_ia32_getexpps512_mask">, 4755 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4756 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4757 4758 def int_x86_avx512_mask_getexp_ss : GCCBuiltin<"__builtin_ia32_getexpss128_round_mask">, 4759 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 4760 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4761 def int_x86_avx512_mask_getexp_sd : GCCBuiltin<"__builtin_ia32_getexpsd128_round_mask">, 4762 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 4763 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4764 4765 def int_x86_avx512_mask_getmant_pd_128 : 4766 GCCBuiltin<"__builtin_ia32_getmantpd128_mask">, 4767 Intrinsic<[llvm_v2f64_ty], 4768 [llvm_v2f64_ty,llvm_i32_ty, llvm_v2f64_ty, llvm_i8_ty], 4769 [IntrNoMem]>; 4770 4771 def int_x86_avx512_mask_getmant_pd_256 : 4772 GCCBuiltin<"__builtin_ia32_getmantpd256_mask">, 4773 Intrinsic<[llvm_v4f64_ty], 4774 [llvm_v4f64_ty,llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty], 4775 [IntrNoMem]>; 4776 4777 def int_x86_avx512_mask_getmant_pd_512 : 4778 GCCBuiltin<"__builtin_ia32_getmantpd512_mask">, 4779 Intrinsic<[llvm_v8f64_ty], 4780 [llvm_v8f64_ty,llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty,llvm_i32_ty ], 4781 [IntrNoMem]>; 4782 4783 def int_x86_avx512_mask_getmant_ps_128 : 4784 GCCBuiltin<"__builtin_ia32_getmantps128_mask">, 4785 Intrinsic<[llvm_v4f32_ty], 4786 [llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, llvm_i8_ty], 4787 [IntrNoMem]>; 4788 4789 def int_x86_avx512_mask_getmant_ps_256 : 4790 GCCBuiltin<"__builtin_ia32_getmantps256_mask">, 4791 Intrinsic<[llvm_v8f32_ty], 4792 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty], 4793 [IntrNoMem]>; 4794 4795 def int_x86_avx512_mask_getmant_ps_512 : 4796 GCCBuiltin<"__builtin_ia32_getmantps512_mask">, 4797 Intrinsic<[llvm_v16f32_ty], 4798 [llvm_v16f32_ty,llvm_i32_ty, llvm_v16f32_ty,llvm_i16_ty,llvm_i32_ty], 4799 [IntrNoMem]>; 4800 4801 def int_x86_avx512_mask_getmant_ss : 4802 GCCBuiltin<"__builtin_ia32_getmantss_round_mask">, 4803 Intrinsic<[llvm_v4f32_ty], 4804 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, 4805 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4806 4807 def int_x86_avx512_mask_getmant_sd : 4808 GCCBuiltin<"__builtin_ia32_getmantsd_round_mask">, 4809 Intrinsic<[llvm_v2f64_ty], 4810 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, 4811 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4812 4813 def int_x86_avx512_rsqrt14_ss : GCCBuiltin<"__builtin_ia32_rsqrt14ss_mask">, 4814 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 4815 llvm_i8_ty], [IntrNoMem]>; 4816 def int_x86_avx512_rsqrt14_sd : GCCBuiltin<"__builtin_ia32_rsqrt14sd_mask">, 4817 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 4818 llvm_i8_ty], [IntrNoMem]>; 4819 4820 def int_x86_avx512_rsqrt14_pd_128 : GCCBuiltin<"__builtin_ia32_rsqrt14pd128_mask">, 4821 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4822 llvm_i8_ty], [IntrNoMem]>; 4823 def int_x86_avx512_rsqrt14_pd_256 : GCCBuiltin<"__builtin_ia32_rsqrt14pd256_mask">, 4824 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 4825 llvm_i8_ty], [IntrNoMem]>; 4826 def int_x86_avx512_rsqrt14_pd_512 : GCCBuiltin<"__builtin_ia32_rsqrt14pd512_mask">, 4827 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4828 llvm_i8_ty], [IntrNoMem]>; 4829 def int_x86_avx512_rsqrt14_ps_128 : GCCBuiltin<"__builtin_ia32_rsqrt14ps128_mask">, 4830 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4831 llvm_i8_ty], [IntrNoMem]>; 4832 def int_x86_avx512_rsqrt14_ps_256 : GCCBuiltin<"__builtin_ia32_rsqrt14ps256_mask">, 4833 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 4834 llvm_i8_ty], [IntrNoMem]>; 4835 def int_x86_avx512_rsqrt14_ps_512 : GCCBuiltin<"__builtin_ia32_rsqrt14ps512_mask">, 4836 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4837 llvm_i16_ty], [IntrNoMem]>; 4838 def int_x86_avx512_rcp14_ss : GCCBuiltin<"__builtin_ia32_rcp14ss_mask">, 4839 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty, 4840 llvm_i8_ty], [IntrNoMem]>; 4841 def int_x86_avx512_rcp14_sd : GCCBuiltin<"__builtin_ia32_rcp14sd_mask">, 4842 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty, 4843 llvm_i8_ty], [IntrNoMem]>; 4844 4845 def int_x86_avx512_rcp14_pd_128 : GCCBuiltin<"__builtin_ia32_rcp14pd128_mask">, 4846 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4847 llvm_i8_ty], [IntrNoMem]>; 4848 def int_x86_avx512_rcp14_pd_256 : GCCBuiltin<"__builtin_ia32_rcp14pd256_mask">, 4849 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 4850 llvm_i8_ty], [IntrNoMem]>; 4851 def int_x86_avx512_rcp14_pd_512 : GCCBuiltin<"__builtin_ia32_rcp14pd512_mask">, 4852 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4853 llvm_i8_ty], [IntrNoMem]>; 4854 def int_x86_avx512_rcp14_ps_128 : GCCBuiltin<"__builtin_ia32_rcp14ps128_mask">, 4855 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4856 llvm_i8_ty], [IntrNoMem]>; 4857 def int_x86_avx512_rcp14_ps_256 : GCCBuiltin<"__builtin_ia32_rcp14ps256_mask">, 4858 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 4859 llvm_i8_ty], [IntrNoMem]>; 4860 def int_x86_avx512_rcp14_ps_512 : GCCBuiltin<"__builtin_ia32_rcp14ps512_mask">, 4861 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4862 llvm_i16_ty], [IntrNoMem]>; 4863 4864 def int_x86_avx512_rcp28_ps : GCCBuiltin<"__builtin_ia32_rcp28ps_mask">, 4865 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4866 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4867 def int_x86_avx512_rcp28_pd : GCCBuiltin<"__builtin_ia32_rcp28pd_mask">, 4868 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4869 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4870 def int_x86_avx512_exp2_ps : GCCBuiltin<"__builtin_ia32_exp2ps_mask">, 4871 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4872 llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 4873 def int_x86_avx512_exp2_pd : GCCBuiltin<"__builtin_ia32_exp2pd_mask">, 4874 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4875 llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 4876 4877 def int_x86_avx512_rcp28_ss : GCCBuiltin<"__builtin_ia32_rcp28ss_round_mask">, 4878 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4879 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], 4880 [IntrNoMem]>; 4881 def int_x86_avx512_rcp28_sd : GCCBuiltin<"__builtin_ia32_rcp28sd_round_mask">, 4882 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4883 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], 4884 [IntrNoMem]>; 4885 def int_x86_avx512_rsqrt28_ps : GCCBuiltin<"__builtin_ia32_rsqrt28ps_mask">, 4886 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 4887 llvm_i16_ty, llvm_i32_ty], 4888 [IntrNoMem]>; 4889 def int_x86_avx512_rsqrt28_pd : GCCBuiltin<"__builtin_ia32_rsqrt28pd_mask">, 4890 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 4891 llvm_i8_ty, llvm_i32_ty], 4892 [IntrNoMem]>; 4893 def int_x86_avx512_rsqrt28_ss : GCCBuiltin<"__builtin_ia32_rsqrt28ss_round_mask">, 4894 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 4895 llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty], 4896 [IntrNoMem]>; 4897 def int_x86_avx512_rsqrt28_sd : GCCBuiltin<"__builtin_ia32_rsqrt28sd_round_mask">, 4898 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 4899 llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty], 4900 [IntrNoMem]>; 4901 def int_x86_avx512_psad_bw_512 : GCCBuiltin<"__builtin_ia32_psadbw512">, 4902 Intrinsic<[llvm_v8i64_ty], [llvm_v64i8_ty, llvm_v64i8_ty], 4903 [IntrNoMem, Commutative]>; 4904 } 4905 // Integer arithmetic ops 4906 let TargetPrefix = "x86" in { 4907 def int_x86_avx512_mask_padds_b_128 : GCCBuiltin<"__builtin_ia32_paddsb128_mask">, 4908 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 4909 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 4910 def int_x86_avx512_mask_padds_b_256 : GCCBuiltin<"__builtin_ia32_paddsb256_mask">, 4911 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 4912 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 4913 def int_x86_avx512_mask_padds_b_512 : GCCBuiltin<"__builtin_ia32_paddsb512_mask">, 4914 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 4915 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 4916 def int_x86_avx512_mask_padds_w_128 : GCCBuiltin<"__builtin_ia32_paddsw128_mask">, 4917 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 4918 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 4919 def int_x86_avx512_mask_padds_w_256 : GCCBuiltin<"__builtin_ia32_paddsw256_mask">, 4920 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 4921 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 4922 def int_x86_avx512_mask_padds_w_512 : GCCBuiltin<"__builtin_ia32_paddsw512_mask">, 4923 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 4924 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 4925 def int_x86_avx512_mask_paddus_b_128 : GCCBuiltin<"__builtin_ia32_paddusb128_mask">, 4926 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 4927 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 4928 def int_x86_avx512_mask_paddus_b_256 : GCCBuiltin<"__builtin_ia32_paddusb256_mask">, 4929 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 4930 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 4931 def int_x86_avx512_mask_paddus_b_512 : GCCBuiltin<"__builtin_ia32_paddusb512_mask">, 4932 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 4933 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 4934 def int_x86_avx512_mask_paddus_w_128 : GCCBuiltin<"__builtin_ia32_paddusw128_mask">, 4935 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 4936 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 4937 def int_x86_avx512_mask_paddus_w_256 : GCCBuiltin<"__builtin_ia32_paddusw256_mask">, 4938 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 4939 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 4940 def int_x86_avx512_mask_paddus_w_512 : GCCBuiltin<"__builtin_ia32_paddusw512_mask">, 4941 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 4942 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 4943 def int_x86_avx512_mask_psubs_b_128 : GCCBuiltin<"__builtin_ia32_psubsb128_mask">, 4944 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 4945 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 4946 def int_x86_avx512_mask_psubs_b_256 : GCCBuiltin<"__builtin_ia32_psubsb256_mask">, 4947 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 4948 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 4949 def int_x86_avx512_mask_psubs_b_512 : GCCBuiltin<"__builtin_ia32_psubsb512_mask">, 4950 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 4951 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 4952 def int_x86_avx512_mask_psubs_w_128 : GCCBuiltin<"__builtin_ia32_psubsw128_mask">, 4953 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 4954 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 4955 def int_x86_avx512_mask_psubs_w_256 : GCCBuiltin<"__builtin_ia32_psubsw256_mask">, 4956 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 4957 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 4958 def int_x86_avx512_mask_psubs_w_512 : GCCBuiltin<"__builtin_ia32_psubsw512_mask">, 4959 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 4960 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 4961 def int_x86_avx512_mask_psubus_b_128 : GCCBuiltin<"__builtin_ia32_psubusb128_mask">, 4962 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 4963 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 4964 def int_x86_avx512_mask_psubus_b_256 : GCCBuiltin<"__builtin_ia32_psubusb256_mask">, 4965 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 4966 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 4967 def int_x86_avx512_mask_psubus_b_512 : GCCBuiltin<"__builtin_ia32_psubusb512_mask">, 4968 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 4969 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 4970 def int_x86_avx512_mask_psubus_w_128 : GCCBuiltin<"__builtin_ia32_psubusw128_mask">, 4971 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 4972 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 4973 def int_x86_avx512_mask_psubus_w_256 : GCCBuiltin<"__builtin_ia32_psubusw256_mask">, 4974 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 4975 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 4976 def int_x86_avx512_mask_psubus_w_512 : GCCBuiltin<"__builtin_ia32_psubusw512_mask">, 4977 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 4978 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 4979 def int_x86_avx512_pmulu_dq_512 : GCCBuiltin<"__builtin_ia32_pmuludq512">, 4980 Intrinsic<[llvm_v8i64_ty], [llvm_v16i32_ty, llvm_v16i32_ty], [IntrNoMem]>; 4981 def int_x86_avx512_pmul_dq_512 : GCCBuiltin<"__builtin_ia32_pmuldq512">, 4982 Intrinsic<[llvm_v8i64_ty], [llvm_v16i32_ty, llvm_v16i32_ty], [IntrNoMem]>; 4983 def int_x86_avx512_mask_pmulhu_w_512 : GCCBuiltin<"__builtin_ia32_pmulhuw512_mask">, 4984 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 4985 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 4986 def int_x86_avx512_mask_pmulh_w_512 : GCCBuiltin<"__builtin_ia32_pmulhw512_mask">, 4987 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 4988 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 4989 def int_x86_avx512_mask_pmulhu_w_128 : GCCBuiltin<"__builtin_ia32_pmulhuw128_mask">, 4990 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 4991 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 4992 def int_x86_avx512_mask_pmulhu_w_256 : GCCBuiltin<"__builtin_ia32_pmulhuw256_mask">, 4993 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 4994 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 4995 def int_x86_avx512_mask_pmulh_w_128 : GCCBuiltin<"__builtin_ia32_pmulhw128_mask">, 4996 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 4997 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 4998 def int_x86_avx512_mask_pmulh_w_256 : GCCBuiltin<"__builtin_ia32_pmulhw256_mask">, 4999 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5000 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5001 def int_x86_avx512_mask_pavg_b_512 : GCCBuiltin<"__builtin_ia32_pavgb512_mask">, 5002 Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, 5003 llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; 5004 def int_x86_avx512_mask_pavg_w_512 : GCCBuiltin<"__builtin_ia32_pavgw512_mask">, 5005 Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, 5006 llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; 5007 def int_x86_avx512_mask_pavg_b_128 : GCCBuiltin<"__builtin_ia32_pavgb128_mask">, 5008 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, 5009 llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; 5010 def int_x86_avx512_mask_pavg_b_256 : GCCBuiltin<"__builtin_ia32_pavgb256_mask">, 5011 Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, 5012 llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; 5013 def int_x86_avx512_mask_pavg_w_128 : GCCBuiltin<"__builtin_ia32_pavgw128_mask">, 5014 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, 5015 llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; 5016 def int_x86_avx512_mask_pavg_w_256 : GCCBuiltin<"__builtin_ia32_pavgw256_mask">, 5017 Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, 5018 llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; 5019 def int_x86_avx512_mask_pmaddw_d_128 : 5020 GCCBuiltin<"__builtin_ia32_pmaddwd128_mask">, 5021 Intrinsic<[llvm_v4i32_ty], 5022 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty, llvm_i8_ty], 5023 [IntrNoMem]>; 5024 def int_x86_avx512_mask_pmaddw_d_256 : 5025 GCCBuiltin<"__builtin_ia32_pmaddwd256_mask">, 5026 Intrinsic<[llvm_v8i32_ty], 5027 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v8i32_ty, llvm_i8_ty], 5028 [IntrNoMem]>; 5029 def int_x86_avx512_mask_pmaddw_d_512 : 5030 GCCBuiltin<"__builtin_ia32_pmaddwd512_mask">, 5031 Intrinsic<[llvm_v16i32_ty], 5032 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v16i32_ty, llvm_i16_ty], 5033 [IntrNoMem]>; 5034 def int_x86_avx512_mask_pmaddubs_w_128 : 5035 GCCBuiltin<"__builtin_ia32_pmaddubsw128_mask">, 5036 Intrinsic<[llvm_v8i16_ty], 5037 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v8i16_ty, llvm_i8_ty], 5038 [IntrNoMem]>; 5039 def int_x86_avx512_mask_pmaddubs_w_256 : 5040 GCCBuiltin<"__builtin_ia32_pmaddubsw256_mask">, 5041 Intrinsic<[llvm_v16i16_ty], 5042 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_v16i16_ty, llvm_i16_ty], 5043 [IntrNoMem]>; 5044 def int_x86_avx512_mask_pmaddubs_w_512 : 5045 GCCBuiltin<"__builtin_ia32_pmaddubsw512_mask">, 5046 Intrinsic<[llvm_v32i16_ty], 5047 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_v32i16_ty, llvm_i32_ty], 5048 [IntrNoMem]>; 5049 5050 def int_x86_avx512_mask_dbpsadbw_128 : 5051 GCCBuiltin<"__builtin_ia32_dbpsadbw128_mask">, 5052 Intrinsic<[llvm_v8i16_ty], 5053 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty, llvm_v8i16_ty, 5054 llvm_i8_ty], [IntrNoMem]>; 5055 5056 def int_x86_avx512_mask_dbpsadbw_256 : 5057 GCCBuiltin<"__builtin_ia32_dbpsadbw256_mask">, 5058 Intrinsic<[llvm_v16i16_ty], 5059 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty, llvm_v16i16_ty, 5060 llvm_i16_ty], [IntrNoMem]>; 5061 5062 def int_x86_avx512_mask_dbpsadbw_512 : 5063 GCCBuiltin<"__builtin_ia32_dbpsadbw512_mask">, 5064 Intrinsic<[llvm_v32i16_ty], 5065 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i32_ty, llvm_v32i16_ty, 5066 llvm_i32_ty], [IntrNoMem]>; 5067 } 5068 5069 // Gather and Scatter ops 5070 let TargetPrefix = "x86" in { 5071 def int_x86_avx512_gather_dpd_512 : GCCBuiltin<"__builtin_ia32_gathersiv8df">, 5072 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty, 5073 llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5074 [IntrReadMem, IntrArgMemOnly]>; 5075 def int_x86_avx512_gather_dps_512 : GCCBuiltin<"__builtin_ia32_gathersiv16sf">, 5076 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_ptr_ty, 5077 llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 5078 [IntrReadMem, IntrArgMemOnly]>; 5079 def int_x86_avx512_gather_qpd_512 : GCCBuiltin<"__builtin_ia32_gatherdiv8df">, 5080 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty, 5081 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5082 [IntrReadMem, IntrArgMemOnly]>; 5083 def int_x86_avx512_gather_qps_512 : GCCBuiltin<"__builtin_ia32_gatherdiv16sf">, 5084 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_ptr_ty, 5085 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5086 [IntrReadMem, IntrArgMemOnly]>; 5087 5088 5089 def int_x86_avx512_gather_dpq_512 : GCCBuiltin<"__builtin_ia32_gathersiv8di">, 5090 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty, 5091 llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5092 [IntrReadMem, IntrArgMemOnly]>; 5093 def int_x86_avx512_gather_dpi_512 : GCCBuiltin<"__builtin_ia32_gathersiv16si">, 5094 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_ptr_ty, 5095 llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty], 5096 [IntrReadMem, IntrArgMemOnly]>; 5097 def int_x86_avx512_gather_qpq_512 : GCCBuiltin<"__builtin_ia32_gatherdiv8di">, 5098 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty, 5099 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5100 [IntrReadMem, IntrArgMemOnly]>; 5101 def int_x86_avx512_gather_qpi_512 : GCCBuiltin<"__builtin_ia32_gatherdiv16si">, 5102 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_ptr_ty, 5103 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty], 5104 [IntrReadMem, IntrArgMemOnly]>; 5105 5106 def int_x86_avx512_gather3div2_df : 5107 GCCBuiltin<"__builtin_ia32_gather3div2df">, 5108 Intrinsic<[llvm_v2f64_ty], 5109 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 5110 [IntrReadMem, IntrArgMemOnly]>; 5111 5112 def int_x86_avx512_gather3div2_di : 5113 GCCBuiltin<"__builtin_ia32_gather3div2di">, 5114 Intrinsic<[llvm_v2i64_ty], 5115 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 5116 [IntrReadMem, IntrArgMemOnly]>; 5117 5118 def int_x86_avx512_gather3div4_df : 5119 GCCBuiltin<"__builtin_ia32_gather3div4df">, 5120 Intrinsic<[llvm_v4f64_ty], 5121 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5122 [IntrReadMem, IntrArgMemOnly]>; 5123 5124 def int_x86_avx512_gather3div4_di : 5125 GCCBuiltin<"__builtin_ia32_gather3div4di">, 5126 Intrinsic<[llvm_v4i64_ty], 5127 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5128 [IntrReadMem, IntrArgMemOnly]>; 5129 5130 def int_x86_avx512_gather3div4_sf : 5131 GCCBuiltin<"__builtin_ia32_gather3div4sf">, 5132 Intrinsic<[llvm_v4f32_ty], 5133 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 5134 [IntrReadMem, IntrArgMemOnly]>; 5135 5136 def int_x86_avx512_gather3div4_si : 5137 GCCBuiltin<"__builtin_ia32_gather3div4si">, 5138 Intrinsic<[llvm_v4i32_ty], 5139 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty], 5140 [IntrReadMem, IntrArgMemOnly]>; 5141 5142 def int_x86_avx512_gather3div8_sf : 5143 GCCBuiltin<"__builtin_ia32_gather3div8sf">, 5144 Intrinsic<[llvm_v4f32_ty], 5145 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5146 [IntrReadMem, IntrArgMemOnly]>; 5147 5148 def int_x86_avx512_gather3div8_si : 5149 GCCBuiltin<"__builtin_ia32_gather3div8si">, 5150 Intrinsic<[llvm_v4i32_ty], 5151 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty], 5152 [IntrReadMem, IntrArgMemOnly]>; 5153 5154 def int_x86_avx512_gather3siv2_df : 5155 GCCBuiltin<"__builtin_ia32_gather3siv2df">, 5156 Intrinsic<[llvm_v2f64_ty], 5157 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5158 [IntrReadMem, IntrArgMemOnly]>; 5159 5160 def int_x86_avx512_gather3siv2_di : 5161 GCCBuiltin<"__builtin_ia32_gather3siv2di">, 5162 Intrinsic<[llvm_v2i64_ty], 5163 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5164 [IntrReadMem, IntrArgMemOnly]>; 5165 5166 def int_x86_avx512_gather3siv4_df : 5167 GCCBuiltin<"__builtin_ia32_gather3siv4df">, 5168 Intrinsic<[llvm_v4f64_ty], 5169 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5170 [IntrReadMem, IntrArgMemOnly]>; 5171 5172 def int_x86_avx512_gather3siv4_di : 5173 GCCBuiltin<"__builtin_ia32_gather3siv4di">, 5174 Intrinsic<[llvm_v4i64_ty], 5175 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5176 [IntrReadMem, IntrArgMemOnly]>; 5177 5178 def int_x86_avx512_gather3siv4_sf : 5179 GCCBuiltin<"__builtin_ia32_gather3siv4sf">, 5180 Intrinsic<[llvm_v4f32_ty], 5181 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5182 [IntrReadMem, IntrArgMemOnly]>; 5183 5184 def int_x86_avx512_gather3siv4_si : 5185 GCCBuiltin<"__builtin_ia32_gather3siv4si">, 5186 Intrinsic<[llvm_v4i32_ty], 5187 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty], 5188 [IntrReadMem, IntrArgMemOnly]>; 5189 5190 def int_x86_avx512_gather3siv8_sf : 5191 GCCBuiltin<"__builtin_ia32_gather3siv8sf">, 5192 Intrinsic<[llvm_v8f32_ty], 5193 [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5194 [IntrReadMem, IntrArgMemOnly]>; 5195 5196 def int_x86_avx512_gather3siv8_si : 5197 GCCBuiltin<"__builtin_ia32_gather3siv8si">, 5198 Intrinsic<[llvm_v8i32_ty], 5199 [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty], 5200 [IntrReadMem, IntrArgMemOnly]>; 5201 5202 // scatter 5203 def int_x86_avx512_scatter_dpd_512 : GCCBuiltin<"__builtin_ia32_scattersiv8df">, 5204 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 5205 llvm_v8i32_ty, llvm_v8f64_ty, llvm_i32_ty], 5206 [IntrArgMemOnly]>; 5207 def int_x86_avx512_scatter_dps_512 : GCCBuiltin<"__builtin_ia32_scattersiv16sf">, 5208 Intrinsic<[], [llvm_ptr_ty, llvm_i16_ty, 5209 llvm_v16i32_ty, llvm_v16f32_ty, llvm_i32_ty], 5210 [IntrArgMemOnly]>; 5211 def int_x86_avx512_scatter_qpd_512 : GCCBuiltin<"__builtin_ia32_scatterdiv8df">, 5212 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 5213 llvm_v8i64_ty, llvm_v8f64_ty, llvm_i32_ty], 5214 [IntrArgMemOnly]>; 5215 def int_x86_avx512_scatter_qps_512 : GCCBuiltin<"__builtin_ia32_scatterdiv16sf">, 5216 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 5217 llvm_v8i64_ty, llvm_v8f32_ty, llvm_i32_ty], 5218 [IntrArgMemOnly]>; 5219 5220 5221 def int_x86_avx512_scatter_dpq_512 : GCCBuiltin<"__builtin_ia32_scattersiv8di">, 5222 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, 5223 llvm_v8i32_ty, llvm_v8i64_ty, llvm_i32_ty], 5224 [IntrArgMemOnly]>; 5225 def int_x86_avx512_scatter_dpi_512 : GCCBuiltin<"__builtin_ia32_scattersiv16si">, 5226 Intrinsic<[], [llvm_ptr_ty, llvm_i16_ty, 5227 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty], 5228 [IntrArgMemOnly]>; 5229 def int_x86_avx512_scatter_qpq_512 : GCCBuiltin<"__builtin_ia32_scatterdiv8di">, 5230 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,llvm_v8i64_ty, llvm_v8i64_ty, 5231 llvm_i32_ty], 5232 [IntrArgMemOnly]>; 5233 def int_x86_avx512_scatter_qpi_512 : GCCBuiltin<"__builtin_ia32_scatterdiv16si">, 5234 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, llvm_v8i64_ty, llvm_v8i32_ty, 5235 llvm_i32_ty], 5236 [IntrArgMemOnly]>; 5237 5238 def int_x86_avx512_scatterdiv2_df : 5239 GCCBuiltin<"__builtin_ia32_scatterdiv2df">, 5240 Intrinsic<[], 5241 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i32_ty], 5242 [IntrArgMemOnly]>; 5243 5244 def int_x86_avx512_scatterdiv2_di : 5245 GCCBuiltin<"__builtin_ia32_scatterdiv2di">, 5246 Intrinsic<[], 5247 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty], 5248 [IntrArgMemOnly]>; 5249 5250 def int_x86_avx512_scatterdiv4_df : 5251 GCCBuiltin<"__builtin_ia32_scatterdiv4df">, 5252 Intrinsic<[], 5253 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i32_ty], 5254 [IntrArgMemOnly]>; 5255 5256 def int_x86_avx512_scatterdiv4_di : 5257 GCCBuiltin<"__builtin_ia32_scatterdiv4di">, 5258 Intrinsic<[], 5259 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty], 5260 [IntrArgMemOnly]>; 5261 5262 def int_x86_avx512_scatterdiv4_sf : 5263 GCCBuiltin<"__builtin_ia32_scatterdiv4sf">, 5264 Intrinsic<[], 5265 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i32_ty], 5266 [IntrArgMemOnly]>; 5267 5268 def int_x86_avx512_scatterdiv4_si : 5269 GCCBuiltin<"__builtin_ia32_scatterdiv4si">, 5270 Intrinsic<[], 5271 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i32_ty], 5272 [IntrArgMemOnly]>; 5273 5274 def int_x86_avx512_scatterdiv8_sf : 5275 GCCBuiltin<"__builtin_ia32_scatterdiv8sf">, 5276 Intrinsic<[], 5277 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i32_ty], 5278 [IntrArgMemOnly]>; 5279 5280 def int_x86_avx512_scatterdiv8_si : 5281 GCCBuiltin<"__builtin_ia32_scatterdiv8si">, 5282 Intrinsic<[], 5283 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i32_ty], 5284 [IntrArgMemOnly]>; 5285 5286 def int_x86_avx512_scattersiv2_df : 5287 GCCBuiltin<"__builtin_ia32_scattersiv2df">, 5288 Intrinsic<[], 5289 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i32_ty], 5290 [IntrArgMemOnly]>; 5291 5292 def int_x86_avx512_scattersiv2_di : 5293 GCCBuiltin<"__builtin_ia32_scattersiv2di">, 5294 Intrinsic<[], 5295 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i32_ty], 5296 [IntrArgMemOnly]>; 5297 5298 def int_x86_avx512_scattersiv4_df : 5299 GCCBuiltin<"__builtin_ia32_scattersiv4df">, 5300 Intrinsic<[], 5301 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i32_ty], 5302 [IntrArgMemOnly]>; 5303 5304 def int_x86_avx512_scattersiv4_di : 5305 GCCBuiltin<"__builtin_ia32_scattersiv4di">, 5306 Intrinsic<[], 5307 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i32_ty], 5308 [IntrArgMemOnly]>; 5309 5310 def int_x86_avx512_scattersiv4_sf : 5311 GCCBuiltin<"__builtin_ia32_scattersiv4sf">, 5312 Intrinsic<[], 5313 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i32_ty], 5314 [IntrArgMemOnly]>; 5315 5316 def int_x86_avx512_scattersiv4_si : 5317 GCCBuiltin<"__builtin_ia32_scattersiv4si">, 5318 Intrinsic<[], 5319 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty], 5320 [IntrArgMemOnly]>; 5321 5322 def int_x86_avx512_scattersiv8_sf : 5323 GCCBuiltin<"__builtin_ia32_scattersiv8sf">, 5324 Intrinsic<[], 5325 [llvm_ptr_ty, llvm_i8_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i32_ty], 5326 [IntrArgMemOnly]>; 5327 5328 def int_x86_avx512_scattersiv8_si : 5329 GCCBuiltin<"__builtin_ia32_scattersiv8si">, 5330 Intrinsic<[], 5331 [llvm_ptr_ty, llvm_i8_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty], 5332 [IntrArgMemOnly]>; 5333 5334 // gather prefetch 5335 def int_x86_avx512_gatherpf_dpd_512 : GCCBuiltin<"__builtin_ia32_gatherpfdpd">, 5336 Intrinsic<[], [llvm_i8_ty, llvm_v8i32_ty, llvm_ptr_ty, 5337 llvm_i32_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5338 def int_x86_avx512_gatherpf_dps_512 : GCCBuiltin<"__builtin_ia32_gatherpfdps">, 5339 Intrinsic<[], [llvm_i16_ty, llvm_v16i32_ty, llvm_ptr_ty, 5340 llvm_i32_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5341 def int_x86_avx512_gatherpf_qpd_512 : GCCBuiltin<"__builtin_ia32_gatherpfqpd">, 5342 Intrinsic<[], [llvm_i8_ty, llvm_v8i64_ty, llvm_ptr_ty, 5343 llvm_i32_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5344 def int_x86_avx512_gatherpf_qps_512 : GCCBuiltin<"__builtin_ia32_gatherpfqps">, 5345 Intrinsic<[], [llvm_i8_ty, llvm_v8i64_ty, llvm_ptr_ty, 5346 llvm_i32_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5347 5348 // scatter prefetch 5349 def int_x86_avx512_scatterpf_dpd_512 : GCCBuiltin<"__builtin_ia32_scatterpfdpd">, 5350 Intrinsic<[], [llvm_i8_ty, llvm_v8i32_ty, llvm_ptr_ty, 5351 llvm_i32_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5352 def int_x86_avx512_scatterpf_dps_512 : GCCBuiltin<"__builtin_ia32_scatterpfdps">, 5353 Intrinsic<[], [llvm_i16_ty, llvm_v16i32_ty, llvm_ptr_ty, 5354 llvm_i32_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5355 def int_x86_avx512_scatterpf_qpd_512 : GCCBuiltin<"__builtin_ia32_scatterpfqpd">, 5356 Intrinsic<[], [llvm_i8_ty, llvm_v8i64_ty, llvm_ptr_ty, 5357 llvm_i32_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5358 def int_x86_avx512_scatterpf_qps_512 : GCCBuiltin<"__builtin_ia32_scatterpfqps">, 5359 Intrinsic<[], [llvm_i8_ty, llvm_v8i64_ty, llvm_ptr_ty, 5360 llvm_i32_ty, llvm_i32_ty], [IntrArgMemOnly]>; 5361 } 5362 5363 // AVX-512 conflict detection instruction 5364 // Instructions that count the number of leading zero bits 5365 let TargetPrefix = "x86" in { 5366 def int_x86_avx512_mask_conflict_d_128 : 5367 GCCBuiltin<"__builtin_ia32_vpconflictsi_128_mask">, 5368 Intrinsic<[llvm_v4i32_ty], 5369 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 5370 [IntrNoMem]>; 5371 def int_x86_avx512_mask_conflict_d_256 : 5372 GCCBuiltin<"__builtin_ia32_vpconflictsi_256_mask">, 5373 Intrinsic<[llvm_v8i32_ty], 5374 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty], 5375 [IntrNoMem]>; 5376 def int_x86_avx512_mask_conflict_d_512 : 5377 GCCBuiltin<"__builtin_ia32_vpconflictsi_512_mask">, 5378 Intrinsic<[llvm_v16i32_ty], 5379 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i16_ty], 5380 [IntrNoMem]>; 5381 5382 def int_x86_avx512_mask_conflict_q_128 : 5383 GCCBuiltin<"__builtin_ia32_vpconflictdi_128_mask">, 5384 Intrinsic<[llvm_v2i64_ty], 5385 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty], 5386 [IntrNoMem]>; 5387 def int_x86_avx512_mask_conflict_q_256 : 5388 GCCBuiltin<"__builtin_ia32_vpconflictdi_256_mask">, 5389 Intrinsic<[llvm_v4i64_ty], 5390 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty], 5391 [IntrNoMem]>; 5392 def int_x86_avx512_mask_conflict_q_512 : 5393 GCCBuiltin<"__builtin_ia32_vpconflictdi_512_mask">, 5394 Intrinsic<[llvm_v8i64_ty], 5395 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], 5396 [IntrNoMem]>; 5397 } 5398 5399 // Compares 5400 let TargetPrefix = "x86" in { 5401 // 512-bit 5402 def int_x86_avx512_vcomi_sd : GCCBuiltin<"__builtin_ia32_vcomisd">, 5403 Intrinsic<[llvm_i32_ty], [llvm_v2f64_ty, 5404 llvm_v2f64_ty, llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 5405 def int_x86_avx512_vcomi_ss : GCCBuiltin<"__builtin_ia32_vcomiss">, 5406 Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty, 5407 llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; 5408 5409 def int_x86_avx512_mask_cmp_b_512: 5410 Intrinsic<[llvm_i64_ty], [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i32_ty, 5411 llvm_i64_ty], [IntrNoMem]>; 5412 def int_x86_avx512_mask_cmp_w_512: 5413 Intrinsic<[llvm_i32_ty], [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty, 5414 llvm_i32_ty], [IntrNoMem]>; 5415 def int_x86_avx512_mask_cmp_d_512: 5416 Intrinsic<[llvm_i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, 5417 llvm_i16_ty], [IntrNoMem ]>; 5418 def int_x86_avx512_mask_cmp_q_512: 5419 Intrinsic<[llvm_i8_ty], [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, 5420 llvm_i8_ty], [IntrNoMem]>; 5421 5422 def int_x86_avx512_mask_ucmp_b_512: 5423 Intrinsic<[llvm_i64_ty], [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i32_ty, 5424 llvm_i64_ty], [IntrNoMem]>; 5425 def int_x86_avx512_mask_ucmp_w_512: 5426 Intrinsic<[llvm_i32_ty], [llvm_v32i16_ty, llvm_v32i16_ty, llvm_i32_ty, 5427 llvm_i32_ty], [IntrNoMem]>; 5428 def int_x86_avx512_mask_ucmp_d_512: 5429 Intrinsic<[llvm_i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, 5430 llvm_i16_ty], [IntrNoMem]>; 5431 def int_x86_avx512_mask_ucmp_q_512: 5432 Intrinsic<[llvm_i8_ty], [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, 5433 llvm_i8_ty], [IntrNoMem]>; 5434 5435 // 256-bit 5436 def int_x86_avx512_mask_cmp_b_256: 5437 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty, 5438 llvm_i32_ty], [IntrNoMem]>; 5439 def int_x86_avx512_mask_cmp_w_256: 5440 Intrinsic<[llvm_i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i32_ty, 5441 llvm_i16_ty], [IntrNoMem]>; 5442 def int_x86_avx512_mask_cmp_d_256: 5443 Intrinsic<[llvm_i8_ty], [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, 5444 llvm_i8_ty], [IntrNoMem]>; 5445 def int_x86_avx512_mask_cmp_q_256: 5446 Intrinsic<[llvm_i8_ty], [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, 5447 llvm_i8_ty], [IntrNoMem]>; 5448 5449 def int_x86_avx512_mask_ucmp_b_256: 5450 Intrinsic<[llvm_i32_ty], [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty, 5451 llvm_i32_ty], [IntrNoMem]>; 5452 def int_x86_avx512_mask_ucmp_w_256: 5453 Intrinsic<[llvm_i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, llvm_i32_ty, 5454 llvm_i16_ty], [IntrNoMem]>; 5455 def int_x86_avx512_mask_ucmp_d_256: 5456 Intrinsic<[llvm_i8_ty], [llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, 5457 llvm_i8_ty], [IntrNoMem]>; 5458 def int_x86_avx512_mask_ucmp_q_256: 5459 Intrinsic<[llvm_i8_ty], [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, 5460 llvm_i8_ty], [IntrNoMem]>; 5461 5462 // 128-bit 5463 def int_x86_avx512_mask_cmp_b_128: 5464 Intrinsic<[llvm_i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty, 5465 llvm_i16_ty], [IntrNoMem]>; 5466 def int_x86_avx512_mask_cmp_w_128: 5467 Intrinsic<[llvm_i8_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty, 5468 llvm_i8_ty], [IntrNoMem]>; 5469 def int_x86_avx512_mask_cmp_d_128: 5470 Intrinsic<[llvm_i8_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty, 5471 llvm_i8_ty], [IntrNoMem]>; 5472 def int_x86_avx512_mask_cmp_q_128: 5473 Intrinsic<[llvm_i8_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty, 5474 llvm_i8_ty], [IntrNoMem]>; 5475 5476 def int_x86_avx512_mask_ucmp_b_128: 5477 Intrinsic<[llvm_i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty, 5478 llvm_i16_ty], [IntrNoMem]>; 5479 def int_x86_avx512_mask_ucmp_w_128: 5480 Intrinsic<[llvm_i8_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty, 5481 llvm_i8_ty], [IntrNoMem]>; 5482 def int_x86_avx512_mask_ucmp_d_128: 5483 Intrinsic<[llvm_i8_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty, 5484 llvm_i8_ty], [IntrNoMem]>; 5485 def int_x86_avx512_mask_ucmp_q_128: 5486 Intrinsic<[llvm_i8_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty, 5487 llvm_i8_ty], [IntrNoMem]>; 5488 } 5489 5490 // Compress, Expand 5491 let TargetPrefix = "x86" in { 5492 def int_x86_avx512_mask_compress_ps_512 : 5493 GCCBuiltin<"__builtin_ia32_compresssf512_mask">, 5494 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5495 llvm_i16_ty], [IntrNoMem]>; 5496 def int_x86_avx512_mask_compress_pd_512 : 5497 GCCBuiltin<"__builtin_ia32_compressdf512_mask">, 5498 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5499 llvm_i8_ty], [IntrNoMem]>; 5500 def int_x86_avx512_mask_compress_ps_256 : 5501 GCCBuiltin<"__builtin_ia32_compresssf256_mask">, 5502 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5503 llvm_i8_ty], [IntrNoMem]>; 5504 def int_x86_avx512_mask_compress_pd_256 : 5505 GCCBuiltin<"__builtin_ia32_compressdf256_mask">, 5506 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5507 llvm_i8_ty], [IntrNoMem]>; 5508 def int_x86_avx512_mask_compress_ps_128 : 5509 GCCBuiltin<"__builtin_ia32_compresssf128_mask">, 5510 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5511 llvm_i8_ty], [IntrNoMem]>; 5512 def int_x86_avx512_mask_compress_pd_128 : 5513 GCCBuiltin<"__builtin_ia32_compressdf128_mask">, 5514 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5515 llvm_i8_ty], [IntrNoMem]>; 5516 5517 def int_x86_avx512_mask_compress_store_ps_512 : 5518 GCCBuiltin<"__builtin_ia32_compressstoresf512_mask">, 5519 Intrinsic<[], [llvm_ptr_ty, llvm_v16f32_ty, 5520 llvm_i16_ty], [IntrArgMemOnly]>; 5521 def int_x86_avx512_mask_compress_store_pd_512 : 5522 GCCBuiltin<"__builtin_ia32_compressstoredf512_mask">, 5523 Intrinsic<[], [llvm_ptr_ty, llvm_v8f64_ty, 5524 llvm_i8_ty], [IntrArgMemOnly]>; 5525 def int_x86_avx512_mask_compress_store_ps_256 : 5526 GCCBuiltin<"__builtin_ia32_compressstoresf256_mask">, 5527 Intrinsic<[], [llvm_ptr_ty, llvm_v8f32_ty, 5528 llvm_i8_ty], [IntrArgMemOnly]>; 5529 def int_x86_avx512_mask_compress_store_pd_256 : 5530 GCCBuiltin<"__builtin_ia32_compressstoredf256_mask">, 5531 Intrinsic<[], [llvm_ptr_ty, llvm_v4f64_ty, 5532 llvm_i8_ty], [IntrArgMemOnly]>; 5533 def int_x86_avx512_mask_compress_store_ps_128 : 5534 GCCBuiltin<"__builtin_ia32_compressstoresf128_mask">, 5535 Intrinsic<[], [llvm_ptr_ty, llvm_v4f32_ty, 5536 llvm_i8_ty], [IntrArgMemOnly]>; 5537 def int_x86_avx512_mask_compress_store_pd_128 : 5538 GCCBuiltin<"__builtin_ia32_compressstoredf128_mask">, 5539 Intrinsic<[], [llvm_ptr_ty, llvm_v2f64_ty, 5540 llvm_i8_ty], [IntrArgMemOnly]>; 5541 5542 def int_x86_avx512_mask_compress_d_512 : 5543 GCCBuiltin<"__builtin_ia32_compresssi512_mask">, 5544 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5545 llvm_i16_ty], [IntrNoMem]>; 5546 def int_x86_avx512_mask_compress_q_512 : 5547 GCCBuiltin<"__builtin_ia32_compressdi512_mask">, 5548 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 5549 llvm_i8_ty], [IntrNoMem]>; 5550 def int_x86_avx512_mask_compress_d_256 : 5551 GCCBuiltin<"__builtin_ia32_compresssi256_mask">, 5552 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5553 llvm_i8_ty], [IntrNoMem]>; 5554 def int_x86_avx512_mask_compress_q_256 : 5555 GCCBuiltin<"__builtin_ia32_compressdi256_mask">, 5556 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 5557 llvm_i8_ty], [IntrNoMem]>; 5558 def int_x86_avx512_mask_compress_d_128 : 5559 GCCBuiltin<"__builtin_ia32_compresssi128_mask">, 5560 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5561 llvm_i8_ty], [IntrNoMem]>; 5562 def int_x86_avx512_mask_compress_q_128 : 5563 GCCBuiltin<"__builtin_ia32_compressdi128_mask">, 5564 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 5565 llvm_i8_ty], [IntrNoMem]>; 5566 5567 def int_x86_avx512_mask_compress_store_d_512 : 5568 GCCBuiltin<"__builtin_ia32_compressstoresi512_mask">, 5569 Intrinsic<[], [llvm_ptr_ty, llvm_v16i32_ty, 5570 llvm_i16_ty], [IntrArgMemOnly]>; 5571 def int_x86_avx512_mask_compress_store_q_512 : 5572 GCCBuiltin<"__builtin_ia32_compressstoredi512_mask">, 5573 Intrinsic<[], [llvm_ptr_ty, llvm_v8i64_ty, 5574 llvm_i8_ty], [IntrArgMemOnly]>; 5575 def int_x86_avx512_mask_compress_store_d_256 : 5576 GCCBuiltin<"__builtin_ia32_compressstoresi256_mask">, 5577 Intrinsic<[], [llvm_ptr_ty, llvm_v8i32_ty, 5578 llvm_i8_ty], [IntrArgMemOnly]>; 5579 def int_x86_avx512_mask_compress_store_q_256 : 5580 GCCBuiltin<"__builtin_ia32_compressstoredi256_mask">, 5581 Intrinsic<[], [llvm_ptr_ty, llvm_v4i64_ty, 5582 llvm_i8_ty], [IntrArgMemOnly]>; 5583 def int_x86_avx512_mask_compress_store_d_128 : 5584 GCCBuiltin<"__builtin_ia32_compressstoresi128_mask">, 5585 Intrinsic<[], [llvm_ptr_ty, llvm_v4i32_ty, 5586 llvm_i8_ty], [IntrArgMemOnly]>; 5587 def int_x86_avx512_mask_compress_store_q_128 : 5588 GCCBuiltin<"__builtin_ia32_compressstoredi128_mask">, 5589 Intrinsic<[], [llvm_ptr_ty, llvm_v2i64_ty, 5590 llvm_i8_ty], [IntrArgMemOnly]>; 5591 5592 // expand 5593 def int_x86_avx512_mask_expand_ps_512 : 5594 GCCBuiltin<"__builtin_ia32_expandsf512_mask">, 5595 Intrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 5596 llvm_i16_ty], [IntrNoMem]>; 5597 def int_x86_avx512_mask_expand_pd_512 : 5598 GCCBuiltin<"__builtin_ia32_expanddf512_mask">, 5599 Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 5600 llvm_i8_ty], [IntrNoMem]>; 5601 def int_x86_avx512_mask_expand_ps_256 : 5602 GCCBuiltin<"__builtin_ia32_expandsf256_mask">, 5603 Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 5604 llvm_i8_ty], [IntrNoMem]>; 5605 def int_x86_avx512_mask_expand_pd_256 : 5606 GCCBuiltin<"__builtin_ia32_expanddf256_mask">, 5607 Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 5608 llvm_i8_ty], [IntrNoMem]>; 5609 def int_x86_avx512_mask_expand_ps_128 : 5610 GCCBuiltin<"__builtin_ia32_expandsf128_mask">, 5611 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 5612 llvm_i8_ty], [IntrNoMem]>; 5613 def int_x86_avx512_mask_expand_pd_128 : 5614 GCCBuiltin<"__builtin_ia32_expanddf128_mask">, 5615 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 5616 llvm_i8_ty], [IntrNoMem]>; 5617 5618 def int_x86_avx512_mask_expand_load_ps_512 : 5619 GCCBuiltin<"__builtin_ia32_expandloadsf512_mask">, 5620 Intrinsic<[llvm_v16f32_ty], [llvm_ptr_ty, llvm_v16f32_ty, 5621 llvm_i16_ty], [IntrReadMem, IntrArgMemOnly]>; 5622 def int_x86_avx512_mask_expand_load_pd_512 : 5623 GCCBuiltin<"__builtin_ia32_expandloaddf512_mask">, 5624 Intrinsic<[llvm_v8f64_ty], [llvm_ptr_ty, llvm_v8f64_ty, 5625 llvm_i8_ty], [IntrReadMem, IntrArgMemOnly]>; 5626 def int_x86_avx512_mask_expand_load_ps_256 : 5627 GCCBuiltin<"__builtin_ia32_expandloadsf256_mask">, 5628 Intrinsic<[llvm_v8f32_ty], [llvm_ptr_ty, llvm_v8f32_ty, 5629 llvm_i8_ty], [IntrReadMem, IntrArgMemOnly]>; 5630 def int_x86_avx512_mask_expand_load_pd_256 : 5631 GCCBuiltin<"__builtin_ia32_expandloaddf256_mask">, 5632 Intrinsic<[llvm_v4f64_ty], [llvm_ptr_ty, llvm_v4f64_ty, 5633 llvm_i8_ty], [IntrReadMem, IntrArgMemOnly]>; 5634 def int_x86_avx512_mask_expand_load_ps_128 : 5635 GCCBuiltin<"__builtin_ia32_expandloadsf128_mask">, 5636 Intrinsic<[llvm_v4f32_ty], [llvm_ptr_ty, llvm_v4f32_ty, 5637 llvm_i8_ty], [IntrReadMem, IntrArgMemOnly]>; 5638 def int_x86_avx512_mask_expand_load_pd_128 : 5639 GCCBuiltin<"__builtin_ia32_expandloaddf128_mask">, 5640 Intrinsic<[llvm_v2f64_ty], [llvm_ptr_ty, llvm_v2f64_ty, 5641 llvm_i8_ty], [IntrReadMem, IntrArgMemOnly]>; 5642 5643 def int_x86_avx512_mask_expand_d_512 : 5644 GCCBuiltin<"__builtin_ia32_expandsi512_mask">, 5645 Intrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty, 5646 llvm_i16_ty], [IntrNoMem]>; 5647 def int_x86_avx512_mask_expand_q_512 : 5648 GCCBuiltin<"__builtin_ia32_expanddi512_mask">, 5649 Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, 5650 llvm_i8_ty], [IntrNoMem]>; 5651 def int_x86_avx512_mask_expand_d_256 : 5652 GCCBuiltin<"__builtin_ia32_expandsi256_mask">, 5653 Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty, 5654 llvm_i8_ty], [IntrNoMem]>; 5655 def int_x86_avx512_mask_expand_q_256 : 5656 GCCBuiltin<"__builtin_ia32_expanddi256_mask">, 5657 Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, 5658 llvm_i8_ty], [IntrNoMem]>; 5659 def int_x86_avx512_mask_expand_d_128 : 5660 GCCBuiltin<"__builtin_ia32_expandsi128_mask">, 5661 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, 5662 llvm_i8_ty], [IntrNoMem]>; 5663 def int_x86_avx512_mask_expand_q_128 : 5664 GCCBuiltin<"__builtin_ia32_expanddi128_mask">, 5665 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, 5666 llvm_i8_ty], [IntrNoMem]>; 5667 5668 def int_x86_avx512_mask_expand_load_d_512 : 5669 GCCBuiltin<"__builtin_ia32_expandloadsi512_mask">, 5670 Intrinsic<[llvm_v16i32_ty], [llvm_ptr_ty, llvm_v16i32_ty, 5671 llvm_i16_ty], [IntrReadMem, IntrArgMemOnly]>; 5672 def int_x86_avx512_mask_expand_load_q_512 : 5673 GCCBuiltin<"__builtin_ia32_expandloaddi512_mask">, 5674 Intrinsic<[llvm_v8i64_ty], [llvm_ptr_ty, llvm_v8i64_ty, 5675 llvm_i8_ty], [IntrReadMem, IntrArgMemOnly]>; 5676 def int_x86_avx512_mask_expand_load_d_256 : 5677 GCCBuiltin<"__builtin_ia32_expandloadsi256_mask">, 5678 Intrinsic<[llvm_v8i32_ty], [llvm_ptr_ty, llvm_v8i32_ty, 5679 llvm_i8_ty], [IntrReadMem, IntrArgMemOnly]>; 5680 def int_x86_avx512_mask_expand_load_q_256 : 5681 GCCBuiltin<"__builtin_ia32_expandloaddi256_mask">, 5682 Intrinsic<[llvm_v4i64_ty], [llvm_ptr_ty, llvm_v4i64_ty, 5683 llvm_i8_ty], [IntrReadMem, IntrArgMemOnly]>; 5684 def int_x86_avx512_mask_expand_load_d_128 : 5685 GCCBuiltin<"__builtin_ia32_expandloadsi128_mask">, 5686 Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_v4i32_ty, 5687 llvm_i8_ty], [IntrReadMem, IntrArgMemOnly]>; 5688 def int_x86_avx512_mask_expand_load_q_128 : 5689 GCCBuiltin<"__builtin_ia32_expandloaddi128_mask">, 5690 Intrinsic<[llvm_v2i64_ty], [llvm_ptr_ty, llvm_v2i64_ty, 5691 llvm_i8_ty], [IntrReadMem, IntrArgMemOnly]>; 5692 5693 } 5694 5695 // truncate 5696 let TargetPrefix = "x86" in { 5697 def int_x86_avx512_mask_pmov_qb_128 : 5698 GCCBuiltin<"__builtin_ia32_pmovqb128_mask">, 5699 Intrinsic<[llvm_v16i8_ty], 5700 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty], 5701 [IntrNoMem]>; 5702 def int_x86_avx512_mask_pmov_qb_mem_128 : 5703 GCCBuiltin<"__builtin_ia32_pmovqb128mem_mask">, 5704 Intrinsic<[], 5705 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 5706 [IntrArgMemOnly]>; 5707 def int_x86_avx512_mask_pmovs_qb_128 : 5708 GCCBuiltin<"__builtin_ia32_pmovsqb128_mask">, 5709 Intrinsic<[llvm_v16i8_ty], 5710 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty], 5711 [IntrNoMem]>; 5712 def int_x86_avx512_mask_pmovs_qb_mem_128 : 5713 GCCBuiltin<"__builtin_ia32_pmovsqb128mem_mask">, 5714 Intrinsic<[], 5715 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 5716 [IntrArgMemOnly]>; 5717 def int_x86_avx512_mask_pmovus_qb_128 : 5718 GCCBuiltin<"__builtin_ia32_pmovusqb128_mask">, 5719 Intrinsic<[llvm_v16i8_ty], 5720 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty], 5721 [IntrNoMem]>; 5722 def int_x86_avx512_mask_pmovus_qb_mem_128 : 5723 GCCBuiltin<"__builtin_ia32_pmovusqb128mem_mask">, 5724 Intrinsic<[], 5725 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 5726 [IntrArgMemOnly]>; 5727 def int_x86_avx512_mask_pmov_qb_256 : 5728 GCCBuiltin<"__builtin_ia32_pmovqb256_mask">, 5729 Intrinsic<[llvm_v16i8_ty], 5730 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty], 5731 [IntrNoMem]>; 5732 def int_x86_avx512_mask_pmov_qb_mem_256 : 5733 GCCBuiltin<"__builtin_ia32_pmovqb256mem_mask">, 5734 Intrinsic<[], 5735 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 5736 [IntrArgMemOnly]>; 5737 def int_x86_avx512_mask_pmovs_qb_256 : 5738 GCCBuiltin<"__builtin_ia32_pmovsqb256_mask">, 5739 Intrinsic<[llvm_v16i8_ty], 5740 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty], 5741 [IntrNoMem]>; 5742 def int_x86_avx512_mask_pmovs_qb_mem_256 : 5743 GCCBuiltin<"__builtin_ia32_pmovsqb256mem_mask">, 5744 Intrinsic<[], 5745 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 5746 [IntrArgMemOnly]>; 5747 def int_x86_avx512_mask_pmovus_qb_256 : 5748 GCCBuiltin<"__builtin_ia32_pmovusqb256_mask">, 5749 Intrinsic<[llvm_v16i8_ty], 5750 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty], 5751 [IntrNoMem]>; 5752 def int_x86_avx512_mask_pmovus_qb_mem_256 : 5753 GCCBuiltin<"__builtin_ia32_pmovusqb256mem_mask">, 5754 Intrinsic<[], 5755 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 5756 [IntrArgMemOnly]>; 5757 def int_x86_avx512_mask_pmov_qb_512 : 5758 GCCBuiltin<"__builtin_ia32_pmovqb512_mask">, 5759 Intrinsic<[llvm_v16i8_ty], 5760 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty], 5761 [IntrNoMem]>; 5762 def int_x86_avx512_mask_pmov_qb_mem_512 : 5763 GCCBuiltin<"__builtin_ia32_pmovqb512mem_mask">, 5764 Intrinsic<[], 5765 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 5766 [IntrArgMemOnly]>; 5767 def int_x86_avx512_mask_pmovs_qb_512 : 5768 GCCBuiltin<"__builtin_ia32_pmovsqb512_mask">, 5769 Intrinsic<[llvm_v16i8_ty], 5770 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty], 5771 [IntrNoMem]>; 5772 def int_x86_avx512_mask_pmovs_qb_mem_512 : 5773 GCCBuiltin<"__builtin_ia32_pmovsqb512mem_mask">, 5774 Intrinsic<[], 5775 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 5776 [IntrArgMemOnly]>; 5777 def int_x86_avx512_mask_pmovus_qb_512 : 5778 GCCBuiltin<"__builtin_ia32_pmovusqb512_mask">, 5779 Intrinsic<[llvm_v16i8_ty], 5780 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty], 5781 [IntrNoMem]>; 5782 def int_x86_avx512_mask_pmovus_qb_mem_512 : 5783 GCCBuiltin<"__builtin_ia32_pmovusqb512mem_mask">, 5784 Intrinsic<[], 5785 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 5786 [IntrArgMemOnly]>; 5787 def int_x86_avx512_mask_pmov_qw_128 : 5788 GCCBuiltin<"__builtin_ia32_pmovqw128_mask">, 5789 Intrinsic<[llvm_v8i16_ty], 5790 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty], 5791 [IntrNoMem]>; 5792 def int_x86_avx512_mask_pmov_qw_mem_128 : 5793 GCCBuiltin<"__builtin_ia32_pmovqw128mem_mask">, 5794 Intrinsic<[], 5795 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 5796 [IntrArgMemOnly]>; 5797 def int_x86_avx512_mask_pmovs_qw_128 : 5798 GCCBuiltin<"__builtin_ia32_pmovsqw128_mask">, 5799 Intrinsic<[llvm_v8i16_ty], 5800 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty], 5801 [IntrNoMem]>; 5802 def int_x86_avx512_mask_pmovs_qw_mem_128 : 5803 GCCBuiltin<"__builtin_ia32_pmovsqw128mem_mask">, 5804 Intrinsic<[], 5805 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 5806 [IntrArgMemOnly]>; 5807 def int_x86_avx512_mask_pmovus_qw_128 : 5808 GCCBuiltin<"__builtin_ia32_pmovusqw128_mask">, 5809 Intrinsic<[llvm_v8i16_ty], 5810 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty], 5811 [IntrNoMem]>; 5812 def int_x86_avx512_mask_pmovus_qw_mem_128 : 5813 GCCBuiltin<"__builtin_ia32_pmovusqw128mem_mask">, 5814 Intrinsic<[], 5815 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 5816 [IntrArgMemOnly]>; 5817 def int_x86_avx512_mask_pmov_qw_256 : 5818 GCCBuiltin<"__builtin_ia32_pmovqw256_mask">, 5819 Intrinsic<[llvm_v8i16_ty], 5820 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty], 5821 [IntrNoMem]>; 5822 def int_x86_avx512_mask_pmov_qw_mem_256 : 5823 GCCBuiltin<"__builtin_ia32_pmovqw256mem_mask">, 5824 Intrinsic<[], 5825 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 5826 [IntrArgMemOnly]>; 5827 def int_x86_avx512_mask_pmovs_qw_256 : 5828 GCCBuiltin<"__builtin_ia32_pmovsqw256_mask">, 5829 Intrinsic<[llvm_v8i16_ty], 5830 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty], 5831 [IntrNoMem]>; 5832 def int_x86_avx512_mask_pmovs_qw_mem_256 : 5833 GCCBuiltin<"__builtin_ia32_pmovsqw256mem_mask">, 5834 Intrinsic<[], 5835 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 5836 [IntrArgMemOnly]>; 5837 def int_x86_avx512_mask_pmovus_qw_256 : 5838 GCCBuiltin<"__builtin_ia32_pmovusqw256_mask">, 5839 Intrinsic<[llvm_v8i16_ty], 5840 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty], 5841 [IntrNoMem]>; 5842 def int_x86_avx512_mask_pmovus_qw_mem_256 : 5843 GCCBuiltin<"__builtin_ia32_pmovusqw256mem_mask">, 5844 Intrinsic<[], 5845 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 5846 [IntrArgMemOnly]>; 5847 def int_x86_avx512_mask_pmov_qw_512 : 5848 GCCBuiltin<"__builtin_ia32_pmovqw512_mask">, 5849 Intrinsic<[llvm_v8i16_ty], 5850 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty], 5851 [IntrNoMem]>; 5852 def int_x86_avx512_mask_pmov_qw_mem_512 : 5853 GCCBuiltin<"__builtin_ia32_pmovqw512mem_mask">, 5854 Intrinsic<[], 5855 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 5856 [IntrArgMemOnly]>; 5857 def int_x86_avx512_mask_pmovs_qw_512 : 5858 GCCBuiltin<"__builtin_ia32_pmovsqw512_mask">, 5859 Intrinsic<[llvm_v8i16_ty], 5860 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty], 5861 [IntrNoMem]>; 5862 def int_x86_avx512_mask_pmovs_qw_mem_512 : 5863 GCCBuiltin<"__builtin_ia32_pmovsqw512mem_mask">, 5864 Intrinsic<[], 5865 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 5866 [IntrArgMemOnly]>; 5867 def int_x86_avx512_mask_pmovus_qw_512 : 5868 GCCBuiltin<"__builtin_ia32_pmovusqw512_mask">, 5869 Intrinsic<[llvm_v8i16_ty], 5870 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty], 5871 [IntrNoMem]>; 5872 def int_x86_avx512_mask_pmovus_qw_mem_512 : 5873 GCCBuiltin<"__builtin_ia32_pmovusqw512mem_mask">, 5874 Intrinsic<[], 5875 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 5876 [IntrArgMemOnly]>; 5877 def int_x86_avx512_mask_pmov_qd_128 : 5878 GCCBuiltin<"__builtin_ia32_pmovqd128_mask">, 5879 Intrinsic<[llvm_v4i32_ty], 5880 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 5881 [IntrNoMem]>; 5882 def int_x86_avx512_mask_pmov_qd_mem_128 : 5883 GCCBuiltin<"__builtin_ia32_pmovqd128mem_mask">, 5884 Intrinsic<[], 5885 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 5886 [IntrArgMemOnly]>; 5887 def int_x86_avx512_mask_pmovs_qd_128 : 5888 GCCBuiltin<"__builtin_ia32_pmovsqd128_mask">, 5889 Intrinsic<[llvm_v4i32_ty], 5890 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 5891 [IntrNoMem]>; 5892 def int_x86_avx512_mask_pmovs_qd_mem_128 : 5893 GCCBuiltin<"__builtin_ia32_pmovsqd128mem_mask">, 5894 Intrinsic<[], 5895 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 5896 [IntrArgMemOnly]>; 5897 def int_x86_avx512_mask_pmovus_qd_128 : 5898 GCCBuiltin<"__builtin_ia32_pmovusqd128_mask">, 5899 Intrinsic<[llvm_v4i32_ty], 5900 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty], 5901 [IntrNoMem]>; 5902 def int_x86_avx512_mask_pmovus_qd_mem_128 : 5903 GCCBuiltin<"__builtin_ia32_pmovusqd128mem_mask">, 5904 Intrinsic<[], 5905 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty], 5906 [IntrArgMemOnly]>; 5907 def int_x86_avx512_mask_pmov_qd_256 : 5908 GCCBuiltin<"__builtin_ia32_pmovqd256_mask">, 5909 Intrinsic<[llvm_v4i32_ty], 5910 [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 5911 [IntrNoMem]>; 5912 def int_x86_avx512_mask_pmov_qd_mem_256 : 5913 GCCBuiltin<"__builtin_ia32_pmovqd256mem_mask">, 5914 Intrinsic<[], 5915 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 5916 [IntrArgMemOnly]>; 5917 def int_x86_avx512_mask_pmovs_qd_256 : 5918 GCCBuiltin<"__builtin_ia32_pmovsqd256_mask">, 5919 Intrinsic<[llvm_v4i32_ty], 5920 [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 5921 [IntrNoMem]>; 5922 def int_x86_avx512_mask_pmovs_qd_mem_256 : 5923 GCCBuiltin<"__builtin_ia32_pmovsqd256mem_mask">, 5924 Intrinsic<[], 5925 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 5926 [IntrArgMemOnly]>; 5927 def int_x86_avx512_mask_pmovus_qd_256 : 5928 GCCBuiltin<"__builtin_ia32_pmovusqd256_mask">, 5929 Intrinsic<[llvm_v4i32_ty], 5930 [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty], 5931 [IntrNoMem]>; 5932 def int_x86_avx512_mask_pmovus_qd_mem_256 : 5933 GCCBuiltin<"__builtin_ia32_pmovusqd256mem_mask">, 5934 Intrinsic<[], 5935 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty], 5936 [IntrArgMemOnly]>; 5937 def int_x86_avx512_mask_pmov_qd_512 : 5938 GCCBuiltin<"__builtin_ia32_pmovqd512_mask">, 5939 Intrinsic<[llvm_v8i32_ty], 5940 [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty], 5941 [IntrNoMem]>; 5942 def int_x86_avx512_mask_pmov_qd_mem_512 : 5943 GCCBuiltin<"__builtin_ia32_pmovqd512mem_mask">, 5944 Intrinsic<[], 5945 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 5946 [IntrArgMemOnly]>; 5947 def int_x86_avx512_mask_pmovs_qd_512 : 5948 GCCBuiltin<"__builtin_ia32_pmovsqd512_mask">, 5949 Intrinsic<[llvm_v8i32_ty], 5950 [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty], 5951 [IntrNoMem]>; 5952 def int_x86_avx512_mask_pmovs_qd_mem_512 : 5953 GCCBuiltin<"__builtin_ia32_pmovsqd512mem_mask">, 5954 Intrinsic<[], 5955 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 5956 [IntrArgMemOnly]>; 5957 def int_x86_avx512_mask_pmovus_qd_512 : 5958 GCCBuiltin<"__builtin_ia32_pmovusqd512_mask">, 5959 Intrinsic<[llvm_v8i32_ty], 5960 [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty], 5961 [IntrNoMem]>; 5962 def int_x86_avx512_mask_pmovus_qd_mem_512 : 5963 GCCBuiltin<"__builtin_ia32_pmovusqd512mem_mask">, 5964 Intrinsic<[], 5965 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty], 5966 [IntrArgMemOnly]>; 5967 def int_x86_avx512_mask_pmov_db_128 : 5968 GCCBuiltin<"__builtin_ia32_pmovdb128_mask">, 5969 Intrinsic<[llvm_v16i8_ty], 5970 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty], 5971 [IntrNoMem]>; 5972 def int_x86_avx512_mask_pmov_db_mem_128 : 5973 GCCBuiltin<"__builtin_ia32_pmovdb128mem_mask">, 5974 Intrinsic<[], 5975 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 5976 [IntrArgMemOnly]>; 5977 def int_x86_avx512_mask_pmovs_db_128 : 5978 GCCBuiltin<"__builtin_ia32_pmovsdb128_mask">, 5979 Intrinsic<[llvm_v16i8_ty], 5980 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty], 5981 [IntrNoMem]>; 5982 def int_x86_avx512_mask_pmovs_db_mem_128 : 5983 GCCBuiltin<"__builtin_ia32_pmovsdb128mem_mask">, 5984 Intrinsic<[], 5985 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 5986 [IntrArgMemOnly]>; 5987 def int_x86_avx512_mask_pmovus_db_128 : 5988 GCCBuiltin<"__builtin_ia32_pmovusdb128_mask">, 5989 Intrinsic<[llvm_v16i8_ty], 5990 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty], 5991 [IntrNoMem]>; 5992 def int_x86_avx512_mask_pmovus_db_mem_128 : 5993 GCCBuiltin<"__builtin_ia32_pmovusdb128mem_mask">, 5994 Intrinsic<[], 5995 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 5996 [IntrArgMemOnly]>; 5997 def int_x86_avx512_mask_pmov_db_256 : 5998 GCCBuiltin<"__builtin_ia32_pmovdb256_mask">, 5999 Intrinsic<[llvm_v16i8_ty], 6000 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty], 6001 [IntrNoMem]>; 6002 def int_x86_avx512_mask_pmov_db_mem_256 : 6003 GCCBuiltin<"__builtin_ia32_pmovdb256mem_mask">, 6004 Intrinsic<[], 6005 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 6006 [IntrArgMemOnly]>; 6007 def int_x86_avx512_mask_pmovs_db_256 : 6008 GCCBuiltin<"__builtin_ia32_pmovsdb256_mask">, 6009 Intrinsic<[llvm_v16i8_ty], 6010 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty], 6011 [IntrNoMem]>; 6012 def int_x86_avx512_mask_pmovs_db_mem_256 : 6013 GCCBuiltin<"__builtin_ia32_pmovsdb256mem_mask">, 6014 Intrinsic<[], 6015 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 6016 [IntrArgMemOnly]>; 6017 def int_x86_avx512_mask_pmovus_db_256 : 6018 GCCBuiltin<"__builtin_ia32_pmovusdb256_mask">, 6019 Intrinsic<[llvm_v16i8_ty], 6020 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty], 6021 [IntrNoMem]>; 6022 def int_x86_avx512_mask_pmovus_db_mem_256 : 6023 GCCBuiltin<"__builtin_ia32_pmovusdb256mem_mask">, 6024 Intrinsic<[], 6025 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 6026 [IntrArgMemOnly]>; 6027 def int_x86_avx512_mask_pmov_db_512 : 6028 GCCBuiltin<"__builtin_ia32_pmovdb512_mask">, 6029 Intrinsic<[llvm_v16i8_ty], 6030 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty], 6031 [IntrNoMem]>; 6032 def int_x86_avx512_mask_pmov_db_mem_512 : 6033 GCCBuiltin<"__builtin_ia32_pmovdb512mem_mask">, 6034 Intrinsic<[], 6035 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 6036 [IntrArgMemOnly]>; 6037 def int_x86_avx512_mask_pmovs_db_512 : 6038 GCCBuiltin<"__builtin_ia32_pmovsdb512_mask">, 6039 Intrinsic<[llvm_v16i8_ty], 6040 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty], 6041 [IntrNoMem]>; 6042 def int_x86_avx512_mask_pmovs_db_mem_512 : 6043 GCCBuiltin<"__builtin_ia32_pmovsdb512mem_mask">, 6044 Intrinsic<[], 6045 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 6046 [IntrArgMemOnly]>; 6047 def int_x86_avx512_mask_pmovus_db_512 : 6048 GCCBuiltin<"__builtin_ia32_pmovusdb512_mask">, 6049 Intrinsic<[llvm_v16i8_ty], 6050 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty], 6051 [IntrNoMem]>; 6052 def int_x86_avx512_mask_pmovus_db_mem_512 : 6053 GCCBuiltin<"__builtin_ia32_pmovusdb512mem_mask">, 6054 Intrinsic<[], 6055 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 6056 [IntrArgMemOnly]>; 6057 def int_x86_avx512_mask_pmov_dw_128 : 6058 GCCBuiltin<"__builtin_ia32_pmovdw128_mask">, 6059 Intrinsic<[llvm_v8i16_ty], 6060 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty], 6061 [IntrNoMem]>; 6062 def int_x86_avx512_mask_pmov_dw_mem_128 : 6063 GCCBuiltin<"__builtin_ia32_pmovdw128mem_mask">, 6064 Intrinsic<[], 6065 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 6066 [IntrArgMemOnly]>; 6067 def int_x86_avx512_mask_pmovs_dw_128 : 6068 GCCBuiltin<"__builtin_ia32_pmovsdw128_mask">, 6069 Intrinsic<[llvm_v8i16_ty], 6070 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty], 6071 [IntrNoMem]>; 6072 def int_x86_avx512_mask_pmovs_dw_mem_128 : 6073 GCCBuiltin<"__builtin_ia32_pmovsdw128mem_mask">, 6074 Intrinsic<[], 6075 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 6076 [IntrArgMemOnly]>; 6077 def int_x86_avx512_mask_pmovus_dw_128 : 6078 GCCBuiltin<"__builtin_ia32_pmovusdw128_mask">, 6079 Intrinsic<[llvm_v8i16_ty], 6080 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty], 6081 [IntrNoMem]>; 6082 def int_x86_avx512_mask_pmovus_dw_mem_128 : 6083 GCCBuiltin<"__builtin_ia32_pmovusdw128mem_mask">, 6084 Intrinsic<[], 6085 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty], 6086 [IntrArgMemOnly]>; 6087 def int_x86_avx512_mask_pmov_dw_256 : 6088 GCCBuiltin<"__builtin_ia32_pmovdw256_mask">, 6089 Intrinsic<[llvm_v8i16_ty], 6090 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty], 6091 [IntrNoMem]>; 6092 def int_x86_avx512_mask_pmov_dw_mem_256 : 6093 GCCBuiltin<"__builtin_ia32_pmovdw256mem_mask">, 6094 Intrinsic<[], 6095 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 6096 [IntrArgMemOnly]>; 6097 def int_x86_avx512_mask_pmovs_dw_256 : 6098 GCCBuiltin<"__builtin_ia32_pmovsdw256_mask">, 6099 Intrinsic<[llvm_v8i16_ty], 6100 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty], 6101 [IntrNoMem]>; 6102 def int_x86_avx512_mask_pmovs_dw_mem_256 : 6103 GCCBuiltin<"__builtin_ia32_pmovsdw256mem_mask">, 6104 Intrinsic<[], 6105 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 6106 [IntrArgMemOnly]>; 6107 def int_x86_avx512_mask_pmovus_dw_256 : 6108 GCCBuiltin<"__builtin_ia32_pmovusdw256_mask">, 6109 Intrinsic<[llvm_v8i16_ty], 6110 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty], 6111 [IntrNoMem]>; 6112 def int_x86_avx512_mask_pmovus_dw_mem_256 : 6113 GCCBuiltin<"__builtin_ia32_pmovusdw256mem_mask">, 6114 Intrinsic<[], 6115 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty], 6116 [IntrArgMemOnly]>; 6117 def int_x86_avx512_mask_pmov_dw_512 : 6118 GCCBuiltin<"__builtin_ia32_pmovdw512_mask">, 6119 Intrinsic<[llvm_v16i16_ty], 6120 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty], 6121 [IntrNoMem]>; 6122 def int_x86_avx512_mask_pmov_dw_mem_512 : 6123 GCCBuiltin<"__builtin_ia32_pmovdw512mem_mask">, 6124 Intrinsic<[], 6125 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 6126 [IntrArgMemOnly]>; 6127 def int_x86_avx512_mask_pmovs_dw_512 : 6128 GCCBuiltin<"__builtin_ia32_pmovsdw512_mask">, 6129 Intrinsic<[llvm_v16i16_ty], 6130 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty], 6131 [IntrNoMem]>; 6132 def int_x86_avx512_mask_pmovs_dw_mem_512 : 6133 GCCBuiltin<"__builtin_ia32_pmovsdw512mem_mask">, 6134 Intrinsic<[], 6135 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 6136 [IntrArgMemOnly]>; 6137 def int_x86_avx512_mask_pmovus_dw_512 : 6138 GCCBuiltin<"__builtin_ia32_pmovusdw512_mask">, 6139 Intrinsic<[llvm_v16i16_ty], 6140 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty], 6141 [IntrNoMem]>; 6142 def int_x86_avx512_mask_pmovus_dw_mem_512 : 6143 GCCBuiltin<"__builtin_ia32_pmovusdw512mem_mask">, 6144 Intrinsic<[], 6145 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty], 6146 [IntrArgMemOnly]>; 6147 def int_x86_avx512_mask_pmov_wb_128 : 6148 GCCBuiltin<"__builtin_ia32_pmovwb128_mask">, 6149 Intrinsic<[llvm_v16i8_ty], 6150 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty], 6151 [IntrNoMem]>; 6152 def int_x86_avx512_mask_pmov_wb_mem_128 : 6153 GCCBuiltin<"__builtin_ia32_pmovwb128mem_mask">, 6154 Intrinsic<[], 6155 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty], 6156 [IntrArgMemOnly]>; 6157 def int_x86_avx512_mask_pmovs_wb_128 : 6158 GCCBuiltin<"__builtin_ia32_pmovswb128_mask">, 6159 Intrinsic<[llvm_v16i8_ty], 6160 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty], 6161 [IntrNoMem]>; 6162 def int_x86_avx512_mask_pmovs_wb_mem_128 : 6163 GCCBuiltin<"__builtin_ia32_pmovswb128mem_mask">, 6164 Intrinsic<[], 6165 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty], 6166 [IntrArgMemOnly]>; 6167 def int_x86_avx512_mask_pmovus_wb_128 : 6168 GCCBuiltin<"__builtin_ia32_pmovuswb128_mask">, 6169 Intrinsic<[llvm_v16i8_ty], 6170 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty], 6171 [IntrNoMem]>; 6172 def int_x86_avx512_mask_pmovus_wb_mem_128 : 6173 GCCBuiltin<"__builtin_ia32_pmovuswb128mem_mask">, 6174 Intrinsic<[], 6175 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty], 6176 [IntrArgMemOnly]>; 6177 def int_x86_avx512_mask_pmov_wb_256 : 6178 GCCBuiltin<"__builtin_ia32_pmovwb256_mask">, 6179 Intrinsic<[llvm_v16i8_ty], 6180 [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty], 6181 [IntrNoMem]>; 6182 def int_x86_avx512_mask_pmov_wb_mem_256 : 6183 GCCBuiltin<"__builtin_ia32_pmovwb256mem_mask">, 6184 Intrinsic<[], 6185 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty], 6186 [IntrArgMemOnly]>; 6187 def int_x86_avx512_mask_pmovs_wb_256 : 6188 GCCBuiltin<"__builtin_ia32_pmovswb256_mask">, 6189 Intrinsic<[llvm_v16i8_ty], 6190 [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty], 6191 [IntrNoMem]>; 6192 def int_x86_avx512_mask_pmovs_wb_mem_256 : 6193 GCCBuiltin<"__builtin_ia32_pmovswb256mem_mask">, 6194 Intrinsic<[], 6195 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty], 6196 [IntrArgMemOnly]>; 6197 def int_x86_avx512_mask_pmovus_wb_256 : 6198 GCCBuiltin<"__builtin_ia32_pmovuswb256_mask">, 6199 Intrinsic<[llvm_v16i8_ty], 6200 [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty], 6201 [IntrNoMem]>; 6202 def int_x86_avx512_mask_pmovus_wb_mem_256 : 6203 GCCBuiltin<"__builtin_ia32_pmovuswb256mem_mask">, 6204 Intrinsic<[], 6205 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty], 6206 [IntrArgMemOnly]>; 6207 def int_x86_avx512_mask_pmov_wb_512 : 6208 GCCBuiltin<"__builtin_ia32_pmovwb512_mask">, 6209 Intrinsic<[llvm_v32i8_ty], 6210 [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty], 6211 [IntrNoMem]>; 6212 def int_x86_avx512_mask_pmov_wb_mem_512 : 6213 GCCBuiltin<"__builtin_ia32_pmovwb512mem_mask">, 6214 Intrinsic<[], 6215 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty], 6216 [IntrArgMemOnly]>; 6217 def int_x86_avx512_mask_pmovs_wb_512 : 6218 GCCBuiltin<"__builtin_ia32_pmovswb512_mask">, 6219 Intrinsic<[llvm_v32i8_ty], 6220 [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty], 6221 [IntrNoMem]>; 6222 def int_x86_avx512_mask_pmovs_wb_mem_512 : 6223 GCCBuiltin<"__builtin_ia32_pmovswb512mem_mask">, 6224 Intrinsic<[], 6225 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty], 6226 [IntrArgMemOnly]>; 6227 def int_x86_avx512_mask_pmovus_wb_512 : 6228 GCCBuiltin<"__builtin_ia32_pmovuswb512_mask">, 6229 Intrinsic<[llvm_v32i8_ty], 6230 [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty], 6231 [IntrNoMem]>; 6232 def int_x86_avx512_mask_pmovus_wb_mem_512 : 6233 GCCBuiltin<"__builtin_ia32_pmovuswb512mem_mask">, 6234 Intrinsic<[], 6235 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty], 6236 [IntrArgMemOnly]>; 6237 } 6238 6239 // Bitwise ternary logic 6240 let TargetPrefix = "x86" in { 6241 def int_x86_avx512_mask_pternlog_d_128 : 6242 GCCBuiltin<"__builtin_ia32_pternlogd128_mask">, 6243 Intrinsic<[llvm_v4i32_ty], 6244 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty, 6245 llvm_i8_ty], [IntrNoMem]>; 6246 6247 def int_x86_avx512_maskz_pternlog_d_128 : 6248 GCCBuiltin<"__builtin_ia32_pternlogd128_maskz">, 6249 Intrinsic<[llvm_v4i32_ty], 6250 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty, 6251 llvm_i8_ty], [IntrNoMem]>; 6252 6253 def int_x86_avx512_mask_pternlog_d_256 : 6254 GCCBuiltin<"__builtin_ia32_pternlogd256_mask">, 6255 Intrinsic<[llvm_v8i32_ty], 6256 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, 6257 llvm_i8_ty], [IntrNoMem]>; 6258 6259 def int_x86_avx512_maskz_pternlog_d_256 : 6260 GCCBuiltin<"__builtin_ia32_pternlogd256_maskz">, 6261 Intrinsic<[llvm_v8i32_ty], 6262 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty, 6263 llvm_i8_ty], [IntrNoMem]>; 6264 6265 def int_x86_avx512_mask_pternlog_d_512 : 6266 GCCBuiltin<"__builtin_ia32_pternlogd512_mask">, 6267 Intrinsic<[llvm_v16i32_ty], 6268 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, 6269 llvm_i16_ty], [IntrNoMem]>; 6270 6271 def int_x86_avx512_maskz_pternlog_d_512 : 6272 GCCBuiltin<"__builtin_ia32_pternlogd512_maskz">, 6273 Intrinsic<[llvm_v16i32_ty], 6274 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty, 6275 llvm_i16_ty], [IntrNoMem]>; 6276 6277 def int_x86_avx512_mask_pternlog_q_128 : 6278 GCCBuiltin<"__builtin_ia32_pternlogq128_mask">, 6279 Intrinsic<[llvm_v2i64_ty], 6280 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty, 6281 llvm_i8_ty], [IntrNoMem]>; 6282 6283 def int_x86_avx512_maskz_pternlog_q_128 : 6284 GCCBuiltin<"__builtin_ia32_pternlogq128_maskz">, 6285 Intrinsic<[llvm_v2i64_ty], 6286 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty, 6287 llvm_i8_ty], [IntrNoMem]>; 6288 6289 def int_x86_avx512_mask_pternlog_q_256 : 6290 GCCBuiltin<"__builtin_ia32_pternlogq256_mask">, 6291 Intrinsic<[llvm_v4i64_ty], 6292 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, 6293 llvm_i8_ty], [IntrNoMem]>; 6294 6295 def int_x86_avx512_maskz_pternlog_q_256 : 6296 GCCBuiltin<"__builtin_ia32_pternlogq256_maskz">, 6297 Intrinsic<[llvm_v4i64_ty], 6298 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty, 6299 llvm_i8_ty], [IntrNoMem]>; 6300 6301 def int_x86_avx512_mask_pternlog_q_512 : 6302 GCCBuiltin<"__builtin_ia32_pternlogq512_mask">, 6303 Intrinsic<[llvm_v8i64_ty], 6304 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, 6305 llvm_i8_ty], [IntrNoMem]>; 6306 6307 def int_x86_avx512_maskz_pternlog_q_512 : 6308 GCCBuiltin<"__builtin_ia32_pternlogq512_maskz">, 6309 Intrinsic<[llvm_v8i64_ty], 6310 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i32_ty, 6311 llvm_i8_ty], [IntrNoMem]>; 6312 } 6313 6314 // Misc. 6315 let TargetPrefix = "x86" in { 6316 def int_x86_avx512_mask_cmp_ps_512 : 6317 GCCBuiltin<"__builtin_ia32_cmpps512_mask">, 6318 Intrinsic<[llvm_i16_ty], [llvm_v16f32_ty, llvm_v16f32_ty, 6319 llvm_i32_ty, llvm_i16_ty, llvm_i32_ty], [IntrNoMem]>; 6320 def int_x86_avx512_mask_cmp_pd_512 : 6321 GCCBuiltin<"__builtin_ia32_cmppd512_mask">, 6322 Intrinsic<[llvm_i8_ty], [llvm_v8f64_ty, llvm_v8f64_ty, 6323 llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 6324 def int_x86_avx512_mask_cmp_ps_256 : 6325 GCCBuiltin<"__builtin_ia32_cmpps256_mask">, 6326 Intrinsic<[llvm_i8_ty], [llvm_v8f32_ty, llvm_v8f32_ty, 6327 llvm_i32_ty, llvm_i8_ty], [IntrNoMem]>; 6328 def int_x86_avx512_mask_cmp_pd_256 : 6329 GCCBuiltin<"__builtin_ia32_cmppd256_mask">, 6330 Intrinsic<[llvm_i8_ty], [llvm_v4f64_ty, llvm_v4f64_ty, 6331 llvm_i32_ty, llvm_i8_ty], [IntrNoMem]>; 6332 def int_x86_avx512_mask_cmp_ps_128 : 6333 GCCBuiltin<"__builtin_ia32_cmpps128_mask">, 6334 Intrinsic<[llvm_i8_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 6335 llvm_i32_ty, llvm_i8_ty], [IntrNoMem]>; 6336 def int_x86_avx512_mask_cmp_pd_128 : 6337 GCCBuiltin<"__builtin_ia32_cmppd128_mask">, 6338 Intrinsic<[llvm_i8_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 6339 llvm_i32_ty, llvm_i8_ty], [IntrNoMem]>; 6340 def int_x86_avx512_mask_cmp_ss : 6341 GCCBuiltin<"__builtin_ia32_cmpss_mask">, 6342 Intrinsic<[llvm_i8_ty], [llvm_v4f32_ty, llvm_v4f32_ty, 6343 llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 6344 def int_x86_avx512_mask_cmp_sd : 6345 GCCBuiltin<"__builtin_ia32_cmpsd_mask">, 6346 Intrinsic<[llvm_i8_ty], [llvm_v2f64_ty, llvm_v2f64_ty, 6347 llvm_i32_ty, llvm_i8_ty, llvm_i32_ty], [IntrNoMem]>; 6348 6349 def int_x86_avx512_movntdqa : 6350 GCCBuiltin<"__builtin_ia32_movntdqa512">, 6351 Intrinsic<[llvm_v8i64_ty], [llvm_ptr_ty], [IntrReadMem]>; 6352 } 6353 6354 //===----------------------------------------------------------------------===// 6355 // SHA intrinsics 6356 let TargetPrefix = "x86" in { 6357 def int_x86_sha1rnds4 : GCCBuiltin<"__builtin_ia32_sha1rnds4">, 6358 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], 6359 [IntrNoMem]>; 6360 def int_x86_sha1nexte : GCCBuiltin<"__builtin_ia32_sha1nexte">, 6361 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>; 6362 def int_x86_sha1msg1 : GCCBuiltin<"__builtin_ia32_sha1msg1">, 6363 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>; 6364 def int_x86_sha1msg2 : GCCBuiltin<"__builtin_ia32_sha1msg2">, 6365 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>; 6366 def int_x86_sha256rnds2 : GCCBuiltin<"__builtin_ia32_sha256rnds2">, 6367 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty], 6368 [IntrNoMem]>; 6369 def int_x86_sha256msg1 : GCCBuiltin<"__builtin_ia32_sha256msg1">, 6370 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>; 6371 def int_x86_sha256msg2 : GCCBuiltin<"__builtin_ia32_sha256msg2">, 6372 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>; 6373 } 6374 6375 //===----------------------------------------------------------------------===// 6376 // Thread synchronization ops with timer. 6377 let TargetPrefix = "x86" in { 6378 def int_x86_monitorx 6379 : GCCBuiltin<"__builtin_ia32_monitorx">, 6380 Intrinsic<[], [ llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty ], []>; 6381 def int_x86_mwaitx 6382 : GCCBuiltin<"__builtin_ia32_mwaitx">, 6383 Intrinsic<[], [ llvm_i32_ty, llvm_i32_ty, llvm_i32_ty ], []>; 6384 } 6385 6386 //===----------------------------------------------------------------------===// 6387 // Cache-line zero 6388 let TargetPrefix = "x86" in { 6389 def int_x86_clzero : GCCBuiltin<"__builtin_ia32_clzero">, 6390 Intrinsic<[], [llvm_ptr_ty], []>; 6391 } 6392