Warning, /include/llvm/IR/IntrinsicsX86.td is written in an unsupported language. File is not indexed.
0001 //===- IntrinsicsX86.td - Defines X86 intrinsics -----------*- tablegen -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // This file defines all of the X86-specific intrinsics.
0010 //
0011 //===----------------------------------------------------------------------===//
0012
0013 //===----------------------------------------------------------------------===//
0014 // Interrupt traps
0015 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0016 def int_x86_int : Intrinsic<[], [llvm_i8_ty], [ImmArg<ArgIndex<0>>]>;
0017 }
0018
0019 //===----------------------------------------------------------------------===//
0020 // SEH intrinsics for Windows
0021 let TargetPrefix = "x86" in {
0022 def int_x86_seh_lsda : Intrinsic<[llvm_ptr_ty], [llvm_ptr_ty], [IntrNoMem]>;
0023
0024 // Marks the EH registration node created in LLVM IR prior to code generation.
0025 def int_x86_seh_ehregnode : Intrinsic<[], [llvm_ptr_ty], []>;
0026
0027 // Marks the EH guard slot node created in LLVM IR prior to code generation.
0028 def int_x86_seh_ehguard : Intrinsic<[], [llvm_ptr_ty], []>;
0029 }
0030
0031 //===----------------------------------------------------------------------===//
0032 // FLAGS.
0033 let TargetPrefix = "x86" in {
0034 def int_x86_flags_read_u32 : ClangBuiltin<"__builtin_ia32_readeflags_u32">,
0035 Intrinsic<[llvm_i32_ty], [], []>;
0036 def int_x86_flags_read_u64 : ClangBuiltin<"__builtin_ia32_readeflags_u64">,
0037 Intrinsic<[llvm_i64_ty], [], []>;
0038 def int_x86_flags_write_u32 : ClangBuiltin<"__builtin_ia32_writeeflags_u32">,
0039 Intrinsic<[], [llvm_i32_ty], []>;
0040 def int_x86_flags_write_u64 : ClangBuiltin<"__builtin_ia32_writeeflags_u64">,
0041 Intrinsic<[], [llvm_i64_ty], []>;
0042 }
0043
0044 //===----------------------------------------------------------------------===//
0045 // Read Time Stamp Counter.
0046 let TargetPrefix = "x86" in {
0047 def int_x86_rdtsc : ClangBuiltin<"__builtin_ia32_rdtsc">,
0048 Intrinsic<[llvm_i64_ty], [], []>;
0049 def int_x86_rdtscp :
0050 Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>;
0051 }
0052
0053 // Read Performance-Monitoring Counter.
0054 let TargetPrefix = "x86" in {
0055 def int_x86_rdpmc : ClangBuiltin<"__builtin_ia32_rdpmc">,
0056 Intrinsic<[llvm_i64_ty], [llvm_i32_ty], []>;
0057 }
0058
0059 // Read processor ID.
0060 let TargetPrefix = "x86" in {
0061 def int_x86_rdpid : ClangBuiltin<"__builtin_ia32_rdpid">,
0062 Intrinsic<[llvm_i32_ty], [], []>;
0063 }
0064
0065 // Lock bit test.
0066 let TargetPrefix = "x86" in {
0067 def int_x86_atomic_bts : Intrinsic<[llvm_anyint_ty], [llvm_ptr_ty, llvm_i8_ty],
0068 [ImmArg<ArgIndex<1>>]>;
0069 def int_x86_atomic_btc : Intrinsic<[llvm_anyint_ty], [llvm_ptr_ty, llvm_i8_ty],
0070 [ImmArg<ArgIndex<1>>]>;
0071 def int_x86_atomic_btr : Intrinsic<[llvm_anyint_ty], [llvm_ptr_ty, llvm_i8_ty],
0072 [ImmArg<ArgIndex<1>>]>;
0073 def int_x86_atomic_bts_rm : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty],
0074 []>;
0075 def int_x86_atomic_btc_rm : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty],
0076 []>;
0077 def int_x86_atomic_btr_rm : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty],
0078 []>;
0079
0080
0081 }
0082
0083 // Lock binary arith with CC.
0084 let TargetPrefix = "x86" in {
0085 def int_x86_atomic_add_cc : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty, llvm_i32_ty],
0086 [ImmArg<ArgIndex<2>>]>;
0087 def int_x86_atomic_sub_cc : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty, llvm_i32_ty],
0088 [ImmArg<ArgIndex<2>>]>;
0089 def int_x86_atomic_or_cc : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty, llvm_i32_ty],
0090 [ImmArg<ArgIndex<2>>]>;
0091 def int_x86_atomic_and_cc : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty, llvm_i32_ty],
0092 [ImmArg<ArgIndex<2>>]>;
0093 def int_x86_atomic_xor_cc : Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_anyint_ty, llvm_i32_ty],
0094 [ImmArg<ArgIndex<2>>]>;
0095 }
0096
0097 // Read Processor Register.
0098 let TargetPrefix = "x86" in {
0099 def int_x86_rdpru : ClangBuiltin<"__builtin_ia32_rdpru">,
0100 Intrinsic<[llvm_i64_ty], [llvm_i32_ty], []>;
0101 }
0102
0103 //===----------------------------------------------------------------------===//
0104 // CET SS
0105 let TargetPrefix = "x86" in {
0106 def int_x86_incsspd : ClangBuiltin<"__builtin_ia32_incsspd">,
0107 Intrinsic<[], [llvm_i32_ty], []>;
0108 def int_x86_incsspq : ClangBuiltin<"__builtin_ia32_incsspq">,
0109 Intrinsic<[], [llvm_i64_ty], []>;
0110 def int_x86_rdsspd : ClangBuiltin<"__builtin_ia32_rdsspd">,
0111 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], []>;
0112 def int_x86_rdsspq : ClangBuiltin<"__builtin_ia32_rdsspq">,
0113 Intrinsic<[llvm_i64_ty], [llvm_i64_ty], []>;
0114 def int_x86_saveprevssp : ClangBuiltin<"__builtin_ia32_saveprevssp">,
0115 Intrinsic<[], [], []>;
0116 def int_x86_rstorssp : ClangBuiltin<"__builtin_ia32_rstorssp">,
0117 Intrinsic<[], [llvm_ptr_ty], []>;
0118 def int_x86_wrssd : ClangBuiltin<"__builtin_ia32_wrssd">,
0119 Intrinsic<[], [llvm_i32_ty, llvm_ptr_ty], []>;
0120 def int_x86_wrssq : ClangBuiltin<"__builtin_ia32_wrssq">,
0121 Intrinsic<[], [llvm_i64_ty, llvm_ptr_ty], []>;
0122 def int_x86_wrussd : ClangBuiltin<"__builtin_ia32_wrussd">,
0123 Intrinsic<[], [llvm_i32_ty, llvm_ptr_ty], []>;
0124 def int_x86_wrussq : ClangBuiltin<"__builtin_ia32_wrussq">,
0125 Intrinsic<[], [llvm_i64_ty, llvm_ptr_ty], []>;
0126 def int_x86_setssbsy : ClangBuiltin<"__builtin_ia32_setssbsy">,
0127 Intrinsic<[], [], []>;
0128 def int_x86_clrssbsy : ClangBuiltin<"__builtin_ia32_clrssbsy">,
0129 Intrinsic<[], [llvm_ptr_ty], []>;
0130 }
0131
0132 //===----------------------------------------------------------------------===//
0133 // SSE1
0134
0135 // Arithmetic ops
0136 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0137 def int_x86_sse_rcp_ss : ClangBuiltin<"__builtin_ia32_rcpss">,
0138 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty],
0139 [IntrNoMem]>;
0140 def int_x86_sse_rcp_ps : ClangBuiltin<"__builtin_ia32_rcpps">,
0141 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty],
0142 [IntrNoMem]>;
0143 def int_x86_sse_rsqrt_ss : ClangBuiltin<"__builtin_ia32_rsqrtss">,
0144 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty],
0145 [IntrNoMem]>;
0146 def int_x86_sse_rsqrt_ps : ClangBuiltin<"__builtin_ia32_rsqrtps">,
0147 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty],
0148 [IntrNoMem]>;
0149 def int_x86_sse_min_ss : ClangBuiltin<"__builtin_ia32_minss">,
0150 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0151 llvm_v4f32_ty], [IntrNoMem]>;
0152 def int_x86_sse_min_ps : ClangBuiltin<"__builtin_ia32_minps">,
0153 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0154 llvm_v4f32_ty], [IntrNoMem]>;
0155 def int_x86_sse_max_ss : ClangBuiltin<"__builtin_ia32_maxss">,
0156 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0157 llvm_v4f32_ty], [IntrNoMem]>;
0158 def int_x86_sse_max_ps : ClangBuiltin<"__builtin_ia32_maxps">,
0159 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0160 llvm_v4f32_ty], [IntrNoMem]>;
0161 }
0162
0163 // Comparison ops
0164 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0165 def int_x86_sse_cmp_ss : ClangBuiltin<"__builtin_ia32_cmpss">,
0166 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0167 llvm_v4f32_ty, llvm_i8_ty],
0168 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0169 // NOTE: This comparison intrinsic is not used by clang as long as the
0170 // distinction in signaling behaviour is not implemented.
0171 def int_x86_sse_cmp_ps :
0172 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0173 llvm_v4f32_ty, llvm_i8_ty],
0174 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0175 def int_x86_sse_comieq_ss : ClangBuiltin<"__builtin_ia32_comieq">,
0176 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0177 llvm_v4f32_ty], [IntrNoMem]>;
0178 def int_x86_sse_comilt_ss : ClangBuiltin<"__builtin_ia32_comilt">,
0179 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0180 llvm_v4f32_ty], [IntrNoMem]>;
0181 def int_x86_sse_comile_ss : ClangBuiltin<"__builtin_ia32_comile">,
0182 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0183 llvm_v4f32_ty], [IntrNoMem]>;
0184 def int_x86_sse_comigt_ss : ClangBuiltin<"__builtin_ia32_comigt">,
0185 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0186 llvm_v4f32_ty], [IntrNoMem]>;
0187 def int_x86_sse_comige_ss : ClangBuiltin<"__builtin_ia32_comige">,
0188 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0189 llvm_v4f32_ty], [IntrNoMem]>;
0190 def int_x86_sse_comineq_ss : ClangBuiltin<"__builtin_ia32_comineq">,
0191 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0192 llvm_v4f32_ty], [IntrNoMem]>;
0193 def int_x86_sse_ucomieq_ss : ClangBuiltin<"__builtin_ia32_ucomieq">,
0194 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0195 llvm_v4f32_ty], [IntrNoMem]>;
0196 def int_x86_sse_ucomilt_ss : ClangBuiltin<"__builtin_ia32_ucomilt">,
0197 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0198 llvm_v4f32_ty], [IntrNoMem]>;
0199 def int_x86_sse_ucomile_ss : ClangBuiltin<"__builtin_ia32_ucomile">,
0200 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0201 llvm_v4f32_ty], [IntrNoMem]>;
0202 def int_x86_sse_ucomigt_ss : ClangBuiltin<"__builtin_ia32_ucomigt">,
0203 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0204 llvm_v4f32_ty], [IntrNoMem]>;
0205 def int_x86_sse_ucomige_ss : ClangBuiltin<"__builtin_ia32_ucomige">,
0206 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0207 llvm_v4f32_ty], [IntrNoMem]>;
0208 def int_x86_sse_ucomineq_ss : ClangBuiltin<"__builtin_ia32_ucomineq">,
0209 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
0210 llvm_v4f32_ty], [IntrNoMem]>;
0211 }
0212
0213
0214 // Conversion ops
0215 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0216 def int_x86_sse_cvtss2si : ClangBuiltin<"__builtin_ia32_cvtss2si">,
0217 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
0218 def int_x86_sse_cvtss2si64 : ClangBuiltin<"__builtin_ia32_cvtss2si64">,
0219 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty], [IntrNoMem]>;
0220 def int_x86_sse_cvttss2si : ClangBuiltin<"__builtin_ia32_cvttss2si">,
0221 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
0222 def int_x86_sse_cvttss2si64 : ClangBuiltin<"__builtin_ia32_cvttss2si64">,
0223 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty], [IntrNoMem]>;
0224
0225 def int_x86_sse_cvtps2pi :
0226 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v4f32_ty], [IntrNoMem]>;
0227 def int_x86_sse_cvttps2pi:
0228 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v4f32_ty], [IntrNoMem]>;
0229 def int_x86_sse_cvtpi2ps :
0230 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0231 llvm_x86mmx_ty], [IntrNoMem]>;
0232 }
0233
0234 // Cacheability support ops
0235 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0236 def int_x86_sse_sfence : ClangBuiltin<"__builtin_ia32_sfence">,
0237 Intrinsic<[], [], []>;
0238 }
0239
0240 // Control register.
0241 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0242 def int_x86_sse_stmxcsr :
0243 Intrinsic<[], [llvm_ptr_ty],
0244 [IntrWriteMem, IntrArgMemOnly,
0245 // This prevents reordering with ldmxcsr
0246 IntrHasSideEffects]>;
0247 def int_x86_sse_ldmxcsr :
0248 Intrinsic<[], [llvm_ptr_ty],
0249 // FIXME: LDMXCSR does not actually write to memory,
0250 // but intrinsic properties are generated incorrectly
0251 // for IntrReadMem+IntrHasSideEffects.
0252 [/*IntrReadMem, IntrArgMemOnly,*/ IntrHasSideEffects]>;
0253 }
0254
0255 // Misc.
0256 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0257 def int_x86_sse_movmsk_ps : ClangBuiltin<"__builtin_ia32_movmskps">,
0258 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
0259 }
0260
0261 //===----------------------------------------------------------------------===//
0262 // SSE2
0263
0264 // FP arithmetic ops
0265 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0266 def int_x86_sse2_min_sd : ClangBuiltin<"__builtin_ia32_minsd">,
0267 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
0268 llvm_v2f64_ty], [IntrNoMem]>;
0269 def int_x86_sse2_min_pd : ClangBuiltin<"__builtin_ia32_minpd">,
0270 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
0271 llvm_v2f64_ty], [IntrNoMem]>;
0272 def int_x86_sse2_max_sd : ClangBuiltin<"__builtin_ia32_maxsd">,
0273 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
0274 llvm_v2f64_ty], [IntrNoMem]>;
0275 def int_x86_sse2_max_pd : ClangBuiltin<"__builtin_ia32_maxpd">,
0276 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
0277 llvm_v2f64_ty], [IntrNoMem]>;
0278 }
0279
0280 // FP comparison ops
0281 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0282 def int_x86_sse2_cmp_sd : ClangBuiltin<"__builtin_ia32_cmpsd">,
0283 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
0284 llvm_v2f64_ty, llvm_i8_ty],
0285 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0286 // NOTE: This comparison intrinsic is not used by clang as long as the
0287 // distinction in signaling behaviour is not implemented.
0288 def int_x86_sse2_cmp_pd :
0289 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
0290 llvm_v2f64_ty, llvm_i8_ty],
0291 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0292 def int_x86_sse2_comieq_sd : ClangBuiltin<"__builtin_ia32_comisdeq">,
0293 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0294 llvm_v2f64_ty], [IntrNoMem]>;
0295 def int_x86_sse2_comilt_sd : ClangBuiltin<"__builtin_ia32_comisdlt">,
0296 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0297 llvm_v2f64_ty], [IntrNoMem]>;
0298 def int_x86_sse2_comile_sd : ClangBuiltin<"__builtin_ia32_comisdle">,
0299 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0300 llvm_v2f64_ty], [IntrNoMem]>;
0301 def int_x86_sse2_comigt_sd : ClangBuiltin<"__builtin_ia32_comisdgt">,
0302 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0303 llvm_v2f64_ty], [IntrNoMem]>;
0304 def int_x86_sse2_comige_sd : ClangBuiltin<"__builtin_ia32_comisdge">,
0305 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0306 llvm_v2f64_ty], [IntrNoMem]>;
0307 def int_x86_sse2_comineq_sd : ClangBuiltin<"__builtin_ia32_comisdneq">,
0308 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0309 llvm_v2f64_ty], [IntrNoMem]>;
0310 def int_x86_sse2_ucomieq_sd : ClangBuiltin<"__builtin_ia32_ucomisdeq">,
0311 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0312 llvm_v2f64_ty], [IntrNoMem]>;
0313 def int_x86_sse2_ucomilt_sd : ClangBuiltin<"__builtin_ia32_ucomisdlt">,
0314 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0315 llvm_v2f64_ty], [IntrNoMem]>;
0316 def int_x86_sse2_ucomile_sd : ClangBuiltin<"__builtin_ia32_ucomisdle">,
0317 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0318 llvm_v2f64_ty], [IntrNoMem]>;
0319 def int_x86_sse2_ucomigt_sd : ClangBuiltin<"__builtin_ia32_ucomisdgt">,
0320 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0321 llvm_v2f64_ty], [IntrNoMem]>;
0322 def int_x86_sse2_ucomige_sd : ClangBuiltin<"__builtin_ia32_ucomisdge">,
0323 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0324 llvm_v2f64_ty], [IntrNoMem]>;
0325 def int_x86_sse2_ucomineq_sd : ClangBuiltin<"__builtin_ia32_ucomisdneq">,
0326 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
0327 llvm_v2f64_ty], [IntrNoMem]>;
0328 }
0329
0330 // Integer arithmetic ops.
0331 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0332 def int_x86_sse2_pmulhu_w : ClangBuiltin<"__builtin_ia32_pmulhuw128">,
0333 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0334 llvm_v8i16_ty], [IntrNoMem, Commutative]>;
0335 def int_x86_sse2_pmulh_w : ClangBuiltin<"__builtin_ia32_pmulhw128">,
0336 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0337 llvm_v8i16_ty], [IntrNoMem, Commutative]>;
0338 def int_x86_sse2_pmadd_wd : ClangBuiltin<"__builtin_ia32_pmaddwd128">,
0339 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty,
0340 llvm_v8i16_ty], [IntrNoMem, Commutative]>;
0341 def int_x86_sse2_pavg_b : ClangBuiltin<"__builtin_ia32_pavgb128">,
0342 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty,
0343 llvm_v16i8_ty], [IntrNoMem, Commutative]>;
0344 def int_x86_sse2_pavg_w : ClangBuiltin<"__builtin_ia32_pavgw128">,
0345 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0346 llvm_v8i16_ty], [IntrNoMem, Commutative]>;
0347 def int_x86_sse2_psad_bw : ClangBuiltin<"__builtin_ia32_psadbw128">,
0348 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty,
0349 llvm_v16i8_ty], [IntrNoMem, Commutative]>;
0350 }
0351
0352 // Integer shift ops.
0353 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0354 def int_x86_sse2_psll_w : ClangBuiltin<"__builtin_ia32_psllw128">,
0355 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0356 llvm_v8i16_ty], [IntrNoMem]>;
0357 def int_x86_sse2_psll_d : ClangBuiltin<"__builtin_ia32_pslld128">,
0358 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
0359 llvm_v4i32_ty], [IntrNoMem]>;
0360 def int_x86_sse2_psll_q : ClangBuiltin<"__builtin_ia32_psllq128">,
0361 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty,
0362 llvm_v2i64_ty], [IntrNoMem]>;
0363 def int_x86_sse2_psrl_w : ClangBuiltin<"__builtin_ia32_psrlw128">,
0364 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0365 llvm_v8i16_ty], [IntrNoMem]>;
0366 def int_x86_sse2_psrl_d : ClangBuiltin<"__builtin_ia32_psrld128">,
0367 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
0368 llvm_v4i32_ty], [IntrNoMem]>;
0369 def int_x86_sse2_psrl_q : ClangBuiltin<"__builtin_ia32_psrlq128">,
0370 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty,
0371 llvm_v2i64_ty], [IntrNoMem]>;
0372 def int_x86_sse2_psra_w : ClangBuiltin<"__builtin_ia32_psraw128">,
0373 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0374 llvm_v8i16_ty], [IntrNoMem]>;
0375 def int_x86_sse2_psra_d : ClangBuiltin<"__builtin_ia32_psrad128">,
0376 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
0377 llvm_v4i32_ty], [IntrNoMem]>;
0378
0379 // Oddly these don't require an immediate due to a gcc compatibility issue.
0380 def int_x86_sse2_pslli_w : ClangBuiltin<"__builtin_ia32_psllwi128">,
0381 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0382 llvm_i32_ty], [IntrNoMem]>;
0383 def int_x86_sse2_pslli_d : ClangBuiltin<"__builtin_ia32_pslldi128">,
0384 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
0385 llvm_i32_ty], [IntrNoMem]>;
0386 def int_x86_sse2_pslli_q : ClangBuiltin<"__builtin_ia32_psllqi128">,
0387 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty,
0388 llvm_i32_ty], [IntrNoMem]>;
0389 def int_x86_sse2_psrli_w : ClangBuiltin<"__builtin_ia32_psrlwi128">,
0390 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0391 llvm_i32_ty], [IntrNoMem]>;
0392 def int_x86_sse2_psrli_d : ClangBuiltin<"__builtin_ia32_psrldi128">,
0393 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
0394 llvm_i32_ty], [IntrNoMem]>;
0395 def int_x86_sse2_psrli_q : ClangBuiltin<"__builtin_ia32_psrlqi128">,
0396 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty,
0397 llvm_i32_ty], [IntrNoMem]>;
0398 def int_x86_sse2_psrai_w : ClangBuiltin<"__builtin_ia32_psrawi128">,
0399 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0400 llvm_i32_ty], [IntrNoMem]>;
0401 def int_x86_sse2_psrai_d : ClangBuiltin<"__builtin_ia32_psradi128">,
0402 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
0403 llvm_i32_ty], [IntrNoMem]>;
0404 }
0405
0406 // Conversion ops
0407 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0408 def int_x86_sse2_cvtpd2dq : ClangBuiltin<"__builtin_ia32_cvtpd2dq">,
0409 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty], [IntrNoMem]>;
0410 def int_x86_sse2_cvttpd2dq : ClangBuiltin<"__builtin_ia32_cvttpd2dq">,
0411 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty], [IntrNoMem]>;
0412 def int_x86_sse2_cvtpd2ps : ClangBuiltin<"__builtin_ia32_cvtpd2ps">,
0413 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v2f64_ty], [IntrNoMem]>;
0414 def int_x86_sse2_cvtps2dq : ClangBuiltin<"__builtin_ia32_cvtps2dq">,
0415 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
0416 def int_x86_sse2_cvttps2dq : ClangBuiltin<"__builtin_ia32_cvttps2dq">,
0417 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
0418 def int_x86_sse2_cvtsd2si : ClangBuiltin<"__builtin_ia32_cvtsd2si">,
0419 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>;
0420 def int_x86_sse2_cvtsd2si64 : ClangBuiltin<"__builtin_ia32_cvtsd2si64">,
0421 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
0422 def int_x86_sse2_cvttsd2si : ClangBuiltin<"__builtin_ia32_cvttsd2si">,
0423 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>;
0424 def int_x86_sse2_cvttsd2si64 : ClangBuiltin<"__builtin_ia32_cvttsd2si64">,
0425 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
0426 def int_x86_sse2_cvtsd2ss : ClangBuiltin<"__builtin_ia32_cvtsd2ss">,
0427 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0428 llvm_v2f64_ty], [IntrNoMem]>;
0429 def int_x86_sse_cvtpd2pi :
0430 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v2f64_ty], [IntrNoMem]>;
0431 def int_x86_sse_cvttpd2pi:
0432 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_v2f64_ty], [IntrNoMem]>;
0433 def int_x86_sse_cvtpi2pd :
0434 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_x86mmx_ty], [IntrNoMem]>;
0435 }
0436
0437 // Misc.
0438 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0439 def int_x86_sse2_packsswb_128 : ClangBuiltin<"__builtin_ia32_packsswb128">,
0440 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8i16_ty,
0441 llvm_v8i16_ty], [IntrNoMem]>;
0442 def int_x86_sse2_packssdw_128 : ClangBuiltin<"__builtin_ia32_packssdw128">,
0443 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v4i32_ty,
0444 llvm_v4i32_ty], [IntrNoMem]>;
0445 def int_x86_sse2_packuswb_128 : ClangBuiltin<"__builtin_ia32_packuswb128">,
0446 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8i16_ty,
0447 llvm_v8i16_ty], [IntrNoMem]>;
0448 def int_x86_sse2_movmsk_pd : ClangBuiltin<"__builtin_ia32_movmskpd">,
0449 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty], [IntrNoMem]>;
0450 def int_x86_sse2_pmovmskb_128 : ClangBuiltin<"__builtin_ia32_pmovmskb128">,
0451 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
0452 def int_x86_sse2_maskmov_dqu : ClangBuiltin<"__builtin_ia32_maskmovdqu">,
0453 Intrinsic<[], [llvm_v16i8_ty,
0454 llvm_v16i8_ty, llvm_ptr_ty], []>;
0455 def int_x86_sse2_clflush : ClangBuiltin<"__builtin_ia32_clflush">,
0456 Intrinsic<[], [llvm_ptr_ty], []>;
0457 def int_x86_sse2_lfence : ClangBuiltin<"__builtin_ia32_lfence">,
0458 Intrinsic<[], [], []>;
0459 def int_x86_sse2_mfence : ClangBuiltin<"__builtin_ia32_mfence">,
0460 Intrinsic<[], [], []>;
0461 def int_x86_sse2_pause : ClangBuiltin<"__builtin_ia32_pause">,
0462 Intrinsic<[], [], []>;
0463 }
0464
0465 //===----------------------------------------------------------------------===//
0466 // SSE3
0467
0468 // Addition / subtraction ops.
0469 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0470 def int_x86_sse3_addsub_ps : ClangBuiltin<"__builtin_ia32_addsubps">,
0471 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0472 llvm_v4f32_ty], [IntrNoMem]>;
0473 def int_x86_sse3_addsub_pd : ClangBuiltin<"__builtin_ia32_addsubpd">,
0474 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
0475 llvm_v2f64_ty], [IntrNoMem]>;
0476 }
0477
0478 // Horizontal ops.
0479 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0480 def int_x86_sse3_hadd_ps : ClangBuiltin<"__builtin_ia32_haddps">,
0481 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0482 llvm_v4f32_ty], [IntrNoMem]>;
0483 def int_x86_sse3_hadd_pd : ClangBuiltin<"__builtin_ia32_haddpd">,
0484 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
0485 llvm_v2f64_ty], [IntrNoMem]>;
0486 def int_x86_sse3_hsub_ps : ClangBuiltin<"__builtin_ia32_hsubps">,
0487 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0488 llvm_v4f32_ty], [IntrNoMem]>;
0489 def int_x86_sse3_hsub_pd : ClangBuiltin<"__builtin_ia32_hsubpd">,
0490 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
0491 llvm_v2f64_ty], [IntrNoMem]>;
0492 }
0493
0494 // Specialized unaligned load.
0495 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0496 def int_x86_sse3_ldu_dq : ClangBuiltin<"__builtin_ia32_lddqu">,
0497 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_ptr_ty], [IntrReadMem]>;
0498 }
0499
0500 // Thread synchronization ops.
0501 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0502 def int_x86_sse3_monitor : ClangBuiltin<"__builtin_ia32_monitor">,
0503 Intrinsic<[], [llvm_ptr_ty,
0504 llvm_i32_ty, llvm_i32_ty], []>;
0505 def int_x86_sse3_mwait : ClangBuiltin<"__builtin_ia32_mwait">,
0506 Intrinsic<[], [llvm_i32_ty,
0507 llvm_i32_ty], []>;
0508 }
0509
0510 //===----------------------------------------------------------------------===//
0511 // SSSE3
0512
0513 // Horizontal arithmetic ops
0514 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0515 def int_x86_ssse3_phadd_w :
0516 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0517 llvm_x86mmx_ty], [IntrNoMem]>;
0518 def int_x86_ssse3_phadd_w_128 : ClangBuiltin<"__builtin_ia32_phaddw128">,
0519 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0520 llvm_v8i16_ty], [IntrNoMem]>;
0521
0522 def int_x86_ssse3_phadd_d :
0523 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0524 llvm_x86mmx_ty], [IntrNoMem]>;
0525 def int_x86_ssse3_phadd_d_128 : ClangBuiltin<"__builtin_ia32_phaddd128">,
0526 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
0527 llvm_v4i32_ty], [IntrNoMem]>;
0528
0529 def int_x86_ssse3_phadd_sw :
0530 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0531 llvm_x86mmx_ty], [IntrNoMem]>;
0532 def int_x86_ssse3_phadd_sw_128 : ClangBuiltin<"__builtin_ia32_phaddsw128">,
0533 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0534 llvm_v8i16_ty], [IntrNoMem]>;
0535
0536 def int_x86_ssse3_phsub_w :
0537 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0538 llvm_x86mmx_ty], [IntrNoMem]>;
0539 def int_x86_ssse3_phsub_w_128 : ClangBuiltin<"__builtin_ia32_phsubw128">,
0540 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0541 llvm_v8i16_ty], [IntrNoMem]>;
0542
0543 def int_x86_ssse3_phsub_d :
0544 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0545 llvm_x86mmx_ty], [IntrNoMem]>;
0546 def int_x86_ssse3_phsub_d_128 : ClangBuiltin<"__builtin_ia32_phsubd128">,
0547 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
0548 llvm_v4i32_ty], [IntrNoMem]>;
0549
0550 def int_x86_ssse3_phsub_sw :
0551 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0552 llvm_x86mmx_ty], [IntrNoMem]>;
0553 def int_x86_ssse3_phsub_sw_128 : ClangBuiltin<"__builtin_ia32_phsubsw128">,
0554 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0555 llvm_v8i16_ty], [IntrNoMem]>;
0556
0557 def int_x86_ssse3_pmadd_ub_sw :
0558 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0559 llvm_x86mmx_ty], [IntrNoMem]>;
0560 def int_x86_ssse3_pmadd_ub_sw_128 : ClangBuiltin<"__builtin_ia32_pmaddubsw128">,
0561 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty,
0562 llvm_v16i8_ty], [IntrNoMem]>;
0563 }
0564
0565 // Packed multiply high with round and scale
0566 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0567 def int_x86_ssse3_pmul_hr_sw :
0568 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0569 llvm_x86mmx_ty], [IntrNoMem, Commutative]>;
0570 def int_x86_ssse3_pmul_hr_sw_128 : ClangBuiltin<"__builtin_ia32_pmulhrsw128">,
0571 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0572 llvm_v8i16_ty], [IntrNoMem, Commutative]>;
0573 }
0574
0575 // Shuffle ops
0576 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0577 def int_x86_ssse3_pshuf_b :
0578 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0579 llvm_x86mmx_ty], [IntrNoMem]>;
0580 def int_x86_ssse3_pshuf_b_128 : ClangBuiltin<"__builtin_ia32_pshufb128">,
0581 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty,
0582 llvm_v16i8_ty], [IntrNoMem]>;
0583 def int_x86_sse_pshuf_w :
0584 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i8_ty],
0585 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
0586 }
0587
0588 // Sign ops
0589 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0590 def int_x86_ssse3_psign_b :
0591 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0592 llvm_x86mmx_ty], [IntrNoMem]>;
0593 def int_x86_ssse3_psign_b_128 : ClangBuiltin<"__builtin_ia32_psignb128">,
0594 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty,
0595 llvm_v16i8_ty], [IntrNoMem]>;
0596
0597 def int_x86_ssse3_psign_w :
0598 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0599 llvm_x86mmx_ty], [IntrNoMem]>;
0600 def int_x86_ssse3_psign_w_128 : ClangBuiltin<"__builtin_ia32_psignw128">,
0601 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty,
0602 llvm_v8i16_ty], [IntrNoMem]>;
0603
0604 def int_x86_ssse3_psign_d :
0605 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty,
0606 llvm_x86mmx_ty], [IntrNoMem]>;
0607 def int_x86_ssse3_psign_d_128 : ClangBuiltin<"__builtin_ia32_psignd128">,
0608 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
0609 llvm_v4i32_ty], [IntrNoMem]>;
0610 }
0611
0612 // Absolute value ops
0613 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0614 def int_x86_ssse3_pabs_b :
0615 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>;
0616
0617 def int_x86_ssse3_pabs_w :
0618 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>;
0619
0620 def int_x86_ssse3_pabs_d :
0621 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty], [IntrNoMem]>;
0622 }
0623
0624 //===----------------------------------------------------------------------===//
0625 // SSE4.1
0626
0627 // FP rounding ops
0628 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0629 def int_x86_sse41_round_ss : ClangBuiltin<"__builtin_ia32_roundss">,
0630 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty,
0631 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0632 def int_x86_sse41_round_ps : ClangBuiltin<"__builtin_ia32_roundps">,
0633 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
0634 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
0635 def int_x86_sse41_round_sd : ClangBuiltin<"__builtin_ia32_roundsd">,
0636 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty,
0637 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0638 def int_x86_sse41_round_pd : ClangBuiltin<"__builtin_ia32_roundpd">,
0639 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
0640 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
0641 }
0642
0643 // Vector min element
0644 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0645 def int_x86_sse41_phminposuw : ClangBuiltin<"__builtin_ia32_phminposuw128">,
0646 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], [IntrNoMem]>;
0647 }
0648
0649 // Advanced Encryption Standard (AES) Instructions
0650 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0651 def int_x86_aesni_aesimc : ClangBuiltin<"__builtin_ia32_aesimc128">,
0652 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
0653
0654 def int_x86_aesni_aesenc : ClangBuiltin<"__builtin_ia32_aesenc128">,
0655 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
0656 [IntrNoMem]>;
0657 def int_x86_aesni_aesenc_256 : ClangBuiltin<"__builtin_ia32_aesenc256">,
0658 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
0659 [IntrNoMem]>;
0660 def int_x86_aesni_aesenc_512 : ClangBuiltin<"__builtin_ia32_aesenc512">,
0661 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty],
0662 [IntrNoMem]>;
0663
0664 def int_x86_aesni_aesenclast : ClangBuiltin<"__builtin_ia32_aesenclast128">,
0665 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
0666 [IntrNoMem]>;
0667 def int_x86_aesni_aesenclast_256 :
0668 ClangBuiltin<"__builtin_ia32_aesenclast256">,
0669 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
0670 [IntrNoMem]>;
0671 def int_x86_aesni_aesenclast_512 :
0672 ClangBuiltin<"__builtin_ia32_aesenclast512">,
0673 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty],
0674 [IntrNoMem]>;
0675
0676 def int_x86_aesni_aesdec : ClangBuiltin<"__builtin_ia32_aesdec128">,
0677 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
0678 [IntrNoMem]>;
0679 def int_x86_aesni_aesdec_256 : ClangBuiltin<"__builtin_ia32_aesdec256">,
0680 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
0681 [IntrNoMem]>;
0682 def int_x86_aesni_aesdec_512 : ClangBuiltin<"__builtin_ia32_aesdec512">,
0683 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty],
0684 [IntrNoMem]>;
0685
0686 def int_x86_aesni_aesdeclast : ClangBuiltin<"__builtin_ia32_aesdeclast128">,
0687 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
0688 [IntrNoMem]>;
0689 def int_x86_aesni_aesdeclast_256 :
0690 ClangBuiltin<"__builtin_ia32_aesdeclast256">,
0691 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
0692 [IntrNoMem]>;
0693 def int_x86_aesni_aesdeclast_512 :
0694 ClangBuiltin<"__builtin_ia32_aesdeclast512">,
0695 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty],
0696 [IntrNoMem]>;
0697
0698 def int_x86_aesni_aeskeygenassist :
0699 ClangBuiltin<"__builtin_ia32_aeskeygenassist128">,
0700 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i8_ty],
0701 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
0702 }
0703
0704 // PCLMUL instructions
0705 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0706 def int_x86_pclmulqdq : ClangBuiltin<"__builtin_ia32_pclmulqdq128">,
0707 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
0708 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty],
0709 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0710 def int_x86_pclmulqdq_256 : ClangBuiltin<"__builtin_ia32_pclmulqdq256">,
0711 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
0712 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty],
0713 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0714 def int_x86_pclmulqdq_512 : ClangBuiltin<"__builtin_ia32_pclmulqdq512">,
0715 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
0716 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty],
0717 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0718 }
0719
0720 // Vector pack
0721 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0722 def int_x86_sse41_packusdw : ClangBuiltin<"__builtin_ia32_packusdw128">,
0723 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
0724 [IntrNoMem]>;
0725 }
0726
0727 // Vector insert
0728 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0729 def int_x86_sse41_insertps : ClangBuiltin<"__builtin_ia32_insertps128">,
0730 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
0731 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty],
0732 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0733 }
0734
0735 // Vector blend
0736 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0737 def int_x86_sse41_pblendvb : ClangBuiltin<"__builtin_ia32_pblendvb128">,
0738 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
0739 [llvm_v16i8_ty, llvm_v16i8_ty,llvm_v16i8_ty],
0740 [IntrNoMem]>;
0741 def int_x86_sse41_blendvpd : ClangBuiltin<"__builtin_ia32_blendvpd">,
0742 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
0743 [llvm_v2f64_ty, llvm_v2f64_ty,llvm_v2f64_ty],
0744 [IntrNoMem]>;
0745 def int_x86_sse41_blendvps : ClangBuiltin<"__builtin_ia32_blendvps">,
0746 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
0747 [llvm_v4f32_ty, llvm_v4f32_ty,llvm_v4f32_ty],
0748 [IntrNoMem]>;
0749 }
0750
0751 // Vector dot product
0752 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0753 def int_x86_sse41_dppd : ClangBuiltin<"__builtin_ia32_dppd">,
0754 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
0755 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty],
0756 [IntrNoMem, Commutative, ImmArg<ArgIndex<2>>]>;
0757 def int_x86_sse41_dpps : ClangBuiltin<"__builtin_ia32_dpps">,
0758 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
0759 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty],
0760 [IntrNoMem, Commutative, ImmArg<ArgIndex<2>>]>;
0761 }
0762
0763 // Vector sum of absolute differences
0764 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0765 def int_x86_sse41_mpsadbw : ClangBuiltin<"__builtin_ia32_mpsadbw128">,
0766 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
0767 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty],
0768 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0769 }
0770
0771 // Test instruction with bitwise comparison.
0772 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0773 def int_x86_sse41_ptestz : ClangBuiltin<"__builtin_ia32_ptestz128">,
0774 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
0775 [IntrNoMem]>;
0776 def int_x86_sse41_ptestc : ClangBuiltin<"__builtin_ia32_ptestc128">,
0777 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
0778 [IntrNoMem]>;
0779 def int_x86_sse41_ptestnzc : ClangBuiltin<"__builtin_ia32_ptestnzc128">,
0780 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
0781 [IntrNoMem]>;
0782 }
0783
0784 //===----------------------------------------------------------------------===//
0785 // SSE4.2
0786
0787 // Miscellaneous
0788 // CRC Instruction
0789 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0790 def int_x86_sse42_crc32_32_8 : ClangBuiltin<"__builtin_ia32_crc32qi">,
0791 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i8_ty],
0792 [IntrNoMem]>;
0793 def int_x86_sse42_crc32_32_16 : ClangBuiltin<"__builtin_ia32_crc32hi">,
0794 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i16_ty],
0795 [IntrNoMem]>;
0796 def int_x86_sse42_crc32_32_32 : ClangBuiltin<"__builtin_ia32_crc32si">,
0797 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
0798 [IntrNoMem]>;
0799 def int_x86_sse42_crc32_64_64 : ClangBuiltin<"__builtin_ia32_crc32di">,
0800 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
0801 [IntrNoMem]>;
0802 }
0803
0804 // String/text processing ops.
0805 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0806 def int_x86_sse42_pcmpistrm128 : ClangBuiltin<"__builtin_ia32_pcmpistrm128">,
0807 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
0808 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty],
0809 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0810 def int_x86_sse42_pcmpistri128 : ClangBuiltin<"__builtin_ia32_pcmpistri128">,
0811 DefaultAttrsIntrinsic<[llvm_i32_ty],
0812 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty],
0813 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0814 def int_x86_sse42_pcmpistria128 : ClangBuiltin<"__builtin_ia32_pcmpistria128">,
0815 DefaultAttrsIntrinsic<[llvm_i32_ty],
0816 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty],
0817 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0818 def int_x86_sse42_pcmpistric128 : ClangBuiltin<"__builtin_ia32_pcmpistric128">,
0819 DefaultAttrsIntrinsic<[llvm_i32_ty],
0820 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty],
0821 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0822 def int_x86_sse42_pcmpistrio128 : ClangBuiltin<"__builtin_ia32_pcmpistrio128">,
0823 DefaultAttrsIntrinsic<[llvm_i32_ty],
0824 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty],
0825 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0826 def int_x86_sse42_pcmpistris128 : ClangBuiltin<"__builtin_ia32_pcmpistris128">,
0827 DefaultAttrsIntrinsic<[llvm_i32_ty],
0828 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty],
0829 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0830 def int_x86_sse42_pcmpistriz128 : ClangBuiltin<"__builtin_ia32_pcmpistriz128">,
0831 DefaultAttrsIntrinsic<[llvm_i32_ty],
0832 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty],
0833 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
0834 def int_x86_sse42_pcmpestrm128 : ClangBuiltin<"__builtin_ia32_pcmpestrm128">,
0835 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
0836 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty,
0837 llvm_i8_ty],
0838 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
0839 def int_x86_sse42_pcmpestri128 : ClangBuiltin<"__builtin_ia32_pcmpestri128">,
0840 DefaultAttrsIntrinsic<[llvm_i32_ty],
0841 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty,
0842 llvm_i8_ty],
0843 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
0844 def int_x86_sse42_pcmpestria128 : ClangBuiltin<"__builtin_ia32_pcmpestria128">,
0845 DefaultAttrsIntrinsic<[llvm_i32_ty],
0846 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty,
0847 llvm_i8_ty],
0848 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
0849 def int_x86_sse42_pcmpestric128 : ClangBuiltin<"__builtin_ia32_pcmpestric128">,
0850 DefaultAttrsIntrinsic<[llvm_i32_ty],
0851 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty,
0852 llvm_i8_ty],
0853 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
0854 def int_x86_sse42_pcmpestrio128 : ClangBuiltin<"__builtin_ia32_pcmpestrio128">,
0855 DefaultAttrsIntrinsic<[llvm_i32_ty],
0856 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty,
0857 llvm_i8_ty],
0858 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
0859 def int_x86_sse42_pcmpestris128 : ClangBuiltin<"__builtin_ia32_pcmpestris128">,
0860 DefaultAttrsIntrinsic<[llvm_i32_ty],
0861 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty,
0862 llvm_i8_ty],
0863 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
0864 def int_x86_sse42_pcmpestriz128 : ClangBuiltin<"__builtin_ia32_pcmpestriz128">,
0865 DefaultAttrsIntrinsic<[llvm_i32_ty],
0866 [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty, llvm_i32_ty,
0867 llvm_i8_ty],
0868 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
0869 }
0870
0871 //===----------------------------------------------------------------------===//
0872 // SSE4A
0873
0874 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0875 def int_x86_sse4a_extrqi : ClangBuiltin<"__builtin_ia32_extrqi">,
0876 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
0877 [llvm_v2i64_ty, llvm_i8_ty, llvm_i8_ty],
0878 [IntrNoMem, ImmArg<ArgIndex<1>>,
0879 ImmArg<ArgIndex<2>>]>;
0880 def int_x86_sse4a_extrq : ClangBuiltin<"__builtin_ia32_extrq">,
0881 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v16i8_ty],
0882 [IntrNoMem]>;
0883
0884 def int_x86_sse4a_insertqi : ClangBuiltin<"__builtin_ia32_insertqi">,
0885 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
0886 llvm_i8_ty, llvm_i8_ty],
0887 [IntrNoMem, ImmArg<ArgIndex<2>>,
0888 ImmArg<ArgIndex<3>>]>;
0889 def int_x86_sse4a_insertq : ClangBuiltin<"__builtin_ia32_insertq">,
0890 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
0891 [IntrNoMem]>;
0892 }
0893
0894 //===----------------------------------------------------------------------===//
0895 // AVX
0896
0897 // Arithmetic ops
0898 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0899 def int_x86_avx_addsub_pd_256 : ClangBuiltin<"__builtin_ia32_addsubpd256">,
0900 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty],
0901 [IntrNoMem]>;
0902 def int_x86_avx_addsub_ps_256 : ClangBuiltin<"__builtin_ia32_addsubps256">,
0903 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
0904 [IntrNoMem]>;
0905 def int_x86_avx_max_pd_256 : ClangBuiltin<"__builtin_ia32_maxpd256">,
0906 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty],
0907 [IntrNoMem]>;
0908 def int_x86_avx_max_ps_256 : ClangBuiltin<"__builtin_ia32_maxps256">,
0909 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
0910 [IntrNoMem]>;
0911 def int_x86_avx_min_pd_256 : ClangBuiltin<"__builtin_ia32_minpd256">,
0912 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty],
0913 [IntrNoMem]>;
0914 def int_x86_avx_min_ps_256 : ClangBuiltin<"__builtin_ia32_minps256">,
0915 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
0916 [IntrNoMem]>;
0917
0918 def int_x86_avx_rsqrt_ps_256 : ClangBuiltin<"__builtin_ia32_rsqrtps256">,
0919 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>;
0920
0921 def int_x86_avx_rcp_ps_256 : ClangBuiltin<"__builtin_ia32_rcpps256">,
0922 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>;
0923
0924 def int_x86_avx_round_pd_256 : ClangBuiltin<"__builtin_ia32_roundpd256">,
0925 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_i32_ty],
0926 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
0927 def int_x86_avx_round_ps_256 : ClangBuiltin<"__builtin_ia32_roundps256">,
0928 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_i32_ty],
0929 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
0930 }
0931
0932 // Horizontal ops
0933 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0934 def int_x86_avx_hadd_pd_256 : ClangBuiltin<"__builtin_ia32_haddpd256">,
0935 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty],
0936 [IntrNoMem]>;
0937 def int_x86_avx_hsub_ps_256 : ClangBuiltin<"__builtin_ia32_hsubps256">,
0938 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
0939 [IntrNoMem]>;
0940 def int_x86_avx_hsub_pd_256 : ClangBuiltin<"__builtin_ia32_hsubpd256">,
0941 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty],
0942 [IntrNoMem]>;
0943 def int_x86_avx_hadd_ps_256 : ClangBuiltin<"__builtin_ia32_haddps256">,
0944 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
0945 [IntrNoMem]>;
0946 }
0947
0948 // Vector permutation
0949 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
0950 def int_x86_avx_vpermilvar_pd : ClangBuiltin<"__builtin_ia32_vpermilvarpd">,
0951 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2i64_ty],
0952 [IntrNoMem]>;
0953 def int_x86_avx_vpermilvar_ps : ClangBuiltin<"__builtin_ia32_vpermilvarps">,
0954 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4i32_ty],
0955 [IntrNoMem]>;
0956
0957 def int_x86_avx_vpermilvar_pd_256 :
0958 ClangBuiltin<"__builtin_ia32_vpermilvarpd256">,
0959 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4i64_ty],
0960 [IntrNoMem]>;
0961 def int_x86_avx_vpermilvar_ps_256 :
0962 ClangBuiltin<"__builtin_ia32_vpermilvarps256">,
0963 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8i32_ty],
0964 [IntrNoMem]>;
0965
0966 def int_x86_avx512_vpermi2var_d_128 :
0967 ClangBuiltin<"__builtin_ia32_vpermi2vard128">,
0968 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
0969 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
0970 [IntrNoMem]>;
0971
0972 def int_x86_avx512_vpermi2var_d_256 :
0973 ClangBuiltin<"__builtin_ia32_vpermi2vard256">,
0974 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
0975 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
0976 [IntrNoMem]>;
0977
0978 def int_x86_avx512_vpermi2var_d_512 :
0979 ClangBuiltin<"__builtin_ia32_vpermi2vard512">,
0980 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
0981 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
0982 [IntrNoMem]>;
0983
0984 def int_x86_avx512_vpermi2var_hi_128 :
0985 ClangBuiltin<"__builtin_ia32_vpermi2varhi128">,
0986 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
0987 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
0988 [IntrNoMem]>;
0989
0990 def int_x86_avx512_vpermi2var_hi_256 :
0991 ClangBuiltin<"__builtin_ia32_vpermi2varhi256">,
0992 DefaultAttrsIntrinsic<[llvm_v16i16_ty],
0993 [llvm_v16i16_ty, llvm_v16i16_ty, llvm_v16i16_ty],
0994 [IntrNoMem]>;
0995
0996 def int_x86_avx512_vpermi2var_hi_512 :
0997 ClangBuiltin<"__builtin_ia32_vpermi2varhi512">,
0998 DefaultAttrsIntrinsic<[llvm_v32i16_ty],
0999 [llvm_v32i16_ty, llvm_v32i16_ty, llvm_v32i16_ty],
1000 [IntrNoMem]>;
1001
1002 def int_x86_avx512_vpermi2var_pd_128 :
1003 ClangBuiltin<"__builtin_ia32_vpermi2varpd128">,
1004 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
1005 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_v2f64_ty],
1006 [IntrNoMem]>;
1007
1008 def int_x86_avx512_vpermi2var_pd_256 :
1009 ClangBuiltin<"__builtin_ia32_vpermi2varpd256">,
1010 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
1011 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_v4f64_ty],
1012 [IntrNoMem]>;
1013
1014 def int_x86_avx512_vpermi2var_pd_512 :
1015 ClangBuiltin<"__builtin_ia32_vpermi2varpd512">,
1016 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
1017 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_v8f64_ty],
1018 [IntrNoMem]>;
1019
1020 def int_x86_avx512_vpermi2var_ps_128 :
1021 ClangBuiltin<"__builtin_ia32_vpermi2varps128">,
1022 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
1023 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_v4f32_ty],
1024 [IntrNoMem]>;
1025
1026 def int_x86_avx512_vpermi2var_ps_256 :
1027 ClangBuiltin<"__builtin_ia32_vpermi2varps256">,
1028 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
1029 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_v8f32_ty],
1030 [IntrNoMem]>;
1031
1032 def int_x86_avx512_vpermi2var_ps_512 :
1033 ClangBuiltin<"__builtin_ia32_vpermi2varps512">,
1034 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
1035 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_v16f32_ty],
1036 [IntrNoMem]>;
1037
1038 def int_x86_avx512_vpermi2var_q_128 :
1039 ClangBuiltin<"__builtin_ia32_vpermi2varq128">,
1040 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
1041 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
1042 [IntrNoMem]>;
1043
1044 def int_x86_avx512_vpermi2var_q_256 :
1045 ClangBuiltin<"__builtin_ia32_vpermi2varq256">,
1046 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
1047 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty],
1048 [IntrNoMem]>;
1049
1050 def int_x86_avx512_vpermi2var_q_512 :
1051 ClangBuiltin<"__builtin_ia32_vpermi2varq512">,
1052 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
1053 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty],
1054 [IntrNoMem]>;
1055
1056 def int_x86_avx512_vpermi2var_qi_128 :
1057 ClangBuiltin<"__builtin_ia32_vpermi2varqi128">,
1058 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
1059 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
1060 [IntrNoMem]>;
1061
1062 def int_x86_avx512_vpermi2var_qi_256 :
1063 ClangBuiltin<"__builtin_ia32_vpermi2varqi256">,
1064 DefaultAttrsIntrinsic<[llvm_v32i8_ty],
1065 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_v32i8_ty],
1066 [IntrNoMem]>;
1067
1068 def int_x86_avx512_vpermi2var_qi_512 :
1069 ClangBuiltin<"__builtin_ia32_vpermi2varqi512">,
1070 DefaultAttrsIntrinsic<[llvm_v64i8_ty],
1071 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_v64i8_ty],
1072 [IntrNoMem]>;
1073
1074 def int_x86_avx512_vpermilvar_pd_512 :
1075 ClangBuiltin<"__builtin_ia32_vpermilvarpd512">,
1076 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8i64_ty],
1077 [IntrNoMem]>;
1078
1079 def int_x86_avx512_vpermilvar_ps_512 :
1080 ClangBuiltin<"__builtin_ia32_vpermilvarps512">,
1081 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
1082 [llvm_v16f32_ty, llvm_v16i32_ty], [IntrNoMem]>;
1083
1084 def int_x86_avx512_pshuf_b_512 :
1085 ClangBuiltin<"__builtin_ia32_pshufb512">,
1086 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty],
1087 [IntrNoMem]>;
1088
1089 }
1090
1091 // GFNI Instructions
1092 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1093 def int_x86_vgf2p8affineinvqb_128 :
1094 ClangBuiltin<"__builtin_ia32_vgf2p8affineinvqb_v16qi">,
1095 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
1096 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty],
1097 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
1098 def int_x86_vgf2p8affineinvqb_256 :
1099 ClangBuiltin<"__builtin_ia32_vgf2p8affineinvqb_v32qi">,
1100 DefaultAttrsIntrinsic<[llvm_v32i8_ty],
1101 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i8_ty],
1102 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
1103 def int_x86_vgf2p8affineinvqb_512 :
1104 ClangBuiltin<"__builtin_ia32_vgf2p8affineinvqb_v64qi">,
1105 DefaultAttrsIntrinsic<[llvm_v64i8_ty],
1106 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i8_ty],
1107 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
1108
1109 def int_x86_vgf2p8affineqb_128 :
1110 ClangBuiltin<"__builtin_ia32_vgf2p8affineqb_v16qi">,
1111 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
1112 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i8_ty],
1113 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
1114 def int_x86_vgf2p8affineqb_256 :
1115 ClangBuiltin<"__builtin_ia32_vgf2p8affineqb_v32qi">,
1116 DefaultAttrsIntrinsic<[llvm_v32i8_ty],
1117 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i8_ty],
1118 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
1119 def int_x86_vgf2p8affineqb_512 :
1120 ClangBuiltin<"__builtin_ia32_vgf2p8affineqb_v64qi">,
1121 DefaultAttrsIntrinsic<[llvm_v64i8_ty],
1122 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i8_ty],
1123 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
1124
1125 def int_x86_vgf2p8mulb_128 :
1126 ClangBuiltin<"__builtin_ia32_vgf2p8mulb_v16qi">,
1127 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
1128 [IntrNoMem]>;
1129 def int_x86_vgf2p8mulb_256 :
1130 ClangBuiltin<"__builtin_ia32_vgf2p8mulb_v32qi">,
1131 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty],
1132 [IntrNoMem]>;
1133 def int_x86_vgf2p8mulb_512 :
1134 ClangBuiltin<"__builtin_ia32_vgf2p8mulb_v64qi">,
1135 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty],
1136 [IntrNoMem]>;
1137 }
1138
1139 // Vector blend
1140 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1141 def int_x86_avx_blendv_pd_256 : ClangBuiltin<"__builtin_ia32_blendvpd256">,
1142 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
1143 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty],
1144 [IntrNoMem]>;
1145 def int_x86_avx_blendv_ps_256 : ClangBuiltin<"__builtin_ia32_blendvps256">,
1146 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
1147 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty],
1148 [IntrNoMem]>;
1149 }
1150
1151 // Vector dot product
1152 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1153 def int_x86_avx_dp_ps_256 : ClangBuiltin<"__builtin_ia32_dpps256">,
1154 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
1155 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty],
1156 [IntrNoMem, Commutative, ImmArg<ArgIndex<2>>]>;
1157 }
1158
1159 // Vector compare
1160 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1161 def int_x86_avx_cmp_pd_256 :
1162 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
1163 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty],
1164 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
1165 def int_x86_avx_cmp_ps_256 :
1166 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
1167 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty],
1168 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
1169 }
1170
1171 // Vector convert
1172 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1173 def int_x86_avx_cvt_pd2_ps_256 : ClangBuiltin<"__builtin_ia32_cvtpd2ps256">,
1174 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f64_ty], [IntrNoMem]>;
1175 def int_x86_avx_cvt_ps2dq_256 : ClangBuiltin<"__builtin_ia32_cvtps2dq256">,
1176 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty], [IntrNoMem]>;
1177 def int_x86_avx_cvtt_pd2dq_256 : ClangBuiltin<"__builtin_ia32_cvttpd2dq256">,
1178 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty], [IntrNoMem]>;
1179 def int_x86_avx_cvt_pd2dq_256 : ClangBuiltin<"__builtin_ia32_cvtpd2dq256">,
1180 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty], [IntrNoMem]>;
1181 def int_x86_avx_cvtt_ps2dq_256 : ClangBuiltin<"__builtin_ia32_cvttps2dq256">,
1182 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty], [IntrNoMem]>;
1183 }
1184
1185 // Vector bit test
1186 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1187 def int_x86_avx_vtestz_pd : ClangBuiltin<"__builtin_ia32_vtestzpd">,
1188 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_v2f64_ty],
1189 [IntrNoMem]>;
1190 def int_x86_avx_vtestc_pd : ClangBuiltin<"__builtin_ia32_vtestcpd">,
1191 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_v2f64_ty],
1192 [IntrNoMem]>;
1193 def int_x86_avx_vtestnzc_pd : ClangBuiltin<"__builtin_ia32_vtestnzcpd">,
1194 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_v2f64_ty],
1195 [IntrNoMem]>;
1196 def int_x86_avx_vtestz_ps : ClangBuiltin<"__builtin_ia32_vtestzps">,
1197 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty],
1198 [IntrNoMem]>;
1199 def int_x86_avx_vtestc_ps : ClangBuiltin<"__builtin_ia32_vtestcps">,
1200 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty],
1201 [IntrNoMem]>;
1202 def int_x86_avx_vtestnzc_ps : ClangBuiltin<"__builtin_ia32_vtestnzcps">,
1203 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty],
1204 [IntrNoMem]>;
1205 def int_x86_avx_vtestz_pd_256 : ClangBuiltin<"__builtin_ia32_vtestzpd256">,
1206 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f64_ty, llvm_v4f64_ty],
1207 [IntrNoMem]>;
1208 def int_x86_avx_vtestc_pd_256 : ClangBuiltin<"__builtin_ia32_vtestcpd256">,
1209 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f64_ty, llvm_v4f64_ty],
1210 [IntrNoMem]>;
1211 def int_x86_avx_vtestnzc_pd_256 : ClangBuiltin<"__builtin_ia32_vtestnzcpd256">,
1212 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f64_ty, llvm_v4f64_ty],
1213 [IntrNoMem]>;
1214 def int_x86_avx_vtestz_ps_256 : ClangBuiltin<"__builtin_ia32_vtestzps256">,
1215 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
1216 [IntrNoMem]>;
1217 def int_x86_avx_vtestc_ps_256 : ClangBuiltin<"__builtin_ia32_vtestcps256">,
1218 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
1219 [IntrNoMem]>;
1220 def int_x86_avx_vtestnzc_ps_256 : ClangBuiltin<"__builtin_ia32_vtestnzcps256">,
1221 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
1222 [IntrNoMem]>;
1223 def int_x86_avx_ptestz_256 : ClangBuiltin<"__builtin_ia32_ptestz256">,
1224 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
1225 [IntrNoMem]>;
1226 def int_x86_avx_ptestc_256 : ClangBuiltin<"__builtin_ia32_ptestc256">,
1227 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
1228 [IntrNoMem]>;
1229 def int_x86_avx_ptestnzc_256 : ClangBuiltin<"__builtin_ia32_ptestnzc256">,
1230 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
1231 [IntrNoMem]>;
1232
1233 def int_x86_avx512_fpclass_pd_128 :
1234 DefaultAttrsIntrinsic<[llvm_v2i1_ty], [llvm_v2f64_ty, llvm_i32_ty],
1235 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
1236 def int_x86_avx512_fpclass_pd_256 :
1237 DefaultAttrsIntrinsic<[llvm_v4i1_ty], [llvm_v4f64_ty, llvm_i32_ty],
1238 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
1239 def int_x86_avx512_fpclass_pd_512 :
1240 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8f64_ty, llvm_i32_ty],
1241 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
1242 def int_x86_avx512_fpclass_ps_128 :
1243 DefaultAttrsIntrinsic<[llvm_v4i1_ty], [llvm_v4f32_ty, llvm_i32_ty],
1244 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
1245 def int_x86_avx512_fpclass_ps_256 :
1246 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8f32_ty, llvm_i32_ty],
1247 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
1248 def int_x86_avx512_fpclass_ps_512 :
1249 DefaultAttrsIntrinsic<[llvm_v16i1_ty], [llvm_v16f32_ty, llvm_i32_ty],
1250 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
1251 def int_x86_avx512_mask_fpclass_sd :
1252 ClangBuiltin<"__builtin_ia32_fpclasssd_mask">,
1253 DefaultAttrsIntrinsic<[llvm_i8_ty],
1254 [llvm_v2f64_ty, llvm_i32_ty, llvm_i8_ty],
1255 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
1256 def int_x86_avx512_mask_fpclass_ss :
1257 ClangBuiltin<"__builtin_ia32_fpclassss_mask">,
1258 DefaultAttrsIntrinsic<[llvm_i8_ty],
1259 [llvm_v4f32_ty, llvm_i32_ty, llvm_i8_ty],
1260 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
1261 }
1262
1263 // Vector extract sign mask
1264 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1265 def int_x86_avx_movmsk_pd_256 : ClangBuiltin<"__builtin_ia32_movmskpd256">,
1266 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f64_ty], [IntrNoMem]>;
1267 def int_x86_avx_movmsk_ps_256 : ClangBuiltin<"__builtin_ia32_movmskps256">,
1268 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8f32_ty], [IntrNoMem]>;
1269 }
1270
1271 // Vector zero
1272 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1273 def int_x86_avx_vzeroall : ClangBuiltin<"__builtin_ia32_vzeroall">,
1274 Intrinsic<[], [], [IntrNoMem, IntrHasSideEffects]>;
1275 def int_x86_avx_vzeroupper : ClangBuiltin<"__builtin_ia32_vzeroupper">,
1276 Intrinsic<[], [], [IntrNoMem, IntrHasSideEffects]>;
1277 }
1278
1279 // SIMD load ops
1280 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1281 def int_x86_avx_ldu_dq_256 : ClangBuiltin<"__builtin_ia32_lddqu256">,
1282 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_ptr_ty], [IntrReadMem]>;
1283 }
1284
1285 // Conditional load ops
1286 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1287 def int_x86_avx_maskload_pd : ClangBuiltin<"__builtin_ia32_maskloadpd">,
1288 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_ptr_ty, llvm_v2i64_ty],
1289 [IntrReadMem, IntrArgMemOnly]>;
1290 def int_x86_avx_maskload_ps : ClangBuiltin<"__builtin_ia32_maskloadps">,
1291 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty, llvm_v4i32_ty],
1292 [IntrReadMem, IntrArgMemOnly]>;
1293 def int_x86_avx_maskload_pd_256 : ClangBuiltin<"__builtin_ia32_maskloadpd256">,
1294 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_ptr_ty, llvm_v4i64_ty],
1295 [IntrReadMem, IntrArgMemOnly]>;
1296 def int_x86_avx_maskload_ps_256 : ClangBuiltin<"__builtin_ia32_maskloadps256">,
1297 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty, llvm_v8i32_ty],
1298 [IntrReadMem, IntrArgMemOnly]>;
1299 }
1300
1301 // Conditional store ops
1302 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1303 def int_x86_avx_maskstore_pd : ClangBuiltin<"__builtin_ia32_maskstorepd">,
1304 Intrinsic<[], [llvm_ptr_ty,
1305 llvm_v2i64_ty, llvm_v2f64_ty], [IntrArgMemOnly]>;
1306 def int_x86_avx_maskstore_ps : ClangBuiltin<"__builtin_ia32_maskstoreps">,
1307 Intrinsic<[], [llvm_ptr_ty,
1308 llvm_v4i32_ty, llvm_v4f32_ty], [IntrArgMemOnly]>;
1309 def int_x86_avx_maskstore_pd_256 :
1310 ClangBuiltin<"__builtin_ia32_maskstorepd256">,
1311 Intrinsic<[], [llvm_ptr_ty,
1312 llvm_v4i64_ty, llvm_v4f64_ty], [IntrArgMemOnly]>;
1313 def int_x86_avx_maskstore_ps_256 :
1314 ClangBuiltin<"__builtin_ia32_maskstoreps256">,
1315 Intrinsic<[], [llvm_ptr_ty,
1316 llvm_v8i32_ty, llvm_v8f32_ty], [IntrArgMemOnly]>;
1317 }
1318
1319 // BITALG bits shuffle
1320 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1321 def int_x86_avx512_vpshufbitqmb_128 :
1322 DefaultAttrsIntrinsic<[llvm_v16i1_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
1323 [IntrNoMem]>;
1324 def int_x86_avx512_vpshufbitqmb_256 :
1325 DefaultAttrsIntrinsic<[llvm_v32i1_ty], [llvm_v32i8_ty, llvm_v32i8_ty],
1326 [IntrNoMem]>;
1327 def int_x86_avx512_vpshufbitqmb_512 :
1328 DefaultAttrsIntrinsic<[llvm_v64i1_ty], [llvm_v64i8_ty, llvm_v64i8_ty],
1329 [IntrNoMem]>;
1330 }
1331
1332 //===----------------------------------------------------------------------===//
1333 // AVX2
1334
1335 // Integer arithmetic ops.
1336 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1337 def int_x86_avx2_pmulhu_w : ClangBuiltin<"__builtin_ia32_pmulhuw256">,
1338 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1339 llvm_v16i16_ty], [IntrNoMem, Commutative]>;
1340 def int_x86_avx2_pmulh_w : ClangBuiltin<"__builtin_ia32_pmulhw256">,
1341 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1342 llvm_v16i16_ty], [IntrNoMem, Commutative]>;
1343 def int_x86_avx2_pmadd_wd : ClangBuiltin<"__builtin_ia32_pmaddwd256">,
1344 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v16i16_ty,
1345 llvm_v16i16_ty], [IntrNoMem, Commutative]>;
1346 def int_x86_avx2_pavg_b : ClangBuiltin<"__builtin_ia32_pavgb256">,
1347 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty,
1348 llvm_v32i8_ty], [IntrNoMem, Commutative]>;
1349 def int_x86_avx2_pavg_w : ClangBuiltin<"__builtin_ia32_pavgw256">,
1350 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1351 llvm_v16i16_ty], [IntrNoMem, Commutative]>;
1352 def int_x86_avx2_psad_bw : ClangBuiltin<"__builtin_ia32_psadbw256">,
1353 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v32i8_ty,
1354 llvm_v32i8_ty], [IntrNoMem, Commutative]>;
1355 }
1356
1357 // Integer shift ops.
1358 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1359 def int_x86_avx2_psll_w : ClangBuiltin<"__builtin_ia32_psllw256">,
1360 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1361 llvm_v8i16_ty], [IntrNoMem]>;
1362 def int_x86_avx2_psll_d : ClangBuiltin<"__builtin_ia32_pslld256">,
1363 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
1364 llvm_v4i32_ty], [IntrNoMem]>;
1365 def int_x86_avx2_psll_q : ClangBuiltin<"__builtin_ia32_psllq256">,
1366 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
1367 llvm_v2i64_ty], [IntrNoMem]>;
1368 def int_x86_avx2_psrl_w : ClangBuiltin<"__builtin_ia32_psrlw256">,
1369 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1370 llvm_v8i16_ty], [IntrNoMem]>;
1371 def int_x86_avx2_psrl_d : ClangBuiltin<"__builtin_ia32_psrld256">,
1372 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
1373 llvm_v4i32_ty], [IntrNoMem]>;
1374 def int_x86_avx2_psrl_q : ClangBuiltin<"__builtin_ia32_psrlq256">,
1375 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
1376 llvm_v2i64_ty], [IntrNoMem]>;
1377 def int_x86_avx2_psra_w : ClangBuiltin<"__builtin_ia32_psraw256">,
1378 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1379 llvm_v8i16_ty], [IntrNoMem]>;
1380 def int_x86_avx2_psra_d : ClangBuiltin<"__builtin_ia32_psrad256">,
1381 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
1382 llvm_v4i32_ty], [IntrNoMem]>;
1383
1384 // Oddly these don't require an immediate due to a gcc compatibility issue.
1385 def int_x86_avx2_pslli_w : ClangBuiltin<"__builtin_ia32_psllwi256">,
1386 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1387 llvm_i32_ty], [IntrNoMem]>;
1388 def int_x86_avx2_pslli_d : ClangBuiltin<"__builtin_ia32_pslldi256">,
1389 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
1390 llvm_i32_ty], [IntrNoMem]>;
1391 def int_x86_avx2_pslli_q : ClangBuiltin<"__builtin_ia32_psllqi256">,
1392 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
1393 llvm_i32_ty], [IntrNoMem]>;
1394 def int_x86_avx2_psrli_w : ClangBuiltin<"__builtin_ia32_psrlwi256">,
1395 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1396 llvm_i32_ty], [IntrNoMem]>;
1397 def int_x86_avx2_psrli_d : ClangBuiltin<"__builtin_ia32_psrldi256">,
1398 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
1399 llvm_i32_ty], [IntrNoMem]>;
1400 def int_x86_avx2_psrli_q : ClangBuiltin<"__builtin_ia32_psrlqi256">,
1401 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
1402 llvm_i32_ty], [IntrNoMem]>;
1403 def int_x86_avx2_psrai_w : ClangBuiltin<"__builtin_ia32_psrawi256">,
1404 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1405 llvm_i32_ty], [IntrNoMem]>;
1406 def int_x86_avx2_psrai_d : ClangBuiltin<"__builtin_ia32_psradi256">,
1407 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
1408 llvm_i32_ty], [IntrNoMem]>;
1409
1410 def int_x86_avx512_psra_q_128 : ClangBuiltin<"__builtin_ia32_psraq128">,
1411 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty,
1412 llvm_v2i64_ty], [IntrNoMem]>;
1413 def int_x86_avx512_psra_q_256 : ClangBuiltin<"__builtin_ia32_psraq256">,
1414 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
1415 llvm_v2i64_ty], [IntrNoMem]>;
1416
1417 // Oddly these don't require an immediate due to a gcc compatibility issue.
1418 def int_x86_avx512_psrai_q_128 : ClangBuiltin<"__builtin_ia32_psraqi128">,
1419 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty,
1420 llvm_i32_ty], [IntrNoMem]>;
1421 def int_x86_avx512_psrai_q_256 : ClangBuiltin<"__builtin_ia32_psraqi256">,
1422 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
1423 llvm_i32_ty], [IntrNoMem]>;
1424
1425 def int_x86_avx512_psll_w_512 : ClangBuiltin<"__builtin_ia32_psllw512">,
1426 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty,
1427 llvm_v8i16_ty], [IntrNoMem]>;
1428 def int_x86_avx512_psll_d_512 : ClangBuiltin<"__builtin_ia32_pslld512">,
1429 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
1430 llvm_v4i32_ty], [IntrNoMem]>;
1431 def int_x86_avx512_psll_q_512 : ClangBuiltin<"__builtin_ia32_psllq512">,
1432 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
1433 llvm_v2i64_ty], [IntrNoMem]>;
1434 def int_x86_avx512_psrl_w_512 : ClangBuiltin<"__builtin_ia32_psrlw512">,
1435 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty,
1436 llvm_v8i16_ty], [IntrNoMem]>;
1437 def int_x86_avx512_psrl_d_512 : ClangBuiltin<"__builtin_ia32_psrld512">,
1438 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
1439 llvm_v4i32_ty], [IntrNoMem]>;
1440 def int_x86_avx512_psrl_q_512 : ClangBuiltin<"__builtin_ia32_psrlq512">,
1441 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
1442 llvm_v2i64_ty], [IntrNoMem]>;
1443 def int_x86_avx512_psra_w_512 : ClangBuiltin<"__builtin_ia32_psraw512">,
1444 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty,
1445 llvm_v8i16_ty], [IntrNoMem]>;
1446 def int_x86_avx512_psra_d_512 : ClangBuiltin<"__builtin_ia32_psrad512">,
1447 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
1448 llvm_v4i32_ty], [IntrNoMem]>;
1449 def int_x86_avx512_psra_q_512 : ClangBuiltin<"__builtin_ia32_psraq512">,
1450 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
1451 llvm_v2i64_ty], [IntrNoMem]>;
1452
1453 // Oddly these don't require an immediate due to a gcc compatibility issue.
1454 def int_x86_avx512_pslli_w_512 : ClangBuiltin<"__builtin_ia32_psllwi512">,
1455 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty,
1456 llvm_i32_ty], [IntrNoMem]>;
1457 def int_x86_avx512_pslli_d_512 : ClangBuiltin<"__builtin_ia32_pslldi512">,
1458 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
1459 llvm_i32_ty], [IntrNoMem]>;
1460 def int_x86_avx512_pslli_q_512 : ClangBuiltin<"__builtin_ia32_psllqi512">,
1461 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
1462 llvm_i32_ty], [IntrNoMem]>;
1463 def int_x86_avx512_psrli_w_512 : ClangBuiltin<"__builtin_ia32_psrlwi512">,
1464 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty,
1465 llvm_i32_ty], [IntrNoMem]>;
1466 def int_x86_avx512_psrli_d_512 : ClangBuiltin<"__builtin_ia32_psrldi512">,
1467 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
1468 llvm_i32_ty], [IntrNoMem]>;
1469 def int_x86_avx512_psrli_q_512 : ClangBuiltin<"__builtin_ia32_psrlqi512">,
1470 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
1471 llvm_i32_ty], [IntrNoMem]>;
1472 def int_x86_avx512_psrai_w_512 : ClangBuiltin<"__builtin_ia32_psrawi512">,
1473 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty,
1474 llvm_i32_ty], [IntrNoMem]>;
1475 def int_x86_avx512_psrai_d_512 : ClangBuiltin<"__builtin_ia32_psradi512">,
1476 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty,
1477 llvm_i32_ty], [IntrNoMem]>;
1478 def int_x86_avx512_psrai_q_512 : ClangBuiltin<"__builtin_ia32_psraqi512">,
1479 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty,
1480 llvm_i32_ty], [IntrNoMem]>;
1481
1482 def int_x86_avx512_pmultishift_qb_128:
1483 ClangBuiltin<"__builtin_ia32_vpmultishiftqb128">,
1484 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
1485 [IntrNoMem]>;
1486 def int_x86_avx512_pmultishift_qb_256:
1487 ClangBuiltin<"__builtin_ia32_vpmultishiftqb256">,
1488 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty],
1489 [IntrNoMem]>;
1490 def int_x86_avx512_pmultishift_qb_512:
1491 ClangBuiltin<"__builtin_ia32_vpmultishiftqb512">,
1492 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty],
1493 [IntrNoMem]>;
1494 }
1495
1496 // Pack ops.
1497 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1498 def int_x86_avx2_packsswb : ClangBuiltin<"__builtin_ia32_packsswb256">,
1499 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16i16_ty,
1500 llvm_v16i16_ty], [IntrNoMem]>;
1501 def int_x86_avx2_packssdw : ClangBuiltin<"__builtin_ia32_packssdw256">,
1502 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v8i32_ty,
1503 llvm_v8i32_ty], [IntrNoMem]>;
1504 def int_x86_avx2_packuswb : ClangBuiltin<"__builtin_ia32_packuswb256">,
1505 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16i16_ty,
1506 llvm_v16i16_ty], [IntrNoMem]>;
1507 def int_x86_avx2_packusdw : ClangBuiltin<"__builtin_ia32_packusdw256">,
1508 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v8i32_ty,
1509 llvm_v8i32_ty], [IntrNoMem]>;
1510 }
1511
1512 // Horizontal arithmetic ops
1513 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1514 def int_x86_avx2_phadd_w : ClangBuiltin<"__builtin_ia32_phaddw256">,
1515 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1516 llvm_v16i16_ty], [IntrNoMem]>;
1517 def int_x86_avx2_phadd_d : ClangBuiltin<"__builtin_ia32_phaddd256">,
1518 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
1519 llvm_v8i32_ty], [IntrNoMem]>;
1520 def int_x86_avx2_phadd_sw : ClangBuiltin<"__builtin_ia32_phaddsw256">,
1521 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1522 llvm_v16i16_ty], [IntrNoMem]>;
1523 def int_x86_avx2_phsub_w : ClangBuiltin<"__builtin_ia32_phsubw256">,
1524 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1525 llvm_v16i16_ty], [IntrNoMem]>;
1526 def int_x86_avx2_phsub_d : ClangBuiltin<"__builtin_ia32_phsubd256">,
1527 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
1528 llvm_v8i32_ty], [IntrNoMem]>;
1529 def int_x86_avx2_phsub_sw : ClangBuiltin<"__builtin_ia32_phsubsw256">,
1530 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1531 llvm_v16i16_ty], [IntrNoMem]>;
1532 def int_x86_avx2_pmadd_ub_sw : ClangBuiltin<"__builtin_ia32_pmaddubsw256">,
1533 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v32i8_ty,
1534 llvm_v32i8_ty], [IntrNoMem]>;
1535 }
1536
1537 // Sign ops
1538 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1539 def int_x86_avx2_psign_b : ClangBuiltin<"__builtin_ia32_psignb256">,
1540 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty,
1541 llvm_v32i8_ty], [IntrNoMem]>;
1542 def int_x86_avx2_psign_w : ClangBuiltin<"__builtin_ia32_psignw256">,
1543 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1544 llvm_v16i16_ty], [IntrNoMem]>;
1545 def int_x86_avx2_psign_d : ClangBuiltin<"__builtin_ia32_psignd256">,
1546 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
1547 llvm_v8i32_ty], [IntrNoMem]>;
1548 }
1549
1550 // Packed multiply high with round and scale
1551 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1552 def int_x86_avx2_pmul_hr_sw : ClangBuiltin<"__builtin_ia32_pmulhrsw256">,
1553 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty,
1554 llvm_v16i16_ty], [IntrNoMem, Commutative]>;
1555 def int_x86_avx512_pmul_hr_sw_512 : ClangBuiltin<"__builtin_ia32_pmulhrsw512">,
1556 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty,
1557 llvm_v32i16_ty], [IntrNoMem, Commutative]>;
1558 }
1559
1560 // Vector blend
1561 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1562 def int_x86_avx2_pblendvb : ClangBuiltin<"__builtin_ia32_pblendvb256">,
1563 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty,
1564 llvm_v32i8_ty], [IntrNoMem]>;
1565 }
1566
1567
1568 // Vector permutation
1569 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1570 def int_x86_avx2_permd : ClangBuiltin<"__builtin_ia32_permvarsi256">,
1571 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty],
1572 [IntrNoMem]>;
1573 def int_x86_avx2_permps : ClangBuiltin<"__builtin_ia32_permvarsf256">,
1574 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8i32_ty],
1575 [IntrNoMem]>;
1576 }
1577
1578 // Conditional load ops
1579 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1580 def int_x86_avx2_maskload_d : ClangBuiltin<"__builtin_ia32_maskloadd">,
1581 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_v4i32_ty],
1582 [IntrReadMem, IntrArgMemOnly]>;
1583 def int_x86_avx2_maskload_q : ClangBuiltin<"__builtin_ia32_maskloadq">,
1584 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_ptr_ty, llvm_v2i64_ty],
1585 [IntrReadMem, IntrArgMemOnly]>;
1586 def int_x86_avx2_maskload_d_256 : ClangBuiltin<"__builtin_ia32_maskloadd256">,
1587 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_ptr_ty, llvm_v8i32_ty],
1588 [IntrReadMem, IntrArgMemOnly]>;
1589 def int_x86_avx2_maskload_q_256 : ClangBuiltin<"__builtin_ia32_maskloadq256">,
1590 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_ptr_ty, llvm_v4i64_ty],
1591 [IntrReadMem, IntrArgMemOnly]>;
1592 }
1593
1594 // Conditional store ops
1595 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1596 def int_x86_avx2_maskstore_d : ClangBuiltin<"__builtin_ia32_maskstored">,
1597 Intrinsic<[], [llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1598 [IntrArgMemOnly]>;
1599 def int_x86_avx2_maskstore_q : ClangBuiltin<"__builtin_ia32_maskstoreq">,
1600 Intrinsic<[], [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty],
1601 [IntrArgMemOnly]>;
1602 def int_x86_avx2_maskstore_d_256 :
1603 ClangBuiltin<"__builtin_ia32_maskstored256">,
1604 Intrinsic<[], [llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i32_ty],
1605 [IntrArgMemOnly]>;
1606 def int_x86_avx2_maskstore_q_256 :
1607 ClangBuiltin<"__builtin_ia32_maskstoreq256">,
1608 Intrinsic<[], [llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i64_ty],
1609 [IntrArgMemOnly]>;
1610 }
1611
1612 // Variable bit shift ops
1613 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1614 def int_x86_avx2_psllv_d : ClangBuiltin<"__builtin_ia32_psllv4si">,
1615 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
1616 [IntrNoMem]>;
1617 def int_x86_avx2_psllv_d_256 : ClangBuiltin<"__builtin_ia32_psllv8si">,
1618 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty],
1619 [IntrNoMem]>;
1620 def int_x86_avx2_psllv_q : ClangBuiltin<"__builtin_ia32_psllv2di">,
1621 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
1622 [IntrNoMem]>;
1623 def int_x86_avx2_psllv_q_256 : ClangBuiltin<"__builtin_ia32_psllv4di">,
1624 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
1625 [IntrNoMem]>;
1626
1627 def int_x86_avx512_psllv_d_512 : ClangBuiltin<"__builtin_ia32_psllv16si">,
1628 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty],
1629 [IntrNoMem]>;
1630 def int_x86_avx512_psllv_q_512 : ClangBuiltin<"__builtin_ia32_psllv8di">,
1631 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty],
1632 [IntrNoMem]>;
1633
1634 def int_x86_avx2_psrlv_d : ClangBuiltin<"__builtin_ia32_psrlv4si">,
1635 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
1636 [IntrNoMem]>;
1637 def int_x86_avx2_psrlv_d_256 : ClangBuiltin<"__builtin_ia32_psrlv8si">,
1638 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty],
1639 [IntrNoMem]>;
1640 def int_x86_avx2_psrlv_q : ClangBuiltin<"__builtin_ia32_psrlv2di">,
1641 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
1642 [IntrNoMem]>;
1643 def int_x86_avx2_psrlv_q_256 : ClangBuiltin<"__builtin_ia32_psrlv4di">,
1644 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
1645 [IntrNoMem]>;
1646
1647 def int_x86_avx512_psrlv_d_512 : ClangBuiltin<"__builtin_ia32_psrlv16si">,
1648 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty],
1649 [IntrNoMem]>;
1650 def int_x86_avx512_psrlv_q_512 : ClangBuiltin<"__builtin_ia32_psrlv8di">,
1651 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty],
1652 [IntrNoMem]>;
1653
1654 def int_x86_avx2_psrav_d : ClangBuiltin<"__builtin_ia32_psrav4si">,
1655 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
1656 [IntrNoMem]>;
1657 def int_x86_avx2_psrav_d_256 : ClangBuiltin<"__builtin_ia32_psrav8si">,
1658 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty],
1659 [IntrNoMem]>;
1660
1661 def int_x86_avx512_psrav_d_512 : ClangBuiltin<"__builtin_ia32_psrav16si">,
1662 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty],
1663 [IntrNoMem]>;
1664 def int_x86_avx512_psrav_q_128 : ClangBuiltin<"__builtin_ia32_psravq128">,
1665 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
1666 [IntrNoMem]>;
1667 def int_x86_avx512_psrav_q_256 : ClangBuiltin<"__builtin_ia32_psravq256">,
1668 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
1669 [IntrNoMem]>;
1670 def int_x86_avx512_psrav_q_512 : ClangBuiltin<"__builtin_ia32_psrav8di">,
1671 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty],
1672 [IntrNoMem]>;
1673
1674 def int_x86_avx512_psllv_w_128 : ClangBuiltin<"__builtin_ia32_psllv8hi">,
1675 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
1676 [IntrNoMem]>;
1677 def int_x86_avx512_psllv_w_256 : ClangBuiltin<"__builtin_ia32_psllv16hi">,
1678 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty],
1679 [IntrNoMem]>;
1680 def int_x86_avx512_psllv_w_512 : ClangBuiltin<"__builtin_ia32_psllv32hi">,
1681 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
1682 [IntrNoMem]>;
1683
1684 def int_x86_avx512_psrlv_w_128 : ClangBuiltin<"__builtin_ia32_psrlv8hi">,
1685 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
1686 [IntrNoMem]>;
1687 def int_x86_avx512_psrlv_w_256 : ClangBuiltin<"__builtin_ia32_psrlv16hi">,
1688 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty],
1689 [IntrNoMem]>;
1690 def int_x86_avx512_psrlv_w_512 : ClangBuiltin<"__builtin_ia32_psrlv32hi">,
1691 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
1692 [IntrNoMem]>;
1693
1694 def int_x86_avx512_psrav_w_128 : ClangBuiltin<"__builtin_ia32_psrav8hi">,
1695 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
1696 [IntrNoMem]>;
1697 def int_x86_avx512_psrav_w_256 : ClangBuiltin<"__builtin_ia32_psrav16hi">,
1698 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty],
1699 [IntrNoMem]>;
1700 def int_x86_avx512_psrav_w_512 : ClangBuiltin<"__builtin_ia32_psrav32hi">,
1701 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
1702 [IntrNoMem]>;
1703 }
1704
1705 // Gather ops
1706 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1707 // NOTE: These can't be ArgMemOnly because you can put the address completely
1708 // in the index register.
1709 def int_x86_avx2_gather_d_pd : ClangBuiltin<"__builtin_ia32_gatherd_pd">,
1710 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
1711 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i8_ty],
1712 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1713 def int_x86_avx2_gather_d_pd_256 : ClangBuiltin<"__builtin_ia32_gatherd_pd256">,
1714 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
1715 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i8_ty],
1716 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1717 def int_x86_avx2_gather_q_pd : ClangBuiltin<"__builtin_ia32_gatherq_pd">,
1718 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
1719 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i8_ty],
1720 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1721 def int_x86_avx2_gather_q_pd_256 : ClangBuiltin<"__builtin_ia32_gatherq_pd256">,
1722 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
1723 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i8_ty],
1724 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1725 def int_x86_avx2_gather_d_ps : ClangBuiltin<"__builtin_ia32_gatherd_ps">,
1726 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
1727 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i8_ty],
1728 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1729 def int_x86_avx2_gather_d_ps_256 : ClangBuiltin<"__builtin_ia32_gatherd_ps256">,
1730 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
1731 [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i8_ty],
1732 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1733 def int_x86_avx2_gather_q_ps : ClangBuiltin<"__builtin_ia32_gatherq_ps">,
1734 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
1735 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty],
1736 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1737 def int_x86_avx2_gather_q_ps_256 : ClangBuiltin<"__builtin_ia32_gatherq_ps256">,
1738 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
1739 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i8_ty],
1740 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1741
1742 def int_x86_avx2_gather_d_q : ClangBuiltin<"__builtin_ia32_gatherd_q">,
1743 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
1744 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i8_ty],
1745 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1746 def int_x86_avx2_gather_d_q_256 : ClangBuiltin<"__builtin_ia32_gatherd_q256">,
1747 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
1748 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i8_ty],
1749 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1750 def int_x86_avx2_gather_q_q : ClangBuiltin<"__builtin_ia32_gatherq_q">,
1751 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
1752 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i8_ty],
1753 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1754 def int_x86_avx2_gather_q_q_256 : ClangBuiltin<"__builtin_ia32_gatherq_q256">,
1755 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
1756 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i8_ty],
1757 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1758 def int_x86_avx2_gather_d_d : ClangBuiltin<"__builtin_ia32_gatherd_d">,
1759 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1760 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty],
1761 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1762 def int_x86_avx2_gather_d_d_256 : ClangBuiltin<"__builtin_ia32_gatherd_d256">,
1763 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
1764 [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i8_ty],
1765 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1766 def int_x86_avx2_gather_q_d : ClangBuiltin<"__builtin_ia32_gatherq_d">,
1767 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1768 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty],
1769 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1770 def int_x86_avx2_gather_q_d_256 : ClangBuiltin<"__builtin_ia32_gatherq_d256">,
1771 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1772 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty],
1773 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
1774 }
1775
1776 // Misc.
1777 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1778 def int_x86_avx2_pmovmskb : ClangBuiltin<"__builtin_ia32_pmovmskb256">,
1779 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v32i8_ty], [IntrNoMem]>;
1780 def int_x86_avx2_pshuf_b : ClangBuiltin<"__builtin_ia32_pshufb256">,
1781 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty,
1782 llvm_v32i8_ty], [IntrNoMem]>;
1783 def int_x86_avx2_mpsadbw : ClangBuiltin<"__builtin_ia32_mpsadbw256">,
1784 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v32i8_ty, llvm_v32i8_ty,
1785 llvm_i8_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
1786 }
1787
1788 //===----------------------------------------------------------------------===//
1789 // FMA3 and FMA4
1790
1791 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1792 def int_x86_fma_vfmaddsub_ps : ClangBuiltin<"__builtin_ia32_vfmaddsubps">,
1793 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
1794 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty],
1795 [IntrNoMem]>;
1796 def int_x86_fma_vfmaddsub_pd : ClangBuiltin<"__builtin_ia32_vfmaddsubpd">,
1797 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
1798 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty],
1799 [IntrNoMem]>;
1800 def int_x86_fma_vfmaddsub_ps_256 :
1801 ClangBuiltin<"__builtin_ia32_vfmaddsubps256">,
1802 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
1803 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty],
1804 [IntrNoMem]>;
1805 def int_x86_fma_vfmaddsub_pd_256 :
1806 ClangBuiltin<"__builtin_ia32_vfmaddsubpd256">,
1807 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
1808 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty],
1809 [IntrNoMem]>;
1810
1811 def int_x86_avx512_vfmadd_pd_512 :
1812 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
1813 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty],
1814 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
1815
1816 def int_x86_avx512_vfmadd_ps_512 :
1817 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
1818 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty],
1819 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
1820
1821 def int_x86_avx512_vfmaddsub_pd_512 :
1822 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
1823 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty],
1824 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
1825
1826 def int_x86_avx512_vfmaddsub_ps_512 :
1827 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
1828 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty],
1829 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
1830
1831 def int_x86_avx512_vfmadd_f64 :
1832 DefaultAttrsIntrinsic<[llvm_double_ty],
1833 [llvm_double_ty, llvm_double_ty, llvm_double_ty, llvm_i32_ty],
1834 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
1835 def int_x86_avx512_vfmadd_f32 :
1836 DefaultAttrsIntrinsic<[llvm_float_ty],
1837 [llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_i32_ty],
1838 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
1839
1840 def int_x86_avx512_vpmadd52h_uq_128 :
1841 ClangBuiltin<"__builtin_ia32_vpmadd52huq128">,
1842 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
1843 llvm_v2i64_ty], [IntrNoMem]>;
1844 def int_x86_avx512_vpmadd52l_uq_128 :
1845 ClangBuiltin<"__builtin_ia32_vpmadd52luq128">,
1846 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty,
1847 llvm_v2i64_ty], [IntrNoMem]>;
1848 def int_x86_avx512_vpmadd52h_uq_256 :
1849 ClangBuiltin<"__builtin_ia32_vpmadd52huq256">,
1850 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty,
1851 llvm_v4i64_ty], [IntrNoMem]>;
1852 def int_x86_avx512_vpmadd52l_uq_256 :
1853 ClangBuiltin<"__builtin_ia32_vpmadd52luq256">,
1854 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty,
1855 llvm_v4i64_ty], [IntrNoMem]>;
1856 def int_x86_avx512_vpmadd52h_uq_512 :
1857 ClangBuiltin<"__builtin_ia32_vpmadd52huq512">,
1858 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty,
1859 llvm_v8i64_ty], [IntrNoMem]>;
1860 def int_x86_avx512_vpmadd52l_uq_512 :
1861 ClangBuiltin<"__builtin_ia32_vpmadd52luq512">,
1862 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty,
1863 llvm_v8i64_ty], [IntrNoMem]>;
1864 }
1865
1866 // VNNI
1867 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
1868 def int_x86_avx512_vpdpbusd_128 :
1869 ClangBuiltin<"__builtin_ia32_vpdpbusd128">,
1870 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
1871 llvm_v4i32_ty], [IntrNoMem]>;
1872 def int_x86_avx512_vpdpbusd_256 :
1873 ClangBuiltin<"__builtin_ia32_vpdpbusd256">,
1874 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty,
1875 llvm_v8i32_ty], [IntrNoMem]>;
1876 def int_x86_avx512_vpdpbusd_512 :
1877 ClangBuiltin<"__builtin_ia32_vpdpbusd512">,
1878 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty,
1879 llvm_v16i32_ty], [IntrNoMem]>;
1880
1881 def int_x86_avx512_vpdpbusds_128 :
1882 ClangBuiltin<"__builtin_ia32_vpdpbusds128">,
1883 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
1884 llvm_v4i32_ty], [IntrNoMem]>;
1885 def int_x86_avx512_vpdpbusds_256 :
1886 ClangBuiltin<"__builtin_ia32_vpdpbusds256">,
1887 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty,
1888 llvm_v8i32_ty], [IntrNoMem]>;
1889 def int_x86_avx512_vpdpbusds_512 :
1890 ClangBuiltin<"__builtin_ia32_vpdpbusds512">,
1891 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty,
1892 llvm_v16i32_ty], [IntrNoMem]>;
1893
1894 def int_x86_avx512_vpdpwssd_128 :
1895 ClangBuiltin<"__builtin_ia32_vpdpwssd128">,
1896 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
1897 llvm_v4i32_ty], [IntrNoMem]>;
1898 def int_x86_avx512_vpdpwssd_256 :
1899 ClangBuiltin<"__builtin_ia32_vpdpwssd256">,
1900 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty,
1901 llvm_v8i32_ty], [IntrNoMem]>;
1902 def int_x86_avx512_vpdpwssd_512 :
1903 ClangBuiltin<"__builtin_ia32_vpdpwssd512">,
1904 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty,
1905 llvm_v16i32_ty], [IntrNoMem]>;
1906
1907 def int_x86_avx512_vpdpwssds_128 :
1908 ClangBuiltin<"__builtin_ia32_vpdpwssds128">,
1909 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
1910 llvm_v4i32_ty], [IntrNoMem]>;
1911 def int_x86_avx512_vpdpwssds_256 :
1912 ClangBuiltin<"__builtin_ia32_vpdpwssds256">,
1913 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty,
1914 llvm_v8i32_ty], [IntrNoMem]>;
1915 def int_x86_avx512_vpdpwssds_512 :
1916 ClangBuiltin<"__builtin_ia32_vpdpwssds512">,
1917 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty,
1918 llvm_v16i32_ty], [IntrNoMem]>;
1919 def int_x86_avx2_vpdpbssd_128
1920 : ClangBuiltin<"__builtin_ia32_vpdpbssd128">,
1921 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1922 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1923 [IntrNoMem]>;
1924 def int_x86_avx2_vpdpbssd_256
1925 : ClangBuiltin<"__builtin_ia32_vpdpbssd256">,
1926 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
1927 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
1928 [IntrNoMem]>;
1929 def int_x86_avx2_vpdpbssds_128
1930 : ClangBuiltin<"__builtin_ia32_vpdpbssds128">,
1931 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1932 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1933 [IntrNoMem]>;
1934 def int_x86_avx2_vpdpbssds_256
1935 : ClangBuiltin<"__builtin_ia32_vpdpbssds256">,
1936 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
1937 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
1938 [IntrNoMem]>;
1939 def int_x86_avx2_vpdpbsud_128
1940 : ClangBuiltin<"__builtin_ia32_vpdpbsud128">,
1941 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1942 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1943 [IntrNoMem]>;
1944 def int_x86_avx2_vpdpbsud_256
1945 : ClangBuiltin<"__builtin_ia32_vpdpbsud256">,
1946 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
1947 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
1948 [IntrNoMem]>;
1949 def int_x86_avx2_vpdpbsuds_128
1950 : ClangBuiltin<"__builtin_ia32_vpdpbsuds128">,
1951 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1952 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1953 [IntrNoMem]>;
1954 def int_x86_avx2_vpdpbsuds_256
1955 : ClangBuiltin<"__builtin_ia32_vpdpbsuds256">,
1956 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
1957 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
1958 [IntrNoMem]>;
1959 def int_x86_avx2_vpdpbuud_128
1960 : ClangBuiltin<"__builtin_ia32_vpdpbuud128">,
1961 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1962 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1963 [IntrNoMem]>;
1964 def int_x86_avx2_vpdpbuud_256
1965 : ClangBuiltin<"__builtin_ia32_vpdpbuud256">,
1966 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
1967 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
1968 [IntrNoMem]>;
1969 def int_x86_avx2_vpdpbuuds_128
1970 : ClangBuiltin<"__builtin_ia32_vpdpbuuds128">,
1971 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1972 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1973 [IntrNoMem]>;
1974 def int_x86_avx2_vpdpbuuds_256
1975 : ClangBuiltin<"__builtin_ia32_vpdpbuuds256">,
1976 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
1977 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
1978 [IntrNoMem]>;
1979
1980 def int_x86_avx2_vpdpwsud_128
1981 : ClangBuiltin<"__builtin_ia32_vpdpwsud128">,
1982 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1983 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1984 [IntrNoMem]>;
1985 def int_x86_avx2_vpdpwsud_256
1986 : ClangBuiltin<"__builtin_ia32_vpdpwsud256">,
1987 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
1988 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
1989 [IntrNoMem]>;
1990 def int_x86_avx2_vpdpwsuds_128
1991 : ClangBuiltin<"__builtin_ia32_vpdpwsuds128">,
1992 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
1993 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
1994 [IntrNoMem]>;
1995 def int_x86_avx2_vpdpwsuds_256
1996 : ClangBuiltin<"__builtin_ia32_vpdpwsuds256">,
1997 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
1998 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
1999 [IntrNoMem]>;
2000 def int_x86_avx2_vpdpwusd_128
2001 : ClangBuiltin<"__builtin_ia32_vpdpwusd128">,
2002 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2003 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
2004 [IntrNoMem]>;
2005 def int_x86_avx2_vpdpwusd_256
2006 : ClangBuiltin<"__builtin_ia32_vpdpwusd256">,
2007 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
2008 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
2009 [IntrNoMem]>;
2010 def int_x86_avx2_vpdpwusds_128
2011 : ClangBuiltin<"__builtin_ia32_vpdpwusds128">,
2012 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2013 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
2014 [IntrNoMem]>;
2015 def int_x86_avx2_vpdpwusds_256
2016 : ClangBuiltin<"__builtin_ia32_vpdpwusds256">,
2017 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
2018 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
2019 [IntrNoMem]>;
2020 def int_x86_avx2_vpdpwuud_128
2021 : ClangBuiltin<"__builtin_ia32_vpdpwuud128">,
2022 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2023 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
2024 [IntrNoMem]>;
2025 def int_x86_avx2_vpdpwuud_256
2026 : ClangBuiltin<"__builtin_ia32_vpdpwuud256">,
2027 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
2028 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
2029 [IntrNoMem]>;
2030 def int_x86_avx2_vpdpwuuds_128
2031 : ClangBuiltin<"__builtin_ia32_vpdpwuuds128">,
2032 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2033 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
2034 [IntrNoMem]>;
2035 def int_x86_avx2_vpdpwuuds_256
2036 : ClangBuiltin<"__builtin_ia32_vpdpwuuds256">,
2037 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
2038 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty],
2039 [IntrNoMem]>;
2040 }
2041
2042 //===----------------------------------------------------------------------===//
2043 // XOP
2044
2045 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2046 def int_x86_xop_vpermil2pd : ClangBuiltin<"__builtin_ia32_vpermil2pd">,
2047 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty,
2048 llvm_v2i64_ty, llvm_i8_ty],
2049 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
2050
2051 def int_x86_xop_vpermil2pd_256 :
2052 ClangBuiltin<"__builtin_ia32_vpermil2pd256">,
2053 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty,
2054 llvm_v4i64_ty, llvm_i8_ty],
2055 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
2056
2057 def int_x86_xop_vpermil2ps : ClangBuiltin<"__builtin_ia32_vpermil2ps">,
2058 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty,
2059 llvm_v4i32_ty, llvm_i8_ty],
2060 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
2061 def int_x86_xop_vpermil2ps_256 :
2062 ClangBuiltin<"__builtin_ia32_vpermil2ps256">,
2063 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty,
2064 llvm_v8i32_ty, llvm_i8_ty],
2065 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
2066
2067 def int_x86_xop_vfrcz_pd : ClangBuiltin<"__builtin_ia32_vfrczpd">,
2068 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
2069 def int_x86_xop_vfrcz_ps : ClangBuiltin<"__builtin_ia32_vfrczps">,
2070 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
2071 def int_x86_xop_vfrcz_sd : ClangBuiltin<"__builtin_ia32_vfrczsd">,
2072 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
2073 def int_x86_xop_vfrcz_ss : ClangBuiltin<"__builtin_ia32_vfrczss">,
2074 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
2075 def int_x86_xop_vfrcz_pd_256 : ClangBuiltin<"__builtin_ia32_vfrczpd256">,
2076 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty], [IntrNoMem]>;
2077 def int_x86_xop_vfrcz_ps_256 : ClangBuiltin<"__builtin_ia32_vfrczps256">,
2078 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty], [IntrNoMem]>;
2079
2080 def int_x86_xop_vphaddbd :
2081 ClangBuiltin<"__builtin_ia32_vphaddbd">,
2082 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
2083 def int_x86_xop_vphaddbq :
2084 ClangBuiltin<"__builtin_ia32_vphaddbq">,
2085 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty], [IntrNoMem]>;
2086 def int_x86_xop_vphaddbw :
2087 ClangBuiltin<"__builtin_ia32_vphaddbw">,
2088 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>;
2089 def int_x86_xop_vphadddq :
2090 ClangBuiltin<"__builtin_ia32_vphadddq">,
2091 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>;
2092 def int_x86_xop_vphaddubd :
2093 ClangBuiltin<"__builtin_ia32_vphaddubd">,
2094 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
2095 def int_x86_xop_vphaddubq :
2096 ClangBuiltin<"__builtin_ia32_vphaddubq">,
2097 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v16i8_ty], [IntrNoMem]>;
2098 def int_x86_xop_vphaddubw :
2099 ClangBuiltin<"__builtin_ia32_vphaddubw">,
2100 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>;
2101 def int_x86_xop_vphaddudq :
2102 ClangBuiltin<"__builtin_ia32_vphaddudq">,
2103 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>;
2104 def int_x86_xop_vphadduwd :
2105 ClangBuiltin<"__builtin_ia32_vphadduwd">,
2106 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
2107 def int_x86_xop_vphadduwq :
2108 ClangBuiltin<"__builtin_ia32_vphadduwq">,
2109 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v8i16_ty], [IntrNoMem]>;
2110 def int_x86_xop_vphaddwd :
2111 ClangBuiltin<"__builtin_ia32_vphaddwd">,
2112 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
2113 def int_x86_xop_vphaddwq :
2114 ClangBuiltin<"__builtin_ia32_vphaddwq">,
2115 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v8i16_ty], [IntrNoMem]>;
2116 def int_x86_xop_vphsubbw :
2117 ClangBuiltin<"__builtin_ia32_vphsubbw">,
2118 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty], [IntrNoMem]>;
2119 def int_x86_xop_vphsubdq :
2120 ClangBuiltin<"__builtin_ia32_vphsubdq">,
2121 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty], [IntrNoMem]>;
2122 def int_x86_xop_vphsubwd :
2123 ClangBuiltin<"__builtin_ia32_vphsubwd">,
2124 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
2125 def int_x86_xop_vpmacsdd :
2126 ClangBuiltin<"__builtin_ia32_vpmacsdd">,
2127 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2128 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
2129 [IntrNoMem, Commutative]>;
2130 def int_x86_xop_vpmacsdqh :
2131 ClangBuiltin<"__builtin_ia32_vpmacsdqh">,
2132 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
2133 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty],
2134 [IntrNoMem, Commutative]>;
2135 def int_x86_xop_vpmacsdql :
2136 ClangBuiltin<"__builtin_ia32_vpmacsdql">,
2137 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
2138 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty],
2139 [IntrNoMem, Commutative]>;
2140 def int_x86_xop_vpmacssdd :
2141 ClangBuiltin<"__builtin_ia32_vpmacssdd">,
2142 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2143 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
2144 [IntrNoMem, Commutative]>;
2145 def int_x86_xop_vpmacssdqh :
2146 ClangBuiltin<"__builtin_ia32_vpmacssdqh">,
2147 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
2148 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty],
2149 [IntrNoMem, Commutative]>;
2150 def int_x86_xop_vpmacssdql :
2151 ClangBuiltin<"__builtin_ia32_vpmacssdql">,
2152 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
2153 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v2i64_ty],
2154 [IntrNoMem, Commutative]>;
2155 def int_x86_xop_vpmacsswd :
2156 ClangBuiltin<"__builtin_ia32_vpmacsswd">,
2157 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2158 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty],
2159 [IntrNoMem, Commutative]>;
2160 def int_x86_xop_vpmacssww :
2161 ClangBuiltin<"__builtin_ia32_vpmacssww">,
2162 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
2163 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
2164 [IntrNoMem, Commutative]>;
2165 def int_x86_xop_vpmacswd :
2166 ClangBuiltin<"__builtin_ia32_vpmacswd">,
2167 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2168 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty],
2169 [IntrNoMem, Commutative]>;
2170 def int_x86_xop_vpmacsww :
2171 ClangBuiltin<"__builtin_ia32_vpmacsww">,
2172 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
2173 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
2174 [IntrNoMem, Commutative]>;
2175 def int_x86_xop_vpmadcsswd :
2176 ClangBuiltin<"__builtin_ia32_vpmadcsswd">,
2177 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2178 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty],
2179 [IntrNoMem, Commutative]>;
2180 def int_x86_xop_vpmadcswd :
2181 ClangBuiltin<"__builtin_ia32_vpmadcswd">,
2182 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2183 [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v4i32_ty],
2184 [IntrNoMem, Commutative]>;
2185 def int_x86_xop_vpperm :
2186 ClangBuiltin<"__builtin_ia32_vpperm">,
2187 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
2188 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
2189 [IntrNoMem]>;
2190 def int_x86_xop_vpshab :
2191 ClangBuiltin<"__builtin_ia32_vpshab">,
2192 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
2193 [IntrNoMem]>;
2194 def int_x86_xop_vpshad :
2195 ClangBuiltin<"__builtin_ia32_vpshad">,
2196 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
2197 [IntrNoMem]>;
2198 def int_x86_xop_vpshaq :
2199 ClangBuiltin<"__builtin_ia32_vpshaq">,
2200 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
2201 [IntrNoMem]>;
2202 def int_x86_xop_vpshaw :
2203 ClangBuiltin<"__builtin_ia32_vpshaw">,
2204 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
2205 [IntrNoMem]>;
2206 def int_x86_xop_vpshlb :
2207 ClangBuiltin<"__builtin_ia32_vpshlb">,
2208 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
2209 [IntrNoMem]>;
2210 def int_x86_xop_vpshld :
2211 ClangBuiltin<"__builtin_ia32_vpshld">,
2212 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
2213 [IntrNoMem]>;
2214 def int_x86_xop_vpshlq :
2215 ClangBuiltin<"__builtin_ia32_vpshlq">,
2216 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
2217 [IntrNoMem]>;
2218 def int_x86_xop_vpshlw :
2219 ClangBuiltin<"__builtin_ia32_vpshlw">,
2220 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
2221 [IntrNoMem]>;
2222 }
2223
2224 //===----------------------------------------------------------------------===//
2225 // LWP
2226 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2227 def int_x86_llwpcb :
2228 ClangBuiltin<"__builtin_ia32_llwpcb">,
2229 Intrinsic<[], [llvm_ptr_ty], []>;
2230 def int_x86_slwpcb :
2231 ClangBuiltin<"__builtin_ia32_slwpcb">,
2232 Intrinsic<[llvm_ptr_ty], [], []>;
2233 def int_x86_lwpins32 :
2234 ClangBuiltin<"__builtin_ia32_lwpins32">,
2235 Intrinsic<[llvm_i8_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2236 [ImmArg<ArgIndex<2>>]>;
2237 def int_x86_lwpins64 :
2238 ClangBuiltin<"__builtin_ia32_lwpins64">,
2239 Intrinsic<[llvm_i8_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
2240 [ImmArg<ArgIndex<2>>]>;
2241 def int_x86_lwpval32 :
2242 ClangBuiltin<"__builtin_ia32_lwpval32">,
2243 Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2244 [ImmArg<ArgIndex<2>>]>;
2245 def int_x86_lwpval64 :
2246 ClangBuiltin<"__builtin_ia32_lwpval64">,
2247 Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
2248 [ImmArg<ArgIndex<2>>]>;
2249 }
2250
2251 //===----------------------------------------------------------------------===//
2252 // MMX
2253
2254 // Empty MMX state op.
2255 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2256 def int_x86_mmx_emms : ClangBuiltin<"__builtin_ia32_emms">,
2257 Intrinsic<[], [], []>;
2258 }
2259
2260 // Integer arithmetic ops.
2261 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2262 // Addition
2263 def int_x86_mmx_padd_b :
2264 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2265 [IntrNoMem, Commutative]>;
2266 def int_x86_mmx_padd_w :
2267 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2268 [IntrNoMem, Commutative]>;
2269 def int_x86_mmx_padd_d :
2270 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2271 [IntrNoMem, Commutative]>;
2272 def int_x86_mmx_padd_q :
2273 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2274 [IntrNoMem, Commutative]>;
2275
2276 def int_x86_mmx_padds_b :
2277 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2278 [IntrNoMem, Commutative]>;
2279 def int_x86_mmx_padds_w :
2280 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2281 [IntrNoMem, Commutative]>;
2282
2283 def int_x86_mmx_paddus_b :
2284 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2285 [IntrNoMem, Commutative]>;
2286 def int_x86_mmx_paddus_w :
2287 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2288 [IntrNoMem, Commutative]>;
2289
2290 // Subtraction
2291 def int_x86_mmx_psub_b :
2292 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2293 [IntrNoMem]>;
2294 def int_x86_mmx_psub_w :
2295 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2296 [IntrNoMem]>;
2297 def int_x86_mmx_psub_d :
2298 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2299 [IntrNoMem]>;
2300 def int_x86_mmx_psub_q :
2301 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2302 [IntrNoMem]>;
2303
2304 def int_x86_mmx_psubs_b :
2305 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2306 [IntrNoMem]>;
2307 def int_x86_mmx_psubs_w :
2308 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2309 [IntrNoMem]>;
2310
2311 def int_x86_mmx_psubus_b :
2312 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2313 [IntrNoMem]>;
2314 def int_x86_mmx_psubus_w :
2315 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2316 [IntrNoMem]>;
2317
2318 // Multiplication
2319 def int_x86_mmx_pmulh_w :
2320 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2321 [IntrNoMem, Commutative]>;
2322 def int_x86_mmx_pmull_w :
2323 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2324 [IntrNoMem, Commutative]>;
2325 def int_x86_mmx_pmulhu_w :
2326 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2327 [IntrNoMem, Commutative]>;
2328 def int_x86_mmx_pmulu_dq :
2329 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2330 [IntrNoMem, Commutative]>;
2331 def int_x86_mmx_pmadd_wd :
2332 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2333 [IntrNoMem, Commutative]>;
2334
2335 // Bitwise operations
2336 def int_x86_mmx_pand :
2337 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2338 [IntrNoMem, Commutative]>;
2339 def int_x86_mmx_pandn :
2340 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2341 [IntrNoMem]>;
2342 def int_x86_mmx_por :
2343 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2344 [IntrNoMem, Commutative]>;
2345 def int_x86_mmx_pxor :
2346 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2347 [IntrNoMem, Commutative]>;
2348
2349 // Averages
2350 def int_x86_mmx_pavg_b :
2351 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2352 [IntrNoMem, Commutative]>;
2353 def int_x86_mmx_pavg_w :
2354 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2355 [IntrNoMem, Commutative]>;
2356
2357 // Maximum
2358 def int_x86_mmx_pmaxu_b :
2359 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2360 [IntrNoMem, Commutative]>;
2361 def int_x86_mmx_pmaxs_w :
2362 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2363 [IntrNoMem, Commutative]>;
2364
2365 // Minimum
2366 def int_x86_mmx_pminu_b :
2367 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2368 [IntrNoMem, Commutative]>;
2369 def int_x86_mmx_pmins_w :
2370 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2371 [IntrNoMem, Commutative]>;
2372
2373 // Packed sum of absolute differences
2374 def int_x86_mmx_psad_bw :
2375 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2376 [IntrNoMem, Commutative]>;
2377 }
2378
2379 // Integer shift ops.
2380 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2381 // Shift left logical
2382 def int_x86_mmx_psll_w :
2383 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2384 [IntrNoMem]>;
2385 def int_x86_mmx_psll_d :
2386 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2387 [IntrNoMem]>;
2388 def int_x86_mmx_psll_q :
2389 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2390 [IntrNoMem]>;
2391
2392 def int_x86_mmx_psrl_w :
2393 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2394 [IntrNoMem]>;
2395 def int_x86_mmx_psrl_d :
2396 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2397 [IntrNoMem]>;
2398 def int_x86_mmx_psrl_q :
2399 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2400 [IntrNoMem]>;
2401
2402 def int_x86_mmx_psra_w :
2403 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2404 [IntrNoMem]>;
2405 def int_x86_mmx_psra_d :
2406 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2407 [IntrNoMem]>;
2408
2409 // Oddly these don't require an immediate due to a gcc compatibility issue.
2410 def int_x86_mmx_pslli_w :
2411 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty],
2412 [IntrNoMem]>;
2413 def int_x86_mmx_pslli_d :
2414 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty],
2415 [IntrNoMem]>;
2416 def int_x86_mmx_pslli_q :
2417 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty],
2418 [IntrNoMem]>;
2419
2420 def int_x86_mmx_psrli_w :
2421 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty],
2422 [IntrNoMem]>;
2423 def int_x86_mmx_psrli_d :
2424 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty],
2425 [IntrNoMem]>;
2426 def int_x86_mmx_psrli_q :
2427 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty],
2428 [IntrNoMem]>;
2429
2430 def int_x86_mmx_psrai_w :
2431 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty],
2432 [IntrNoMem]>;
2433 def int_x86_mmx_psrai_d :
2434 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_i32_ty],
2435 [IntrNoMem]>;
2436 }
2437 // Permute
2438 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2439 def int_x86_avx512_permvar_df_256 : ClangBuiltin<"__builtin_ia32_permvardf256">,
2440 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4i64_ty],
2441 [IntrNoMem]>;
2442 def int_x86_avx512_permvar_df_512 : ClangBuiltin<"__builtin_ia32_permvardf512">,
2443 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8i64_ty],
2444 [IntrNoMem]>;
2445 def int_x86_avx512_permvar_di_256 : ClangBuiltin<"__builtin_ia32_permvardi256">,
2446 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
2447 [IntrNoMem]>;
2448 def int_x86_avx512_permvar_di_512 : ClangBuiltin<"__builtin_ia32_permvardi512">,
2449 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty],
2450 [IntrNoMem]>;
2451 def int_x86_avx512_permvar_hi_128 : ClangBuiltin<"__builtin_ia32_permvarhi128">,
2452 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
2453 [IntrNoMem]>;
2454 def int_x86_avx512_permvar_hi_256 : ClangBuiltin<"__builtin_ia32_permvarhi256">,
2455 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty],
2456 [IntrNoMem]>;
2457 def int_x86_avx512_permvar_hi_512 : ClangBuiltin<"__builtin_ia32_permvarhi512">,
2458 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
2459 [IntrNoMem]>;
2460 def int_x86_avx512_permvar_qi_128 : ClangBuiltin<"__builtin_ia32_permvarqi128">,
2461 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
2462 [IntrNoMem]>;
2463 def int_x86_avx512_permvar_qi_256 : ClangBuiltin<"__builtin_ia32_permvarqi256">,
2464 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty],
2465 [IntrNoMem]>;
2466 def int_x86_avx512_permvar_qi_512 : ClangBuiltin<"__builtin_ia32_permvarqi512">,
2467 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty],
2468 [IntrNoMem]>;
2469 def int_x86_avx512_permvar_sf_512 : ClangBuiltin<"__builtin_ia32_permvarsf512">,
2470 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16i32_ty],
2471 [IntrNoMem]>;
2472 def int_x86_avx512_permvar_si_512 : ClangBuiltin<"__builtin_ia32_permvarsi512">,
2473 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_v16i32_ty],
2474 [IntrNoMem]>;
2475 }
2476 // Pack ops.
2477 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2478 def int_x86_mmx_packsswb :
2479 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2480 [IntrNoMem]>;
2481 def int_x86_mmx_packssdw :
2482 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2483 [IntrNoMem]>;
2484 def int_x86_mmx_packuswb :
2485 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2486 [IntrNoMem]>;
2487 }
2488
2489 // Unpacking ops.
2490 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2491 def int_x86_mmx_punpckhbw :
2492 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2493 [IntrNoMem]>;
2494 def int_x86_mmx_punpckhwd :
2495 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2496 [IntrNoMem]>;
2497 def int_x86_mmx_punpckhdq :
2498 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2499 [IntrNoMem]>;
2500 def int_x86_mmx_punpcklbw :
2501 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2502 [IntrNoMem]>;
2503 def int_x86_mmx_punpcklwd :
2504 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2505 [IntrNoMem]>;
2506 def int_x86_mmx_punpckldq :
2507 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2508 [IntrNoMem]>;
2509 }
2510
2511 // Integer comparison ops
2512 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2513 def int_x86_mmx_pcmpeq_b :
2514 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2515 [IntrNoMem, Commutative]>;
2516 def int_x86_mmx_pcmpeq_w :
2517 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2518 [IntrNoMem, Commutative]>;
2519 def int_x86_mmx_pcmpeq_d :
2520 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2521 [IntrNoMem, Commutative]>;
2522
2523 def int_x86_mmx_pcmpgt_b :
2524 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2525 [IntrNoMem]>;
2526 def int_x86_mmx_pcmpgt_w :
2527 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2528 [IntrNoMem]>;
2529 def int_x86_mmx_pcmpgt_d :
2530 DefaultAttrsIntrinsic<[llvm_x86mmx_ty], [llvm_x86mmx_ty, llvm_x86mmx_ty],
2531 [IntrNoMem]>;
2532 }
2533
2534 // Misc.
2535 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2536 def int_x86_mmx_maskmovq :
2537 Intrinsic<[], [llvm_x86mmx_ty, llvm_x86mmx_ty, llvm_ptr_ty], []>;
2538
2539 def int_x86_mmx_pmovmskb :
2540 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_x86mmx_ty], [IntrNoMem]>;
2541
2542 def int_x86_mmx_movnt_dq :
2543 Intrinsic<[], [llvm_ptr_ty, llvm_x86mmx_ty], []>;
2544
2545 def int_x86_mmx_palignr_b :
2546 DefaultAttrsIntrinsic<[llvm_x86mmx_ty],
2547 [llvm_x86mmx_ty, llvm_x86mmx_ty, llvm_i8_ty],
2548 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
2549
2550 def int_x86_mmx_pextr_w :
2551 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_x86mmx_ty, llvm_i32_ty],
2552 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2553
2554 def int_x86_mmx_pinsr_w :
2555 DefaultAttrsIntrinsic<[llvm_x86mmx_ty],
2556 [llvm_x86mmx_ty, llvm_i32_ty, llvm_i32_ty],
2557 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
2558 }
2559
2560 //===----------------------------------------------------------------------===//
2561 // BMI
2562
2563 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2564 def int_x86_bmi_bextr_32 : ClangBuiltin<"__builtin_ia32_bextr_u32">,
2565 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
2566 [IntrNoMem]>;
2567 def int_x86_bmi_bextr_64 : ClangBuiltin<"__builtin_ia32_bextr_u64">,
2568 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
2569 [IntrNoMem]>;
2570 def int_x86_bmi_bzhi_32 : ClangBuiltin<"__builtin_ia32_bzhi_si">,
2571 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
2572 [IntrNoMem]>;
2573 def int_x86_bmi_bzhi_64 : ClangBuiltin<"__builtin_ia32_bzhi_di">,
2574 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
2575 [IntrNoMem]>;
2576 def int_x86_bmi_pdep_32 : ClangBuiltin<"__builtin_ia32_pdep_si">,
2577 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
2578 [IntrNoMem]>;
2579 def int_x86_bmi_pdep_64 : ClangBuiltin<"__builtin_ia32_pdep_di">,
2580 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
2581 [IntrNoMem]>;
2582 def int_x86_bmi_pext_32 : ClangBuiltin<"__builtin_ia32_pext_si">,
2583 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
2584 [IntrNoMem]>;
2585 def int_x86_bmi_pext_64 : ClangBuiltin<"__builtin_ia32_pext_di">,
2586 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
2587 [IntrNoMem]>;
2588 }
2589
2590 //===----------------------------------------------------------------------===//
2591 // FS/GS Base
2592
2593 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2594 def int_x86_rdfsbase_32 : ClangBuiltin<"__builtin_ia32_rdfsbase32">,
2595 Intrinsic<[llvm_i32_ty], []>;
2596 def int_x86_rdgsbase_32 : ClangBuiltin<"__builtin_ia32_rdgsbase32">,
2597 Intrinsic<[llvm_i32_ty], []>;
2598 def int_x86_rdfsbase_64 : ClangBuiltin<"__builtin_ia32_rdfsbase64">,
2599 Intrinsic<[llvm_i64_ty], []>;
2600 def int_x86_rdgsbase_64 : ClangBuiltin<"__builtin_ia32_rdgsbase64">,
2601 Intrinsic<[llvm_i64_ty], []>;
2602 def int_x86_wrfsbase_32 : ClangBuiltin<"__builtin_ia32_wrfsbase32">,
2603 Intrinsic<[], [llvm_i32_ty]>;
2604 def int_x86_wrgsbase_32 : ClangBuiltin<"__builtin_ia32_wrgsbase32">,
2605 Intrinsic<[], [llvm_i32_ty]>;
2606 def int_x86_wrfsbase_64 : ClangBuiltin<"__builtin_ia32_wrfsbase64">,
2607 Intrinsic<[], [llvm_i64_ty]>;
2608 def int_x86_wrgsbase_64 : ClangBuiltin<"__builtin_ia32_wrgsbase64">,
2609 Intrinsic<[], [llvm_i64_ty]>;
2610 }
2611
2612 //===----------------------------------------------------------------------===//
2613 // FXSR
2614 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2615 def int_x86_fxrstor : ClangBuiltin<"__builtin_ia32_fxrstor">,
2616 Intrinsic<[], [llvm_ptr_ty], []>;
2617 def int_x86_fxrstor64 : ClangBuiltin<"__builtin_ia32_fxrstor64">,
2618 Intrinsic<[], [llvm_ptr_ty], []>;
2619 def int_x86_fxsave : ClangBuiltin<"__builtin_ia32_fxsave">,
2620 Intrinsic<[], [llvm_ptr_ty], []>;
2621 def int_x86_fxsave64 : ClangBuiltin<"__builtin_ia32_fxsave64">,
2622 Intrinsic<[], [llvm_ptr_ty], []>;
2623 }
2624
2625 //===----------------------------------------------------------------------===//
2626 // XSAVE
2627 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2628 def int_x86_xsave :
2629 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2630 def int_x86_xsave64 :
2631 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2632 def int_x86_xrstor :
2633 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2634 def int_x86_xrstor64 :
2635 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2636 def int_x86_xsaveopt :
2637 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2638 def int_x86_xsaveopt64 :
2639 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2640 def int_x86_xrstors :
2641 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2642 def int_x86_xrstors64 :
2643 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2644 def int_x86_xsavec :
2645 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2646 def int_x86_xsavec64 :
2647 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2648 def int_x86_xsaves :
2649 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2650 def int_x86_xsaves64 :
2651 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], []>;
2652 def int_x86_xgetbv :
2653 Intrinsic<[llvm_i64_ty], [llvm_i32_ty], []>;
2654 def int_x86_xsetbv :
2655 Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>;
2656 }
2657
2658 //===----------------------------------------------------------------------===//
2659 // CLFLUSHOPT and CLWB
2660 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2661 def int_x86_clflushopt : ClangBuiltin<"__builtin_ia32_clflushopt">,
2662 Intrinsic<[], [llvm_ptr_ty], []>;
2663
2664 def int_x86_clwb : ClangBuiltin<"__builtin_ia32_clwb">,
2665 Intrinsic<[], [llvm_ptr_ty], []>;
2666 }
2667
2668 //===----------------------------------------------------------------------===//
2669 // Support protection key
2670 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2671 def int_x86_rdpkru : ClangBuiltin <"__builtin_ia32_rdpkru">,
2672 Intrinsic<[llvm_i32_ty], [], []>;
2673 def int_x86_wrpkru : ClangBuiltin<"__builtin_ia32_wrpkru">,
2674 Intrinsic<[], [llvm_i32_ty], []>;
2675 }
2676 //===----------------------------------------------------------------------===//
2677 // Half float conversion
2678
2679 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2680 def int_x86_vcvtps2ph_128 : ClangBuiltin<"__builtin_ia32_vcvtps2ph">,
2681 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_i32_ty],
2682 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2683 def int_x86_vcvtps2ph_256 : ClangBuiltin<"__builtin_ia32_vcvtps2ph256">,
2684 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f32_ty, llvm_i32_ty],
2685 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2686 def int_x86_avx512_mask_vcvtph2ps_512 :
2687 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16i16_ty, llvm_v16f32_ty,
2688 llvm_i16_ty, llvm_i32_ty],
2689 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
2690 def int_x86_avx512_mask_vcvtps2ph_512 : ClangBuiltin<"__builtin_ia32_vcvtps2ph512_mask">,
2691 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16f32_ty, llvm_i32_ty,
2692 llvm_v16i16_ty, llvm_i16_ty],
2693 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2694 def int_x86_avx512_mask_vcvtps2ph_256 : ClangBuiltin<"__builtin_ia32_vcvtps2ph256_mask">,
2695 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f32_ty, llvm_i32_ty,
2696 llvm_v8i16_ty, llvm_i8_ty],
2697 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2698 def int_x86_avx512_mask_vcvtps2ph_128 : ClangBuiltin<"__builtin_ia32_vcvtps2ph_mask">,
2699 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_i32_ty,
2700 llvm_v8i16_ty, llvm_i8_ty],
2701 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2702 }
2703
2704 //===----------------------------------------------------------------------===//
2705 // TBM
2706
2707 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2708 def int_x86_tbm_bextri_u32 : ClangBuiltin<"__builtin_ia32_bextri_u32">,
2709 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
2710 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2711 def int_x86_tbm_bextri_u64 : ClangBuiltin<"__builtin_ia32_bextri_u64">,
2712 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
2713 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2714 }
2715
2716 //===----------------------------------------------------------------------===//
2717 // RDRAND intrinsics - Return a random value and whether it is valid.
2718 // RDSEED intrinsics - Return a NIST SP800-90B & C compliant random value and
2719 // whether it is valid.
2720
2721 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2722 // These are declared side-effecting so they don't get eliminated by CSE or
2723 // LICM.
2724 def int_x86_rdrand_16 : Intrinsic<[llvm_i16_ty, llvm_i32_ty], [], []>;
2725 def int_x86_rdrand_32 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [], []>;
2726 def int_x86_rdrand_64 : Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>;
2727 def int_x86_rdseed_16 : Intrinsic<[llvm_i16_ty, llvm_i32_ty], [], []>;
2728 def int_x86_rdseed_32 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [], []>;
2729 def int_x86_rdseed_64 : Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>;
2730 }
2731
2732 //===----------------------------------------------------------------------===//
2733 // ADX
2734
2735 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2736 def int_x86_addcarry_32:
2737 DefaultAttrsIntrinsic<[llvm_i8_ty, llvm_i32_ty],
2738 [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty],
2739 [IntrNoMem]>;
2740 def int_x86_addcarry_64:
2741 DefaultAttrsIntrinsic<[llvm_i8_ty, llvm_i64_ty],
2742 [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty],
2743 [IntrNoMem]>;
2744 def int_x86_subborrow_32:
2745 DefaultAttrsIntrinsic<[llvm_i8_ty, llvm_i32_ty],
2746 [llvm_i8_ty, llvm_i32_ty, llvm_i32_ty],
2747 [IntrNoMem]>;
2748 def int_x86_subborrow_64:
2749 DefaultAttrsIntrinsic<[llvm_i8_ty, llvm_i64_ty],
2750 [llvm_i8_ty, llvm_i64_ty, llvm_i64_ty],
2751 [IntrNoMem]>;
2752 }
2753
2754 //===----------------------------------------------------------------------===//
2755 // RTM intrinsics. Transactional Memory support.
2756
2757 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2758 def int_x86_xbegin : ClangBuiltin<"__builtin_ia32_xbegin">,
2759 Intrinsic<[llvm_i32_ty], [], []>;
2760 def int_x86_xend : ClangBuiltin<"__builtin_ia32_xend">,
2761 Intrinsic<[], [], []>;
2762 def int_x86_xabort : ClangBuiltin<"__builtin_ia32_xabort">,
2763 Intrinsic<[], [llvm_i8_ty], [ImmArg<ArgIndex<0>>]>;
2764 def int_x86_xtest : ClangBuiltin<"__builtin_ia32_xtest">,
2765 Intrinsic<[llvm_i32_ty], [], []>;
2766 }
2767
2768 //===----------------------------------------------------------------------===//
2769 // AVX512
2770
2771 // Mask ops
2772 let TargetPrefix = "x86" in {
2773 def int_x86_avx512_kadd_b :
2774 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8i1_ty, llvm_v8i1_ty],
2775 [IntrNoMem]>;
2776 def int_x86_avx512_kadd_w :
2777 DefaultAttrsIntrinsic<[llvm_v16i1_ty], [llvm_v16i1_ty, llvm_v16i1_ty],
2778 [IntrNoMem]>;
2779 def int_x86_avx512_kadd_d :
2780 DefaultAttrsIntrinsic<[llvm_v32i1_ty], [llvm_v32i1_ty, llvm_v32i1_ty],
2781 [IntrNoMem]>;
2782 def int_x86_avx512_kadd_q :
2783 DefaultAttrsIntrinsic<[llvm_v64i1_ty], [llvm_v64i1_ty, llvm_v64i1_ty],
2784 [IntrNoMem]>;
2785
2786 def int_x86_avx512_ktestc_b :
2787 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8i1_ty, llvm_v8i1_ty],
2788 [IntrNoMem]>;
2789 def int_x86_avx512_ktestc_w :
2790 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v16i1_ty, llvm_v16i1_ty],
2791 [IntrNoMem]>;
2792 def int_x86_avx512_ktestc_d :
2793 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v32i1_ty, llvm_v32i1_ty],
2794 [IntrNoMem]>;
2795 def int_x86_avx512_ktestc_q :
2796 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v64i1_ty, llvm_v64i1_ty],
2797 [IntrNoMem]>;
2798
2799 def int_x86_avx512_ktestz_b :
2800 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8i1_ty, llvm_v8i1_ty],
2801 [IntrNoMem]>;
2802 def int_x86_avx512_ktestz_w :
2803 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v16i1_ty, llvm_v16i1_ty],
2804 [IntrNoMem]>;
2805 def int_x86_avx512_ktestz_d :
2806 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v32i1_ty, llvm_v32i1_ty],
2807 [IntrNoMem]>;
2808 def int_x86_avx512_ktestz_q :
2809 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v64i1_ty, llvm_v64i1_ty],
2810 [IntrNoMem]>;
2811 }
2812
2813 // Conversion ops
2814 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2815 def int_x86_avx512_cvttss2si : ClangBuiltin<"__builtin_ia32_vcvttss2si32">,
2816 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
2817 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2818 def int_x86_avx512_cvttss2si64 : ClangBuiltin<"__builtin_ia32_vcvttss2si64">,
2819 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
2820 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2821 def int_x86_avx512_cvttss2usi : ClangBuiltin<"__builtin_ia32_vcvttss2usi32">,
2822 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
2823 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2824 def int_x86_avx512_cvttss2usi64 : ClangBuiltin<"__builtin_ia32_vcvttss2usi64">,
2825 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
2826 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2827 def int_x86_avx512_cvtusi2ss : ClangBuiltin<"__builtin_ia32_cvtusi2ss32">,
2828 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
2829 [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty],
2830 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
2831 def int_x86_avx512_cvtusi642ss : ClangBuiltin<"__builtin_ia32_cvtusi2ss64">,
2832 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
2833 [llvm_v4f32_ty, llvm_i64_ty, llvm_i32_ty],
2834 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
2835 def int_x86_avx512_cvttsd2si : ClangBuiltin<"__builtin_ia32_vcvttsd2si32">,
2836 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
2837 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2838 def int_x86_avx512_cvttsd2si64 : ClangBuiltin<"__builtin_ia32_vcvttsd2si64">,
2839 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
2840 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2841 def int_x86_avx512_cvttsd2usi : ClangBuiltin<"__builtin_ia32_vcvttsd2usi32">,
2842 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
2843 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2844 def int_x86_avx512_cvttsd2usi64 : ClangBuiltin<"__builtin_ia32_vcvttsd2usi64">,
2845 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
2846 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2847 def int_x86_avx512_cvtusi642sd : ClangBuiltin<"__builtin_ia32_cvtusi2sd64">,
2848 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
2849 [llvm_v2f64_ty, llvm_i64_ty, llvm_i32_ty],
2850 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
2851 def int_x86_avx512_vcvtss2usi32 : ClangBuiltin<"__builtin_ia32_vcvtss2usi32">,
2852 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
2853 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2854 def int_x86_avx512_vcvtss2usi64 : ClangBuiltin<"__builtin_ia32_vcvtss2usi64">,
2855 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
2856 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2857 def int_x86_avx512_vcvtss2si32 : ClangBuiltin<"__builtin_ia32_vcvtss2si32">,
2858 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
2859 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2860 def int_x86_avx512_vcvtss2si64 : ClangBuiltin<"__builtin_ia32_vcvtss2si64">,
2861 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
2862 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2863 def int_x86_avx512_vcvtsd2usi32 : ClangBuiltin<"__builtin_ia32_vcvtsd2usi32">,
2864 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
2865 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2866 def int_x86_avx512_vcvtsd2usi64 : ClangBuiltin<"__builtin_ia32_vcvtsd2usi64">,
2867 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
2868 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2869 def int_x86_avx512_vcvtsd2si32 : ClangBuiltin<"__builtin_ia32_vcvtsd2si32">,
2870 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
2871 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2872 def int_x86_avx512_vcvtsd2si64 : ClangBuiltin<"__builtin_ia32_vcvtsd2si64">,
2873 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
2874 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2875 def int_x86_avx512_cvtsi2ss32 : ClangBuiltin<"__builtin_ia32_cvtsi2ss32">,
2876 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
2877 [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty],
2878 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
2879 def int_x86_avx512_cvtsi2ss64 : ClangBuiltin<"__builtin_ia32_cvtsi2ss64">,
2880 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
2881 [llvm_v4f32_ty, llvm_i64_ty, llvm_i32_ty],
2882 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
2883 def int_x86_avx512_cvtsi2sd64 : ClangBuiltin<"__builtin_ia32_cvtsi2sd64">,
2884 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
2885 [llvm_v2f64_ty, llvm_i64_ty, llvm_i32_ty],
2886 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
2887 }
2888
2889 // Pack ops.
2890 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2891 def int_x86_avx512_packsswb_512 : ClangBuiltin<"__builtin_ia32_packsswb512">,
2892 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32i16_ty,llvm_v32i16_ty],
2893 [IntrNoMem]>;
2894 def int_x86_avx512_packssdw_512 : ClangBuiltin<"__builtin_ia32_packssdw512">,
2895 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty],
2896 [IntrNoMem]>;
2897 def int_x86_avx512_packuswb_512 : ClangBuiltin<"__builtin_ia32_packuswb512">,
2898 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32i16_ty,llvm_v32i16_ty],
2899 [IntrNoMem]>;
2900 def int_x86_avx512_packusdw_512 : ClangBuiltin<"__builtin_ia32_packusdw512">,
2901 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v16i32_ty, llvm_v16i32_ty],
2902 [IntrNoMem]>;
2903 }
2904
2905 // Vector convert
2906 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
2907 def int_x86_avx512_sitofp_round :
2908 DefaultAttrsIntrinsic<[llvm_anyfloat_ty], [llvm_anyint_ty, llvm_i32_ty],
2909 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2910
2911 def int_x86_avx512_uitofp_round :
2912 DefaultAttrsIntrinsic<[llvm_anyfloat_ty], [llvm_anyint_ty, llvm_i32_ty],
2913 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
2914
2915 def int_x86_avx512_mask_cvtpd2dq_128 :
2916 ClangBuiltin<"__builtin_ia32_cvtpd2dq128_mask">,
2917 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2918 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty],
2919 [IntrNoMem]>;
2920
2921 def int_x86_avx512_mask_cvtpd2dq_512 :
2922 ClangBuiltin<"__builtin_ia32_cvtpd2dq512_mask">,
2923 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
2924 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
2925 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
2926
2927 def int_x86_avx512_mask_cvtpd2ps_512 :
2928 ClangBuiltin<"__builtin_ia32_cvtpd2ps512_mask">,
2929 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
2930 [llvm_v8f64_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
2931 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
2932
2933 def int_x86_avx512_mask_cvtsd2ss_round :
2934 ClangBuiltin<"__builtin_ia32_cvtsd2ss_round_mask">,
2935 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
2936 [llvm_v4f32_ty, llvm_v2f64_ty, llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty],
2937 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
2938
2939 def int_x86_avx512_mask_cvtss2sd_round :
2940 ClangBuiltin<"__builtin_ia32_cvtss2sd_round_mask">,
2941 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
2942 [llvm_v2f64_ty, llvm_v4f32_ty, llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty],
2943 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
2944
2945 def int_x86_avx512_mask_cvtpd2ps :
2946 ClangBuiltin<"__builtin_ia32_cvtpd2ps_mask">,
2947 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
2948 [llvm_v2f64_ty, llvm_v4f32_ty, llvm_i8_ty],
2949 [IntrNoMem]>;
2950
2951 def int_x86_avx512_mask_cvtpd2qq_128 :
2952 ClangBuiltin<"__builtin_ia32_cvtpd2qq128_mask">,
2953 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
2954 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty],
2955 [IntrNoMem]>;
2956
2957 def int_x86_avx512_mask_cvtpd2qq_256 :
2958 ClangBuiltin<"__builtin_ia32_cvtpd2qq256_mask">,
2959 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
2960 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty],
2961 [IntrNoMem]>;
2962
2963 def int_x86_avx512_mask_cvtpd2qq_512 :
2964 ClangBuiltin<"__builtin_ia32_cvtpd2qq512_mask">,
2965 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
2966 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
2967 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
2968
2969 def int_x86_avx512_mask_cvtpd2udq_128 :
2970 ClangBuiltin<"__builtin_ia32_cvtpd2udq128_mask">,
2971 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2972 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty],
2973 [IntrNoMem]>;
2974
2975 def int_x86_avx512_mask_cvtpd2udq_256 :
2976 ClangBuiltin<"__builtin_ia32_cvtpd2udq256_mask">,
2977 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
2978 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty],
2979 [IntrNoMem]>;
2980
2981 def int_x86_avx512_mask_cvtpd2udq_512 :
2982 ClangBuiltin<"__builtin_ia32_cvtpd2udq512_mask">,
2983 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
2984 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
2985 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
2986
2987 def int_x86_avx512_mask_cvtpd2uqq_128 :
2988 ClangBuiltin<"__builtin_ia32_cvtpd2uqq128_mask">,
2989 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
2990 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty],
2991 [IntrNoMem]>;
2992
2993 def int_x86_avx512_mask_cvtpd2uqq_256 :
2994 ClangBuiltin<"__builtin_ia32_cvtpd2uqq256_mask">,
2995 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
2996 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty],
2997 [IntrNoMem]>;
2998
2999 def int_x86_avx512_mask_cvtpd2uqq_512 :
3000 ClangBuiltin<"__builtin_ia32_cvtpd2uqq512_mask">,
3001 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
3002 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3003 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3004
3005 def int_x86_avx512_mask_cvtps2dq_128 :
3006 ClangBuiltin<"__builtin_ia32_cvtps2dq128_mask">,
3007 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
3008 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
3009 [IntrNoMem]>;
3010
3011 def int_x86_avx512_mask_cvtps2dq_256 :
3012 ClangBuiltin<"__builtin_ia32_cvtps2dq256_mask">,
3013 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
3014 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty],
3015 [IntrNoMem]>;
3016
3017 def int_x86_avx512_mask_cvtps2dq_512 :
3018 ClangBuiltin<"__builtin_ia32_cvtps2dq512_mask">,
3019 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
3020 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
3021 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3022
3023 def int_x86_avx512_mask_cvtps2pd_512 :
3024 ClangBuiltin<"__builtin_ia32_cvtps2pd512_mask">,
3025 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3026 [llvm_v8f32_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty],
3027 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3028
3029 def int_x86_avx512_mask_cvtps2qq_128 :
3030 ClangBuiltin<"__builtin_ia32_cvtps2qq128_mask">,
3031 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
3032 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty],
3033 [IntrNoMem]>;
3034
3035 def int_x86_avx512_mask_cvtps2qq_256 :
3036 ClangBuiltin<"__builtin_ia32_cvtps2qq256_mask">,
3037 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
3038 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty],
3039 [IntrNoMem]>;
3040
3041 def int_x86_avx512_mask_cvtps2qq_512 :
3042 ClangBuiltin<"__builtin_ia32_cvtps2qq512_mask">,
3043 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
3044 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3045 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3046
3047 def int_x86_avx512_mask_cvtps2udq_128 :
3048 ClangBuiltin<"__builtin_ia32_cvtps2udq128_mask">,
3049 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
3050 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
3051 [IntrNoMem]>;
3052
3053 def int_x86_avx512_mask_cvtps2udq_256 :
3054 ClangBuiltin<"__builtin_ia32_cvtps2udq256_mask">,
3055 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
3056 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty],
3057 [IntrNoMem]>;
3058
3059 def int_x86_avx512_mask_cvtps2udq_512 :
3060 ClangBuiltin<"__builtin_ia32_cvtps2udq512_mask">,
3061 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
3062 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
3063 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3064
3065 def int_x86_avx512_mask_cvtps2uqq_128 :
3066 ClangBuiltin<"__builtin_ia32_cvtps2uqq128_mask">,
3067 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
3068 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty],
3069 [IntrNoMem]>;
3070
3071 def int_x86_avx512_mask_cvtps2uqq_256 :
3072 ClangBuiltin<"__builtin_ia32_cvtps2uqq256_mask">,
3073 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
3074 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty],
3075 [IntrNoMem]>;
3076
3077 def int_x86_avx512_mask_cvtps2uqq_512 :
3078 ClangBuiltin<"__builtin_ia32_cvtps2uqq512_mask">,
3079 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
3080 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3081 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3082
3083 def int_x86_avx512_mask_cvtqq2ps_128 :
3084 ClangBuiltin<"__builtin_ia32_cvtqq2ps128_mask">,
3085 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3086 [llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty],
3087 [IntrNoMem]>;
3088
3089 def int_x86_avx512_mask_cvttpd2dq_128 :
3090 ClangBuiltin<"__builtin_ia32_cvttpd2dq128_mask">,
3091 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
3092 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty],
3093 [IntrNoMem]>;
3094
3095 def int_x86_avx512_mask_cvttpd2dq_512 :
3096 ClangBuiltin<"__builtin_ia32_cvttpd2dq512_mask">,
3097 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
3098 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
3099 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3100
3101 def int_x86_avx512_mask_cvttpd2qq_128 :
3102 ClangBuiltin<"__builtin_ia32_cvttpd2qq128_mask">,
3103 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
3104 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty],
3105 [IntrNoMem]>;
3106
3107 def int_x86_avx512_mask_cvttpd2qq_256 :
3108 ClangBuiltin<"__builtin_ia32_cvttpd2qq256_mask">,
3109 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
3110 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty],
3111 [IntrNoMem]>;
3112
3113 def int_x86_avx512_mask_cvttpd2qq_512 :
3114 ClangBuiltin<"__builtin_ia32_cvttpd2qq512_mask">,
3115 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
3116 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3117 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3118
3119 def int_x86_avx512_mask_cvttpd2udq_128 :
3120 ClangBuiltin<"__builtin_ia32_cvttpd2udq128_mask">,
3121 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
3122 [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty],
3123 [IntrNoMem]>;
3124
3125 def int_x86_avx512_mask_cvttpd2udq_256 :
3126 ClangBuiltin<"__builtin_ia32_cvttpd2udq256_mask">,
3127 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
3128 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty],
3129 [IntrNoMem]>;
3130
3131 def int_x86_avx512_mask_cvttpd2udq_512 :
3132 ClangBuiltin<"__builtin_ia32_cvttpd2udq512_mask">,
3133 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
3134 [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
3135 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3136
3137 def int_x86_avx512_mask_cvttpd2uqq_128 :
3138 ClangBuiltin<"__builtin_ia32_cvttpd2uqq128_mask">,
3139 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
3140 [llvm_v2f64_ty, llvm_v2i64_ty, llvm_i8_ty],
3141 [IntrNoMem]>;
3142
3143 def int_x86_avx512_mask_cvttpd2uqq_256 :
3144 ClangBuiltin<"__builtin_ia32_cvttpd2uqq256_mask">,
3145 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
3146 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty],
3147 [IntrNoMem]>;
3148
3149 def int_x86_avx512_mask_cvttpd2uqq_512 :
3150 ClangBuiltin<"__builtin_ia32_cvttpd2uqq512_mask">,
3151 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
3152 [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3153 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3154
3155 def int_x86_avx512_mask_cvttps2dq_512 :
3156 ClangBuiltin<"__builtin_ia32_cvttps2dq512_mask">,
3157 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
3158 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
3159 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3160
3161 def int_x86_avx512_mask_cvttps2qq_128 :
3162 ClangBuiltin<"__builtin_ia32_cvttps2qq128_mask">,
3163 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
3164 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty],
3165 [IntrNoMem]>;
3166
3167 def int_x86_avx512_mask_cvttps2qq_256 :
3168 ClangBuiltin<"__builtin_ia32_cvttps2qq256_mask">,
3169 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
3170 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty],
3171 [IntrNoMem]>;
3172
3173 def int_x86_avx512_mask_cvttps2qq_512 :
3174 ClangBuiltin<"__builtin_ia32_cvttps2qq512_mask">,
3175 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
3176 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3177 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3178
3179 def int_x86_avx512_mask_cvttps2udq_128 :
3180 ClangBuiltin<"__builtin_ia32_cvttps2udq128_mask">,
3181 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
3182 [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
3183 [IntrNoMem]>;
3184
3185 def int_x86_avx512_mask_cvttps2udq_256 :
3186 ClangBuiltin<"__builtin_ia32_cvttps2udq256_mask">,
3187 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
3188 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty],
3189 [IntrNoMem]>;
3190
3191 def int_x86_avx512_mask_cvttps2udq_512 :
3192 ClangBuiltin<"__builtin_ia32_cvttps2udq512_mask">,
3193 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
3194 [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
3195 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3196
3197 def int_x86_avx512_mask_cvttps2uqq_128 :
3198 ClangBuiltin<"__builtin_ia32_cvttps2uqq128_mask">,
3199 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
3200 [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty],
3201 [IntrNoMem]>;
3202
3203 def int_x86_avx512_mask_cvttps2uqq_256 :
3204 ClangBuiltin<"__builtin_ia32_cvttps2uqq256_mask">,
3205 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
3206 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty],
3207 [IntrNoMem]>;
3208
3209 def int_x86_avx512_mask_cvttps2uqq_512 :
3210 ClangBuiltin<"__builtin_ia32_cvttps2uqq512_mask">,
3211 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
3212 [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3213 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3214
3215 def int_x86_avx512_mask_cvtuqq2ps_128 :
3216 ClangBuiltin<"__builtin_ia32_cvtuqq2ps128_mask">,
3217 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3218 [llvm_v2i64_ty, llvm_v4f32_ty, llvm_i8_ty],
3219 [IntrNoMem]>;
3220
3221 def int_x86_avx512_mask_rndscale_pd_128 : ClangBuiltin<"__builtin_ia32_rndscalepd_128_mask">,
3222 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3223 [llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty,
3224 llvm_i8_ty],
3225 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3226 def int_x86_avx512_mask_rndscale_pd_256 : ClangBuiltin<"__builtin_ia32_rndscalepd_256_mask">,
3227 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3228 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty,
3229 llvm_i8_ty],
3230 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3231 def int_x86_avx512_mask_rndscale_pd_512 : ClangBuiltin<"__builtin_ia32_rndscalepd_mask">,
3232 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3233 [llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty,
3234 llvm_i8_ty, llvm_i32_ty],
3235 [IntrNoMem, ImmArg<ArgIndex<1>>,
3236 ImmArg<ArgIndex<4>>]>;
3237 def int_x86_avx512_mask_rndscale_ps_128 : ClangBuiltin<"__builtin_ia32_rndscaleps_128_mask">,
3238 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3239 [llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty,
3240 llvm_i8_ty],
3241 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3242 def int_x86_avx512_mask_rndscale_ps_256 : ClangBuiltin<"__builtin_ia32_rndscaleps_256_mask">,
3243 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
3244 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty,
3245 llvm_i8_ty],
3246 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3247 def int_x86_avx512_mask_rndscale_ps_512 : ClangBuiltin<"__builtin_ia32_rndscaleps_mask">,
3248 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
3249 [llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty,
3250 llvm_i16_ty, llvm_i32_ty],
3251 [IntrNoMem, ImmArg<ArgIndex<1>>,
3252 ImmArg<ArgIndex<4>>]>;
3253 def int_x86_avx512_mask_reduce_pd_128 : ClangBuiltin<"__builtin_ia32_reducepd128_mask">,
3254 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3255 [llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty,
3256 llvm_i8_ty],
3257 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3258 def int_x86_avx512_mask_reduce_pd_256 : ClangBuiltin<"__builtin_ia32_reducepd256_mask">,
3259 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3260 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty,
3261 llvm_i8_ty],
3262 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3263 def int_x86_avx512_mask_reduce_pd_512 : ClangBuiltin<"__builtin_ia32_reducepd512_mask">,
3264 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3265 [llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty,
3266 llvm_i8_ty, llvm_i32_ty],
3267 [IntrNoMem, ImmArg<ArgIndex<1>>,
3268 ImmArg<ArgIndex<4>>]>;
3269 def int_x86_avx512_mask_reduce_ps_128 : ClangBuiltin<"__builtin_ia32_reduceps128_mask">,
3270 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3271 [llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty,
3272 llvm_i8_ty],
3273 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3274 def int_x86_avx512_mask_reduce_ps_256 : ClangBuiltin<"__builtin_ia32_reduceps256_mask">,
3275 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
3276 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty,
3277 llvm_i8_ty],
3278 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3279 def int_x86_avx512_mask_reduce_ps_512 : ClangBuiltin<"__builtin_ia32_reduceps512_mask">,
3280 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
3281 [llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty,
3282 llvm_i16_ty, llvm_i32_ty],
3283 [IntrNoMem, ImmArg<ArgIndex<1>>,
3284 ImmArg<ArgIndex<4>>]>;
3285 def int_x86_avx512_mask_range_pd_128 : ClangBuiltin<"__builtin_ia32_rangepd128_mask">,
3286 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3287 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty,
3288 llvm_v2f64_ty, llvm_i8_ty],
3289 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3290 def int_x86_avx512_mask_range_pd_256 : ClangBuiltin<"__builtin_ia32_rangepd256_mask">,
3291 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3292 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty,
3293 llvm_v4f64_ty, llvm_i8_ty],
3294 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3295 def int_x86_avx512_mask_range_pd_512 : ClangBuiltin<"__builtin_ia32_rangepd512_mask">,
3296 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3297 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty,
3298 llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty],
3299 [IntrNoMem, ImmArg<ArgIndex<2>>,
3300 ImmArg<ArgIndex<5>>]>;
3301 def int_x86_avx512_mask_range_ps_128 : ClangBuiltin<"__builtin_ia32_rangeps128_mask">,
3302 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3303 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty,
3304 llvm_v4f32_ty, llvm_i8_ty],
3305 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3306 def int_x86_avx512_mask_range_ps_256 : ClangBuiltin<"__builtin_ia32_rangeps256_mask">,
3307 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
3308 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty,
3309 llvm_v8f32_ty, llvm_i8_ty],
3310 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3311 def int_x86_avx512_mask_range_ps_512 : ClangBuiltin<"__builtin_ia32_rangeps512_mask">,
3312 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
3313 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty,
3314 llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty],
3315 [IntrNoMem, ImmArg<ArgIndex<2>>,
3316 ImmArg<ArgIndex<5>>]>;
3317 }
3318
3319 // Vector broadcast from mask
3320 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
3321 def int_x86_avx512_broadcastmw_512 :
3322 ClangBuiltin<"__builtin_ia32_broadcastmw512">,
3323 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_i16_ty], [IntrNoMem]>;
3324 def int_x86_avx512_broadcastmw_256 :
3325 ClangBuiltin<"__builtin_ia32_broadcastmw256">,
3326 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_i16_ty], [IntrNoMem]>;
3327 def int_x86_avx512_broadcastmw_128 :
3328 ClangBuiltin<"__builtin_ia32_broadcastmw128">,
3329 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_i16_ty], [IntrNoMem]>;
3330 def int_x86_avx512_broadcastmb_512 :
3331 ClangBuiltin<"__builtin_ia32_broadcastmb512">,
3332 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_i8_ty], [IntrNoMem]>;
3333 def int_x86_avx512_broadcastmb_256 :
3334 ClangBuiltin<"__builtin_ia32_broadcastmb256">,
3335 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_i8_ty], [IntrNoMem]>;
3336 def int_x86_avx512_broadcastmb_128 :
3337 ClangBuiltin<"__builtin_ia32_broadcastmb128">,
3338 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_i8_ty], [IntrNoMem]>;
3339 }
3340
3341 // Arithmetic ops
3342 let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
3343
3344 def int_x86_avx512_add_ps_512 : ClangBuiltin<"__builtin_ia32_addps512">,
3345 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty,
3346 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3347 def int_x86_avx512_add_pd_512 : ClangBuiltin<"__builtin_ia32_addpd512">,
3348 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty,
3349 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3350 def int_x86_avx512_sub_ps_512 : ClangBuiltin<"__builtin_ia32_subps512">,
3351 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty,
3352 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3353 def int_x86_avx512_sub_pd_512 : ClangBuiltin<"__builtin_ia32_subpd512">,
3354 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty,
3355 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3356 def int_x86_avx512_mul_ps_512 : ClangBuiltin<"__builtin_ia32_mulps512">,
3357 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty,
3358 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3359 def int_x86_avx512_mul_pd_512 : ClangBuiltin<"__builtin_ia32_mulpd512">,
3360 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty,
3361 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3362 def int_x86_avx512_div_ps_512 : ClangBuiltin<"__builtin_ia32_divps512">,
3363 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty,
3364 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3365 def int_x86_avx512_div_pd_512 : ClangBuiltin<"__builtin_ia32_divpd512">,
3366 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty,
3367 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3368
3369 def int_x86_avx512_max_ps_512 : ClangBuiltin<"__builtin_ia32_maxps512">,
3370 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty,
3371 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3372 def int_x86_avx512_max_pd_512 : ClangBuiltin<"__builtin_ia32_maxpd512">,
3373 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty,
3374 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3375 def int_x86_avx512_min_ps_512 : ClangBuiltin<"__builtin_ia32_minps512">,
3376 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty,
3377 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3378 def int_x86_avx512_min_pd_512 : ClangBuiltin<"__builtin_ia32_minpd512">,
3379 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty,
3380 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3381
3382 def int_x86_avx512_mask_add_ss_round : ClangBuiltin<"__builtin_ia32_addss_round_mask">,
3383 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3384 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3385 llvm_i8_ty, llvm_i32_ty],
3386 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3387 def int_x86_avx512_mask_div_ss_round : ClangBuiltin<"__builtin_ia32_divss_round_mask">,
3388 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3389 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3390 llvm_i8_ty, llvm_i32_ty],
3391 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3392 def int_x86_avx512_mask_mul_ss_round : ClangBuiltin<"__builtin_ia32_mulss_round_mask">,
3393 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3394 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3395 llvm_i8_ty, llvm_i32_ty],
3396 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3397 def int_x86_avx512_mask_sub_ss_round : ClangBuiltin<"__builtin_ia32_subss_round_mask">,
3398 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3399 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3400 llvm_i8_ty, llvm_i32_ty],
3401 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3402 def int_x86_avx512_mask_max_ss_round : ClangBuiltin<"__builtin_ia32_maxss_round_mask">,
3403 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3404 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3405 llvm_i8_ty, llvm_i32_ty],
3406 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3407 def int_x86_avx512_mask_min_ss_round : ClangBuiltin<"__builtin_ia32_minss_round_mask">,
3408 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3409 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3410 llvm_i8_ty, llvm_i32_ty],
3411 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3412 def int_x86_avx512_mask_add_sd_round : ClangBuiltin<"__builtin_ia32_addsd_round_mask">,
3413 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3414 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3415 llvm_i8_ty, llvm_i32_ty],
3416 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3417 def int_x86_avx512_mask_div_sd_round : ClangBuiltin<"__builtin_ia32_divsd_round_mask">,
3418 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3419 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3420 llvm_i8_ty, llvm_i32_ty],
3421 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3422 def int_x86_avx512_mask_mul_sd_round : ClangBuiltin<"__builtin_ia32_mulsd_round_mask">,
3423 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3424 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3425 llvm_i8_ty, llvm_i32_ty],
3426 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3427 def int_x86_avx512_mask_sub_sd_round : ClangBuiltin<"__builtin_ia32_subsd_round_mask">,
3428 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3429 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3430 llvm_i8_ty, llvm_i32_ty],
3431 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3432 def int_x86_avx512_mask_max_sd_round : ClangBuiltin<"__builtin_ia32_maxsd_round_mask">,
3433 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3434 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3435 llvm_i8_ty, llvm_i32_ty],
3436 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3437 def int_x86_avx512_mask_min_sd_round : ClangBuiltin<"__builtin_ia32_minsd_round_mask">,
3438 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3439 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3440 llvm_i8_ty, llvm_i32_ty],
3441 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3442
3443 def int_x86_avx512_mask_rndscale_ss : ClangBuiltin<"__builtin_ia32_rndscaless_round_mask">,
3444 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3445 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3446 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty],
3447 [IntrNoMem, ImmArg<ArgIndex<4>>,
3448 ImmArg<ArgIndex<5>>]>;
3449 def int_x86_avx512_mask_rndscale_sd : ClangBuiltin<"__builtin_ia32_rndscalesd_round_mask">,
3450 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3451 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3452 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty],
3453 [IntrNoMem, ImmArg<ArgIndex<4>>,
3454 ImmArg<ArgIndex<5>>]>;
3455 def int_x86_avx512_mask_range_ss : ClangBuiltin<"__builtin_ia32_rangess128_round_mask">,
3456 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3457 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3458 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty],
3459 [IntrNoMem, ImmArg<ArgIndex<4>>,
3460 ImmArg<ArgIndex<5>>]>;
3461 def int_x86_avx512_mask_range_sd : ClangBuiltin<"__builtin_ia32_rangesd128_round_mask">,
3462 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3463 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3464 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty],
3465 [IntrNoMem, ImmArg<ArgIndex<4>>,
3466 ImmArg<ArgIndex<5>>]>;
3467 def int_x86_avx512_mask_reduce_ss : ClangBuiltin<"__builtin_ia32_reducess_mask">,
3468 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3469 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3470 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty],
3471 [IntrNoMem, ImmArg<ArgIndex<4>>,
3472 ImmArg<ArgIndex<5>>]>;
3473 def int_x86_avx512_mask_reduce_sd : ClangBuiltin<"__builtin_ia32_reducesd_mask">,
3474 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3475 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3476 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty],
3477 [IntrNoMem, ImmArg<ArgIndex<4>>,
3478 ImmArg<ArgIndex<5>>]>;
3479 def int_x86_avx512_mask_scalef_sd : ClangBuiltin<"__builtin_ia32_scalefsd_round_mask">,
3480 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3481 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3482 llvm_i8_ty, llvm_i32_ty],
3483 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3484 def int_x86_avx512_mask_scalef_ss : ClangBuiltin<"__builtin_ia32_scalefss_round_mask">,
3485 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3486 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3487 llvm_i8_ty, llvm_i32_ty],
3488 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3489 def int_x86_avx512_mask_scalef_pd_128 : ClangBuiltin<"__builtin_ia32_scalefpd128_mask">,
3490 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty,
3491 llvm_v2f64_ty, llvm_i8_ty], [IntrNoMem]>;
3492 def int_x86_avx512_mask_scalef_pd_256 : ClangBuiltin<"__builtin_ia32_scalefpd256_mask">,
3493 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3494 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty,
3495 llvm_i8_ty],
3496 [IntrNoMem]>;
3497 def int_x86_avx512_mask_scalef_pd_512 : ClangBuiltin<"__builtin_ia32_scalefpd512_mask">,
3498 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3499 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8f64_ty,
3500 llvm_i8_ty, llvm_i32_ty],
3501 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3502 def int_x86_avx512_mask_scalef_ps_128 : ClangBuiltin<"__builtin_ia32_scalefps128_mask">,
3503 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty,
3504 llvm_v4f32_ty, llvm_i8_ty], [IntrNoMem]>;
3505 def int_x86_avx512_mask_scalef_ps_256 : ClangBuiltin<"__builtin_ia32_scalefps256_mask">,
3506 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty,
3507 llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>;
3508 def int_x86_avx512_mask_scalef_ps_512 : ClangBuiltin<"__builtin_ia32_scalefps512_mask">,
3509 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
3510 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty,
3511 llvm_i16_ty, llvm_i32_ty],
3512 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3513
3514 def int_x86_avx512_mask_sqrt_ss :
3515 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3516 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3517 llvm_i8_ty, llvm_i32_ty],
3518 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3519 def int_x86_avx512_mask_sqrt_sd :
3520 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3521 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3522 llvm_i8_ty, llvm_i32_ty],
3523 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3524
3525 def int_x86_avx512_sqrt_pd_512 :
3526 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_i32_ty],
3527 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3528 def int_x86_avx512_sqrt_ps_512 :
3529 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_i32_ty],
3530 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3531 def int_x86_avx512_mask_fixupimm_pd_128 :
3532 ClangBuiltin<"__builtin_ia32_fixupimmpd128_mask">,
3533 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3534 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty],
3535 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3536 def int_x86_avx512_maskz_fixupimm_pd_128 :
3537 ClangBuiltin<"__builtin_ia32_fixupimmpd128_maskz">,
3538 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3539 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty],
3540 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3541 def int_x86_avx512_mask_fixupimm_pd_256 :
3542 ClangBuiltin<"__builtin_ia32_fixupimmpd256_mask">,
3543 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3544 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_i8_ty],
3545 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3546 def int_x86_avx512_maskz_fixupimm_pd_256 :
3547 ClangBuiltin<"__builtin_ia32_fixupimmpd256_maskz">,
3548 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3549 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_i8_ty],
3550 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3551 def int_x86_avx512_mask_fixupimm_pd_512 :
3552 ClangBuiltin<"__builtin_ia32_fixupimmpd512_mask">,
3553 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3554 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8i64_ty, llvm_i32_ty, llvm_i8_ty,
3555 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
3556 def int_x86_avx512_maskz_fixupimm_pd_512 :
3557 ClangBuiltin<"__builtin_ia32_fixupimmpd512_maskz">,
3558 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3559 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_v8i64_ty, llvm_i32_ty, llvm_i8_ty,
3560 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
3561 def int_x86_avx512_mask_fixupimm_ps_128 :
3562 ClangBuiltin<"__builtin_ia32_fixupimmps128_mask">,
3563 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3564 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty],
3565 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3566 def int_x86_avx512_maskz_fixupimm_ps_128 :
3567 ClangBuiltin<"__builtin_ia32_fixupimmps128_maskz">,
3568 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3569 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty],
3570 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3571 def int_x86_avx512_mask_fixupimm_ps_256 :
3572 ClangBuiltin<"__builtin_ia32_fixupimmps256_mask">,
3573 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
3574 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_i8_ty],
3575 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3576 def int_x86_avx512_maskz_fixupimm_ps_256 :
3577 ClangBuiltin<"__builtin_ia32_fixupimmps256_maskz">,
3578 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
3579 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_i8_ty],
3580 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3581 def int_x86_avx512_mask_fixupimm_ps_512 :
3582 ClangBuiltin<"__builtin_ia32_fixupimmps512_mask">,
3583 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
3584 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16i32_ty, llvm_i32_ty,
3585 llvm_i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
3586 def int_x86_avx512_maskz_fixupimm_ps_512 :
3587 ClangBuiltin<"__builtin_ia32_fixupimmps512_maskz">,
3588 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
3589 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16i32_ty, llvm_i32_ty,
3590 llvm_i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
3591 def int_x86_avx512_mask_fixupimm_sd :
3592 ClangBuiltin<"__builtin_ia32_fixupimmsd_mask">,
3593 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3594 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty,
3595 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
3596 def int_x86_avx512_maskz_fixupimm_sd :
3597 ClangBuiltin<"__builtin_ia32_fixupimmsd_maskz">,
3598 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3599 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2i64_ty, llvm_i32_ty, llvm_i8_ty,
3600 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
3601 def int_x86_avx512_mask_fixupimm_ss :
3602 ClangBuiltin<"__builtin_ia32_fixupimmss_mask">,
3603 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3604 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty,
3605 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
3606 def int_x86_avx512_maskz_fixupimm_ss :
3607 ClangBuiltin<"__builtin_ia32_fixupimmss_maskz">,
3608 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3609 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4i32_ty, llvm_i32_ty, llvm_i8_ty,
3610 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
3611 def int_x86_avx512_mask_getexp_pd_128 : ClangBuiltin<"__builtin_ia32_getexppd128_mask">,
3612 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3613 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty],
3614 [IntrNoMem]>;
3615 def int_x86_avx512_mask_getexp_pd_256 : ClangBuiltin<"__builtin_ia32_getexppd256_mask">,
3616 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3617 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty],
3618 [IntrNoMem]>;
3619 def int_x86_avx512_mask_getexp_pd_512 : ClangBuiltin<"__builtin_ia32_getexppd512_mask">,
3620 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3621 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty,
3622 llvm_i32_ty],
3623 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3624 def int_x86_avx512_mask_getexp_ps_128 : ClangBuiltin<"__builtin_ia32_getexpps128_mask">,
3625 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3626 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty],
3627 [IntrNoMem]>;
3628 def int_x86_avx512_mask_getexp_ps_256 : ClangBuiltin<"__builtin_ia32_getexpps256_mask">,
3629 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
3630 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty],
3631 [IntrNoMem]>;
3632 def int_x86_avx512_mask_getexp_ps_512 : ClangBuiltin<"__builtin_ia32_getexpps512_mask">,
3633 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
3634 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty,
3635 llvm_i32_ty],
3636 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
3637
3638 def int_x86_avx512_mask_getexp_ss : ClangBuiltin<"__builtin_ia32_getexpss128_round_mask">,
3639 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3640 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3641 llvm_i8_ty, llvm_i32_ty],
3642 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3643 def int_x86_avx512_mask_getexp_sd : ClangBuiltin<"__builtin_ia32_getexpsd128_round_mask">,
3644 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3645 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3646 llvm_i8_ty, llvm_i32_ty],
3647 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
3648
3649 def int_x86_avx512_mask_getmant_pd_128 :
3650 ClangBuiltin<"__builtin_ia32_getmantpd128_mask">,
3651 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3652 [llvm_v2f64_ty,llvm_i32_ty, llvm_v2f64_ty, llvm_i8_ty],
3653 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3654
3655 def int_x86_avx512_mask_getmant_pd_256 :
3656 ClangBuiltin<"__builtin_ia32_getmantpd256_mask">,
3657 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3658 [llvm_v4f64_ty,llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty],
3659 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3660
3661 def int_x86_avx512_mask_getmant_pd_512 :
3662 ClangBuiltin<"__builtin_ia32_getmantpd512_mask">,
3663 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3664 [llvm_v8f64_ty,llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty,llvm_i32_ty ],
3665 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
3666
3667 def int_x86_avx512_mask_getmant_ps_128 :
3668 ClangBuiltin<"__builtin_ia32_getmantps128_mask">,
3669 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3670 [llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, llvm_i8_ty],
3671 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3672
3673 def int_x86_avx512_mask_getmant_ps_256 :
3674 ClangBuiltin<"__builtin_ia32_getmantps256_mask">,
3675 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
3676 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty],
3677 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
3678
3679 def int_x86_avx512_mask_getmant_ps_512 :
3680 ClangBuiltin<"__builtin_ia32_getmantps512_mask">,
3681 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
3682 [llvm_v16f32_ty,llvm_i32_ty, llvm_v16f32_ty,llvm_i16_ty,llvm_i32_ty],
3683 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
3684
3685 def int_x86_avx512_mask_getmant_ss :
3686 ClangBuiltin<"__builtin_ia32_getmantss_round_mask">,
3687 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3688 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty,
3689 llvm_i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
3690
3691 def int_x86_avx512_mask_getmant_sd :
3692 ClangBuiltin<"__builtin_ia32_getmantsd_round_mask">,
3693 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3694 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty,
3695 llvm_i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
3696
3697 def int_x86_avx512_rsqrt14_ss : ClangBuiltin<"__builtin_ia32_rsqrt14ss_mask">,
3698 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3699 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3700 llvm_i8_ty],
3701 [IntrNoMem]>;
3702 def int_x86_avx512_rsqrt14_sd : ClangBuiltin<"__builtin_ia32_rsqrt14sd_mask">,
3703 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3704 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3705 llvm_i8_ty],
3706 [IntrNoMem]>;
3707
3708 def int_x86_avx512_rsqrt14_pd_128 : ClangBuiltin<"__builtin_ia32_rsqrt14pd128_mask">,
3709 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3710 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty],
3711 [IntrNoMem]>;
3712 def int_x86_avx512_rsqrt14_pd_256 : ClangBuiltin<"__builtin_ia32_rsqrt14pd256_mask">,
3713 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3714 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty],
3715 [IntrNoMem]>;
3716 def int_x86_avx512_rsqrt14_pd_512 : ClangBuiltin<"__builtin_ia32_rsqrt14pd512_mask">,
3717 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3718 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty],
3719 [IntrNoMem]>;
3720 def int_x86_avx512_rsqrt14_ps_128 : ClangBuiltin<"__builtin_ia32_rsqrt14ps128_mask">,
3721 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3722 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty],
3723 [IntrNoMem]>;
3724 def int_x86_avx512_rsqrt14_ps_256 : ClangBuiltin<"__builtin_ia32_rsqrt14ps256_mask">,
3725 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
3726 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty],
3727 [IntrNoMem]>;
3728 def int_x86_avx512_rsqrt14_ps_512 : ClangBuiltin<"__builtin_ia32_rsqrt14ps512_mask">,
3729 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
3730 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty],
3731 [IntrNoMem]>;
3732 def int_x86_avx512_rcp14_ss : ClangBuiltin<"__builtin_ia32_rcp14ss_mask">,
3733 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3734 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
3735 llvm_i8_ty],
3736 [IntrNoMem]>;
3737 def int_x86_avx512_rcp14_sd : ClangBuiltin<"__builtin_ia32_rcp14sd_mask">,
3738 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3739 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty,
3740 llvm_i8_ty],
3741 [IntrNoMem]>;
3742
3743 def int_x86_avx512_rcp14_pd_128 : ClangBuiltin<"__builtin_ia32_rcp14pd128_mask">,
3744 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3745 [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i8_ty],
3746 [IntrNoMem]>;
3747 def int_x86_avx512_rcp14_pd_256 : ClangBuiltin<"__builtin_ia32_rcp14pd256_mask">,
3748 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3749 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty],
3750 [IntrNoMem]>;
3751 def int_x86_avx512_rcp14_pd_512 : ClangBuiltin<"__builtin_ia32_rcp14pd512_mask">,
3752 DefaultAttrsIntrinsic<[llvm_v8f64_ty],
3753 [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i8_ty],
3754 [IntrNoMem]>;
3755 def int_x86_avx512_rcp14_ps_128 : ClangBuiltin<"__builtin_ia32_rcp14ps128_mask">,
3756 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3757 [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i8_ty],
3758 [IntrNoMem]>;
3759 def int_x86_avx512_rcp14_ps_256 : ClangBuiltin<"__builtin_ia32_rcp14ps256_mask">,
3760 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
3761 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty],
3762 [IntrNoMem]>;
3763 def int_x86_avx512_rcp14_ps_512 : ClangBuiltin<"__builtin_ia32_rcp14ps512_mask">,
3764 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
3765 [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i16_ty],
3766 [IntrNoMem]>;
3767 def int_x86_avx512_psad_bw_512 : ClangBuiltin<"__builtin_ia32_psadbw512">,
3768 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v64i8_ty, llvm_v64i8_ty],
3769 [IntrNoMem, Commutative]>;
3770 }
3771 // Integer arithmetic ops
3772 let TargetPrefix = "x86" in {
3773 def int_x86_avx512_pmulhu_w_512 : ClangBuiltin<"__builtin_ia32_pmulhuw512">,
3774 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
3775 [IntrNoMem, Commutative]>;
3776 def int_x86_avx512_pmulh_w_512 : ClangBuiltin<"__builtin_ia32_pmulhw512">,
3777 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
3778 [IntrNoMem, Commutative]>;
3779 def int_x86_avx512_pavg_b_512 : ClangBuiltin<"__builtin_ia32_pavgb512">,
3780 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty],
3781 [IntrNoMem]>;
3782 def int_x86_avx512_pavg_w_512 : ClangBuiltin<"__builtin_ia32_pavgw512">,
3783 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
3784 [IntrNoMem]>;
3785 def int_x86_avx512_pmaddw_d_512 : ClangBuiltin<"__builtin_ia32_pmaddwd512">,
3786 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v32i16_ty, llvm_v32i16_ty],
3787 [IntrNoMem, Commutative]>;
3788 def int_x86_avx512_pmaddubs_w_512 : ClangBuiltin<"__builtin_ia32_pmaddubsw512">,
3789 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v64i8_ty, llvm_v64i8_ty],
3790 [IntrNoMem]>;
3791
3792 def int_x86_avx512_dbpsadbw_128 :
3793 ClangBuiltin<"__builtin_ia32_dbpsadbw128">,
3794 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
3795 [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
3796 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3797
3798 def int_x86_avx512_dbpsadbw_256 :
3799 ClangBuiltin<"__builtin_ia32_dbpsadbw256">,
3800 DefaultAttrsIntrinsic<[llvm_v16i16_ty],
3801 [llvm_v32i8_ty, llvm_v32i8_ty, llvm_i32_ty],
3802 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3803
3804 def int_x86_avx512_dbpsadbw_512 :
3805 ClangBuiltin<"__builtin_ia32_dbpsadbw512">,
3806 DefaultAttrsIntrinsic<[llvm_v32i16_ty],
3807 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i32_ty],
3808 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
3809 }
3810
3811 // Gather and Scatter ops
3812 let TargetPrefix = "x86" in {
3813 // NOTE: These are deprecated in favor of the versions that take a vXi1 mask.
3814 // NOTE: These can't be ArgMemOnly because you can put the address completely
3815 // in the index register.
3816 def int_x86_avx512_gather_dpd_512 :
3817 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty,
3818 llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
3819 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3820 def int_x86_avx512_gather_dps_512 :
3821 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_ptr_ty,
3822 llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
3823 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3824 def int_x86_avx512_gather_qpd_512 :
3825 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty,
3826 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3827 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3828 def int_x86_avx512_gather_qps_512 :
3829 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_ptr_ty,
3830 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3831 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3832
3833
3834 def int_x86_avx512_gather_dpq_512 :
3835 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty,
3836 llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
3837 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3838 def int_x86_avx512_gather_dpi_512 :
3839 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_ptr_ty,
3840 llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
3841 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3842 def int_x86_avx512_gather_qpq_512 :
3843 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty,
3844 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3845 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3846 def int_x86_avx512_gather_qpi_512 :
3847 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_ptr_ty,
3848 llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
3849 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3850
3851 def int_x86_avx512_gather3div2_df :
3852 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3853 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty],
3854 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3855
3856 def int_x86_avx512_gather3div2_di :
3857 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
3858 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty],
3859 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3860
3861 def int_x86_avx512_gather3div4_df :
3862 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3863 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
3864 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3865
3866 def int_x86_avx512_gather3div4_di :
3867 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
3868 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
3869 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3870
3871 def int_x86_avx512_gather3div4_sf :
3872 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3873 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty],
3874 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3875
3876 def int_x86_avx512_gather3div4_si :
3877 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
3878 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty, llvm_i32_ty],
3879 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3880
3881 def int_x86_avx512_gather3div8_sf :
3882 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3883 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
3884 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3885
3886 def int_x86_avx512_gather3div8_si :
3887 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
3888 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
3889 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3890
3891 def int_x86_avx512_gather3siv2_df :
3892 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
3893 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
3894 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3895
3896 def int_x86_avx512_gather3siv2_di:
3897 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
3898 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
3899 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3900
3901 def int_x86_avx512_gather3siv4_df :
3902 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
3903 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
3904 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3905
3906 def int_x86_avx512_gather3siv4_di :
3907 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
3908 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
3909 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3910
3911 def int_x86_avx512_gather3siv4_sf :
3912 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
3913 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
3914 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3915
3916 def int_x86_avx512_gather3siv4_si :
3917 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
3918 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
3919 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3920
3921 def int_x86_avx512_gather3siv8_sf :
3922 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
3923 [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
3924 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3925
3926 def int_x86_avx512_gather3siv8_si :
3927 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
3928 [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
3929 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
3930
3931 // scatter
3932 // NOTE: These are deprecated in favor of the versions that take a vXi1 mask.
3933 // NOTE: These can't be ArgMemOnly because you can put the address completely
3934 // in the index register.
3935 def int_x86_avx512_scatter_dpd_512 :
3936 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,
3937 llvm_v8i32_ty, llvm_v8f64_ty, llvm_i32_ty],
3938 [ImmArg<ArgIndex<4>>]>;
3939 def int_x86_avx512_scatter_dps_512 :
3940 Intrinsic<[], [llvm_ptr_ty, llvm_i16_ty,
3941 llvm_v16i32_ty, llvm_v16f32_ty, llvm_i32_ty],
3942 [ImmArg<ArgIndex<4>>]>;
3943 def int_x86_avx512_scatter_qpd_512 :
3944 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,
3945 llvm_v8i64_ty, llvm_v8f64_ty, llvm_i32_ty],
3946 [ImmArg<ArgIndex<4>>]>;
3947 def int_x86_avx512_scatter_qps_512 :
3948 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,
3949 llvm_v8i64_ty, llvm_v8f32_ty, llvm_i32_ty],
3950 [ImmArg<ArgIndex<4>>]>;
3951
3952
3953 def int_x86_avx512_scatter_dpq_512 :
3954 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,
3955 llvm_v8i32_ty, llvm_v8i64_ty, llvm_i32_ty],
3956 [ImmArg<ArgIndex<4>>]>;
3957 def int_x86_avx512_scatter_dpi_512 :
3958 Intrinsic<[], [llvm_ptr_ty, llvm_i16_ty,
3959 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty],
3960 [ImmArg<ArgIndex<4>>]>;
3961 def int_x86_avx512_scatter_qpq_512 :
3962 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,llvm_v8i64_ty, llvm_v8i64_ty,
3963 llvm_i32_ty],
3964 [ImmArg<ArgIndex<4>>]>;
3965 def int_x86_avx512_scatter_qpi_512 :
3966 Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty, llvm_v8i64_ty, llvm_v8i32_ty,
3967 llvm_i32_ty],
3968 [ImmArg<ArgIndex<4>>]>;
3969
3970 def int_x86_avx512_scatterdiv2_df :
3971 Intrinsic<[],
3972 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i32_ty],
3973 [ImmArg<ArgIndex<4>>]>;
3974
3975 def int_x86_avx512_scatterdiv2_di :
3976 Intrinsic<[],
3977 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
3978 [ImmArg<ArgIndex<4>>]>;
3979
3980 def int_x86_avx512_scatterdiv4_df :
3981 Intrinsic<[],
3982 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i32_ty],
3983 [ImmArg<ArgIndex<4>>]>;
3984
3985 def int_x86_avx512_scatterdiv4_di :
3986 Intrinsic<[],
3987 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty],
3988 [ImmArg<ArgIndex<4>>]>;
3989
3990 def int_x86_avx512_scatterdiv4_sf :
3991 Intrinsic<[],
3992 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i32_ty],
3993 [ImmArg<ArgIndex<4>>]>;
3994
3995 def int_x86_avx512_scatterdiv4_si :
3996 Intrinsic<[],
3997 [llvm_ptr_ty, llvm_i8_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i32_ty],
3998 [ImmArg<ArgIndex<4>>]>;
3999
4000 def int_x86_avx512_scatterdiv8_sf :
4001 Intrinsic<[],
4002 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i32_ty],
4003 [ImmArg<ArgIndex<4>>]>;
4004
4005 def int_x86_avx512_scatterdiv8_si :
4006 Intrinsic<[],
4007 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i32_ty],
4008 [ImmArg<ArgIndex<4>>]>;
4009
4010 def int_x86_avx512_scattersiv2_df :
4011 Intrinsic<[],
4012 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i32_ty],
4013 [ImmArg<ArgIndex<4>>]>;
4014
4015 def int_x86_avx512_scattersiv2_di :
4016 Intrinsic<[],
4017 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i32_ty],
4018 [ImmArg<ArgIndex<4>>]>;
4019
4020 def int_x86_avx512_scattersiv4_df :
4021 Intrinsic<[],
4022 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i32_ty],
4023 [ImmArg<ArgIndex<4>>]>;
4024
4025 def int_x86_avx512_scattersiv4_di :
4026 Intrinsic<[],
4027 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i32_ty],
4028 [ImmArg<ArgIndex<4>>]>;
4029
4030 def int_x86_avx512_scattersiv4_sf :
4031 Intrinsic<[],
4032 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i32_ty],
4033 [ImmArg<ArgIndex<4>>]>;
4034
4035 def int_x86_avx512_scattersiv4_si :
4036 Intrinsic<[],
4037 [llvm_ptr_ty, llvm_i8_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
4038 [ImmArg<ArgIndex<4>>]>;
4039
4040 def int_x86_avx512_scattersiv8_sf :
4041 Intrinsic<[],
4042 [llvm_ptr_ty, llvm_i8_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i32_ty],
4043 [ImmArg<ArgIndex<4>>]>;
4044
4045 def int_x86_avx512_scattersiv8_si :
4046 Intrinsic<[],
4047 [llvm_ptr_ty, llvm_i8_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty],
4048 [ImmArg<ArgIndex<4>>]>;
4049 }
4050
4051 // AVX512 gather/scatter intrinsics that use vXi1 masks.
4052 let TargetPrefix = "x86" in {
4053 // NOTE: These can't be ArgMemOnly because you can put the address completely
4054 // in the index register.
4055 def int_x86_avx512_mask_gather_dpd_512 :
4056 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty,
4057 llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty],
4058 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4059 def int_x86_avx512_mask_gather_dps_512 :
4060 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_ptr_ty,
4061 llvm_v16i32_ty, llvm_v16i1_ty, llvm_i32_ty],
4062 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4063 def int_x86_avx512_mask_gather_qpd_512 :
4064 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty,
4065 llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty],
4066 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4067 def int_x86_avx512_mask_gather_qps_512 :
4068 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_ptr_ty,
4069 llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty],
4070 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4071
4072
4073 def int_x86_avx512_mask_gather_dpq_512 :
4074 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty,
4075 llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty],
4076 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4077 def int_x86_avx512_mask_gather_dpi_512 :
4078 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty, llvm_ptr_ty,
4079 llvm_v16i32_ty, llvm_v16i1_ty, llvm_i32_ty],
4080 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4081 def int_x86_avx512_mask_gather_qpq_512 :
4082 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_ptr_ty,
4083 llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty],
4084 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4085 def int_x86_avx512_mask_gather_qpi_512 :
4086 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_ptr_ty,
4087 llvm_v8i64_ty, llvm_v8i1_ty, llvm_i32_ty],
4088 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4089
4090 def int_x86_avx512_mask_gather3div2_df :
4091 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
4092 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty],
4093 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4094
4095 def int_x86_avx512_mask_gather3div2_di :
4096 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
4097 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty],
4098 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4099
4100 def int_x86_avx512_mask_gather3div4_df :
4101 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
4102 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty],
4103 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4104
4105 def int_x86_avx512_mask_gather3div4_di :
4106 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
4107 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty],
4108 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4109
4110 def int_x86_avx512_mask_gather3div4_sf :
4111 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
4112 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty],
4113 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4114
4115 def int_x86_avx512_mask_gather3div4_si :
4116 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
4117 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i1_ty, llvm_i32_ty],
4118 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4119
4120 def int_x86_avx512_mask_gather3div8_sf :
4121 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
4122 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty],
4123 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4124
4125 def int_x86_avx512_mask_gather3div8_si :
4126 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
4127 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i64_ty, llvm_v4i1_ty, llvm_i32_ty],
4128 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4129
4130 def int_x86_avx512_mask_gather3siv2_df :
4131 DefaultAttrsIntrinsic<[llvm_v2f64_ty],
4132 [llvm_v2f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2i1_ty, llvm_i32_ty],
4133 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4134
4135 def int_x86_avx512_mask_gather3siv2_di :
4136 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
4137 [llvm_v2i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v2i1_ty, llvm_i32_ty],
4138 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4139
4140 def int_x86_avx512_mask_gather3siv4_df :
4141 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
4142 [llvm_v4f64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty],
4143 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4144
4145 def int_x86_avx512_mask_gather3siv4_di :
4146 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
4147 [llvm_v4i64_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty],
4148 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4149
4150 def int_x86_avx512_mask_gather3siv4_sf :
4151 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
4152 [llvm_v4f32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty],
4153 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4154
4155 def int_x86_avx512_mask_gather3siv4_si :
4156 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
4157 [llvm_v4i32_ty, llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i1_ty, llvm_i32_ty],
4158 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4159
4160 def int_x86_avx512_mask_gather3siv8_sf :
4161 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
4162 [llvm_v8f32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty],
4163 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4164
4165 def int_x86_avx512_mask_gather3siv8_si :
4166 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
4167 [llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty],
4168 [IntrReadMem, ImmArg<ArgIndex<4>>]>;
4169
4170 def int_x86_avx512_mask_scatter_dpd_512 :
4171 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
4172 llvm_v8i32_ty, llvm_v8f64_ty, llvm_i32_ty],
4173 [ImmArg<ArgIndex<4>>]>;
4174 def int_x86_avx512_mask_scatter_dps_512 :
4175 Intrinsic<[], [llvm_ptr_ty, llvm_v16i1_ty,
4176 llvm_v16i32_ty, llvm_v16f32_ty, llvm_i32_ty],
4177 [ImmArg<ArgIndex<4>>]>;
4178 def int_x86_avx512_mask_scatter_qpd_512 :
4179 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
4180 llvm_v8i64_ty, llvm_v8f64_ty, llvm_i32_ty],
4181 [ImmArg<ArgIndex<4>>]>;
4182 def int_x86_avx512_mask_scatter_qps_512 :
4183 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
4184 llvm_v8i64_ty, llvm_v8f32_ty, llvm_i32_ty],
4185 [ImmArg<ArgIndex<4>>]>;
4186
4187
4188 // NOTE: These can't be ArgMemOnly because you can put the address completely
4189 // in the index register.
4190 def int_x86_avx512_mask_scatter_dpq_512 :
4191 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
4192 llvm_v8i32_ty, llvm_v8i64_ty, llvm_i32_ty],
4193 [ImmArg<ArgIndex<4>>]>;
4194 def int_x86_avx512_mask_scatter_dpi_512 :
4195 Intrinsic<[], [llvm_ptr_ty, llvm_v16i1_ty,
4196 llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty],
4197 [ImmArg<ArgIndex<4>>]>;
4198 def int_x86_avx512_mask_scatter_qpq_512 :
4199 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,llvm_v8i64_ty, llvm_v8i64_ty,
4200 llvm_i32_ty],
4201 [ImmArg<ArgIndex<4>>]>;
4202 def int_x86_avx512_mask_scatter_qpi_512 :
4203 Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i64_ty, llvm_v8i32_ty,
4204 llvm_i32_ty],
4205 [ImmArg<ArgIndex<4>>]>;
4206
4207 def int_x86_avx512_mask_scatterdiv2_df :
4208 Intrinsic<[],
4209 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i32_ty],
4210 [ImmArg<ArgIndex<4>>]>;
4211
4212 def int_x86_avx512_mask_scatterdiv2_di :
4213 Intrinsic<[],
4214 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
4215 [ImmArg<ArgIndex<4>>]>;
4216
4217 def int_x86_avx512_mask_scatterdiv4_df :
4218 Intrinsic<[],
4219 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i32_ty],
4220 [ImmArg<ArgIndex<4>>]>;
4221
4222 def int_x86_avx512_mask_scatterdiv4_di :
4223 Intrinsic<[],
4224 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty],
4225 [ImmArg<ArgIndex<4>>]>;
4226
4227 def int_x86_avx512_mask_scatterdiv4_sf :
4228 Intrinsic<[],
4229 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i32_ty],
4230 [ImmArg<ArgIndex<4>>]>;
4231
4232 def int_x86_avx512_mask_scatterdiv4_si :
4233 Intrinsic<[],
4234 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i32_ty],
4235 [ImmArg<ArgIndex<4>>]>;
4236
4237 def int_x86_avx512_mask_scatterdiv8_sf :
4238 Intrinsic<[],
4239 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i32_ty],
4240 [ImmArg<ArgIndex<4>>]>;
4241
4242 def int_x86_avx512_mask_scatterdiv8_si :
4243 Intrinsic<[],
4244 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i32_ty],
4245 [ImmArg<ArgIndex<4>>]>;
4246
4247 def int_x86_avx512_mask_scattersiv2_df :
4248 Intrinsic<[],
4249 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i32_ty],
4250 [ImmArg<ArgIndex<4>>]>;
4251
4252 def int_x86_avx512_mask_scattersiv2_di :
4253 Intrinsic<[],
4254 [llvm_ptr_ty, llvm_v2i1_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i32_ty],
4255 [ImmArg<ArgIndex<4>>]>;
4256
4257 def int_x86_avx512_mask_scattersiv4_df :
4258 Intrinsic<[],
4259 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i32_ty],
4260 [ImmArg<ArgIndex<4>>]>;
4261
4262 def int_x86_avx512_mask_scattersiv4_di :
4263 Intrinsic<[],
4264 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i32_ty],
4265 [ImmArg<ArgIndex<4>>]>;
4266
4267 def int_x86_avx512_mask_scattersiv4_sf :
4268 Intrinsic<[],
4269 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i32_ty],
4270 [ImmArg<ArgIndex<4>>]>;
4271
4272 def int_x86_avx512_mask_scattersiv4_si :
4273 Intrinsic<[],
4274 [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
4275 [ImmArg<ArgIndex<4>>]>;
4276
4277 def int_x86_avx512_mask_scattersiv8_sf :
4278 Intrinsic<[],
4279 [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i32_ty],
4280 [ImmArg<ArgIndex<4>>]>;
4281
4282 def int_x86_avx512_mask_scattersiv8_si :
4283 Intrinsic<[],
4284 [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty],
4285 [ImmArg<ArgIndex<4>>]>;
4286 }
4287
4288 // AVX-512 conflict detection instruction
4289 // Instructions that count the number of leading zero bits
4290 let TargetPrefix = "x86" in {
4291 def int_x86_avx512_conflict_d_128 :
4292 ClangBuiltin<"__builtin_ia32_vpconflictsi_128">,
4293 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
4294 def int_x86_avx512_conflict_d_256 :
4295 ClangBuiltin<"__builtin_ia32_vpconflictsi_256">,
4296 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty], [IntrNoMem]>;
4297 def int_x86_avx512_conflict_d_512 :
4298 ClangBuiltin<"__builtin_ia32_vpconflictsi_512">,
4299 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16i32_ty],
4300 [IntrNoMem]>;
4301
4302 def int_x86_avx512_conflict_q_128 :
4303 ClangBuiltin<"__builtin_ia32_vpconflictdi_128">,
4304 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
4305 def int_x86_avx512_conflict_q_256 :
4306 ClangBuiltin<"__builtin_ia32_vpconflictdi_256">,
4307 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty], [IntrNoMem]>;
4308 def int_x86_avx512_conflict_q_512 :
4309 ClangBuiltin<"__builtin_ia32_vpconflictdi_512">,
4310 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty], [IntrNoMem]>;
4311 }
4312
4313 // Compares
4314 let TargetPrefix = "x86" in {
4315 // 512-bit
4316 def int_x86_avx512_vcomi_sd : ClangBuiltin<"__builtin_ia32_vcomisd">,
4317 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty,
4318 llvm_v2f64_ty, llvm_i32_ty, llvm_i32_ty],
4319 [IntrNoMem, ImmArg<ArgIndex<2>>,
4320 ImmArg<ArgIndex<3>>]>;
4321 def int_x86_avx512_vcomi_ss : ClangBuiltin<"__builtin_ia32_vcomiss">,
4322 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty,
4323 llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty],
4324 [IntrNoMem, ImmArg<ArgIndex<2>>,
4325 ImmArg<ArgIndex<3>>]>;
4326 }
4327
4328 // Compress, Expand
4329 let TargetPrefix = "x86" in {
4330 def int_x86_avx512_mask_compress :
4331 DefaultAttrsIntrinsic<[llvm_anyvector_ty],
4332 [LLVMMatchType<0>, LLVMMatchType<0>,
4333 LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
4334 [IntrNoMem]>;
4335 def int_x86_avx512_mask_expand :
4336 DefaultAttrsIntrinsic<[llvm_anyvector_ty],
4337 [LLVMMatchType<0>, LLVMMatchType<0>,
4338 LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
4339 [IntrNoMem]>;
4340 }
4341
4342 // truncate
4343 let TargetPrefix = "x86" in {
4344 def int_x86_avx512_mask_pmov_qb_128 :
4345 ClangBuiltin<"__builtin_ia32_pmovqb128_mask">,
4346 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4347 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty],
4348 [IntrNoMem]>;
4349 def int_x86_avx512_mask_pmov_qb_mem_128 :
4350 ClangBuiltin<"__builtin_ia32_pmovqb128mem_mask">,
4351 DefaultAttrsIntrinsic<[],
4352 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty],
4353 [IntrArgMemOnly]>;
4354 def int_x86_avx512_mask_pmovs_qb_128 :
4355 ClangBuiltin<"__builtin_ia32_pmovsqb128_mask">,
4356 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4357 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty],
4358 [IntrNoMem]>;
4359 def int_x86_avx512_mask_pmovs_qb_mem_128 :
4360 ClangBuiltin<"__builtin_ia32_pmovsqb128mem_mask">,
4361 DefaultAttrsIntrinsic<[],
4362 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty],
4363 [IntrArgMemOnly]>;
4364 def int_x86_avx512_mask_pmovus_qb_128 :
4365 ClangBuiltin<"__builtin_ia32_pmovusqb128_mask">,
4366 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4367 [llvm_v2i64_ty, llvm_v16i8_ty, llvm_i8_ty],
4368 [IntrNoMem]>;
4369 def int_x86_avx512_mask_pmovus_qb_mem_128 :
4370 ClangBuiltin<"__builtin_ia32_pmovusqb128mem_mask">,
4371 DefaultAttrsIntrinsic<[],
4372 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty],
4373 [IntrArgMemOnly]>;
4374 def int_x86_avx512_mask_pmov_qb_256 :
4375 ClangBuiltin<"__builtin_ia32_pmovqb256_mask">,
4376 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4377 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty],
4378 [IntrNoMem]>;
4379 def int_x86_avx512_mask_pmov_qb_mem_256 :
4380 ClangBuiltin<"__builtin_ia32_pmovqb256mem_mask">,
4381 DefaultAttrsIntrinsic<[],
4382 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty],
4383 [IntrArgMemOnly]>;
4384 def int_x86_avx512_mask_pmovs_qb_256 :
4385 ClangBuiltin<"__builtin_ia32_pmovsqb256_mask">,
4386 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4387 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty],
4388 [IntrNoMem]>;
4389 def int_x86_avx512_mask_pmovs_qb_mem_256 :
4390 ClangBuiltin<"__builtin_ia32_pmovsqb256mem_mask">,
4391 DefaultAttrsIntrinsic<[],
4392 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty],
4393 [IntrArgMemOnly]>;
4394 def int_x86_avx512_mask_pmovus_qb_256 :
4395 ClangBuiltin<"__builtin_ia32_pmovusqb256_mask">,
4396 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4397 [llvm_v4i64_ty, llvm_v16i8_ty, llvm_i8_ty],
4398 [IntrNoMem]>;
4399 def int_x86_avx512_mask_pmovus_qb_mem_256 :
4400 ClangBuiltin<"__builtin_ia32_pmovusqb256mem_mask">,
4401 DefaultAttrsIntrinsic<[],
4402 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty],
4403 [IntrArgMemOnly]>;
4404 def int_x86_avx512_mask_pmov_qb_512 :
4405 ClangBuiltin<"__builtin_ia32_pmovqb512_mask">,
4406 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4407 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty],
4408 [IntrNoMem]>;
4409 def int_x86_avx512_mask_pmov_qb_mem_512 :
4410 ClangBuiltin<"__builtin_ia32_pmovqb512mem_mask">,
4411 DefaultAttrsIntrinsic<[],
4412 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty],
4413 [IntrArgMemOnly]>;
4414 def int_x86_avx512_mask_pmovs_qb_512 :
4415 ClangBuiltin<"__builtin_ia32_pmovsqb512_mask">,
4416 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4417 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty],
4418 [IntrNoMem]>;
4419 def int_x86_avx512_mask_pmovs_qb_mem_512 :
4420 ClangBuiltin<"__builtin_ia32_pmovsqb512mem_mask">,
4421 DefaultAttrsIntrinsic<[],
4422 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty],
4423 [IntrArgMemOnly]>;
4424 def int_x86_avx512_mask_pmovus_qb_512 :
4425 ClangBuiltin<"__builtin_ia32_pmovusqb512_mask">,
4426 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4427 [llvm_v8i64_ty, llvm_v16i8_ty, llvm_i8_ty],
4428 [IntrNoMem]>;
4429 def int_x86_avx512_mask_pmovus_qb_mem_512 :
4430 ClangBuiltin<"__builtin_ia32_pmovusqb512mem_mask">,
4431 DefaultAttrsIntrinsic<[],
4432 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty],
4433 [IntrArgMemOnly]>;
4434 def int_x86_avx512_mask_pmov_qw_128 :
4435 ClangBuiltin<"__builtin_ia32_pmovqw128_mask">,
4436 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4437 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty],
4438 [IntrNoMem]>;
4439 def int_x86_avx512_mask_pmov_qw_mem_128 :
4440 ClangBuiltin<"__builtin_ia32_pmovqw128mem_mask">,
4441 DefaultAttrsIntrinsic<[],
4442 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty],
4443 [IntrArgMemOnly]>;
4444 def int_x86_avx512_mask_pmovs_qw_128 :
4445 ClangBuiltin<"__builtin_ia32_pmovsqw128_mask">,
4446 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4447 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty],
4448 [IntrNoMem]>;
4449 def int_x86_avx512_mask_pmovs_qw_mem_128 :
4450 ClangBuiltin<"__builtin_ia32_pmovsqw128mem_mask">,
4451 DefaultAttrsIntrinsic<[],
4452 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty],
4453 [IntrArgMemOnly]>;
4454 def int_x86_avx512_mask_pmovus_qw_128 :
4455 ClangBuiltin<"__builtin_ia32_pmovusqw128_mask">,
4456 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4457 [llvm_v2i64_ty, llvm_v8i16_ty, llvm_i8_ty],
4458 [IntrNoMem]>;
4459 def int_x86_avx512_mask_pmovus_qw_mem_128 :
4460 ClangBuiltin<"__builtin_ia32_pmovusqw128mem_mask">,
4461 DefaultAttrsIntrinsic<[],
4462 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty],
4463 [IntrArgMemOnly]>;
4464 def int_x86_avx512_mask_pmov_qw_256 :
4465 ClangBuiltin<"__builtin_ia32_pmovqw256_mask">,
4466 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4467 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty],
4468 [IntrNoMem]>;
4469 def int_x86_avx512_mask_pmov_qw_mem_256 :
4470 ClangBuiltin<"__builtin_ia32_pmovqw256mem_mask">,
4471 DefaultAttrsIntrinsic<[],
4472 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty],
4473 [IntrArgMemOnly]>;
4474 def int_x86_avx512_mask_pmovs_qw_256 :
4475 ClangBuiltin<"__builtin_ia32_pmovsqw256_mask">,
4476 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4477 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty],
4478 [IntrNoMem]>;
4479 def int_x86_avx512_mask_pmovs_qw_mem_256 :
4480 ClangBuiltin<"__builtin_ia32_pmovsqw256mem_mask">,
4481 DefaultAttrsIntrinsic<[],
4482 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty],
4483 [IntrArgMemOnly]>;
4484 def int_x86_avx512_mask_pmovus_qw_256 :
4485 ClangBuiltin<"__builtin_ia32_pmovusqw256_mask">,
4486 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4487 [llvm_v4i64_ty, llvm_v8i16_ty, llvm_i8_ty],
4488 [IntrNoMem]>;
4489 def int_x86_avx512_mask_pmovus_qw_mem_256 :
4490 ClangBuiltin<"__builtin_ia32_pmovusqw256mem_mask">,
4491 DefaultAttrsIntrinsic<[],
4492 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty],
4493 [IntrArgMemOnly]>;
4494 def int_x86_avx512_mask_pmov_qw_512 :
4495 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4496 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty],
4497 [IntrNoMem]>;
4498 def int_x86_avx512_mask_pmov_qw_mem_512 :
4499 ClangBuiltin<"__builtin_ia32_pmovqw512mem_mask">,
4500 DefaultAttrsIntrinsic<[],
4501 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty],
4502 [IntrArgMemOnly]>;
4503 def int_x86_avx512_mask_pmovs_qw_512 :
4504 ClangBuiltin<"__builtin_ia32_pmovsqw512_mask">,
4505 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4506 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty],
4507 [IntrNoMem]>;
4508 def int_x86_avx512_mask_pmovs_qw_mem_512 :
4509 ClangBuiltin<"__builtin_ia32_pmovsqw512mem_mask">,
4510 DefaultAttrsIntrinsic<[],
4511 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty],
4512 [IntrArgMemOnly]>;
4513 def int_x86_avx512_mask_pmovus_qw_512 :
4514 ClangBuiltin<"__builtin_ia32_pmovusqw512_mask">,
4515 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4516 [llvm_v8i64_ty, llvm_v8i16_ty, llvm_i8_ty],
4517 [IntrNoMem]>;
4518 def int_x86_avx512_mask_pmovus_qw_mem_512 :
4519 ClangBuiltin<"__builtin_ia32_pmovusqw512mem_mask">,
4520 DefaultAttrsIntrinsic<[],
4521 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty],
4522 [IntrArgMemOnly]>;
4523 def int_x86_avx512_mask_pmov_qd_128 :
4524 ClangBuiltin<"__builtin_ia32_pmovqd128_mask">,
4525 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
4526 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty],
4527 [IntrNoMem]>;
4528 def int_x86_avx512_mask_pmov_qd_mem_128 :
4529 ClangBuiltin<"__builtin_ia32_pmovqd128mem_mask">,
4530 DefaultAttrsIntrinsic<[],
4531 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty],
4532 [IntrArgMemOnly]>;
4533 def int_x86_avx512_mask_pmovs_qd_128 :
4534 ClangBuiltin<"__builtin_ia32_pmovsqd128_mask">,
4535 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
4536 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty],
4537 [IntrNoMem]>;
4538 def int_x86_avx512_mask_pmovs_qd_mem_128 :
4539 ClangBuiltin<"__builtin_ia32_pmovsqd128mem_mask">,
4540 DefaultAttrsIntrinsic<[],
4541 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty],
4542 [IntrArgMemOnly]>;
4543 def int_x86_avx512_mask_pmovus_qd_128 :
4544 ClangBuiltin<"__builtin_ia32_pmovusqd128_mask">,
4545 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
4546 [llvm_v2i64_ty, llvm_v4i32_ty, llvm_i8_ty],
4547 [IntrNoMem]>;
4548 def int_x86_avx512_mask_pmovus_qd_mem_128 :
4549 ClangBuiltin<"__builtin_ia32_pmovusqd128mem_mask">,
4550 DefaultAttrsIntrinsic<[],
4551 [llvm_ptr_ty, llvm_v2i64_ty, llvm_i8_ty],
4552 [IntrArgMemOnly]>;
4553 def int_x86_avx512_mask_pmov_qd_mem_256 :
4554 ClangBuiltin<"__builtin_ia32_pmovqd256mem_mask">,
4555 DefaultAttrsIntrinsic<[],
4556 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty],
4557 [IntrArgMemOnly]>;
4558 def int_x86_avx512_mask_pmovs_qd_256 :
4559 ClangBuiltin<"__builtin_ia32_pmovsqd256_mask">,
4560 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
4561 [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty],
4562 [IntrNoMem]>;
4563 def int_x86_avx512_mask_pmovs_qd_mem_256 :
4564 ClangBuiltin<"__builtin_ia32_pmovsqd256mem_mask">,
4565 DefaultAttrsIntrinsic<[],
4566 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty],
4567 [IntrArgMemOnly]>;
4568 def int_x86_avx512_mask_pmovus_qd_256 :
4569 ClangBuiltin<"__builtin_ia32_pmovusqd256_mask">,
4570 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
4571 [llvm_v4i64_ty, llvm_v4i32_ty, llvm_i8_ty],
4572 [IntrNoMem]>;
4573 def int_x86_avx512_mask_pmovus_qd_mem_256 :
4574 ClangBuiltin<"__builtin_ia32_pmovusqd256mem_mask">,
4575 DefaultAttrsIntrinsic<[],
4576 [llvm_ptr_ty, llvm_v4i64_ty, llvm_i8_ty],
4577 [IntrArgMemOnly]>;
4578 def int_x86_avx512_mask_pmov_qd_mem_512 :
4579 ClangBuiltin<"__builtin_ia32_pmovqd512mem_mask">,
4580 DefaultAttrsIntrinsic<[],
4581 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty],
4582 [IntrArgMemOnly]>;
4583 def int_x86_avx512_mask_pmovs_qd_512 :
4584 ClangBuiltin<"__builtin_ia32_pmovsqd512_mask">,
4585 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
4586 [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty],
4587 [IntrNoMem]>;
4588 def int_x86_avx512_mask_pmovs_qd_mem_512 :
4589 ClangBuiltin<"__builtin_ia32_pmovsqd512mem_mask">,
4590 DefaultAttrsIntrinsic<[],
4591 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty],
4592 [IntrArgMemOnly]>;
4593 def int_x86_avx512_mask_pmovus_qd_512 :
4594 ClangBuiltin<"__builtin_ia32_pmovusqd512_mask">,
4595 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
4596 [llvm_v8i64_ty, llvm_v8i32_ty, llvm_i8_ty],
4597 [IntrNoMem]>;
4598 def int_x86_avx512_mask_pmovus_qd_mem_512 :
4599 ClangBuiltin<"__builtin_ia32_pmovusqd512mem_mask">,
4600 DefaultAttrsIntrinsic<[],
4601 [llvm_ptr_ty, llvm_v8i64_ty, llvm_i8_ty],
4602 [IntrArgMemOnly]>;
4603 def int_x86_avx512_mask_pmov_db_128 :
4604 ClangBuiltin<"__builtin_ia32_pmovdb128_mask">,
4605 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4606 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty],
4607 [IntrNoMem]>;
4608 def int_x86_avx512_mask_pmov_db_mem_128 :
4609 ClangBuiltin<"__builtin_ia32_pmovdb128mem_mask">,
4610 DefaultAttrsIntrinsic<[],
4611 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty],
4612 [IntrArgMemOnly]>;
4613 def int_x86_avx512_mask_pmovs_db_128 :
4614 ClangBuiltin<"__builtin_ia32_pmovsdb128_mask">,
4615 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4616 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty],
4617 [IntrNoMem]>;
4618 def int_x86_avx512_mask_pmovs_db_mem_128 :
4619 ClangBuiltin<"__builtin_ia32_pmovsdb128mem_mask">,
4620 DefaultAttrsIntrinsic<[],
4621 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty],
4622 [IntrArgMemOnly]>;
4623 def int_x86_avx512_mask_pmovus_db_128 :
4624 ClangBuiltin<"__builtin_ia32_pmovusdb128_mask">,
4625 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4626 [llvm_v4i32_ty, llvm_v16i8_ty, llvm_i8_ty],
4627 [IntrNoMem]>;
4628 def int_x86_avx512_mask_pmovus_db_mem_128 :
4629 ClangBuiltin<"__builtin_ia32_pmovusdb128mem_mask">,
4630 DefaultAttrsIntrinsic<[],
4631 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty],
4632 [IntrArgMemOnly]>;
4633 def int_x86_avx512_mask_pmov_db_256 :
4634 ClangBuiltin<"__builtin_ia32_pmovdb256_mask">,
4635 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4636 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty],
4637 [IntrNoMem]>;
4638 def int_x86_avx512_mask_pmov_db_mem_256 :
4639 ClangBuiltin<"__builtin_ia32_pmovdb256mem_mask">,
4640 DefaultAttrsIntrinsic<[],
4641 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty],
4642 [IntrArgMemOnly]>;
4643 def int_x86_avx512_mask_pmovs_db_256 :
4644 ClangBuiltin<"__builtin_ia32_pmovsdb256_mask">,
4645 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4646 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty],
4647 [IntrNoMem]>;
4648 def int_x86_avx512_mask_pmovs_db_mem_256 :
4649 ClangBuiltin<"__builtin_ia32_pmovsdb256mem_mask">,
4650 DefaultAttrsIntrinsic<[],
4651 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty],
4652 [IntrArgMemOnly]>;
4653 def int_x86_avx512_mask_pmovus_db_256 :
4654 ClangBuiltin<"__builtin_ia32_pmovusdb256_mask">,
4655 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4656 [llvm_v8i32_ty, llvm_v16i8_ty, llvm_i8_ty],
4657 [IntrNoMem]>;
4658 def int_x86_avx512_mask_pmovus_db_mem_256 :
4659 ClangBuiltin<"__builtin_ia32_pmovusdb256mem_mask">,
4660 DefaultAttrsIntrinsic<[],
4661 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty],
4662 [IntrArgMemOnly]>;
4663 def int_x86_avx512_mask_pmov_db_512 :
4664 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4665 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty],
4666 [IntrNoMem]>;
4667 def int_x86_avx512_mask_pmov_db_mem_512 :
4668 ClangBuiltin<"__builtin_ia32_pmovdb512mem_mask">,
4669 DefaultAttrsIntrinsic<[],
4670 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty],
4671 [IntrArgMemOnly]>;
4672 def int_x86_avx512_mask_pmovs_db_512 :
4673 ClangBuiltin<"__builtin_ia32_pmovsdb512_mask">,
4674 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4675 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty],
4676 [IntrNoMem]>;
4677 def int_x86_avx512_mask_pmovs_db_mem_512 :
4678 ClangBuiltin<"__builtin_ia32_pmovsdb512mem_mask">,
4679 DefaultAttrsIntrinsic<[],
4680 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty],
4681 [IntrArgMemOnly]>;
4682 def int_x86_avx512_mask_pmovus_db_512 :
4683 ClangBuiltin<"__builtin_ia32_pmovusdb512_mask">,
4684 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4685 [llvm_v16i32_ty, llvm_v16i8_ty, llvm_i16_ty],
4686 [IntrNoMem]>;
4687 def int_x86_avx512_mask_pmovus_db_mem_512 :
4688 ClangBuiltin<"__builtin_ia32_pmovusdb512mem_mask">,
4689 DefaultAttrsIntrinsic<[],
4690 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty],
4691 [IntrArgMemOnly]>;
4692 def int_x86_avx512_mask_pmov_dw_128 :
4693 ClangBuiltin<"__builtin_ia32_pmovdw128_mask">,
4694 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4695 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty],
4696 [IntrNoMem]>;
4697 def int_x86_avx512_mask_pmov_dw_mem_128 :
4698 ClangBuiltin<"__builtin_ia32_pmovdw128mem_mask">,
4699 DefaultAttrsIntrinsic<[],
4700 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty],
4701 [IntrArgMemOnly]>;
4702 def int_x86_avx512_mask_pmovs_dw_128 :
4703 ClangBuiltin<"__builtin_ia32_pmovsdw128_mask">,
4704 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4705 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty],
4706 [IntrNoMem]>;
4707 def int_x86_avx512_mask_pmovs_dw_mem_128 :
4708 ClangBuiltin<"__builtin_ia32_pmovsdw128mem_mask">,
4709 DefaultAttrsIntrinsic<[],
4710 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty],
4711 [IntrArgMemOnly]>;
4712 def int_x86_avx512_mask_pmovus_dw_128 :
4713 ClangBuiltin<"__builtin_ia32_pmovusdw128_mask">,
4714 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4715 [llvm_v4i32_ty, llvm_v8i16_ty, llvm_i8_ty],
4716 [IntrNoMem]>;
4717 def int_x86_avx512_mask_pmovus_dw_mem_128 :
4718 ClangBuiltin<"__builtin_ia32_pmovusdw128mem_mask">,
4719 DefaultAttrsIntrinsic<[],
4720 [llvm_ptr_ty, llvm_v4i32_ty, llvm_i8_ty],
4721 [IntrArgMemOnly]>;
4722 def int_x86_avx512_mask_pmov_dw_256 :
4723 ClangBuiltin<"__builtin_ia32_pmovdw256_mask">,
4724 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4725 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty],
4726 [IntrNoMem]>;
4727 def int_x86_avx512_mask_pmov_dw_mem_256 :
4728 ClangBuiltin<"__builtin_ia32_pmovdw256mem_mask">,
4729 DefaultAttrsIntrinsic<[],
4730 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty],
4731 [IntrArgMemOnly]>;
4732 def int_x86_avx512_mask_pmovs_dw_256 :
4733 ClangBuiltin<"__builtin_ia32_pmovsdw256_mask">,
4734 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4735 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty],
4736 [IntrNoMem]>;
4737 def int_x86_avx512_mask_pmovs_dw_mem_256 :
4738 ClangBuiltin<"__builtin_ia32_pmovsdw256mem_mask">,
4739 DefaultAttrsIntrinsic<[],
4740 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty],
4741 [IntrArgMemOnly]>;
4742 def int_x86_avx512_mask_pmovus_dw_256 :
4743 ClangBuiltin<"__builtin_ia32_pmovusdw256_mask">,
4744 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
4745 [llvm_v8i32_ty, llvm_v8i16_ty, llvm_i8_ty],
4746 [IntrNoMem]>;
4747 def int_x86_avx512_mask_pmovus_dw_mem_256 :
4748 ClangBuiltin<"__builtin_ia32_pmovusdw256mem_mask">,
4749 DefaultAttrsIntrinsic<[],
4750 [llvm_ptr_ty, llvm_v8i32_ty, llvm_i8_ty],
4751 [IntrArgMemOnly]>;
4752 def int_x86_avx512_mask_pmov_dw_512 :
4753 DefaultAttrsIntrinsic<[llvm_v16i16_ty],
4754 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty],
4755 [IntrNoMem]>;
4756 def int_x86_avx512_mask_pmov_dw_mem_512 :
4757 ClangBuiltin<"__builtin_ia32_pmovdw512mem_mask">,
4758 DefaultAttrsIntrinsic<[],
4759 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty],
4760 [IntrArgMemOnly]>;
4761 def int_x86_avx512_mask_pmovs_dw_512 :
4762 ClangBuiltin<"__builtin_ia32_pmovsdw512_mask">,
4763 DefaultAttrsIntrinsic<[llvm_v16i16_ty],
4764 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty],
4765 [IntrNoMem]>;
4766 def int_x86_avx512_mask_pmovs_dw_mem_512 :
4767 ClangBuiltin<"__builtin_ia32_pmovsdw512mem_mask">,
4768 DefaultAttrsIntrinsic<[],
4769 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty],
4770 [IntrArgMemOnly]>;
4771 def int_x86_avx512_mask_pmovus_dw_512 :
4772 ClangBuiltin<"__builtin_ia32_pmovusdw512_mask">,
4773 DefaultAttrsIntrinsic<[llvm_v16i16_ty],
4774 [llvm_v16i32_ty, llvm_v16i16_ty, llvm_i16_ty],
4775 [IntrNoMem]>;
4776 def int_x86_avx512_mask_pmovus_dw_mem_512 :
4777 ClangBuiltin<"__builtin_ia32_pmovusdw512mem_mask">,
4778 DefaultAttrsIntrinsic<[],
4779 [llvm_ptr_ty, llvm_v16i32_ty, llvm_i16_ty],
4780 [IntrArgMemOnly]>;
4781 def int_x86_avx512_mask_pmov_wb_128 :
4782 ClangBuiltin<"__builtin_ia32_pmovwb128_mask">,
4783 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4784 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty],
4785 [IntrNoMem]>;
4786 def int_x86_avx512_mask_pmov_wb_mem_128 :
4787 ClangBuiltin<"__builtin_ia32_pmovwb128mem_mask">,
4788 DefaultAttrsIntrinsic<[],
4789 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty],
4790 [IntrArgMemOnly]>;
4791 def int_x86_avx512_mask_pmovs_wb_128 :
4792 ClangBuiltin<"__builtin_ia32_pmovswb128_mask">,
4793 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4794 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty],
4795 [IntrNoMem]>;
4796 def int_x86_avx512_mask_pmovs_wb_mem_128 :
4797 ClangBuiltin<"__builtin_ia32_pmovswb128mem_mask">,
4798 DefaultAttrsIntrinsic<[],
4799 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty],
4800 [IntrArgMemOnly]>;
4801 def int_x86_avx512_mask_pmovus_wb_128 :
4802 ClangBuiltin<"__builtin_ia32_pmovuswb128_mask">,
4803 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4804 [llvm_v8i16_ty, llvm_v16i8_ty, llvm_i8_ty],
4805 [IntrNoMem]>;
4806 def int_x86_avx512_mask_pmovus_wb_mem_128 :
4807 ClangBuiltin<"__builtin_ia32_pmovuswb128mem_mask">,
4808 DefaultAttrsIntrinsic<[],
4809 [llvm_ptr_ty, llvm_v8i16_ty, llvm_i8_ty],
4810 [IntrArgMemOnly]>;
4811 def int_x86_avx512_mask_pmov_wb_mem_256 :
4812 ClangBuiltin<"__builtin_ia32_pmovwb256mem_mask">,
4813 DefaultAttrsIntrinsic<[],
4814 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty],
4815 [IntrArgMemOnly]>;
4816 def int_x86_avx512_mask_pmovs_wb_256 :
4817 ClangBuiltin<"__builtin_ia32_pmovswb256_mask">,
4818 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4819 [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty],
4820 [IntrNoMem]>;
4821 def int_x86_avx512_mask_pmovs_wb_mem_256 :
4822 ClangBuiltin<"__builtin_ia32_pmovswb256mem_mask">,
4823 DefaultAttrsIntrinsic<[],
4824 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty],
4825 [IntrArgMemOnly]>;
4826 def int_x86_avx512_mask_pmovus_wb_256 :
4827 ClangBuiltin<"__builtin_ia32_pmovuswb256_mask">,
4828 DefaultAttrsIntrinsic<[llvm_v16i8_ty],
4829 [llvm_v16i16_ty, llvm_v16i8_ty, llvm_i16_ty],
4830 [IntrNoMem]>;
4831 def int_x86_avx512_mask_pmovus_wb_mem_256 :
4832 ClangBuiltin<"__builtin_ia32_pmovuswb256mem_mask">,
4833 DefaultAttrsIntrinsic<[],
4834 [llvm_ptr_ty, llvm_v16i16_ty, llvm_i16_ty],
4835 [IntrArgMemOnly]>;
4836 def int_x86_avx512_mask_pmov_wb_mem_512 :
4837 ClangBuiltin<"__builtin_ia32_pmovwb512mem_mask">,
4838 DefaultAttrsIntrinsic<[],
4839 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty],
4840 [IntrArgMemOnly]>;
4841 def int_x86_avx512_mask_pmovs_wb_512 :
4842 ClangBuiltin<"__builtin_ia32_pmovswb512_mask">,
4843 DefaultAttrsIntrinsic<[llvm_v32i8_ty],
4844 [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty],
4845 [IntrNoMem]>;
4846 def int_x86_avx512_mask_pmovs_wb_mem_512 :
4847 ClangBuiltin<"__builtin_ia32_pmovswb512mem_mask">,
4848 DefaultAttrsIntrinsic<[],
4849 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty],
4850 [IntrArgMemOnly]>;
4851 def int_x86_avx512_mask_pmovus_wb_512 :
4852 ClangBuiltin<"__builtin_ia32_pmovuswb512_mask">,
4853 DefaultAttrsIntrinsic<[llvm_v32i8_ty],
4854 [llvm_v32i16_ty, llvm_v32i8_ty, llvm_i32_ty],
4855 [IntrNoMem]>;
4856 def int_x86_avx512_mask_pmovus_wb_mem_512 :
4857 ClangBuiltin<"__builtin_ia32_pmovuswb512mem_mask">,
4858 DefaultAttrsIntrinsic<[],
4859 [llvm_ptr_ty, llvm_v32i16_ty, llvm_i32_ty],
4860 [IntrArgMemOnly]>;
4861 }
4862
4863 // Bitwise ternary logic
4864 let TargetPrefix = "x86" in {
4865 def int_x86_avx512_pternlog_d_128 :
4866 ClangBuiltin<"__builtin_ia32_pternlogd128">,
4867 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
4868 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty,
4869 llvm_i32_ty],
4870 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
4871
4872 def int_x86_avx512_pternlog_d_256 :
4873 ClangBuiltin<"__builtin_ia32_pternlogd256">,
4874 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
4875 [llvm_v8i32_ty, llvm_v8i32_ty, llvm_v8i32_ty,
4876 llvm_i32_ty],
4877 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
4878
4879 def int_x86_avx512_pternlog_d_512 :
4880 ClangBuiltin<"__builtin_ia32_pternlogd512">,
4881 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
4882 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty,
4883 llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>]>;
4884
4885 def int_x86_avx512_pternlog_q_128 :
4886 ClangBuiltin<"__builtin_ia32_pternlogq128">,
4887 DefaultAttrsIntrinsic<[llvm_v2i64_ty],
4888 [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty,
4889 llvm_i32_ty],
4890 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
4891
4892 def int_x86_avx512_pternlog_q_256 :
4893 ClangBuiltin<"__builtin_ia32_pternlogq256">,
4894 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
4895 [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v4i64_ty,
4896 llvm_i32_ty],
4897 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
4898
4899 def int_x86_avx512_pternlog_q_512 :
4900 ClangBuiltin<"__builtin_ia32_pternlogq512">,
4901 DefaultAttrsIntrinsic<[llvm_v8i64_ty],
4902 [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty,
4903 llvm_i32_ty],
4904 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
4905 }
4906
4907 // vp2intersect
4908 let TargetPrefix = "x86" in {
4909 def int_x86_avx512_vp2intersect_q_512 :
4910 DefaultAttrsIntrinsic<[llvm_v8i1_ty, llvm_v8i1_ty],
4911 [llvm_v8i64_ty, llvm_v8i64_ty],
4912 [IntrNoMem]>;
4913 def int_x86_avx512_vp2intersect_q_256 :
4914 DefaultAttrsIntrinsic<[llvm_v4i1_ty, llvm_v4i1_ty],
4915 [llvm_v4i64_ty, llvm_v4i64_ty],
4916 [IntrNoMem]>;
4917 def int_x86_avx512_vp2intersect_q_128 :
4918 DefaultAttrsIntrinsic<[llvm_v2i1_ty, llvm_v2i1_ty],
4919 [llvm_v2i64_ty, llvm_v2i64_ty],
4920 [IntrNoMem]>;
4921 def int_x86_avx512_vp2intersect_d_512 :
4922 DefaultAttrsIntrinsic<[llvm_v16i1_ty, llvm_v16i1_ty],
4923 [llvm_v16i32_ty, llvm_v16i32_ty],
4924 [IntrNoMem]>;
4925 def int_x86_avx512_vp2intersect_d_256 :
4926 DefaultAttrsIntrinsic<[llvm_v8i1_ty, llvm_v8i1_ty],
4927 [llvm_v8i32_ty, llvm_v8i32_ty],
4928 [IntrNoMem]>;
4929 def int_x86_avx512_vp2intersect_d_128 :
4930 DefaultAttrsIntrinsic<[llvm_v4i1_ty, llvm_v4i1_ty],
4931 [llvm_v4i32_ty, llvm_v4i32_ty],
4932 [IntrNoMem]>;
4933 }
4934
4935 // Misc.
4936 let TargetPrefix = "x86" in {
4937 // NOTE: These comparison intrinsics are not used by clang as long as the
4938 // distinction in signaling behaviour is not implemented.
4939 def int_x86_avx512_mask_cmp_ps_512 :
4940 DefaultAttrsIntrinsic<[llvm_v16i1_ty], [llvm_v16f32_ty, llvm_v16f32_ty,
4941 llvm_i32_ty, llvm_v16i1_ty, llvm_i32_ty],
4942 [IntrNoMem, ImmArg<ArgIndex<2>>,
4943 ImmArg<ArgIndex<4>>]>;
4944 def int_x86_avx512_mask_cmp_pd_512 :
4945 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8f64_ty, llvm_v8f64_ty,
4946 llvm_i32_ty, llvm_v8i1_ty, llvm_i32_ty],
4947 [IntrNoMem, ImmArg<ArgIndex<2>>,
4948 ImmArg<ArgIndex<4>>]>;
4949 def int_x86_avx512_mask_cmp_ps_256 :
4950 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8f32_ty, llvm_v8f32_ty,
4951 llvm_i32_ty, llvm_v8i1_ty],
4952 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
4953 def int_x86_avx512_mask_cmp_pd_256 :
4954 DefaultAttrsIntrinsic<[llvm_v4i1_ty], [llvm_v4f64_ty, llvm_v4f64_ty,
4955 llvm_i32_ty, llvm_v4i1_ty],
4956 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
4957 def int_x86_avx512_mask_cmp_ps_128 :
4958 DefaultAttrsIntrinsic<[llvm_v4i1_ty], [llvm_v4f32_ty, llvm_v4f32_ty,
4959 llvm_i32_ty, llvm_v4i1_ty],
4960 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
4961 def int_x86_avx512_mask_cmp_pd_128 :
4962 DefaultAttrsIntrinsic<[llvm_v2i1_ty], [llvm_v2f64_ty, llvm_v2f64_ty,
4963 llvm_i32_ty, llvm_v2i1_ty],
4964 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
4965
4966 def int_x86_avx512_mask_cmp_ss :
4967 ClangBuiltin<"__builtin_ia32_cmpss_mask">,
4968 DefaultAttrsIntrinsic<[llvm_i8_ty], [llvm_v4f32_ty, llvm_v4f32_ty,
4969 llvm_i32_ty, llvm_i8_ty, llvm_i32_ty],
4970 [IntrNoMem, ImmArg<ArgIndex<2>>,
4971 ImmArg<ArgIndex<4>>]>;
4972 def int_x86_avx512_mask_cmp_sd :
4973 ClangBuiltin<"__builtin_ia32_cmpsd_mask">,
4974 DefaultAttrsIntrinsic<[llvm_i8_ty], [llvm_v2f64_ty, llvm_v2f64_ty,
4975 llvm_i32_ty, llvm_i8_ty, llvm_i32_ty],
4976 [IntrNoMem, ImmArg<ArgIndex<2>>,
4977 ImmArg<ArgIndex<4>>]>;
4978 }
4979
4980 //===----------------------------------------------------------------------===//
4981 // AVX10.2 intrinsics
4982 let TargetPrefix = "x86" in {
4983 // VNNI FP16
4984 def int_x86_avx10_vdpphps_128 :
4985 ClangBuiltin<"__builtin_ia32_vdpphps128">,
4986 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
4987 [llvm_v4f32_ty, llvm_v8f16_ty, llvm_v8f16_ty],
4988 [IntrNoMem]>;
4989 def int_x86_avx10_vdpphps_256 :
4990 ClangBuiltin<"__builtin_ia32_vdpphps256">,
4991 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
4992 [llvm_v8f32_ty, llvm_v16f16_ty, llvm_v16f16_ty],
4993 [IntrNoMem]>;
4994 def int_x86_avx10_vdpphps_512 :
4995 ClangBuiltin<"__builtin_ia32_vdpphps512">,
4996 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
4997 [llvm_v16f32_ty, llvm_v32f16_ty, llvm_v32f16_ty],
4998 [IntrNoMem]>;
4999 // VNNI INT8
5000 def int_x86_avx10_vpdpbssd_512 :
5001 ClangBuiltin<"__builtin_ia32_vpdpbssd512">,
5002 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5003 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5004 [IntrNoMem]>;
5005 def int_x86_avx10_vpdpbssds_512 :
5006 ClangBuiltin<"__builtin_ia32_vpdpbssds512">,
5007 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5008 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5009 [IntrNoMem]>;
5010 def int_x86_avx10_vpdpbsud_512 :
5011 ClangBuiltin<"__builtin_ia32_vpdpbsud512">,
5012 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5013 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5014 [IntrNoMem]>;
5015 def int_x86_avx10_vpdpbsuds_512 :
5016 ClangBuiltin<"__builtin_ia32_vpdpbsuds512">,
5017 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5018 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5019 [IntrNoMem]>;
5020 def int_x86_avx10_vpdpbuud_512 :
5021 ClangBuiltin<"__builtin_ia32_vpdpbuud512">,
5022 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5023 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5024 [IntrNoMem]>;
5025 def int_x86_avx10_vpdpbuuds_512 :
5026 ClangBuiltin<"__builtin_ia32_vpdpbuuds512">,
5027 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5028 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5029 [IntrNoMem]>;
5030 // VNNI INT16
5031 def int_x86_avx10_vpdpwsud_512 :
5032 ClangBuiltin<"__builtin_ia32_vpdpwsud512">,
5033 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5034 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5035 [IntrNoMem]>;
5036 def int_x86_avx10_vpdpwsuds_512 :
5037 ClangBuiltin<"__builtin_ia32_vpdpwsuds512">,
5038 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5039 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5040 [IntrNoMem]>;
5041 def int_x86_avx10_vpdpwusd_512 :
5042 ClangBuiltin<"__builtin_ia32_vpdpwusd512">,
5043 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5044 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5045 [IntrNoMem]>;
5046 def int_x86_avx10_vpdpwusds_512 :
5047 ClangBuiltin<"__builtin_ia32_vpdpwusds512">,
5048 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5049 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5050 [IntrNoMem]>;
5051 def int_x86_avx10_vpdpwuud_512 :
5052 ClangBuiltin<"__builtin_ia32_vpdpwuud512">,
5053 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5054 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5055 [IntrNoMem]>;
5056 def int_x86_avx10_vpdpwuuds_512 :
5057 ClangBuiltin<"__builtin_ia32_vpdpwuuds512">,
5058 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
5059 [llvm_v16i32_ty, llvm_v16i32_ty, llvm_v16i32_ty],
5060 [IntrNoMem]>;
5061
5062 // VMPSADBW
5063 def int_x86_avx10_vmpsadbw_512 :
5064 ClangBuiltin<"__builtin_ia32_mpsadbw512">,
5065 DefaultAttrsIntrinsic<[llvm_v32i16_ty],
5066 [llvm_v64i8_ty, llvm_v64i8_ty, llvm_i8_ty],
5067 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5068
5069 // YMM Rounding
5070 def int_x86_avx10_vaddpd256 :
5071 ClangBuiltin<"__builtin_ia32_vaddpd256_round">,
5072 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5073 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty],
5074 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5075 def int_x86_avx10_vaddph256 :
5076 ClangBuiltin<"__builtin_ia32_vaddph256_round">,
5077 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5078 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty],
5079 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5080 def int_x86_avx10_vaddps256 :
5081 ClangBuiltin<"__builtin_ia32_vaddps256_round">,
5082 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5083 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty],
5084 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5085 def int_x86_avx10_mask_vcmppd256 :
5086 DefaultAttrsIntrinsic<[llvm_v4i1_ty],
5087 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, llvm_v4i1_ty, llvm_i32_ty],
5088 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<4>>]>;
5089 def int_x86_avx10_mask_vcmpph256 :
5090 DefaultAttrsIntrinsic<[llvm_v16i1_ty],
5091 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty, llvm_v16i1_ty, llvm_i32_ty],
5092 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<4>>]>;
5093 def int_x86_avx10_mask_vcmpps256 :
5094 DefaultAttrsIntrinsic<[llvm_v8i1_ty],
5095 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, llvm_v8i1_ty, llvm_i32_ty],
5096 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<4>>]>;
5097 def int_x86_avx10_mask_vcvtpd2dq256 :
5098 ClangBuiltin<"__builtin_ia32_vcvtpd2dq256_round_mask">,
5099 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
5100 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
5101 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5102 def int_x86_avx10_mask_vcvtpd2ph256 :
5103 ClangBuiltin<"__builtin_ia32_vcvtpd2ph256_round_mask">,
5104 DefaultAttrsIntrinsic<[llvm_v8f16_ty],
5105 [llvm_v4f64_ty, llvm_v8f16_ty, llvm_i8_ty, llvm_i32_ty],
5106 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5107 def int_x86_avx10_mask_vcvtpd2ps256 :
5108 ClangBuiltin<"__builtin_ia32_vcvtpd2ps256_round_mask">,
5109 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
5110 [llvm_v4f64_ty, llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty],
5111 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5112 def int_x86_avx10_mask_vcvtpd2qq256 :
5113 ClangBuiltin<"__builtin_ia32_vcvtpd2qq256_round_mask">,
5114 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5115 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5116 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5117 def int_x86_avx10_mask_vcvtpd2udq256 :
5118 ClangBuiltin<"__builtin_ia32_vcvtpd2udq256_round_mask">,
5119 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
5120 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
5121 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5122 def int_x86_avx10_mask_vcvtpd2uqq256 :
5123 ClangBuiltin<"__builtin_ia32_vcvtpd2uqq256_round_mask">,
5124 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5125 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5126 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5127 def int_x86_avx10_mask_vcvtph2dq256 :
5128 ClangBuiltin<"__builtin_ia32_vcvtph2dq256_round_mask">,
5129 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
5130 [llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5131 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5132 def int_x86_avx10_mask_vcvtph2pd256 :
5133 ClangBuiltin<"__builtin_ia32_vcvtph2pd256_round_mask">,
5134 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5135 [llvm_v8f16_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty],
5136 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5137 def int_x86_avx10_mask_vcvtph2psx256 :
5138 ClangBuiltin<"__builtin_ia32_vcvtph2psx256_round_mask">,
5139 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5140 [llvm_v8f16_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5141 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5142 def int_x86_avx10_mask_vcvtph2qq256 :
5143 ClangBuiltin<"__builtin_ia32_vcvtph2qq256_round_mask">,
5144 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5145 [llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5146 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5147 def int_x86_avx10_mask_vcvtph2udq256 :
5148 ClangBuiltin<"__builtin_ia32_vcvtph2udq256_round_mask">,
5149 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
5150 [llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5151 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5152 def int_x86_avx10_mask_vcvtph2uqq256 :
5153 ClangBuiltin<"__builtin_ia32_vcvtph2uqq256_round_mask">,
5154 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5155 [llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5156 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5157 def int_x86_avx10_mask_vcvtph2uw256 :
5158 ClangBuiltin<"__builtin_ia32_vcvtph2uw256_round_mask">,
5159 DefaultAttrsIntrinsic<[llvm_v16i16_ty],
5160 [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty],
5161 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5162 def int_x86_avx10_mask_vcvtph2w256 :
5163 ClangBuiltin<"__builtin_ia32_vcvtph2w256_round_mask">,
5164 DefaultAttrsIntrinsic<[llvm_v16i16_ty],
5165 [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty],
5166 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5167 def int_x86_avx10_mask_vcvtps2dq256 :
5168 ClangBuiltin<"__builtin_ia32_vcvtps2dq256_round_mask">,
5169 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
5170 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5171 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5172 def int_x86_avx10_mask_vcvtps2pd256 :
5173 ClangBuiltin<"__builtin_ia32_vcvtps2pd256_round_mask">,
5174 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5175 [llvm_v4f32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty],
5176 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5177 def int_x86_avx10_mask_vcvtps2ph256 :
5178 ClangBuiltin<"__builtin_ia32_vcvtps2ph256_round_mask">,
5179 DefaultAttrsIntrinsic<[llvm_v8i16_ty],
5180 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8i16_ty, llvm_i8_ty],
5181 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5182 def int_x86_avx10_mask_vcvtps2phx256 :
5183 ClangBuiltin<"__builtin_ia32_vcvtps2phx256_round_mask">,
5184 DefaultAttrsIntrinsic<[llvm_v8f16_ty],
5185 [llvm_v8f32_ty, llvm_v8f16_ty, llvm_i8_ty, llvm_i32_ty],
5186 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5187 def int_x86_avx10_mask_vcvtps2qq256 :
5188 ClangBuiltin<"__builtin_ia32_vcvtps2qq256_round_mask">,
5189 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5190 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5191 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5192 def int_x86_avx10_mask_vcvtps2udq256 :
5193 ClangBuiltin<"__builtin_ia32_vcvtps2udq256_round_mask">,
5194 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
5195 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5196 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5197 def int_x86_avx10_mask_vcvtps2uqq256 :
5198 ClangBuiltin<"__builtin_ia32_vcvtps2uqq256_round_mask">,
5199 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5200 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5201 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5202 def int_x86_avx10_mask_vcvttpd2dq256 :
5203 ClangBuiltin<"__builtin_ia32_vcvttpd2dq256_round_mask">,
5204 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
5205 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
5206 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5207 def int_x86_avx10_mask_vcvttpd2qq256 :
5208 ClangBuiltin<"__builtin_ia32_vcvttpd2qq256_round_mask">,
5209 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5210 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5211 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5212 def int_x86_avx10_mask_vcvttpd2udq256 :
5213 ClangBuiltin<"__builtin_ia32_vcvttpd2udq256_round_mask">,
5214 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
5215 [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
5216 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5217 def int_x86_avx10_mask_vcvttpd2uqq256 :
5218 ClangBuiltin<"__builtin_ia32_vcvttpd2uqq256_round_mask">,
5219 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5220 [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5221 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5222 def int_x86_avx10_mask_vcvttph2dq256 :
5223 ClangBuiltin<"__builtin_ia32_vcvttph2dq256_round_mask">,
5224 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
5225 [llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5226 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5227 def int_x86_avx10_mask_vcvttph2qq256 :
5228 ClangBuiltin<"__builtin_ia32_vcvttph2qq256_round_mask">,
5229 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5230 [llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5231 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5232 def int_x86_avx10_mask_vcvttph2udq256 :
5233 ClangBuiltin<"__builtin_ia32_vcvttph2udq256_round_mask">,
5234 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
5235 [llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5236 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5237 def int_x86_avx10_mask_vcvttph2uqq256 :
5238 ClangBuiltin<"__builtin_ia32_vcvttph2uqq256_round_mask">,
5239 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5240 [llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5241 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5242 def int_x86_avx10_mask_vcvttph2uw256 :
5243 ClangBuiltin<"__builtin_ia32_vcvttph2uw256_round_mask">,
5244 DefaultAttrsIntrinsic<[llvm_v16i16_ty],
5245 [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty],
5246 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5247 def int_x86_avx10_mask_vcvttph2w256 :
5248 ClangBuiltin<"__builtin_ia32_vcvttph2w256_round_mask">,
5249 DefaultAttrsIntrinsic<[llvm_v16i16_ty],
5250 [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty],
5251 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5252 def int_x86_avx10_mask_vcvttps2dq256 :
5253 ClangBuiltin<"__builtin_ia32_vcvttps2dq256_round_mask">,
5254 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
5255 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5256 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5257 def int_x86_avx10_mask_vcvttps2qq256 :
5258 ClangBuiltin<"__builtin_ia32_vcvttps2qq256_round_mask">,
5259 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5260 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5261 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5262 def int_x86_avx10_mask_vcvttps2udq256 :
5263 ClangBuiltin<"__builtin_ia32_vcvttps2udq256_round_mask">,
5264 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
5265 [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5266 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5267 def int_x86_avx10_mask_vcvttps2uqq256 :
5268 ClangBuiltin<"__builtin_ia32_vcvttps2uqq256_round_mask">,
5269 DefaultAttrsIntrinsic<[llvm_v4i64_ty],
5270 [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5271 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5272 def int_x86_avx10_vdivpd256 :
5273 ClangBuiltin<"__builtin_ia32_vdivpd256_round">,
5274 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5275 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty],
5276 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5277 def int_x86_avx10_vdivph256 :
5278 ClangBuiltin<"__builtin_ia32_vdivph256_round">,
5279 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5280 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty],
5281 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5282 def int_x86_avx10_vdivps256 :
5283 ClangBuiltin<"__builtin_ia32_vdivps256_round">,
5284 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5285 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty],
5286 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5287 def int_x86_avx10_mask_vfcmaddcph256 :
5288 ClangBuiltin<"__builtin_ia32_vfcmaddcph256_round_mask3">,
5289 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5290 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5291 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
5292 def int_x86_avx10_maskz_vfcmaddcph256 :
5293 ClangBuiltin<"__builtin_ia32_vfcmaddcph256_round_maskz">,
5294 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5295 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5296 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
5297 def int_x86_avx10_mask_vfcmulcph256 :
5298 ClangBuiltin<"__builtin_ia32_vfcmulcph256_round_mask">,
5299 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5300 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5301 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
5302 def int_x86_avx10_mask_vfixupimmpd256 :
5303 ClangBuiltin<"__builtin_ia32_vfixupimmpd256_round_mask">,
5304 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5305 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_i8_ty, llvm_i32_ty],
5306 [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
5307 def int_x86_avx10_maskz_vfixupimmpd256 :
5308 ClangBuiltin<"__builtin_ia32_vfixupimmpd256_round_maskz">,
5309 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5310 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4i64_ty, llvm_i32_ty, llvm_i8_ty, llvm_i32_ty],
5311 [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
5312 def int_x86_avx10_mask_vfixupimmps256 :
5313 ClangBuiltin<"__builtin_ia32_vfixupimmps256_round_mask">,
5314 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5315 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_i8_ty, llvm_i32_ty],
5316 [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
5317 def int_x86_avx10_maskz_vfixupimmps256 :
5318 ClangBuiltin<"__builtin_ia32_vfixupimmps256_round_maskz">,
5319 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5320 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8i32_ty, llvm_i32_ty, llvm_i8_ty, llvm_i32_ty],
5321 [IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<5>>]>;
5322 def int_x86_avx10_vfmaddpd256 :
5323 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5324 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty],
5325 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5326 def int_x86_avx10_vfmaddph256 :
5327 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5328 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty],
5329 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5330 def int_x86_avx10_vfmaddps256 :
5331 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5332 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty],
5333 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5334 def int_x86_avx10_mask_vfmaddcph256 :
5335 ClangBuiltin<"__builtin_ia32_vfmaddcph256_round_mask3">,
5336 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5337 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5338 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
5339 def int_x86_avx10_maskz_vfmaddcph256 :
5340 ClangBuiltin<"__builtin_ia32_vfmaddcph256_round_maskz">,
5341 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5342 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5343 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
5344 def int_x86_avx10_vfmaddsubpd256 :
5345 ClangBuiltin<"__builtin_ia32_vfmaddsubpd256_round">,
5346 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5347 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty],
5348 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5349 def int_x86_avx10_vfmaddsubph256 :
5350 ClangBuiltin<"__builtin_ia32_vfmaddsubph256_round">,
5351 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5352 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty],
5353 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5354 def int_x86_avx10_vfmaddsubps256 :
5355 ClangBuiltin<"__builtin_ia32_vfmaddsubps256_round">,
5356 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5357 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty],
5358 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5359 def int_x86_avx10_mask_vfmulcph256 :
5360 ClangBuiltin<"__builtin_ia32_vfmulcph256_round_mask">,
5361 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5362 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5363 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
5364 def int_x86_avx10_mask_vgetexppd256 :
5365 ClangBuiltin<"__builtin_ia32_vgetexppd256_round_mask">,
5366 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5367 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty],
5368 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5369 def int_x86_avx10_mask_vgetexpph256 :
5370 ClangBuiltin<"__builtin_ia32_vgetexpph256_round_mask">,
5371 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5372 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty],
5373 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5374 def int_x86_avx10_mask_vgetexpps256 :
5375 ClangBuiltin<"__builtin_ia32_vgetexpps256_round_mask">,
5376 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5377 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5378 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5379 def int_x86_avx10_mask_vgetmantpd256 :
5380 ClangBuiltin<"__builtin_ia32_vgetmantpd256_round_mask">,
5381 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5382 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty],
5383 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
5384 def int_x86_avx10_mask_vgetmantph256 :
5385 ClangBuiltin<"__builtin_ia32_vgetmantph256_round_mask">,
5386 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5387 [llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty],
5388 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
5389 def int_x86_avx10_mask_vgetmantps256 :
5390 ClangBuiltin<"__builtin_ia32_vgetmantps256_round_mask">,
5391 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5392 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5393 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
5394 def int_x86_avx10_vmaxpd256 :
5395 ClangBuiltin<"__builtin_ia32_vmaxpd256_round">,
5396 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5397 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty],
5398 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5399 def int_x86_avx10_vmaxph256 :
5400 ClangBuiltin<"__builtin_ia32_vmaxph256_round">,
5401 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5402 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty],
5403 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5404 def int_x86_avx10_vmaxps256 :
5405 ClangBuiltin<"__builtin_ia32_vmaxps256_round">,
5406 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5407 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty],
5408 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5409 def int_x86_avx10_vminpd256 :
5410 ClangBuiltin<"__builtin_ia32_vminpd256_round">,
5411 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5412 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty],
5413 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5414 def int_x86_avx10_vminph256 :
5415 ClangBuiltin<"__builtin_ia32_vminph256_round">,
5416 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5417 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty],
5418 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5419 def int_x86_avx10_vminps256 :
5420 ClangBuiltin<"__builtin_ia32_vminps256_round">,
5421 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5422 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty],
5423 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5424 def int_x86_avx10_vmulpd256 :
5425 ClangBuiltin<"__builtin_ia32_vmulpd256_round">,
5426 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5427 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty],
5428 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5429 def int_x86_avx10_vmulph256 :
5430 ClangBuiltin<"__builtin_ia32_vmulph256_round">,
5431 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5432 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty],
5433 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5434 def int_x86_avx10_vmulps256 :
5435 ClangBuiltin<"__builtin_ia32_vmulps256_round">,
5436 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5437 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty],
5438 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5439 def int_x86_avx10_mask_vrangepd256 :
5440 ClangBuiltin<"__builtin_ia32_vrangepd256_round_mask">,
5441 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5442 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty],
5443 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
5444 def int_x86_avx10_mask_vrangeps256 :
5445 ClangBuiltin<"__builtin_ia32_vrangeps256_round_mask">,
5446 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5447 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5448 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
5449 def int_x86_avx10_mask_vreducepd256 :
5450 ClangBuiltin<"__builtin_ia32_vreducepd256_round_mask">,
5451 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5452 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty],
5453 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
5454 def int_x86_avx10_mask_vreduceph256 :
5455 ClangBuiltin<"__builtin_ia32_vreduceph256_round_mask">,
5456 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5457 [llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty],
5458 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
5459 def int_x86_avx10_mask_vreduceps256 :
5460 ClangBuiltin<"__builtin_ia32_vreduceps256_round_mask">,
5461 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5462 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5463 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
5464 def int_x86_avx10_mask_vrndscalepd256 :
5465 ClangBuiltin<"__builtin_ia32_vrndscalepd256_round_mask">,
5466 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5467 [llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty],
5468 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
5469 def int_x86_avx10_mask_vrndscaleph256 :
5470 ClangBuiltin<"__builtin_ia32_vrndscaleph256_round_mask">,
5471 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5472 [llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty],
5473 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
5474 def int_x86_avx10_mask_vrndscaleps256 :
5475 ClangBuiltin<"__builtin_ia32_vrndscaleps256_round_mask">,
5476 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5477 [llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5478 [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
5479 def int_x86_avx10_mask_vscalefpd256 :
5480 ClangBuiltin<"__builtin_ia32_vscalefpd256_round_mask">,
5481 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5482 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty],
5483 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
5484 def int_x86_avx10_mask_vscalefph256 :
5485 ClangBuiltin<"__builtin_ia32_vscalefph256_round_mask">,
5486 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5487 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty],
5488 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
5489 def int_x86_avx10_mask_vscalefps256 :
5490 ClangBuiltin<"__builtin_ia32_vscalefps256_round_mask">,
5491 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5492 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
5493 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
5494 def int_x86_avx10_vsqrtpd256 : ClangBuiltin<"__builtin_ia32_vsqrtpd256_round">,
5495 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5496 [llvm_v4f64_ty, llvm_i32_ty],
5497 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5498 def int_x86_avx10_vsqrtph256 : ClangBuiltin<"__builtin_ia32_vsqrtph256_round">,
5499 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5500 [llvm_v16f16_ty, llvm_i32_ty],
5501 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5502 def int_x86_avx10_vsqrtps256 : ClangBuiltin<"__builtin_ia32_vsqrtps256_round">,
5503 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5504 [llvm_v8f32_ty, llvm_i32_ty],
5505 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5506 def int_x86_avx10_vsubpd256 :
5507 ClangBuiltin<"__builtin_ia32_vsubpd256_round">,
5508 DefaultAttrsIntrinsic<[llvm_v4f64_ty],
5509 [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty],
5510 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5511 def int_x86_avx10_vsubph256 :
5512 ClangBuiltin<"__builtin_ia32_vsubph256_round">,
5513 DefaultAttrsIntrinsic<[llvm_v16f16_ty],
5514 [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty],
5515 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5516 def int_x86_avx10_vsubps256 :
5517 ClangBuiltin<"__builtin_ia32_vsubps256_round">,
5518 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5519 [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty],
5520 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5521 }
5522
5523 // conversion with saturation
5524 let TargetPrefix = "x86" in {
5525 def int_x86_avx10_vcvttss2sis : ClangBuiltin<"__builtin_ia32_vcvttss2sis32">,
5526 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
5527 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5528 def int_x86_avx10_vcvttss2sis64 : ClangBuiltin<"__builtin_ia32_vcvttss2sis64">,
5529 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
5530 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5531 def int_x86_avx10_vcvttss2usis : ClangBuiltin<"__builtin_ia32_vcvttss2usis32">,
5532 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
5533 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5534 def int_x86_avx10_vcvttss2usis64 : ClangBuiltin<"__builtin_ia32_vcvttss2usis64">,
5535 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
5536 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5537 def int_x86_avx10_vcvttsd2sis : ClangBuiltin<"__builtin_ia32_vcvttsd2sis32">,
5538 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
5539 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5540 def int_x86_avx10_vcvttsd2sis64 : ClangBuiltin<"__builtin_ia32_vcvttsd2sis64">,
5541 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
5542 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5543 def int_x86_avx10_vcvttsd2usis : ClangBuiltin<"__builtin_ia32_vcvttsd2usis32">,
5544 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
5545 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5546 def int_x86_avx10_vcvttsd2usis64 : ClangBuiltin<"__builtin_ia32_vcvttsd2usis64">,
5547 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
5548 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
5549 def int_x86_avx10_mask_vcvttpd2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs128_mask">,
5550 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty],
5551 [IntrNoMem]>;
5552 def int_x86_avx10_mask_vcvttpd2dqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2dqs256_round_mask">,
5553 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
5554 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5555 def int_x86_avx10_mask_vcvttpd2dqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs512_round_mask">,
5556 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5557 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5558 def int_x86_avx10_mask_vcvttpd2udqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2udqs128_mask">,
5559 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty,llvm_v4i32_ty, llvm_i8_ty],
5560 [IntrNoMem]>;
5561 def int_x86_avx10_mask_vcvttpd2udqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2udqs256_round_mask">,
5562 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
5563 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5564 def int_x86_avx10_mask_vcvttpd2udqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2udqs512_round_mask">,
5565 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5566 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5567 def int_x86_avx10_mask_vcvttpd2qqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2qqs128_mask">,
5568 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty,llvm_v2i64_ty, llvm_i8_ty],
5569 [IntrNoMem]>;
5570 def int_x86_avx10_mask_vcvttpd2qqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2qqs256_round_mask">,
5571 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5572 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5573 def int_x86_avx10_mask_vcvttpd2qqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2qqs512_round_mask">,
5574 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
5575 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5576 def int_x86_avx10_mask_vcvttpd2uqqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs128_mask">,
5577 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty,llvm_v2i64_ty, llvm_i8_ty],
5578 [IntrNoMem]>;
5579 def int_x86_avx10_mask_vcvttpd2uqqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs256_round_mask">,
5580 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5581 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5582 def int_x86_avx10_mask_vcvttpd2uqqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs512_round_mask">,
5583 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
5584 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5585 def int_x86_avx10_mask_vcvttps2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2dqs128_mask">,
5586 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
5587 [IntrNoMem]>;
5588 def int_x86_avx10_mask_vcvttps2dqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2dqs256_round_mask">,
5589 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5590 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5591 def int_x86_avx10_mask_vcvttps2dqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2dqs512_round_mask">,
5592 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
5593 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5594 def int_x86_avx10_mask_vcvttps2udqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2udqs128_mask">,
5595 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
5596 [IntrNoMem]>;
5597 def int_x86_avx10_mask_vcvttps2udqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2udqs256_round_mask">,
5598 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
5599 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5600 def int_x86_avx10_mask_vcvttps2udqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2udqs512_round_mask">,
5601 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
5602 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5603 def int_x86_avx10_mask_vcvttps2qqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2qqs128_mask">,
5604 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty],
5605 [IntrNoMem]>;
5606 def int_x86_avx10_mask_vcvttps2qqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2qqs256_round_mask">,
5607 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5608 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5609 def int_x86_avx10_mask_vcvttps2qqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2qqs512_round_mask">,
5610 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
5611 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5612 def int_x86_avx10_mask_vcvttps2uqqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2uqqs128_mask">,
5613 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4f32_ty,llvm_v2i64_ty, llvm_i8_ty],
5614 [IntrNoMem]>;
5615 def int_x86_avx10_mask_vcvttps2uqqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2uqqs256_round_mask">,
5616 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
5617 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5618 def int_x86_avx10_mask_vcvttps2uqqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2uqqs512_round_mask">,
5619 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
5620 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
5621 }
5622
5623 //===----------------------------------------------------------------------===//
5624 // SHA intrinsics
5625 let TargetPrefix = "x86" in {
5626 def int_x86_sha1rnds4 : ClangBuiltin<"__builtin_ia32_sha1rnds4">,
5627 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
5628 llvm_i8_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
5629 def int_x86_sha1nexte : ClangBuiltin<"__builtin_ia32_sha1nexte">,
5630 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
5631 [IntrNoMem]>;
5632 def int_x86_sha1msg1 : ClangBuiltin<"__builtin_ia32_sha1msg1">,
5633 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
5634 [IntrNoMem]>;
5635 def int_x86_sha1msg2 : ClangBuiltin<"__builtin_ia32_sha1msg2">,
5636 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
5637 [IntrNoMem]>;
5638 def int_x86_sha256rnds2 : ClangBuiltin<"__builtin_ia32_sha256rnds2">,
5639 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,
5640 llvm_v4i32_ty], [IntrNoMem]>;
5641 def int_x86_sha256msg1 : ClangBuiltin<"__builtin_ia32_sha256msg1">,
5642 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
5643 [IntrNoMem]>;
5644 def int_x86_sha256msg2 : ClangBuiltin<"__builtin_ia32_sha256msg2">,
5645 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
5646 [IntrNoMem]>;
5647 }
5648
5649 //===----------------------------------------------------------------------===//
5650 // SHA512 intrinsics
5651 let TargetPrefix = "x86" in {
5652 def int_x86_vsha512msg1 : ClangBuiltin<"__builtin_ia32_vsha512msg1">,
5653 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v2i64_ty],
5654 [IntrNoMem]>;
5655 def int_x86_vsha512msg2 : ClangBuiltin<"__builtin_ia32_vsha512msg2">,
5656 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty],
5657 [IntrNoMem]>;
5658 def int_x86_vsha512rnds2 : ClangBuiltin<"__builtin_ia32_vsha512rnds2">,
5659 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_v4i64_ty, llvm_v2i64_ty],
5660 [IntrNoMem]>;
5661 }
5662
5663 //===----------------------------------------------------------------------===//
5664 // Thread synchronization ops with timer.
5665 let TargetPrefix = "x86" in {
5666 def int_x86_monitorx
5667 : ClangBuiltin<"__builtin_ia32_monitorx">,
5668 Intrinsic<[], [ llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty ], []>;
5669 def int_x86_mwaitx
5670 : ClangBuiltin<"__builtin_ia32_mwaitx">,
5671 Intrinsic<[], [ llvm_i32_ty, llvm_i32_ty, llvm_i32_ty ], []>;
5672 }
5673
5674 //===----------------------------------------------------------------------===//
5675 // Cache-line zero
5676 let TargetPrefix = "x86" in {
5677 def int_x86_clzero : ClangBuiltin<"__builtin_ia32_clzero">,
5678 Intrinsic<[], [llvm_ptr_ty], []>;
5679 }
5680
5681 //===----------------------------------------------------------------------===//
5682 // Cache write back intrinsics
5683
5684 let TargetPrefix = "x86" in {
5685 // Write back and invalidate
5686 def int_x86_wbinvd : ClangBuiltin<"__builtin_ia32_wbinvd">,
5687 Intrinsic<[], [], []>;
5688
5689 // Write back no-invalidate
5690 def int_x86_wbnoinvd : ClangBuiltin<"__builtin_ia32_wbnoinvd">,
5691 Intrinsic<[], [], []>;
5692 }
5693
5694 //===----------------------------------------------------------------------===//
5695 // Cache-line demote
5696
5697 let TargetPrefix = "x86" in {
5698 def int_x86_cldemote : ClangBuiltin<"__builtin_ia32_cldemote">,
5699 Intrinsic<[], [llvm_ptr_ty], []>;
5700 }
5701
5702 //===----------------------------------------------------------------------===//
5703 // Wait and pause enhancements
5704 let TargetPrefix = "x86" in {
5705 def int_x86_umonitor : ClangBuiltin<"__builtin_ia32_umonitor">,
5706 Intrinsic<[], [llvm_ptr_ty], []>;
5707 def int_x86_umwait : ClangBuiltin<"__builtin_ia32_umwait">,
5708 Intrinsic<[llvm_i8_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>;
5709 def int_x86_tpause : ClangBuiltin<"__builtin_ia32_tpause">,
5710 Intrinsic<[llvm_i8_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>;
5711 }
5712
5713 //===----------------------------------------------------------------------===//
5714 // Direct Move Instructions
5715
5716 let TargetPrefix = "x86" in {
5717 def int_x86_directstore32 : ClangBuiltin<"__builtin_ia32_directstore_u32">,
5718 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], []>;
5719 def int_x86_directstore64 : ClangBuiltin<"__builtin_ia32_directstore_u64">,
5720 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], []>;
5721 def int_x86_movdir64b : ClangBuiltin<"__builtin_ia32_movdir64b">,
5722 Intrinsic<[], [llvm_ptr_ty, llvm_ptr_ty], []>;
5723 }
5724
5725 //===----------------------------------------------------------------------===//
5726 // PTWrite - Write data to processor trace pocket
5727
5728 let TargetPrefix = "x86" in {
5729 def int_x86_ptwrite32 : ClangBuiltin<"__builtin_ia32_ptwrite32">,
5730 Intrinsic<[], [llvm_i32_ty], []>;
5731 def int_x86_ptwrite64 : ClangBuiltin<"__builtin_ia32_ptwrite64">,
5732 Intrinsic<[], [llvm_i64_ty], []>;
5733 }
5734
5735 //===----------------------------------------------------------------------===//
5736 // INVPCID - Invalidate Process-Context Identifier
5737
5738 let TargetPrefix = "x86" in {
5739 def int_x86_invpcid : ClangBuiltin<"__builtin_ia32_invpcid">,
5740 Intrinsic<[], [llvm_i32_ty, llvm_ptr_ty], []>;
5741 }
5742
5743 let TargetPrefix = "x86" in {
5744 def int_x86_avx512bf16_cvtne2ps2bf16_128:
5745 ClangBuiltin<"__builtin_ia32_cvtne2ps2bf16_128">,
5746 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v4f32_ty, llvm_v4f32_ty],
5747 [IntrNoMem]>;
5748 def int_x86_avx512bf16_cvtne2ps2bf16_256:
5749 ClangBuiltin<"__builtin_ia32_cvtne2ps2bf16_256">,
5750 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
5751 [IntrNoMem]>;
5752 def int_x86_avx512bf16_cvtne2ps2bf16_512:
5753 ClangBuiltin<"__builtin_ia32_cvtne2ps2bf16_512">,
5754 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v16f32_ty, llvm_v16f32_ty],
5755 [IntrNoMem]>;
5756 // Intrinsic must be masked due to it producing less than 128 bits of results.
5757 def int_x86_avx512bf16_mask_cvtneps2bf16_128:
5758 DefaultAttrsIntrinsic<[llvm_v8bf16_ty],
5759 [llvm_v4f32_ty, llvm_v8bf16_ty, llvm_v4i1_ty],
5760 [IntrNoMem]>;
5761 def int_x86_avx512bf16_cvtneps2bf16_256:
5762 ClangBuiltin<"__builtin_ia32_cvtneps2bf16_256">,
5763 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8f32_ty], [IntrNoMem]>;
5764 def int_x86_avx512bf16_cvtneps2bf16_512:
5765 ClangBuiltin<"__builtin_ia32_cvtneps2bf16_512">,
5766 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16f32_ty], [IntrNoMem]>;
5767 def int_x86_avx512bf16_dpbf16ps_128:
5768 ClangBuiltin<"__builtin_ia32_dpbf16ps_128">,
5769 DefaultAttrsIntrinsic<[llvm_v4f32_ty],
5770 [llvm_v4f32_ty, llvm_v8bf16_ty, llvm_v8bf16_ty],
5771 [IntrNoMem]>;
5772 def int_x86_avx512bf16_dpbf16ps_256:
5773 ClangBuiltin<"__builtin_ia32_dpbf16ps_256">,
5774 DefaultAttrsIntrinsic<[llvm_v8f32_ty],
5775 [llvm_v8f32_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
5776 [IntrNoMem]>;
5777 def int_x86_avx512bf16_dpbf16ps_512:
5778 ClangBuiltin<"__builtin_ia32_dpbf16ps_512">,
5779 DefaultAttrsIntrinsic<[llvm_v16f32_ty],
5780 [llvm_v16f32_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
5781 [IntrNoMem]>;
5782 }
5783
5784 //===----------------------------------------------------------------------===//
5785 // ENQCMD - Enqueue Stores Instructions
5786
5787 let TargetPrefix = "x86" in {
5788 def int_x86_enqcmd : ClangBuiltin<"__builtin_ia32_enqcmd">,
5789 Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_ptr_ty], []>;
5790 def int_x86_enqcmds : ClangBuiltin<"__builtin_ia32_enqcmds">,
5791 Intrinsic<[llvm_i8_ty], [llvm_ptr_ty, llvm_ptr_ty], []>;
5792 }
5793
5794 //===----------------------------------------------------------------------===//
5795 // SERIALIZE - Serialize instruction fetch and execution
5796
5797 let TargetPrefix = "x86" in {
5798 def int_x86_serialize : ClangBuiltin<"__builtin_ia32_serialize">,
5799 Intrinsic<[], [], []>;
5800 }
5801
5802 //===----------------------------------------------------------------------===//
5803 // TSXLDTRK - TSX Suspend Load Address Tracking
5804
5805 let TargetPrefix = "x86" in {
5806 def int_x86_xsusldtrk : ClangBuiltin<"__builtin_ia32_xsusldtrk">,
5807 Intrinsic<[], [], []>;
5808 def int_x86_xresldtrk : ClangBuiltin<"__builtin_ia32_xresldtrk">,
5809 Intrinsic<[], [], []>;
5810 }
5811
5812 //===----------------------------------------------------------------------===//
5813 // Key Locker
5814 let TargetPrefix = "x86" in {
5815 def int_x86_loadiwkey : ClangBuiltin<"__builtin_ia32_loadiwkey">,
5816 Intrinsic<[], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
5817 []>;
5818 def int_x86_encodekey128 :
5819 Intrinsic<[llvm_i32_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5820 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
5821 [llvm_i32_ty, llvm_v2i64_ty], []>;
5822 def int_x86_encodekey256 :
5823 Intrinsic<[llvm_i32_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5824 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
5825 [llvm_i32_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>;
5826 def int_x86_aesenc128kl :
5827 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>;
5828 def int_x86_aesdec128kl :
5829 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>;
5830 def int_x86_aesenc256kl :
5831 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>;
5832 def int_x86_aesdec256kl :
5833 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty], [llvm_v2i64_ty, llvm_ptr_ty], []>;
5834 def int_x86_aesencwide128kl :
5835 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5836 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5837 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
5838 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5839 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5840 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>;
5841 def int_x86_aesdecwide128kl :
5842 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5843 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5844 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
5845 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5846 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5847 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>;
5848 def int_x86_aesencwide256kl :
5849 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5850 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5851 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
5852 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5853 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5854 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>;
5855 def int_x86_aesdecwide256kl :
5856 Intrinsic<[llvm_i8_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5857 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5858 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
5859 [llvm_ptr_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5860 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty,
5861 llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty], []>;
5862 }
5863
5864 //===----------------------------------------------------------------------===//
5865 // AMX - Intel AMX extensions
5866
5867 let TargetPrefix = "x86" in {
5868 def int_x86_ldtilecfg : ClangBuiltin<"__builtin_ia32_tile_loadconfig">,
5869 Intrinsic<[], [llvm_ptr_ty], []>;
5870 def int_x86_sttilecfg : ClangBuiltin<"__builtin_ia32_tile_storeconfig">,
5871 Intrinsic<[], [llvm_ptr_ty], []>;
5872 def int_x86_tilerelease : ClangBuiltin<"__builtin_ia32_tilerelease">,
5873 Intrinsic<[], [], []>;
5874 def int_x86_tilezero : ClangBuiltin<"__builtin_ia32_tilezero">,
5875 Intrinsic<[], [llvm_i8_ty], [ImmArg<ArgIndex<0>>]>;
5876 def int_x86_tileloadd64 : ClangBuiltin<"__builtin_ia32_tileloadd64">,
5877 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5878 [ImmArg<ArgIndex<0>>]>;
5879 def int_x86_tileloaddt164 : ClangBuiltin<"__builtin_ia32_tileloaddt164">,
5880 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5881 [ImmArg<ArgIndex<0>>]>;
5882 def int_x86_tilestored64 : ClangBuiltin<"__builtin_ia32_tilestored64">,
5883 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5884 [ImmArg<ArgIndex<0>>]>;
5885 def int_x86_tileloaddrs64 : ClangBuiltin<"__builtin_ia32_tileloaddrs64">,
5886 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5887 [ImmArg<ArgIndex<0>>]>;
5888 def int_x86_tileloaddrst164 : ClangBuiltin<"__builtin_ia32_tileloaddrst164">,
5889 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5890 [ImmArg<ArgIndex<0>>]>;
5891 def int_x86_tdpbssd : ClangBuiltin<"__builtin_ia32_tdpbssd">,
5892 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5893 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5894 ImmArg<ArgIndex<2>>]>;
5895 def int_x86_tdpbsud : ClangBuiltin<"__builtin_ia32_tdpbsud">,
5896 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5897 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5898 ImmArg<ArgIndex<2>>]>;
5899 def int_x86_tdpbusd : ClangBuiltin<"__builtin_ia32_tdpbusd">,
5900 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5901 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5902 ImmArg<ArgIndex<2>>]>;
5903 def int_x86_tdpbuud : ClangBuiltin<"__builtin_ia32_tdpbuud">,
5904 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5905 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5906 ImmArg<ArgIndex<2>>]>;
5907 def int_x86_tdpbf16ps : ClangBuiltin<"__builtin_ia32_tdpbf16ps">,
5908 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5909 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5910 ImmArg<ArgIndex<2>>]>;
5911 // AMX-FP16 - Intel FP16 AMX extensions
5912 def int_x86_tdpfp16ps : ClangBuiltin<"__builtin_ia32_tdpfp16ps">,
5913 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5914 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5915 ImmArg<ArgIndex<2>>]>;
5916 // AMX-COMPLEX
5917 def int_x86_tcmmimfp16ps : ClangBuiltin<"__builtin_ia32_tcmmimfp16ps">,
5918 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5919 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5920 ImmArg<ArgIndex<2>>]>;
5921 def int_x86_tcmmrlfp16ps : ClangBuiltin<"__builtin_ia32_tcmmrlfp16ps">,
5922 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5923 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5924 ImmArg<ArgIndex<2>>]>;
5925
5926 // AMX-FP8
5927 def int_x86_tdpbf8ps : ClangBuiltin<"__builtin_ia32_tdpbf8ps">,
5928 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5929 [ImmArg<ArgIndex<0>>,
5930 ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
5931 def int_x86_tdpbhf8ps : ClangBuiltin<"__builtin_ia32_tdpbhf8ps">,
5932 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5933 [ImmArg<ArgIndex<0>>,
5934 ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
5935 def int_x86_tdphbf8ps : ClangBuiltin<"__builtin_ia32_tdphbf8ps">,
5936 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5937 [ImmArg<ArgIndex<0>>,
5938 ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
5939 def int_x86_tdphf8ps : ClangBuiltin<"__builtin_ia32_tdphf8ps">,
5940 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5941 [ImmArg<ArgIndex<0>>,
5942 ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
5943
5944 // AMX-TRANSPOSE
5945 def int_x86_t2rpntlvwz0 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz0">,
5946 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5947 [ImmArg<ArgIndex<0>>]>;
5948 def int_x86_t2rpntlvwz0t1 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz0t1">,
5949 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5950 [ImmArg<ArgIndex<0>>]>;
5951 def int_x86_t2rpntlvwz1 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz1">,
5952 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5953 [ImmArg<ArgIndex<0>>]>;
5954 def int_x86_t2rpntlvwz1t1 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz1t1">,
5955 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5956 [ImmArg<ArgIndex<0>>]>;
5957 def int_x86_ttransposed : ClangBuiltin<"__builtin_ia32_ttransposed">,
5958 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty],
5959 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
5960 def int_x86_ttdpbf16ps : ClangBuiltin<"__builtin_ia32_ttdpbf16ps">,
5961 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5962 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5963 ImmArg<ArgIndex<2>>]>;
5964 def int_x86_ttdpfp16ps : ClangBuiltin<"__builtin_ia32_ttdpfp16ps">,
5965 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5966 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5967 ImmArg<ArgIndex<2>>]>;
5968 def int_x86_ttcmmimfp16ps : ClangBuiltin<"__builtin_ia32_ttcmmimfp16ps">,
5969 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5970 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5971 ImmArg<ArgIndex<2>>]>;
5972 def int_x86_ttcmmrlfp16ps : ClangBuiltin<"__builtin_ia32_ttcmmrlfp16ps">,
5973 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5974 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5975 ImmArg<ArgIndex<2>>]>;
5976 def int_x86_tconjtcmmimfp16ps : ClangBuiltin<"__builtin_ia32_tconjtcmmimfp16ps">,
5977 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
5978 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
5979 ImmArg<ArgIndex<2>>]>;
5980 def int_x86_tconjtfp16 : ClangBuiltin<"__builtin_ia32_tconjtfp16">,
5981 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty],
5982 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
5983
5984 // AMX-MORVS, AMX-TRANSPOSE
5985 def int_x86_t2rpntlvwz0rs : ClangBuiltin<"__builtin_ia32_t2rpntlvwz0rs">,
5986 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5987 [ImmArg<ArgIndex<0>>]>;
5988 def int_x86_t2rpntlvwz0rst1 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz0rst1">,
5989 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5990 [ImmArg<ArgIndex<0>>]>;
5991 def int_x86_t2rpntlvwz1rs : ClangBuiltin<"__builtin_ia32_t2rpntlvwz1rs">,
5992 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5993 [ImmArg<ArgIndex<0>>]>;
5994 def int_x86_t2rpntlvwz1rst1 : ClangBuiltin<"__builtin_ia32_t2rpntlvwz1rst1">,
5995 Intrinsic<[], [llvm_i8_ty, llvm_ptr_ty, llvm_i64_ty],
5996 [ImmArg<ArgIndex<0>>]>;
5997
5998 // AMX-AVX512
5999 def int_x86_tcvtrowd2ps : ClangBuiltin<"__builtin_ia32_tcvtrowd2ps">,
6000 Intrinsic<[llvm_v16f32_ty], [llvm_i8_ty, llvm_i32_ty],
6001 [ImmArg<ArgIndex<0>>]>;
6002 def int_x86_tcvtrowps2bf16h : ClangBuiltin<"__builtin_ia32_tcvtrowps2bf16h">,
6003 Intrinsic<[llvm_v32bf16_ty], [llvm_i8_ty, llvm_i32_ty],
6004 [ImmArg<ArgIndex<0>>]>;
6005 def int_x86_tcvtrowps2bf16l : ClangBuiltin<"__builtin_ia32_tcvtrowps2bf16l">,
6006 Intrinsic<[llvm_v32bf16_ty], [llvm_i8_ty, llvm_i32_ty],
6007 [ImmArg<ArgIndex<0>>]>;
6008 def int_x86_tcvtrowps2phh : ClangBuiltin<"__builtin_ia32_tcvtrowps2phh">,
6009 Intrinsic<[llvm_v32f16_ty], [llvm_i8_ty, llvm_i32_ty],
6010 [ImmArg<ArgIndex<0>>]>;
6011 def int_x86_tcvtrowps2phl : ClangBuiltin<"__builtin_ia32_tcvtrowps2phl">,
6012 Intrinsic<[llvm_v32f16_ty], [llvm_i8_ty, llvm_i32_ty],
6013 [ImmArg<ArgIndex<0>>]>;
6014 def int_x86_tilemovrow : ClangBuiltin<"__builtin_ia32_tilemovrow">,
6015 Intrinsic<[llvm_v16i32_ty], [llvm_i8_ty, llvm_i32_ty],
6016 [ImmArg<ArgIndex<0>>]>;
6017
6018 // AMX - internal intrinsics
6019 def int_x86_ldtilecfg_internal :
6020 ClangBuiltin<"__builtin_ia32_tile_loadconfig_internal">,
6021 Intrinsic<[], [llvm_ptr_ty], []>;
6022 def int_x86_tileloadd64_internal :
6023 ClangBuiltin<"__builtin_ia32_tileloadd64_internal">,
6024 Intrinsic<[llvm_x86amx_ty],
6025 [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6026 []>;
6027 def int_x86_tileloaddt164_internal :
6028 ClangBuiltin<"__builtin_ia32_tileloaddt164_internal">,
6029 Intrinsic<[llvm_x86amx_ty],
6030 [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6031 []>;
6032 def int_x86_tileloaddrs64_internal :
6033 ClangBuiltin<"__builtin_ia32_tileloaddrs64_internal">,
6034 Intrinsic<[llvm_x86amx_ty],
6035 [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6036 []>;
6037 def int_x86_tileloaddrst164_internal :
6038 ClangBuiltin<"__builtin_ia32_tileloaddrst164_internal">,
6039 Intrinsic<[llvm_x86amx_ty],
6040 [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6041 []>;
6042 def int_x86_tdpbssd_internal :
6043 ClangBuiltin<"__builtin_ia32_tdpbssd_internal">,
6044 Intrinsic<[llvm_x86amx_ty],
6045 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6046 llvm_x86amx_ty, llvm_x86amx_ty,
6047 llvm_x86amx_ty], []>;
6048 def int_x86_tdpbsud_internal :
6049 ClangBuiltin<"__builtin_ia32_tdpbsud_internal">,
6050 Intrinsic<[llvm_x86amx_ty],
6051 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6052 llvm_x86amx_ty, llvm_x86amx_ty,
6053 llvm_x86amx_ty], []>;
6054 def int_x86_tdpbusd_internal :
6055 ClangBuiltin<"__builtin_ia32_tdpbusd_internal">,
6056 Intrinsic<[llvm_x86amx_ty],
6057 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6058 llvm_x86amx_ty, llvm_x86amx_ty,
6059 llvm_x86amx_ty], []>;
6060 def int_x86_tdpbuud_internal :
6061 ClangBuiltin<"__builtin_ia32_tdpbuud_internal">,
6062 Intrinsic<[llvm_x86amx_ty],
6063 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6064 llvm_x86amx_ty, llvm_x86amx_ty,
6065 llvm_x86amx_ty], []>;
6066 def int_x86_tilestored64_internal :
6067 ClangBuiltin<"__builtin_ia32_tilestored64_internal">,
6068 Intrinsic<[], [llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty,
6069 llvm_i64_ty, llvm_x86amx_ty], []>;
6070 def int_x86_tilezero_internal :
6071 ClangBuiltin<"__builtin_ia32_tilezero_internal">,
6072 Intrinsic<[llvm_x86amx_ty], [llvm_i16_ty, llvm_i16_ty],
6073 []>;
6074 def int_x86_tdpbf16ps_internal :
6075 ClangBuiltin<"__builtin_ia32_tdpbf16ps_internal">,
6076 Intrinsic<[llvm_x86amx_ty],
6077 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6078 llvm_x86amx_ty, llvm_x86amx_ty,
6079 llvm_x86amx_ty], []>;
6080 def int_x86_tdpfp16ps_internal :
6081 ClangBuiltin<"__builtin_ia32_tdpfp16ps_internal">,
6082 Intrinsic<[llvm_x86amx_ty],
6083 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6084 llvm_x86amx_ty, llvm_x86amx_ty,
6085 llvm_x86amx_ty], []>;
6086 // the vector size can be smaller than AMX register size (1024 bytes)
6087 def int_x86_cast_vector_to_tile:
6088 DefaultAttrsIntrinsic<[llvm_x86amx_ty], [llvm_anyvector_ty], [IntrNoMem]>;
6089 // the vector size can be smaller than AMX register size (1024 bytes)
6090 def int_x86_cast_tile_to_vector:
6091 DefaultAttrsIntrinsic<[llvm_anyvector_ty], [llvm_x86amx_ty], [IntrNoMem]>;
6092
6093 def int_x86_tcmmimfp16ps_internal :
6094 ClangBuiltin<"__builtin_ia32_tcmmimfp16ps_internal">,
6095 Intrinsic<[llvm_x86amx_ty],
6096 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6097 llvm_x86amx_ty, llvm_x86amx_ty,
6098 llvm_x86amx_ty], []>;
6099 def int_x86_tcmmrlfp16ps_internal :
6100 ClangBuiltin<"__builtin_ia32_tcmmrlfp16ps_internal">,
6101 Intrinsic<[llvm_x86amx_ty],
6102 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6103 llvm_x86amx_ty, llvm_x86amx_ty,
6104 llvm_x86amx_ty], []>;
6105
6106 // AMX-MORVS, AMX-TRANSPOSE - internal intrinsics
6107 def int_x86_t2rpntlvwz0rs_internal :
6108 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty],
6109 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6110 [IntrArgMemOnly, IntrReadMem]>;
6111 def int_x86_t2rpntlvwz0rst1_internal :
6112 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty],
6113 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6114 [IntrArgMemOnly]>;
6115 def int_x86_t2rpntlvwz1rs_internal :
6116 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty],
6117 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6118 [IntrArgMemOnly]>;
6119 def int_x86_t2rpntlvwz1rst1_internal :
6120 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty],
6121 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6122 [IntrArgMemOnly]>;
6123
6124 def int_x86_t2rpntlvwz0_internal :
6125 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty],
6126 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6127 []>;
6128 def int_x86_t2rpntlvwz0t1_internal :
6129 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty],
6130 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6131 []>;
6132 def int_x86_t2rpntlvwz1_internal :
6133 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty],
6134 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6135 []>;
6136 def int_x86_t2rpntlvwz1t1_internal :
6137 Intrinsic<[llvm_x86amx_ty, llvm_x86amx_ty],
6138 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_ptr_ty, llvm_i64_ty],
6139 []>;
6140 def int_x86_ttransposed_internal :
6141 ClangBuiltin<"__builtin_ia32_ttransposed_internal">,
6142 Intrinsic<[llvm_x86amx_ty],
6143 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty], []>;
6144 def int_x86_ttdpbf16ps_internal :
6145 ClangBuiltin<"__builtin_ia32_ttdpbf16ps_internal">,
6146 Intrinsic<[llvm_x86amx_ty],
6147 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6148 llvm_x86amx_ty, llvm_x86amx_ty,
6149 llvm_x86amx_ty], []>;
6150 def int_x86_ttdpfp16ps_internal :
6151 ClangBuiltin<"__builtin_ia32_ttdpfp16ps_internal">,
6152 Intrinsic<[llvm_x86amx_ty],
6153 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6154 llvm_x86amx_ty, llvm_x86amx_ty,
6155 llvm_x86amx_ty], []>;
6156 def int_x86_ttcmmimfp16ps_internal :
6157 ClangBuiltin<"__builtin_ia32_ttcmmimfp16ps_internal">,
6158 Intrinsic<[llvm_x86amx_ty],
6159 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6160 llvm_x86amx_ty, llvm_x86amx_ty,
6161 llvm_x86amx_ty], []>;
6162 def int_x86_ttcmmrlfp16ps_internal :
6163 ClangBuiltin<"__builtin_ia32_ttcmmrlfp16ps_internal">,
6164 Intrinsic<[llvm_x86amx_ty],
6165 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6166 llvm_x86amx_ty, llvm_x86amx_ty,
6167 llvm_x86amx_ty], []>;
6168 def int_x86_tconjtcmmimfp16ps_internal :
6169 ClangBuiltin<"__builtin_ia32_tconjtcmmimfp16ps_internal">,
6170 Intrinsic<[llvm_x86amx_ty],
6171 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6172 llvm_x86amx_ty, llvm_x86amx_ty,
6173 llvm_x86amx_ty], []>;
6174 def int_x86_tconjtfp16_internal :
6175 ClangBuiltin<"__builtin_ia32_tconjtfp16_internal">,
6176 Intrinsic<[llvm_x86amx_ty],
6177 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty], []>;
6178
6179 def int_x86_tcvtrowd2ps_internal :
6180 ClangBuiltin<"__builtin_ia32_tcvtrowd2ps_internal">,
6181 Intrinsic<[llvm_v16f32_ty],
6182 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty],
6183 []>;
6184 def int_x86_tcvtrowps2bf16h_internal :
6185 ClangBuiltin<"__builtin_ia32_tcvtrowps2bf16h_internal">,
6186 Intrinsic<[llvm_v32bf16_ty],
6187 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty],
6188 []>;
6189 def int_x86_tcvtrowps2bf16l_internal :
6190 ClangBuiltin<"__builtin_ia32_tcvtrowps2bf16l_internal">,
6191 Intrinsic<[llvm_v32bf16_ty],
6192 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty],
6193 []>;
6194 def int_x86_tcvtrowps2phh_internal :
6195 ClangBuiltin<"__builtin_ia32_tcvtrowps2phh_internal">,
6196 Intrinsic<[llvm_v32f16_ty],
6197 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty],
6198 []>;
6199 def int_x86_tcvtrowps2phl_internal :
6200 ClangBuiltin<"__builtin_ia32_tcvtrowps2phl_internal">,
6201 Intrinsic<[llvm_v32f16_ty],
6202 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty],
6203 []>;
6204 def int_x86_tilemovrow_internal :
6205 ClangBuiltin<"__builtin_ia32_tilemovrow_internal">,
6206 Intrinsic<[llvm_v16i32_ty],
6207 [llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty, llvm_i32_ty],
6208 []>;
6209
6210 def int_x86_tmmultf32ps : ClangBuiltin<"__builtin_ia32_tmmultf32ps">,
6211 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
6212 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
6213 ImmArg<ArgIndex<2>>]>;
6214 def int_x86_ttmmultf32ps : ClangBuiltin<"__builtin_ia32_ttmmultf32ps">,
6215 Intrinsic<[], [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
6216 [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>,
6217 ImmArg<ArgIndex<2>>]>;
6218 def int_x86_tmmultf32ps_internal :
6219 ClangBuiltin<"__builtin_ia32_tmmultf32ps_internal">,
6220 Intrinsic<[llvm_x86amx_ty],
6221 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty,
6222 llvm_x86amx_ty, llvm_x86amx_ty], []>;
6223 def int_x86_ttmmultf32ps_internal :
6224 ClangBuiltin<"__builtin_ia32_ttmmultf32ps_internal">,
6225 Intrinsic<[llvm_x86amx_ty],
6226 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_x86amx_ty,
6227 llvm_x86amx_ty, llvm_x86amx_ty], []>;
6228
6229 def int_x86_tdpbf8ps_internal :
6230 ClangBuiltin<"__builtin_ia32_tdpbf8ps_internal">,
6231 Intrinsic<[llvm_x86amx_ty],
6232 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6233 llvm_x86amx_ty, llvm_x86amx_ty, llvm_x86amx_ty],
6234 []>;
6235 def int_x86_tdpbhf8ps_internal :
6236 ClangBuiltin<"__builtin_ia32_tdpbhf8ps_internal">,
6237 Intrinsic<[llvm_x86amx_ty],
6238 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6239 llvm_x86amx_ty, llvm_x86amx_ty, llvm_x86amx_ty],
6240 []>;
6241 def int_x86_tdphbf8ps_internal :
6242 ClangBuiltin<"__builtin_ia32_tdphbf8ps_internal">,
6243 Intrinsic<[llvm_x86amx_ty],
6244 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6245 llvm_x86amx_ty, llvm_x86amx_ty, llvm_x86amx_ty],
6246 []>;
6247 def int_x86_tdphf8ps_internal :
6248 ClangBuiltin<"__builtin_ia32_tdphf8ps_internal">,
6249 Intrinsic<[llvm_x86amx_ty],
6250 [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty,
6251 llvm_x86amx_ty, llvm_x86amx_ty, llvm_x86amx_ty],
6252 []>;
6253 }
6254
6255 //===----------------------------------------------------------------------===//
6256 let TargetPrefix = "x86" in {
6257 // CMPCCXADD
6258 def int_x86_cmpccxadd32
6259 : ClangBuiltin<"__builtin_ia32_cmpccxadd32">,
6260 Intrinsic<[llvm_i32_ty],
6261 [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
6262 [IntrArgMemOnly, ImmArg<ArgIndex<3>>]>;
6263
6264 def int_x86_cmpccxadd64
6265 : ClangBuiltin<"__builtin_ia32_cmpccxadd64">,
6266 Intrinsic<[llvm_i64_ty],
6267 [llvm_ptr_ty, llvm_i64_ty, llvm_i64_ty, llvm_i32_ty],
6268 [IntrArgMemOnly, ImmArg<ArgIndex<3>>]>;
6269
6270 // AVX-NE-CONVERT
6271 def int_x86_vbcstnebf162ps128
6272 : ClangBuiltin<"__builtin_ia32_vbcstnebf162ps128">,
6273 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty],
6274 [IntrReadMem, IntrArgMemOnly]>;
6275 def int_x86_vbcstnebf162ps256
6276 : ClangBuiltin<"__builtin_ia32_vbcstnebf162ps256">,
6277 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty],
6278 [IntrReadMem, IntrArgMemOnly]>;
6279 def int_x86_vbcstnesh2ps128
6280 : ClangBuiltin<"__builtin_ia32_vbcstnesh2ps128">,
6281 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty],
6282 [IntrReadMem, IntrArgMemOnly]>;
6283 def int_x86_vbcstnesh2ps256
6284 : ClangBuiltin<"__builtin_ia32_vbcstnesh2ps256">,
6285 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty],
6286 [IntrReadMem, IntrArgMemOnly]>;
6287 def int_x86_vcvtneebf162ps128
6288 : ClangBuiltin<"__builtin_ia32_vcvtneebf162ps128">,
6289 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty],
6290 [IntrReadMem, IntrArgMemOnly]>;
6291 def int_x86_vcvtneebf162ps256
6292 : ClangBuiltin<"__builtin_ia32_vcvtneebf162ps256">,
6293 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty],
6294 [IntrReadMem, IntrArgMemOnly]>;
6295 def int_x86_vcvtneeph2ps128
6296 : ClangBuiltin<"__builtin_ia32_vcvtneeph2ps128">,
6297 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty],
6298 [IntrReadMem, IntrArgMemOnly]>;
6299 def int_x86_vcvtneeph2ps256
6300 : ClangBuiltin<"__builtin_ia32_vcvtneeph2ps256">,
6301 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty],
6302 [IntrReadMem, IntrArgMemOnly]>;
6303 def int_x86_vcvtneobf162ps128
6304 : ClangBuiltin<"__builtin_ia32_vcvtneobf162ps128">,
6305 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty],
6306 [IntrReadMem, IntrArgMemOnly]>;
6307 def int_x86_vcvtneobf162ps256
6308 : ClangBuiltin<"__builtin_ia32_vcvtneobf162ps256">,
6309 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty],
6310 [IntrReadMem, IntrArgMemOnly]>;
6311 def int_x86_vcvtneoph2ps128
6312 : ClangBuiltin<"__builtin_ia32_vcvtneoph2ps128">,
6313 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_ptr_ty],
6314 [IntrReadMem, IntrArgMemOnly]>;
6315 def int_x86_vcvtneoph2ps256
6316 : ClangBuiltin<"__builtin_ia32_vcvtneoph2ps256">,
6317 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_ptr_ty],
6318 [IntrReadMem, IntrArgMemOnly]>;
6319 def int_x86_vcvtneps2bf16128
6320 : ClangBuiltin<"__builtin_ia32_vcvtneps2bf16128">,
6321 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v4f32_ty], [IntrNoMem]>;
6322 def int_x86_vcvtneps2bf16256
6323 : ClangBuiltin<"__builtin_ia32_vcvtneps2bf16256">,
6324 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8f32_ty], [IntrNoMem]>;
6325 }
6326 //===----------------------------------------------------------------------===//
6327 // SM3 intrinsics
6328 let TargetPrefix = "x86" in {
6329 def int_x86_vsm3msg1
6330 : ClangBuiltin<"__builtin_ia32_vsm3msg1">,
6331 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
6332 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
6333 [IntrNoMem]>;
6334 def int_x86_vsm3msg2
6335 : ClangBuiltin<"__builtin_ia32_vsm3msg2">,
6336 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
6337 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
6338 [IntrNoMem]>;
6339 def int_x86_vsm3rnds2
6340 : ClangBuiltin<"__builtin_ia32_vsm3rnds2">,
6341 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
6342 [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
6343 [ImmArg<ArgIndex<3>>, IntrNoMem]>;
6344 }
6345 //===----------------------------------------------------------------------===//
6346 // SM4 intrinsics
6347 let TargetPrefix = "x86" in {
6348 def int_x86_vsm4key4128
6349 : ClangBuiltin<"__builtin_ia32_vsm4key4128">,
6350 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
6351 [llvm_v4i32_ty, llvm_v4i32_ty],
6352 [IntrNoMem]>;
6353 def int_x86_vsm4key4256
6354 : ClangBuiltin<"__builtin_ia32_vsm4key4256">,
6355 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
6356 [llvm_v8i32_ty, llvm_v8i32_ty],
6357 [IntrNoMem]>;
6358 def int_x86_vsm4key4512
6359 : ClangBuiltin<"__builtin_ia32_vsm4key4512">,
6360 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
6361 [llvm_v16i32_ty, llvm_v16i32_ty],
6362 [IntrNoMem]>;
6363 def int_x86_vsm4rnds4128
6364 : ClangBuiltin<"__builtin_ia32_vsm4rnds4128">,
6365 DefaultAttrsIntrinsic<[llvm_v4i32_ty],
6366 [llvm_v4i32_ty, llvm_v4i32_ty],
6367 [IntrNoMem]>;
6368 def int_x86_vsm4rnds4256
6369 : ClangBuiltin<"__builtin_ia32_vsm4rnds4256">,
6370 DefaultAttrsIntrinsic<[llvm_v8i32_ty],
6371 [llvm_v8i32_ty, llvm_v8i32_ty],
6372 [IntrNoMem]>;
6373 def int_x86_vsm4rnds4512
6374 : ClangBuiltin<"__builtin_ia32_vsm4rnds4512">,
6375 DefaultAttrsIntrinsic<[llvm_v16i32_ty],
6376 [llvm_v16i32_ty, llvm_v16i32_ty],
6377 [IntrNoMem]>;
6378 }
6379 //===----------------------------------------------------------------------===//
6380 // RAO-INT intrinsics
6381 let TargetPrefix = "x86" in {
6382 def int_x86_aadd32
6383 : ClangBuiltin<"__builtin_ia32_aadd32">,
6384 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>;
6385 def int_x86_aadd64
6386 : ClangBuiltin<"__builtin_ia32_aadd64">,
6387 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>;
6388 def int_x86_aand32
6389 : ClangBuiltin<"__builtin_ia32_aand32">,
6390 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>;
6391 def int_x86_aand64
6392 : ClangBuiltin<"__builtin_ia32_aand64">,
6393 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>;
6394 def int_x86_aor32
6395 : ClangBuiltin<"__builtin_ia32_aor32">,
6396 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>;
6397 def int_x86_aor64
6398 : ClangBuiltin<"__builtin_ia32_aor64">,
6399 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>;
6400 def int_x86_axor32
6401 : ClangBuiltin<"__builtin_ia32_axor32">,
6402 Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [IntrArgMemOnly]>;
6403 def int_x86_axor64
6404 : ClangBuiltin<"__builtin_ia32_axor64">,
6405 Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty], [IntrArgMemOnly]>;
6406 }
6407
6408 //===----------------------------------------------------------------------===//
6409 // UINTR - User Level Interrupt
6410
6411 let TargetPrefix = "x86" in {
6412 def int_x86_clui : ClangBuiltin<"__builtin_ia32_clui">,
6413 Intrinsic<[], [], []>;
6414 def int_x86_stui : ClangBuiltin<"__builtin_ia32_stui">,
6415 Intrinsic<[], [], []>;
6416 def int_x86_testui : ClangBuiltin<"__builtin_ia32_testui">,
6417 Intrinsic<[llvm_i8_ty], [], []>;
6418 def int_x86_senduipi : ClangBuiltin<"__builtin_ia32_senduipi">,
6419 Intrinsic<[], [llvm_i64_ty], []>;
6420 }
6421
6422 let TargetPrefix = "x86" in {
6423 def int_x86_urdmsr : ClangBuiltin<"__builtin_ia32_urdmsr">,
6424 Intrinsic<[llvm_i64_ty], [llvm_i64_ty],
6425 [IntrInaccessibleMemOnly]>;
6426 def int_x86_uwrmsr : ClangBuiltin<"__builtin_ia32_uwrmsr">,
6427 Intrinsic<[], [llvm_i64_ty, llvm_i64_ty],
6428 [IntrInaccessibleMemOnly]>;
6429 }
6430
6431 //===----------------------------------------------------------------------===//
6432 let TargetPrefix = "x86" in {
6433 def int_x86_avx512fp16_add_ph_512
6434 : ClangBuiltin<"__builtin_ia32_addph512">,
6435 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
6436 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ],
6437 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6438 def int_x86_avx512fp16_sub_ph_512
6439 : ClangBuiltin<"__builtin_ia32_subph512">,
6440 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
6441 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ],
6442 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6443 def int_x86_avx512fp16_mul_ph_512
6444 : ClangBuiltin<"__builtin_ia32_mulph512">,
6445 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
6446 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ],
6447 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6448 def int_x86_avx512fp16_div_ph_512
6449 : ClangBuiltin<"__builtin_ia32_divph512">,
6450 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
6451 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ],
6452 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6453 def int_x86_avx512fp16_max_ph_128
6454 : ClangBuiltin<"__builtin_ia32_maxph128">,
6455 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6456 [ llvm_v8f16_ty, llvm_v8f16_ty ], [ IntrNoMem ]>;
6457 def int_x86_avx512fp16_max_ph_256
6458 : ClangBuiltin<"__builtin_ia32_maxph256">,
6459 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
6460 [ llvm_v16f16_ty, llvm_v16f16_ty ],
6461 [ IntrNoMem ]>;
6462 def int_x86_avx512fp16_max_ph_512
6463 : ClangBuiltin<"__builtin_ia32_maxph512">,
6464 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
6465 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ],
6466 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6467 def int_x86_avx512fp16_min_ph_128
6468 : ClangBuiltin<"__builtin_ia32_minph128">,
6469 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6470 [ llvm_v8f16_ty, llvm_v8f16_ty ], [ IntrNoMem ]>;
6471 def int_x86_avx512fp16_min_ph_256
6472 : ClangBuiltin<"__builtin_ia32_minph256">,
6473 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
6474 [ llvm_v16f16_ty, llvm_v16f16_ty ],
6475 [ IntrNoMem ]>;
6476 def int_x86_avx512fp16_min_ph_512
6477 : ClangBuiltin<"__builtin_ia32_minph512">,
6478 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
6479 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ],
6480 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6481
6482 def int_x86_avx512fp16_mask_cmp_ph_512
6483 : DefaultAttrsIntrinsic<[ llvm_v32i1_ty ],
6484 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty,
6485 llvm_v32i1_ty, llvm_i32_ty ],
6486 [ IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<4>> ]>;
6487 def int_x86_avx512fp16_mask_cmp_ph_256
6488 : DefaultAttrsIntrinsic<[ llvm_v16i1_ty ],
6489 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty,
6490 llvm_v16i1_ty ],
6491 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6492 def int_x86_avx512fp16_mask_cmp_ph_128
6493 : DefaultAttrsIntrinsic<[ llvm_v8i1_ty ],
6494 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty,
6495 llvm_v8i1_ty ],
6496 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6497
6498 def int_x86_avx512fp16_mask_add_sh_round
6499 : ClangBuiltin<"__builtin_ia32_addsh_round_mask">,
6500 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6501 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
6502 llvm_i8_ty, llvm_i32_ty ],
6503 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6504 def int_x86_avx512fp16_mask_sub_sh_round
6505 : ClangBuiltin<"__builtin_ia32_subsh_round_mask">,
6506 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6507 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
6508 llvm_i8_ty, llvm_i32_ty ],
6509 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6510 def int_x86_avx512fp16_mask_mul_sh_round
6511 : ClangBuiltin<"__builtin_ia32_mulsh_round_mask">,
6512 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6513 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
6514 llvm_i8_ty, llvm_i32_ty ],
6515 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6516 def int_x86_avx512fp16_mask_div_sh_round
6517 : ClangBuiltin<"__builtin_ia32_divsh_round_mask">,
6518 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6519 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
6520 llvm_i8_ty, llvm_i32_ty ],
6521 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6522 def int_x86_avx512fp16_mask_min_sh_round
6523 : ClangBuiltin<"__builtin_ia32_minsh_round_mask">,
6524 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6525 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
6526 llvm_i8_ty, llvm_i32_ty ],
6527 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6528 def int_x86_avx512fp16_mask_max_sh_round
6529 : ClangBuiltin<"__builtin_ia32_maxsh_round_mask">,
6530 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6531 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
6532 llvm_i8_ty, llvm_i32_ty ],
6533 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6534 def int_x86_avx512fp16_mask_cmp_sh
6535 : ClangBuiltin<"__builtin_ia32_cmpsh_mask">,
6536 DefaultAttrsIntrinsic<[ llvm_i8_ty ],
6537 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty,
6538 llvm_i8_ty, llvm_i32_ty ],
6539 [ IntrNoMem, ImmArg<ArgIndex<2>>,
6540 ImmArg<ArgIndex<4>> ]>;
6541 def int_x86_avx512fp16_vcomi_sh
6542 : ClangBuiltin<"__builtin_ia32_vcomish">,
6543 DefaultAttrsIntrinsic<[ llvm_i32_ty ],
6544 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty,
6545 llvm_i32_ty ],
6546 [ IntrNoMem, ImmArg<ArgIndex<2>>,
6547 ImmArg<ArgIndex<3>> ]>;
6548
6549 def int_x86_avx512fp16_mask_vcvtph2psx_128
6550 : ClangBuiltin<"__builtin_ia32_vcvtph2psx128_mask">,
6551 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
6552 [ llvm_v8f16_ty, llvm_v4f32_ty, llvm_i8_ty ],
6553 [ IntrNoMem ]>;
6554 def int_x86_avx512fp16_mask_vcvtph2psx_256
6555 : ClangBuiltin<"__builtin_ia32_vcvtph2psx256_mask">,
6556 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ],
6557 [ llvm_v8f16_ty, llvm_v8f32_ty, llvm_i8_ty ],
6558 [ IntrNoMem ]>;
6559 def int_x86_avx512fp16_mask_vcvtph2psx_512
6560 : ClangBuiltin<"__builtin_ia32_vcvtph2psx512_mask">,
6561 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ],
6562 [ llvm_v16f16_ty, llvm_v16f32_ty, llvm_i16_ty,
6563 llvm_i32_ty ],
6564 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6565 def int_x86_avx512fp16_mask_vcvtps2phx_128
6566 : ClangBuiltin<"__builtin_ia32_vcvtps2phx128_mask">,
6567 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6568 [ llvm_v4f32_ty, llvm_v8f16_ty, llvm_i8_ty ],
6569 [ IntrNoMem ]>;
6570 def int_x86_avx512fp16_mask_vcvtps2phx_256
6571 : ClangBuiltin<"__builtin_ia32_vcvtps2phx256_mask">,
6572 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6573 [ llvm_v8f32_ty, llvm_v8f16_ty, llvm_i8_ty ],
6574 [ IntrNoMem ]>;
6575 def int_x86_avx512fp16_mask_vcvtps2phx_512
6576 : ClangBuiltin<"__builtin_ia32_vcvtps2phx512_mask">,
6577 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
6578 [ llvm_v16f32_ty, llvm_v16f16_ty, llvm_i16_ty,
6579 llvm_i32_ty ],
6580 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6581 def int_x86_avx512fp16_mask_vcvtpd2ph_128
6582 : ClangBuiltin<"__builtin_ia32_vcvtpd2ph128_mask">,
6583 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6584 [ llvm_v2f64_ty, llvm_v8f16_ty, llvm_i8_ty ],
6585 [ IntrNoMem ]>;
6586 def int_x86_avx512fp16_mask_vcvtpd2ph_256
6587 : ClangBuiltin<"__builtin_ia32_vcvtpd2ph256_mask">,
6588 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6589 [ llvm_v4f64_ty, llvm_v8f16_ty, llvm_i8_ty ],
6590 [ IntrNoMem ]>;
6591 def int_x86_avx512fp16_mask_vcvtpd2ph_512
6592 : ClangBuiltin<"__builtin_ia32_vcvtpd2ph512_mask">,
6593 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6594 [ llvm_v8f64_ty, llvm_v8f16_ty, llvm_i8_ty,
6595 llvm_i32_ty ],
6596 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6597 def int_x86_avx512fp16_mask_vcvtph2pd_128
6598 : ClangBuiltin<"__builtin_ia32_vcvtph2pd128_mask">,
6599 DefaultAttrsIntrinsic<[ llvm_v2f64_ty ],
6600 [ llvm_v8f16_ty, llvm_v2f64_ty, llvm_i8_ty ],
6601 [ IntrNoMem ]>;
6602 def int_x86_avx512fp16_mask_vcvtph2pd_256
6603 : ClangBuiltin<"__builtin_ia32_vcvtph2pd256_mask">,
6604 DefaultAttrsIntrinsic<[ llvm_v4f64_ty ],
6605 [ llvm_v8f16_ty, llvm_v4f64_ty, llvm_i8_ty ],
6606 [ IntrNoMem ]>;
6607 def int_x86_avx512fp16_mask_vcvtph2pd_512
6608 : ClangBuiltin<"__builtin_ia32_vcvtph2pd512_mask">,
6609 DefaultAttrsIntrinsic<[ llvm_v8f64_ty ],
6610 [ llvm_v8f16_ty, llvm_v8f64_ty, llvm_i8_ty,
6611 llvm_i32_ty ],
6612 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6613 def int_x86_avx512fp16_mask_vcvtsh2ss_round
6614 : ClangBuiltin<"__builtin_ia32_vcvtsh2ss_round_mask">,
6615 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
6616 [ llvm_v4f32_ty, llvm_v8f16_ty, llvm_v4f32_ty,
6617 llvm_i8_ty, llvm_i32_ty ],
6618 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6619 def int_x86_avx512fp16_mask_vcvtss2sh_round
6620 : ClangBuiltin<"__builtin_ia32_vcvtss2sh_round_mask">,
6621 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6622 [ llvm_v8f16_ty, llvm_v4f32_ty, llvm_v8f16_ty,
6623 llvm_i8_ty, llvm_i32_ty ],
6624 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6625 def int_x86_avx512fp16_mask_vcvtsd2sh_round
6626 : ClangBuiltin<"__builtin_ia32_vcvtsd2sh_round_mask">,
6627 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6628 [ llvm_v8f16_ty, llvm_v2f64_ty, llvm_v8f16_ty,
6629 llvm_i8_ty, llvm_i32_ty ],
6630 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6631 def int_x86_avx512fp16_mask_vcvtsh2sd_round
6632 : ClangBuiltin<"__builtin_ia32_vcvtsh2sd_round_mask">,
6633 DefaultAttrsIntrinsic<[ llvm_v2f64_ty ],
6634 [ llvm_v2f64_ty, llvm_v8f16_ty, llvm_v2f64_ty,
6635 llvm_i8_ty, llvm_i32_ty ],
6636 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6637
6638 def int_x86_avx512fp16_mask_vcvtph2w_128
6639 : ClangBuiltin<"__builtin_ia32_vcvtph2w128_mask">,
6640 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ],
6641 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ],
6642 [ IntrNoMem ]>;
6643 def int_x86_avx512fp16_mask_vcvtph2w_256
6644 : ClangBuiltin<"__builtin_ia32_vcvtph2w256_mask">,
6645 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ],
6646 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ],
6647 [ IntrNoMem ]>;
6648 def int_x86_avx512fp16_mask_vcvtph2w_512
6649 : ClangBuiltin<"__builtin_ia32_vcvtph2w512_mask">,
6650 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ],
6651 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty,
6652 llvm_i32_ty ],
6653 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6654 def int_x86_avx512fp16_mask_vcvttph2w_128
6655 : ClangBuiltin<"__builtin_ia32_vcvttph2w128_mask">,
6656 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ],
6657 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ],
6658 [ IntrNoMem ]>;
6659 def int_x86_avx512fp16_mask_vcvttph2w_256
6660 : ClangBuiltin<"__builtin_ia32_vcvttph2w256_mask">,
6661 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ],
6662 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ],
6663 [ IntrNoMem ]>;
6664 def int_x86_avx512fp16_mask_vcvttph2w_512
6665 : ClangBuiltin<"__builtin_ia32_vcvttph2w512_mask">,
6666 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ],
6667 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty,
6668 llvm_i32_ty ],
6669 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6670 def int_x86_avx512fp16_mask_vcvtph2uw_128
6671 : ClangBuiltin<"__builtin_ia32_vcvtph2uw128_mask">,
6672 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ],
6673 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ],
6674 [ IntrNoMem ]>;
6675 def int_x86_avx512fp16_mask_vcvtph2uw_256
6676 : ClangBuiltin<"__builtin_ia32_vcvtph2uw256_mask">,
6677 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ],
6678 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ],
6679 [ IntrNoMem ]>;
6680 def int_x86_avx512fp16_mask_vcvtph2uw_512
6681 : ClangBuiltin<"__builtin_ia32_vcvtph2uw512_mask">,
6682 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ],
6683 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty,
6684 llvm_i32_ty ],
6685 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6686 def int_x86_avx512fp16_mask_vcvttph2uw_128
6687 : ClangBuiltin<"__builtin_ia32_vcvttph2uw128_mask">,
6688 DefaultAttrsIntrinsic<[ llvm_v8i16_ty ],
6689 [ llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty ],
6690 [ IntrNoMem ]>;
6691 def int_x86_avx512fp16_mask_vcvttph2uw_256
6692 : ClangBuiltin<"__builtin_ia32_vcvttph2uw256_mask">,
6693 DefaultAttrsIntrinsic<[ llvm_v16i16_ty ],
6694 [ llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty ],
6695 [ IntrNoMem ]>;
6696 def int_x86_avx512fp16_mask_vcvttph2uw_512
6697 : ClangBuiltin<"__builtin_ia32_vcvttph2uw512_mask">,
6698 DefaultAttrsIntrinsic<[ llvm_v32i16_ty ],
6699 [ llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty,
6700 llvm_i32_ty ],
6701 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6702
6703 def int_x86_avx512fp16_mask_vcvtph2dq_128
6704 : ClangBuiltin<"__builtin_ia32_vcvtph2dq128_mask">,
6705 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ],
6706 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ],
6707 [ IntrNoMem ]>;
6708 def int_x86_avx512fp16_mask_vcvtph2dq_256
6709 : ClangBuiltin<"__builtin_ia32_vcvtph2dq256_mask">,
6710 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ],
6711 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ],
6712 [ IntrNoMem ]>;
6713 def int_x86_avx512fp16_mask_vcvtph2dq_512
6714 : ClangBuiltin<"__builtin_ia32_vcvtph2dq512_mask">,
6715 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ],
6716 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty,
6717 llvm_i32_ty ],
6718 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6719 def int_x86_avx512fp16_mask_vcvtph2udq_128
6720 : ClangBuiltin<"__builtin_ia32_vcvtph2udq128_mask">,
6721 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ],
6722 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ],
6723 [ IntrNoMem ]>;
6724 def int_x86_avx512fp16_mask_vcvtph2udq_256
6725 : ClangBuiltin<"__builtin_ia32_vcvtph2udq256_mask">,
6726 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ],
6727 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ],
6728 [ IntrNoMem ]>;
6729 def int_x86_avx512fp16_mask_vcvtph2udq_512
6730 : ClangBuiltin<"__builtin_ia32_vcvtph2udq512_mask">,
6731 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ],
6732 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty,
6733 llvm_i32_ty ],
6734 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6735 def int_x86_avx512fp16_mask_vcvtdq2ph_128
6736 : ClangBuiltin<"__builtin_ia32_vcvtdq2ph128_mask">,
6737 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6738 [ llvm_v4i32_ty, llvm_v8f16_ty, llvm_i8_ty ],
6739 [ IntrNoMem ]>;
6740 def int_x86_avx512fp16_mask_vcvtudq2ph_128
6741 : ClangBuiltin<"__builtin_ia32_vcvtudq2ph128_mask">,
6742 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6743 [ llvm_v4i32_ty, llvm_v8f16_ty, llvm_i8_ty ],
6744 [ IntrNoMem ]>;
6745 def int_x86_avx512fp16_mask_vcvttph2dq_128
6746 : ClangBuiltin<"__builtin_ia32_vcvttph2dq128_mask">,
6747 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ],
6748 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ],
6749 [ IntrNoMem ]>;
6750 def int_x86_avx512fp16_mask_vcvttph2dq_256
6751 : ClangBuiltin<"__builtin_ia32_vcvttph2dq256_mask">,
6752 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ],
6753 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ],
6754 [ IntrNoMem ]>;
6755 def int_x86_avx512fp16_mask_vcvttph2dq_512
6756 : ClangBuiltin<"__builtin_ia32_vcvttph2dq512_mask">,
6757 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ],
6758 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty,
6759 llvm_i32_ty ],
6760 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6761 def int_x86_avx512fp16_mask_vcvttph2udq_128
6762 : ClangBuiltin<"__builtin_ia32_vcvttph2udq128_mask">,
6763 DefaultAttrsIntrinsic<[ llvm_v4i32_ty ],
6764 [ llvm_v8f16_ty, llvm_v4i32_ty, llvm_i8_ty ],
6765 [ IntrNoMem ]>;
6766 def int_x86_avx512fp16_mask_vcvttph2udq_256
6767 : ClangBuiltin<"__builtin_ia32_vcvttph2udq256_mask">,
6768 DefaultAttrsIntrinsic<[ llvm_v8i32_ty ],
6769 [ llvm_v8f16_ty, llvm_v8i32_ty, llvm_i8_ty ],
6770 [ IntrNoMem ]>;
6771 def int_x86_avx512fp16_mask_vcvttph2udq_512
6772 : ClangBuiltin<"__builtin_ia32_vcvttph2udq512_mask">,
6773 DefaultAttrsIntrinsic<[ llvm_v16i32_ty ],
6774 [ llvm_v16f16_ty, llvm_v16i32_ty, llvm_i16_ty,
6775 llvm_i32_ty ],
6776 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6777
6778 def int_x86_avx512fp16_mask_vcvtqq2ph_128
6779 : ClangBuiltin<"__builtin_ia32_vcvtqq2ph128_mask">,
6780 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6781 [ llvm_v2i64_ty, llvm_v8f16_ty, llvm_i8_ty ],
6782 [ IntrNoMem ]>;
6783 def int_x86_avx512fp16_mask_vcvtqq2ph_256
6784 : ClangBuiltin<"__builtin_ia32_vcvtqq2ph256_mask">,
6785 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6786 [ llvm_v4i64_ty, llvm_v8f16_ty, llvm_i8_ty ],
6787 [ IntrNoMem ]>;
6788 def int_x86_avx512fp16_mask_vcvtph2qq_128
6789 : ClangBuiltin<"__builtin_ia32_vcvtph2qq128_mask">,
6790 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ],
6791 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ],
6792 [ IntrNoMem ]>;
6793 def int_x86_avx512fp16_mask_vcvtph2qq_256
6794 : ClangBuiltin<"__builtin_ia32_vcvtph2qq256_mask">,
6795 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ],
6796 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ],
6797 [ IntrNoMem ]>;
6798 def int_x86_avx512fp16_mask_vcvtph2qq_512
6799 : ClangBuiltin<"__builtin_ia32_vcvtph2qq512_mask">,
6800 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ],
6801 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty,
6802 llvm_i32_ty ],
6803 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6804 def int_x86_avx512fp16_mask_vcvtuqq2ph_128
6805 : ClangBuiltin<"__builtin_ia32_vcvtuqq2ph128_mask">,
6806 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6807 [ llvm_v2i64_ty, llvm_v8f16_ty, llvm_i8_ty ],
6808 [ IntrNoMem ]>;
6809 def int_x86_avx512fp16_mask_vcvtuqq2ph_256
6810 : ClangBuiltin<"__builtin_ia32_vcvtuqq2ph256_mask">,
6811 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6812 [ llvm_v4i64_ty, llvm_v8f16_ty, llvm_i8_ty ],
6813 [ IntrNoMem ]>;
6814 def int_x86_avx512fp16_mask_vcvtph2uqq_128
6815 : ClangBuiltin<"__builtin_ia32_vcvtph2uqq128_mask">,
6816 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ],
6817 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ],
6818 [ IntrNoMem ]>;
6819 def int_x86_avx512fp16_mask_vcvtph2uqq_256
6820 : ClangBuiltin<"__builtin_ia32_vcvtph2uqq256_mask">,
6821 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ],
6822 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ],
6823 [ IntrNoMem ]>;
6824 def int_x86_avx512fp16_mask_vcvtph2uqq_512
6825 : ClangBuiltin<"__builtin_ia32_vcvtph2uqq512_mask">,
6826 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ],
6827 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty,
6828 llvm_i32_ty ],
6829 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6830 def int_x86_avx512fp16_mask_vcvttph2qq_128
6831 : ClangBuiltin<"__builtin_ia32_vcvttph2qq128_mask">,
6832 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ],
6833 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ],
6834 [ IntrNoMem ]>;
6835 def int_x86_avx512fp16_mask_vcvttph2qq_256
6836 : ClangBuiltin<"__builtin_ia32_vcvttph2qq256_mask">,
6837 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ],
6838 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ],
6839 [ IntrNoMem ]>;
6840 def int_x86_avx512fp16_mask_vcvttph2qq_512
6841 : ClangBuiltin<"__builtin_ia32_vcvttph2qq512_mask">,
6842 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ],
6843 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty,
6844 llvm_i32_ty ],
6845 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6846 def int_x86_avx512fp16_mask_vcvttph2uqq_128
6847 : ClangBuiltin<"__builtin_ia32_vcvttph2uqq128_mask">,
6848 DefaultAttrsIntrinsic<[ llvm_v2i64_ty ],
6849 [ llvm_v8f16_ty, llvm_v2i64_ty, llvm_i8_ty ],
6850 [ IntrNoMem ]>;
6851 def int_x86_avx512fp16_mask_vcvttph2uqq_256
6852 : ClangBuiltin<"__builtin_ia32_vcvttph2uqq256_mask">,
6853 DefaultAttrsIntrinsic<[ llvm_v4i64_ty ],
6854 [ llvm_v8f16_ty, llvm_v4i64_ty, llvm_i8_ty ],
6855 [ IntrNoMem ]>;
6856 def int_x86_avx512fp16_mask_vcvttph2uqq_512
6857 : ClangBuiltin<"__builtin_ia32_vcvttph2uqq512_mask">,
6858 DefaultAttrsIntrinsic<[ llvm_v8i64_ty ],
6859 [ llvm_v8f16_ty, llvm_v8i64_ty, llvm_i8_ty,
6860 llvm_i32_ty ],
6861 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
6862
6863 def int_x86_avx512fp16_vcvtsh2si32
6864 : ClangBuiltin<"__builtin_ia32_vcvtsh2si32">,
6865 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ],
6866 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6867 def int_x86_avx512fp16_vcvtsh2usi32
6868 : ClangBuiltin<"__builtin_ia32_vcvtsh2usi32">,
6869 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ],
6870 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6871 def int_x86_avx512fp16_vcvtsh2si64
6872 : ClangBuiltin<"__builtin_ia32_vcvtsh2si64">,
6873 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ],
6874 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6875 def int_x86_avx512fp16_vcvtsh2usi64
6876 : ClangBuiltin<"__builtin_ia32_vcvtsh2usi64">,
6877 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ],
6878 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6879 def int_x86_avx512fp16_vcvtusi2sh
6880 : ClangBuiltin<"__builtin_ia32_vcvtusi2sh">,
6881 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6882 [ llvm_v8f16_ty, llvm_i32_ty, llvm_i32_ty ],
6883 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6884 def int_x86_avx512fp16_vcvtusi642sh
6885 : ClangBuiltin<"__builtin_ia32_vcvtusi642sh">,
6886 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6887 [ llvm_v8f16_ty, llvm_i64_ty, llvm_i32_ty ],
6888 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6889 def int_x86_avx512fp16_vcvtsi2sh
6890 : ClangBuiltin<"__builtin_ia32_vcvtsi2sh">,
6891 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6892 [ llvm_v8f16_ty, llvm_i32_ty, llvm_i32_ty ],
6893 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6894 def int_x86_avx512fp16_vcvtsi642sh
6895 : ClangBuiltin<"__builtin_ia32_vcvtsi642sh">,
6896 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6897 [ llvm_v8f16_ty, llvm_i64_ty, llvm_i32_ty ],
6898 [ IntrNoMem, ImmArg<ArgIndex<2>> ]>;
6899 def int_x86_avx512fp16_vcvttsh2si32
6900 : ClangBuiltin<"__builtin_ia32_vcvttsh2si32">,
6901 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ],
6902 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6903 def int_x86_avx512fp16_vcvttsh2si64
6904 : ClangBuiltin<"__builtin_ia32_vcvttsh2si64">,
6905 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ],
6906 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6907 def int_x86_avx512fp16_vcvttsh2usi32
6908 : ClangBuiltin<"__builtin_ia32_vcvttsh2usi32">,
6909 DefaultAttrsIntrinsic<[ llvm_i32_ty ], [ llvm_v8f16_ty, llvm_i32_ty ],
6910 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6911 def int_x86_avx512fp16_vcvttsh2usi64
6912 : ClangBuiltin<"__builtin_ia32_vcvttsh2usi64">,
6913 DefaultAttrsIntrinsic<[ llvm_i64_ty ], [ llvm_v8f16_ty, llvm_i32_ty ],
6914 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6915
6916 def int_x86_avx512fp16_sqrt_ph_512
6917 : DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
6918 [ llvm_v32f16_ty, llvm_i32_ty ],
6919 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6920 def int_x86_avx512fp16_mask_sqrt_sh
6921 : DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6922 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
6923 llvm_i8_ty, llvm_i32_ty ],
6924 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
6925 def int_x86_avx512fp16_mask_rsqrt_ph_128
6926 : ClangBuiltin<"__builtin_ia32_rsqrtph128_mask">,
6927 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6928 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i8_ty ],
6929 [ IntrNoMem ]>;
6930 def int_x86_avx512fp16_mask_rsqrt_ph_256
6931 : ClangBuiltin<"__builtin_ia32_rsqrtph256_mask">,
6932 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
6933 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty ],
6934 [ IntrNoMem ]>;
6935 def int_x86_avx512fp16_mask_rsqrt_ph_512
6936 : ClangBuiltin<"__builtin_ia32_rsqrtph512_mask">,
6937 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
6938 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ],
6939 [ IntrNoMem ]>;
6940 def int_x86_avx512fp16_mask_rsqrt_sh
6941 : ClangBuiltin<"__builtin_ia32_rsqrtsh_mask">,
6942 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6943 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
6944 llvm_i8_ty ],
6945 [ IntrNoMem ]>;
6946 def int_x86_avx512fp16_mask_rcp_ph_128
6947 : ClangBuiltin<"__builtin_ia32_rcpph128_mask">,
6948 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6949 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i8_ty ],
6950 [ IntrNoMem ]>;
6951 def int_x86_avx512fp16_mask_rcp_ph_256
6952 : ClangBuiltin<"__builtin_ia32_rcpph256_mask">,
6953 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
6954 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty ],
6955 [ IntrNoMem ]>;
6956 def int_x86_avx512fp16_mask_rcp_ph_512
6957 : ClangBuiltin<"__builtin_ia32_rcpph512_mask">,
6958 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
6959 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty ],
6960 [ IntrNoMem ]>;
6961 def int_x86_avx512fp16_mask_rcp_sh
6962 : ClangBuiltin<"__builtin_ia32_rcpsh_mask">,
6963 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6964 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
6965 llvm_i8_ty ],
6966 [ IntrNoMem ]>;
6967 def int_x86_avx512fp16_mask_reduce_ph_128
6968 : ClangBuiltin<"__builtin_ia32_reduceph128_mask">,
6969 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6970 [ llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty,
6971 llvm_i8_ty ],
6972 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6973 def int_x86_avx512fp16_mask_reduce_ph_256
6974 : ClangBuiltin<"__builtin_ia32_reduceph256_mask">,
6975 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
6976 [ llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty,
6977 llvm_i16_ty ],
6978 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6979 def int_x86_avx512fp16_mask_reduce_ph_512
6980 : ClangBuiltin<"__builtin_ia32_reduceph512_mask">,
6981 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
6982 [ llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty,
6983 llvm_i32_ty, llvm_i32_ty ],
6984 [ IntrNoMem, ImmArg<ArgIndex<1>>,
6985 ImmArg<ArgIndex<4>> ]>;
6986 def int_x86_avx512fp16_mask_reduce_sh
6987 : ClangBuiltin<"__builtin_ia32_reducesh_mask">,
6988 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
6989 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
6990 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty ],
6991 [ IntrNoMem, ImmArg<ArgIndex<4>>,
6992 ImmArg<ArgIndex<5>> ]>;
6993 def int_x86_avx512fp16_fpclass_ph_128
6994 : DefaultAttrsIntrinsic<[ llvm_v8i1_ty ], [ llvm_v8f16_ty, llvm_i32_ty ],
6995 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
6996 def int_x86_avx512fp16_fpclass_ph_256
6997 : DefaultAttrsIntrinsic<[ llvm_v16i1_ty ],
6998 [ llvm_v16f16_ty, llvm_i32_ty ],
6999 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
7000 def int_x86_avx512fp16_fpclass_ph_512
7001 : DefaultAttrsIntrinsic<[ llvm_v32i1_ty ],
7002 [ llvm_v32f16_ty, llvm_i32_ty ],
7003 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
7004 def int_x86_avx512fp16_mask_fpclass_sh
7005 : ClangBuiltin<"__builtin_ia32_fpclasssh_mask">,
7006 DefaultAttrsIntrinsic<[ llvm_i8_ty ],
7007 [ llvm_v8f16_ty, llvm_i32_ty, llvm_i8_ty ],
7008 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
7009 def int_x86_avx512fp16_mask_getexp_ph_128
7010 : ClangBuiltin<"__builtin_ia32_getexpph128_mask">,
7011 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
7012 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i8_ty ],
7013 [ IntrNoMem ]>;
7014 def int_x86_avx512fp16_mask_getexp_ph_256
7015 : ClangBuiltin<"__builtin_ia32_getexpph256_mask">,
7016 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
7017 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_i16_ty ],
7018 [ IntrNoMem ]>;
7019 def int_x86_avx512fp16_mask_getexp_ph_512
7020 : ClangBuiltin<"__builtin_ia32_getexpph512_mask">,
7021 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
7022 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty,
7023 llvm_i32_ty ],
7024 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
7025 def int_x86_avx512fp16_mask_getexp_sh
7026 : ClangBuiltin<"__builtin_ia32_getexpsh128_round_mask">,
7027 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
7028 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
7029 llvm_i8_ty, llvm_i32_ty ],
7030 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7031 def int_x86_avx512fp16_mask_getmant_ph_128
7032 : ClangBuiltin<"__builtin_ia32_getmantph128_mask">,
7033 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
7034 [ llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty,
7035 llvm_i8_ty ],
7036 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
7037 def int_x86_avx512fp16_mask_getmant_ph_256
7038 : ClangBuiltin<"__builtin_ia32_getmantph256_mask">,
7039 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
7040 [ llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty,
7041 llvm_i16_ty ],
7042 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
7043 def int_x86_avx512fp16_mask_getmant_ph_512
7044 : ClangBuiltin<"__builtin_ia32_getmantph512_mask">,
7045 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
7046 [ llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty,
7047 llvm_i32_ty, llvm_i32_ty ],
7048 [ IntrNoMem, ImmArg<ArgIndex<1>>,
7049 ImmArg<ArgIndex<4>> ]>;
7050 def int_x86_avx512fp16_mask_getmant_sh
7051 : ClangBuiltin<"__builtin_ia32_getmantsh_round_mask">,
7052 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
7053 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty,
7054 llvm_v8f16_ty, llvm_i8_ty, llvm_i32_ty ],
7055 [ IntrNoMem, ImmArg<ArgIndex<2>>,
7056 ImmArg<ArgIndex<5>> ]>;
7057 def int_x86_avx512fp16_mask_rndscale_ph_128
7058 : ClangBuiltin<"__builtin_ia32_rndscaleph_128_mask">,
7059 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
7060 [ llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty,
7061 llvm_i8_ty ],
7062 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
7063 def int_x86_avx512fp16_mask_rndscale_ph_256
7064 : ClangBuiltin<"__builtin_ia32_rndscaleph_256_mask">,
7065 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
7066 [ llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty,
7067 llvm_i16_ty ],
7068 [ IntrNoMem, ImmArg<ArgIndex<1>> ]>;
7069 def int_x86_avx512fp16_mask_rndscale_ph_512
7070 : ClangBuiltin<"__builtin_ia32_rndscaleph_mask">,
7071 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
7072 [ llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty,
7073 llvm_i32_ty, llvm_i32_ty ],
7074 [ IntrNoMem, ImmArg<ArgIndex<1>>,
7075 ImmArg<ArgIndex<4>> ]>;
7076 def int_x86_avx512fp16_mask_rndscale_sh
7077 : ClangBuiltin<"__builtin_ia32_rndscalesh_round_mask">,
7078 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
7079 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
7080 llvm_i8_ty, llvm_i32_ty, llvm_i32_ty ],
7081 [ IntrNoMem, ImmArg<ArgIndex<4>>,
7082 ImmArg<ArgIndex<5>> ]>;
7083 def int_x86_avx512fp16_mask_scalef_ph_128
7084 : ClangBuiltin<"__builtin_ia32_scalefph128_mask">,
7085 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
7086 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
7087 llvm_i8_ty ],
7088 [ IntrNoMem ]>;
7089 def int_x86_avx512fp16_mask_scalef_ph_256
7090 : ClangBuiltin<"__builtin_ia32_scalefph256_mask">,
7091 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
7092 [ llvm_v16f16_ty, llvm_v16f16_ty, llvm_v16f16_ty,
7093 llvm_i16_ty ],
7094 [ IntrNoMem ]>;
7095 def int_x86_avx512fp16_mask_scalef_ph_512
7096 : ClangBuiltin<"__builtin_ia32_scalefph512_mask">,
7097 DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
7098 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_v32f16_ty,
7099 llvm_i32_ty, llvm_i32_ty ],
7100 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7101 def int_x86_avx512fp16_mask_scalef_sh
7102 : ClangBuiltin<"__builtin_ia32_scalefsh_round_mask">,
7103 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
7104 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty,
7105 llvm_i8_ty, llvm_i32_ty ],
7106 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7107
7108 def int_x86_avx512fp16_vfmadd_ph_512
7109 : DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
7110 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_v32f16_ty,
7111 llvm_i32_ty ],
7112 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
7113 def int_x86_avx512fp16_vfmaddsub_ph_128
7114 : ClangBuiltin<"__builtin_ia32_vfmaddsubph">,
7115 DefaultAttrsIntrinsic<[ llvm_v8f16_ty ],
7116 [ llvm_v8f16_ty, llvm_v8f16_ty, llvm_v8f16_ty ],
7117 [ IntrNoMem ]>;
7118 def int_x86_avx512fp16_vfmaddsub_ph_256
7119 : ClangBuiltin<"__builtin_ia32_vfmaddsubph256">,
7120 DefaultAttrsIntrinsic<[ llvm_v16f16_ty ],
7121 [ llvm_v16f16_ty, llvm_v16f16_ty,
7122 llvm_v16f16_ty ],
7123 [ IntrNoMem ]>;
7124 def int_x86_avx512fp16_vfmaddsub_ph_512
7125 : DefaultAttrsIntrinsic<[ llvm_v32f16_ty ],
7126 [ llvm_v32f16_ty, llvm_v32f16_ty, llvm_v32f16_ty,
7127 llvm_i32_ty ],
7128 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
7129 def int_x86_avx512fp16_vfmadd_f16
7130 : DefaultAttrsIntrinsic<[ llvm_half_ty ],
7131 [ llvm_half_ty, llvm_half_ty, llvm_half_ty,
7132 llvm_i32_ty ],
7133 [ IntrNoMem, ImmArg<ArgIndex<3>> ]>;
7134
7135 def int_x86_avx512fp16_mask_vfcmadd_cph_128
7136 : ClangBuiltin<"__builtin_ia32_vfcmaddcph128_mask">,
7137 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7138 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7139 llvm_i8_ty ],
7140 [ IntrNoMem ]>;
7141 def int_x86_avx512fp16_maskz_vfcmadd_cph_128
7142 : ClangBuiltin<"__builtin_ia32_vfcmaddcph128_maskz">,
7143 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7144 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7145 llvm_i8_ty ],
7146 [ IntrNoMem ]>;
7147 def int_x86_avx512fp16_mask_vfcmadd_cph_256
7148 : ClangBuiltin<"__builtin_ia32_vfcmaddcph256_mask">,
7149 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ],
7150 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty,
7151 llvm_i8_ty ],
7152 [ IntrNoMem ]>;
7153 def int_x86_avx512fp16_maskz_vfcmadd_cph_256
7154 : ClangBuiltin<"__builtin_ia32_vfcmaddcph256_maskz">,
7155 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ],
7156 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty,
7157 llvm_i8_ty ],
7158 [ IntrNoMem ]>;
7159 def int_x86_avx512fp16_mask_vfcmadd_cph_512
7160 : ClangBuiltin<"__builtin_ia32_vfcmaddcph512_mask3">,
7161 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ],
7162 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty,
7163 llvm_i16_ty, llvm_i32_ty ],
7164 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7165 def int_x86_avx512fp16_maskz_vfcmadd_cph_512
7166 : ClangBuiltin<"__builtin_ia32_vfcmaddcph512_maskz">,
7167 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ],
7168 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty,
7169 llvm_i16_ty, llvm_i32_ty ],
7170 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7171 def int_x86_avx512fp16_mask_vfmadd_cph_128
7172 : ClangBuiltin<"__builtin_ia32_vfmaddcph128_mask">,
7173 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7174 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7175 llvm_i8_ty ],
7176 [ IntrNoMem ]>;
7177 def int_x86_avx512fp16_maskz_vfmadd_cph_128
7178 : ClangBuiltin<"__builtin_ia32_vfmaddcph128_maskz">,
7179 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7180 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7181 llvm_i8_ty ],
7182 [ IntrNoMem ]>;
7183 def int_x86_avx512fp16_mask_vfmadd_cph_256
7184 : ClangBuiltin<"__builtin_ia32_vfmaddcph256_mask">,
7185 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ],
7186 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty,
7187 llvm_i8_ty ],
7188 [ IntrNoMem ]>;
7189 def int_x86_avx512fp16_maskz_vfmadd_cph_256
7190 : ClangBuiltin<"__builtin_ia32_vfmaddcph256_maskz">,
7191 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ],
7192 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty,
7193 llvm_i8_ty ],
7194 [ IntrNoMem ]>;
7195 def int_x86_avx512fp16_mask_vfmadd_cph_512
7196 : ClangBuiltin<"__builtin_ia32_vfmaddcph512_mask3">,
7197 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ],
7198 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty,
7199 llvm_i16_ty, llvm_i32_ty ],
7200 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7201 def int_x86_avx512fp16_maskz_vfmadd_cph_512
7202 : ClangBuiltin<"__builtin_ia32_vfmaddcph512_maskz">,
7203 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ],
7204 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty,
7205 llvm_i16_ty, llvm_i32_ty ],
7206 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7207 def int_x86_avx512fp16_mask_vfmadd_csh
7208 : ClangBuiltin<"__builtin_ia32_vfmaddcsh_mask">,
7209 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7210 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7211 llvm_i8_ty, llvm_i32_ty ],
7212 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7213 def int_x86_avx512fp16_maskz_vfmadd_csh
7214 : ClangBuiltin<"__builtin_ia32_vfmaddcsh_maskz">,
7215 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7216 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7217 llvm_i8_ty, llvm_i32_ty ],
7218 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7219 def int_x86_avx512fp16_mask_vfcmadd_csh
7220 : ClangBuiltin<"__builtin_ia32_vfcmaddcsh_mask">,
7221 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7222 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7223 llvm_i8_ty, llvm_i32_ty ],
7224 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7225 def int_x86_avx512fp16_maskz_vfcmadd_csh
7226 : ClangBuiltin<"__builtin_ia32_vfcmaddcsh_maskz">,
7227 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7228 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7229 llvm_i8_ty, llvm_i32_ty ],
7230 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7231 def int_x86_avx512fp16_mask_vfmul_cph_128
7232 : ClangBuiltin<"__builtin_ia32_vfmulcph128_mask">,
7233 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7234 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7235 llvm_i8_ty ],
7236 [ IntrNoMem ]>;
7237 def int_x86_avx512fp16_mask_vfcmul_cph_128
7238 : ClangBuiltin<"__builtin_ia32_vfcmulcph128_mask">,
7239 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7240 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7241 llvm_i8_ty ],
7242 [ IntrNoMem ]>;
7243 def int_x86_avx512fp16_mask_vfmul_cph_256
7244 : ClangBuiltin<"__builtin_ia32_vfmulcph256_mask">,
7245 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ],
7246 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty,
7247 llvm_i8_ty ],
7248 [ IntrNoMem ]>;
7249 def int_x86_avx512fp16_mask_vfcmul_cph_256
7250 : ClangBuiltin<"__builtin_ia32_vfcmulcph256_mask">,
7251 DefaultAttrsIntrinsic<[ llvm_v8f32_ty ],
7252 [ llvm_v8f32_ty, llvm_v8f32_ty, llvm_v8f32_ty,
7253 llvm_i8_ty ],
7254 [ IntrNoMem ]>;
7255 def int_x86_avx512fp16_mask_vfmul_cph_512
7256 : ClangBuiltin<"__builtin_ia32_vfmulcph512_mask">,
7257 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ],
7258 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty,
7259 llvm_i16_ty, llvm_i32_ty ],
7260 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7261 def int_x86_avx512fp16_mask_vfcmul_cph_512
7262 : ClangBuiltin<"__builtin_ia32_vfcmulcph512_mask">,
7263 DefaultAttrsIntrinsic<[ llvm_v16f32_ty ],
7264 [ llvm_v16f32_ty, llvm_v16f32_ty, llvm_v16f32_ty,
7265 llvm_i16_ty, llvm_i32_ty ],
7266 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7267 def int_x86_avx512fp16_mask_vfmul_csh
7268 : ClangBuiltin<"__builtin_ia32_vfmulcsh_mask">,
7269 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7270 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7271 llvm_i8_ty, llvm_i32_ty ],
7272 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7273 def int_x86_avx512fp16_mask_vfcmul_csh
7274 : ClangBuiltin<"__builtin_ia32_vfcmulcsh_mask">,
7275 DefaultAttrsIntrinsic<[ llvm_v4f32_ty ],
7276 [ llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty,
7277 llvm_i8_ty, llvm_i32_ty ],
7278 [ IntrNoMem, ImmArg<ArgIndex<4>> ]>;
7279 }
7280
7281 let TargetPrefix = "x86" in {
7282 def int_x86_avx10_vminmaxbf16128 : ClangBuiltin<"__builtin_ia32_vminmaxbf16128">,
7283 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_i32_ty],
7284 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7285 def int_x86_avx10_vminmaxbf16256 : ClangBuiltin<"__builtin_ia32_vminmaxbf16256">,
7286 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_i32_ty],
7287 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7288 def int_x86_avx10_vminmaxbf16512 : ClangBuiltin<"__builtin_ia32_vminmaxbf16512">,
7289 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_i32_ty],
7290 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7291 def int_x86_avx10_vminmaxpd128 : ClangBuiltin<"__builtin_ia32_vminmaxpd128">,
7292 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty],
7293 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7294 def int_x86_avx10_mask_vminmaxpd128 : ClangBuiltin<"__builtin_ia32_vminmaxpd128_mask">,
7295 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, llvm_i8_ty],
7296 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7297 def int_x86_avx10_vminmaxpd256 : ClangBuiltin<"__builtin_ia32_vminmaxpd256">,
7298 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty],
7299 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7300 def int_x86_avx10_mask_vminmaxpd256_round : ClangBuiltin<"__builtin_ia32_vminmaxpd256_round_mask">,
7301 DefaultAttrsIntrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_v4f64_ty, llvm_i32_ty, llvm_v4f64_ty, llvm_i8_ty, llvm_i32_ty],
7302 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
7303 def int_x86_avx10_mask_vminmaxpd_round : ClangBuiltin<"__builtin_ia32_vminmaxpd512_round_mask">,
7304 DefaultAttrsIntrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_v8f64_ty, llvm_i32_ty, llvm_v8f64_ty, llvm_i8_ty, llvm_i32_ty],
7305 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
7306 def int_x86_avx10_vminmaxph128 : ClangBuiltin<"__builtin_ia32_vminmaxph128">,
7307 DefaultAttrsIntrinsic<[llvm_v8f16_ty], [llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty],
7308 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7309 def int_x86_avx10_mask_vminmaxph128 : ClangBuiltin<"__builtin_ia32_vminmaxph128_mask">,
7310 DefaultAttrsIntrinsic<[llvm_v8f16_ty], [llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty, llvm_i8_ty],
7311 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7312 def int_x86_avx10_vminmaxph256 : ClangBuiltin<"__builtin_ia32_vminmaxph256">,
7313 DefaultAttrsIntrinsic<[llvm_v16f16_ty], [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty],
7314 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7315 def int_x86_avx10_mask_vminmaxph256_round : ClangBuiltin<"__builtin_ia32_vminmaxph256_round_mask">,
7316 DefaultAttrsIntrinsic<[llvm_v16f16_ty], [llvm_v16f16_ty, llvm_v16f16_ty, llvm_i32_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty],
7317 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7318 def int_x86_avx10_mask_vminmaxph_round : ClangBuiltin<"__builtin_ia32_vminmaxph512_round_mask">,
7319 DefaultAttrsIntrinsic<[llvm_v32f16_ty], [llvm_v32f16_ty, llvm_v32f16_ty, llvm_i32_ty, llvm_v32f16_ty, llvm_i32_ty, llvm_i32_ty],
7320 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
7321 def int_x86_avx10_vminmaxps128 : ClangBuiltin<"__builtin_ia32_vminmaxps128">,
7322 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty],
7323 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7324 def int_x86_avx10_mask_vminmaxps128 : ClangBuiltin<"__builtin_ia32_vminmaxps128_mask">,
7325 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, llvm_i8_ty],
7326 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7327 def int_x86_avx10_vminmaxps256 : ClangBuiltin<"__builtin_ia32_vminmaxps256">,
7328 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty],
7329 [IntrNoMem, ImmArg<ArgIndex<2>>]>;
7330 def int_x86_avx10_mask_vminmaxps256_round : ClangBuiltin<"__builtin_ia32_vminmaxps256_round_mask">,
7331 DefaultAttrsIntrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty, llvm_i32_ty, llvm_v8f32_ty, llvm_i8_ty, llvm_i32_ty],
7332 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
7333 def int_x86_avx10_mask_vminmaxps_round : ClangBuiltin<"__builtin_ia32_vminmaxps512_round_mask">,
7334 DefaultAttrsIntrinsic<[llvm_v16f32_ty], [llvm_v16f32_ty, llvm_v16f32_ty, llvm_i32_ty, llvm_v16f32_ty, llvm_i16_ty, llvm_i32_ty],
7335 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
7336 def int_x86_avx10_mask_vminmaxsd_round : ClangBuiltin<"__builtin_ia32_vminmaxsd_round_mask">,
7337 DefaultAttrsIntrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty, llvm_v2f64_ty, llvm_i8_ty, llvm_i32_ty],
7338 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
7339 def int_x86_avx10_mask_vminmaxsh_round : ClangBuiltin<"__builtin_ia32_vminmaxsh_round_mask">,
7340 DefaultAttrsIntrinsic<[llvm_v8f16_ty], [llvm_v8f16_ty, llvm_v8f16_ty, llvm_i32_ty, llvm_v8f16_ty, llvm_i8_ty, llvm_i32_ty],
7341 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
7342 def int_x86_avx10_mask_vminmaxss_round : ClangBuiltin<"__builtin_ia32_vminmaxss_round_mask">,
7343 DefaultAttrsIntrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty, llvm_v4f32_ty, llvm_i8_ty, llvm_i32_ty],
7344 [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<5>>]>;
7345 }
7346
7347 //===----------------------------------------------------------------------===//
7348 let TargetPrefix = "x86" in {
7349 def int_x86_avx10_vcvtbf162ibs128 : ClangBuiltin<"__builtin_ia32_vcvtbf162ibs128">,
7350 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8bf16_ty],
7351 [IntrNoMem]>;
7352 def int_x86_avx10_vcvtbf162ibs256 : ClangBuiltin<"__builtin_ia32_vcvtbf162ibs256">,
7353 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16bf16_ty],
7354 [IntrNoMem]>;
7355 def int_x86_avx10_vcvtbf162ibs512 : ClangBuiltin<"__builtin_ia32_vcvtbf162ibs512">,
7356 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32bf16_ty],
7357 [IntrNoMem]>;
7358 def int_x86_avx10_vcvtbf162iubs128 : ClangBuiltin<"__builtin_ia32_vcvtbf162iubs128">,
7359 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8bf16_ty],
7360 [IntrNoMem]>;
7361 def int_x86_avx10_vcvtbf162iubs256 : ClangBuiltin<"__builtin_ia32_vcvtbf162iubs256">,
7362 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16bf16_ty],
7363 [IntrNoMem]>;
7364 def int_x86_avx10_vcvtbf162iubs512 : ClangBuiltin<"__builtin_ia32_vcvtbf162iubs512">,
7365 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32bf16_ty],
7366 [IntrNoMem]>;
7367 def int_x86_avx10_mask_vcvtph2ibs128 : ClangBuiltin<"__builtin_ia32_vcvtph2ibs128_mask">,
7368 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty],
7369 [IntrNoMem]>;
7370 def int_x86_avx10_mask_vcvtph2ibs256 : ClangBuiltin<"__builtin_ia32_vcvtph2ibs256_mask">,
7371 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty],
7372 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7373 def int_x86_avx10_mask_vcvtph2ibs512 : ClangBuiltin<"__builtin_ia32_vcvtph2ibs512_mask">,
7374 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, llvm_i32_ty],
7375 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7376 def int_x86_avx10_mask_vcvtph2iubs128 : ClangBuiltin<"__builtin_ia32_vcvtph2iubs128_mask">,
7377 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty],
7378 [IntrNoMem]>;
7379 def int_x86_avx10_mask_vcvtph2iubs256 : ClangBuiltin<"__builtin_ia32_vcvtph2iubs256_mask">,
7380 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty],
7381 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7382 def int_x86_avx10_mask_vcvtph2iubs512 : ClangBuiltin<"__builtin_ia32_vcvtph2iubs512_mask">,
7383 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, llvm_i32_ty],
7384 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7385 def int_x86_avx10_mask_vcvtps2ibs128 : ClangBuiltin<"__builtin_ia32_vcvtps2ibs128_mask">,
7386 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
7387 [IntrNoMem]>;
7388 def int_x86_avx10_mask_vcvtps2ibs256 : ClangBuiltin<"__builtin_ia32_vcvtps2ibs256_mask">,
7389 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
7390 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7391 def int_x86_avx10_mask_vcvtps2ibs512 : ClangBuiltin<"__builtin_ia32_vcvtps2ibs512_mask">,
7392 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
7393 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7394 def int_x86_avx10_mask_vcvtps2iubs128 : ClangBuiltin<"__builtin_ia32_vcvtps2iubs128_mask">,
7395 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
7396 [IntrNoMem]>;
7397 def int_x86_avx10_mask_vcvtps2iubs256 : ClangBuiltin<"__builtin_ia32_vcvtps2iubs256_mask">,
7398 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
7399 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7400 def int_x86_avx10_mask_vcvtps2iubs512 : ClangBuiltin<"__builtin_ia32_vcvtps2iubs512_mask">,
7401 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
7402 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7403 def int_x86_avx10_vcvttbf162ibs128 : ClangBuiltin<"__builtin_ia32_vcvttbf162ibs128">,
7404 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8bf16_ty],
7405 [IntrNoMem]>;
7406 def int_x86_avx10_vcvttbf162ibs256 : ClangBuiltin<"__builtin_ia32_vcvttbf162ibs256">,
7407 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16bf16_ty],
7408 [IntrNoMem]>;
7409 def int_x86_avx10_vcvttbf162ibs512 : ClangBuiltin<"__builtin_ia32_vcvttbf162ibs512">,
7410 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32bf16_ty],
7411 [IntrNoMem]>;
7412 def int_x86_avx10_vcvttbf162iubs128 : ClangBuiltin<"__builtin_ia32_vcvttbf162iubs128">,
7413 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8bf16_ty],
7414 [IntrNoMem]>;
7415 def int_x86_avx10_vcvttbf162iubs256 : ClangBuiltin<"__builtin_ia32_vcvttbf162iubs256">,
7416 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16bf16_ty],
7417 [IntrNoMem]>;
7418 def int_x86_avx10_vcvttbf162iubs512 : ClangBuiltin<"__builtin_ia32_vcvttbf162iubs512">,
7419 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32bf16_ty],
7420 [IntrNoMem]>;
7421 def int_x86_avx10_mask_vcvttph2ibs128 : ClangBuiltin<"__builtin_ia32_vcvttph2ibs128_mask">,
7422 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty],
7423 [IntrNoMem]>;
7424 def int_x86_avx10_mask_vcvttph2ibs256 : ClangBuiltin<"__builtin_ia32_vcvttph2ibs256_mask">,
7425 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty],
7426 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7427 def int_x86_avx10_mask_vcvttph2ibs512 : ClangBuiltin<"__builtin_ia32_vcvttph2ibs512_mask">,
7428 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, llvm_i32_ty],
7429 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7430 def int_x86_avx10_mask_vcvttph2iubs128 : ClangBuiltin<"__builtin_ia32_vcvttph2iubs128_mask">,
7431 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_v8f16_ty, llvm_v8i16_ty, llvm_i8_ty],
7432 [IntrNoMem]>;
7433 def int_x86_avx10_mask_vcvttph2iubs256 : ClangBuiltin<"__builtin_ia32_vcvttph2iubs256_mask">,
7434 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_v16f16_ty, llvm_v16i16_ty, llvm_i16_ty, llvm_i32_ty],
7435 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7436 def int_x86_avx10_mask_vcvttph2iubs512 : ClangBuiltin<"__builtin_ia32_vcvttph2iubs512_mask">,
7437 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_v32f16_ty, llvm_v32i16_ty, llvm_i32_ty, llvm_i32_ty],
7438 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7439 def int_x86_avx10_mask_vcvttps2ibs128 : ClangBuiltin<"__builtin_ia32_vcvttps2ibs128_mask">,
7440 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
7441 [IntrNoMem]>;
7442 def int_x86_avx10_mask_vcvttps2ibs256 : ClangBuiltin<"__builtin_ia32_vcvttps2ibs256_mask">,
7443 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
7444 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7445 def int_x86_avx10_mask_vcvttps2ibs512 : ClangBuiltin<"__builtin_ia32_vcvttps2ibs512_mask">,
7446 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
7447 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7448 def int_x86_avx10_mask_vcvttps2iubs128 : ClangBuiltin<"__builtin_ia32_vcvttps2iubs128_mask">,
7449 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
7450 [IntrNoMem]>;
7451 def int_x86_avx10_mask_vcvttps2iubs256 : ClangBuiltin<"__builtin_ia32_vcvttps2iubs256_mask">,
7452 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
7453 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7454 def int_x86_avx10_mask_vcvttps2iubs512 : ClangBuiltin<"__builtin_ia32_vcvttps2iubs512_mask">,
7455 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
7456 [IntrNoMem, ImmArg<ArgIndex<3>>]>;
7457 }
7458
7459 //===----------------------------------------------------------------------===//
7460 let TargetPrefix = "x86" in {
7461 def int_x86_avx10_mask_vcvt2ps2phx_128 : ClangBuiltin<"__builtin_ia32_vcvt2ps2phx128_mask">,
7462 DefaultAttrsIntrinsic<[llvm_v8f16_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v8f16_ty, llvm_i8_ty],
7463 [IntrNoMem]>;
7464 def int_x86_avx10_mask_vcvt2ps2phx_256 : ClangBuiltin<"__builtin_ia32_vcvt2ps2phx256_mask">,
7465 DefaultAttrsIntrinsic<[llvm_v16f16_ty], [llvm_v8f32_ty, llvm_v8f32_ty, llvm_v16f16_ty, llvm_i16_ty, llvm_i32_ty],
7466 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
7467 def int_x86_avx10_mask_vcvt2ps2phx_512 : ClangBuiltin<"__builtin_ia32_vcvt2ps2phx512_mask">,
7468 DefaultAttrsIntrinsic<[llvm_v32f16_ty], [llvm_v16f32_ty, llvm_v16f32_ty, llvm_v32f16_ty, llvm_i32_ty, llvm_i32_ty],
7469 [IntrNoMem, ImmArg<ArgIndex<4>>]>;
7470 def int_x86_avx10_mask_vcvtbiasph2bf8128 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8_128_mask">,
7471 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty],
7472 [IntrNoMem]>;
7473 def int_x86_avx10_mask_vcvtbiasph2bf8256 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8_256_mask">,
7474 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v32i8_ty, llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty],
7475 [IntrNoMem]>;
7476 def int_x86_avx10_mask_vcvtbiasph2bf8512 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8_512_mask">,
7477 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v64i8_ty, llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty],
7478 [IntrNoMem]>;
7479 def int_x86_avx10_mask_vcvtbiasph2bf8s128 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8s_128_mask">,
7480 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty],
7481 [IntrNoMem]>;
7482 def int_x86_avx10_mask_vcvtbiasph2bf8s256 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8s_256_mask">,
7483 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v32i8_ty, llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty],
7484 [IntrNoMem]>;
7485 def int_x86_avx10_mask_vcvtbiasph2bf8s512 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2bf8s_512_mask">,
7486 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v64i8_ty, llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty],
7487 [IntrNoMem]>;
7488 def int_x86_avx10_mask_vcvtbiasph2hf8128 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8_128_mask">,
7489 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty],
7490 [IntrNoMem]>;
7491 def int_x86_avx10_mask_vcvtbiasph2hf8256 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8_256_mask">,
7492 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v32i8_ty, llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty],
7493 [IntrNoMem]>;
7494 def int_x86_avx10_mask_vcvtbiasph2hf8512 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8_512_mask">,
7495 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v64i8_ty, llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty],
7496 [IntrNoMem]>;
7497 def int_x86_avx10_mask_vcvtbiasph2hf8s128 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8s_128_mask">,
7498 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty],
7499 [IntrNoMem]>;
7500 def int_x86_avx10_mask_vcvtbiasph2hf8s256 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8s_256_mask">,
7501 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v32i8_ty, llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty],
7502 [IntrNoMem]>;
7503 def int_x86_avx10_mask_vcvtbiasph2hf8s512 : ClangBuiltin<"__builtin_ia32_vcvtbiasph2hf8s_512_mask">,
7504 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v64i8_ty, llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty],
7505 [IntrNoMem]>;
7506 def int_x86_avx10_vcvt2ph2bf8128 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8_128">,
7507 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v8f16_ty],
7508 [IntrNoMem]>;
7509 def int_x86_avx10_vcvt2ph2bf8256 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8_256">,
7510 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16f16_ty, llvm_v16f16_ty],
7511 [IntrNoMem]>;
7512 def int_x86_avx10_vcvt2ph2bf8512 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8_512">,
7513 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32f16_ty, llvm_v32f16_ty],
7514 [IntrNoMem]>;
7515 def int_x86_avx10_vcvt2ph2bf8s128 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8s_128">,
7516 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v8f16_ty],
7517 [IntrNoMem]>;
7518 def int_x86_avx10_vcvt2ph2bf8s256 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8s_256">,
7519 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16f16_ty, llvm_v16f16_ty],
7520 [IntrNoMem]>;
7521 def int_x86_avx10_vcvt2ph2bf8s512 : ClangBuiltin<"__builtin_ia32_vcvt2ph2bf8s_512">,
7522 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32f16_ty, llvm_v32f16_ty],
7523 [IntrNoMem]>;
7524 def int_x86_avx10_vcvt2ph2hf8128 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8_128">,
7525 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v8f16_ty],
7526 [IntrNoMem]>;
7527 def int_x86_avx10_vcvt2ph2hf8256 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8_256">,
7528 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16f16_ty, llvm_v16f16_ty],
7529 [IntrNoMem]>;
7530 def int_x86_avx10_vcvt2ph2hf8512 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8_512">,
7531 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32f16_ty, llvm_v32f16_ty],
7532 [IntrNoMem]>;
7533 def int_x86_avx10_vcvt2ph2hf8s128 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8s_128">,
7534 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v8f16_ty],
7535 [IntrNoMem]>;
7536 def int_x86_avx10_vcvt2ph2hf8s256 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8s_256">,
7537 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v16f16_ty, llvm_v16f16_ty],
7538 [IntrNoMem]>;
7539 def int_x86_avx10_vcvt2ph2hf8s512 : ClangBuiltin<"__builtin_ia32_vcvt2ph2hf8s_512">,
7540 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_v32f16_ty, llvm_v32f16_ty],
7541 [IntrNoMem]>;
7542 def int_x86_avx10_mask_vcvthf82ph128 : ClangBuiltin<"__builtin_ia32_vcvthf8_2ph128_mask">,
7543 DefaultAttrsIntrinsic<[llvm_v8f16_ty], [llvm_v16i8_ty, llvm_v8f16_ty, llvm_i8_ty],
7544 [IntrNoMem]>;
7545 def int_x86_avx10_mask_vcvthf82ph256 : ClangBuiltin<"__builtin_ia32_vcvthf8_2ph256_mask">,
7546 DefaultAttrsIntrinsic<[llvm_v16f16_ty], [llvm_v16i8_ty, llvm_v16f16_ty, llvm_i16_ty],
7547 [IntrNoMem]>;
7548 def int_x86_avx10_mask_vcvthf82ph512 : ClangBuiltin<"__builtin_ia32_vcvthf8_2ph512_mask">,
7549 DefaultAttrsIntrinsic<[llvm_v32f16_ty], [llvm_v32i8_ty, llvm_v32f16_ty, llvm_i32_ty],
7550 [IntrNoMem]>;
7551 def int_x86_avx10_mask_vcvtph2bf8128 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8_128_mask">,
7552 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty],
7553 [IntrNoMem]>;
7554 def int_x86_avx10_mask_vcvtph2bf8256 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8_256_mask">,
7555 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty],
7556 [IntrNoMem]>;
7557 def int_x86_avx10_mask_vcvtph2bf8512 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8_512_mask">,
7558 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty],
7559 [IntrNoMem]>;
7560 def int_x86_avx10_mask_vcvtph2bf8s128 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8s_128_mask">,
7561 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty],
7562 [IntrNoMem]>;
7563 def int_x86_avx10_mask_vcvtph2bf8s256 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8s_256_mask">,
7564 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty],
7565 [IntrNoMem]>;
7566 def int_x86_avx10_mask_vcvtph2bf8s512 : ClangBuiltin<"__builtin_ia32_vcvtph2bf8s_512_mask">,
7567 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty],
7568 [IntrNoMem]>;
7569 def int_x86_avx10_mask_vcvtph2hf8128 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8_128_mask">,
7570 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty],
7571 [IntrNoMem]>;
7572 def int_x86_avx10_mask_vcvtph2hf8256 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8_256_mask">,
7573 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty],
7574 [IntrNoMem]>;
7575 def int_x86_avx10_mask_vcvtph2hf8512 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8_512_mask">,
7576 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty],
7577 [IntrNoMem]>;
7578 def int_x86_avx10_mask_vcvtph2hf8s128 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8s_128_mask">,
7579 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v8f16_ty, llvm_v16i8_ty, llvm_i8_ty],
7580 [IntrNoMem]>;
7581 def int_x86_avx10_mask_vcvtph2hf8s256 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8s_256_mask">,
7582 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_v16f16_ty, llvm_v16i8_ty, llvm_i16_ty],
7583 [IntrNoMem]>;
7584 def int_x86_avx10_mask_vcvtph2hf8s512 : ClangBuiltin<"__builtin_ia32_vcvtph2hf8s_512_mask">,
7585 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_v32f16_ty, llvm_v32i8_ty, llvm_i32_ty],
7586 [IntrNoMem]>;
7587 }
7588
7589 //===----------------------------------------------------------------------===//
7590 let TargetPrefix = "x86" in {
7591 def int_x86_avx10_vaddbf16512 : ClangBuiltin<"__builtin_ia32_vaddbf16512">,
7592 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty],
7593 [IntrNoMem]>;
7594 def int_x86_avx10_vaddbf16256 : ClangBuiltin<"__builtin_ia32_vaddbf16256">,
7595 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty],
7596 [IntrNoMem]>;
7597 def int_x86_avx10_vaddbf16128 : ClangBuiltin<"__builtin_ia32_vaddbf16128">,
7598 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7599 [IntrNoMem]>;
7600 def int_x86_avx10_vsubbf16512 : ClangBuiltin<"__builtin_ia32_vsubbf16512">,
7601 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty],
7602 [IntrNoMem]>;
7603 def int_x86_avx10_vsubbf16256 : ClangBuiltin<"__builtin_ia32_vsubbf16256">,
7604 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty],
7605 [IntrNoMem]>;
7606 def int_x86_avx10_vsubbf16128 : ClangBuiltin<"__builtin_ia32_vsubbf16128">,
7607 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7608 [IntrNoMem]>;
7609 def int_x86_avx10_vmulbf16512 : ClangBuiltin<"__builtin_ia32_vmulbf16512">,
7610 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty],
7611 [IntrNoMem]>;
7612 def int_x86_avx10_vmulbf16256 : ClangBuiltin<"__builtin_ia32_vmulbf16256">,
7613 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty],
7614 [IntrNoMem]>;
7615 def int_x86_avx10_vmulbf16128 : ClangBuiltin<"__builtin_ia32_vmulbf16128">,
7616 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7617 [IntrNoMem]>;
7618 def int_x86_avx10_vdivbf16512 : ClangBuiltin<"__builtin_ia32_vdivbf16512">,
7619 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty],
7620 [IntrNoMem]>;
7621 def int_x86_avx10_vdivbf16256 : ClangBuiltin<"__builtin_ia32_vdivbf16256">,
7622 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty],
7623 [IntrNoMem]>;
7624 def int_x86_avx10_vdivbf16128 : ClangBuiltin<"__builtin_ia32_vdivbf16128">,
7625 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7626 [IntrNoMem]>;
7627 def int_x86_avx10_vmaxbf16512 : ClangBuiltin<"__builtin_ia32_vmaxbf16512">,
7628 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty],
7629 [IntrNoMem]>;
7630 def int_x86_avx10_vmaxbf16256 : ClangBuiltin<"__builtin_ia32_vmaxbf16256">,
7631 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty],
7632 [IntrNoMem]>;
7633 def int_x86_avx10_vmaxbf16128 : ClangBuiltin<"__builtin_ia32_vmaxbf16128">,
7634 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7635 [IntrNoMem]>;
7636 def int_x86_avx10_vminbf16512 : ClangBuiltin<"__builtin_ia32_vminbf16512">,
7637 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty],
7638 [IntrNoMem]>;
7639 def int_x86_avx10_vminbf16256 : ClangBuiltin<"__builtin_ia32_vminbf16256">,
7640 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty],
7641 [IntrNoMem]>;
7642 def int_x86_avx10_vminbf16128 : ClangBuiltin<"__builtin_ia32_vminbf16128">,
7643 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7644 [IntrNoMem]>;
7645 def int_x86_avx10_vcomisbf16eq : ClangBuiltin<"__builtin_ia32_vcomisbf16eq">,
7646 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7647 [IntrNoMem]>;
7648 def int_x86_avx10_vcomisbf16lt : ClangBuiltin<"__builtin_ia32_vcomisbf16lt">,
7649 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty,llvm_v8bf16_ty],
7650 [IntrNoMem]>;
7651 def int_x86_avx10_vcomisbf16le : ClangBuiltin<"__builtin_ia32_vcomisbf16le">,
7652 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7653 [IntrNoMem]>;
7654 def int_x86_avx10_vcomisbf16gt : ClangBuiltin<"__builtin_ia32_vcomisbf16gt">,
7655 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7656 [IntrNoMem]>;
7657 def int_x86_avx10_vcomisbf16ge : ClangBuiltin<"__builtin_ia32_vcomisbf16ge">,
7658 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7659 [IntrNoMem]>;
7660 def int_x86_avx10_vcomisbf16neq : ClangBuiltin<"__builtin_ia32_vcomisbf16neq">,
7661 DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty],
7662 [IntrNoMem]>;
7663 def int_x86_avx10_mask_rsqrt_bf16_128 : ClangBuiltin<"__builtin_ia32_vrsqrtbf16128_mask">,
7664 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_i8_ty],
7665 [IntrNoMem]>;
7666 def int_x86_avx10_mask_rsqrt_bf16_256 : ClangBuiltin<"__builtin_ia32_vrsqrtbf16256_mask">,
7667 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_i16_ty],
7668 [IntrNoMem]>;
7669 def int_x86_avx10_mask_rsqrt_bf16_512 : ClangBuiltin<"__builtin_ia32_vrsqrtbf16512_mask">,
7670 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_i32_ty],
7671 [IntrNoMem]>;
7672 def int_x86_avx10_mask_rcp_bf16_128 : ClangBuiltin<"__builtin_ia32_vrcpbf16128_mask">,
7673 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_i8_ty],
7674 [IntrNoMem]>;
7675 def int_x86_avx10_mask_rcp_bf16_256 : ClangBuiltin<"__builtin_ia32_vrcpbf16256_mask">,
7676 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_i16_ty],
7677 [IntrNoMem]>;
7678 def int_x86_avx10_mask_rcp_bf16_512 : ClangBuiltin<"__builtin_ia32_vrcpbf16512_mask">,
7679 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_i32_ty],
7680 [IntrNoMem]>;
7681 def int_x86_avx10_mask_reduce_bf16_128 : ClangBuiltin<"__builtin_ia32_vreducebf16128_mask">,
7682 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_i32_ty, llvm_v8bf16_ty, llvm_i8_ty],
7683 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7684 def int_x86_avx10_mask_reduce_bf16_256 : ClangBuiltin<"__builtin_ia32_vreducebf16256_mask">,
7685 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_i32_ty, llvm_v16bf16_ty, llvm_i16_ty],
7686 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7687 def int_x86_avx10_mask_reduce_bf16_512 : ClangBuiltin<"__builtin_ia32_vreducebf16512_mask">,
7688 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_i32_ty, llvm_v32bf16_ty, llvm_i32_ty],
7689 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7690 def int_x86_avx10_fpclass_bf16_128 :
7691 DefaultAttrsIntrinsic<[llvm_v8i1_ty], [llvm_v8bf16_ty, llvm_i32_ty],
7692 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7693 def int_x86_avx10_fpclass_bf16_256 :
7694 DefaultAttrsIntrinsic<[llvm_v16i1_ty], [llvm_v16bf16_ty, llvm_i32_ty],
7695 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7696 def int_x86_avx10_fpclass_bf16_512 :
7697 DefaultAttrsIntrinsic<[llvm_v32i1_ty], [llvm_v32bf16_ty, llvm_i32_ty],
7698 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7699 def int_x86_avx10_mask_getexp_bf16_128 : ClangBuiltin<"__builtin_ia32_vgetexpbf16128_mask">,
7700 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_i8_ty],
7701 [IntrNoMem]>;
7702 def int_x86_avx10_mask_getexp_bf16_256 : ClangBuiltin<"__builtin_ia32_vgetexpbf16256_mask">,
7703 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_i16_ty],
7704 [IntrNoMem]>;
7705 def int_x86_avx10_mask_getexp_bf16_512 : ClangBuiltin<"__builtin_ia32_vgetexpbf16512_mask">,
7706 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_i32_ty],
7707 [IntrNoMem]>;
7708 def int_x86_avx10_mask_getmant_bf16_128 : ClangBuiltin<"__builtin_ia32_vgetmantbf16128_mask">,
7709 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_i32_ty, llvm_v8bf16_ty, llvm_i8_ty],
7710 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7711 def int_x86_avx10_mask_getmant_bf16_256 : ClangBuiltin<"__builtin_ia32_vgetmantbf16256_mask">,
7712 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_i32_ty, llvm_v16bf16_ty, llvm_i16_ty],
7713 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7714 def int_x86_avx10_mask_getmant_bf16_512 : ClangBuiltin<"__builtin_ia32_vgetmantbf16512_mask">,
7715 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_i32_ty, llvm_v32bf16_ty, llvm_i32_ty],
7716 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7717 def int_x86_avx10_mask_rndscale_bf16_128 : ClangBuiltin<"__builtin_ia32_vrndscalebf16_128_mask">,
7718 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_i32_ty, llvm_v8bf16_ty, llvm_i8_ty],
7719 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7720 def int_x86_avx10_mask_rndscale_bf16_256 : ClangBuiltin<"__builtin_ia32_vrndscalebf16_256_mask">,
7721 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_i32_ty, llvm_v16bf16_ty, llvm_i16_ty],
7722 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7723 def int_x86_avx10_mask_rndscale_bf16_512 : ClangBuiltin<"__builtin_ia32_vrndscalebf16_mask">,
7724 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_i32_ty, llvm_v32bf16_ty, llvm_i32_ty],
7725 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
7726 def int_x86_avx10_mask_scalef_bf16_128 : ClangBuiltin<"__builtin_ia32_vscalefbf16128_mask">,
7727 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_i8_ty],
7728 [IntrNoMem]>;
7729 def int_x86_avx10_mask_scalef_bf16_256 : ClangBuiltin<"__builtin_ia32_vscalefbf16256_mask">,
7730 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_i16_ty],
7731 [IntrNoMem]>;
7732 def int_x86_avx10_mask_scalef_bf16_512 : ClangBuiltin<"__builtin_ia32_vscalefbf16512_mask">,
7733 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_i32_ty],
7734 [IntrNoMem]>;
7735 def int_x86_avx10_vfmadd213bf16256 : ClangBuiltin<"__builtin_ia32_vfmadd213bf16256">,
7736 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7737 [IntrNoMem]>;
7738 def int_x86_avx10_vfmadd213bf16128 : ClangBuiltin<"__builtin_ia32_vfmadd213bf16128">,
7739 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7740 [IntrNoMem]>;
7741 def int_x86_avx10_vfmadd132bf16512 : ClangBuiltin<"__builtin_ia32_vfmadd132bf16512">,
7742 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7743 [IntrNoMem]>;
7744 def int_x86_avx10_vfmadd132bf16256 : ClangBuiltin<"__builtin_ia32_vfmadd132bf16256">,
7745 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7746 [IntrNoMem]>;
7747 def int_x86_avx10_vfmadd132bf16128 : ClangBuiltin<"__builtin_ia32_vfmadd132bf16128">,
7748 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7749 [IntrNoMem]>;
7750 def int_x86_avx10_vfmadd231bf16512 : ClangBuiltin<"__builtin_ia32_vfmadd231bf16512">,
7751 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7752 [IntrNoMem]>;
7753 def int_x86_avx10_vfmadd231bf16256 : ClangBuiltin<"__builtin_ia32_vfmadd231bf16256">,
7754 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7755 [IntrNoMem]>;
7756 def int_x86_avx10_vfmadd231bf16128 : ClangBuiltin<"__builtin_ia32_vfmadd231bf16128">,
7757 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7758 [IntrNoMem]>;
7759 def int_x86_avx10_vfmsub213bf16512 : ClangBuiltin<"__builtin_ia32_vfmsub213bf16512">,
7760 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7761 [IntrNoMem]>;
7762 def int_x86_avx10_vfmsub213bf16256 : ClangBuiltin<"__builtin_ia32_vfmsub213bf16256">,
7763 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7764 [IntrNoMem]>;
7765 def int_x86_avx10_vfmsub213bf16128 : ClangBuiltin<"__builtin_ia32_vfmsub213bf16128">,
7766 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7767 [IntrNoMem]>;
7768 def int_x86_avx10_vfmsub132bf16512 : ClangBuiltin<"__builtin_ia32_vfmsub132bf16512">,
7769 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7770 [IntrNoMem]>;
7771 def int_x86_avx10_vfmsub132bf16256 : ClangBuiltin<"__builtin_ia32_vfmsub132bf16256">,
7772 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7773 [IntrNoMem]>;
7774 def int_x86_avx10_vfmsub132bf16128 : ClangBuiltin<"__builtin_ia32_vfmsub132bf16128">,
7775 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7776 [IntrNoMem]>;
7777 def int_x86_avx10_vfmsub231bf16512 : ClangBuiltin<"__builtin_ia32_vfmsub231bf16512">,
7778 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7779 [IntrNoMem]>;
7780 def int_x86_avx10_vfmsub231bf16256 : ClangBuiltin<"__builtin_ia32_vfmsub231bf16256">,
7781 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7782 [IntrNoMem]>;
7783 def int_x86_avx10_vfmsub231bf16128 : ClangBuiltin<"__builtin_ia32_vfmsub231bf16128">,
7784 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7785 [IntrNoMem]>;
7786 def int_x86_avx10_vfnmadd213bf16512 : ClangBuiltin<"__builtin_ia32_vfnmadd213bf16512">,
7787 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7788 [IntrNoMem]>;
7789 def int_x86_avx10_vfnmadd213bf16256 : ClangBuiltin<"__builtin_ia32_vfnmadd213bf16256">,
7790 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7791 [IntrNoMem]>;
7792 def int_x86_avx10_vfnmadd213bf16128 : ClangBuiltin<"__builtin_ia32_vfnmadd213bf16128">,
7793 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7794 [IntrNoMem]>;
7795 def int_x86_avx10_vfnmadd132bf16512 : ClangBuiltin<"__builtin_ia32_vfnmadd132bf16512">,
7796 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7797 [IntrNoMem]>;
7798 def int_x86_avx10_vfnmadd132bf16256 : ClangBuiltin<"__builtin_ia32_vfnmadd132bf16256">,
7799 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7800 [IntrNoMem]>;
7801 def int_x86_avx10_vfnmadd132bf16128 : ClangBuiltin<"__builtin_ia32_vfnmadd132bf16128">,
7802 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7803 [IntrNoMem]>;
7804 def int_x86_avx10_vfnmadd231bf16512 : ClangBuiltin<"__builtin_ia32_vfnmadd231bf16512">,
7805 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7806 [IntrNoMem]>;
7807 def int_x86_avx10_vfnmadd231bf16256 : ClangBuiltin<"__builtin_ia32_vfnmadd231bf16256">,
7808 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7809 [IntrNoMem]>;
7810 def int_x86_avx10_vfnmadd231bf16128 : ClangBuiltin<"__builtin_ia32_vfnmadd231bf16128">,
7811 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7812 [IntrNoMem]>;
7813 def int_x86_avx10_vfnmsub213bf16512 : ClangBuiltin<"__builtin_ia32_vfnmsub213bf16512">,
7814 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7815 [IntrNoMem]>;
7816 def int_x86_avx10_vfnmsub213bf16256 : ClangBuiltin<"__builtin_ia32_vfnmsub213bf16256">,
7817 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7818 [IntrNoMem]>;
7819 def int_x86_avx10_vfnmsub213bf16128 : ClangBuiltin<"__builtin_ia32_vfnmsub213bf16128">,
7820 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7821 [IntrNoMem]>;
7822 def int_x86_avx10_vfnmsub132bf16512 : ClangBuiltin<"__builtin_ia32_vfnmsub132bf16512">,
7823 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7824 [IntrNoMem]>;
7825 def int_x86_avx10_vfnmsub132bf16256 : ClangBuiltin<"__builtin_ia32_vfnmsub132bf16256">,
7826 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7827 [IntrNoMem]>;
7828 def int_x86_avx10_vfnmsub132bf16128 : ClangBuiltin<"__builtin_ia32_vfnmsub132bf16128">,
7829 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7830 [IntrNoMem]>;
7831 def int_x86_avx10_vfnmsub231bf16512 : ClangBuiltin<"__builtin_ia32_vfnmsub231bf16512">,
7832 DefaultAttrsIntrinsic<[llvm_v32bf16_ty], [llvm_v32bf16_ty, llvm_v32bf16_ty, llvm_v32bf16_ty],
7833 [IntrNoMem]>;
7834 def int_x86_avx10_vfnmsub231bf16256 : ClangBuiltin<"__builtin_ia32_vfnmsub231bf16256">,
7835 DefaultAttrsIntrinsic<[llvm_v16bf16_ty], [llvm_v16bf16_ty, llvm_v16bf16_ty, llvm_v16bf16_ty],
7836 [IntrNoMem]>;
7837 def int_x86_avx10_vfnmsub231bf16128 : ClangBuiltin<"__builtin_ia32_vfnmsub231bf16128">,
7838 DefaultAttrsIntrinsic<[llvm_v8bf16_ty], [llvm_v8bf16_ty, llvm_v8bf16_ty, llvm_v8bf16_ty ],
7839 [IntrNoMem]>;
7840 }
7841
7842 let TargetPrefix = "x86" in {
7843 def int_x86_avx10_vmovrsb128 : ClangBuiltin<"__builtin_ia32_vmovrsb128">,
7844 DefaultAttrsIntrinsic<[llvm_v16i8_ty], [llvm_ptr_ty],
7845 [IntrReadMem]>;
7846 def int_x86_avx10_vmovrsb256 : ClangBuiltin<"__builtin_ia32_vmovrsb256">,
7847 DefaultAttrsIntrinsic<[llvm_v32i8_ty], [llvm_ptr_ty],
7848 [IntrReadMem]>;
7849 def int_x86_avx10_vmovrsb512 : ClangBuiltin<"__builtin_ia32_vmovrsb512">,
7850 DefaultAttrsIntrinsic<[llvm_v64i8_ty], [llvm_ptr_ty],
7851 [IntrReadMem]>;
7852 def int_x86_avx10_vmovrsd128 : ClangBuiltin<"__builtin_ia32_vmovrsd128">,
7853 DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_ptr_ty],
7854 [IntrReadMem]>;
7855 def int_x86_avx10_vmovrsd256 : ClangBuiltin<"__builtin_ia32_vmovrsd256">,
7856 DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_ptr_ty],
7857 [IntrReadMem]>;
7858 def int_x86_avx10_vmovrsd512 : ClangBuiltin<"__builtin_ia32_vmovrsd512">,
7859 DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_ptr_ty],
7860 [IntrReadMem]>;
7861 def int_x86_avx10_vmovrsq128 : ClangBuiltin<"__builtin_ia32_vmovrsq128">,
7862 DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_ptr_ty],
7863 [IntrReadMem]>;
7864 def int_x86_avx10_vmovrsq256 : ClangBuiltin<"__builtin_ia32_vmovrsq256">,
7865 DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_ptr_ty],
7866 [IntrReadMem]>;
7867 def int_x86_avx10_vmovrsq512 : ClangBuiltin<"__builtin_ia32_vmovrsq512">,
7868 DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_ptr_ty],
7869 [IntrReadMem]>;
7870 def int_x86_avx10_vmovrsw128 : ClangBuiltin<"__builtin_ia32_vmovrsw128">,
7871 DefaultAttrsIntrinsic<[llvm_v8i16_ty], [llvm_ptr_ty],
7872 [IntrReadMem]>;
7873 def int_x86_avx10_vmovrsw256 : ClangBuiltin<"__builtin_ia32_vmovrsw256">,
7874 DefaultAttrsIntrinsic<[llvm_v16i16_ty], [llvm_ptr_ty],
7875 [IntrReadMem]>;
7876 def int_x86_avx10_vmovrsw512 : ClangBuiltin<"__builtin_ia32_vmovrsw512">,
7877 DefaultAttrsIntrinsic<[llvm_v32i16_ty], [llvm_ptr_ty],
7878 [IntrReadMem]>;
7879 }
7880
7881 let TargetPrefix = "x86" in {
7882 def int_x86_movrsqi : ClangBuiltin<"__builtin_ia32_movrsqi">,
7883 Intrinsic<[llvm_i8_ty], [llvm_ptr_ty],
7884 [IntrReadMem]>;
7885 def int_x86_movrshi : ClangBuiltin<"__builtin_ia32_movrshi">,
7886 Intrinsic<[llvm_i16_ty], [llvm_ptr_ty],
7887 [IntrReadMem]>;
7888 def int_x86_movrssi : ClangBuiltin<"__builtin_ia32_movrssi">,
7889 Intrinsic<[llvm_i32_ty], [llvm_ptr_ty],
7890 [IntrReadMem]>;
7891 def int_x86_movrsdi : ClangBuiltin<"__builtin_ia32_movrsdi">,
7892 Intrinsic<[llvm_i64_ty], [llvm_ptr_ty],
7893 [IntrReadMem]>;
7894 def int_x86_prefetchrs : ClangBuiltin<"__builtin_ia32_prefetchrs">,
7895 Intrinsic<[], [llvm_ptr_ty], []>;
7896 }