1 //===- TableGen'erated file -------------------------------------*- C++ -*-===// 2 // 3 // Intrinsic Function Source Fragment 4 // 5 // Automatically generated file, do not edit! 6 // 7 //===----------------------------------------------------------------------===// 8 9 // VisualStudio defines setjmp as _setjmp 10 #if defined(_MSC_VER) && defined(setjmp) && \ 11 !defined(setjmp_undefined_for_msvc) 12 # pragma push_macro("setjmp") 13 # undef setjmp 14 # define setjmp_undefined_for_msvc 15 #endif 16 17 // Enum values for Intrinsics.h 18 #ifdef GET_INTRINSIC_ENUM_VALUES 19 adjust_trampoline, // llvm.adjust.trampoline 20 annotation, // llvm.annotation 21 bswap, // llvm.bswap 22 convert_from_fp16, // llvm.convert.from.fp16 23 convert_to_fp16, // llvm.convert.to.fp16 24 convertff, // llvm.convertff 25 convertfsi, // llvm.convertfsi 26 convertfui, // llvm.convertfui 27 convertsif, // llvm.convertsif 28 convertss, // llvm.convertss 29 convertsu, // llvm.convertsu 30 convertuif, // llvm.convertuif 31 convertus, // llvm.convertus 32 convertuu, // llvm.convertuu 33 cos, // llvm.cos 34 ctlz, // llvm.ctlz 35 ctpop, // llvm.ctpop 36 cttz, // llvm.cttz 37 dbg_declare, // llvm.dbg.declare 38 dbg_value, // llvm.dbg.value 39 eh_dwarf_cfa, // llvm.eh.dwarf.cfa 40 eh_exception, // llvm.eh.exception 41 eh_resume, // llvm.eh.resume 42 eh_return_i32, // llvm.eh.return.i32 43 eh_return_i64, // llvm.eh.return.i64 44 eh_selector, // llvm.eh.selector 45 eh_sjlj_callsite, // llvm.eh.sjlj.callsite 46 eh_sjlj_dispatch_setup, // llvm.eh.sjlj.dispatch.setup 47 eh_sjlj_functioncontext, // llvm.eh.sjlj.functioncontext 48 eh_sjlj_longjmp, // llvm.eh.sjlj.longjmp 49 eh_sjlj_lsda, // llvm.eh.sjlj.lsda 50 eh_sjlj_setjmp, // llvm.eh.sjlj.setjmp 51 eh_typeid_for, // llvm.eh.typeid.for 52 eh_unwind_init, // llvm.eh.unwind.init 53 exp, // llvm.exp 54 exp2, // llvm.exp2 55 expect, // llvm.expect 56 flt_rounds, // llvm.flt.rounds 57 fma, // llvm.fma 58 frameaddress, // llvm.frameaddress 59 gcread, // llvm.gcread 60 gcroot, // llvm.gcroot 61 gcwrite, // llvm.gcwrite 62 init_trampoline, // llvm.init.trampoline 63 invariant_end, // llvm.invariant.end 64 invariant_start, // llvm.invariant.start 65 lifetime_end, // llvm.lifetime.end 66 lifetime_start, // llvm.lifetime.start 67 log, // llvm.log 68 log10, // llvm.log10 69 log2, // llvm.log2 70 longjmp, // llvm.longjmp 71 memcpy, // llvm.memcpy 72 memmove, // llvm.memmove 73 memset, // llvm.memset 74 objectsize, // llvm.objectsize 75 pcmarker, // llvm.pcmarker 76 pow, // llvm.pow 77 powi, // llvm.powi 78 prefetch, // llvm.prefetch 79 ptr_annotation, // llvm.ptr.annotation 80 readcyclecounter, // llvm.readcyclecounter 81 returnaddress, // llvm.returnaddress 82 sadd_with_overflow, // llvm.sadd.with.overflow 83 setjmp, // llvm.setjmp 84 siglongjmp, // llvm.siglongjmp 85 sigsetjmp, // llvm.sigsetjmp 86 sin, // llvm.sin 87 smul_with_overflow, // llvm.smul.with.overflow 88 sqrt, // llvm.sqrt 89 ssub_with_overflow, // llvm.ssub.with.overflow 90 stackprotector, // llvm.stackprotector 91 stackrestore, // llvm.stackrestore 92 stacksave, // llvm.stacksave 93 trap, // llvm.trap 94 uadd_with_overflow, // llvm.uadd.with.overflow 95 umul_with_overflow, // llvm.umul.with.overflow 96 usub_with_overflow, // llvm.usub.with.overflow 97 vacopy, // llvm.va_copy 98 vaend, // llvm.va_end 99 var_annotation, // llvm.var.annotation 100 vastart, // llvm.va_start 101 x86_3dnow_pavgusb, // llvm.x86.3dnow.pavgusb 102 x86_3dnow_pf2id, // llvm.x86.3dnow.pf2id 103 x86_3dnow_pfacc, // llvm.x86.3dnow.pfacc 104 x86_3dnow_pfadd, // llvm.x86.3dnow.pfadd 105 x86_3dnow_pfcmpeq, // llvm.x86.3dnow.pfcmpeq 106 x86_3dnow_pfcmpge, // llvm.x86.3dnow.pfcmpge 107 x86_3dnow_pfcmpgt, // llvm.x86.3dnow.pfcmpgt 108 x86_3dnow_pfmax, // llvm.x86.3dnow.pfmax 109 x86_3dnow_pfmin, // llvm.x86.3dnow.pfmin 110 x86_3dnow_pfmul, // llvm.x86.3dnow.pfmul 111 x86_3dnow_pfrcp, // llvm.x86.3dnow.pfrcp 112 x86_3dnow_pfrcpit1, // llvm.x86.3dnow.pfrcpit1 113 x86_3dnow_pfrcpit2, // llvm.x86.3dnow.pfrcpit2 114 x86_3dnow_pfrsqit1, // llvm.x86.3dnow.pfrsqit1 115 x86_3dnow_pfrsqrt, // llvm.x86.3dnow.pfrsqrt 116 x86_3dnow_pfsub, // llvm.x86.3dnow.pfsub 117 x86_3dnow_pfsubr, // llvm.x86.3dnow.pfsubr 118 x86_3dnow_pi2fd, // llvm.x86.3dnow.pi2fd 119 x86_3dnow_pmulhrw, // llvm.x86.3dnow.pmulhrw 120 x86_3dnowa_pf2iw, // llvm.x86.3dnowa.pf2iw 121 x86_3dnowa_pfnacc, // llvm.x86.3dnowa.pfnacc 122 x86_3dnowa_pfpnacc, // llvm.x86.3dnowa.pfpnacc 123 x86_3dnowa_pi2fw, // llvm.x86.3dnowa.pi2fw 124 x86_3dnowa_pswapd, // llvm.x86.3dnowa.pswapd 125 x86_aesni_aesdec, // llvm.x86.aesni.aesdec 126 x86_aesni_aesdeclast, // llvm.x86.aesni.aesdeclast 127 x86_aesni_aesenc, // llvm.x86.aesni.aesenc 128 x86_aesni_aesenclast, // llvm.x86.aesni.aesenclast 129 x86_aesni_aesimc, // llvm.x86.aesni.aesimc 130 x86_aesni_aeskeygenassist, // llvm.x86.aesni.aeskeygenassist 131 x86_avx_addsub_pd_256, // llvm.x86.avx.addsub.pd.256 132 x86_avx_addsub_ps_256, // llvm.x86.avx.addsub.ps.256 133 x86_avx_blend_pd_256, // llvm.x86.avx.blend.pd.256 134 x86_avx_blend_ps_256, // llvm.x86.avx.blend.ps.256 135 x86_avx_blendv_pd_256, // llvm.x86.avx.blendv.pd.256 136 x86_avx_blendv_ps_256, // llvm.x86.avx.blendv.ps.256 137 x86_avx_cmp_pd_256, // llvm.x86.avx.cmp.pd.256 138 x86_avx_cmp_ps_256, // llvm.x86.avx.cmp.ps.256 139 x86_avx_cvt_pd2_ps_256, // llvm.x86.avx.cvt.pd2.ps.256 140 x86_avx_cvt_pd2dq_256, // llvm.x86.avx.cvt.pd2dq.256 141 x86_avx_cvt_ps2_pd_256, // llvm.x86.avx.cvt.ps2.pd.256 142 x86_avx_cvt_ps2dq_256, // llvm.x86.avx.cvt.ps2dq.256 143 x86_avx_cvtdq2_pd_256, // llvm.x86.avx.cvtdq2.pd.256 144 x86_avx_cvtdq2_ps_256, // llvm.x86.avx.cvtdq2.ps.256 145 x86_avx_cvtt_pd2dq_256, // llvm.x86.avx.cvtt.pd2dq.256 146 x86_avx_cvtt_ps2dq_256, // llvm.x86.avx.cvtt.ps2dq.256 147 x86_avx_dp_ps_256, // llvm.x86.avx.dp.ps.256 148 x86_avx_hadd_pd_256, // llvm.x86.avx.hadd.pd.256 149 x86_avx_hadd_ps_256, // llvm.x86.avx.hadd.ps.256 150 x86_avx_hsub_pd_256, // llvm.x86.avx.hsub.pd.256 151 x86_avx_hsub_ps_256, // llvm.x86.avx.hsub.ps.256 152 x86_avx_ldu_dq_256, // llvm.x86.avx.ldu.dq.256 153 x86_avx_loadu_dq_256, // llvm.x86.avx.loadu.dq.256 154 x86_avx_loadu_pd_256, // llvm.x86.avx.loadu.pd.256 155 x86_avx_loadu_ps_256, // llvm.x86.avx.loadu.ps.256 156 x86_avx_maskload_pd, // llvm.x86.avx.maskload.pd 157 x86_avx_maskload_pd_256, // llvm.x86.avx.maskload.pd.256 158 x86_avx_maskload_ps, // llvm.x86.avx.maskload.ps 159 x86_avx_maskload_ps_256, // llvm.x86.avx.maskload.ps.256 160 x86_avx_maskstore_pd, // llvm.x86.avx.maskstore.pd 161 x86_avx_maskstore_pd_256, // llvm.x86.avx.maskstore.pd.256 162 x86_avx_maskstore_ps, // llvm.x86.avx.maskstore.ps 163 x86_avx_maskstore_ps_256, // llvm.x86.avx.maskstore.ps.256 164 x86_avx_max_pd_256, // llvm.x86.avx.max.pd.256 165 x86_avx_max_ps_256, // llvm.x86.avx.max.ps.256 166 x86_avx_min_pd_256, // llvm.x86.avx.min.pd.256 167 x86_avx_min_ps_256, // llvm.x86.avx.min.ps.256 168 x86_avx_movmsk_pd_256, // llvm.x86.avx.movmsk.pd.256 169 x86_avx_movmsk_ps_256, // llvm.x86.avx.movmsk.ps.256 170 x86_avx_movnt_dq_256, // llvm.x86.avx.movnt.dq.256 171 x86_avx_movnt_pd_256, // llvm.x86.avx.movnt.pd.256 172 x86_avx_movnt_ps_256, // llvm.x86.avx.movnt.ps.256 173 x86_avx_ptestc_256, // llvm.x86.avx.ptestc.256 174 x86_avx_ptestnzc_256, // llvm.x86.avx.ptestnzc.256 175 x86_avx_ptestz_256, // llvm.x86.avx.ptestz.256 176 x86_avx_rcp_ps_256, // llvm.x86.avx.rcp.ps.256 177 x86_avx_round_pd_256, // llvm.x86.avx.round.pd.256 178 x86_avx_round_ps_256, // llvm.x86.avx.round.ps.256 179 x86_avx_rsqrt_ps_256, // llvm.x86.avx.rsqrt.ps.256 180 x86_avx_sqrt_pd_256, // llvm.x86.avx.sqrt.pd.256 181 x86_avx_sqrt_ps_256, // llvm.x86.avx.sqrt.ps.256 182 x86_avx_storeu_dq_256, // llvm.x86.avx.storeu.dq.256 183 x86_avx_storeu_pd_256, // llvm.x86.avx.storeu.pd.256 184 x86_avx_storeu_ps_256, // llvm.x86.avx.storeu.ps.256 185 x86_avx_vbroadcast_sd_256, // llvm.x86.avx.vbroadcast.sd.256 186 x86_avx_vbroadcastf128_pd_256, // llvm.x86.avx.vbroadcastf128.pd.256 187 x86_avx_vbroadcastf128_ps_256, // llvm.x86.avx.vbroadcastf128.ps.256 188 x86_avx_vbroadcastss, // llvm.x86.avx.vbroadcastss 189 x86_avx_vbroadcastss_256, // llvm.x86.avx.vbroadcastss.256 190 x86_avx_vextractf128_pd_256, // llvm.x86.avx.vextractf128.pd.256 191 x86_avx_vextractf128_ps_256, // llvm.x86.avx.vextractf128.ps.256 192 x86_avx_vextractf128_si_256, // llvm.x86.avx.vextractf128.si.256 193 x86_avx_vinsertf128_pd_256, // llvm.x86.avx.vinsertf128.pd.256 194 x86_avx_vinsertf128_ps_256, // llvm.x86.avx.vinsertf128.ps.256 195 x86_avx_vinsertf128_si_256, // llvm.x86.avx.vinsertf128.si.256 196 x86_avx_vperm2f128_pd_256, // llvm.x86.avx.vperm2f128.pd.256 197 x86_avx_vperm2f128_ps_256, // llvm.x86.avx.vperm2f128.ps.256 198 x86_avx_vperm2f128_si_256, // llvm.x86.avx.vperm2f128.si.256 199 x86_avx_vpermil_pd, // llvm.x86.avx.vpermil.pd 200 x86_avx_vpermil_pd_256, // llvm.x86.avx.vpermil.pd.256 201 x86_avx_vpermil_ps, // llvm.x86.avx.vpermil.ps 202 x86_avx_vpermil_ps_256, // llvm.x86.avx.vpermil.ps.256 203 x86_avx_vpermilvar_pd, // llvm.x86.avx.vpermilvar.pd 204 x86_avx_vpermilvar_pd_256, // llvm.x86.avx.vpermilvar.pd.256 205 x86_avx_vpermilvar_ps, // llvm.x86.avx.vpermilvar.ps 206 x86_avx_vpermilvar_ps_256, // llvm.x86.avx.vpermilvar.ps.256 207 x86_avx_vtestc_pd, // llvm.x86.avx.vtestc.pd 208 x86_avx_vtestc_pd_256, // llvm.x86.avx.vtestc.pd.256 209 x86_avx_vtestc_ps, // llvm.x86.avx.vtestc.ps 210 x86_avx_vtestc_ps_256, // llvm.x86.avx.vtestc.ps.256 211 x86_avx_vtestnzc_pd, // llvm.x86.avx.vtestnzc.pd 212 x86_avx_vtestnzc_pd_256, // llvm.x86.avx.vtestnzc.pd.256 213 x86_avx_vtestnzc_ps, // llvm.x86.avx.vtestnzc.ps 214 x86_avx_vtestnzc_ps_256, // llvm.x86.avx.vtestnzc.ps.256 215 x86_avx_vtestz_pd, // llvm.x86.avx.vtestz.pd 216 x86_avx_vtestz_pd_256, // llvm.x86.avx.vtestz.pd.256 217 x86_avx_vtestz_ps, // llvm.x86.avx.vtestz.ps 218 x86_avx_vtestz_ps_256, // llvm.x86.avx.vtestz.ps.256 219 x86_avx_vzeroall, // llvm.x86.avx.vzeroall 220 x86_avx_vzeroupper, // llvm.x86.avx.vzeroupper 221 x86_int, // llvm.x86.int 222 x86_mmx_emms, // llvm.x86.mmx.emms 223 x86_mmx_femms, // llvm.x86.mmx.femms 224 x86_mmx_maskmovq, // llvm.x86.mmx.maskmovq 225 x86_mmx_movnt_dq, // llvm.x86.mmx.movnt.dq 226 x86_mmx_packssdw, // llvm.x86.mmx.packssdw 227 x86_mmx_packsswb, // llvm.x86.mmx.packsswb 228 x86_mmx_packuswb, // llvm.x86.mmx.packuswb 229 x86_mmx_padd_b, // llvm.x86.mmx.padd.b 230 x86_mmx_padd_d, // llvm.x86.mmx.padd.d 231 x86_mmx_padd_q, // llvm.x86.mmx.padd.q 232 x86_mmx_padd_w, // llvm.x86.mmx.padd.w 233 x86_mmx_padds_b, // llvm.x86.mmx.padds.b 234 x86_mmx_padds_w, // llvm.x86.mmx.padds.w 235 x86_mmx_paddus_b, // llvm.x86.mmx.paddus.b 236 x86_mmx_paddus_w, // llvm.x86.mmx.paddus.w 237 x86_mmx_palignr_b, // llvm.x86.mmx.palignr.b 238 x86_mmx_pand, // llvm.x86.mmx.pand 239 x86_mmx_pandn, // llvm.x86.mmx.pandn 240 x86_mmx_pavg_b, // llvm.x86.mmx.pavg.b 241 x86_mmx_pavg_w, // llvm.x86.mmx.pavg.w 242 x86_mmx_pcmpeq_b, // llvm.x86.mmx.pcmpeq.b 243 x86_mmx_pcmpeq_d, // llvm.x86.mmx.pcmpeq.d 244 x86_mmx_pcmpeq_w, // llvm.x86.mmx.pcmpeq.w 245 x86_mmx_pcmpgt_b, // llvm.x86.mmx.pcmpgt.b 246 x86_mmx_pcmpgt_d, // llvm.x86.mmx.pcmpgt.d 247 x86_mmx_pcmpgt_w, // llvm.x86.mmx.pcmpgt.w 248 x86_mmx_pextr_w, // llvm.x86.mmx.pextr.w 249 x86_mmx_pinsr_w, // llvm.x86.mmx.pinsr.w 250 x86_mmx_pmadd_wd, // llvm.x86.mmx.pmadd.wd 251 x86_mmx_pmaxs_w, // llvm.x86.mmx.pmaxs.w 252 x86_mmx_pmaxu_b, // llvm.x86.mmx.pmaxu.b 253 x86_mmx_pmins_w, // llvm.x86.mmx.pmins.w 254 x86_mmx_pminu_b, // llvm.x86.mmx.pminu.b 255 x86_mmx_pmovmskb, // llvm.x86.mmx.pmovmskb 256 x86_mmx_pmulh_w, // llvm.x86.mmx.pmulh.w 257 x86_mmx_pmulhu_w, // llvm.x86.mmx.pmulhu.w 258 x86_mmx_pmull_w, // llvm.x86.mmx.pmull.w 259 x86_mmx_pmulu_dq, // llvm.x86.mmx.pmulu.dq 260 x86_mmx_por, // llvm.x86.mmx.por 261 x86_mmx_psad_bw, // llvm.x86.mmx.psad.bw 262 x86_mmx_psll_d, // llvm.x86.mmx.psll.d 263 x86_mmx_psll_q, // llvm.x86.mmx.psll.q 264 x86_mmx_psll_w, // llvm.x86.mmx.psll.w 265 x86_mmx_pslli_d, // llvm.x86.mmx.pslli.d 266 x86_mmx_pslli_q, // llvm.x86.mmx.pslli.q 267 x86_mmx_pslli_w, // llvm.x86.mmx.pslli.w 268 x86_mmx_psra_d, // llvm.x86.mmx.psra.d 269 x86_mmx_psra_w, // llvm.x86.mmx.psra.w 270 x86_mmx_psrai_d, // llvm.x86.mmx.psrai.d 271 x86_mmx_psrai_w, // llvm.x86.mmx.psrai.w 272 x86_mmx_psrl_d, // llvm.x86.mmx.psrl.d 273 x86_mmx_psrl_q, // llvm.x86.mmx.psrl.q 274 x86_mmx_psrl_w, // llvm.x86.mmx.psrl.w 275 x86_mmx_psrli_d, // llvm.x86.mmx.psrli.d 276 x86_mmx_psrli_q, // llvm.x86.mmx.psrli.q 277 x86_mmx_psrli_w, // llvm.x86.mmx.psrli.w 278 x86_mmx_psub_b, // llvm.x86.mmx.psub.b 279 x86_mmx_psub_d, // llvm.x86.mmx.psub.d 280 x86_mmx_psub_q, // llvm.x86.mmx.psub.q 281 x86_mmx_psub_w, // llvm.x86.mmx.psub.w 282 x86_mmx_psubs_b, // llvm.x86.mmx.psubs.b 283 x86_mmx_psubs_w, // llvm.x86.mmx.psubs.w 284 x86_mmx_psubus_b, // llvm.x86.mmx.psubus.b 285 x86_mmx_psubus_w, // llvm.x86.mmx.psubus.w 286 x86_mmx_punpckhbw, // llvm.x86.mmx.punpckhbw 287 x86_mmx_punpckhdq, // llvm.x86.mmx.punpckhdq 288 x86_mmx_punpckhwd, // llvm.x86.mmx.punpckhwd 289 x86_mmx_punpcklbw, // llvm.x86.mmx.punpcklbw 290 x86_mmx_punpckldq, // llvm.x86.mmx.punpckldq 291 x86_mmx_punpcklwd, // llvm.x86.mmx.punpcklwd 292 x86_mmx_pxor, // llvm.x86.mmx.pxor 293 x86_sse2_add_sd, // llvm.x86.sse2.add.sd 294 x86_sse2_clflush, // llvm.x86.sse2.clflush 295 x86_sse2_cmp_pd, // llvm.x86.sse2.cmp.pd 296 x86_sse2_cmp_sd, // llvm.x86.sse2.cmp.sd 297 x86_sse2_comieq_sd, // llvm.x86.sse2.comieq.sd 298 x86_sse2_comige_sd, // llvm.x86.sse2.comige.sd 299 x86_sse2_comigt_sd, // llvm.x86.sse2.comigt.sd 300 x86_sse2_comile_sd, // llvm.x86.sse2.comile.sd 301 x86_sse2_comilt_sd, // llvm.x86.sse2.comilt.sd 302 x86_sse2_comineq_sd, // llvm.x86.sse2.comineq.sd 303 x86_sse2_cvtdq2pd, // llvm.x86.sse2.cvtdq2pd 304 x86_sse2_cvtdq2ps, // llvm.x86.sse2.cvtdq2ps 305 x86_sse2_cvtpd2dq, // llvm.x86.sse2.cvtpd2dq 306 x86_sse2_cvtpd2ps, // llvm.x86.sse2.cvtpd2ps 307 x86_sse2_cvtps2dq, // llvm.x86.sse2.cvtps2dq 308 x86_sse2_cvtps2pd, // llvm.x86.sse2.cvtps2pd 309 x86_sse2_cvtsd2si, // llvm.x86.sse2.cvtsd2si 310 x86_sse2_cvtsd2si64, // llvm.x86.sse2.cvtsd2si64 311 x86_sse2_cvtsd2ss, // llvm.x86.sse2.cvtsd2ss 312 x86_sse2_cvtsi2sd, // llvm.x86.sse2.cvtsi2sd 313 x86_sse2_cvtsi642sd, // llvm.x86.sse2.cvtsi642sd 314 x86_sse2_cvtss2sd, // llvm.x86.sse2.cvtss2sd 315 x86_sse2_cvttpd2dq, // llvm.x86.sse2.cvttpd2dq 316 x86_sse2_cvttps2dq, // llvm.x86.sse2.cvttps2dq 317 x86_sse2_cvttsd2si, // llvm.x86.sse2.cvttsd2si 318 x86_sse2_cvttsd2si64, // llvm.x86.sse2.cvttsd2si64 319 x86_sse2_div_sd, // llvm.x86.sse2.div.sd 320 x86_sse2_lfence, // llvm.x86.sse2.lfence 321 x86_sse2_maskmov_dqu, // llvm.x86.sse2.maskmov.dqu 322 x86_sse2_max_pd, // llvm.x86.sse2.max.pd 323 x86_sse2_max_sd, // llvm.x86.sse2.max.sd 324 x86_sse2_mfence, // llvm.x86.sse2.mfence 325 x86_sse2_min_pd, // llvm.x86.sse2.min.pd 326 x86_sse2_min_sd, // llvm.x86.sse2.min.sd 327 x86_sse2_movmsk_pd, // llvm.x86.sse2.movmsk.pd 328 x86_sse2_mul_sd, // llvm.x86.sse2.mul.sd 329 x86_sse2_packssdw_128, // llvm.x86.sse2.packssdw.128 330 x86_sse2_packsswb_128, // llvm.x86.sse2.packsswb.128 331 x86_sse2_packuswb_128, // llvm.x86.sse2.packuswb.128 332 x86_sse2_padds_b, // llvm.x86.sse2.padds.b 333 x86_sse2_padds_w, // llvm.x86.sse2.padds.w 334 x86_sse2_paddus_b, // llvm.x86.sse2.paddus.b 335 x86_sse2_paddus_w, // llvm.x86.sse2.paddus.w 336 x86_sse2_pavg_b, // llvm.x86.sse2.pavg.b 337 x86_sse2_pavg_w, // llvm.x86.sse2.pavg.w 338 x86_sse2_pcmpeq_b, // llvm.x86.sse2.pcmpeq.b 339 x86_sse2_pcmpeq_d, // llvm.x86.sse2.pcmpeq.d 340 x86_sse2_pcmpeq_w, // llvm.x86.sse2.pcmpeq.w 341 x86_sse2_pcmpgt_b, // llvm.x86.sse2.pcmpgt.b 342 x86_sse2_pcmpgt_d, // llvm.x86.sse2.pcmpgt.d 343 x86_sse2_pcmpgt_w, // llvm.x86.sse2.pcmpgt.w 344 x86_sse2_pmadd_wd, // llvm.x86.sse2.pmadd.wd 345 x86_sse2_pmaxs_w, // llvm.x86.sse2.pmaxs.w 346 x86_sse2_pmaxu_b, // llvm.x86.sse2.pmaxu.b 347 x86_sse2_pmins_w, // llvm.x86.sse2.pmins.w 348 x86_sse2_pminu_b, // llvm.x86.sse2.pminu.b 349 x86_sse2_pmovmskb_128, // llvm.x86.sse2.pmovmskb.128 350 x86_sse2_pmulh_w, // llvm.x86.sse2.pmulh.w 351 x86_sse2_pmulhu_w, // llvm.x86.sse2.pmulhu.w 352 x86_sse2_pmulu_dq, // llvm.x86.sse2.pmulu.dq 353 x86_sse2_psad_bw, // llvm.x86.sse2.psad.bw 354 x86_sse2_psll_d, // llvm.x86.sse2.psll.d 355 x86_sse2_psll_dq, // llvm.x86.sse2.psll.dq 356 x86_sse2_psll_dq_bs, // llvm.x86.sse2.psll.dq.bs 357 x86_sse2_psll_q, // llvm.x86.sse2.psll.q 358 x86_sse2_psll_w, // llvm.x86.sse2.psll.w 359 x86_sse2_pslli_d, // llvm.x86.sse2.pslli.d 360 x86_sse2_pslli_q, // llvm.x86.sse2.pslli.q 361 x86_sse2_pslli_w, // llvm.x86.sse2.pslli.w 362 x86_sse2_psra_d, // llvm.x86.sse2.psra.d 363 x86_sse2_psra_w, // llvm.x86.sse2.psra.w 364 x86_sse2_psrai_d, // llvm.x86.sse2.psrai.d 365 x86_sse2_psrai_w, // llvm.x86.sse2.psrai.w 366 x86_sse2_psrl_d, // llvm.x86.sse2.psrl.d 367 x86_sse2_psrl_dq, // llvm.x86.sse2.psrl.dq 368 x86_sse2_psrl_dq_bs, // llvm.x86.sse2.psrl.dq.bs 369 x86_sse2_psrl_q, // llvm.x86.sse2.psrl.q 370 x86_sse2_psrl_w, // llvm.x86.sse2.psrl.w 371 x86_sse2_psrli_d, // llvm.x86.sse2.psrli.d 372 x86_sse2_psrli_q, // llvm.x86.sse2.psrli.q 373 x86_sse2_psrli_w, // llvm.x86.sse2.psrli.w 374 x86_sse2_psubs_b, // llvm.x86.sse2.psubs.b 375 x86_sse2_psubs_w, // llvm.x86.sse2.psubs.w 376 x86_sse2_psubus_b, // llvm.x86.sse2.psubus.b 377 x86_sse2_psubus_w, // llvm.x86.sse2.psubus.w 378 x86_sse2_sqrt_pd, // llvm.x86.sse2.sqrt.pd 379 x86_sse2_sqrt_sd, // llvm.x86.sse2.sqrt.sd 380 x86_sse2_storel_dq, // llvm.x86.sse2.storel.dq 381 x86_sse2_storeu_dq, // llvm.x86.sse2.storeu.dq 382 x86_sse2_storeu_pd, // llvm.x86.sse2.storeu.pd 383 x86_sse2_sub_sd, // llvm.x86.sse2.sub.sd 384 x86_sse2_ucomieq_sd, // llvm.x86.sse2.ucomieq.sd 385 x86_sse2_ucomige_sd, // llvm.x86.sse2.ucomige.sd 386 x86_sse2_ucomigt_sd, // llvm.x86.sse2.ucomigt.sd 387 x86_sse2_ucomile_sd, // llvm.x86.sse2.ucomile.sd 388 x86_sse2_ucomilt_sd, // llvm.x86.sse2.ucomilt.sd 389 x86_sse2_ucomineq_sd, // llvm.x86.sse2.ucomineq.sd 390 x86_sse3_addsub_pd, // llvm.x86.sse3.addsub.pd 391 x86_sse3_addsub_ps, // llvm.x86.sse3.addsub.ps 392 x86_sse3_hadd_pd, // llvm.x86.sse3.hadd.pd 393 x86_sse3_hadd_ps, // llvm.x86.sse3.hadd.ps 394 x86_sse3_hsub_pd, // llvm.x86.sse3.hsub.pd 395 x86_sse3_hsub_ps, // llvm.x86.sse3.hsub.ps 396 x86_sse3_ldu_dq, // llvm.x86.sse3.ldu.dq 397 x86_sse3_monitor, // llvm.x86.sse3.monitor 398 x86_sse3_mwait, // llvm.x86.sse3.mwait 399 x86_sse41_blendpd, // llvm.x86.sse41.blendpd 400 x86_sse41_blendps, // llvm.x86.sse41.blendps 401 x86_sse41_blendvpd, // llvm.x86.sse41.blendvpd 402 x86_sse41_blendvps, // llvm.x86.sse41.blendvps 403 x86_sse41_dppd, // llvm.x86.sse41.dppd 404 x86_sse41_dpps, // llvm.x86.sse41.dpps 405 x86_sse41_extractps, // llvm.x86.sse41.extractps 406 x86_sse41_insertps, // llvm.x86.sse41.insertps 407 x86_sse41_movntdqa, // llvm.x86.sse41.movntdqa 408 x86_sse41_mpsadbw, // llvm.x86.sse41.mpsadbw 409 x86_sse41_packusdw, // llvm.x86.sse41.packusdw 410 x86_sse41_pblendvb, // llvm.x86.sse41.pblendvb 411 x86_sse41_pblendw, // llvm.x86.sse41.pblendw 412 x86_sse41_pcmpeqq, // llvm.x86.sse41.pcmpeqq 413 x86_sse41_pextrb, // llvm.x86.sse41.pextrb 414 x86_sse41_pextrd, // llvm.x86.sse41.pextrd 415 x86_sse41_pextrq, // llvm.x86.sse41.pextrq 416 x86_sse41_phminposuw, // llvm.x86.sse41.phminposuw 417 x86_sse41_pmaxsb, // llvm.x86.sse41.pmaxsb 418 x86_sse41_pmaxsd, // llvm.x86.sse41.pmaxsd 419 x86_sse41_pmaxud, // llvm.x86.sse41.pmaxud 420 x86_sse41_pmaxuw, // llvm.x86.sse41.pmaxuw 421 x86_sse41_pminsb, // llvm.x86.sse41.pminsb 422 x86_sse41_pminsd, // llvm.x86.sse41.pminsd 423 x86_sse41_pminud, // llvm.x86.sse41.pminud 424 x86_sse41_pminuw, // llvm.x86.sse41.pminuw 425 x86_sse41_pmovsxbd, // llvm.x86.sse41.pmovsxbd 426 x86_sse41_pmovsxbq, // llvm.x86.sse41.pmovsxbq 427 x86_sse41_pmovsxbw, // llvm.x86.sse41.pmovsxbw 428 x86_sse41_pmovsxdq, // llvm.x86.sse41.pmovsxdq 429 x86_sse41_pmovsxwd, // llvm.x86.sse41.pmovsxwd 430 x86_sse41_pmovsxwq, // llvm.x86.sse41.pmovsxwq 431 x86_sse41_pmovzxbd, // llvm.x86.sse41.pmovzxbd 432 x86_sse41_pmovzxbq, // llvm.x86.sse41.pmovzxbq 433 x86_sse41_pmovzxbw, // llvm.x86.sse41.pmovzxbw 434 x86_sse41_pmovzxdq, // llvm.x86.sse41.pmovzxdq 435 x86_sse41_pmovzxwd, // llvm.x86.sse41.pmovzxwd 436 x86_sse41_pmovzxwq, // llvm.x86.sse41.pmovzxwq 437 x86_sse41_pmuldq, // llvm.x86.sse41.pmuldq 438 x86_sse41_ptestc, // llvm.x86.sse41.ptestc 439 x86_sse41_ptestnzc, // llvm.x86.sse41.ptestnzc 440 x86_sse41_ptestz, // llvm.x86.sse41.ptestz 441 x86_sse41_round_pd, // llvm.x86.sse41.round.pd 442 x86_sse41_round_ps, // llvm.x86.sse41.round.ps 443 x86_sse41_round_sd, // llvm.x86.sse41.round.sd 444 x86_sse41_round_ss, // llvm.x86.sse41.round.ss 445 x86_sse42_crc32_32_16, // llvm.x86.sse42.crc32.32.16 446 x86_sse42_crc32_32_32, // llvm.x86.sse42.crc32.32.32 447 x86_sse42_crc32_32_8, // llvm.x86.sse42.crc32.32.8 448 x86_sse42_crc32_64_64, // llvm.x86.sse42.crc32.64.64 449 x86_sse42_crc32_64_8, // llvm.x86.sse42.crc32.64.8 450 x86_sse42_pcmpestri128, // llvm.x86.sse42.pcmpestri128 451 x86_sse42_pcmpestria128, // llvm.x86.sse42.pcmpestria128 452 x86_sse42_pcmpestric128, // llvm.x86.sse42.pcmpestric128 453 x86_sse42_pcmpestrio128, // llvm.x86.sse42.pcmpestrio128 454 x86_sse42_pcmpestris128, // llvm.x86.sse42.pcmpestris128 455 x86_sse42_pcmpestriz128, // llvm.x86.sse42.pcmpestriz128 456 x86_sse42_pcmpestrm128, // llvm.x86.sse42.pcmpestrm128 457 x86_sse42_pcmpgtq, // llvm.x86.sse42.pcmpgtq 458 x86_sse42_pcmpistri128, // llvm.x86.sse42.pcmpistri128 459 x86_sse42_pcmpistria128, // llvm.x86.sse42.pcmpistria128 460 x86_sse42_pcmpistric128, // llvm.x86.sse42.pcmpistric128 461 x86_sse42_pcmpistrio128, // llvm.x86.sse42.pcmpistrio128 462 x86_sse42_pcmpistris128, // llvm.x86.sse42.pcmpistris128 463 x86_sse42_pcmpistriz128, // llvm.x86.sse42.pcmpistriz128 464 x86_sse42_pcmpistrm128, // llvm.x86.sse42.pcmpistrm128 465 x86_sse_add_ss, // llvm.x86.sse.add.ss 466 x86_sse_cmp_ps, // llvm.x86.sse.cmp.ps 467 x86_sse_cmp_ss, // llvm.x86.sse.cmp.ss 468 x86_sse_comieq_ss, // llvm.x86.sse.comieq.ss 469 x86_sse_comige_ss, // llvm.x86.sse.comige.ss 470 x86_sse_comigt_ss, // llvm.x86.sse.comigt.ss 471 x86_sse_comile_ss, // llvm.x86.sse.comile.ss 472 x86_sse_comilt_ss, // llvm.x86.sse.comilt.ss 473 x86_sse_comineq_ss, // llvm.x86.sse.comineq.ss 474 x86_sse_cvtpd2pi, // llvm.x86.sse.cvtpd2pi 475 x86_sse_cvtpi2pd, // llvm.x86.sse.cvtpi2pd 476 x86_sse_cvtpi2ps, // llvm.x86.sse.cvtpi2ps 477 x86_sse_cvtps2pi, // llvm.x86.sse.cvtps2pi 478 x86_sse_cvtsi2ss, // llvm.x86.sse.cvtsi2ss 479 x86_sse_cvtsi642ss, // llvm.x86.sse.cvtsi642ss 480 x86_sse_cvtss2si, // llvm.x86.sse.cvtss2si 481 x86_sse_cvtss2si64, // llvm.x86.sse.cvtss2si64 482 x86_sse_cvttpd2pi, // llvm.x86.sse.cvttpd2pi 483 x86_sse_cvttps2pi, // llvm.x86.sse.cvttps2pi 484 x86_sse_cvttss2si, // llvm.x86.sse.cvttss2si 485 x86_sse_cvttss2si64, // llvm.x86.sse.cvttss2si64 486 x86_sse_div_ss, // llvm.x86.sse.div.ss 487 x86_sse_ldmxcsr, // llvm.x86.sse.ldmxcsr 488 x86_sse_max_ps, // llvm.x86.sse.max.ps 489 x86_sse_max_ss, // llvm.x86.sse.max.ss 490 x86_sse_min_ps, // llvm.x86.sse.min.ps 491 x86_sse_min_ss, // llvm.x86.sse.min.ss 492 x86_sse_movmsk_ps, // llvm.x86.sse.movmsk.ps 493 x86_sse_mul_ss, // llvm.x86.sse.mul.ss 494 x86_sse_pshuf_w, // llvm.x86.sse.pshuf.w 495 x86_sse_rcp_ps, // llvm.x86.sse.rcp.ps 496 x86_sse_rcp_ss, // llvm.x86.sse.rcp.ss 497 x86_sse_rsqrt_ps, // llvm.x86.sse.rsqrt.ps 498 x86_sse_rsqrt_ss, // llvm.x86.sse.rsqrt.ss 499 x86_sse_sfence, // llvm.x86.sse.sfence 500 x86_sse_sqrt_ps, // llvm.x86.sse.sqrt.ps 501 x86_sse_sqrt_ss, // llvm.x86.sse.sqrt.ss 502 x86_sse_stmxcsr, // llvm.x86.sse.stmxcsr 503 x86_sse_storeu_ps, // llvm.x86.sse.storeu.ps 504 x86_sse_sub_ss, // llvm.x86.sse.sub.ss 505 x86_sse_ucomieq_ss, // llvm.x86.sse.ucomieq.ss 506 x86_sse_ucomige_ss, // llvm.x86.sse.ucomige.ss 507 x86_sse_ucomigt_ss, // llvm.x86.sse.ucomigt.ss 508 x86_sse_ucomile_ss, // llvm.x86.sse.ucomile.ss 509 x86_sse_ucomilt_ss, // llvm.x86.sse.ucomilt.ss 510 x86_sse_ucomineq_ss, // llvm.x86.sse.ucomineq.ss 511 x86_ssse3_pabs_b, // llvm.x86.ssse3.pabs.b 512 x86_ssse3_pabs_b_128, // llvm.x86.ssse3.pabs.b.128 513 x86_ssse3_pabs_d, // llvm.x86.ssse3.pabs.d 514 x86_ssse3_pabs_d_128, // llvm.x86.ssse3.pabs.d.128 515 x86_ssse3_pabs_w, // llvm.x86.ssse3.pabs.w 516 x86_ssse3_pabs_w_128, // llvm.x86.ssse3.pabs.w.128 517 x86_ssse3_phadd_d, // llvm.x86.ssse3.phadd.d 518 x86_ssse3_phadd_d_128, // llvm.x86.ssse3.phadd.d.128 519 x86_ssse3_phadd_sw, // llvm.x86.ssse3.phadd.sw 520 x86_ssse3_phadd_sw_128, // llvm.x86.ssse3.phadd.sw.128 521 x86_ssse3_phadd_w, // llvm.x86.ssse3.phadd.w 522 x86_ssse3_phadd_w_128, // llvm.x86.ssse3.phadd.w.128 523 x86_ssse3_phsub_d, // llvm.x86.ssse3.phsub.d 524 x86_ssse3_phsub_d_128, // llvm.x86.ssse3.phsub.d.128 525 x86_ssse3_phsub_sw, // llvm.x86.ssse3.phsub.sw 526 x86_ssse3_phsub_sw_128, // llvm.x86.ssse3.phsub.sw.128 527 x86_ssse3_phsub_w, // llvm.x86.ssse3.phsub.w 528 x86_ssse3_phsub_w_128, // llvm.x86.ssse3.phsub.w.128 529 x86_ssse3_pmadd_ub_sw, // llvm.x86.ssse3.pmadd.ub.sw 530 x86_ssse3_pmadd_ub_sw_128, // llvm.x86.ssse3.pmadd.ub.sw.128 531 x86_ssse3_pmul_hr_sw, // llvm.x86.ssse3.pmul.hr.sw 532 x86_ssse3_pmul_hr_sw_128, // llvm.x86.ssse3.pmul.hr.sw.128 533 x86_ssse3_pshuf_b, // llvm.x86.ssse3.pshuf.b 534 x86_ssse3_pshuf_b_128, // llvm.x86.ssse3.pshuf.b.128 535 x86_ssse3_psign_b, // llvm.x86.ssse3.psign.b 536 x86_ssse3_psign_b_128, // llvm.x86.ssse3.psign.b.128 537 x86_ssse3_psign_d, // llvm.x86.ssse3.psign.d 538 x86_ssse3_psign_d_128, // llvm.x86.ssse3.psign.d.128 539 x86_ssse3_psign_w, // llvm.x86.ssse3.psign.w 540 x86_ssse3_psign_w_128 // llvm.x86.ssse3.psign.w.128 541 #endif 542 543 // Intrinsic ID to name table 544 #ifdef GET_INTRINSIC_NAME_TABLE 545 // Note that entry #0 is the invalid intrinsic! 546 "llvm.adjust.trampoline", 547 "llvm.annotation", 548 "llvm.bswap", 549 "llvm.convert.from.fp16", 550 "llvm.convert.to.fp16", 551 "llvm.convertff", 552 "llvm.convertfsi", 553 "llvm.convertfui", 554 "llvm.convertsif", 555 "llvm.convertss", 556 "llvm.convertsu", 557 "llvm.convertuif", 558 "llvm.convertus", 559 "llvm.convertuu", 560 "llvm.cos", 561 "llvm.ctlz", 562 "llvm.ctpop", 563 "llvm.cttz", 564 "llvm.dbg.declare", 565 "llvm.dbg.value", 566 "llvm.eh.dwarf.cfa", 567 "llvm.eh.exception", 568 "llvm.eh.resume", 569 "llvm.eh.return.i32", 570 "llvm.eh.return.i64", 571 "llvm.eh.selector", 572 "llvm.eh.sjlj.callsite", 573 "llvm.eh.sjlj.dispatch.setup", 574 "llvm.eh.sjlj.functioncontext", 575 "llvm.eh.sjlj.longjmp", 576 "llvm.eh.sjlj.lsda", 577 "llvm.eh.sjlj.setjmp", 578 "llvm.eh.typeid.for", 579 "llvm.eh.unwind.init", 580 "llvm.exp", 581 "llvm.exp2", 582 "llvm.expect", 583 "llvm.flt.rounds", 584 "llvm.fma", 585 "llvm.frameaddress", 586 "llvm.gcread", 587 "llvm.gcroot", 588 "llvm.gcwrite", 589 "llvm.init.trampoline", 590 "llvm.invariant.end", 591 "llvm.invariant.start", 592 "llvm.lifetime.end", 593 "llvm.lifetime.start", 594 "llvm.log", 595 "llvm.log10", 596 "llvm.log2", 597 "llvm.longjmp", 598 "llvm.memcpy", 599 "llvm.memmove", 600 "llvm.memset", 601 "llvm.objectsize", 602 "llvm.pcmarker", 603 "llvm.pow", 604 "llvm.powi", 605 "llvm.prefetch", 606 "llvm.ptr.annotation", 607 "llvm.readcyclecounter", 608 "llvm.returnaddress", 609 "llvm.sadd.with.overflow", 610 "llvm.setjmp", 611 "llvm.siglongjmp", 612 "llvm.sigsetjmp", 613 "llvm.sin", 614 "llvm.smul.with.overflow", 615 "llvm.sqrt", 616 "llvm.ssub.with.overflow", 617 "llvm.stackprotector", 618 "llvm.stackrestore", 619 "llvm.stacksave", 620 "llvm.trap", 621 "llvm.uadd.with.overflow", 622 "llvm.umul.with.overflow", 623 "llvm.usub.with.overflow", 624 "llvm.va_copy", 625 "llvm.va_end", 626 "llvm.var.annotation", 627 "llvm.va_start", 628 "llvm.x86.3dnow.pavgusb", 629 "llvm.x86.3dnow.pf2id", 630 "llvm.x86.3dnow.pfacc", 631 "llvm.x86.3dnow.pfadd", 632 "llvm.x86.3dnow.pfcmpeq", 633 "llvm.x86.3dnow.pfcmpge", 634 "llvm.x86.3dnow.pfcmpgt", 635 "llvm.x86.3dnow.pfmax", 636 "llvm.x86.3dnow.pfmin", 637 "llvm.x86.3dnow.pfmul", 638 "llvm.x86.3dnow.pfrcp", 639 "llvm.x86.3dnow.pfrcpit1", 640 "llvm.x86.3dnow.pfrcpit2", 641 "llvm.x86.3dnow.pfrsqit1", 642 "llvm.x86.3dnow.pfrsqrt", 643 "llvm.x86.3dnow.pfsub", 644 "llvm.x86.3dnow.pfsubr", 645 "llvm.x86.3dnow.pi2fd", 646 "llvm.x86.3dnow.pmulhrw", 647 "llvm.x86.3dnowa.pf2iw", 648 "llvm.x86.3dnowa.pfnacc", 649 "llvm.x86.3dnowa.pfpnacc", 650 "llvm.x86.3dnowa.pi2fw", 651 "llvm.x86.3dnowa.pswapd", 652 "llvm.x86.aesni.aesdec", 653 "llvm.x86.aesni.aesdeclast", 654 "llvm.x86.aesni.aesenc", 655 "llvm.x86.aesni.aesenclast", 656 "llvm.x86.aesni.aesimc", 657 "llvm.x86.aesni.aeskeygenassist", 658 "llvm.x86.avx.addsub.pd.256", 659 "llvm.x86.avx.addsub.ps.256", 660 "llvm.x86.avx.blend.pd.256", 661 "llvm.x86.avx.blend.ps.256", 662 "llvm.x86.avx.blendv.pd.256", 663 "llvm.x86.avx.blendv.ps.256", 664 "llvm.x86.avx.cmp.pd.256", 665 "llvm.x86.avx.cmp.ps.256", 666 "llvm.x86.avx.cvt.pd2.ps.256", 667 "llvm.x86.avx.cvt.pd2dq.256", 668 "llvm.x86.avx.cvt.ps2.pd.256", 669 "llvm.x86.avx.cvt.ps2dq.256", 670 "llvm.x86.avx.cvtdq2.pd.256", 671 "llvm.x86.avx.cvtdq2.ps.256", 672 "llvm.x86.avx.cvtt.pd2dq.256", 673 "llvm.x86.avx.cvtt.ps2dq.256", 674 "llvm.x86.avx.dp.ps.256", 675 "llvm.x86.avx.hadd.pd.256", 676 "llvm.x86.avx.hadd.ps.256", 677 "llvm.x86.avx.hsub.pd.256", 678 "llvm.x86.avx.hsub.ps.256", 679 "llvm.x86.avx.ldu.dq.256", 680 "llvm.x86.avx.loadu.dq.256", 681 "llvm.x86.avx.loadu.pd.256", 682 "llvm.x86.avx.loadu.ps.256", 683 "llvm.x86.avx.maskload.pd", 684 "llvm.x86.avx.maskload.pd.256", 685 "llvm.x86.avx.maskload.ps", 686 "llvm.x86.avx.maskload.ps.256", 687 "llvm.x86.avx.maskstore.pd", 688 "llvm.x86.avx.maskstore.pd.256", 689 "llvm.x86.avx.maskstore.ps", 690 "llvm.x86.avx.maskstore.ps.256", 691 "llvm.x86.avx.max.pd.256", 692 "llvm.x86.avx.max.ps.256", 693 "llvm.x86.avx.min.pd.256", 694 "llvm.x86.avx.min.ps.256", 695 "llvm.x86.avx.movmsk.pd.256", 696 "llvm.x86.avx.movmsk.ps.256", 697 "llvm.x86.avx.movnt.dq.256", 698 "llvm.x86.avx.movnt.pd.256", 699 "llvm.x86.avx.movnt.ps.256", 700 "llvm.x86.avx.ptestc.256", 701 "llvm.x86.avx.ptestnzc.256", 702 "llvm.x86.avx.ptestz.256", 703 "llvm.x86.avx.rcp.ps.256", 704 "llvm.x86.avx.round.pd.256", 705 "llvm.x86.avx.round.ps.256", 706 "llvm.x86.avx.rsqrt.ps.256", 707 "llvm.x86.avx.sqrt.pd.256", 708 "llvm.x86.avx.sqrt.ps.256", 709 "llvm.x86.avx.storeu.dq.256", 710 "llvm.x86.avx.storeu.pd.256", 711 "llvm.x86.avx.storeu.ps.256", 712 "llvm.x86.avx.vbroadcast.sd.256", 713 "llvm.x86.avx.vbroadcastf128.pd.256", 714 "llvm.x86.avx.vbroadcastf128.ps.256", 715 "llvm.x86.avx.vbroadcastss", 716 "llvm.x86.avx.vbroadcastss.256", 717 "llvm.x86.avx.vextractf128.pd.256", 718 "llvm.x86.avx.vextractf128.ps.256", 719 "llvm.x86.avx.vextractf128.si.256", 720 "llvm.x86.avx.vinsertf128.pd.256", 721 "llvm.x86.avx.vinsertf128.ps.256", 722 "llvm.x86.avx.vinsertf128.si.256", 723 "llvm.x86.avx.vperm2f128.pd.256", 724 "llvm.x86.avx.vperm2f128.ps.256", 725 "llvm.x86.avx.vperm2f128.si.256", 726 "llvm.x86.avx.vpermil.pd", 727 "llvm.x86.avx.vpermil.pd.256", 728 "llvm.x86.avx.vpermil.ps", 729 "llvm.x86.avx.vpermil.ps.256", 730 "llvm.x86.avx.vpermilvar.pd", 731 "llvm.x86.avx.vpermilvar.pd.256", 732 "llvm.x86.avx.vpermilvar.ps", 733 "llvm.x86.avx.vpermilvar.ps.256", 734 "llvm.x86.avx.vtestc.pd", 735 "llvm.x86.avx.vtestc.pd.256", 736 "llvm.x86.avx.vtestc.ps", 737 "llvm.x86.avx.vtestc.ps.256", 738 "llvm.x86.avx.vtestnzc.pd", 739 "llvm.x86.avx.vtestnzc.pd.256", 740 "llvm.x86.avx.vtestnzc.ps", 741 "llvm.x86.avx.vtestnzc.ps.256", 742 "llvm.x86.avx.vtestz.pd", 743 "llvm.x86.avx.vtestz.pd.256", 744 "llvm.x86.avx.vtestz.ps", 745 "llvm.x86.avx.vtestz.ps.256", 746 "llvm.x86.avx.vzeroall", 747 "llvm.x86.avx.vzeroupper", 748 "llvm.x86.int", 749 "llvm.x86.mmx.emms", 750 "llvm.x86.mmx.femms", 751 "llvm.x86.mmx.maskmovq", 752 "llvm.x86.mmx.movnt.dq", 753 "llvm.x86.mmx.packssdw", 754 "llvm.x86.mmx.packsswb", 755 "llvm.x86.mmx.packuswb", 756 "llvm.x86.mmx.padd.b", 757 "llvm.x86.mmx.padd.d", 758 "llvm.x86.mmx.padd.q", 759 "llvm.x86.mmx.padd.w", 760 "llvm.x86.mmx.padds.b", 761 "llvm.x86.mmx.padds.w", 762 "llvm.x86.mmx.paddus.b", 763 "llvm.x86.mmx.paddus.w", 764 "llvm.x86.mmx.palignr.b", 765 "llvm.x86.mmx.pand", 766 "llvm.x86.mmx.pandn", 767 "llvm.x86.mmx.pavg.b", 768 "llvm.x86.mmx.pavg.w", 769 "llvm.x86.mmx.pcmpeq.b", 770 "llvm.x86.mmx.pcmpeq.d", 771 "llvm.x86.mmx.pcmpeq.w", 772 "llvm.x86.mmx.pcmpgt.b", 773 "llvm.x86.mmx.pcmpgt.d", 774 "llvm.x86.mmx.pcmpgt.w", 775 "llvm.x86.mmx.pextr.w", 776 "llvm.x86.mmx.pinsr.w", 777 "llvm.x86.mmx.pmadd.wd", 778 "llvm.x86.mmx.pmaxs.w", 779 "llvm.x86.mmx.pmaxu.b", 780 "llvm.x86.mmx.pmins.w", 781 "llvm.x86.mmx.pminu.b", 782 "llvm.x86.mmx.pmovmskb", 783 "llvm.x86.mmx.pmulh.w", 784 "llvm.x86.mmx.pmulhu.w", 785 "llvm.x86.mmx.pmull.w", 786 "llvm.x86.mmx.pmulu.dq", 787 "llvm.x86.mmx.por", 788 "llvm.x86.mmx.psad.bw", 789 "llvm.x86.mmx.psll.d", 790 "llvm.x86.mmx.psll.q", 791 "llvm.x86.mmx.psll.w", 792 "llvm.x86.mmx.pslli.d", 793 "llvm.x86.mmx.pslli.q", 794 "llvm.x86.mmx.pslli.w", 795 "llvm.x86.mmx.psra.d", 796 "llvm.x86.mmx.psra.w", 797 "llvm.x86.mmx.psrai.d", 798 "llvm.x86.mmx.psrai.w", 799 "llvm.x86.mmx.psrl.d", 800 "llvm.x86.mmx.psrl.q", 801 "llvm.x86.mmx.psrl.w", 802 "llvm.x86.mmx.psrli.d", 803 "llvm.x86.mmx.psrli.q", 804 "llvm.x86.mmx.psrli.w", 805 "llvm.x86.mmx.psub.b", 806 "llvm.x86.mmx.psub.d", 807 "llvm.x86.mmx.psub.q", 808 "llvm.x86.mmx.psub.w", 809 "llvm.x86.mmx.psubs.b", 810 "llvm.x86.mmx.psubs.w", 811 "llvm.x86.mmx.psubus.b", 812 "llvm.x86.mmx.psubus.w", 813 "llvm.x86.mmx.punpckhbw", 814 "llvm.x86.mmx.punpckhdq", 815 "llvm.x86.mmx.punpckhwd", 816 "llvm.x86.mmx.punpcklbw", 817 "llvm.x86.mmx.punpckldq", 818 "llvm.x86.mmx.punpcklwd", 819 "llvm.x86.mmx.pxor", 820 "llvm.x86.sse2.add.sd", 821 "llvm.x86.sse2.clflush", 822 "llvm.x86.sse2.cmp.pd", 823 "llvm.x86.sse2.cmp.sd", 824 "llvm.x86.sse2.comieq.sd", 825 "llvm.x86.sse2.comige.sd", 826 "llvm.x86.sse2.comigt.sd", 827 "llvm.x86.sse2.comile.sd", 828 "llvm.x86.sse2.comilt.sd", 829 "llvm.x86.sse2.comineq.sd", 830 "llvm.x86.sse2.cvtdq2pd", 831 "llvm.x86.sse2.cvtdq2ps", 832 "llvm.x86.sse2.cvtpd2dq", 833 "llvm.x86.sse2.cvtpd2ps", 834 "llvm.x86.sse2.cvtps2dq", 835 "llvm.x86.sse2.cvtps2pd", 836 "llvm.x86.sse2.cvtsd2si", 837 "llvm.x86.sse2.cvtsd2si64", 838 "llvm.x86.sse2.cvtsd2ss", 839 "llvm.x86.sse2.cvtsi2sd", 840 "llvm.x86.sse2.cvtsi642sd", 841 "llvm.x86.sse2.cvtss2sd", 842 "llvm.x86.sse2.cvttpd2dq", 843 "llvm.x86.sse2.cvttps2dq", 844 "llvm.x86.sse2.cvttsd2si", 845 "llvm.x86.sse2.cvttsd2si64", 846 "llvm.x86.sse2.div.sd", 847 "llvm.x86.sse2.lfence", 848 "llvm.x86.sse2.maskmov.dqu", 849 "llvm.x86.sse2.max.pd", 850 "llvm.x86.sse2.max.sd", 851 "llvm.x86.sse2.mfence", 852 "llvm.x86.sse2.min.pd", 853 "llvm.x86.sse2.min.sd", 854 "llvm.x86.sse2.movmsk.pd", 855 "llvm.x86.sse2.mul.sd", 856 "llvm.x86.sse2.packssdw.128", 857 "llvm.x86.sse2.packsswb.128", 858 "llvm.x86.sse2.packuswb.128", 859 "llvm.x86.sse2.padds.b", 860 "llvm.x86.sse2.padds.w", 861 "llvm.x86.sse2.paddus.b", 862 "llvm.x86.sse2.paddus.w", 863 "llvm.x86.sse2.pavg.b", 864 "llvm.x86.sse2.pavg.w", 865 "llvm.x86.sse2.pcmpeq.b", 866 "llvm.x86.sse2.pcmpeq.d", 867 "llvm.x86.sse2.pcmpeq.w", 868 "llvm.x86.sse2.pcmpgt.b", 869 "llvm.x86.sse2.pcmpgt.d", 870 "llvm.x86.sse2.pcmpgt.w", 871 "llvm.x86.sse2.pmadd.wd", 872 "llvm.x86.sse2.pmaxs.w", 873 "llvm.x86.sse2.pmaxu.b", 874 "llvm.x86.sse2.pmins.w", 875 "llvm.x86.sse2.pminu.b", 876 "llvm.x86.sse2.pmovmskb.128", 877 "llvm.x86.sse2.pmulh.w", 878 "llvm.x86.sse2.pmulhu.w", 879 "llvm.x86.sse2.pmulu.dq", 880 "llvm.x86.sse2.psad.bw", 881 "llvm.x86.sse2.psll.d", 882 "llvm.x86.sse2.psll.dq", 883 "llvm.x86.sse2.psll.dq.bs", 884 "llvm.x86.sse2.psll.q", 885 "llvm.x86.sse2.psll.w", 886 "llvm.x86.sse2.pslli.d", 887 "llvm.x86.sse2.pslli.q", 888 "llvm.x86.sse2.pslli.w", 889 "llvm.x86.sse2.psra.d", 890 "llvm.x86.sse2.psra.w", 891 "llvm.x86.sse2.psrai.d", 892 "llvm.x86.sse2.psrai.w", 893 "llvm.x86.sse2.psrl.d", 894 "llvm.x86.sse2.psrl.dq", 895 "llvm.x86.sse2.psrl.dq.bs", 896 "llvm.x86.sse2.psrl.q", 897 "llvm.x86.sse2.psrl.w", 898 "llvm.x86.sse2.psrli.d", 899 "llvm.x86.sse2.psrli.q", 900 "llvm.x86.sse2.psrli.w", 901 "llvm.x86.sse2.psubs.b", 902 "llvm.x86.sse2.psubs.w", 903 "llvm.x86.sse2.psubus.b", 904 "llvm.x86.sse2.psubus.w", 905 "llvm.x86.sse2.sqrt.pd", 906 "llvm.x86.sse2.sqrt.sd", 907 "llvm.x86.sse2.storel.dq", 908 "llvm.x86.sse2.storeu.dq", 909 "llvm.x86.sse2.storeu.pd", 910 "llvm.x86.sse2.sub.sd", 911 "llvm.x86.sse2.ucomieq.sd", 912 "llvm.x86.sse2.ucomige.sd", 913 "llvm.x86.sse2.ucomigt.sd", 914 "llvm.x86.sse2.ucomile.sd", 915 "llvm.x86.sse2.ucomilt.sd", 916 "llvm.x86.sse2.ucomineq.sd", 917 "llvm.x86.sse3.addsub.pd", 918 "llvm.x86.sse3.addsub.ps", 919 "llvm.x86.sse3.hadd.pd", 920 "llvm.x86.sse3.hadd.ps", 921 "llvm.x86.sse3.hsub.pd", 922 "llvm.x86.sse3.hsub.ps", 923 "llvm.x86.sse3.ldu.dq", 924 "llvm.x86.sse3.monitor", 925 "llvm.x86.sse3.mwait", 926 "llvm.x86.sse41.blendpd", 927 "llvm.x86.sse41.blendps", 928 "llvm.x86.sse41.blendvpd", 929 "llvm.x86.sse41.blendvps", 930 "llvm.x86.sse41.dppd", 931 "llvm.x86.sse41.dpps", 932 "llvm.x86.sse41.extractps", 933 "llvm.x86.sse41.insertps", 934 "llvm.x86.sse41.movntdqa", 935 "llvm.x86.sse41.mpsadbw", 936 "llvm.x86.sse41.packusdw", 937 "llvm.x86.sse41.pblendvb", 938 "llvm.x86.sse41.pblendw", 939 "llvm.x86.sse41.pcmpeqq", 940 "llvm.x86.sse41.pextrb", 941 "llvm.x86.sse41.pextrd", 942 "llvm.x86.sse41.pextrq", 943 "llvm.x86.sse41.phminposuw", 944 "llvm.x86.sse41.pmaxsb", 945 "llvm.x86.sse41.pmaxsd", 946 "llvm.x86.sse41.pmaxud", 947 "llvm.x86.sse41.pmaxuw", 948 "llvm.x86.sse41.pminsb", 949 "llvm.x86.sse41.pminsd", 950 "llvm.x86.sse41.pminud", 951 "llvm.x86.sse41.pminuw", 952 "llvm.x86.sse41.pmovsxbd", 953 "llvm.x86.sse41.pmovsxbq", 954 "llvm.x86.sse41.pmovsxbw", 955 "llvm.x86.sse41.pmovsxdq", 956 "llvm.x86.sse41.pmovsxwd", 957 "llvm.x86.sse41.pmovsxwq", 958 "llvm.x86.sse41.pmovzxbd", 959 "llvm.x86.sse41.pmovzxbq", 960 "llvm.x86.sse41.pmovzxbw", 961 "llvm.x86.sse41.pmovzxdq", 962 "llvm.x86.sse41.pmovzxwd", 963 "llvm.x86.sse41.pmovzxwq", 964 "llvm.x86.sse41.pmuldq", 965 "llvm.x86.sse41.ptestc", 966 "llvm.x86.sse41.ptestnzc", 967 "llvm.x86.sse41.ptestz", 968 "llvm.x86.sse41.round.pd", 969 "llvm.x86.sse41.round.ps", 970 "llvm.x86.sse41.round.sd", 971 "llvm.x86.sse41.round.ss", 972 "llvm.x86.sse42.crc32.32.16", 973 "llvm.x86.sse42.crc32.32.32", 974 "llvm.x86.sse42.crc32.32.8", 975 "llvm.x86.sse42.crc32.64.64", 976 "llvm.x86.sse42.crc32.64.8", 977 "llvm.x86.sse42.pcmpestri128", 978 "llvm.x86.sse42.pcmpestria128", 979 "llvm.x86.sse42.pcmpestric128", 980 "llvm.x86.sse42.pcmpestrio128", 981 "llvm.x86.sse42.pcmpestris128", 982 "llvm.x86.sse42.pcmpestriz128", 983 "llvm.x86.sse42.pcmpestrm128", 984 "llvm.x86.sse42.pcmpgtq", 985 "llvm.x86.sse42.pcmpistri128", 986 "llvm.x86.sse42.pcmpistria128", 987 "llvm.x86.sse42.pcmpistric128", 988 "llvm.x86.sse42.pcmpistrio128", 989 "llvm.x86.sse42.pcmpistris128", 990 "llvm.x86.sse42.pcmpistriz128", 991 "llvm.x86.sse42.pcmpistrm128", 992 "llvm.x86.sse.add.ss", 993 "llvm.x86.sse.cmp.ps", 994 "llvm.x86.sse.cmp.ss", 995 "llvm.x86.sse.comieq.ss", 996 "llvm.x86.sse.comige.ss", 997 "llvm.x86.sse.comigt.ss", 998 "llvm.x86.sse.comile.ss", 999 "llvm.x86.sse.comilt.ss", 1000 "llvm.x86.sse.comineq.ss", 1001 "llvm.x86.sse.cvtpd2pi", 1002 "llvm.x86.sse.cvtpi2pd", 1003 "llvm.x86.sse.cvtpi2ps", 1004 "llvm.x86.sse.cvtps2pi", 1005 "llvm.x86.sse.cvtsi2ss", 1006 "llvm.x86.sse.cvtsi642ss", 1007 "llvm.x86.sse.cvtss2si", 1008 "llvm.x86.sse.cvtss2si64", 1009 "llvm.x86.sse.cvttpd2pi", 1010 "llvm.x86.sse.cvttps2pi", 1011 "llvm.x86.sse.cvttss2si", 1012 "llvm.x86.sse.cvttss2si64", 1013 "llvm.x86.sse.div.ss", 1014 "llvm.x86.sse.ldmxcsr", 1015 "llvm.x86.sse.max.ps", 1016 "llvm.x86.sse.max.ss", 1017 "llvm.x86.sse.min.ps", 1018 "llvm.x86.sse.min.ss", 1019 "llvm.x86.sse.movmsk.ps", 1020 "llvm.x86.sse.mul.ss", 1021 "llvm.x86.sse.pshuf.w", 1022 "llvm.x86.sse.rcp.ps", 1023 "llvm.x86.sse.rcp.ss", 1024 "llvm.x86.sse.rsqrt.ps", 1025 "llvm.x86.sse.rsqrt.ss", 1026 "llvm.x86.sse.sfence", 1027 "llvm.x86.sse.sqrt.ps", 1028 "llvm.x86.sse.sqrt.ss", 1029 "llvm.x86.sse.stmxcsr", 1030 "llvm.x86.sse.storeu.ps", 1031 "llvm.x86.sse.sub.ss", 1032 "llvm.x86.sse.ucomieq.ss", 1033 "llvm.x86.sse.ucomige.ss", 1034 "llvm.x86.sse.ucomigt.ss", 1035 "llvm.x86.sse.ucomile.ss", 1036 "llvm.x86.sse.ucomilt.ss", 1037 "llvm.x86.sse.ucomineq.ss", 1038 "llvm.x86.ssse3.pabs.b", 1039 "llvm.x86.ssse3.pabs.b.128", 1040 "llvm.x86.ssse3.pabs.d", 1041 "llvm.x86.ssse3.pabs.d.128", 1042 "llvm.x86.ssse3.pabs.w", 1043 "llvm.x86.ssse3.pabs.w.128", 1044 "llvm.x86.ssse3.phadd.d", 1045 "llvm.x86.ssse3.phadd.d.128", 1046 "llvm.x86.ssse3.phadd.sw", 1047 "llvm.x86.ssse3.phadd.sw.128", 1048 "llvm.x86.ssse3.phadd.w", 1049 "llvm.x86.ssse3.phadd.w.128", 1050 "llvm.x86.ssse3.phsub.d", 1051 "llvm.x86.ssse3.phsub.d.128", 1052 "llvm.x86.ssse3.phsub.sw", 1053 "llvm.x86.ssse3.phsub.sw.128", 1054 "llvm.x86.ssse3.phsub.w", 1055 "llvm.x86.ssse3.phsub.w.128", 1056 "llvm.x86.ssse3.pmadd.ub.sw", 1057 "llvm.x86.ssse3.pmadd.ub.sw.128", 1058 "llvm.x86.ssse3.pmul.hr.sw", 1059 "llvm.x86.ssse3.pmul.hr.sw.128", 1060 "llvm.x86.ssse3.pshuf.b", 1061 "llvm.x86.ssse3.pshuf.b.128", 1062 "llvm.x86.ssse3.psign.b", 1063 "llvm.x86.ssse3.psign.b.128", 1064 "llvm.x86.ssse3.psign.d", 1065 "llvm.x86.ssse3.psign.d.128", 1066 "llvm.x86.ssse3.psign.w", 1067 "llvm.x86.ssse3.psign.w.128", 1068 #endif 1069 1070 // Intrinsic ID to overload table 1071 #ifdef GET_INTRINSIC_OVERLOAD_TABLE 1072 // Note that entry #0 is the invalid intrinsic! 1073 false, 1074 true, 1075 true, 1076 false, 1077 false, 1078 true, 1079 true, 1080 true, 1081 true, 1082 true, 1083 true, 1084 true, 1085 true, 1086 true, 1087 true, 1088 true, 1089 true, 1090 true, 1091 false, 1092 false, 1093 false, 1094 false, 1095 false, 1096 false, 1097 false, 1098 false, 1099 false, 1100 false, 1101 false, 1102 false, 1103 false, 1104 false, 1105 false, 1106 false, 1107 true, 1108 true, 1109 true, 1110 false, 1111 true, 1112 false, 1113 false, 1114 false, 1115 false, 1116 false, 1117 false, 1118 false, 1119 false, 1120 false, 1121 true, 1122 true, 1123 true, 1124 false, 1125 true, 1126 true, 1127 true, 1128 true, 1129 false, 1130 true, 1131 true, 1132 false, 1133 true, 1134 false, 1135 false, 1136 true, 1137 false, 1138 false, 1139 false, 1140 true, 1141 true, 1142 true, 1143 true, 1144 false, 1145 false, 1146 false, 1147 false, 1148 true, 1149 true, 1150 true, 1151 false, 1152 false, 1153 false, 1154 false, 1155 false, 1156 false, 1157 false, 1158 false, 1159 false, 1160 false, 1161 false, 1162 false, 1163 false, 1164 false, 1165 false, 1166 false, 1167 false, 1168 false, 1169 false, 1170 false, 1171 false, 1172 false, 1173 false, 1174 false, 1175 false, 1176 false, 1177 false, 1178 false, 1179 false, 1180 false, 1181 false, 1182 false, 1183 false, 1184 false, 1185 false, 1186 false, 1187 false, 1188 false, 1189 false, 1190 false, 1191 false, 1192 false, 1193 false, 1194 false, 1195 false, 1196 false, 1197 false, 1198 false, 1199 false, 1200 false, 1201 false, 1202 false, 1203 false, 1204 false, 1205 false, 1206 false, 1207 false, 1208 false, 1209 false, 1210 false, 1211 false, 1212 false, 1213 false, 1214 false, 1215 false, 1216 false, 1217 false, 1218 false, 1219 false, 1220 false, 1221 false, 1222 false, 1223 false, 1224 false, 1225 false, 1226 false, 1227 false, 1228 false, 1229 false, 1230 false, 1231 false, 1232 false, 1233 false, 1234 false, 1235 false, 1236 false, 1237 false, 1238 false, 1239 false, 1240 false, 1241 false, 1242 false, 1243 false, 1244 false, 1245 false, 1246 false, 1247 false, 1248 false, 1249 false, 1250 false, 1251 false, 1252 false, 1253 false, 1254 false, 1255 false, 1256 false, 1257 false, 1258 false, 1259 false, 1260 false, 1261 false, 1262 false, 1263 false, 1264 false, 1265 false, 1266 false, 1267 false, 1268 false, 1269 false, 1270 false, 1271 false, 1272 false, 1273 false, 1274 false, 1275 false, 1276 false, 1277 false, 1278 false, 1279 false, 1280 false, 1281 false, 1282 false, 1283 false, 1284 false, 1285 false, 1286 false, 1287 false, 1288 false, 1289 false, 1290 false, 1291 false, 1292 false, 1293 false, 1294 false, 1295 false, 1296 false, 1297 false, 1298 false, 1299 false, 1300 false, 1301 false, 1302 false, 1303 false, 1304 false, 1305 false, 1306 false, 1307 false, 1308 false, 1309 false, 1310 false, 1311 false, 1312 false, 1313 false, 1314 false, 1315 false, 1316 false, 1317 false, 1318 false, 1319 false, 1320 false, 1321 false, 1322 false, 1323 false, 1324 false, 1325 false, 1326 false, 1327 false, 1328 false, 1329 false, 1330 false, 1331 false, 1332 false, 1333 false, 1334 false, 1335 false, 1336 false, 1337 false, 1338 false, 1339 false, 1340 false, 1341 false, 1342 false, 1343 false, 1344 false, 1345 false, 1346 false, 1347 false, 1348 false, 1349 false, 1350 false, 1351 false, 1352 false, 1353 false, 1354 false, 1355 false, 1356 false, 1357 false, 1358 false, 1359 false, 1360 false, 1361 false, 1362 false, 1363 false, 1364 false, 1365 false, 1366 false, 1367 false, 1368 false, 1369 false, 1370 false, 1371 false, 1372 false, 1373 false, 1374 false, 1375 false, 1376 false, 1377 false, 1378 false, 1379 false, 1380 false, 1381 false, 1382 false, 1383 false, 1384 false, 1385 false, 1386 false, 1387 false, 1388 false, 1389 false, 1390 false, 1391 false, 1392 false, 1393 false, 1394 false, 1395 false, 1396 false, 1397 false, 1398 false, 1399 false, 1400 false, 1401 false, 1402 false, 1403 false, 1404 false, 1405 false, 1406 false, 1407 false, 1408 false, 1409 false, 1410 false, 1411 false, 1412 false, 1413 false, 1414 false, 1415 false, 1416 false, 1417 false, 1418 false, 1419 false, 1420 false, 1421 false, 1422 false, 1423 false, 1424 false, 1425 false, 1426 false, 1427 false, 1428 false, 1429 false, 1430 false, 1431 false, 1432 false, 1433 false, 1434 false, 1435 false, 1436 false, 1437 false, 1438 false, 1439 false, 1440 false, 1441 false, 1442 false, 1443 false, 1444 false, 1445 false, 1446 false, 1447 false, 1448 false, 1449 false, 1450 false, 1451 false, 1452 false, 1453 false, 1454 false, 1455 false, 1456 false, 1457 false, 1458 false, 1459 false, 1460 false, 1461 false, 1462 false, 1463 false, 1464 false, 1465 false, 1466 false, 1467 false, 1468 false, 1469 false, 1470 false, 1471 false, 1472 false, 1473 false, 1474 false, 1475 false, 1476 false, 1477 false, 1478 false, 1479 false, 1480 false, 1481 false, 1482 false, 1483 false, 1484 false, 1485 false, 1486 false, 1487 false, 1488 false, 1489 false, 1490 false, 1491 false, 1492 false, 1493 false, 1494 false, 1495 false, 1496 false, 1497 false, 1498 false, 1499 false, 1500 false, 1501 false, 1502 false, 1503 false, 1504 false, 1505 false, 1506 false, 1507 false, 1508 false, 1509 false, 1510 false, 1511 false, 1512 false, 1513 false, 1514 false, 1515 false, 1516 false, 1517 false, 1518 false, 1519 false, 1520 false, 1521 false, 1522 false, 1523 false, 1524 false, 1525 false, 1526 false, 1527 false, 1528 false, 1529 false, 1530 false, 1531 false, 1532 false, 1533 false, 1534 false, 1535 false, 1536 false, 1537 false, 1538 false, 1539 false, 1540 false, 1541 false, 1542 false, 1543 false, 1544 false, 1545 false, 1546 false, 1547 false, 1548 false, 1549 false, 1550 false, 1551 false, 1552 false, 1553 false, 1554 false, 1555 false, 1556 false, 1557 false, 1558 false, 1559 false, 1560 false, 1561 false, 1562 false, 1563 false, 1564 false, 1565 false, 1566 false, 1567 false, 1568 false, 1569 false, 1570 false, 1571 false, 1572 false, 1573 false, 1574 false, 1575 false, 1576 false, 1577 false, 1578 false, 1579 false, 1580 false, 1581 false, 1582 false, 1583 false, 1584 false, 1585 false, 1586 false, 1587 false, 1588 false, 1589 false, 1590 false, 1591 false, 1592 false, 1593 false, 1594 false, 1595 #endif 1596 1597 // Function name -> enum value recognizer code. 1598 #ifdef GET_FUNCTION_RECOGNIZER 1599 StringRef NameR(Name+6, Len-6); // Skip over 'llvm.' 1600 switch (Name[5]) { // Dispatch on first letter. 1601 default: break; 1602 case 'a': 1603 if (NameR.startswith("nnotation.")) return Intrinsic::annotation; 1604 switch (NameR.size()) { 1605 default: break; 1606 case 16: // 1 string to match. 1607 if (NameR.substr(0, 16) != "djust.trampoline") 1608 break; 1609 return Intrinsic::adjust_trampoline; // "djust.trampoline" 1610 } 1611 break; // end of 'a' case. 1612 case 'b': 1613 if (NameR.startswith("swap.")) return Intrinsic::bswap; 1614 break; // end of 'b' case. 1615 case 'c': 1616 if (NameR.startswith("onvertff.")) return Intrinsic::convertff; 1617 if (NameR.startswith("onvertfsi.")) return Intrinsic::convertfsi; 1618 if (NameR.startswith("onvertfui.")) return Intrinsic::convertfui; 1619 if (NameR.startswith("onvertsif.")) return Intrinsic::convertsif; 1620 if (NameR.startswith("onvertss.")) return Intrinsic::convertss; 1621 if (NameR.startswith("onvertsu.")) return Intrinsic::convertsu; 1622 if (NameR.startswith("onvertuif.")) return Intrinsic::convertuif; 1623 if (NameR.startswith("onvertus.")) return Intrinsic::convertus; 1624 if (NameR.startswith("onvertuu.")) return Intrinsic::convertuu; 1625 if (NameR.startswith("os.")) return Intrinsic::cos; 1626 if (NameR.startswith("tlz.")) return Intrinsic::ctlz; 1627 if (NameR.startswith("tpop.")) return Intrinsic::ctpop; 1628 if (NameR.startswith("ttz.")) return Intrinsic::cttz; 1629 switch (NameR.size()) { 1630 default: break; 1631 case 14: // 1 string to match. 1632 if (NameR.substr(0, 14) != "onvert.to.fp16") 1633 break; 1634 return Intrinsic::convert_to_fp16; // "onvert.to.fp16" 1635 case 16: // 1 string to match. 1636 if (NameR.substr(0, 16) != "onvert.from.fp16") 1637 break; 1638 return Intrinsic::convert_from_fp16; // "onvert.from.fp16" 1639 } 1640 break; // end of 'c' case. 1641 case 'd': 1642 switch (NameR.size()) { 1643 default: break; 1644 case 8: // 1 string to match. 1645 if (NameR.substr(0, 8) != "bg.value") 1646 break; 1647 return Intrinsic::dbg_value; // "bg.value" 1648 case 10: // 1 string to match. 1649 if (NameR.substr(0, 10) != "bg.declare") 1650 break; 1651 return Intrinsic::dbg_declare; // "bg.declare" 1652 } 1653 break; // end of 'd' case. 1654 case 'e': 1655 if (NameR.startswith("xp.")) return Intrinsic::exp; 1656 if (NameR.startswith("xp2.")) return Intrinsic::exp2; 1657 if (NameR.startswith("xpect.")) return Intrinsic::expect; 1658 switch (NameR.size()) { 1659 default: break; 1660 case 8: // 1 string to match. 1661 if (NameR.substr(0, 8) != "h.resume") 1662 break; 1663 return Intrinsic::eh_resume; // "h.resume" 1664 case 10: // 1 string to match. 1665 if (NameR.substr(0, 10) != "h.selector") 1666 break; 1667 return Intrinsic::eh_selector; // "h.selector" 1668 case 11: // 3 strings to match. 1669 if (NameR.substr(0, 2) != "h.") 1670 break; 1671 switch (NameR[2]) { 1672 default: break; 1673 case 'd': // 1 string to match. 1674 if (NameR.substr(3, 8) != "warf.cfa") 1675 break; 1676 return Intrinsic::eh_dwarf_cfa; // "h.dwarf.cfa" 1677 case 'e': // 1 string to match. 1678 if (NameR.substr(3, 8) != "xception") 1679 break; 1680 return Intrinsic::eh_exception; // "h.exception" 1681 case 's': // 1 string to match. 1682 if (NameR.substr(3, 8) != "jlj.lsda") 1683 break; 1684 return Intrinsic::eh_sjlj_lsda; // "h.sjlj.lsda" 1685 } 1686 break; 1687 case 12: // 3 strings to match. 1688 if (NameR.substr(0, 2) != "h.") 1689 break; 1690 switch (NameR[2]) { 1691 default: break; 1692 case 'r': // 2 strings to match. 1693 if (NameR.substr(3, 7) != "eturn.i") 1694 break; 1695 switch (NameR[10]) { 1696 default: break; 1697 case '3': // 1 string to match. 1698 if (NameR[11] != '2') 1699 break; 1700 return Intrinsic::eh_return_i32; // "h.return.i32" 1701 case '6': // 1 string to match. 1702 if (NameR[11] != '4') 1703 break; 1704 return Intrinsic::eh_return_i64; // "h.return.i64" 1705 } 1706 break; 1707 case 't': // 1 string to match. 1708 if (NameR.substr(3, 9) != "ypeid.for") 1709 break; 1710 return Intrinsic::eh_typeid_for; // "h.typeid.for" 1711 } 1712 break; 1713 case 13: // 2 strings to match. 1714 if (NameR.substr(0, 2) != "h.") 1715 break; 1716 switch (NameR[2]) { 1717 default: break; 1718 case 's': // 1 string to match. 1719 if (NameR.substr(3, 10) != "jlj.setjmp") 1720 break; 1721 return Intrinsic::eh_sjlj_setjmp; // "h.sjlj.setjmp" 1722 case 'u': // 1 string to match. 1723 if (NameR.substr(3, 10) != "nwind.init") 1724 break; 1725 return Intrinsic::eh_unwind_init; // "h.unwind.init" 1726 } 1727 break; 1728 case 14: // 1 string to match. 1729 if (NameR.substr(0, 14) != "h.sjlj.longjmp") 1730 break; 1731 return Intrinsic::eh_sjlj_longjmp; // "h.sjlj.longjmp" 1732 case 15: // 1 string to match. 1733 if (NameR.substr(0, 15) != "h.sjlj.callsite") 1734 break; 1735 return Intrinsic::eh_sjlj_callsite; // "h.sjlj.callsite" 1736 case 21: // 1 string to match. 1737 if (NameR.substr(0, 21) != "h.sjlj.dispatch.setup") 1738 break; 1739 return Intrinsic::eh_sjlj_dispatch_setup; // "h.sjlj.dispatch.setup" 1740 case 22: // 1 string to match. 1741 if (NameR.substr(0, 22) != "h.sjlj.functioncontext") 1742 break; 1743 return Intrinsic::eh_sjlj_functioncontext; // "h.sjlj.functioncontext" 1744 } 1745 break; // end of 'e' case. 1746 case 'f': 1747 if (NameR.startswith("ma.")) return Intrinsic::fma; 1748 switch (NameR.size()) { 1749 default: break; 1750 case 9: // 1 string to match. 1751 if (NameR.substr(0, 9) != "lt.rounds") 1752 break; 1753 return Intrinsic::flt_rounds; // "lt.rounds" 1754 case 11: // 1 string to match. 1755 if (NameR.substr(0, 11) != "rameaddress") 1756 break; 1757 return Intrinsic::frameaddress; // "rameaddress" 1758 } 1759 break; // end of 'f' case. 1760 case 'g': 1761 switch (NameR.size()) { 1762 default: break; 1763 case 5: // 2 strings to match. 1764 if (NameR.substr(0, 2) != "cr") 1765 break; 1766 switch (NameR[2]) { 1767 default: break; 1768 case 'e': // 1 string to match. 1769 if (NameR.substr(3, 2) != "ad") 1770 break; 1771 return Intrinsic::gcread; // "cread" 1772 case 'o': // 1 string to match. 1773 if (NameR.substr(3, 2) != "ot") 1774 break; 1775 return Intrinsic::gcroot; // "croot" 1776 } 1777 break; 1778 case 6: // 1 string to match. 1779 if (NameR.substr(0, 6) != "cwrite") 1780 break; 1781 return Intrinsic::gcwrite; // "cwrite" 1782 } 1783 break; // end of 'g' case. 1784 case 'i': 1785 switch (NameR.size()) { 1786 default: break; 1787 case 12: // 1 string to match. 1788 if (NameR.substr(0, 12) != "nvariant.end") 1789 break; 1790 return Intrinsic::invariant_end; // "nvariant.end" 1791 case 14: // 2 strings to match. 1792 if (NameR[0] != 'n') 1793 break; 1794 switch (NameR[1]) { 1795 default: break; 1796 case 'i': // 1 string to match. 1797 if (NameR.substr(2, 12) != "t.trampoline") 1798 break; 1799 return Intrinsic::init_trampoline; // "nit.trampoline" 1800 case 'v': // 1 string to match. 1801 if (NameR.substr(2, 12) != "ariant.start") 1802 break; 1803 return Intrinsic::invariant_start; // "nvariant.start" 1804 } 1805 break; 1806 } 1807 break; // end of 'i' case. 1808 case 'l': 1809 if (NameR.startswith("og.")) return Intrinsic::log; 1810 if (NameR.startswith("og10.")) return Intrinsic::log10; 1811 if (NameR.startswith("og2.")) return Intrinsic::log2; 1812 switch (NameR.size()) { 1813 default: break; 1814 case 6: // 1 string to match. 1815 if (NameR.substr(0, 6) != "ongjmp") 1816 break; 1817 return Intrinsic::longjmp; // "ongjmp" 1818 case 11: // 1 string to match. 1819 if (NameR.substr(0, 11) != "ifetime.end") 1820 break; 1821 return Intrinsic::lifetime_end; // "ifetime.end" 1822 case 13: // 1 string to match. 1823 if (NameR.substr(0, 13) != "ifetime.start") 1824 break; 1825 return Intrinsic::lifetime_start; // "ifetime.start" 1826 } 1827 break; // end of 'l' case. 1828 case 'm': 1829 if (NameR.startswith("emcpy.")) return Intrinsic::memcpy; 1830 if (NameR.startswith("emmove.")) return Intrinsic::memmove; 1831 if (NameR.startswith("emset.")) return Intrinsic::memset; 1832 break; // end of 'm' case. 1833 case 'o': 1834 if (NameR.startswith("bjectsize.")) return Intrinsic::objectsize; 1835 break; // end of 'o' case. 1836 case 'p': 1837 if (NameR.startswith("ow.")) return Intrinsic::pow; 1838 if (NameR.startswith("owi.")) return Intrinsic::powi; 1839 if (NameR.startswith("tr.annotation.")) return Intrinsic::ptr_annotation; 1840 switch (NameR.size()) { 1841 default: break; 1842 case 7: // 2 strings to match. 1843 switch (NameR[0]) { 1844 default: break; 1845 case 'c': // 1 string to match. 1846 if (NameR.substr(1, 6) != "marker") 1847 break; 1848 return Intrinsic::pcmarker; // "cmarker" 1849 case 'r': // 1 string to match. 1850 if (NameR.substr(1, 6) != "efetch") 1851 break; 1852 return Intrinsic::prefetch; // "refetch" 1853 } 1854 break; 1855 } 1856 break; // end of 'p' case. 1857 case 'r': 1858 switch (NameR.size()) { 1859 default: break; 1860 case 12: // 1 string to match. 1861 if (NameR.substr(0, 12) != "eturnaddress") 1862 break; 1863 return Intrinsic::returnaddress; // "eturnaddress" 1864 case 15: // 1 string to match. 1865 if (NameR.substr(0, 15) != "eadcyclecounter") 1866 break; 1867 return Intrinsic::readcyclecounter; // "eadcyclecounter" 1868 } 1869 break; // end of 'r' case. 1870 case 's': 1871 if (NameR.startswith("add.with.overflow.")) return Intrinsic::sadd_with_overflow; 1872 if (NameR.startswith("in.")) return Intrinsic::sin; 1873 if (NameR.startswith("mul.with.overflow.")) return Intrinsic::smul_with_overflow; 1874 if (NameR.startswith("qrt.")) return Intrinsic::sqrt; 1875 if (NameR.startswith("sub.with.overflow.")) return Intrinsic::ssub_with_overflow; 1876 switch (NameR.size()) { 1877 default: break; 1878 case 5: // 1 string to match. 1879 if (NameR.substr(0, 5) != "etjmp") 1880 break; 1881 return Intrinsic::setjmp; // "etjmp" 1882 case 8: // 2 strings to match. 1883 switch (NameR[0]) { 1884 default: break; 1885 case 'i': // 1 string to match. 1886 if (NameR.substr(1, 7) != "gsetjmp") 1887 break; 1888 return Intrinsic::sigsetjmp; // "igsetjmp" 1889 case 't': // 1 string to match. 1890 if (NameR.substr(1, 7) != "acksave") 1891 break; 1892 return Intrinsic::stacksave; // "tacksave" 1893 } 1894 break; 1895 case 9: // 1 string to match. 1896 if (NameR.substr(0, 9) != "iglongjmp") 1897 break; 1898 return Intrinsic::siglongjmp; // "iglongjmp" 1899 case 11: // 1 string to match. 1900 if (NameR.substr(0, 11) != "tackrestore") 1901 break; 1902 return Intrinsic::stackrestore; // "tackrestore" 1903 case 13: // 1 string to match. 1904 if (NameR.substr(0, 13) != "tackprotector") 1905 break; 1906 return Intrinsic::stackprotector; // "tackprotector" 1907 } 1908 break; // end of 's' case. 1909 case 't': 1910 switch (NameR.size()) { 1911 default: break; 1912 case 3: // 1 string to match. 1913 if (NameR.substr(0, 3) != "rap") 1914 break; 1915 return Intrinsic::trap; // "rap" 1916 } 1917 break; // end of 't' case. 1918 case 'u': 1919 if (NameR.startswith("add.with.overflow.")) return Intrinsic::uadd_with_overflow; 1920 if (NameR.startswith("mul.with.overflow.")) return Intrinsic::umul_with_overflow; 1921 if (NameR.startswith("sub.with.overflow.")) return Intrinsic::usub_with_overflow; 1922 break; // end of 'u' case. 1923 case 'v': 1924 switch (NameR.size()) { 1925 default: break; 1926 case 5: // 1 string to match. 1927 if (NameR.substr(0, 5) != "a_end") 1928 break; 1929 return Intrinsic::vaend; // "a_end" 1930 case 6: // 1 string to match. 1931 if (NameR.substr(0, 6) != "a_copy") 1932 break; 1933 return Intrinsic::vacopy; // "a_copy" 1934 case 7: // 1 string to match. 1935 if (NameR.substr(0, 7) != "a_start") 1936 break; 1937 return Intrinsic::vastart; // "a_start" 1938 case 13: // 1 string to match. 1939 if (NameR.substr(0, 13) != "ar.annotation") 1940 break; 1941 return Intrinsic::var_annotation; // "ar.annotation" 1942 } 1943 break; // end of 'v' case. 1944 case 'x': 1945 switch (NameR.size()) { 1946 default: break; 1947 case 6: // 1 string to match. 1948 if (NameR.substr(0, 6) != "86.int") 1949 break; 1950 return Intrinsic::x86_int; // "86.int" 1951 case 10: // 1 string to match. 1952 if (NameR.substr(0, 10) != "86.mmx.por") 1953 break; 1954 return Intrinsic::x86_mmx_por; // "86.mmx.por" 1955 case 11: // 3 strings to match. 1956 if (NameR.substr(0, 7) != "86.mmx.") 1957 break; 1958 switch (NameR[7]) { 1959 default: break; 1960 case 'e': // 1 string to match. 1961 if (NameR.substr(8, 3) != "mms") 1962 break; 1963 return Intrinsic::x86_mmx_emms; // "86.mmx.emms" 1964 case 'p': // 2 strings to match. 1965 switch (NameR[8]) { 1966 default: break; 1967 case 'a': // 1 string to match. 1968 if (NameR.substr(9, 2) != "nd") 1969 break; 1970 return Intrinsic::x86_mmx_pand; // "86.mmx.pand" 1971 case 'x': // 1 string to match. 1972 if (NameR.substr(9, 2) != "or") 1973 break; 1974 return Intrinsic::x86_mmx_pxor; // "86.mmx.pxor" 1975 } 1976 break; 1977 } 1978 break; 1979 case 12: // 2 strings to match. 1980 if (NameR.substr(0, 7) != "86.mmx.") 1981 break; 1982 switch (NameR[7]) { 1983 default: break; 1984 case 'f': // 1 string to match. 1985 if (NameR.substr(8, 4) != "emms") 1986 break; 1987 return Intrinsic::x86_mmx_femms; // "86.mmx.femms" 1988 case 'p': // 1 string to match. 1989 if (NameR.substr(8, 4) != "andn") 1990 break; 1991 return Intrinsic::x86_mmx_pandn; // "86.mmx.pandn" 1992 } 1993 break; 1994 case 13: // 34 strings to match. 1995 if (NameR.substr(0, 3) != "86.") 1996 break; 1997 switch (NameR[3]) { 1998 default: break; 1999 case 'm': // 18 strings to match. 2000 if (NameR.substr(4, 4) != "mx.p") 2001 break; 2002 switch (NameR[8]) { 2003 default: break; 2004 case 'a': // 6 strings to match. 2005 switch (NameR[9]) { 2006 default: break; 2007 case 'd': // 4 strings to match. 2008 if (NameR.substr(10, 2) != "d.") 2009 break; 2010 switch (NameR[12]) { 2011 default: break; 2012 case 'b': // 1 string to match. 2013 return Intrinsic::x86_mmx_padd_b; // "86.mmx.padd.b" 2014 case 'd': // 1 string to match. 2015 return Intrinsic::x86_mmx_padd_d; // "86.mmx.padd.d" 2016 case 'q': // 1 string to match. 2017 return Intrinsic::x86_mmx_padd_q; // "86.mmx.padd.q" 2018 case 'w': // 1 string to match. 2019 return Intrinsic::x86_mmx_padd_w; // "86.mmx.padd.w" 2020 } 2021 break; 2022 case 'v': // 2 strings to match. 2023 if (NameR.substr(10, 2) != "g.") 2024 break; 2025 switch (NameR[12]) { 2026 default: break; 2027 case 'b': // 1 string to match. 2028 return Intrinsic::x86_mmx_pavg_b; // "86.mmx.pavg.b" 2029 case 'w': // 1 string to match. 2030 return Intrinsic::x86_mmx_pavg_w; // "86.mmx.pavg.w" 2031 } 2032 break; 2033 } 2034 break; 2035 case 's': // 12 strings to match. 2036 switch (NameR[9]) { 2037 default: break; 2038 case 'l': // 3 strings to match. 2039 if (NameR.substr(10, 2) != "l.") 2040 break; 2041 switch (NameR[12]) { 2042 default: break; 2043 case 'd': // 1 string to match. 2044 return Intrinsic::x86_mmx_psll_d; // "86.mmx.psll.d" 2045 case 'q': // 1 string to match. 2046 return Intrinsic::x86_mmx_psll_q; // "86.mmx.psll.q" 2047 case 'w': // 1 string to match. 2048 return Intrinsic::x86_mmx_psll_w; // "86.mmx.psll.w" 2049 } 2050 break; 2051 case 'r': // 5 strings to match. 2052 switch (NameR[10]) { 2053 default: break; 2054 case 'a': // 2 strings to match. 2055 if (NameR[11] != '.') 2056 break; 2057 switch (NameR[12]) { 2058 default: break; 2059 case 'd': // 1 string to match. 2060 return Intrinsic::x86_mmx_psra_d; // "86.mmx.psra.d" 2061 case 'w': // 1 string to match. 2062 return Intrinsic::x86_mmx_psra_w; // "86.mmx.psra.w" 2063 } 2064 break; 2065 case 'l': // 3 strings to match. 2066 if (NameR[11] != '.') 2067 break; 2068 switch (NameR[12]) { 2069 default: break; 2070 case 'd': // 1 string to match. 2071 return Intrinsic::x86_mmx_psrl_d; // "86.mmx.psrl.d" 2072 case 'q': // 1 string to match. 2073 return Intrinsic::x86_mmx_psrl_q; // "86.mmx.psrl.q" 2074 case 'w': // 1 string to match. 2075 return Intrinsic::x86_mmx_psrl_w; // "86.mmx.psrl.w" 2076 } 2077 break; 2078 } 2079 break; 2080 case 'u': // 4 strings to match. 2081 if (NameR.substr(10, 2) != "b.") 2082 break; 2083 switch (NameR[12]) { 2084 default: break; 2085 case 'b': // 1 string to match. 2086 return Intrinsic::x86_mmx_psub_b; // "86.mmx.psub.b" 2087 case 'd': // 1 string to match. 2088 return Intrinsic::x86_mmx_psub_d; // "86.mmx.psub.d" 2089 case 'q': // 1 string to match. 2090 return Intrinsic::x86_mmx_psub_q; // "86.mmx.psub.q" 2091 case 'w': // 1 string to match. 2092 return Intrinsic::x86_mmx_psub_w; // "86.mmx.psub.w" 2093 } 2094 break; 2095 } 2096 break; 2097 } 2098 break; 2099 case 's': // 16 strings to match. 2100 if (NameR.substr(4, 2) != "se") 2101 break; 2102 switch (NameR[6]) { 2103 default: break; 2104 case '.': // 13 strings to match. 2105 switch (NameR[7]) { 2106 default: break; 2107 case 'a': // 1 string to match. 2108 if (NameR.substr(8, 5) != "dd.ss") 2109 break; 2110 return Intrinsic::x86_sse_add_ss; // "86.sse.add.ss" 2111 case 'c': // 2 strings to match. 2112 if (NameR.substr(8, 3) != "mp.") 2113 break; 2114 switch (NameR[11]) { 2115 default: break; 2116 case 'p': // 1 string to match. 2117 if (NameR[12] != 's') 2118 break; 2119 return Intrinsic::x86_sse_cmp_ps; // "86.sse.cmp.ps" 2120 case 's': // 1 string to match. 2121 if (NameR[12] != 's') 2122 break; 2123 return Intrinsic::x86_sse_cmp_ss; // "86.sse.cmp.ss" 2124 } 2125 break; 2126 case 'd': // 1 string to match. 2127 if (NameR.substr(8, 5) != "iv.ss") 2128 break; 2129 return Intrinsic::x86_sse_div_ss; // "86.sse.div.ss" 2130 case 'm': // 5 strings to match. 2131 switch (NameR[8]) { 2132 default: break; 2133 case 'a': // 2 strings to match. 2134 if (NameR.substr(9, 2) != "x.") 2135 break; 2136 switch (NameR[11]) { 2137 default: break; 2138 case 'p': // 1 string to match. 2139 if (NameR[12] != 's') 2140 break; 2141 return Intrinsic::x86_sse_max_ps; // "86.sse.max.ps" 2142 case 's': // 1 string to match. 2143 if (NameR[12] != 's') 2144 break; 2145 return Intrinsic::x86_sse_max_ss; // "86.sse.max.ss" 2146 } 2147 break; 2148 case 'i': // 2 strings to match. 2149 if (NameR.substr(9, 2) != "n.") 2150 break; 2151 switch (NameR[11]) { 2152 default: break; 2153 case 'p': // 1 string to match. 2154 if (NameR[12] != 's') 2155 break; 2156 return Intrinsic::x86_sse_min_ps; // "86.sse.min.ps" 2157 case 's': // 1 string to match. 2158 if (NameR[12] != 's') 2159 break; 2160 return Intrinsic::x86_sse_min_ss; // "86.sse.min.ss" 2161 } 2162 break; 2163 case 'u': // 1 string to match. 2164 if (NameR.substr(9, 4) != "l.ss") 2165 break; 2166 return Intrinsic::x86_sse_mul_ss; // "86.sse.mul.ss" 2167 } 2168 break; 2169 case 'r': // 2 strings to match. 2170 if (NameR.substr(8, 3) != "cp.") 2171 break; 2172 switch (NameR[11]) { 2173 default: break; 2174 case 'p': // 1 string to match. 2175 if (NameR[12] != 's') 2176 break; 2177 return Intrinsic::x86_sse_rcp_ps; // "86.sse.rcp.ps" 2178 case 's': // 1 string to match. 2179 if (NameR[12] != 's') 2180 break; 2181 return Intrinsic::x86_sse_rcp_ss; // "86.sse.rcp.ss" 2182 } 2183 break; 2184 case 's': // 2 strings to match. 2185 switch (NameR[8]) { 2186 default: break; 2187 case 'f': // 1 string to match. 2188 if (NameR.substr(9, 4) != "ence") 2189 break; 2190 return Intrinsic::x86_sse_sfence; // "86.sse.sfence" 2191 case 'u': // 1 string to match. 2192 if (NameR.substr(9, 4) != "b.ss") 2193 break; 2194 return Intrinsic::x86_sse_sub_ss; // "86.sse.sub.ss" 2195 } 2196 break; 2197 } 2198 break; 2199 case '3': // 1 string to match. 2200 if (NameR.substr(7, 6) != ".mwait") 2201 break; 2202 return Intrinsic::x86_sse3_mwait; // "86.sse3.mwait" 2203 case '4': // 2 strings to match. 2204 if (NameR.substr(7, 5) != "1.dpp") 2205 break; 2206 switch (NameR[12]) { 2207 default: break; 2208 case 'd': // 1 string to match. 2209 return Intrinsic::x86_sse41_dppd; // "86.sse41.dppd" 2210 case 's': // 1 string to match. 2211 return Intrinsic::x86_sse41_dpps; // "86.sse41.dpps" 2212 } 2213 break; 2214 } 2215 break; 2216 } 2217 break; 2218 case 14: // 58 strings to match. 2219 if (NameR.substr(0, 3) != "86.") 2220 break; 2221 switch (NameR[3]) { 2222 default: break; 2223 case '3': // 9 strings to match. 2224 if (NameR.substr(4, 6) != "dnow.p") 2225 break; 2226 switch (NameR[10]) { 2227 default: break; 2228 case 'f': // 8 strings to match. 2229 switch (NameR[11]) { 2230 default: break; 2231 case '2': // 1 string to match. 2232 if (NameR.substr(12, 2) != "id") 2233 break; 2234 return Intrinsic::x86_3dnow_pf2id; // "86.3dnow.pf2id" 2235 case 'a': // 2 strings to match. 2236 switch (NameR[12]) { 2237 default: break; 2238 case 'c': // 1 string to match. 2239 if (NameR[13] != 'c') 2240 break; 2241 return Intrinsic::x86_3dnow_pfacc; // "86.3dnow.pfacc" 2242 case 'd': // 1 string to match. 2243 if (NameR[13] != 'd') 2244 break; 2245 return Intrinsic::x86_3dnow_pfadd; // "86.3dnow.pfadd" 2246 } 2247 break; 2248 case 'm': // 3 strings to match. 2249 switch (NameR[12]) { 2250 default: break; 2251 case 'a': // 1 string to match. 2252 if (NameR[13] != 'x') 2253 break; 2254 return Intrinsic::x86_3dnow_pfmax; // "86.3dnow.pfmax" 2255 case 'i': // 1 string to match. 2256 if (NameR[13] != 'n') 2257 break; 2258 return Intrinsic::x86_3dnow_pfmin; // "86.3dnow.pfmin" 2259 case 'u': // 1 string to match. 2260 if (NameR[13] != 'l') 2261 break; 2262 return Intrinsic::x86_3dnow_pfmul; // "86.3dnow.pfmul" 2263 } 2264 break; 2265 case 'r': // 1 string to match. 2266 if (NameR.substr(12, 2) != "cp") 2267 break; 2268 return Intrinsic::x86_3dnow_pfrcp; // "86.3dnow.pfrcp" 2269 case 's': // 1 string to match. 2270 if (NameR.substr(12, 2) != "ub") 2271 break; 2272 return Intrinsic::x86_3dnow_pfsub; // "86.3dnow.pfsub" 2273 } 2274 break; 2275 case 'i': // 1 string to match. 2276 if (NameR.substr(11, 3) != "2fd") 2277 break; 2278 return Intrinsic::x86_3dnow_pi2fd; // "86.3dnow.pi2fd" 2279 } 2280 break; 2281 case 'm': // 21 strings to match. 2282 if (NameR.substr(4, 4) != "mx.p") 2283 break; 2284 switch (NameR[8]) { 2285 default: break; 2286 case 'a': // 2 strings to match. 2287 if (NameR.substr(9, 4) != "dds.") 2288 break; 2289 switch (NameR[13]) { 2290 default: break; 2291 case 'b': // 1 string to match. 2292 return Intrinsic::x86_mmx_padds_b; // "86.mmx.padds.b" 2293 case 'w': // 1 string to match. 2294 return Intrinsic::x86_mmx_padds_w; // "86.mmx.padds.w" 2295 } 2296 break; 2297 case 'e': // 1 string to match. 2298 if (NameR.substr(9, 5) != "xtr.w") 2299 break; 2300 return Intrinsic::x86_mmx_pextr_w; // "86.mmx.pextr.w" 2301 case 'i': // 1 string to match. 2302 if (NameR.substr(9, 5) != "nsr.w") 2303 break; 2304 return Intrinsic::x86_mmx_pinsr_w; // "86.mmx.pinsr.w" 2305 case 'm': // 6 strings to match. 2306 switch (NameR[9]) { 2307 default: break; 2308 case 'a': // 2 strings to match. 2309 if (NameR[10] != 'x') 2310 break; 2311 switch (NameR[11]) { 2312 default: break; 2313 case 's': // 1 string to match. 2314 if (NameR.substr(12, 2) != ".w") 2315 break; 2316 return Intrinsic::x86_mmx_pmaxs_w; // "86.mmx.pmaxs.w" 2317 case 'u': // 1 string to match. 2318 if (NameR.substr(12, 2) != ".b") 2319 break; 2320 return Intrinsic::x86_mmx_pmaxu_b; // "86.mmx.pmaxu.b" 2321 } 2322 break; 2323 case 'i': // 2 strings to match. 2324 if (NameR[10] != 'n') 2325 break; 2326 switch (NameR[11]) { 2327 default: break; 2328 case 's': // 1 string to match. 2329 if (NameR.substr(12, 2) != ".w") 2330 break; 2331 return Intrinsic::x86_mmx_pmins_w; // "86.mmx.pmins.w" 2332 case 'u': // 1 string to match. 2333 if (NameR.substr(12, 2) != ".b") 2334 break; 2335 return Intrinsic::x86_mmx_pminu_b; // "86.mmx.pminu.b" 2336 } 2337 break; 2338 case 'u': // 2 strings to match. 2339 if (NameR[10] != 'l') 2340 break; 2341 switch (NameR[11]) { 2342 default: break; 2343 case 'h': // 1 string to match. 2344 if (NameR.substr(12, 2) != ".w") 2345 break; 2346 return Intrinsic::x86_mmx_pmulh_w; // "86.mmx.pmulh.w" 2347 case 'l': // 1 string to match. 2348 if (NameR.substr(12, 2) != ".w") 2349 break; 2350 return Intrinsic::x86_mmx_pmull_w; // "86.mmx.pmull.w" 2351 } 2352 break; 2353 } 2354 break; 2355 case 's': // 11 strings to match. 2356 switch (NameR[9]) { 2357 default: break; 2358 case 'a': // 1 string to match. 2359 if (NameR.substr(10, 4) != "d.bw") 2360 break; 2361 return Intrinsic::x86_mmx_psad_bw; // "86.mmx.psad.bw" 2362 case 'l': // 3 strings to match. 2363 if (NameR.substr(10, 3) != "li.") 2364 break; 2365 switch (NameR[13]) { 2366 default: break; 2367 case 'd': // 1 string to match. 2368 return Intrinsic::x86_mmx_pslli_d; // "86.mmx.pslli.d" 2369 case 'q': // 1 string to match. 2370 return Intrinsic::x86_mmx_pslli_q; // "86.mmx.pslli.q" 2371 case 'w': // 1 string to match. 2372 return Intrinsic::x86_mmx_pslli_w; // "86.mmx.pslli.w" 2373 } 2374 break; 2375 case 'r': // 5 strings to match. 2376 switch (NameR[10]) { 2377 default: break; 2378 case 'a': // 2 strings to match. 2379 if (NameR.substr(11, 2) != "i.") 2380 break; 2381 switch (NameR[13]) { 2382 default: break; 2383 case 'd': // 1 string to match. 2384 return Intrinsic::x86_mmx_psrai_d; // "86.mmx.psrai.d" 2385 case 'w': // 1 string to match. 2386 return Intrinsic::x86_mmx_psrai_w; // "86.mmx.psrai.w" 2387 } 2388 break; 2389 case 'l': // 3 strings to match. 2390 if (NameR.substr(11, 2) != "i.") 2391 break; 2392 switch (NameR[13]) { 2393 default: break; 2394 case 'd': // 1 string to match. 2395 return Intrinsic::x86_mmx_psrli_d; // "86.mmx.psrli.d" 2396 case 'q': // 1 string to match. 2397 return Intrinsic::x86_mmx_psrli_q; // "86.mmx.psrli.q" 2398 case 'w': // 1 string to match. 2399 return Intrinsic::x86_mmx_psrli_w; // "86.mmx.psrli.w" 2400 } 2401 break; 2402 } 2403 break; 2404 case 'u': // 2 strings to match. 2405 if (NameR.substr(10, 3) != "bs.") 2406 break; 2407 switch (NameR[13]) { 2408 default: break; 2409 case 'b': // 1 string to match. 2410 return Intrinsic::x86_mmx_psubs_b; // "86.mmx.psubs.b" 2411 case 'w': // 1 string to match. 2412 return Intrinsic::x86_mmx_psubs_w; // "86.mmx.psubs.w" 2413 } 2414 break; 2415 } 2416 break; 2417 } 2418 break; 2419 case 's': // 28 strings to match. 2420 if (NameR.substr(4, 2) != "se") 2421 break; 2422 switch (NameR[6]) { 2423 default: break; 2424 case '.': // 5 strings to match. 2425 switch (NameR[7]) { 2426 default: break; 2427 case 'l': // 1 string to match. 2428 if (NameR.substr(8, 6) != "dmxcsr") 2429 break; 2430 return Intrinsic::x86_sse_ldmxcsr; // "86.sse.ldmxcsr" 2431 case 'p': // 1 string to match. 2432 if (NameR.substr(8, 6) != "shuf.w") 2433 break; 2434 return Intrinsic::x86_sse_pshuf_w; // "86.sse.pshuf.w" 2435 case 's': // 3 strings to match. 2436 switch (NameR[8]) { 2437 default: break; 2438 case 'q': // 2 strings to match. 2439 if (NameR.substr(9, 3) != "rt.") 2440 break; 2441 switch (NameR[12]) { 2442 default: break; 2443 case 'p': // 1 string to match. 2444 if (NameR[13] != 's') 2445 break; 2446 return Intrinsic::x86_sse_sqrt_ps; // "86.sse.sqrt.ps" 2447 case 's': // 1 string to match. 2448 if (NameR[13] != 's') 2449 break; 2450 return Intrinsic::x86_sse_sqrt_ss; // "86.sse.sqrt.ss" 2451 } 2452 break; 2453 case 't': // 1 string to match. 2454 if (NameR.substr(9, 5) != "mxcsr") 2455 break; 2456 return Intrinsic::x86_sse_stmxcsr; // "86.sse.stmxcsr" 2457 } 2458 break; 2459 } 2460 break; 2461 case '2': // 22 strings to match. 2462 if (NameR[7] != '.') 2463 break; 2464 switch (NameR[8]) { 2465 default: break; 2466 case 'a': // 1 string to match. 2467 if (NameR.substr(9, 5) != "dd.sd") 2468 break; 2469 return Intrinsic::x86_sse2_add_sd; // "86.sse2.add.sd" 2470 case 'c': // 2 strings to match. 2471 if (NameR.substr(9, 3) != "mp.") 2472 break; 2473 switch (NameR[12]) { 2474 default: break; 2475 case 'p': // 1 string to match. 2476 if (NameR[13] != 'd') 2477 break; 2478 return Intrinsic::x86_sse2_cmp_pd; // "86.sse2.cmp.pd" 2479 case 's': // 1 string to match. 2480 if (NameR[13] != 'd') 2481 break; 2482 return Intrinsic::x86_sse2_cmp_sd; // "86.sse2.cmp.sd" 2483 } 2484 break; 2485 case 'd': // 1 string to match. 2486 if (NameR.substr(9, 5) != "iv.sd") 2487 break; 2488 return Intrinsic::x86_sse2_div_sd; // "86.sse2.div.sd" 2489 case 'l': // 1 string to match. 2490 if (NameR.substr(9, 5) != "fence") 2491 break; 2492 return Intrinsic::x86_sse2_lfence; // "86.sse2.lfence" 2493 case 'm': // 6 strings to match. 2494 switch (NameR[9]) { 2495 default: break; 2496 case 'a': // 2 strings to match. 2497 if (NameR.substr(10, 2) != "x.") 2498 break; 2499 switch (NameR[12]) { 2500 default: break; 2501 case 'p': // 1 string to match. 2502 if (NameR[13] != 'd') 2503 break; 2504 return Intrinsic::x86_sse2_max_pd; // "86.sse2.max.pd" 2505 case 's': // 1 string to match. 2506 if (NameR[13] != 'd') 2507 break; 2508 return Intrinsic::x86_sse2_max_sd; // "86.sse2.max.sd" 2509 } 2510 break; 2511 case 'f': // 1 string to match. 2512 if (NameR.substr(10, 4) != "ence") 2513 break; 2514 return Intrinsic::x86_sse2_mfence; // "86.sse2.mfence" 2515 case 'i': // 2 strings to match. 2516 if (NameR.substr(10, 2) != "n.") 2517 break; 2518 switch (NameR[12]) { 2519 default: break; 2520 case 'p': // 1 string to match. 2521 if (NameR[13] != 'd') 2522 break; 2523 return Intrinsic::x86_sse2_min_pd; // "86.sse2.min.pd" 2524 case 's': // 1 string to match. 2525 if (NameR[13] != 'd') 2526 break; 2527 return Intrinsic::x86_sse2_min_sd; // "86.sse2.min.sd" 2528 } 2529 break; 2530 case 'u': // 1 string to match. 2531 if (NameR.substr(10, 4) != "l.sd") 2532 break; 2533 return Intrinsic::x86_sse2_mul_sd; // "86.sse2.mul.sd" 2534 } 2535 break; 2536 case 'p': // 10 strings to match. 2537 switch (NameR[9]) { 2538 default: break; 2539 case 'a': // 2 strings to match. 2540 if (NameR.substr(10, 3) != "vg.") 2541 break; 2542 switch (NameR[13]) { 2543 default: break; 2544 case 'b': // 1 string to match. 2545 return Intrinsic::x86_sse2_pavg_b; // "86.sse2.pavg.b" 2546 case 'w': // 1 string to match. 2547 return Intrinsic::x86_sse2_pavg_w; // "86.sse2.pavg.w" 2548 } 2549 break; 2550 case 's': // 8 strings to match. 2551 switch (NameR[10]) { 2552 default: break; 2553 case 'l': // 3 strings to match. 2554 if (NameR.substr(11, 2) != "l.") 2555 break; 2556 switch (NameR[13]) { 2557 default: break; 2558 case 'd': // 1 string to match. 2559 return Intrinsic::x86_sse2_psll_d; // "86.sse2.psll.d" 2560 case 'q': // 1 string to match. 2561 return Intrinsic::x86_sse2_psll_q; // "86.sse2.psll.q" 2562 case 'w': // 1 string to match. 2563 return Intrinsic::x86_sse2_psll_w; // "86.sse2.psll.w" 2564 } 2565 break; 2566 case 'r': // 5 strings to match. 2567 switch (NameR[11]) { 2568 default: break; 2569 case 'a': // 2 strings to match. 2570 if (NameR[12] != '.') 2571 break; 2572 switch (NameR[13]) { 2573 default: break; 2574 case 'd': // 1 string to match. 2575 return Intrinsic::x86_sse2_psra_d; // "86.sse2.psra.d" 2576 case 'w': // 1 string to match. 2577 return Intrinsic::x86_sse2_psra_w; // "86.sse2.psra.w" 2578 } 2579 break; 2580 case 'l': // 3 strings to match. 2581 if (NameR[12] != '.') 2582 break; 2583 switch (NameR[13]) { 2584 default: break; 2585 case 'd': // 1 string to match. 2586 return Intrinsic::x86_sse2_psrl_d; // "86.sse2.psrl.d" 2587 case 'q': // 1 string to match. 2588 return Intrinsic::x86_sse2_psrl_q; // "86.sse2.psrl.q" 2589 case 'w': // 1 string to match. 2590 return Intrinsic::x86_sse2_psrl_w; // "86.sse2.psrl.w" 2591 } 2592 break; 2593 } 2594 break; 2595 } 2596 break; 2597 } 2598 break; 2599 case 's': // 1 string to match. 2600 if (NameR.substr(9, 5) != "ub.sd") 2601 break; 2602 return Intrinsic::x86_sse2_sub_sd; // "86.sse2.sub.sd" 2603 } 2604 break; 2605 case '3': // 1 string to match. 2606 if (NameR.substr(7, 7) != ".ldu.dq") 2607 break; 2608 return Intrinsic::x86_sse3_ldu_dq; // "86.sse3.ldu.dq" 2609 } 2610 break; 2611 } 2612 break; 2613 case 15: // 79 strings to match. 2614 if (NameR.substr(0, 3) != "86.") 2615 break; 2616 switch (NameR[3]) { 2617 default: break; 2618 case '3': // 3 strings to match. 2619 if (NameR.substr(4, 4) != "dnow") 2620 break; 2621 switch (NameR[8]) { 2622 default: break; 2623 case '.': // 1 string to match. 2624 if (NameR.substr(9, 6) != "pfsubr") 2625 break; 2626 return Intrinsic::x86_3dnow_pfsubr; // "86.3dnow.pfsubr" 2627 case 'a': // 2 strings to match. 2628 if (NameR.substr(9, 2) != ".p") 2629 break; 2630 switch (NameR[11]) { 2631 default: break; 2632 case 'f': // 1 string to match. 2633 if (NameR.substr(12, 3) != "2iw") 2634 break; 2635 return Intrinsic::x86_3dnowa_pf2iw; // "86.3dnowa.pf2iw" 2636 case 'i': // 1 string to match. 2637 if (NameR.substr(12, 3) != "2fw") 2638 break; 2639 return Intrinsic::x86_3dnowa_pi2fw; // "86.3dnowa.pi2fw" 2640 } 2641 break; 2642 } 2643 break; 2644 case 'a': // 4 strings to match. 2645 switch (NameR[4]) { 2646 default: break; 2647 case 'e': // 3 strings to match. 2648 if (NameR.substr(5, 7) != "sni.aes") 2649 break; 2650 switch (NameR[12]) { 2651 default: break; 2652 case 'd': // 1 string to match. 2653 if (NameR.substr(13, 2) != "ec") 2654 break; 2655 return Intrinsic::x86_aesni_aesdec; // "86.aesni.aesdec" 2656 case 'e': // 1 string to match. 2657 if (NameR.substr(13, 2) != "nc") 2658 break; 2659 return Intrinsic::x86_aesni_aesenc; // "86.aesni.aesenc" 2660 case 'i': // 1 string to match. 2661 if (NameR.substr(13, 2) != "mc") 2662 break; 2663 return Intrinsic::x86_aesni_aesimc; // "86.aesni.aesimc" 2664 } 2665 break; 2666 case 'v': // 1 string to match. 2667 if (NameR.substr(5, 10) != "x.vzeroall") 2668 break; 2669 return Intrinsic::x86_avx_vzeroall; // "86.avx.vzeroall" 2670 } 2671 break; 2672 case 'm': // 19 strings to match. 2673 if (NameR.substr(4, 3) != "mx.") 2674 break; 2675 switch (NameR[7]) { 2676 default: break; 2677 case 'm': // 2 strings to match. 2678 switch (NameR[8]) { 2679 default: break; 2680 case 'a': // 1 string to match. 2681 if (NameR.substr(9, 6) != "skmovq") 2682 break; 2683 return Intrinsic::x86_mmx_maskmovq; // "86.mmx.maskmovq" 2684 case 'o': // 1 string to match. 2685 if (NameR.substr(9, 6) != "vnt.dq") 2686 break; 2687 return Intrinsic::x86_mmx_movnt_dq; // "86.mmx.movnt.dq" 2688 } 2689 break; 2690 case 'p': // 17 strings to match. 2691 switch (NameR[8]) { 2692 default: break; 2693 case 'a': // 5 strings to match. 2694 switch (NameR[9]) { 2695 default: break; 2696 case 'c': // 3 strings to match. 2697 if (NameR[10] != 'k') 2698 break; 2699 switch (NameR[11]) { 2700 default: break; 2701 case 's': // 2 strings to match. 2702 if (NameR[12] != 's') 2703 break; 2704 switch (NameR[13]) { 2705 default: break; 2706 case 'd': // 1 string to match. 2707 if (NameR[14] != 'w') 2708 break; 2709 return Intrinsic::x86_mmx_packssdw; // "86.mmx.packssdw" 2710 case 'w': // 1 string to match. 2711 if (NameR[14] != 'b') 2712 break; 2713 return Intrinsic::x86_mmx_packsswb; // "86.mmx.packsswb" 2714 } 2715 break; 2716 case 'u': // 1 string to match. 2717 if (NameR.substr(12, 3) != "swb") 2718 break; 2719 return Intrinsic::x86_mmx_packuswb; // "86.mmx.packuswb" 2720 } 2721 break; 2722 case 'd': // 2 strings to match. 2723 if (NameR.substr(10, 4) != "dus.") 2724 break; 2725 switch (NameR[14]) { 2726 default: break; 2727 case 'b': // 1 string to match. 2728 return Intrinsic::x86_mmx_paddus_b; // "86.mmx.paddus.b" 2729 case 'w': // 1 string to match. 2730 return Intrinsic::x86_mmx_paddus_w; // "86.mmx.paddus.w" 2731 } 2732 break; 2733 } 2734 break; 2735 case 'c': // 6 strings to match. 2736 if (NameR.substr(9, 2) != "mp") 2737 break; 2738 switch (NameR[11]) { 2739 default: break; 2740 case 'e': // 3 strings to match. 2741 if (NameR.substr(12, 2) != "q.") 2742 break; 2743 switch (NameR[14]) { 2744 default: break; 2745 case 'b': // 1 string to match. 2746 return Intrinsic::x86_mmx_pcmpeq_b; // "86.mmx.pcmpeq.b" 2747 case 'd': // 1 string to match. 2748 return Intrinsic::x86_mmx_pcmpeq_d; // "86.mmx.pcmpeq.d" 2749 case 'w': // 1 string to match. 2750 return Intrinsic::x86_mmx_pcmpeq_w; // "86.mmx.pcmpeq.w" 2751 } 2752 break; 2753 case 'g': // 3 strings to match. 2754 if (NameR.substr(12, 2) != "t.") 2755 break; 2756 switch (NameR[14]) { 2757 default: break; 2758 case 'b': // 1 string to match. 2759 return Intrinsic::x86_mmx_pcmpgt_b; // "86.mmx.pcmpgt.b" 2760 case 'd': // 1 string to match. 2761 return Intrinsic::x86_mmx_pcmpgt_d; // "86.mmx.pcmpgt.d" 2762 case 'w': // 1 string to match. 2763 return Intrinsic::x86_mmx_pcmpgt_w; // "86.mmx.pcmpgt.w" 2764 } 2765 break; 2766 } 2767 break; 2768 case 'm': // 4 strings to match. 2769 switch (NameR[9]) { 2770 default: break; 2771 case 'a': // 1 string to match. 2772 if (NameR.substr(10, 5) != "dd.wd") 2773 break; 2774 return Intrinsic::x86_mmx_pmadd_wd; // "86.mmx.pmadd.wd" 2775 case 'o': // 1 string to match. 2776 if (NameR.substr(10, 5) != "vmskb") 2777 break; 2778 return Intrinsic::x86_mmx_pmovmskb; // "86.mmx.pmovmskb" 2779 case 'u': // 2 strings to match. 2780 if (NameR[10] != 'l') 2781 break; 2782 switch (NameR[11]) { 2783 default: break; 2784 case 'h': // 1 string to match. 2785 if (NameR.substr(12, 3) != "u.w") 2786 break; 2787 return Intrinsic::x86_mmx_pmulhu_w; // "86.mmx.pmulhu.w" 2788 case 'u': // 1 string to match. 2789 if (NameR.substr(12, 3) != ".dq") 2790 break; 2791 return Intrinsic::x86_mmx_pmulu_dq; // "86.mmx.pmulu.dq" 2792 } 2793 break; 2794 } 2795 break; 2796 case 's': // 2 strings to match. 2797 if (NameR.substr(9, 5) != "ubus.") 2798 break; 2799 switch (NameR[14]) { 2800 default: break; 2801 case 'b': // 1 string to match. 2802 return Intrinsic::x86_mmx_psubus_b; // "86.mmx.psubus.b" 2803 case 'w': // 1 string to match. 2804 return Intrinsic::x86_mmx_psubus_w; // "86.mmx.psubus.w" 2805 } 2806 break; 2807 } 2808 break; 2809 } 2810 break; 2811 case 's': // 53 strings to match. 2812 if (NameR[4] != 's') 2813 break; 2814 switch (NameR[5]) { 2815 default: break; 2816 case 'e': // 50 strings to match. 2817 switch (NameR[6]) { 2818 default: break; 2819 case '.': // 8 strings to match. 2820 switch (NameR[7]) { 2821 default: break; 2822 case 'c': // 6 strings to match. 2823 if (NameR.substr(8, 2) != "vt") 2824 break; 2825 switch (NameR[10]) { 2826 default: break; 2827 case 'p': // 4 strings to match. 2828 switch (NameR[11]) { 2829 default: break; 2830 case 'd': // 1 string to match. 2831 if (NameR.substr(12, 3) != "2pi") 2832 break; 2833 return Intrinsic::x86_sse_cvtpd2pi; // "86.sse.cvtpd2pi" 2834 case 'i': // 2 strings to match. 2835 if (NameR.substr(12, 2) != "2p") 2836 break; 2837 switch (NameR[14]) { 2838 default: break; 2839 case 'd': // 1 string to match. 2840 return Intrinsic::x86_sse_cvtpi2pd; // "86.sse.cvtpi2pd" 2841 case 's': // 1 string to match. 2842 return Intrinsic::x86_sse_cvtpi2ps; // "86.sse.cvtpi2ps" 2843 } 2844 break; 2845 case 's': // 1 string to match. 2846 if (NameR.substr(12, 3) != "2pi") 2847 break; 2848 return Intrinsic::x86_sse_cvtps2pi; // "86.sse.cvtps2pi" 2849 } 2850 break; 2851 case 's': // 2 strings to match. 2852 switch (NameR[11]) { 2853 default: break; 2854 case 'i': // 1 string to match. 2855 if (NameR.substr(12, 3) != "2ss") 2856 break; 2857 return Intrinsic::x86_sse_cvtsi2ss; // "86.sse.cvtsi2ss" 2858 case 's': // 1 string to match. 2859 if (NameR.substr(12, 3) != "2si") 2860 break; 2861 return Intrinsic::x86_sse_cvtss2si; // "86.sse.cvtss2si" 2862 } 2863 break; 2864 } 2865 break; 2866 case 'r': // 2 strings to match. 2867 if (NameR.substr(8, 5) != "sqrt.") 2868 break; 2869 switch (NameR[13]) { 2870 default: break; 2871 case 'p': // 1 string to match. 2872 if (NameR[14] != 's') 2873 break; 2874 return Intrinsic::x86_sse_rsqrt_ps; // "86.sse.rsqrt.ps" 2875 case 's': // 1 string to match. 2876 if (NameR[14] != 's') 2877 break; 2878 return Intrinsic::x86_sse_rsqrt_ss; // "86.sse.rsqrt.ss" 2879 } 2880 break; 2881 } 2882 break; 2883 case '2': // 23 strings to match. 2884 if (NameR[7] != '.') 2885 break; 2886 switch (NameR[8]) { 2887 default: break; 2888 case 'c': // 1 string to match. 2889 if (NameR.substr(9, 6) != "lflush") 2890 break; 2891 return Intrinsic::x86_sse2_clflush; // "86.sse2.clflush" 2892 case 'p': // 20 strings to match. 2893 switch (NameR[9]) { 2894 default: break; 2895 case 'a': // 2 strings to match. 2896 if (NameR.substr(10, 4) != "dds.") 2897 break; 2898 switch (NameR[14]) { 2899 default: break; 2900 case 'b': // 1 string to match. 2901 return Intrinsic::x86_sse2_padds_b; // "86.sse2.padds.b" 2902 case 'w': // 1 string to match. 2903 return Intrinsic::x86_sse2_padds_w; // "86.sse2.padds.w" 2904 } 2905 break; 2906 case 'm': // 5 strings to match. 2907 switch (NameR[10]) { 2908 default: break; 2909 case 'a': // 2 strings to match. 2910 if (NameR[11] != 'x') 2911 break; 2912 switch (NameR[12]) { 2913 default: break; 2914 case 's': // 1 string to match. 2915 if (NameR.substr(13, 2) != ".w") 2916 break; 2917 return Intrinsic::x86_sse2_pmaxs_w; // "86.sse2.pmaxs.w" 2918 case 'u': // 1 string to match. 2919 if (NameR.substr(13, 2) != ".b") 2920 break; 2921 return Intrinsic::x86_sse2_pmaxu_b; // "86.sse2.pmaxu.b" 2922 } 2923 break; 2924 case 'i': // 2 strings to match. 2925 if (NameR[11] != 'n') 2926 break; 2927 switch (NameR[12]) { 2928 default: break; 2929 case 's': // 1 string to match. 2930 if (NameR.substr(13, 2) != ".w") 2931 break; 2932 return Intrinsic::x86_sse2_pmins_w; // "86.sse2.pmins.w" 2933 case 'u': // 1 string to match. 2934 if (NameR.substr(13, 2) != ".b") 2935 break; 2936 return Intrinsic::x86_sse2_pminu_b; // "86.sse2.pminu.b" 2937 } 2938 break; 2939 case 'u': // 1 string to match. 2940 if (NameR.substr(11, 4) != "lh.w") 2941 break; 2942 return Intrinsic::x86_sse2_pmulh_w; // "86.sse2.pmulh.w" 2943 } 2944 break; 2945 case 's': // 13 strings to match. 2946 switch (NameR[10]) { 2947 default: break; 2948 case 'a': // 1 string to match. 2949 if (NameR.substr(11, 4) != "d.bw") 2950 break; 2951 return Intrinsic::x86_sse2_psad_bw; // "86.sse2.psad.bw" 2952 case 'l': // 4 strings to match. 2953 if (NameR[11] != 'l') 2954 break; 2955 switch (NameR[12]) { 2956 default: break; 2957 case '.': // 1 string to match. 2958 if (NameR.substr(13, 2) != "dq") 2959 break; 2960 return Intrinsic::x86_sse2_psll_dq; // "86.sse2.psll.dq" 2961 case 'i': // 3 strings to match. 2962 if (NameR[13] != '.') 2963 break; 2964 switch (NameR[14]) { 2965 default: break; 2966 case 'd': // 1 string to match. 2967 return Intrinsic::x86_sse2_pslli_d; // "86.sse2.pslli.d" 2968 case 'q': // 1 string to match. 2969 return Intrinsic::x86_sse2_pslli_q; // "86.sse2.pslli.q" 2970 case 'w': // 1 string to match. 2971 return Intrinsic::x86_sse2_pslli_w; // "86.sse2.pslli.w" 2972 } 2973 break; 2974 } 2975 break; 2976 case 'r': // 6 strings to match. 2977 switch (NameR[11]) { 2978 default: break; 2979 case 'a': // 2 strings to match. 2980 if (NameR.substr(12, 2) != "i.") 2981 break; 2982 switch (NameR[14]) { 2983 default: break; 2984 case 'd': // 1 string to match. 2985 return Intrinsic::x86_sse2_psrai_d; // "86.sse2.psrai.d" 2986 case 'w': // 1 string to match. 2987 return Intrinsic::x86_sse2_psrai_w; // "86.sse2.psrai.w" 2988 } 2989 break; 2990 case 'l': // 4 strings to match. 2991 switch (NameR[12]) { 2992 default: break; 2993 case '.': // 1 string to match. 2994 if (NameR.substr(13, 2) != "dq") 2995 break; 2996 return Intrinsic::x86_sse2_psrl_dq; // "86.sse2.psrl.dq" 2997 case 'i': // 3 strings to match. 2998 if (NameR[13] != '.') 2999 break; 3000 switch (NameR[14]) { 3001 default: break; 3002 case 'd': // 1 string to match. 3003 return Intrinsic::x86_sse2_psrli_d; // "86.sse2.psrli.d" 3004 case 'q': // 1 string to match. 3005 return Intrinsic::x86_sse2_psrli_q; // "86.sse2.psrli.q" 3006 case 'w': // 1 string to match. 3007 return Intrinsic::x86_sse2_psrli_w; // "86.sse2.psrli.w" 3008 } 3009 break; 3010 } 3011 break; 3012 } 3013 break; 3014 case 'u': // 2 strings to match. 3015 if (NameR.substr(11, 3) != "bs.") 3016 break; 3017 switch (NameR[14]) { 3018 default: break; 3019 case 'b': // 1 string to match. 3020 return Intrinsic::x86_sse2_psubs_b; // "86.sse2.psubs.b" 3021 case 'w': // 1 string to match. 3022 return Intrinsic::x86_sse2_psubs_w; // "86.sse2.psubs.w" 3023 } 3024 break; 3025 } 3026 break; 3027 } 3028 break; 3029 case 's': // 2 strings to match. 3030 if (NameR.substr(9, 4) != "qrt.") 3031 break; 3032 switch (NameR[13]) { 3033 default: break; 3034 case 'p': // 1 string to match. 3035 if (NameR[14] != 'd') 3036 break; 3037 return Intrinsic::x86_sse2_sqrt_pd; // "86.sse2.sqrt.pd" 3038 case 's': // 1 string to match. 3039 if (NameR[14] != 'd') 3040 break; 3041 return Intrinsic::x86_sse2_sqrt_sd; // "86.sse2.sqrt.sd" 3042 } 3043 break; 3044 } 3045 break; 3046 case '3': // 5 strings to match. 3047 if (NameR[7] != '.') 3048 break; 3049 switch (NameR[8]) { 3050 default: break; 3051 case 'h': // 4 strings to match. 3052 switch (NameR[9]) { 3053 default: break; 3054 case 'a': // 2 strings to match. 3055 if (NameR.substr(10, 4) != "dd.p") 3056 break; 3057 switch (NameR[14]) { 3058 default: break; 3059 case 'd': // 1 string to match. 3060 return Intrinsic::x86_sse3_hadd_pd; // "86.sse3.hadd.pd" 3061 case 's': // 1 string to match. 3062 return Intrinsic::x86_sse3_hadd_ps; // "86.sse3.hadd.ps" 3063 } 3064 break; 3065 case 's': // 2 strings to match. 3066 if (NameR.substr(10, 4) != "ub.p") 3067 break; 3068 switch (NameR[14]) { 3069 default: break; 3070 case 'd': // 1 string to match. 3071 return Intrinsic::x86_sse3_hsub_pd; // "86.sse3.hsub.pd" 3072 case 's': // 1 string to match. 3073 return Intrinsic::x86_sse3_hsub_ps; // "86.sse3.hsub.ps" 3074 } 3075 break; 3076 } 3077 break; 3078 case 'm': // 1 string to match. 3079 if (NameR.substr(9, 6) != "onitor") 3080 break; 3081 return Intrinsic::x86_sse3_monitor; // "86.sse3.monitor" 3082 } 3083 break; 3084 case '4': // 14 strings to match. 3085 if (NameR.substr(7, 3) != "1.p") 3086 break; 3087 switch (NameR[10]) { 3088 default: break; 3089 case 'e': // 3 strings to match. 3090 if (NameR.substr(11, 3) != "xtr") 3091 break; 3092 switch (NameR[14]) { 3093 default: break; 3094 case 'b': // 1 string to match. 3095 return Intrinsic::x86_sse41_pextrb; // "86.sse41.pextrb" 3096 case 'd': // 1 string to match. 3097 return Intrinsic::x86_sse41_pextrd; // "86.sse41.pextrd" 3098 case 'q': // 1 string to match. 3099 return Intrinsic::x86_sse41_pextrq; // "86.sse41.pextrq" 3100 } 3101 break; 3102 case 'm': // 9 strings to match. 3103 switch (NameR[11]) { 3104 default: break; 3105 case 'a': // 4 strings to match. 3106 if (NameR[12] != 'x') 3107 break; 3108 switch (NameR[13]) { 3109 default: break; 3110 case 's': // 2 strings to match. 3111 switch (NameR[14]) { 3112 default: break; 3113 case 'b': // 1 string to match. 3114 return Intrinsic::x86_sse41_pmaxsb; // "86.sse41.pmaxsb" 3115 case 'd': // 1 string to match. 3116 return Intrinsic::x86_sse41_pmaxsd; // "86.sse41.pmaxsd" 3117 } 3118 break; 3119 case 'u': // 2 strings to match. 3120 switch (NameR[14]) { 3121 default: break; 3122 case 'd': // 1 string to match. 3123 return Intrinsic::x86_sse41_pmaxud; // "86.sse41.pmaxud" 3124 case 'w': // 1 string to match. 3125 return Intrinsic::x86_sse41_pmaxuw; // "86.sse41.pmaxuw" 3126 } 3127 break; 3128 } 3129 break; 3130 case 'i': // 4 strings to match. 3131 if (NameR[12] != 'n') 3132 break; 3133 switch (NameR[13]) { 3134 default: break; 3135 case 's': // 2 strings to match. 3136 switch (NameR[14]) { 3137 default: break; 3138 case 'b': // 1 string to match. 3139 return Intrinsic::x86_sse41_pminsb; // "86.sse41.pminsb" 3140 case 'd': // 1 string to match. 3141 return Intrinsic::x86_sse41_pminsd; // "86.sse41.pminsd" 3142 } 3143 break; 3144 case 'u': // 2 strings to match. 3145 switch (NameR[14]) { 3146 default: break; 3147 case 'd': // 1 string to match. 3148 return Intrinsic::x86_sse41_pminud; // "86.sse41.pminud" 3149 case 'w': // 1 string to match. 3150 return Intrinsic::x86_sse41_pminuw; // "86.sse41.pminuw" 3151 } 3152 break; 3153 } 3154 break; 3155 case 'u': // 1 string to match. 3156 if (NameR.substr(12, 3) != "ldq") 3157 break; 3158 return Intrinsic::x86_sse41_pmuldq; // "86.sse41.pmuldq" 3159 } 3160 break; 3161 case 't': // 2 strings to match. 3162 if (NameR.substr(11, 3) != "est") 3163 break; 3164 switch (NameR[14]) { 3165 default: break; 3166 case 'c': // 1 string to match. 3167 return Intrinsic::x86_sse41_ptestc; // "86.sse41.ptestc" 3168 case 'z': // 1 string to match. 3169 return Intrinsic::x86_sse41_ptestz; // "86.sse41.ptestz" 3170 } 3171 break; 3172 } 3173 break; 3174 } 3175 break; 3176 case 's': // 3 strings to match. 3177 if (NameR.substr(6, 8) != "e3.pabs.") 3178 break; 3179 switch (NameR[14]) { 3180 default: break; 3181 case 'b': // 1 string to match. 3182 return Intrinsic::x86_ssse3_pabs_b; // "86.ssse3.pabs.b" 3183 case 'd': // 1 string to match. 3184 return Intrinsic::x86_ssse3_pabs_d; // "86.ssse3.pabs.d" 3185 case 'w': // 1 string to match. 3186 return Intrinsic::x86_ssse3_pabs_w; // "86.ssse3.pabs.w" 3187 } 3188 break; 3189 } 3190 break; 3191 } 3192 break; 3193 case 16: // 67 strings to match. 3194 if (NameR.substr(0, 3) != "86.") 3195 break; 3196 switch (NameR[3]) { 3197 default: break; 3198 case '3': // 8 strings to match. 3199 if (NameR.substr(4, 4) != "dnow") 3200 break; 3201 switch (NameR[8]) { 3202 default: break; 3203 case '.': // 6 strings to match. 3204 if (NameR[9] != 'p') 3205 break; 3206 switch (NameR[10]) { 3207 default: break; 3208 case 'a': // 1 string to match. 3209 if (NameR.substr(11, 5) != "vgusb") 3210 break; 3211 return Intrinsic::x86_3dnow_pavgusb; // "86.3dnow.pavgusb" 3212 case 'f': // 4 strings to match. 3213 switch (NameR[11]) { 3214 default: break; 3215 case 'c': // 3 strings to match. 3216 if (NameR.substr(12, 2) != "mp") 3217 break; 3218 switch (NameR[14]) { 3219 default: break; 3220 case 'e': // 1 string to match. 3221 if (NameR[15] != 'q') 3222 break; 3223 return Intrinsic::x86_3dnow_pfcmpeq; // "86.3dnow.pfcmpeq" 3224 case 'g': // 2 strings to match. 3225 switch (NameR[15]) { 3226 default: break; 3227 case 'e': // 1 string to match. 3228 return Intrinsic::x86_3dnow_pfcmpge; // "86.3dnow.pfcmpge" 3229 case 't': // 1 string to match. 3230 return Intrinsic::x86_3dnow_pfcmpgt; // "86.3dnow.pfcmpgt" 3231 } 3232 break; 3233 } 3234 break; 3235 case 'r': // 1 string to match. 3236 if (NameR.substr(12, 4) != "sqrt") 3237 break; 3238 return Intrinsic::x86_3dnow_pfrsqrt; // "86.3dnow.pfrsqrt" 3239 } 3240 break; 3241 case 'm': // 1 string to match. 3242 if (NameR.substr(11, 5) != "ulhrw") 3243 break; 3244 return Intrinsic::x86_3dnow_pmulhrw; // "86.3dnow.pmulhrw" 3245 } 3246 break; 3247 case 'a': // 2 strings to match. 3248 if (NameR.substr(9, 2) != ".p") 3249 break; 3250 switch (NameR[11]) { 3251 default: break; 3252 case 'f': // 1 string to match. 3253 if (NameR.substr(12, 4) != "nacc") 3254 break; 3255 return Intrinsic::x86_3dnowa_pfnacc; // "86.3dnowa.pfnacc" 3256 case 's': // 1 string to match. 3257 if (NameR.substr(12, 4) != "wapd") 3258 break; 3259 return Intrinsic::x86_3dnowa_pswapd; // "86.3dnowa.pswapd" 3260 } 3261 break; 3262 } 3263 break; 3264 case 'a': // 5 strings to match. 3265 if (NameR.substr(4, 3) != "vx.") 3266 break; 3267 switch (NameR[7]) { 3268 default: break; 3269 case 'd': // 1 string to match. 3270 if (NameR.substr(8, 8) != "p.ps.256") 3271 break; 3272 return Intrinsic::x86_avx_dp_ps_256; // "86.avx.dp.ps.256" 3273 case 'v': // 4 strings to match. 3274 if (NameR.substr(8, 4) != "test") 3275 break; 3276 switch (NameR[12]) { 3277 default: break; 3278 case 'c': // 2 strings to match. 3279 if (NameR.substr(13, 2) != ".p") 3280 break; 3281 switch (NameR[15]) { 3282 default: break; 3283 case 'd': // 1 string to match. 3284 return Intrinsic::x86_avx_vtestc_pd; // "86.avx.vtestc.pd" 3285 case 's': // 1 string to match. 3286 return Intrinsic::x86_avx_vtestc_ps; // "86.avx.vtestc.ps" 3287 } 3288 break; 3289 case 'z': // 2 strings to match. 3290 if (NameR.substr(13, 2) != ".p") 3291 break; 3292 switch (NameR[15]) { 3293 default: break; 3294 case 'd': // 1 string to match. 3295 return Intrinsic::x86_avx_vtestz_pd; // "86.avx.vtestz.pd" 3296 case 's': // 1 string to match. 3297 return Intrinsic::x86_avx_vtestz_ps; // "86.avx.vtestz.ps" 3298 } 3299 break; 3300 } 3301 break; 3302 } 3303 break; 3304 case 'm': // 7 strings to match. 3305 if (NameR.substr(4, 4) != "mx.p") 3306 break; 3307 switch (NameR[8]) { 3308 default: break; 3309 case 'a': // 1 string to match. 3310 if (NameR.substr(9, 7) != "lignr.b") 3311 break; 3312 return Intrinsic::x86_mmx_palignr_b; // "86.mmx.palignr.b" 3313 case 'u': // 6 strings to match. 3314 if (NameR.substr(9, 4) != "npck") 3315 break; 3316 switch (NameR[13]) { 3317 default: break; 3318 case 'h': // 3 strings to match. 3319 switch (NameR[14]) { 3320 default: break; 3321 case 'b': // 1 string to match. 3322 if (NameR[15] != 'w') 3323 break; 3324 return Intrinsic::x86_mmx_punpckhbw; // "86.mmx.punpckhbw" 3325 case 'd': // 1 string to match. 3326 if (NameR[15] != 'q') 3327 break; 3328 return Intrinsic::x86_mmx_punpckhdq; // "86.mmx.punpckhdq" 3329 case 'w': // 1 string to match. 3330 if (NameR[15] != 'd') 3331 break; 3332 return Intrinsic::x86_mmx_punpckhwd; // "86.mmx.punpckhwd" 3333 } 3334 break; 3335 case 'l': // 3 strings to match. 3336 switch (NameR[14]) { 3337 default: break; 3338 case 'b': // 1 string to match. 3339 if (NameR[15] != 'w') 3340 break; 3341 return Intrinsic::x86_mmx_punpcklbw; // "86.mmx.punpcklbw" 3342 case 'd': // 1 string to match. 3343 if (NameR[15] != 'q') 3344 break; 3345 return Intrinsic::x86_mmx_punpckldq; // "86.mmx.punpckldq" 3346 case 'w': // 1 string to match. 3347 if (NameR[15] != 'd') 3348 break; 3349 return Intrinsic::x86_mmx_punpcklwd; // "86.mmx.punpcklwd" 3350 } 3351 break; 3352 } 3353 break; 3354 } 3355 break; 3356 case 's': // 47 strings to match. 3357 if (NameR[4] != 's') 3358 break; 3359 switch (NameR[5]) { 3360 default: break; 3361 case 'e': // 39 strings to match. 3362 switch (NameR[6]) { 3363 default: break; 3364 case '.': // 10 strings to match. 3365 switch (NameR[7]) { 3366 default: break; 3367 case 'c': // 8 strings to match. 3368 switch (NameR[8]) { 3369 default: break; 3370 case 'o': // 5 strings to match. 3371 if (NameR.substr(9, 2) != "mi") 3372 break; 3373 switch (NameR[11]) { 3374 default: break; 3375 case 'e': // 1 string to match. 3376 if (NameR.substr(12, 4) != "q.ss") 3377 break; 3378 return Intrinsic::x86_sse_comieq_ss; // "86.sse.comieq.ss" 3379 case 'g': // 2 strings to match. 3380 switch (NameR[12]) { 3381 default: break; 3382 case 'e': // 1 string to match. 3383 if (NameR.substr(13, 3) != ".ss") 3384 break; 3385 return Intrinsic::x86_sse_comige_ss; // "86.sse.comige.ss" 3386 case 't': // 1 string to match. 3387 if (NameR.substr(13, 3) != ".ss") 3388 break; 3389 return Intrinsic::x86_sse_comigt_ss; // "86.sse.comigt.ss" 3390 } 3391 break; 3392 case 'l': // 2 strings to match. 3393 switch (NameR[12]) { 3394 default: break; 3395 case 'e': // 1 string to match. 3396 if (NameR.substr(13, 3) != ".ss") 3397 break; 3398 return Intrinsic::x86_sse_comile_ss; // "86.sse.comile.ss" 3399 case 't': // 1 string to match. 3400 if (NameR.substr(13, 3) != ".ss") 3401 break; 3402 return Intrinsic::x86_sse_comilt_ss; // "86.sse.comilt.ss" 3403 } 3404 break; 3405 } 3406 break; 3407 case 'v': // 3 strings to match. 3408 if (NameR.substr(9, 2) != "tt") 3409 break; 3410 switch (NameR[11]) { 3411 default: break; 3412 case 'p': // 2 strings to match. 3413 switch (NameR[12]) { 3414 default: break; 3415 case 'd': // 1 string to match. 3416 if (NameR.substr(13, 3) != "2pi") 3417 break; 3418 return Intrinsic::x86_sse_cvttpd2pi; // "86.sse.cvttpd2pi" 3419 case 's': // 1 string to match. 3420 if (NameR.substr(13, 3) != "2pi") 3421 break; 3422 return Intrinsic::x86_sse_cvttps2pi; // "86.sse.cvttps2pi" 3423 } 3424 break; 3425 case 's': // 1 string to match. 3426 if (NameR.substr(12, 4) != "s2si") 3427 break; 3428 return Intrinsic::x86_sse_cvttss2si; // "86.sse.cvttss2si" 3429 } 3430 break; 3431 } 3432 break; 3433 case 'm': // 1 string to match. 3434 if (NameR.substr(8, 8) != "ovmsk.ps") 3435 break; 3436 return Intrinsic::x86_sse_movmsk_ps; // "86.sse.movmsk.ps" 3437 case 's': // 1 string to match. 3438 if (NameR.substr(8, 8) != "toreu.ps") 3439 break; 3440 return Intrinsic::x86_sse_storeu_ps; // "86.sse.storeu.ps" 3441 } 3442 break; 3443 case '2': // 23 strings to match. 3444 if (NameR[7] != '.') 3445 break; 3446 switch (NameR[8]) { 3447 default: break; 3448 case 'c': // 10 strings to match. 3449 if (NameR.substr(9, 2) != "vt") 3450 break; 3451 switch (NameR[11]) { 3452 default: break; 3453 case 'd': // 2 strings to match. 3454 if (NameR.substr(12, 3) != "q2p") 3455 break; 3456 switch (NameR[15]) { 3457 default: break; 3458 case 'd': // 1 string to match. 3459 return Intrinsic::x86_sse2_cvtdq2pd; // "86.sse2.cvtdq2pd" 3460 case 's': // 1 string to match. 3461 return Intrinsic::x86_sse2_cvtdq2ps; // "86.sse2.cvtdq2ps" 3462 } 3463 break; 3464 case 'p': // 4 strings to match. 3465 switch (NameR[12]) { 3466 default: break; 3467 case 'd': // 2 strings to match. 3468 if (NameR[13] != '2') 3469 break; 3470 switch (NameR[14]) { 3471 default: break; 3472 case 'd': // 1 string to match. 3473 if (NameR[15] != 'q') 3474 break; 3475 return Intrinsic::x86_sse2_cvtpd2dq; // "86.sse2.cvtpd2dq" 3476 case 'p': // 1 string to match. 3477 if (NameR[15] != 's') 3478 break; 3479 return Intrinsic::x86_sse2_cvtpd2ps; // "86.sse2.cvtpd2ps" 3480 } 3481 break; 3482 case 's': // 2 strings to match. 3483 if (NameR[13] != '2') 3484 break; 3485 switch (NameR[14]) { 3486 default: break; 3487 case 'd': // 1 string to match. 3488 if (NameR[15] != 'q') 3489 break; 3490 return Intrinsic::x86_sse2_cvtps2dq; // "86.sse2.cvtps2dq" 3491 case 'p': // 1 string to match. 3492 if (NameR[15] != 'd') 3493 break; 3494 return Intrinsic::x86_sse2_cvtps2pd; // "86.sse2.cvtps2pd" 3495 } 3496 break; 3497 } 3498 break; 3499 case 's': // 4 strings to match. 3500 switch (NameR[12]) { 3501 default: break; 3502 case 'd': // 2 strings to match. 3503 if (NameR.substr(13, 2) != "2s") 3504 break; 3505 switch (NameR[15]) { 3506 default: break; 3507 case 'i': // 1 string to match. 3508 return Intrinsic::x86_sse2_cvtsd2si; // "86.sse2.cvtsd2si" 3509 case 's': // 1 string to match. 3510 return Intrinsic::x86_sse2_cvtsd2ss; // "86.sse2.cvtsd2ss" 3511 } 3512 break; 3513 case 'i': // 1 string to match. 3514 if (NameR.substr(13, 3) != "2sd") 3515 break; 3516 return Intrinsic::x86_sse2_cvtsi2sd; // "86.sse2.cvtsi2sd" 3517 case 's': // 1 string to match. 3518 if (NameR.substr(13, 3) != "2sd") 3519 break; 3520 return Intrinsic::x86_sse2_cvtss2sd; // "86.sse2.cvtss2sd" 3521 } 3522 break; 3523 } 3524 break; 3525 case 'p': // 13 strings to match. 3526 switch (NameR[9]) { 3527 default: break; 3528 case 'a': // 2 strings to match. 3529 if (NameR.substr(10, 5) != "ddus.") 3530 break; 3531 switch (NameR[15]) { 3532 default: break; 3533 case 'b': // 1 string to match. 3534 return Intrinsic::x86_sse2_paddus_b; // "86.sse2.paddus.b" 3535 case 'w': // 1 string to match. 3536 return Intrinsic::x86_sse2_paddus_w; // "86.sse2.paddus.w" 3537 } 3538 break; 3539 case 'c': // 6 strings to match. 3540 if (NameR.substr(10, 2) != "mp") 3541 break; 3542 switch (NameR[12]) { 3543 default: break; 3544 case 'e': // 3 strings to match. 3545 if (NameR.substr(13, 2) != "q.") 3546 break; 3547 switch (NameR[15]) { 3548 default: break; 3549 case 'b': // 1 string to match. 3550 return Intrinsic::x86_sse2_pcmpeq_b; // "86.sse2.pcmpeq.b" 3551 case 'd': // 1 string to match. 3552 return Intrinsic::x86_sse2_pcmpeq_d; // "86.sse2.pcmpeq.d" 3553 case 'w': // 1 string to match. 3554 return Intrinsic::x86_sse2_pcmpeq_w; // "86.sse2.pcmpeq.w" 3555 } 3556 break; 3557 case 'g': // 3 strings to match. 3558 if (NameR.substr(13, 2) != "t.") 3559 break; 3560 switch (NameR[15]) { 3561 default: break; 3562 case 'b': // 1 string to match. 3563 return Intrinsic::x86_sse2_pcmpgt_b; // "86.sse2.pcmpgt.b" 3564 case 'd': // 1 string to match. 3565 return Intrinsic::x86_sse2_pcmpgt_d; // "86.sse2.pcmpgt.d" 3566 case 'w': // 1 string to match. 3567 return Intrinsic::x86_sse2_pcmpgt_w; // "86.sse2.pcmpgt.w" 3568 } 3569 break; 3570 } 3571 break; 3572 case 'm': // 3 strings to match. 3573 switch (NameR[10]) { 3574 default: break; 3575 case 'a': // 1 string to match. 3576 if (NameR.substr(11, 5) != "dd.wd") 3577 break; 3578 return Intrinsic::x86_sse2_pmadd_wd; // "86.sse2.pmadd.wd" 3579 case 'u': // 2 strings to match. 3580 if (NameR[11] != 'l') 3581 break; 3582 switch (NameR[12]) { 3583 default: break; 3584 case 'h': // 1 string to match. 3585 if (NameR.substr(13, 3) != "u.w") 3586 break; 3587 return Intrinsic::x86_sse2_pmulhu_w; // "86.sse2.pmulhu.w" 3588 case 'u': // 1 string to match. 3589 if (NameR.substr(13, 3) != ".dq") 3590 break; 3591 return Intrinsic::x86_sse2_pmulu_dq; // "86.sse2.pmulu.dq" 3592 } 3593 break; 3594 } 3595 break; 3596 case 's': // 2 strings to match. 3597 if (NameR.substr(10, 5) != "ubus.") 3598 break; 3599 switch (NameR[15]) { 3600 default: break; 3601 case 'b': // 1 string to match. 3602 return Intrinsic::x86_sse2_psubus_b; // "86.sse2.psubus.b" 3603 case 'w': // 1 string to match. 3604 return Intrinsic::x86_sse2_psubus_w; // "86.sse2.psubus.w" 3605 } 3606 break; 3607 } 3608 break; 3609 } 3610 break; 3611 case '4': // 6 strings to match. 3612 switch (NameR[7]) { 3613 default: break; 3614 case '1': // 5 strings to match. 3615 if (NameR[8] != '.') 3616 break; 3617 switch (NameR[9]) { 3618 default: break; 3619 case 'b': // 2 strings to match. 3620 if (NameR.substr(10, 5) != "lendp") 3621 break; 3622 switch (NameR[15]) { 3623 default: break; 3624 case 'd': // 1 string to match. 3625 return Intrinsic::x86_sse41_blendpd; // "86.sse41.blendpd" 3626 case 's': // 1 string to match. 3627 return Intrinsic::x86_sse41_blendps; // "86.sse41.blendps" 3628 } 3629 break; 3630 case 'm': // 1 string to match. 3631 if (NameR.substr(10, 6) != "psadbw") 3632 break; 3633 return Intrinsic::x86_sse41_mpsadbw; // "86.sse41.mpsadbw" 3634 case 'p': // 2 strings to match. 3635 switch (NameR[10]) { 3636 default: break; 3637 case 'b': // 1 string to match. 3638 if (NameR.substr(11, 5) != "lendw") 3639 break; 3640 return Intrinsic::x86_sse41_pblendw; // "86.sse41.pblendw" 3641 case 'c': // 1 string to match. 3642 if (NameR.substr(11, 5) != "mpeqq") 3643 break; 3644 return Intrinsic::x86_sse41_pcmpeqq; // "86.sse41.pcmpeqq" 3645 } 3646 break; 3647 } 3648 break; 3649 case '2': // 1 string to match. 3650 if (NameR.substr(8, 8) != ".pcmpgtq") 3651 break; 3652 return Intrinsic::x86_sse42_pcmpgtq; // "86.sse42.pcmpgtq" 3653 } 3654 break; 3655 } 3656 break; 3657 case 's': // 8 strings to match. 3658 if (NameR.substr(6, 4) != "e3.p") 3659 break; 3660 switch (NameR[10]) { 3661 default: break; 3662 case 'h': // 4 strings to match. 3663 switch (NameR[11]) { 3664 default: break; 3665 case 'a': // 2 strings to match. 3666 if (NameR.substr(12, 3) != "dd.") 3667 break; 3668 switch (NameR[15]) { 3669 default: break; 3670 case 'd': // 1 string to match. 3671 return Intrinsic::x86_ssse3_phadd_d; // "86.ssse3.phadd.d" 3672 case 'w': // 1 string to match. 3673 return Intrinsic::x86_ssse3_phadd_w; // "86.ssse3.phadd.w" 3674 } 3675 break; 3676 case 's': // 2 strings to match. 3677 if (NameR.substr(12, 3) != "ub.") 3678 break; 3679 switch (NameR[15]) { 3680 default: break; 3681 case 'd': // 1 string to match. 3682 return Intrinsic::x86_ssse3_phsub_d; // "86.ssse3.phsub.d" 3683 case 'w': // 1 string to match. 3684 return Intrinsic::x86_ssse3_phsub_w; // "86.ssse3.phsub.w" 3685 } 3686 break; 3687 } 3688 break; 3689 case 's': // 4 strings to match. 3690 switch (NameR[11]) { 3691 default: break; 3692 case 'h': // 1 string to match. 3693 if (NameR.substr(12, 4) != "uf.b") 3694 break; 3695 return Intrinsic::x86_ssse3_pshuf_b; // "86.ssse3.pshuf.b" 3696 case 'i': // 3 strings to match. 3697 if (NameR.substr(12, 3) != "gn.") 3698 break; 3699 switch (NameR[15]) { 3700 default: break; 3701 case 'b': // 1 string to match. 3702 return Intrinsic::x86_ssse3_psign_b; // "86.ssse3.psign.b" 3703 case 'd': // 1 string to match. 3704 return Intrinsic::x86_ssse3_psign_d; // "86.ssse3.psign.d" 3705 case 'w': // 1 string to match. 3706 return Intrinsic::x86_ssse3_psign_w; // "86.ssse3.psign.w" 3707 } 3708 break; 3709 } 3710 break; 3711 } 3712 break; 3713 } 3714 break; 3715 } 3716 break; 3717 case 17: // 64 strings to match. 3718 if (NameR.substr(0, 3) != "86.") 3719 break; 3720 switch (NameR[3]) { 3721 default: break; 3722 case '3': // 4 strings to match. 3723 if (NameR.substr(4, 4) != "dnow") 3724 break; 3725 switch (NameR[8]) { 3726 default: break; 3727 case '.': // 3 strings to match. 3728 if (NameR.substr(9, 3) != "pfr") 3729 break; 3730 switch (NameR[12]) { 3731 default: break; 3732 case 'c': // 2 strings to match. 3733 if (NameR.substr(13, 3) != "pit") 3734 break; 3735 switch (NameR[16]) { 3736 default: break; 3737 case '1': // 1 string to match. 3738 return Intrinsic::x86_3dnow_pfrcpit1; // "86.3dnow.pfrcpit1" 3739 case '2': // 1 string to match. 3740 return Intrinsic::x86_3dnow_pfrcpit2; // "86.3dnow.pfrcpit2" 3741 } 3742 break; 3743 case 's': // 1 string to match. 3744 if (NameR.substr(13, 4) != "qit1") 3745 break; 3746 return Intrinsic::x86_3dnow_pfrsqit1; // "86.3dnow.pfrsqit1" 3747 } 3748 break; 3749 case 'a': // 1 string to match. 3750 if (NameR.substr(9, 8) != ".pfpnacc") 3751 break; 3752 return Intrinsic::x86_3dnowa_pfpnacc; // "86.3dnowa.pfpnacc" 3753 } 3754 break; 3755 case 'a': // 13 strings to match. 3756 if (NameR.substr(4, 3) != "vx.") 3757 break; 3758 switch (NameR[7]) { 3759 default: break; 3760 case 'c': // 2 strings to match. 3761 if (NameR.substr(8, 4) != "mp.p") 3762 break; 3763 switch (NameR[12]) { 3764 default: break; 3765 case 'd': // 1 string to match. 3766 if (NameR.substr(13, 4) != ".256") 3767 break; 3768 return Intrinsic::x86_avx_cmp_pd_256; // "86.avx.cmp.pd.256" 3769 case 's': // 1 string to match. 3770 if (NameR.substr(13, 4) != ".256") 3771 break; 3772 return Intrinsic::x86_avx_cmp_ps_256; // "86.avx.cmp.ps.256" 3773 } 3774 break; 3775 case 'l': // 1 string to match. 3776 if (NameR.substr(8, 9) != "du.dq.256") 3777 break; 3778 return Intrinsic::x86_avx_ldu_dq_256; // "86.avx.ldu.dq.256" 3779 case 'm': // 4 strings to match. 3780 switch (NameR[8]) { 3781 default: break; 3782 case 'a': // 2 strings to match. 3783 if (NameR.substr(9, 3) != "x.p") 3784 break; 3785 switch (NameR[12]) { 3786 default: break; 3787 case 'd': // 1 string to match. 3788 if (NameR.substr(13, 4) != ".256") 3789 break; 3790 return Intrinsic::x86_avx_max_pd_256; // "86.avx.max.pd.256" 3791 case 's': // 1 string to match. 3792 if (NameR.substr(13, 4) != ".256") 3793 break; 3794 return Intrinsic::x86_avx_max_ps_256; // "86.avx.max.ps.256" 3795 } 3796 break; 3797 case 'i': // 2 strings to match. 3798 if (NameR.substr(9, 3) != "n.p") 3799 break; 3800 switch (NameR[12]) { 3801 default: break; 3802 case 'd': // 1 string to match. 3803 if (NameR.substr(13, 4) != ".256") 3804 break; 3805 return Intrinsic::x86_avx_min_pd_256; // "86.avx.min.pd.256" 3806 case 's': // 1 string to match. 3807 if (NameR.substr(13, 4) != ".256") 3808 break; 3809 return Intrinsic::x86_avx_min_ps_256; // "86.avx.min.ps.256" 3810 } 3811 break; 3812 } 3813 break; 3814 case 'p': // 2 strings to match. 3815 if (NameR.substr(8, 4) != "test") 3816 break; 3817 switch (NameR[12]) { 3818 default: break; 3819 case 'c': // 1 string to match. 3820 if (NameR.substr(13, 4) != ".256") 3821 break; 3822 return Intrinsic::x86_avx_ptestc_256; // "86.avx.ptestc.256" 3823 case 'z': // 1 string to match. 3824 if (NameR.substr(13, 4) != ".256") 3825 break; 3826 return Intrinsic::x86_avx_ptestz_256; // "86.avx.ptestz.256" 3827 } 3828 break; 3829 case 'r': // 1 string to match. 3830 if (NameR.substr(8, 9) != "cp.ps.256") 3831 break; 3832 return Intrinsic::x86_avx_rcp_ps_256; // "86.avx.rcp.ps.256" 3833 case 'v': // 3 strings to match. 3834 switch (NameR[8]) { 3835 default: break; 3836 case 'p': // 2 strings to match. 3837 if (NameR.substr(9, 7) != "ermil.p") 3838 break; 3839 switch (NameR[16]) { 3840 default: break; 3841 case 'd': // 1 string to match. 3842 return Intrinsic::x86_avx_vpermil_pd; // "86.avx.vpermil.pd" 3843 case 's': // 1 string to match. 3844 return Intrinsic::x86_avx_vpermil_ps; // "86.avx.vpermil.ps" 3845 } 3846 break; 3847 case 'z': // 1 string to match. 3848 if (NameR.substr(9, 8) != "eroupper") 3849 break; 3850 return Intrinsic::x86_avx_vzeroupper; // "86.avx.vzeroupper" 3851 } 3852 break; 3853 } 3854 break; 3855 case 's': // 47 strings to match. 3856 if (NameR[4] != 's') 3857 break; 3858 switch (NameR[5]) { 3859 default: break; 3860 case 'e': // 45 strings to match. 3861 switch (NameR[6]) { 3862 default: break; 3863 case '.': // 8 strings to match. 3864 switch (NameR[7]) { 3865 default: break; 3866 case 'c': // 3 strings to match. 3867 switch (NameR[8]) { 3868 default: break; 3869 case 'o': // 1 string to match. 3870 if (NameR.substr(9, 8) != "mineq.ss") 3871 break; 3872 return Intrinsic::x86_sse_comineq_ss; // "86.sse.comineq.ss" 3873 case 'v': // 2 strings to match. 3874 if (NameR.substr(9, 2) != "ts") 3875 break; 3876 switch (NameR[11]) { 3877 default: break; 3878 case 'i': // 1 string to match. 3879 if (NameR.substr(12, 5) != "642ss") 3880 break; 3881 return Intrinsic::x86_sse_cvtsi642ss; // "86.sse.cvtsi642ss" 3882 case 's': // 1 string to match. 3883 if (NameR.substr(12, 5) != "2si64") 3884 break; 3885 return Intrinsic::x86_sse_cvtss2si64; // "86.sse.cvtss2si64" 3886 } 3887 break; 3888 } 3889 break; 3890 case 'u': // 5 strings to match. 3891 if (NameR.substr(8, 4) != "comi") 3892 break; 3893 switch (NameR[12]) { 3894 default: break; 3895 case 'e': // 1 string to match. 3896 if (NameR.substr(13, 4) != "q.ss") 3897 break; 3898 return Intrinsic::x86_sse_ucomieq_ss; // "86.sse.ucomieq.ss" 3899 case 'g': // 2 strings to match. 3900 switch (NameR[13]) { 3901 default: break; 3902 case 'e': // 1 string to match. 3903 if (NameR.substr(14, 3) != ".ss") 3904 break; 3905 return Intrinsic::x86_sse_ucomige_ss; // "86.sse.ucomige.ss" 3906 case 't': // 1 string to match. 3907 if (NameR.substr(14, 3) != ".ss") 3908 break; 3909 return Intrinsic::x86_sse_ucomigt_ss; // "86.sse.ucomigt.ss" 3910 } 3911 break; 3912 case 'l': // 2 strings to match. 3913 switch (NameR[13]) { 3914 default: break; 3915 case 'e': // 1 string to match. 3916 if (NameR.substr(14, 3) != ".ss") 3917 break; 3918 return Intrinsic::x86_sse_ucomile_ss; // "86.sse.ucomile.ss" 3919 case 't': // 1 string to match. 3920 if (NameR.substr(14, 3) != ".ss") 3921 break; 3922 return Intrinsic::x86_sse_ucomilt_ss; // "86.sse.ucomilt.ss" 3923 } 3924 break; 3925 } 3926 break; 3927 } 3928 break; 3929 case '2': // 12 strings to match. 3930 if (NameR[7] != '.') 3931 break; 3932 switch (NameR[8]) { 3933 default: break; 3934 case 'c': // 8 strings to match. 3935 switch (NameR[9]) { 3936 default: break; 3937 case 'o': // 5 strings to match. 3938 if (NameR.substr(10, 2) != "mi") 3939 break; 3940 switch (NameR[12]) { 3941 default: break; 3942 case 'e': // 1 string to match. 3943 if (NameR.substr(13, 4) != "q.sd") 3944 break; 3945 return Intrinsic::x86_sse2_comieq_sd; // "86.sse2.comieq.sd" 3946 case 'g': // 2 strings to match. 3947 switch (NameR[13]) { 3948 default: break; 3949 case 'e': // 1 string to match. 3950 if (NameR.substr(14, 3) != ".sd") 3951 break; 3952 return Intrinsic::x86_sse2_comige_sd; // "86.sse2.comige.sd" 3953 case 't': // 1 string to match. 3954 if (NameR.substr(14, 3) != ".sd") 3955 break; 3956 return Intrinsic::x86_sse2_comigt_sd; // "86.sse2.comigt.sd" 3957 } 3958 break; 3959 case 'l': // 2 strings to match. 3960 switch (NameR[13]) { 3961 default: break; 3962 case 'e': // 1 string to match. 3963 if (NameR.substr(14, 3) != ".sd") 3964 break; 3965 return Intrinsic::x86_sse2_comile_sd; // "86.sse2.comile.sd" 3966 case 't': // 1 string to match. 3967 if (NameR.substr(14, 3) != ".sd") 3968 break; 3969 return Intrinsic::x86_sse2_comilt_sd; // "86.sse2.comilt.sd" 3970 } 3971 break; 3972 } 3973 break; 3974 case 'v': // 3 strings to match. 3975 if (NameR.substr(10, 2) != "tt") 3976 break; 3977 switch (NameR[12]) { 3978 default: break; 3979 case 'p': // 2 strings to match. 3980 switch (NameR[13]) { 3981 default: break; 3982 case 'd': // 1 string to match. 3983 if (NameR.substr(14, 3) != "2dq") 3984 break; 3985 return Intrinsic::x86_sse2_cvttpd2dq; // "86.sse2.cvttpd2dq" 3986 case 's': // 1 string to match. 3987 if (NameR.substr(14, 3) != "2dq") 3988 break; 3989 return Intrinsic::x86_sse2_cvttps2dq; // "86.sse2.cvttps2dq" 3990 } 3991 break; 3992 case 's': // 1 string to match. 3993 if (NameR.substr(13, 4) != "d2si") 3994 break; 3995 return Intrinsic::x86_sse2_cvttsd2si; // "86.sse2.cvttsd2si" 3996 } 3997 break; 3998 } 3999 break; 4000 case 'm': // 1 string to match. 4001 if (NameR.substr(9, 8) != "ovmsk.pd") 4002 break; 4003 return Intrinsic::x86_sse2_movmsk_pd; // "86.sse2.movmsk.pd" 4004 case 's': // 3 strings to match. 4005 if (NameR.substr(9, 4) != "tore") 4006 break; 4007 switch (NameR[13]) { 4008 default: break; 4009 case 'l': // 1 string to match. 4010 if (NameR.substr(14, 3) != ".dq") 4011 break; 4012 return Intrinsic::x86_sse2_storel_dq; // "86.sse2.storel.dq" 4013 case 'u': // 2 strings to match. 4014 if (NameR[14] != '.') 4015 break; 4016 switch (NameR[15]) { 4017 default: break; 4018 case 'd': // 1 string to match. 4019 if (NameR[16] != 'q') 4020 break; 4021 return Intrinsic::x86_sse2_storeu_dq; // "86.sse2.storeu.dq" 4022 case 'p': // 1 string to match. 4023 if (NameR[16] != 'd') 4024 break; 4025 return Intrinsic::x86_sse2_storeu_pd; // "86.sse2.storeu.pd" 4026 } 4027 break; 4028 } 4029 break; 4030 } 4031 break; 4032 case '3': // 2 strings to match. 4033 if (NameR.substr(7, 9) != ".addsub.p") 4034 break; 4035 switch (NameR[16]) { 4036 default: break; 4037 case 'd': // 1 string to match. 4038 return Intrinsic::x86_sse3_addsub_pd; // "86.sse3.addsub.pd" 4039 case 's': // 1 string to match. 4040 return Intrinsic::x86_sse3_addsub_ps; // "86.sse3.addsub.ps" 4041 } 4042 break; 4043 case '4': // 23 strings to match. 4044 if (NameR.substr(7, 2) != "1.") 4045 break; 4046 switch (NameR[9]) { 4047 default: break; 4048 case 'b': // 2 strings to match. 4049 if (NameR.substr(10, 6) != "lendvp") 4050 break; 4051 switch (NameR[16]) { 4052 default: break; 4053 case 'd': // 1 string to match. 4054 return Intrinsic::x86_sse41_blendvpd; // "86.sse41.blendvpd" 4055 case 's': // 1 string to match. 4056 return Intrinsic::x86_sse41_blendvps; // "86.sse41.blendvps" 4057 } 4058 break; 4059 case 'i': // 1 string to match. 4060 if (NameR.substr(10, 7) != "nsertps") 4061 break; 4062 return Intrinsic::x86_sse41_insertps; // "86.sse41.insertps" 4063 case 'm': // 1 string to match. 4064 if (NameR.substr(10, 7) != "ovntdqa") 4065 break; 4066 return Intrinsic::x86_sse41_movntdqa; // "86.sse41.movntdqa" 4067 case 'p': // 15 strings to match. 4068 switch (NameR[10]) { 4069 default: break; 4070 case 'a': // 1 string to match. 4071 if (NameR.substr(11, 6) != "ckusdw") 4072 break; 4073 return Intrinsic::x86_sse41_packusdw; // "86.sse41.packusdw" 4074 case 'b': // 1 string to match. 4075 if (NameR.substr(11, 6) != "lendvb") 4076 break; 4077 return Intrinsic::x86_sse41_pblendvb; // "86.sse41.pblendvb" 4078 case 'm': // 12 strings to match. 4079 if (NameR.substr(11, 2) != "ov") 4080 break; 4081 switch (NameR[13]) { 4082 default: break; 4083 case 's': // 6 strings to match. 4084 if (NameR[14] != 'x') 4085 break; 4086 switch (NameR[15]) { 4087 default: break; 4088 case 'b': // 3 strings to match. 4089 switch (NameR[16]) { 4090 default: break; 4091 case 'd': // 1 string to match. 4092 return Intrinsic::x86_sse41_pmovsxbd; // "86.sse41.pmovsxbd" 4093 case 'q': // 1 string to match. 4094 return Intrinsic::x86_sse41_pmovsxbq; // "86.sse41.pmovsxbq" 4095 case 'w': // 1 string to match. 4096 return Intrinsic::x86_sse41_pmovsxbw; // "86.sse41.pmovsxbw" 4097 } 4098 break; 4099 case 'd': // 1 string to match. 4100 if (NameR[16] != 'q') 4101 break; 4102 return Intrinsic::x86_sse41_pmovsxdq; // "86.sse41.pmovsxdq" 4103 case 'w': // 2 strings to match. 4104 switch (NameR[16]) { 4105 default: break; 4106 case 'd': // 1 string to match. 4107 return Intrinsic::x86_sse41_pmovsxwd; // "86.sse41.pmovsxwd" 4108 case 'q': // 1 string to match. 4109 return Intrinsic::x86_sse41_pmovsxwq; // "86.sse41.pmovsxwq" 4110 } 4111 break; 4112 } 4113 break; 4114 case 'z': // 6 strings to match. 4115 if (NameR[14] != 'x') 4116 break; 4117 switch (NameR[15]) { 4118 default: break; 4119 case 'b': // 3 strings to match. 4120 switch (NameR[16]) { 4121 default: break; 4122 case 'd': // 1 string to match. 4123 return Intrinsic::x86_sse41_pmovzxbd; // "86.sse41.pmovzxbd" 4124 case 'q': // 1 string to match. 4125 return Intrinsic::x86_sse41_pmovzxbq; // "86.sse41.pmovzxbq" 4126 case 'w': // 1 string to match. 4127 return Intrinsic::x86_sse41_pmovzxbw; // "86.sse41.pmovzxbw" 4128 } 4129 break; 4130 case 'd': // 1 string to match. 4131 if (NameR[16] != 'q') 4132 break; 4133 return Intrinsic::x86_sse41_pmovzxdq; // "86.sse41.pmovzxdq" 4134 case 'w': // 2 strings to match. 4135 switch (NameR[16]) { 4136 default: break; 4137 case 'd': // 1 string to match. 4138 return Intrinsic::x86_sse41_pmovzxwd; // "86.sse41.pmovzxwd" 4139 case 'q': // 1 string to match. 4140 return Intrinsic::x86_sse41_pmovzxwq; // "86.sse41.pmovzxwq" 4141 } 4142 break; 4143 } 4144 break; 4145 } 4146 break; 4147 case 't': // 1 string to match. 4148 if (NameR.substr(11, 6) != "estnzc") 4149 break; 4150 return Intrinsic::x86_sse41_ptestnzc; // "86.sse41.ptestnzc" 4151 } 4152 break; 4153 case 'r': // 4 strings to match. 4154 if (NameR.substr(10, 5) != "ound.") 4155 break; 4156 switch (NameR[15]) { 4157 default: break; 4158 case 'p': // 2 strings to match. 4159 switch (NameR[16]) { 4160 default: break; 4161 case 'd': // 1 string to match. 4162 return Intrinsic::x86_sse41_round_pd; // "86.sse41.round.pd" 4163 case 's': // 1 string to match. 4164 return Intrinsic::x86_sse41_round_ps; // "86.sse41.round.ps" 4165 } 4166 break; 4167 case 's': // 2 strings to match. 4168 switch (NameR[16]) { 4169 default: break; 4170 case 'd': // 1 string to match. 4171 return Intrinsic::x86_sse41_round_sd; // "86.sse41.round.sd" 4172 case 's': // 1 string to match. 4173 return Intrinsic::x86_sse41_round_ss; // "86.sse41.round.ss" 4174 } 4175 break; 4176 } 4177 break; 4178 } 4179 break; 4180 } 4181 break; 4182 case 's': // 2 strings to match. 4183 if (NameR.substr(6, 5) != "e3.ph") 4184 break; 4185 switch (NameR[11]) { 4186 default: break; 4187 case 'a': // 1 string to match. 4188 if (NameR.substr(12, 5) != "dd.sw") 4189 break; 4190 return Intrinsic::x86_ssse3_phadd_sw; // "86.ssse3.phadd.sw" 4191 case 's': // 1 string to match. 4192 if (NameR.substr(12, 5) != "ub.sw") 4193 break; 4194 return Intrinsic::x86_ssse3_phsub_sw; // "86.ssse3.phsub.sw" 4195 } 4196 break; 4197 } 4198 break; 4199 } 4200 break; 4201 case 18: // 23 strings to match. 4202 if (NameR.substr(0, 3) != "86.") 4203 break; 4204 switch (NameR[3]) { 4205 default: break; 4206 case 'a': // 10 strings to match. 4207 if (NameR.substr(4, 3) != "vx.") 4208 break; 4209 switch (NameR[7]) { 4210 default: break; 4211 case 'h': // 4 strings to match. 4212 switch (NameR[8]) { 4213 default: break; 4214 case 'a': // 2 strings to match. 4215 if (NameR.substr(9, 4) != "dd.p") 4216 break; 4217 switch (NameR[13]) { 4218 default: break; 4219 case 'd': // 1 string to match. 4220 if (NameR.substr(14, 4) != ".256") 4221 break; 4222 return Intrinsic::x86_avx_hadd_pd_256; // "86.avx.hadd.pd.256" 4223 case 's': // 1 string to match. 4224 if (NameR.substr(14, 4) != ".256") 4225 break; 4226 return Intrinsic::x86_avx_hadd_ps_256; // "86.avx.hadd.ps.256" 4227 } 4228 break; 4229 case 's': // 2 strings to match. 4230 if (NameR.substr(9, 4) != "ub.p") 4231 break; 4232 switch (NameR[13]) { 4233 default: break; 4234 case 'd': // 1 string to match. 4235 if (NameR.substr(14, 4) != ".256") 4236 break; 4237 return Intrinsic::x86_avx_hsub_pd_256; // "86.avx.hsub.pd.256" 4238 case 's': // 1 string to match. 4239 if (NameR.substr(14, 4) != ".256") 4240 break; 4241 return Intrinsic::x86_avx_hsub_ps_256; // "86.avx.hsub.ps.256" 4242 } 4243 break; 4244 } 4245 break; 4246 case 'm': // 2 strings to match. 4247 if (NameR.substr(8, 9) != "askload.p") 4248 break; 4249 switch (NameR[17]) { 4250 default: break; 4251 case 'd': // 1 string to match. 4252 return Intrinsic::x86_avx_maskload_pd; // "86.avx.maskload.pd" 4253 case 's': // 1 string to match. 4254 return Intrinsic::x86_avx_maskload_ps; // "86.avx.maskload.ps" 4255 } 4256 break; 4257 case 's': // 2 strings to match. 4258 if (NameR.substr(8, 5) != "qrt.p") 4259 break; 4260 switch (NameR[13]) { 4261 default: break; 4262 case 'd': // 1 string to match. 4263 if (NameR.substr(14, 4) != ".256") 4264 break; 4265 return Intrinsic::x86_avx_sqrt_pd_256; // "86.avx.sqrt.pd.256" 4266 case 's': // 1 string to match. 4267 if (NameR.substr(14, 4) != ".256") 4268 break; 4269 return Intrinsic::x86_avx_sqrt_ps_256; // "86.avx.sqrt.ps.256" 4270 } 4271 break; 4272 case 'v': // 2 strings to match. 4273 if (NameR.substr(8, 9) != "testnzc.p") 4274 break; 4275 switch (NameR[17]) { 4276 default: break; 4277 case 'd': // 1 string to match. 4278 return Intrinsic::x86_avx_vtestnzc_pd; // "86.avx.vtestnzc.pd" 4279 case 's': // 1 string to match. 4280 return Intrinsic::x86_avx_vtestnzc_ps; // "86.avx.vtestnzc.ps" 4281 } 4282 break; 4283 } 4284 break; 4285 case 's': // 13 strings to match. 4286 if (NameR.substr(4, 2) != "se") 4287 break; 4288 switch (NameR[6]) { 4289 default: break; 4290 case '.': // 2 strings to match. 4291 switch (NameR[7]) { 4292 default: break; 4293 case 'c': // 1 string to match. 4294 if (NameR.substr(8, 10) != "vttss2si64") 4295 break; 4296 return Intrinsic::x86_sse_cvttss2si64; // "86.sse.cvttss2si64" 4297 case 'u': // 1 string to match. 4298 if (NameR.substr(8, 10) != "comineq.ss") 4299 break; 4300 return Intrinsic::x86_sse_ucomineq_ss; // "86.sse.ucomineq.ss" 4301 } 4302 break; 4303 case '2': // 10 strings to match. 4304 if (NameR[7] != '.') 4305 break; 4306 switch (NameR[8]) { 4307 default: break; 4308 case 'c': // 3 strings to match. 4309 switch (NameR[9]) { 4310 default: break; 4311 case 'o': // 1 string to match. 4312 if (NameR.substr(10, 8) != "mineq.sd") 4313 break; 4314 return Intrinsic::x86_sse2_comineq_sd; // "86.sse2.comineq.sd" 4315 case 'v': // 2 strings to match. 4316 if (NameR.substr(10, 2) != "ts") 4317 break; 4318 switch (NameR[12]) { 4319 default: break; 4320 case 'd': // 1 string to match. 4321 if (NameR.substr(13, 5) != "2si64") 4322 break; 4323 return Intrinsic::x86_sse2_cvtsd2si64; // "86.sse2.cvtsd2si64" 4324 case 'i': // 1 string to match. 4325 if (NameR.substr(13, 5) != "642sd") 4326 break; 4327 return Intrinsic::x86_sse2_cvtsi642sd; // "86.sse2.cvtsi642sd" 4328 } 4329 break; 4330 } 4331 break; 4332 case 'p': // 2 strings to match. 4333 if (NameR[9] != 's') 4334 break; 4335 switch (NameR[10]) { 4336 default: break; 4337 case 'l': // 1 string to match. 4338 if (NameR.substr(11, 7) != "l.dq.bs") 4339 break; 4340 return Intrinsic::x86_sse2_psll_dq_bs; // "86.sse2.psll.dq.bs" 4341 case 'r': // 1 string to match. 4342 if (NameR.substr(11, 7) != "l.dq.bs") 4343 break; 4344 return Intrinsic::x86_sse2_psrl_dq_bs; // "86.sse2.psrl.dq.bs" 4345 } 4346 break; 4347 case 'u': // 5 strings to match. 4348 if (NameR.substr(9, 4) != "comi") 4349 break; 4350 switch (NameR[13]) { 4351 default: break; 4352 case 'e': // 1 string to match. 4353 if (NameR.substr(14, 4) != "q.sd") 4354 break; 4355 return Intrinsic::x86_sse2_ucomieq_sd; // "86.sse2.ucomieq.sd" 4356 case 'g': // 2 strings to match. 4357 switch (NameR[14]) { 4358 default: break; 4359 case 'e': // 1 string to match. 4360 if (NameR.substr(15, 3) != ".sd") 4361 break; 4362 return Intrinsic::x86_sse2_ucomige_sd; // "86.sse2.ucomige.sd" 4363 case 't': // 1 string to match. 4364 if (NameR.substr(15, 3) != ".sd") 4365 break; 4366 return Intrinsic::x86_sse2_ucomigt_sd; // "86.sse2.ucomigt.sd" 4367 } 4368 break; 4369 case 'l': // 2 strings to match. 4370 switch (NameR[14]) { 4371 default: break; 4372 case 'e': // 1 string to match. 4373 if (NameR.substr(15, 3) != ".sd") 4374 break; 4375 return Intrinsic::x86_sse2_ucomile_sd; // "86.sse2.ucomile.sd" 4376 case 't': // 1 string to match. 4377 if (NameR.substr(15, 3) != ".sd") 4378 break; 4379 return Intrinsic::x86_sse2_ucomilt_sd; // "86.sse2.ucomilt.sd" 4380 } 4381 break; 4382 } 4383 break; 4384 } 4385 break; 4386 case '4': // 1 string to match. 4387 if (NameR.substr(7, 11) != "1.extractps") 4388 break; 4389 return Intrinsic::x86_sse41_extractps; // "86.sse41.extractps" 4390 } 4391 break; 4392 } 4393 break; 4394 case 19: // 27 strings to match. 4395 if (NameR.substr(0, 3) != "86.") 4396 break; 4397 switch (NameR[3]) { 4398 default: break; 4399 case 'a': // 17 strings to match. 4400 switch (NameR[4]) { 4401 default: break; 4402 case 'e': // 2 strings to match. 4403 if (NameR.substr(5, 7) != "sni.aes") 4404 break; 4405 switch (NameR[12]) { 4406 default: break; 4407 case 'd': // 1 string to match. 4408 if (NameR.substr(13, 6) != "eclast") 4409 break; 4410 return Intrinsic::x86_aesni_aesdeclast; // "86.aesni.aesdeclast" 4411 case 'e': // 1 string to match. 4412 if (NameR.substr(13, 6) != "nclast") 4413 break; 4414 return Intrinsic::x86_aesni_aesenclast; // "86.aesni.aesenclast" 4415 } 4416 break; 4417 case 'v': // 15 strings to match. 4418 if (NameR.substr(5, 2) != "x.") 4419 break; 4420 switch (NameR[7]) { 4421 default: break; 4422 case 'b': // 2 strings to match. 4423 if (NameR.substr(8, 6) != "lend.p") 4424 break; 4425 switch (NameR[14]) { 4426 default: break; 4427 case 'd': // 1 string to match. 4428 if (NameR.substr(15, 4) != ".256") 4429 break; 4430 return Intrinsic::x86_avx_blend_pd_256; // "86.avx.blend.pd.256" 4431 case 's': // 1 string to match. 4432 if (NameR.substr(15, 4) != ".256") 4433 break; 4434 return Intrinsic::x86_avx_blend_ps_256; // "86.avx.blend.ps.256" 4435 } 4436 break; 4437 case 'l': // 3 strings to match. 4438 if (NameR.substr(8, 5) != "oadu.") 4439 break; 4440 switch (NameR[13]) { 4441 default: break; 4442 case 'd': // 1 string to match. 4443 if (NameR.substr(14, 5) != "q.256") 4444 break; 4445 return Intrinsic::x86_avx_loadu_dq_256; // "86.avx.loadu.dq.256" 4446 case 'p': // 2 strings to match. 4447 switch (NameR[14]) { 4448 default: break; 4449 case 'd': // 1 string to match. 4450 if (NameR.substr(15, 4) != ".256") 4451 break; 4452 return Intrinsic::x86_avx_loadu_pd_256; // "86.avx.loadu.pd.256" 4453 case 's': // 1 string to match. 4454 if (NameR.substr(15, 4) != ".256") 4455 break; 4456 return Intrinsic::x86_avx_loadu_ps_256; // "86.avx.loadu.ps.256" 4457 } 4458 break; 4459 } 4460 break; 4461 case 'm': // 5 strings to match. 4462 switch (NameR[8]) { 4463 default: break; 4464 case 'a': // 2 strings to match. 4465 if (NameR.substr(9, 9) != "skstore.p") 4466 break; 4467 switch (NameR[18]) { 4468 default: break; 4469 case 'd': // 1 string to match. 4470 return Intrinsic::x86_avx_maskstore_pd; // "86.avx.maskstore.pd" 4471 case 's': // 1 string to match. 4472 return Intrinsic::x86_avx_maskstore_ps; // "86.avx.maskstore.ps" 4473 } 4474 break; 4475 case 'o': // 3 strings to match. 4476 if (NameR.substr(9, 4) != "vnt.") 4477 break; 4478 switch (NameR[13]) { 4479 default: break; 4480 case 'd': // 1 string to match. 4481 if (NameR.substr(14, 5) != "q.256") 4482 break; 4483 return Intrinsic::x86_avx_movnt_dq_256; // "86.avx.movnt.dq.256" 4484 case 'p': // 2 strings to match. 4485 switch (NameR[14]) { 4486 default: break; 4487 case 'd': // 1 string to match. 4488 if (NameR.substr(15, 4) != ".256") 4489 break; 4490 return Intrinsic::x86_avx_movnt_pd_256; // "86.avx.movnt.pd.256" 4491 case 's': // 1 string to match. 4492 if (NameR.substr(15, 4) != ".256") 4493 break; 4494 return Intrinsic::x86_avx_movnt_ps_256; // "86.avx.movnt.ps.256" 4495 } 4496 break; 4497 } 4498 break; 4499 } 4500 break; 4501 case 'p': // 1 string to match. 4502 if (NameR.substr(8, 11) != "testnzc.256") 4503 break; 4504 return Intrinsic::x86_avx_ptestnzc_256; // "86.avx.ptestnzc.256" 4505 case 'r': // 3 strings to match. 4506 switch (NameR[8]) { 4507 default: break; 4508 case 'o': // 2 strings to match. 4509 if (NameR.substr(9, 5) != "und.p") 4510 break; 4511 switch (NameR[14]) { 4512 default: break; 4513 case 'd': // 1 string to match. 4514 if (NameR.substr(15, 4) != ".256") 4515 break; 4516 return Intrinsic::x86_avx_round_pd_256; // "86.avx.round.pd.256" 4517 case 's': // 1 string to match. 4518 if (NameR.substr(15, 4) != ".256") 4519 break; 4520 return Intrinsic::x86_avx_round_ps_256; // "86.avx.round.ps.256" 4521 } 4522 break; 4523 case 's': // 1 string to match. 4524 if (NameR.substr(9, 10) != "qrt.ps.256") 4525 break; 4526 return Intrinsic::x86_avx_rsqrt_ps_256; // "86.avx.rsqrt.ps.256" 4527 } 4528 break; 4529 case 'v': // 1 string to match. 4530 if (NameR.substr(8, 11) != "broadcastss") 4531 break; 4532 return Intrinsic::x86_avx_vbroadcastss; // "86.avx.vbroadcastss" 4533 } 4534 break; 4535 } 4536 break; 4537 case 's': // 10 strings to match. 4538 if (NameR[4] != 's') 4539 break; 4540 switch (NameR[5]) { 4541 default: break; 4542 case 'e': // 6 strings to match. 4543 switch (NameR[6]) { 4544 default: break; 4545 case '2': // 3 strings to match. 4546 if (NameR[7] != '.') 4547 break; 4548 switch (NameR[8]) { 4549 default: break; 4550 case 'c': // 1 string to match. 4551 if (NameR.substr(9, 10) != "vttsd2si64") 4552 break; 4553 return Intrinsic::x86_sse2_cvttsd2si64; // "86.sse2.cvttsd2si64" 4554 case 'm': // 1 string to match. 4555 if (NameR.substr(9, 10) != "askmov.dqu") 4556 break; 4557 return Intrinsic::x86_sse2_maskmov_dqu; // "86.sse2.maskmov.dqu" 4558 case 'u': // 1 string to match. 4559 if (NameR.substr(9, 10) != "comineq.sd") 4560 break; 4561 return Intrinsic::x86_sse2_ucomineq_sd; // "86.sse2.ucomineq.sd" 4562 } 4563 break; 4564 case '4': // 3 strings to match. 4565 switch (NameR[7]) { 4566 default: break; 4567 case '1': // 1 string to match. 4568 if (NameR.substr(8, 11) != ".phminposuw") 4569 break; 4570 return Intrinsic::x86_sse41_phminposuw; // "86.sse41.phminposuw" 4571 case '2': // 2 strings to match. 4572 if (NameR.substr(8, 7) != ".crc32.") 4573 break; 4574 switch (NameR[15]) { 4575 default: break; 4576 case '3': // 1 string to match. 4577 if (NameR.substr(16, 3) != "2.8") 4578 break; 4579 return Intrinsic::x86_sse42_crc32_32_8; // "86.sse42.crc32.32.8" 4580 case '6': // 1 string to match. 4581 if (NameR.substr(16, 3) != "4.8") 4582 break; 4583 return Intrinsic::x86_sse42_crc32_64_8; // "86.sse42.crc32.64.8" 4584 } 4585 break; 4586 } 4587 break; 4588 } 4589 break; 4590 case 's': // 4 strings to match. 4591 if (NameR.substr(6, 4) != "e3.p") 4592 break; 4593 switch (NameR[10]) { 4594 default: break; 4595 case 'a': // 3 strings to match. 4596 if (NameR.substr(11, 3) != "bs.") 4597 break; 4598 switch (NameR[14]) { 4599 default: break; 4600 case 'b': // 1 string to match. 4601 if (NameR.substr(15, 4) != ".128") 4602 break; 4603 return Intrinsic::x86_ssse3_pabs_b_128; // "86.ssse3.pabs.b.128" 4604 case 'd': // 1 string to match. 4605 if (NameR.substr(15, 4) != ".128") 4606 break; 4607 return Intrinsic::x86_ssse3_pabs_d_128; // "86.ssse3.pabs.d.128" 4608 case 'w': // 1 string to match. 4609 if (NameR.substr(15, 4) != ".128") 4610 break; 4611 return Intrinsic::x86_ssse3_pabs_w_128; // "86.ssse3.pabs.w.128" 4612 } 4613 break; 4614 case 'm': // 1 string to match. 4615 if (NameR.substr(11, 8) != "ul.hr.sw") 4616 break; 4617 return Intrinsic::x86_ssse3_pmul_hr_sw; // "86.ssse3.pmul.hr.sw" 4618 } 4619 break; 4620 } 4621 break; 4622 } 4623 break; 4624 case 20: // 35 strings to match. 4625 if (NameR.substr(0, 3) != "86.") 4626 break; 4627 switch (NameR[3]) { 4628 default: break; 4629 case 'a': // 19 strings to match. 4630 if (NameR.substr(4, 3) != "vx.") 4631 break; 4632 switch (NameR[7]) { 4633 default: break; 4634 case 'a': // 2 strings to match. 4635 if (NameR.substr(8, 7) != "ddsub.p") 4636 break; 4637 switch (NameR[15]) { 4638 default: break; 4639 case 'd': // 1 string to match. 4640 if (NameR.substr(16, 4) != ".256") 4641 break; 4642 return Intrinsic::x86_avx_addsub_pd_256; // "86.avx.addsub.pd.256" 4643 case 's': // 1 string to match. 4644 if (NameR.substr(16, 4) != ".256") 4645 break; 4646 return Intrinsic::x86_avx_addsub_ps_256; // "86.avx.addsub.ps.256" 4647 } 4648 break; 4649 case 'b': // 2 strings to match. 4650 if (NameR.substr(8, 7) != "lendv.p") 4651 break; 4652 switch (NameR[15]) { 4653 default: break; 4654 case 'd': // 1 string to match. 4655 if (NameR.substr(16, 4) != ".256") 4656 break; 4657 return Intrinsic::x86_avx_blendv_pd_256; // "86.avx.blendv.pd.256" 4658 case 's': // 1 string to match. 4659 if (NameR.substr(16, 4) != ".256") 4660 break; 4661 return Intrinsic::x86_avx_blendv_ps_256; // "86.avx.blendv.ps.256" 4662 } 4663 break; 4664 case 'c': // 4 strings to match. 4665 if (NameR.substr(8, 2) != "vt") 4666 break; 4667 switch (NameR[10]) { 4668 default: break; 4669 case '.': // 2 strings to match. 4670 if (NameR[11] != 'p') 4671 break; 4672 switch (NameR[12]) { 4673 default: break; 4674 case 'd': // 1 string to match. 4675 if (NameR.substr(13, 7) != "2dq.256") 4676 break; 4677 return Intrinsic::x86_avx_cvt_pd2dq_256; // "86.avx.cvt.pd2dq.256" 4678 case 's': // 1 string to match. 4679 if (NameR.substr(13, 7) != "2dq.256") 4680 break; 4681 return Intrinsic::x86_avx_cvt_ps2dq_256; // "86.avx.cvt.ps2dq.256" 4682 } 4683 break; 4684 case 'd': // 2 strings to match. 4685 if (NameR.substr(11, 4) != "q2.p") 4686 break; 4687 switch (NameR[15]) { 4688 default: break; 4689 case 'd': // 1 string to match. 4690 if (NameR.substr(16, 4) != ".256") 4691 break; 4692 return Intrinsic::x86_avx_cvtdq2_pd_256; // "86.avx.cvtdq2.pd.256" 4693 case 's': // 1 string to match. 4694 if (NameR.substr(16, 4) != ".256") 4695 break; 4696 return Intrinsic::x86_avx_cvtdq2_ps_256; // "86.avx.cvtdq2.ps.256" 4697 } 4698 break; 4699 } 4700 break; 4701 case 'm': // 2 strings to match. 4702 if (NameR.substr(8, 7) != "ovmsk.p") 4703 break; 4704 switch (NameR[15]) { 4705 default: break; 4706 case 'd': // 1 string to match. 4707 if (NameR.substr(16, 4) != ".256") 4708 break; 4709 return Intrinsic::x86_avx_movmsk_pd_256; // "86.avx.movmsk.pd.256" 4710 case 's': // 1 string to match. 4711 if (NameR.substr(16, 4) != ".256") 4712 break; 4713 return Intrinsic::x86_avx_movmsk_ps_256; // "86.avx.movmsk.ps.256" 4714 } 4715 break; 4716 case 's': // 3 strings to match. 4717 if (NameR.substr(8, 6) != "toreu.") 4718 break; 4719 switch (NameR[14]) { 4720 default: break; 4721 case 'd': // 1 string to match. 4722 if (NameR.substr(15, 5) != "q.256") 4723 break; 4724 return Intrinsic::x86_avx_storeu_dq_256; // "86.avx.storeu.dq.256" 4725 case 'p': // 2 strings to match. 4726 switch (NameR[15]) { 4727 default: break; 4728 case 'd': // 1 string to match. 4729 if (NameR.substr(16, 4) != ".256") 4730 break; 4731 return Intrinsic::x86_avx_storeu_pd_256; // "86.avx.storeu.pd.256" 4732 case 's': // 1 string to match. 4733 if (NameR.substr(16, 4) != ".256") 4734 break; 4735 return Intrinsic::x86_avx_storeu_ps_256; // "86.avx.storeu.ps.256" 4736 } 4737 break; 4738 } 4739 break; 4740 case 'v': // 6 strings to match. 4741 switch (NameR[8]) { 4742 default: break; 4743 case 'p': // 2 strings to match. 4744 if (NameR.substr(9, 10) != "ermilvar.p") 4745 break; 4746 switch (NameR[19]) { 4747 default: break; 4748 case 'd': // 1 string to match. 4749 return Intrinsic::x86_avx_vpermilvar_pd; // "86.avx.vpermilvar.pd" 4750 case 's': // 1 string to match. 4751 return Intrinsic::x86_avx_vpermilvar_ps; // "86.avx.vpermilvar.ps" 4752 } 4753 break; 4754 case 't': // 4 strings to match. 4755 if (NameR.substr(9, 3) != "est") 4756 break; 4757 switch (NameR[12]) { 4758 default: break; 4759 case 'c': // 2 strings to match. 4760 if (NameR.substr(13, 2) != ".p") 4761 break; 4762 switch (NameR[15]) { 4763 default: break; 4764 case 'd': // 1 string to match. 4765 if (NameR.substr(16, 4) != ".256") 4766 break; 4767 return Intrinsic::x86_avx_vtestc_pd_256; // "86.avx.vtestc.pd.256" 4768 case 's': // 1 string to match. 4769 if (NameR.substr(16, 4) != ".256") 4770 break; 4771 return Intrinsic::x86_avx_vtestc_ps_256; // "86.avx.vtestc.ps.256" 4772 } 4773 break; 4774 case 'z': // 2 strings to match. 4775 if (NameR.substr(13, 2) != ".p") 4776 break; 4777 switch (NameR[15]) { 4778 default: break; 4779 case 'd': // 1 string to match. 4780 if (NameR.substr(16, 4) != ".256") 4781 break; 4782 return Intrinsic::x86_avx_vtestz_pd_256; // "86.avx.vtestz.pd.256" 4783 case 's': // 1 string to match. 4784 if (NameR.substr(16, 4) != ".256") 4785 break; 4786 return Intrinsic::x86_avx_vtestz_ps_256; // "86.avx.vtestz.ps.256" 4787 } 4788 break; 4789 } 4790 break; 4791 } 4792 break; 4793 } 4794 break; 4795 case 's': // 16 strings to match. 4796 if (NameR[4] != 's') 4797 break; 4798 switch (NameR[5]) { 4799 default: break; 4800 case 'e': // 7 strings to match. 4801 switch (NameR[6]) { 4802 default: break; 4803 case '2': // 4 strings to match. 4804 if (NameR.substr(7, 2) != ".p") 4805 break; 4806 switch (NameR[9]) { 4807 default: break; 4808 case 'a': // 3 strings to match. 4809 if (NameR.substr(10, 2) != "ck") 4810 break; 4811 switch (NameR[12]) { 4812 default: break; 4813 case 's': // 2 strings to match. 4814 if (NameR[13] != 's') 4815 break; 4816 switch (NameR[14]) { 4817 default: break; 4818 case 'd': // 1 string to match. 4819 if (NameR.substr(15, 5) != "w.128") 4820 break; 4821 return Intrinsic::x86_sse2_packssdw_128; // "86.sse2.packssdw.128" 4822 case 'w': // 1 string to match. 4823 if (NameR.substr(15, 5) != "b.128") 4824 break; 4825 return Intrinsic::x86_sse2_packsswb_128; // "86.sse2.packsswb.128" 4826 } 4827 break; 4828 case 'u': // 1 string to match. 4829 if (NameR.substr(13, 7) != "swb.128") 4830 break; 4831 return Intrinsic::x86_sse2_packuswb_128; // "86.sse2.packuswb.128" 4832 } 4833 break; 4834 case 'm': // 1 string to match. 4835 if (NameR.substr(10, 10) != "ovmskb.128") 4836 break; 4837 return Intrinsic::x86_sse2_pmovmskb_128; // "86.sse2.pmovmskb.128" 4838 } 4839 break; 4840 case '4': // 3 strings to match. 4841 if (NameR.substr(7, 8) != "2.crc32.") 4842 break; 4843 switch (NameR[15]) { 4844 default: break; 4845 case '3': // 2 strings to match. 4846 if (NameR.substr(16, 2) != "2.") 4847 break; 4848 switch (NameR[18]) { 4849 default: break; 4850 case '1': // 1 string to match. 4851 if (NameR[19] != '6') 4852 break; 4853 return Intrinsic::x86_sse42_crc32_32_16; // "86.sse42.crc32.32.16" 4854 case '3': // 1 string to match. 4855 if (NameR[19] != '2') 4856 break; 4857 return Intrinsic::x86_sse42_crc32_32_32; // "86.sse42.crc32.32.32" 4858 } 4859 break; 4860 case '6': // 1 string to match. 4861 if (NameR.substr(16, 4) != "4.64") 4862 break; 4863 return Intrinsic::x86_sse42_crc32_64_64; // "86.sse42.crc32.64.64" 4864 } 4865 break; 4866 } 4867 break; 4868 case 's': // 9 strings to match. 4869 if (NameR.substr(6, 4) != "e3.p") 4870 break; 4871 switch (NameR[10]) { 4872 default: break; 4873 case 'h': // 4 strings to match. 4874 switch (NameR[11]) { 4875 default: break; 4876 case 'a': // 2 strings to match. 4877 if (NameR.substr(12, 3) != "dd.") 4878 break; 4879 switch (NameR[15]) { 4880 default: break; 4881 case 'd': // 1 string to match. 4882 if (NameR.substr(16, 4) != ".128") 4883 break; 4884 return Intrinsic::x86_ssse3_phadd_d_128; // "86.ssse3.phadd.d.128" 4885 case 'w': // 1 string to match. 4886 if (NameR.substr(16, 4) != ".128") 4887 break; 4888 return Intrinsic::x86_ssse3_phadd_w_128; // "86.ssse3.phadd.w.128" 4889 } 4890 break; 4891 case 's': // 2 strings to match. 4892 if (NameR.substr(12, 3) != "ub.") 4893 break; 4894 switch (NameR[15]) { 4895 default: break; 4896 case 'd': // 1 string to match. 4897 if (NameR.substr(16, 4) != ".128") 4898 break; 4899 return Intrinsic::x86_ssse3_phsub_d_128; // "86.ssse3.phsub.d.128" 4900 case 'w': // 1 string to match. 4901 if (NameR.substr(16, 4) != ".128") 4902 break; 4903 return Intrinsic::x86_ssse3_phsub_w_128; // "86.ssse3.phsub.w.128" 4904 } 4905 break; 4906 } 4907 break; 4908 case 'm': // 1 string to match. 4909 if (NameR.substr(11, 9) != "add.ub.sw") 4910 break; 4911 return Intrinsic::x86_ssse3_pmadd_ub_sw; // "86.ssse3.pmadd.ub.sw" 4912 case 's': // 4 strings to match. 4913 switch (NameR[11]) { 4914 default: break; 4915 case 'h': // 1 string to match. 4916 if (NameR.substr(12, 8) != "uf.b.128") 4917 break; 4918 return Intrinsic::x86_ssse3_pshuf_b_128; // "86.ssse3.pshuf.b.128" 4919 case 'i': // 3 strings to match. 4920 if (NameR.substr(12, 3) != "gn.") 4921 break; 4922 switch (NameR[15]) { 4923 default: break; 4924 case 'b': // 1 string to match. 4925 if (NameR.substr(16, 4) != ".128") 4926 break; 4927 return Intrinsic::x86_ssse3_psign_b_128; // "86.ssse3.psign.b.128" 4928 case 'd': // 1 string to match. 4929 if (NameR.substr(16, 4) != ".128") 4930 break; 4931 return Intrinsic::x86_ssse3_psign_d_128; // "86.ssse3.psign.d.128" 4932 case 'w': // 1 string to match. 4933 if (NameR.substr(16, 4) != ".128") 4934 break; 4935 return Intrinsic::x86_ssse3_psign_w_128; // "86.ssse3.psign.w.128" 4936 } 4937 break; 4938 } 4939 break; 4940 } 4941 break; 4942 } 4943 break; 4944 } 4945 break; 4946 case 21: // 12 strings to match. 4947 if (NameR.substr(0, 3) != "86.") 4948 break; 4949 switch (NameR[3]) { 4950 default: break; 4951 case 'a': // 6 strings to match. 4952 if (NameR.substr(4, 3) != "vx.") 4953 break; 4954 switch (NameR[7]) { 4955 default: break; 4956 case 'c': // 4 strings to match. 4957 if (NameR.substr(8, 2) != "vt") 4958 break; 4959 switch (NameR[10]) { 4960 default: break; 4961 case '.': // 2 strings to match. 4962 if (NameR[11] != 'p') 4963 break; 4964 switch (NameR[12]) { 4965 default: break; 4966 case 'd': // 1 string to match. 4967 if (NameR.substr(13, 8) != "2.ps.256") 4968 break; 4969 return Intrinsic::x86_avx_cvt_pd2_ps_256; // "86.avx.cvt.pd2.ps.256" 4970 case 's': // 1 string to match. 4971 if (NameR.substr(13, 8) != "2.pd.256") 4972 break; 4973 return Intrinsic::x86_avx_cvt_ps2_pd_256; // "86.avx.cvt.ps2.pd.256" 4974 } 4975 break; 4976 case 't': // 2 strings to match. 4977 if (NameR.substr(11, 2) != ".p") 4978 break; 4979 switch (NameR[13]) { 4980 default: break; 4981 case 'd': // 1 string to match. 4982 if (NameR.substr(14, 7) != "2dq.256") 4983 break; 4984 return Intrinsic::x86_avx_cvtt_pd2dq_256; // "86.avx.cvtt.pd2dq.256" 4985 case 's': // 1 string to match. 4986 if (NameR.substr(14, 7) != "2dq.256") 4987 break; 4988 return Intrinsic::x86_avx_cvtt_ps2dq_256; // "86.avx.cvtt.ps2dq.256" 4989 } 4990 break; 4991 } 4992 break; 4993 case 'v': // 2 strings to match. 4994 if (NameR.substr(8, 8) != "permil.p") 4995 break; 4996 switch (NameR[16]) { 4997 default: break; 4998 case 'd': // 1 string to match. 4999 if (NameR.substr(17, 4) != ".256") 5000 break; 5001 return Intrinsic::x86_avx_vpermil_pd_256; // "86.avx.vpermil.pd.256" 5002 case 's': // 1 string to match. 5003 if (NameR.substr(17, 4) != ".256") 5004 break; 5005 return Intrinsic::x86_avx_vpermil_ps_256; // "86.avx.vpermil.ps.256" 5006 } 5007 break; 5008 } 5009 break; 5010 case 's': // 6 strings to match. 5011 if (NameR[4] != 's') 5012 break; 5013 switch (NameR[5]) { 5014 default: break; 5015 case 'e': // 4 strings to match. 5016 if (NameR.substr(6, 7) != "42.pcmp") 5017 break; 5018 switch (NameR[13]) { 5019 default: break; 5020 case 'e': // 2 strings to match. 5021 if (NameR.substr(14, 3) != "str") 5022 break; 5023 switch (NameR[17]) { 5024 default: break; 5025 case 'i': // 1 string to match. 5026 if (NameR.substr(18, 3) != "128") 5027 break; 5028 return Intrinsic::x86_sse42_pcmpestri128; // "86.sse42.pcmpestri128" 5029 case 'm': // 1 string to match. 5030 if (NameR.substr(18, 3) != "128") 5031 break; 5032 return Intrinsic::x86_sse42_pcmpestrm128; // "86.sse42.pcmpestrm128" 5033 } 5034 break; 5035 case 'i': // 2 strings to match. 5036 if (NameR.substr(14, 3) != "str") 5037 break; 5038 switch (NameR[17]) { 5039 default: break; 5040 case 'i': // 1 string to match. 5041 if (NameR.substr(18, 3) != "128") 5042 break; 5043 return Intrinsic::x86_sse42_pcmpistri128; // "86.sse42.pcmpistri128" 5044 case 'm': // 1 string to match. 5045 if (NameR.substr(18, 3) != "128") 5046 break; 5047 return Intrinsic::x86_sse42_pcmpistrm128; // "86.sse42.pcmpistrm128" 5048 } 5049 break; 5050 } 5051 break; 5052 case 's': // 2 strings to match. 5053 if (NameR.substr(6, 5) != "e3.ph") 5054 break; 5055 switch (NameR[11]) { 5056 default: break; 5057 case 'a': // 1 string to match. 5058 if (NameR.substr(12, 9) != "dd.sw.128") 5059 break; 5060 return Intrinsic::x86_ssse3_phadd_sw_128; // "86.ssse3.phadd.sw.128" 5061 case 's': // 1 string to match. 5062 if (NameR.substr(12, 9) != "ub.sw.128") 5063 break; 5064 return Intrinsic::x86_ssse3_phsub_sw_128; // "86.ssse3.phsub.sw.128" 5065 } 5066 break; 5067 } 5068 break; 5069 } 5070 break; 5071 case 22: // 14 strings to match. 5072 if (NameR.substr(0, 3) != "86.") 5073 break; 5074 switch (NameR[3]) { 5075 default: break; 5076 case 'a': // 4 strings to match. 5077 if (NameR.substr(4, 3) != "vx.") 5078 break; 5079 switch (NameR[7]) { 5080 default: break; 5081 case 'm': // 2 strings to match. 5082 if (NameR.substr(8, 9) != "askload.p") 5083 break; 5084 switch (NameR[17]) { 5085 default: break; 5086 case 'd': // 1 string to match. 5087 if (NameR.substr(18, 4) != ".256") 5088 break; 5089 return Intrinsic::x86_avx_maskload_pd_256; // "86.avx.maskload.pd.256" 5090 case 's': // 1 string to match. 5091 if (NameR.substr(18, 4) != ".256") 5092 break; 5093 return Intrinsic::x86_avx_maskload_ps_256; // "86.avx.maskload.ps.256" 5094 } 5095 break; 5096 case 'v': // 2 strings to match. 5097 if (NameR.substr(8, 9) != "testnzc.p") 5098 break; 5099 switch (NameR[17]) { 5100 default: break; 5101 case 'd': // 1 string to match. 5102 if (NameR.substr(18, 4) != ".256") 5103 break; 5104 return Intrinsic::x86_avx_vtestnzc_pd_256; // "86.avx.vtestnzc.pd.256" 5105 case 's': // 1 string to match. 5106 if (NameR.substr(18, 4) != ".256") 5107 break; 5108 return Intrinsic::x86_avx_vtestnzc_ps_256; // "86.avx.vtestnzc.ps.256" 5109 } 5110 break; 5111 } 5112 break; 5113 case 's': // 10 strings to match. 5114 if (NameR.substr(4, 9) != "se42.pcmp") 5115 break; 5116 switch (NameR[13]) { 5117 default: break; 5118 case 'e': // 5 strings to match. 5119 if (NameR.substr(14, 4) != "stri") 5120 break; 5121 switch (NameR[18]) { 5122 default: break; 5123 case 'a': // 1 string to match. 5124 if (NameR.substr(19, 3) != "128") 5125 break; 5126 return Intrinsic::x86_sse42_pcmpestria128; // "86.sse42.pcmpestria128" 5127 case 'c': // 1 string to match. 5128 if (NameR.substr(19, 3) != "128") 5129 break; 5130 return Intrinsic::x86_sse42_pcmpestric128; // "86.sse42.pcmpestric128" 5131 case 'o': // 1 string to match. 5132 if (NameR.substr(19, 3) != "128") 5133 break; 5134 return Intrinsic::x86_sse42_pcmpestrio128; // "86.sse42.pcmpestrio128" 5135 case 's': // 1 string to match. 5136 if (NameR.substr(19, 3) != "128") 5137 break; 5138 return Intrinsic::x86_sse42_pcmpestris128; // "86.sse42.pcmpestris128" 5139 case 'z': // 1 string to match. 5140 if (NameR.substr(19, 3) != "128") 5141 break; 5142 return Intrinsic::x86_sse42_pcmpestriz128; // "86.sse42.pcmpestriz128" 5143 } 5144 break; 5145 case 'i': // 5 strings to match. 5146 if (NameR.substr(14, 4) != "stri") 5147 break; 5148 switch (NameR[18]) { 5149 default: break; 5150 case 'a': // 1 string to match. 5151 if (NameR.substr(19, 3) != "128") 5152 break; 5153 return Intrinsic::x86_sse42_pcmpistria128; // "86.sse42.pcmpistria128" 5154 case 'c': // 1 string to match. 5155 if (NameR.substr(19, 3) != "128") 5156 break; 5157 return Intrinsic::x86_sse42_pcmpistric128; // "86.sse42.pcmpistric128" 5158 case 'o': // 1 string to match. 5159 if (NameR.substr(19, 3) != "128") 5160 break; 5161 return Intrinsic::x86_sse42_pcmpistrio128; // "86.sse42.pcmpistrio128" 5162 case 's': // 1 string to match. 5163 if (NameR.substr(19, 3) != "128") 5164 break; 5165 return Intrinsic::x86_sse42_pcmpistris128; // "86.sse42.pcmpistris128" 5166 case 'z': // 1 string to match. 5167 if (NameR.substr(19, 3) != "128") 5168 break; 5169 return Intrinsic::x86_sse42_pcmpistriz128; // "86.sse42.pcmpistriz128" 5170 } 5171 break; 5172 } 5173 break; 5174 } 5175 break; 5176 case 23: // 4 strings to match. 5177 if (NameR.substr(0, 3) != "86.") 5178 break; 5179 switch (NameR[3]) { 5180 default: break; 5181 case 'a': // 3 strings to match. 5182 if (NameR.substr(4, 3) != "vx.") 5183 break; 5184 switch (NameR[7]) { 5185 default: break; 5186 case 'm': // 2 strings to match. 5187 if (NameR.substr(8, 10) != "askstore.p") 5188 break; 5189 switch (NameR[18]) { 5190 default: break; 5191 case 'd': // 1 string to match. 5192 if (NameR.substr(19, 4) != ".256") 5193 break; 5194 return Intrinsic::x86_avx_maskstore_pd_256; // "86.avx.maskstore.pd.256" 5195 case 's': // 1 string to match. 5196 if (NameR.substr(19, 4) != ".256") 5197 break; 5198 return Intrinsic::x86_avx_maskstore_ps_256; // "86.avx.maskstore.ps.256" 5199 } 5200 break; 5201 case 'v': // 1 string to match. 5202 if (NameR.substr(8, 15) != "broadcastss.256") 5203 break; 5204 return Intrinsic::x86_avx_vbroadcastss_256; // "86.avx.vbroadcastss.256" 5205 } 5206 break; 5207 case 's': // 1 string to match. 5208 if (NameR.substr(4, 19) != "sse3.pmul.hr.sw.128") 5209 break; 5210 return Intrinsic::x86_ssse3_pmul_hr_sw_128; // "86.ssse3.pmul.hr.sw.128" 5211 } 5212 break; 5213 case 24: // 8 strings to match. 5214 if (NameR.substr(0, 3) != "86.") 5215 break; 5216 switch (NameR[3]) { 5217 default: break; 5218 case 'a': // 7 strings to match. 5219 switch (NameR[4]) { 5220 default: break; 5221 case 'e': // 1 string to match. 5222 if (NameR.substr(5, 19) != "sni.aeskeygenassist") 5223 break; 5224 return Intrinsic::x86_aesni_aeskeygenassist; // "86.aesni.aeskeygenassist" 5225 case 'v': // 6 strings to match. 5226 if (NameR.substr(5, 3) != "x.v") 5227 break; 5228 switch (NameR[8]) { 5229 default: break; 5230 case 'b': // 1 string to match. 5231 if (NameR.substr(9, 15) != "roadcast.sd.256") 5232 break; 5233 return Intrinsic::x86_avx_vbroadcast_sd_256; // "86.avx.vbroadcast.sd.256" 5234 case 'p': // 5 strings to match. 5235 if (NameR.substr(9, 3) != "erm") 5236 break; 5237 switch (NameR[12]) { 5238 default: break; 5239 case '2': // 3 strings to match. 5240 if (NameR.substr(13, 5) != "f128.") 5241 break; 5242 switch (NameR[18]) { 5243 default: break; 5244 case 'p': // 2 strings to match. 5245 switch (NameR[19]) { 5246 default: break; 5247 case 'd': // 1 string to match. 5248 if (NameR.substr(20, 4) != ".256") 5249 break; 5250 return Intrinsic::x86_avx_vperm2f128_pd_256; // "86.avx.vperm2f128.pd.256" 5251 case 's': // 1 string to match. 5252 if (NameR.substr(20, 4) != ".256") 5253 break; 5254 return Intrinsic::x86_avx_vperm2f128_ps_256; // "86.avx.vperm2f128.ps.256" 5255 } 5256 break; 5257 case 's': // 1 string to match. 5258 if (NameR.substr(19, 5) != "i.256") 5259 break; 5260 return Intrinsic::x86_avx_vperm2f128_si_256; // "86.avx.vperm2f128.si.256" 5261 } 5262 break; 5263 case 'i': // 2 strings to match. 5264 if (NameR.substr(13, 6) != "lvar.p") 5265 break; 5266 switch (NameR[19]) { 5267 default: break; 5268 case 'd': // 1 string to match. 5269 if (NameR.substr(20, 4) != ".256") 5270 break; 5271 return Intrinsic::x86_avx_vpermilvar_pd_256; // "86.avx.vpermilvar.pd.256" 5272 case 's': // 1 string to match. 5273 if (NameR.substr(20, 4) != ".256") 5274 break; 5275 return Intrinsic::x86_avx_vpermilvar_ps_256; // "86.avx.vpermilvar.ps.256" 5276 } 5277 break; 5278 } 5279 break; 5280 } 5281 break; 5282 } 5283 break; 5284 case 's': // 1 string to match. 5285 if (NameR.substr(4, 20) != "sse3.pmadd.ub.sw.128") 5286 break; 5287 return Intrinsic::x86_ssse3_pmadd_ub_sw_128; // "86.ssse3.pmadd.ub.sw.128" 5288 } 5289 break; 5290 case 25: // 3 strings to match. 5291 if (NameR.substr(0, 19) != "86.avx.vinsertf128.") 5292 break; 5293 switch (NameR[19]) { 5294 default: break; 5295 case 'p': // 2 strings to match. 5296 switch (NameR[20]) { 5297 default: break; 5298 case 'd': // 1 string to match. 5299 if (NameR.substr(21, 4) != ".256") 5300 break; 5301 return Intrinsic::x86_avx_vinsertf128_pd_256; // "86.avx.vinsertf128.pd.256" 5302 case 's': // 1 string to match. 5303 if (NameR.substr(21, 4) != ".256") 5304 break; 5305 return Intrinsic::x86_avx_vinsertf128_ps_256; // "86.avx.vinsertf128.ps.256" 5306 } 5307 break; 5308 case 's': // 1 string to match. 5309 if (NameR.substr(20, 5) != "i.256") 5310 break; 5311 return Intrinsic::x86_avx_vinsertf128_si_256; // "86.avx.vinsertf128.si.256" 5312 } 5313 break; 5314 case 26: // 3 strings to match. 5315 if (NameR.substr(0, 20) != "86.avx.vextractf128.") 5316 break; 5317 switch (NameR[20]) { 5318 default: break; 5319 case 'p': // 2 strings to match. 5320 switch (NameR[21]) { 5321 default: break; 5322 case 'd': // 1 string to match. 5323 if (NameR.substr(22, 4) != ".256") 5324 break; 5325 return Intrinsic::x86_avx_vextractf128_pd_256; // "86.avx.vextractf128.pd.256" 5326 case 's': // 1 string to match. 5327 if (NameR.substr(22, 4) != ".256") 5328 break; 5329 return Intrinsic::x86_avx_vextractf128_ps_256; // "86.avx.vextractf128.ps.256" 5330 } 5331 break; 5332 case 's': // 1 string to match. 5333 if (NameR.substr(21, 5) != "i.256") 5334 break; 5335 return Intrinsic::x86_avx_vextractf128_si_256; // "86.avx.vextractf128.si.256" 5336 } 5337 break; 5338 case 28: // 2 strings to match. 5339 if (NameR.substr(0, 23) != "86.avx.vbroadcastf128.p") 5340 break; 5341 switch (NameR[23]) { 5342 default: break; 5343 case 'd': // 1 string to match. 5344 if (NameR.substr(24, 4) != ".256") 5345 break; 5346 return Intrinsic::x86_avx_vbroadcastf128_pd_256; // "86.avx.vbroadcastf128.pd.256" 5347 case 's': // 1 string to match. 5348 if (NameR.substr(24, 4) != ".256") 5349 break; 5350 return Intrinsic::x86_avx_vbroadcastf128_ps_256; // "86.avx.vbroadcastf128.ps.256" 5351 } 5352 break; 5353 } 5354 break; // end of 'x' case. 5355 } 5356 #endif 5357 5358 // Verifier::visitIntrinsicFunctionCall code. 5359 #ifdef GET_INTRINSIC_VERIFIER 5360 switch (ID) { 5361 default: assert(0 && "Invalid intrinsic!"); 5362 case Intrinsic::eh_unwind_init: // llvm.eh.unwind.init 5363 case Intrinsic::trap: // llvm.trap 5364 case Intrinsic::x86_avx_vzeroall: // llvm.x86.avx.vzeroall 5365 case Intrinsic::x86_avx_vzeroupper: // llvm.x86.avx.vzeroupper 5366 case Intrinsic::x86_mmx_emms: // llvm.x86.mmx.emms 5367 case Intrinsic::x86_mmx_femms: // llvm.x86.mmx.femms 5368 case Intrinsic::x86_sse2_lfence: // llvm.x86.sse2.lfence 5369 case Intrinsic::x86_sse2_mfence: // llvm.x86.sse2.mfence 5370 case Intrinsic::x86_sse_sfence: // llvm.x86.sse.sfence 5371 VerifyIntrinsicPrototype(ID, IF, 0, 0); 5372 break; 5373 case Intrinsic::memcpy: // llvm.memcpy 5374 case Intrinsic::memmove: // llvm.memmove 5375 VerifyIntrinsicPrototype(ID, IF, 0, 5, MVT::iPTRAny, MVT::iPTRAny, MVT::iAny, MVT::i32, MVT::i1); 5376 break; 5377 case Intrinsic::memset: // llvm.memset 5378 VerifyIntrinsicPrototype(ID, IF, 0, 5, MVT::iPTRAny, MVT::i8, MVT::iAny, MVT::i32, MVT::i1); 5379 break; 5380 case Intrinsic::invariant_end: // llvm.invariant.end 5381 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::i64, MVT::iPTR); 5382 break; 5383 case Intrinsic::eh_sjlj_callsite: // llvm.eh.sjlj.callsite 5384 case Intrinsic::eh_sjlj_dispatch_setup: // llvm.eh.sjlj.dispatch.setup 5385 case Intrinsic::pcmarker: // llvm.pcmarker 5386 VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::i32); 5387 break; 5388 case Intrinsic::x86_sse3_mwait: // llvm.x86.sse3.mwait 5389 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i32, MVT::i32); 5390 break; 5391 case Intrinsic::eh_return_i32: // llvm.eh.return.i32 5392 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i32, MVT::iPTR); 5393 break; 5394 case Intrinsic::eh_return_i64: // llvm.eh.return.i64 5395 case Intrinsic::lifetime_end: // llvm.lifetime.end 5396 case Intrinsic::lifetime_start: // llvm.lifetime.start 5397 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i64, MVT::iPTR); 5398 break; 5399 case Intrinsic::x86_int: // llvm.x86.int 5400 VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::i8); 5401 break; 5402 case Intrinsic::dbg_value: // llvm.dbg.value 5403 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::Metadata, MVT::i64, MVT::Metadata); 5404 break; 5405 case Intrinsic::dbg_declare: // llvm.dbg.declare 5406 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::Metadata, MVT::Metadata); 5407 break; 5408 case Intrinsic::eh_sjlj_functioncontext: // llvm.eh.sjlj.functioncontext 5409 case Intrinsic::eh_sjlj_longjmp: // llvm.eh.sjlj.longjmp 5410 case Intrinsic::stackrestore: // llvm.stackrestore 5411 case Intrinsic::vaend: // llvm.va_end 5412 case Intrinsic::vastart: // llvm.va_start 5413 case Intrinsic::x86_sse2_clflush: // llvm.x86.sse2.clflush 5414 case Intrinsic::x86_sse_ldmxcsr: // llvm.x86.sse.ldmxcsr 5415 case Intrinsic::x86_sse_stmxcsr: // llvm.x86.sse.stmxcsr 5416 VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::iPTR); 5417 break; 5418 case Intrinsic::eh_resume: // llvm.eh.resume 5419 case Intrinsic::longjmp: // llvm.longjmp 5420 case Intrinsic::siglongjmp: // llvm.siglongjmp 5421 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::i32); 5422 break; 5423 case Intrinsic::x86_sse3_monitor: // llvm.x86.sse3.monitor 5424 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::i32, MVT::i32); 5425 break; 5426 case Intrinsic::prefetch: // llvm.prefetch 5427 VerifyIntrinsicPrototype(ID, IF, 0, 4, MVT::iPTR, MVT::i32, MVT::i32, MVT::i32); 5428 break; 5429 case Intrinsic::vacopy: // llvm.va_copy 5430 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR); 5431 break; 5432 case Intrinsic::init_trampoline: // llvm.init.trampoline 5433 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::iPTR, MVT::iPTR); 5434 break; 5435 case Intrinsic::var_annotation: // llvm.var.annotation 5436 VerifyIntrinsicPrototype(ID, IF, 0, 4, MVT::iPTR, MVT::iPTR, MVT::iPTR, MVT::i32); 5437 break; 5438 case Intrinsic::gcwrite: // llvm.gcwrite 5439 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::iPTR, MVT::iPTR); 5440 break; 5441 case Intrinsic::stackprotector: // llvm.stackprotector 5442 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR); 5443 break; 5444 case Intrinsic::x86_sse2_storeu_dq: // llvm.x86.sse2.storeu.dq 5445 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v16i8); 5446 break; 5447 case Intrinsic::x86_sse2_storeu_pd: // llvm.x86.sse2.storeu.pd 5448 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v2f64); 5449 break; 5450 case Intrinsic::x86_avx_maskstore_pd: // llvm.x86.avx.maskstore.pd 5451 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v2f64, MVT::v2f64); 5452 break; 5453 case Intrinsic::x86_avx_storeu_dq_256: // llvm.x86.avx.storeu.dq.256 5454 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v32i8); 5455 break; 5456 case Intrinsic::x86_sse_storeu_ps: // llvm.x86.sse.storeu.ps 5457 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4f32); 5458 break; 5459 case Intrinsic::x86_avx_maskstore_ps: // llvm.x86.avx.maskstore.ps 5460 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v4f32, MVT::v4f32); 5461 break; 5462 case Intrinsic::x86_avx_movnt_pd_256: // llvm.x86.avx.movnt.pd.256 5463 case Intrinsic::x86_avx_storeu_pd_256: // llvm.x86.avx.storeu.pd.256 5464 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4f64); 5465 break; 5466 case Intrinsic::x86_avx_maskstore_pd_256: // llvm.x86.avx.maskstore.pd.256 5467 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v4f64, MVT::v4f64); 5468 break; 5469 case Intrinsic::x86_sse2_storel_dq: // llvm.x86.sse2.storel.dq 5470 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4i32); 5471 break; 5472 case Intrinsic::x86_avx_movnt_dq_256: // llvm.x86.avx.movnt.dq.256 5473 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4i64); 5474 break; 5475 case Intrinsic::x86_avx_movnt_ps_256: // llvm.x86.avx.movnt.ps.256 5476 case Intrinsic::x86_avx_storeu_ps_256: // llvm.x86.avx.storeu.ps.256 5477 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v8f32); 5478 break; 5479 case Intrinsic::x86_avx_maskstore_ps_256: // llvm.x86.avx.maskstore.ps.256 5480 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v8f32, MVT::v8f32); 5481 break; 5482 case Intrinsic::gcroot: // llvm.gcroot 5483 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR); 5484 break; 5485 case Intrinsic::x86_mmx_movnt_dq: // llvm.x86.mmx.movnt.dq 5486 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::x86mmx); 5487 break; 5488 case Intrinsic::x86_sse2_maskmov_dqu: // llvm.x86.sse2.maskmov.dqu 5489 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::v16i8, MVT::v16i8, MVT::iPTR); 5490 break; 5491 case Intrinsic::x86_mmx_maskmovq: // llvm.x86.mmx.maskmovq 5492 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::x86mmx, MVT::x86mmx, MVT::iPTR); 5493 break; 5494 case Intrinsic::ptr_annotation: // llvm.ptr.annotation 5495 VerifyIntrinsicPrototype(ID, IF, 1, 4, MVT::iPTRAny, ~0, MVT::iPTR, MVT::iPTR, MVT::i32); 5496 break; 5497 case Intrinsic::sin: // llvm.sin 5498 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); 5499 break; 5500 case Intrinsic::cos: // llvm.cos 5501 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); 5502 break; 5503 case Intrinsic::pow: // llvm.pow 5504 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::fAny, ~0, ~0); 5505 break; 5506 case Intrinsic::log: // llvm.log 5507 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); 5508 break; 5509 case Intrinsic::log10: // llvm.log10 5510 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); 5511 break; 5512 case Intrinsic::log2: // llvm.log2 5513 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); 5514 break; 5515 case Intrinsic::exp: // llvm.exp 5516 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); 5517 break; 5518 case Intrinsic::exp2: // llvm.exp2 5519 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); 5520 break; 5521 case Intrinsic::fma: // llvm.fma 5522 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, ~0, ~0, ~0); 5523 break; 5524 case Intrinsic::sqrt: // llvm.sqrt 5525 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); 5526 break; 5527 case Intrinsic::powi: // llvm.powi 5528 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::fAny, ~0, MVT::i32); 5529 break; 5530 case Intrinsic::convertff: // llvm.convertff 5531 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, MVT::fAny, MVT::i32, MVT::i32); 5532 break; 5533 case Intrinsic::convertfsi: // llvm.convertfsi 5534 case Intrinsic::convertfui: // llvm.convertfui 5535 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, MVT::iAny, MVT::i32, MVT::i32); 5536 break; 5537 case Intrinsic::expect: // llvm.expect 5538 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iAny, ~0, ~0); 5539 break; 5540 case Intrinsic::bswap: // llvm.bswap 5541 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0); 5542 break; 5543 case Intrinsic::ctpop: // llvm.ctpop 5544 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0); 5545 break; 5546 case Intrinsic::ctlz: // llvm.ctlz 5547 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0); 5548 break; 5549 case Intrinsic::cttz: // llvm.cttz 5550 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0); 5551 break; 5552 case Intrinsic::annotation: // llvm.annotation 5553 VerifyIntrinsicPrototype(ID, IF, 1, 4, MVT::iAny, ~0, MVT::iPTR, MVT::iPTR, MVT::i32); 5554 break; 5555 case Intrinsic::convertsif: // llvm.convertsif 5556 case Intrinsic::convertuif: // llvm.convertuif 5557 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::iAny, MVT::fAny, MVT::i32, MVT::i32); 5558 break; 5559 case Intrinsic::convertss: // llvm.convertss 5560 case Intrinsic::convertsu: // llvm.convertsu 5561 case Intrinsic::convertus: // llvm.convertus 5562 case Intrinsic::convertuu: // llvm.convertuu 5563 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::iAny, MVT::iAny, MVT::i32, MVT::i32); 5564 break; 5565 case Intrinsic::objectsize: // llvm.objectsize 5566 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iAny, MVT::iPTR, MVT::i1); 5567 break; 5568 case Intrinsic::sadd_with_overflow: // llvm.sadd.with.overflow 5569 VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); 5570 break; 5571 case Intrinsic::uadd_with_overflow: // llvm.uadd.with.overflow 5572 VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); 5573 break; 5574 case Intrinsic::ssub_with_overflow: // llvm.ssub.with.overflow 5575 VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); 5576 break; 5577 case Intrinsic::usub_with_overflow: // llvm.usub.with.overflow 5578 VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); 5579 break; 5580 case Intrinsic::smul_with_overflow: // llvm.smul.with.overflow 5581 VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); 5582 break; 5583 case Intrinsic::umul_with_overflow: // llvm.umul.with.overflow 5584 VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); 5585 break; 5586 case Intrinsic::invariant_start: // llvm.invariant.start 5587 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iPTR, MVT::i64, MVT::iPTR); 5588 break; 5589 case Intrinsic::convert_from_fp16: // llvm.convert.from.fp16 5590 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::f32, MVT::i16); 5591 break; 5592 case Intrinsic::convert_to_fp16: // llvm.convert.to.fp16 5593 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i16, MVT::f32); 5594 break; 5595 case Intrinsic::flt_rounds: // llvm.flt.rounds 5596 VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::i32); 5597 break; 5598 case Intrinsic::x86_sse42_crc32_32_16: // llvm.x86.sse42.crc32.32.16 5599 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i16); 5600 break; 5601 case Intrinsic::x86_sse42_crc32_32_32: // llvm.x86.sse42.crc32.32.32 5602 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i32); 5603 break; 5604 case Intrinsic::x86_sse42_crc32_32_8: // llvm.x86.sse42.crc32.32.8 5605 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i8); 5606 break; 5607 case Intrinsic::eh_sjlj_setjmp: // llvm.eh.sjlj.setjmp 5608 case Intrinsic::eh_typeid_for: // llvm.eh.typeid.for 5609 case Intrinsic::setjmp: // llvm.setjmp 5610 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::iPTR); 5611 break; 5612 case Intrinsic::sigsetjmp: // llvm.sigsetjmp 5613 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::iPTR, MVT::i32); 5614 break; 5615 case Intrinsic::eh_selector: // llvm.eh.selector 5616 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::i32, MVT::iPTR, MVT::iPTR, MVT::isVoid); 5617 break; 5618 case Intrinsic::x86_sse2_pmovmskb_128: // llvm.x86.sse2.pmovmskb.128 5619 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v16i8); 5620 break; 5621 case Intrinsic::x86_sse41_pextrb: // llvm.x86.sse41.pextrb 5622 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v16i8, MVT::i32); 5623 break; 5624 case Intrinsic::x86_sse42_pcmpestri128: // llvm.x86.sse42.pcmpestri128 5625 case Intrinsic::x86_sse42_pcmpestria128: // llvm.x86.sse42.pcmpestria128 5626 case Intrinsic::x86_sse42_pcmpestric128: // llvm.x86.sse42.pcmpestric128 5627 case Intrinsic::x86_sse42_pcmpestrio128: // llvm.x86.sse42.pcmpestrio128 5628 case Intrinsic::x86_sse42_pcmpestris128: // llvm.x86.sse42.pcmpestris128 5629 case Intrinsic::x86_sse42_pcmpestriz128: // llvm.x86.sse42.pcmpestriz128 5630 VerifyIntrinsicPrototype(ID, IF, 1, 5, MVT::i32, MVT::v16i8, MVT::i32, MVT::v16i8, MVT::i32, MVT::i8); 5631 break; 5632 case Intrinsic::x86_sse42_pcmpistri128: // llvm.x86.sse42.pcmpistri128 5633 case Intrinsic::x86_sse42_pcmpistria128: // llvm.x86.sse42.pcmpistria128 5634 case Intrinsic::x86_sse42_pcmpistric128: // llvm.x86.sse42.pcmpistric128 5635 case Intrinsic::x86_sse42_pcmpistrio128: // llvm.x86.sse42.pcmpistrio128 5636 case Intrinsic::x86_sse42_pcmpistris128: // llvm.x86.sse42.pcmpistris128 5637 case Intrinsic::x86_sse42_pcmpistriz128: // llvm.x86.sse42.pcmpistriz128 5638 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::i32, MVT::v16i8, MVT::v16i8, MVT::i8); 5639 break; 5640 case Intrinsic::x86_sse2_cvtsd2si: // llvm.x86.sse2.cvtsd2si 5641 case Intrinsic::x86_sse2_cvttsd2si: // llvm.x86.sse2.cvttsd2si 5642 case Intrinsic::x86_sse2_movmsk_pd: // llvm.x86.sse2.movmsk.pd 5643 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v2f64); 5644 break; 5645 case Intrinsic::x86_avx_vtestc_pd: // llvm.x86.avx.vtestc.pd 5646 case Intrinsic::x86_avx_vtestnzc_pd: // llvm.x86.avx.vtestnzc.pd 5647 case Intrinsic::x86_avx_vtestz_pd: // llvm.x86.avx.vtestz.pd 5648 case Intrinsic::x86_sse2_comieq_sd: // llvm.x86.sse2.comieq.sd 5649 case Intrinsic::x86_sse2_comige_sd: // llvm.x86.sse2.comige.sd 5650 case Intrinsic::x86_sse2_comigt_sd: // llvm.x86.sse2.comigt.sd 5651 case Intrinsic::x86_sse2_comile_sd: // llvm.x86.sse2.comile.sd 5652 case Intrinsic::x86_sse2_comilt_sd: // llvm.x86.sse2.comilt.sd 5653 case Intrinsic::x86_sse2_comineq_sd: // llvm.x86.sse2.comineq.sd 5654 case Intrinsic::x86_sse2_ucomieq_sd: // llvm.x86.sse2.ucomieq.sd 5655 case Intrinsic::x86_sse2_ucomige_sd: // llvm.x86.sse2.ucomige.sd 5656 case Intrinsic::x86_sse2_ucomigt_sd: // llvm.x86.sse2.ucomigt.sd 5657 case Intrinsic::x86_sse2_ucomile_sd: // llvm.x86.sse2.ucomile.sd 5658 case Intrinsic::x86_sse2_ucomilt_sd: // llvm.x86.sse2.ucomilt.sd 5659 case Intrinsic::x86_sse2_ucomineq_sd: // llvm.x86.sse2.ucomineq.sd 5660 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v2f64, MVT::v2f64); 5661 break; 5662 case Intrinsic::x86_sse_cvtss2si: // llvm.x86.sse.cvtss2si 5663 case Intrinsic::x86_sse_cvttss2si: // llvm.x86.sse.cvttss2si 5664 case Intrinsic::x86_sse_movmsk_ps: // llvm.x86.sse.movmsk.ps 5665 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v4f32); 5666 break; 5667 case Intrinsic::x86_sse41_extractps: // llvm.x86.sse41.extractps 5668 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f32, MVT::i32); 5669 break; 5670 case Intrinsic::x86_avx_vtestc_ps: // llvm.x86.avx.vtestc.ps 5671 case Intrinsic::x86_avx_vtestnzc_ps: // llvm.x86.avx.vtestnzc.ps 5672 case Intrinsic::x86_avx_vtestz_ps: // llvm.x86.avx.vtestz.ps 5673 case Intrinsic::x86_sse41_ptestc: // llvm.x86.sse41.ptestc 5674 case Intrinsic::x86_sse41_ptestnzc: // llvm.x86.sse41.ptestnzc 5675 case Intrinsic::x86_sse41_ptestz: // llvm.x86.sse41.ptestz 5676 case Intrinsic::x86_sse_comieq_ss: // llvm.x86.sse.comieq.ss 5677 case Intrinsic::x86_sse_comige_ss: // llvm.x86.sse.comige.ss 5678 case Intrinsic::x86_sse_comigt_ss: // llvm.x86.sse.comigt.ss 5679 case Intrinsic::x86_sse_comile_ss: // llvm.x86.sse.comile.ss 5680 case Intrinsic::x86_sse_comilt_ss: // llvm.x86.sse.comilt.ss 5681 case Intrinsic::x86_sse_comineq_ss: // llvm.x86.sse.comineq.ss 5682 case Intrinsic::x86_sse_ucomieq_ss: // llvm.x86.sse.ucomieq.ss 5683 case Intrinsic::x86_sse_ucomige_ss: // llvm.x86.sse.ucomige.ss 5684 case Intrinsic::x86_sse_ucomigt_ss: // llvm.x86.sse.ucomigt.ss 5685 case Intrinsic::x86_sse_ucomile_ss: // llvm.x86.sse.ucomile.ss 5686 case Intrinsic::x86_sse_ucomilt_ss: // llvm.x86.sse.ucomilt.ss 5687 case Intrinsic::x86_sse_ucomineq_ss: // llvm.x86.sse.ucomineq.ss 5688 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f32, MVT::v4f32); 5689 break; 5690 case Intrinsic::x86_avx_movmsk_pd_256: // llvm.x86.avx.movmsk.pd.256 5691 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v4f64); 5692 break; 5693 case Intrinsic::x86_avx_vtestc_pd_256: // llvm.x86.avx.vtestc.pd.256 5694 case Intrinsic::x86_avx_vtestnzc_pd_256: // llvm.x86.avx.vtestnzc.pd.256 5695 case Intrinsic::x86_avx_vtestz_pd_256: // llvm.x86.avx.vtestz.pd.256 5696 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f64, MVT::v4f64); 5697 break; 5698 case Intrinsic::x86_sse41_pextrd: // llvm.x86.sse41.pextrd 5699 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4i32, MVT::i32); 5700 break; 5701 case Intrinsic::x86_avx_ptestc_256: // llvm.x86.avx.ptestc.256 5702 case Intrinsic::x86_avx_ptestnzc_256: // llvm.x86.avx.ptestnzc.256 5703 case Intrinsic::x86_avx_ptestz_256: // llvm.x86.avx.ptestz.256 5704 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4i64, MVT::v4i64); 5705 break; 5706 case Intrinsic::x86_avx_movmsk_ps_256: // llvm.x86.avx.movmsk.ps.256 5707 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v8f32); 5708 break; 5709 case Intrinsic::x86_avx_vtestc_ps_256: // llvm.x86.avx.vtestc.ps.256 5710 case Intrinsic::x86_avx_vtestnzc_ps_256: // llvm.x86.avx.vtestnzc.ps.256 5711 case Intrinsic::x86_avx_vtestz_ps_256: // llvm.x86.avx.vtestz.ps.256 5712 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v8f32, MVT::v8f32); 5713 break; 5714 case Intrinsic::x86_mmx_pmovmskb: // llvm.x86.mmx.pmovmskb 5715 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::x86mmx); 5716 break; 5717 case Intrinsic::x86_mmx_pextr_w: // llvm.x86.mmx.pextr.w 5718 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::x86mmx, MVT::i32); 5719 break; 5720 case Intrinsic::readcyclecounter: // llvm.readcyclecounter 5721 VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::i64); 5722 break; 5723 case Intrinsic::x86_sse42_crc32_64_64: // llvm.x86.sse42.crc32.64.64 5724 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::i64, MVT::i64); 5725 break; 5726 case Intrinsic::x86_sse42_crc32_64_8: // llvm.x86.sse42.crc32.64.8 5727 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::i64, MVT::i8); 5728 break; 5729 case Intrinsic::x86_sse2_cvtsd2si64: // llvm.x86.sse2.cvtsd2si64 5730 case Intrinsic::x86_sse2_cvttsd2si64: // llvm.x86.sse2.cvttsd2si64 5731 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i64, MVT::v2f64); 5732 break; 5733 case Intrinsic::x86_sse41_pextrq: // llvm.x86.sse41.pextrq 5734 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::v2i64, MVT::i32); 5735 break; 5736 case Intrinsic::x86_sse_cvtss2si64: // llvm.x86.sse.cvtss2si64 5737 case Intrinsic::x86_sse_cvttss2si64: // llvm.x86.sse.cvttss2si64 5738 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i64, MVT::v4f32); 5739 break; 5740 case Intrinsic::eh_exception: // llvm.eh.exception 5741 case Intrinsic::eh_sjlj_lsda: // llvm.eh.sjlj.lsda 5742 case Intrinsic::stacksave: // llvm.stacksave 5743 VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::iPTR); 5744 break; 5745 case Intrinsic::eh_dwarf_cfa: // llvm.eh.dwarf.cfa 5746 case Intrinsic::frameaddress: // llvm.frameaddress 5747 case Intrinsic::returnaddress: // llvm.returnaddress 5748 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iPTR, MVT::i32); 5749 break; 5750 case Intrinsic::adjust_trampoline: // llvm.adjust.trampoline 5751 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iPTR, MVT::iPTR); 5752 break; 5753 case Intrinsic::gcread: // llvm.gcread 5754 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iPTR, MVT::iPTR, MVT::iPTR); 5755 break; 5756 case Intrinsic::x86_sse3_ldu_dq: // llvm.x86.sse3.ldu.dq 5757 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v16i8, MVT::iPTR); 5758 break; 5759 case Intrinsic::x86_ssse3_pabs_b_128: // llvm.x86.ssse3.pabs.b.128 5760 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v16i8, MVT::v16i8); 5761 break; 5762 case Intrinsic::x86_sse42_pcmpestrm128: // llvm.x86.sse42.pcmpestrm128 5763 VerifyIntrinsicPrototype(ID, IF, 1, 5, MVT::v16i8, MVT::v16i8, MVT::i32, MVT::v16i8, MVT::i32, MVT::i8); 5764 break; 5765 case Intrinsic::x86_sse2_padds_b: // llvm.x86.sse2.padds.b 5766 case Intrinsic::x86_sse2_paddus_b: // llvm.x86.sse2.paddus.b 5767 case Intrinsic::x86_sse2_pavg_b: // llvm.x86.sse2.pavg.b 5768 case Intrinsic::x86_sse2_pcmpeq_b: // llvm.x86.sse2.pcmpeq.b 5769 case Intrinsic::x86_sse2_pcmpgt_b: // llvm.x86.sse2.pcmpgt.b 5770 case Intrinsic::x86_sse2_pmaxu_b: // llvm.x86.sse2.pmaxu.b 5771 case Intrinsic::x86_sse2_pminu_b: // llvm.x86.sse2.pminu.b 5772 case Intrinsic::x86_sse2_psubs_b: // llvm.x86.sse2.psubs.b 5773 case Intrinsic::x86_sse2_psubus_b: // llvm.x86.sse2.psubus.b 5774 case Intrinsic::x86_sse41_pmaxsb: // llvm.x86.sse41.pmaxsb 5775 case Intrinsic::x86_sse41_pminsb: // llvm.x86.sse41.pminsb 5776 case Intrinsic::x86_ssse3_pshuf_b_128: // llvm.x86.ssse3.pshuf.b.128 5777 case Intrinsic::x86_ssse3_psign_b_128: // llvm.x86.ssse3.psign.b.128 5778 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v16i8, MVT::v16i8, MVT::v16i8); 5779 break; 5780 case Intrinsic::x86_sse41_mpsadbw: // llvm.x86.sse41.mpsadbw 5781 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::i32); 5782 break; 5783 case Intrinsic::x86_sse42_pcmpistrm128: // llvm.x86.sse42.pcmpistrm128 5784 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::i8); 5785 break; 5786 case Intrinsic::x86_sse41_pblendvb: // llvm.x86.sse41.pblendvb 5787 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::v16i8); 5788 break; 5789 case Intrinsic::x86_sse2_packsswb_128: // llvm.x86.sse2.packsswb.128 5790 case Intrinsic::x86_sse2_packuswb_128: // llvm.x86.sse2.packuswb.128 5791 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v16i8, MVT::v8i16, MVT::v8i16); 5792 break; 5793 case Intrinsic::x86_avx_maskload_pd: // llvm.x86.avx.maskload.pd 5794 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::iPTR, MVT::v2f64); 5795 break; 5796 case Intrinsic::x86_sse2_sqrt_pd: // llvm.x86.sse2.sqrt.pd 5797 case Intrinsic::x86_sse2_sqrt_sd: // llvm.x86.sse2.sqrt.sd 5798 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v2f64); 5799 break; 5800 case Intrinsic::x86_sse2_cvtsi2sd: // llvm.x86.sse2.cvtsi2sd 5801 case Intrinsic::x86_sse41_round_pd: // llvm.x86.sse41.round.pd 5802 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i32); 5803 break; 5804 case Intrinsic::x86_sse2_cvtsi642sd: // llvm.x86.sse2.cvtsi642sd 5805 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i64); 5806 break; 5807 case Intrinsic::x86_avx_vpermil_pd: // llvm.x86.avx.vpermil.pd 5808 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i8); 5809 break; 5810 case Intrinsic::x86_sse2_add_sd: // llvm.x86.sse2.add.sd 5811 case Intrinsic::x86_sse2_div_sd: // llvm.x86.sse2.div.sd 5812 case Intrinsic::x86_sse2_max_pd: // llvm.x86.sse2.max.pd 5813 case Intrinsic::x86_sse2_max_sd: // llvm.x86.sse2.max.sd 5814 case Intrinsic::x86_sse2_min_pd: // llvm.x86.sse2.min.pd 5815 case Intrinsic::x86_sse2_min_sd: // llvm.x86.sse2.min.sd 5816 case Intrinsic::x86_sse2_mul_sd: // llvm.x86.sse2.mul.sd 5817 case Intrinsic::x86_sse2_sub_sd: // llvm.x86.sse2.sub.sd 5818 case Intrinsic::x86_sse3_addsub_pd: // llvm.x86.sse3.addsub.pd 5819 case Intrinsic::x86_sse3_hadd_pd: // llvm.x86.sse3.hadd.pd 5820 case Intrinsic::x86_sse3_hsub_pd: // llvm.x86.sse3.hsub.pd 5821 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v2f64); 5822 break; 5823 case Intrinsic::x86_sse41_blendpd: // llvm.x86.sse41.blendpd 5824 case Intrinsic::x86_sse41_dppd: // llvm.x86.sse41.dppd 5825 case Intrinsic::x86_sse41_round_sd: // llvm.x86.sse41.round.sd 5826 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::i32); 5827 break; 5828 case Intrinsic::x86_sse2_cmp_pd: // llvm.x86.sse2.cmp.pd 5829 case Intrinsic::x86_sse2_cmp_sd: // llvm.x86.sse2.cmp.sd 5830 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::i8); 5831 break; 5832 case Intrinsic::x86_sse41_blendvpd: // llvm.x86.sse41.blendvpd 5833 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::v2f64); 5834 break; 5835 case Intrinsic::x86_avx_vpermilvar_pd: // llvm.x86.avx.vpermilvar.pd 5836 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v2i64); 5837 break; 5838 case Intrinsic::x86_sse2_cvtss2sd: // llvm.x86.sse2.cvtss2sd 5839 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v4f32); 5840 break; 5841 case Intrinsic::x86_sse2_cvtps2pd: // llvm.x86.sse2.cvtps2pd 5842 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v4f32); 5843 break; 5844 case Intrinsic::x86_avx_vextractf128_pd_256: // llvm.x86.avx.vextractf128.pd.256 5845 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v4f64, MVT::i8); 5846 break; 5847 case Intrinsic::x86_sse2_cvtdq2pd: // llvm.x86.sse2.cvtdq2pd 5848 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v4i32); 5849 break; 5850 case Intrinsic::x86_sse_cvtpi2pd: // llvm.x86.sse.cvtpi2pd 5851 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::x86mmx); 5852 break; 5853 case Intrinsic::x86_sse41_movntdqa: // llvm.x86.sse41.movntdqa 5854 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::iPTR); 5855 break; 5856 case Intrinsic::x86_sse41_pmovsxbq: // llvm.x86.sse41.pmovsxbq 5857 case Intrinsic::x86_sse41_pmovzxbq: // llvm.x86.sse41.pmovzxbq 5858 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v16i8); 5859 break; 5860 case Intrinsic::x86_sse2_psad_bw: // llvm.x86.sse2.psad.bw 5861 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v16i8, MVT::v16i8); 5862 break; 5863 case Intrinsic::x86_aesni_aesimc: // llvm.x86.aesni.aesimc 5864 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v2i64); 5865 break; 5866 case Intrinsic::x86_sse2_psll_dq: // llvm.x86.sse2.psll.dq 5867 case Intrinsic::x86_sse2_psll_dq_bs: // llvm.x86.sse2.psll.dq.bs 5868 case Intrinsic::x86_sse2_pslli_q: // llvm.x86.sse2.pslli.q 5869 case Intrinsic::x86_sse2_psrl_dq: // llvm.x86.sse2.psrl.dq 5870 case Intrinsic::x86_sse2_psrl_dq_bs: // llvm.x86.sse2.psrl.dq.bs 5871 case Intrinsic::x86_sse2_psrli_q: // llvm.x86.sse2.psrli.q 5872 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::i32); 5873 break; 5874 case Intrinsic::x86_aesni_aeskeygenassist: // llvm.x86.aesni.aeskeygenassist 5875 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::i8); 5876 break; 5877 case Intrinsic::x86_aesni_aesdec: // llvm.x86.aesni.aesdec 5878 case Intrinsic::x86_aesni_aesdeclast: // llvm.x86.aesni.aesdeclast 5879 case Intrinsic::x86_aesni_aesenc: // llvm.x86.aesni.aesenc 5880 case Intrinsic::x86_aesni_aesenclast: // llvm.x86.aesni.aesenclast 5881 case Intrinsic::x86_sse2_psll_q: // llvm.x86.sse2.psll.q 5882 case Intrinsic::x86_sse2_psrl_q: // llvm.x86.sse2.psrl.q 5883 case Intrinsic::x86_sse41_pcmpeqq: // llvm.x86.sse41.pcmpeqq 5884 case Intrinsic::x86_sse42_pcmpgtq: // llvm.x86.sse42.pcmpgtq 5885 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::v2i64); 5886 break; 5887 case Intrinsic::x86_sse41_pmovsxdq: // llvm.x86.sse41.pmovsxdq 5888 case Intrinsic::x86_sse41_pmovzxdq: // llvm.x86.sse41.pmovzxdq 5889 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v4i32); 5890 break; 5891 case Intrinsic::x86_sse2_pmulu_dq: // llvm.x86.sse2.pmulu.dq 5892 case Intrinsic::x86_sse41_pmuldq: // llvm.x86.sse41.pmuldq 5893 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v4i32, MVT::v4i32); 5894 break; 5895 case Intrinsic::x86_sse41_pmovsxwq: // llvm.x86.sse41.pmovsxwq 5896 case Intrinsic::x86_sse41_pmovzxwq: // llvm.x86.sse41.pmovzxwq 5897 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v8i16); 5898 break; 5899 case Intrinsic::x86_avx_ldu_dq_256: // llvm.x86.avx.ldu.dq.256 5900 case Intrinsic::x86_avx_loadu_dq_256: // llvm.x86.avx.loadu.dq.256 5901 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v32i8, MVT::iPTR); 5902 break; 5903 case Intrinsic::x86_avx_vbroadcastss: // llvm.x86.avx.vbroadcastss 5904 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::iPTR); 5905 break; 5906 case Intrinsic::x86_avx_maskload_ps: // llvm.x86.avx.maskload.ps 5907 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::iPTR, MVT::v4f32); 5908 break; 5909 case Intrinsic::x86_sse2_cvtpd2ps: // llvm.x86.sse2.cvtpd2ps 5910 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v2f64); 5911 break; 5912 case Intrinsic::x86_sse_rcp_ps: // llvm.x86.sse.rcp.ps 5913 case Intrinsic::x86_sse_rcp_ss: // llvm.x86.sse.rcp.ss 5914 case Intrinsic::x86_sse_rsqrt_ps: // llvm.x86.sse.rsqrt.ps 5915 case Intrinsic::x86_sse_rsqrt_ss: // llvm.x86.sse.rsqrt.ss 5916 case Intrinsic::x86_sse_sqrt_ps: // llvm.x86.sse.sqrt.ps 5917 case Intrinsic::x86_sse_sqrt_ss: // llvm.x86.sse.sqrt.ss 5918 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4f32); 5919 break; 5920 case Intrinsic::x86_sse41_round_ps: // llvm.x86.sse41.round.ps 5921 case Intrinsic::x86_sse_cvtsi2ss: // llvm.x86.sse.cvtsi2ss 5922 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i32); 5923 break; 5924 case Intrinsic::x86_sse_cvtsi642ss: // llvm.x86.sse.cvtsi642ss 5925 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i64); 5926 break; 5927 case Intrinsic::x86_avx_vpermil_ps: // llvm.x86.avx.vpermil.ps 5928 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i8); 5929 break; 5930 case Intrinsic::x86_sse2_cvtsd2ss: // llvm.x86.sse2.cvtsd2ss 5931 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v2f64); 5932 break; 5933 case Intrinsic::x86_sse3_addsub_ps: // llvm.x86.sse3.addsub.ps 5934 case Intrinsic::x86_sse3_hadd_ps: // llvm.x86.sse3.hadd.ps 5935 case Intrinsic::x86_sse3_hsub_ps: // llvm.x86.sse3.hsub.ps 5936 case Intrinsic::x86_sse_add_ss: // llvm.x86.sse.add.ss 5937 case Intrinsic::x86_sse_div_ss: // llvm.x86.sse.div.ss 5938 case Intrinsic::x86_sse_max_ps: // llvm.x86.sse.max.ps 5939 case Intrinsic::x86_sse_max_ss: // llvm.x86.sse.max.ss 5940 case Intrinsic::x86_sse_min_ps: // llvm.x86.sse.min.ps 5941 case Intrinsic::x86_sse_min_ss: // llvm.x86.sse.min.ss 5942 case Intrinsic::x86_sse_mul_ss: // llvm.x86.sse.mul.ss 5943 case Intrinsic::x86_sse_sub_ss: // llvm.x86.sse.sub.ss 5944 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v4f32); 5945 break; 5946 case Intrinsic::x86_sse41_blendps: // llvm.x86.sse41.blendps 5947 case Intrinsic::x86_sse41_dpps: // llvm.x86.sse41.dpps 5948 case Intrinsic::x86_sse41_insertps: // llvm.x86.sse41.insertps 5949 case Intrinsic::x86_sse41_round_ss: // llvm.x86.sse41.round.ss 5950 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::i32); 5951 break; 5952 case Intrinsic::x86_sse_cmp_ps: // llvm.x86.sse.cmp.ps 5953 case Intrinsic::x86_sse_cmp_ss: // llvm.x86.sse.cmp.ss 5954 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::i8); 5955 break; 5956 case Intrinsic::x86_sse41_blendvps: // llvm.x86.sse41.blendvps 5957 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::v4f32); 5958 break; 5959 case Intrinsic::x86_avx_vpermilvar_ps: // llvm.x86.avx.vpermilvar.ps 5960 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v4i32); 5961 break; 5962 case Intrinsic::x86_sse_cvtpi2ps: // llvm.x86.sse.cvtpi2ps 5963 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::x86mmx); 5964 break; 5965 case Intrinsic::x86_avx_cvt_pd2_ps_256: // llvm.x86.avx.cvt.pd2.ps.256 5966 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4f64); 5967 break; 5968 case Intrinsic::x86_sse2_cvtdq2ps: // llvm.x86.sse2.cvtdq2ps 5969 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4i32); 5970 break; 5971 case Intrinsic::x86_avx_vextractf128_ps_256: // llvm.x86.avx.vextractf128.ps.256 5972 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v8f32, MVT::i8); 5973 break; 5974 case Intrinsic::x86_avx_loadu_pd_256: // llvm.x86.avx.loadu.pd.256 5975 case Intrinsic::x86_avx_vbroadcast_sd_256: // llvm.x86.avx.vbroadcast.sd.256 5976 case Intrinsic::x86_avx_vbroadcastf128_pd_256: // llvm.x86.avx.vbroadcastf128.pd.256 5977 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::iPTR); 5978 break; 5979 case Intrinsic::x86_avx_maskload_pd_256: // llvm.x86.avx.maskload.pd.256 5980 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::iPTR, MVT::v4f64); 5981 break; 5982 case Intrinsic::x86_avx_cvt_ps2_pd_256: // llvm.x86.avx.cvt.ps2.pd.256 5983 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4f32); 5984 break; 5985 case Intrinsic::x86_avx_sqrt_pd_256: // llvm.x86.avx.sqrt.pd.256 5986 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4f64); 5987 break; 5988 case Intrinsic::x86_avx_round_pd_256: // llvm.x86.avx.round.pd.256 5989 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::i32); 5990 break; 5991 case Intrinsic::x86_avx_vpermil_pd_256: // llvm.x86.avx.vpermil.pd.256 5992 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::i8); 5993 break; 5994 case Intrinsic::x86_avx_vinsertf128_pd_256: // llvm.x86.avx.vinsertf128.pd.256 5995 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v2f64, MVT::i8); 5996 break; 5997 case Intrinsic::x86_avx_addsub_pd_256: // llvm.x86.avx.addsub.pd.256 5998 case Intrinsic::x86_avx_hadd_pd_256: // llvm.x86.avx.hadd.pd.256 5999 case Intrinsic::x86_avx_hsub_pd_256: // llvm.x86.avx.hsub.pd.256 6000 case Intrinsic::x86_avx_max_pd_256: // llvm.x86.avx.max.pd.256 6001 case Intrinsic::x86_avx_min_pd_256: // llvm.x86.avx.min.pd.256 6002 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::v4f64); 6003 break; 6004 case Intrinsic::x86_avx_blend_pd_256: // llvm.x86.avx.blend.pd.256 6005 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::i32); 6006 break; 6007 case Intrinsic::x86_avx_cmp_pd_256: // llvm.x86.avx.cmp.pd.256 6008 case Intrinsic::x86_avx_vperm2f128_pd_256: // llvm.x86.avx.vperm2f128.pd.256 6009 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::i8); 6010 break; 6011 case Intrinsic::x86_avx_blendv_pd_256: // llvm.x86.avx.blendv.pd.256 6012 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::v4f64); 6013 break; 6014 case Intrinsic::x86_avx_vpermilvar_pd_256: // llvm.x86.avx.vpermilvar.pd.256 6015 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::v4i64); 6016 break; 6017 case Intrinsic::x86_avx_cvtdq2_pd_256: // llvm.x86.avx.cvtdq2.pd.256 6018 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4i32); 6019 break; 6020 case Intrinsic::x86_sse41_pmovsxbd: // llvm.x86.sse41.pmovsxbd 6021 case Intrinsic::x86_sse41_pmovzxbd: // llvm.x86.sse41.pmovzxbd 6022 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v16i8); 6023 break; 6024 case Intrinsic::x86_sse2_cvtpd2dq: // llvm.x86.sse2.cvtpd2dq 6025 case Intrinsic::x86_sse2_cvttpd2dq: // llvm.x86.sse2.cvttpd2dq 6026 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v2f64); 6027 break; 6028 case Intrinsic::x86_sse2_cvtps2dq: // llvm.x86.sse2.cvtps2dq 6029 case Intrinsic::x86_sse2_cvttps2dq: // llvm.x86.sse2.cvttps2dq 6030 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4f32); 6031 break; 6032 case Intrinsic::x86_avx_cvt_pd2dq_256: // llvm.x86.avx.cvt.pd2dq.256 6033 case Intrinsic::x86_avx_cvtt_pd2dq_256: // llvm.x86.avx.cvtt.pd2dq.256 6034 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4f64); 6035 break; 6036 case Intrinsic::x86_ssse3_pabs_d_128: // llvm.x86.ssse3.pabs.d.128 6037 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4i32); 6038 break; 6039 case Intrinsic::x86_sse2_pslli_d: // llvm.x86.sse2.pslli.d 6040 case Intrinsic::x86_sse2_psrai_d: // llvm.x86.sse2.psrai.d 6041 case Intrinsic::x86_sse2_psrli_d: // llvm.x86.sse2.psrli.d 6042 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v4i32, MVT::i32); 6043 break; 6044 case Intrinsic::x86_sse2_pcmpeq_d: // llvm.x86.sse2.pcmpeq.d 6045 case Intrinsic::x86_sse2_pcmpgt_d: // llvm.x86.sse2.pcmpgt.d 6046 case Intrinsic::x86_sse2_psll_d: // llvm.x86.sse2.psll.d 6047 case Intrinsic::x86_sse2_psra_d: // llvm.x86.sse2.psra.d 6048 case Intrinsic::x86_sse2_psrl_d: // llvm.x86.sse2.psrl.d 6049 case Intrinsic::x86_sse41_pmaxsd: // llvm.x86.sse41.pmaxsd 6050 case Intrinsic::x86_sse41_pmaxud: // llvm.x86.sse41.pmaxud 6051 case Intrinsic::x86_sse41_pminsd: // llvm.x86.sse41.pminsd 6052 case Intrinsic::x86_sse41_pminud: // llvm.x86.sse41.pminud 6053 case Intrinsic::x86_ssse3_phadd_d_128: // llvm.x86.ssse3.phadd.d.128 6054 case Intrinsic::x86_ssse3_phadd_sw_128: // llvm.x86.ssse3.phadd.sw.128 6055 case Intrinsic::x86_ssse3_phsub_d_128: // llvm.x86.ssse3.phsub.d.128 6056 case Intrinsic::x86_ssse3_psign_d_128: // llvm.x86.ssse3.psign.d.128 6057 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v4i32, MVT::v4i32); 6058 break; 6059 case Intrinsic::x86_sse41_pmovsxwd: // llvm.x86.sse41.pmovsxwd 6060 case Intrinsic::x86_sse41_pmovzxwd: // llvm.x86.sse41.pmovzxwd 6061 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v8i16); 6062 break; 6063 case Intrinsic::x86_sse2_pmadd_wd: // llvm.x86.sse2.pmadd.wd 6064 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v8i16, MVT::v8i16); 6065 break; 6066 case Intrinsic::x86_avx_vextractf128_si_256: // llvm.x86.avx.vextractf128.si.256 6067 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v8i32, MVT::i8); 6068 break; 6069 case Intrinsic::x86_avx_loadu_ps_256: // llvm.x86.avx.loadu.ps.256 6070 case Intrinsic::x86_avx_vbroadcastf128_ps_256: // llvm.x86.avx.vbroadcastf128.ps.256 6071 case Intrinsic::x86_avx_vbroadcastss_256: // llvm.x86.avx.vbroadcastss.256 6072 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::iPTR); 6073 break; 6074 case Intrinsic::x86_avx_maskload_ps_256: // llvm.x86.avx.maskload.ps.256 6075 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::iPTR, MVT::v8f32); 6076 break; 6077 case Intrinsic::x86_avx_rcp_ps_256: // llvm.x86.avx.rcp.ps.256 6078 case Intrinsic::x86_avx_rsqrt_ps_256: // llvm.x86.avx.rsqrt.ps.256 6079 case Intrinsic::x86_avx_sqrt_ps_256: // llvm.x86.avx.sqrt.ps.256 6080 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::v8f32); 6081 break; 6082 case Intrinsic::x86_avx_round_ps_256: // llvm.x86.avx.round.ps.256 6083 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::i32); 6084 break; 6085 case Intrinsic::x86_avx_vpermil_ps_256: // llvm.x86.avx.vpermil.ps.256 6086 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::i8); 6087 break; 6088 case Intrinsic::x86_avx_vinsertf128_ps_256: // llvm.x86.avx.vinsertf128.ps.256 6089 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v4f32, MVT::i8); 6090 break; 6091 case Intrinsic::x86_avx_addsub_ps_256: // llvm.x86.avx.addsub.ps.256 6092 case Intrinsic::x86_avx_hadd_ps_256: // llvm.x86.avx.hadd.ps.256 6093 case Intrinsic::x86_avx_hsub_ps_256: // llvm.x86.avx.hsub.ps.256 6094 case Intrinsic::x86_avx_max_ps_256: // llvm.x86.avx.max.ps.256 6095 case Intrinsic::x86_avx_min_ps_256: // llvm.x86.avx.min.ps.256 6096 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::v8f32); 6097 break; 6098 case Intrinsic::x86_avx_blend_ps_256: // llvm.x86.avx.blend.ps.256 6099 case Intrinsic::x86_avx_dp_ps_256: // llvm.x86.avx.dp.ps.256 6100 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::i32); 6101 break; 6102 case Intrinsic::x86_avx_cmp_ps_256: // llvm.x86.avx.cmp.ps.256 6103 case Intrinsic::x86_avx_vperm2f128_ps_256: // llvm.x86.avx.vperm2f128.ps.256 6104 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::i8); 6105 break; 6106 case Intrinsic::x86_avx_blendv_ps_256: // llvm.x86.avx.blendv.ps.256 6107 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::v8f32); 6108 break; 6109 case Intrinsic::x86_avx_vpermilvar_ps_256: // llvm.x86.avx.vpermilvar.ps.256 6110 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::v8i32); 6111 break; 6112 case Intrinsic::x86_avx_cvtdq2_ps_256: // llvm.x86.avx.cvtdq2.ps.256 6113 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::v8i32); 6114 break; 6115 case Intrinsic::x86_sse41_pmovsxbw: // llvm.x86.sse41.pmovsxbw 6116 case Intrinsic::x86_sse41_pmovzxbw: // llvm.x86.sse41.pmovzxbw 6117 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i16, MVT::v16i8); 6118 break; 6119 case Intrinsic::x86_sse2_packssdw_128: // llvm.x86.sse2.packssdw.128 6120 case Intrinsic::x86_sse41_packusdw: // llvm.x86.sse41.packusdw 6121 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v4i32, MVT::v4i32); 6122 break; 6123 case Intrinsic::x86_sse41_phminposuw: // llvm.x86.sse41.phminposuw 6124 case Intrinsic::x86_ssse3_pabs_w_128: // llvm.x86.ssse3.pabs.w.128 6125 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i16, MVT::v8i16); 6126 break; 6127 case Intrinsic::x86_sse2_pslli_w: // llvm.x86.sse2.pslli.w 6128 case Intrinsic::x86_sse2_psrai_w: // llvm.x86.sse2.psrai.w 6129 case Intrinsic::x86_sse2_psrli_w: // llvm.x86.sse2.psrli.w 6130 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v8i16, MVT::i32); 6131 break; 6132 case Intrinsic::x86_sse2_padds_w: // llvm.x86.sse2.padds.w 6133 case Intrinsic::x86_sse2_paddus_w: // llvm.x86.sse2.paddus.w 6134 case Intrinsic::x86_sse2_pavg_w: // llvm.x86.sse2.pavg.w 6135 case Intrinsic::x86_sse2_pcmpeq_w: // llvm.x86.sse2.pcmpeq.w 6136 case Intrinsic::x86_sse2_pcmpgt_w: // llvm.x86.sse2.pcmpgt.w 6137 case Intrinsic::x86_sse2_pmaxs_w: // llvm.x86.sse2.pmaxs.w 6138 case Intrinsic::x86_sse2_pmins_w: // llvm.x86.sse2.pmins.w 6139 case Intrinsic::x86_sse2_pmulh_w: // llvm.x86.sse2.pmulh.w 6140 case Intrinsic::x86_sse2_pmulhu_w: // llvm.x86.sse2.pmulhu.w 6141 case Intrinsic::x86_sse2_psll_w: // llvm.x86.sse2.psll.w 6142 case Intrinsic::x86_sse2_psra_w: // llvm.x86.sse2.psra.w 6143 case Intrinsic::x86_sse2_psrl_w: // llvm.x86.sse2.psrl.w 6144 case Intrinsic::x86_sse2_psubs_w: // llvm.x86.sse2.psubs.w 6145 case Intrinsic::x86_sse2_psubus_w: // llvm.x86.sse2.psubus.w 6146 case Intrinsic::x86_sse41_pmaxuw: // llvm.x86.sse41.pmaxuw 6147 case Intrinsic::x86_sse41_pminuw: // llvm.x86.sse41.pminuw 6148 case Intrinsic::x86_ssse3_phadd_w_128: // llvm.x86.ssse3.phadd.w.128 6149 case Intrinsic::x86_ssse3_phsub_sw_128: // llvm.x86.ssse3.phsub.sw.128 6150 case Intrinsic::x86_ssse3_phsub_w_128: // llvm.x86.ssse3.phsub.w.128 6151 case Intrinsic::x86_ssse3_pmadd_ub_sw_128: // llvm.x86.ssse3.pmadd.ub.sw.128 6152 case Intrinsic::x86_ssse3_pmul_hr_sw_128: // llvm.x86.ssse3.pmul.hr.sw.128 6153 case Intrinsic::x86_ssse3_psign_w_128: // llvm.x86.ssse3.psign.w.128 6154 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v8i16, MVT::v8i16); 6155 break; 6156 case Intrinsic::x86_sse41_pblendw: // llvm.x86.sse41.pblendw 6157 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i16, MVT::v8i16, MVT::v8i16, MVT::i32); 6158 break; 6159 case Intrinsic::x86_avx_cvt_ps2dq_256: // llvm.x86.avx.cvt.ps2dq.256 6160 case Intrinsic::x86_avx_cvtt_ps2dq_256: // llvm.x86.avx.cvtt.ps2dq.256 6161 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i32, MVT::v8f32); 6162 break; 6163 case Intrinsic::x86_avx_vinsertf128_si_256: // llvm.x86.avx.vinsertf128.si.256 6164 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i32, MVT::v8i32, MVT::v4i32, MVT::i8); 6165 break; 6166 case Intrinsic::x86_avx_vperm2f128_si_256: // llvm.x86.avx.vperm2f128.si.256 6167 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i32, MVT::v8i32, MVT::v8i32, MVT::i8); 6168 break; 6169 case Intrinsic::x86_sse_cvtpd2pi: // llvm.x86.sse.cvtpd2pi 6170 case Intrinsic::x86_sse_cvttpd2pi: // llvm.x86.sse.cvttpd2pi 6171 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::v2f64); 6172 break; 6173 case Intrinsic::x86_sse_cvtps2pi: // llvm.x86.sse.cvtps2pi 6174 case Intrinsic::x86_sse_cvttps2pi: // llvm.x86.sse.cvttps2pi 6175 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::v4f32); 6176 break; 6177 case Intrinsic::x86_3dnow_pf2id: // llvm.x86.3dnow.pf2id 6178 case Intrinsic::x86_3dnow_pfrcp: // llvm.x86.3dnow.pfrcp 6179 case Intrinsic::x86_3dnow_pfrsqrt: // llvm.x86.3dnow.pfrsqrt 6180 case Intrinsic::x86_3dnow_pi2fd: // llvm.x86.3dnow.pi2fd 6181 case Intrinsic::x86_3dnowa_pf2iw: // llvm.x86.3dnowa.pf2iw 6182 case Intrinsic::x86_3dnowa_pi2fw: // llvm.x86.3dnowa.pi2fw 6183 case Intrinsic::x86_3dnowa_pswapd: // llvm.x86.3dnowa.pswapd 6184 case Intrinsic::x86_ssse3_pabs_b: // llvm.x86.ssse3.pabs.b 6185 case Intrinsic::x86_ssse3_pabs_d: // llvm.x86.ssse3.pabs.d 6186 case Intrinsic::x86_ssse3_pabs_w: // llvm.x86.ssse3.pabs.w 6187 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::x86mmx); 6188 break; 6189 case Intrinsic::x86_mmx_pslli_d: // llvm.x86.mmx.pslli.d 6190 case Intrinsic::x86_mmx_pslli_q: // llvm.x86.mmx.pslli.q 6191 case Intrinsic::x86_mmx_pslli_w: // llvm.x86.mmx.pslli.w 6192 case Intrinsic::x86_mmx_psrai_d: // llvm.x86.mmx.psrai.d 6193 case Intrinsic::x86_mmx_psrai_w: // llvm.x86.mmx.psrai.w 6194 case Intrinsic::x86_mmx_psrli_d: // llvm.x86.mmx.psrli.d 6195 case Intrinsic::x86_mmx_psrli_q: // llvm.x86.mmx.psrli.q 6196 case Intrinsic::x86_mmx_psrli_w: // llvm.x86.mmx.psrli.w 6197 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::i32); 6198 break; 6199 case Intrinsic::x86_mmx_pinsr_w: // llvm.x86.mmx.pinsr.w 6200 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::x86mmx, MVT::x86mmx, MVT::i32, MVT::i32); 6201 break; 6202 case Intrinsic::x86_sse_pshuf_w: // llvm.x86.sse.pshuf.w 6203 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::i8); 6204 break; 6205 case Intrinsic::x86_3dnow_pavgusb: // llvm.x86.3dnow.pavgusb 6206 case Intrinsic::x86_3dnow_pfacc: // llvm.x86.3dnow.pfacc 6207 case Intrinsic::x86_3dnow_pfadd: // llvm.x86.3dnow.pfadd 6208 case Intrinsic::x86_3dnow_pfcmpeq: // llvm.x86.3dnow.pfcmpeq 6209 case Intrinsic::x86_3dnow_pfcmpge: // llvm.x86.3dnow.pfcmpge 6210 case Intrinsic::x86_3dnow_pfcmpgt: // llvm.x86.3dnow.pfcmpgt 6211 case Intrinsic::x86_3dnow_pfmax: // llvm.x86.3dnow.pfmax 6212 case Intrinsic::x86_3dnow_pfmin: // llvm.x86.3dnow.pfmin 6213 case Intrinsic::x86_3dnow_pfmul: // llvm.x86.3dnow.pfmul 6214 case Intrinsic::x86_3dnow_pfrcpit1: // llvm.x86.3dnow.pfrcpit1 6215 case Intrinsic::x86_3dnow_pfrcpit2: // llvm.x86.3dnow.pfrcpit2 6216 case Intrinsic::x86_3dnow_pfrsqit1: // llvm.x86.3dnow.pfrsqit1 6217 case Intrinsic::x86_3dnow_pfsub: // llvm.x86.3dnow.pfsub 6218 case Intrinsic::x86_3dnow_pfsubr: // llvm.x86.3dnow.pfsubr 6219 case Intrinsic::x86_3dnow_pmulhrw: // llvm.x86.3dnow.pmulhrw 6220 case Intrinsic::x86_3dnowa_pfnacc: // llvm.x86.3dnowa.pfnacc 6221 case Intrinsic::x86_3dnowa_pfpnacc: // llvm.x86.3dnowa.pfpnacc 6222 case Intrinsic::x86_mmx_packssdw: // llvm.x86.mmx.packssdw 6223 case Intrinsic::x86_mmx_packsswb: // llvm.x86.mmx.packsswb 6224 case Intrinsic::x86_mmx_packuswb: // llvm.x86.mmx.packuswb 6225 case Intrinsic::x86_mmx_padd_b: // llvm.x86.mmx.padd.b 6226 case Intrinsic::x86_mmx_padd_d: // llvm.x86.mmx.padd.d 6227 case Intrinsic::x86_mmx_padd_q: // llvm.x86.mmx.padd.q 6228 case Intrinsic::x86_mmx_padd_w: // llvm.x86.mmx.padd.w 6229 case Intrinsic::x86_mmx_padds_b: // llvm.x86.mmx.padds.b 6230 case Intrinsic::x86_mmx_padds_w: // llvm.x86.mmx.padds.w 6231 case Intrinsic::x86_mmx_paddus_b: // llvm.x86.mmx.paddus.b 6232 case Intrinsic::x86_mmx_paddus_w: // llvm.x86.mmx.paddus.w 6233 case Intrinsic::x86_mmx_pand: // llvm.x86.mmx.pand 6234 case Intrinsic::x86_mmx_pandn: // llvm.x86.mmx.pandn 6235 case Intrinsic::x86_mmx_pavg_b: // llvm.x86.mmx.pavg.b 6236 case Intrinsic::x86_mmx_pavg_w: // llvm.x86.mmx.pavg.w 6237 case Intrinsic::x86_mmx_pcmpeq_b: // llvm.x86.mmx.pcmpeq.b 6238 case Intrinsic::x86_mmx_pcmpeq_d: // llvm.x86.mmx.pcmpeq.d 6239 case Intrinsic::x86_mmx_pcmpeq_w: // llvm.x86.mmx.pcmpeq.w 6240 case Intrinsic::x86_mmx_pcmpgt_b: // llvm.x86.mmx.pcmpgt.b 6241 case Intrinsic::x86_mmx_pcmpgt_d: // llvm.x86.mmx.pcmpgt.d 6242 case Intrinsic::x86_mmx_pcmpgt_w: // llvm.x86.mmx.pcmpgt.w 6243 case Intrinsic::x86_mmx_pmadd_wd: // llvm.x86.mmx.pmadd.wd 6244 case Intrinsic::x86_mmx_pmaxs_w: // llvm.x86.mmx.pmaxs.w 6245 case Intrinsic::x86_mmx_pmaxu_b: // llvm.x86.mmx.pmaxu.b 6246 case Intrinsic::x86_mmx_pmins_w: // llvm.x86.mmx.pmins.w 6247 case Intrinsic::x86_mmx_pminu_b: // llvm.x86.mmx.pminu.b 6248 case Intrinsic::x86_mmx_pmulh_w: // llvm.x86.mmx.pmulh.w 6249 case Intrinsic::x86_mmx_pmulhu_w: // llvm.x86.mmx.pmulhu.w 6250 case Intrinsic::x86_mmx_pmull_w: // llvm.x86.mmx.pmull.w 6251 case Intrinsic::x86_mmx_pmulu_dq: // llvm.x86.mmx.pmulu.dq 6252 case Intrinsic::x86_mmx_por: // llvm.x86.mmx.por 6253 case Intrinsic::x86_mmx_psad_bw: // llvm.x86.mmx.psad.bw 6254 case Intrinsic::x86_mmx_psll_d: // llvm.x86.mmx.psll.d 6255 case Intrinsic::x86_mmx_psll_q: // llvm.x86.mmx.psll.q 6256 case Intrinsic::x86_mmx_psll_w: // llvm.x86.mmx.psll.w 6257 case Intrinsic::x86_mmx_psra_d: // llvm.x86.mmx.psra.d 6258 case Intrinsic::x86_mmx_psra_w: // llvm.x86.mmx.psra.w 6259 case Intrinsic::x86_mmx_psrl_d: // llvm.x86.mmx.psrl.d 6260 case Intrinsic::x86_mmx_psrl_q: // llvm.x86.mmx.psrl.q 6261 case Intrinsic::x86_mmx_psrl_w: // llvm.x86.mmx.psrl.w 6262 case Intrinsic::x86_mmx_psub_b: // llvm.x86.mmx.psub.b 6263 case Intrinsic::x86_mmx_psub_d: // llvm.x86.mmx.psub.d 6264 case Intrinsic::x86_mmx_psub_q: // llvm.x86.mmx.psub.q 6265 case Intrinsic::x86_mmx_psub_w: // llvm.x86.mmx.psub.w 6266 case Intrinsic::x86_mmx_psubs_b: // llvm.x86.mmx.psubs.b 6267 case Intrinsic::x86_mmx_psubs_w: // llvm.x86.mmx.psubs.w 6268 case Intrinsic::x86_mmx_psubus_b: // llvm.x86.mmx.psubus.b 6269 case Intrinsic::x86_mmx_psubus_w: // llvm.x86.mmx.psubus.w 6270 case Intrinsic::x86_mmx_punpckhbw: // llvm.x86.mmx.punpckhbw 6271 case Intrinsic::x86_mmx_punpckhdq: // llvm.x86.mmx.punpckhdq 6272 case Intrinsic::x86_mmx_punpckhwd: // llvm.x86.mmx.punpckhwd 6273 case Intrinsic::x86_mmx_punpcklbw: // llvm.x86.mmx.punpcklbw 6274 case Intrinsic::x86_mmx_punpckldq: // llvm.x86.mmx.punpckldq 6275 case Intrinsic::x86_mmx_punpcklwd: // llvm.x86.mmx.punpcklwd 6276 case Intrinsic::x86_mmx_pxor: // llvm.x86.mmx.pxor 6277 case Intrinsic::x86_ssse3_phadd_d: // llvm.x86.ssse3.phadd.d 6278 case Intrinsic::x86_ssse3_phadd_sw: // llvm.x86.ssse3.phadd.sw 6279 case Intrinsic::x86_ssse3_phadd_w: // llvm.x86.ssse3.phadd.w 6280 case Intrinsic::x86_ssse3_phsub_d: // llvm.x86.ssse3.phsub.d 6281 case Intrinsic::x86_ssse3_phsub_sw: // llvm.x86.ssse3.phsub.sw 6282 case Intrinsic::x86_ssse3_phsub_w: // llvm.x86.ssse3.phsub.w 6283 case Intrinsic::x86_ssse3_pmadd_ub_sw: // llvm.x86.ssse3.pmadd.ub.sw 6284 case Intrinsic::x86_ssse3_pmul_hr_sw: // llvm.x86.ssse3.pmul.hr.sw 6285 case Intrinsic::x86_ssse3_pshuf_b: // llvm.x86.ssse3.pshuf.b 6286 case Intrinsic::x86_ssse3_psign_b: // llvm.x86.ssse3.psign.b 6287 case Intrinsic::x86_ssse3_psign_d: // llvm.x86.ssse3.psign.d 6288 case Intrinsic::x86_ssse3_psign_w: // llvm.x86.ssse3.psign.w 6289 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::x86mmx); 6290 break; 6291 case Intrinsic::x86_mmx_palignr_b: // llvm.x86.mmx.palignr.b 6292 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::x86mmx, MVT::x86mmx, MVT::x86mmx, MVT::i8); 6293 break; 6294 } 6295 #endif 6296 6297 // Code for generating Intrinsic function declarations. 6298 #ifdef GET_INTRINSIC_GENERATOR 6299 switch (id) { 6300 default: assert(0 && "Invalid intrinsic!"); 6301 case Intrinsic::eh_unwind_init: // llvm.eh.unwind.init 6302 case Intrinsic::trap: // llvm.trap 6303 case Intrinsic::x86_avx_vzeroall: // llvm.x86.avx.vzeroall 6304 case Intrinsic::x86_avx_vzeroupper: // llvm.x86.avx.vzeroupper 6305 case Intrinsic::x86_mmx_emms: // llvm.x86.mmx.emms 6306 case Intrinsic::x86_mmx_femms: // llvm.x86.mmx.femms 6307 case Intrinsic::x86_sse2_lfence: // llvm.x86.sse2.lfence 6308 case Intrinsic::x86_sse2_mfence: // llvm.x86.sse2.mfence 6309 case Intrinsic::x86_sse_sfence: // llvm.x86.sse.sfence 6310 ResultTy = Type::getVoidTy(Context); 6311 break; 6312 case Intrinsic::memcpy: // llvm.memcpy 6313 case Intrinsic::memmove: // llvm.memmove 6314 ResultTy = Type::getVoidTy(Context); 6315 ArgTys.push_back((0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(IntegerType::get(Context, 8))); 6316 ArgTys.push_back((1 < Tys.size()) ? Tys[1] : PointerType::getUnqual(IntegerType::get(Context, 8))); 6317 ArgTys.push_back(Tys[2]); 6318 ArgTys.push_back(IntegerType::get(Context, 32)); 6319 ArgTys.push_back(IntegerType::get(Context, 1)); 6320 break; 6321 case Intrinsic::memset: // llvm.memset 6322 ResultTy = Type::getVoidTy(Context); 6323 ArgTys.push_back((0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(IntegerType::get(Context, 8))); 6324 ArgTys.push_back(IntegerType::get(Context, 8)); 6325 ArgTys.push_back(Tys[1]); 6326 ArgTys.push_back(IntegerType::get(Context, 32)); 6327 ArgTys.push_back(IntegerType::get(Context, 1)); 6328 break; 6329 case Intrinsic::invariant_end: // llvm.invariant.end 6330 ResultTy = Type::getVoidTy(Context); 6331 ArgTys.push_back(PointerType::getUnqual(StructType::get(Context))); 6332 ArgTys.push_back(IntegerType::get(Context, 64)); 6333 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6334 break; 6335 case Intrinsic::eh_sjlj_callsite: // llvm.eh.sjlj.callsite 6336 case Intrinsic::eh_sjlj_dispatch_setup: // llvm.eh.sjlj.dispatch.setup 6337 case Intrinsic::pcmarker: // llvm.pcmarker 6338 ResultTy = Type::getVoidTy(Context); 6339 ArgTys.push_back(IntegerType::get(Context, 32)); 6340 break; 6341 case Intrinsic::x86_sse3_mwait: // llvm.x86.sse3.mwait 6342 ResultTy = Type::getVoidTy(Context); 6343 ArgTys.push_back(IntegerType::get(Context, 32)); 6344 ArgTys.push_back(IntegerType::get(Context, 32)); 6345 break; 6346 case Intrinsic::eh_return_i32: // llvm.eh.return.i32 6347 ResultTy = Type::getVoidTy(Context); 6348 ArgTys.push_back(IntegerType::get(Context, 32)); 6349 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6350 break; 6351 case Intrinsic::eh_return_i64: // llvm.eh.return.i64 6352 case Intrinsic::lifetime_end: // llvm.lifetime.end 6353 case Intrinsic::lifetime_start: // llvm.lifetime.start 6354 ResultTy = Type::getVoidTy(Context); 6355 ArgTys.push_back(IntegerType::get(Context, 64)); 6356 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6357 break; 6358 case Intrinsic::x86_int: // llvm.x86.int 6359 ResultTy = Type::getVoidTy(Context); 6360 ArgTys.push_back(IntegerType::get(Context, 8)); 6361 break; 6362 case Intrinsic::dbg_value: // llvm.dbg.value 6363 ResultTy = Type::getVoidTy(Context); 6364 ArgTys.push_back(Type::getMetadataTy(Context)); 6365 ArgTys.push_back(IntegerType::get(Context, 64)); 6366 ArgTys.push_back(Type::getMetadataTy(Context)); 6367 break; 6368 case Intrinsic::dbg_declare: // llvm.dbg.declare 6369 ResultTy = Type::getVoidTy(Context); 6370 ArgTys.push_back(Type::getMetadataTy(Context)); 6371 ArgTys.push_back(Type::getMetadataTy(Context)); 6372 break; 6373 case Intrinsic::eh_sjlj_functioncontext: // llvm.eh.sjlj.functioncontext 6374 case Intrinsic::eh_sjlj_longjmp: // llvm.eh.sjlj.longjmp 6375 case Intrinsic::stackrestore: // llvm.stackrestore 6376 case Intrinsic::vaend: // llvm.va_end 6377 case Intrinsic::vastart: // llvm.va_start 6378 case Intrinsic::x86_sse2_clflush: // llvm.x86.sse2.clflush 6379 case Intrinsic::x86_sse_ldmxcsr: // llvm.x86.sse.ldmxcsr 6380 case Intrinsic::x86_sse_stmxcsr: // llvm.x86.sse.stmxcsr 6381 ResultTy = Type::getVoidTy(Context); 6382 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6383 break; 6384 case Intrinsic::eh_resume: // llvm.eh.resume 6385 case Intrinsic::longjmp: // llvm.longjmp 6386 case Intrinsic::siglongjmp: // llvm.siglongjmp 6387 ResultTy = Type::getVoidTy(Context); 6388 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6389 ArgTys.push_back(IntegerType::get(Context, 32)); 6390 break; 6391 case Intrinsic::x86_sse3_monitor: // llvm.x86.sse3.monitor 6392 ResultTy = Type::getVoidTy(Context); 6393 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6394 ArgTys.push_back(IntegerType::get(Context, 32)); 6395 ArgTys.push_back(IntegerType::get(Context, 32)); 6396 break; 6397 case Intrinsic::prefetch: // llvm.prefetch 6398 ResultTy = Type::getVoidTy(Context); 6399 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6400 ArgTys.push_back(IntegerType::get(Context, 32)); 6401 ArgTys.push_back(IntegerType::get(Context, 32)); 6402 ArgTys.push_back(IntegerType::get(Context, 32)); 6403 break; 6404 case Intrinsic::vacopy: // llvm.va_copy 6405 ResultTy = Type::getVoidTy(Context); 6406 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6407 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6408 break; 6409 case Intrinsic::init_trampoline: // llvm.init.trampoline 6410 ResultTy = Type::getVoidTy(Context); 6411 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6412 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6413 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6414 break; 6415 case Intrinsic::var_annotation: // llvm.var.annotation 6416 ResultTy = Type::getVoidTy(Context); 6417 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6418 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6419 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6420 ArgTys.push_back(IntegerType::get(Context, 32)); 6421 break; 6422 case Intrinsic::gcwrite: // llvm.gcwrite 6423 ResultTy = Type::getVoidTy(Context); 6424 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6425 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6426 ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8)))); 6427 break; 6428 case Intrinsic::stackprotector: // llvm.stackprotector 6429 ResultTy = Type::getVoidTy(Context); 6430 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6431 ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8)))); 6432 break; 6433 case Intrinsic::x86_sse2_storeu_dq: // llvm.x86.sse2.storeu.dq 6434 ResultTy = Type::getVoidTy(Context); 6435 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6436 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6437 break; 6438 case Intrinsic::x86_sse2_storeu_pd: // llvm.x86.sse2.storeu.pd 6439 ResultTy = Type::getVoidTy(Context); 6440 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6441 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6442 break; 6443 case Intrinsic::x86_avx_maskstore_pd: // llvm.x86.avx.maskstore.pd 6444 ResultTy = Type::getVoidTy(Context); 6445 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6446 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6447 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6448 break; 6449 case Intrinsic::x86_avx_storeu_dq_256: // llvm.x86.avx.storeu.dq.256 6450 ResultTy = Type::getVoidTy(Context); 6451 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6452 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 32)); 6453 break; 6454 case Intrinsic::x86_sse_storeu_ps: // llvm.x86.sse.storeu.ps 6455 ResultTy = Type::getVoidTy(Context); 6456 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6457 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 6458 break; 6459 case Intrinsic::x86_avx_maskstore_ps: // llvm.x86.avx.maskstore.ps 6460 ResultTy = Type::getVoidTy(Context); 6461 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6462 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 6463 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 6464 break; 6465 case Intrinsic::x86_avx_movnt_pd_256: // llvm.x86.avx.movnt.pd.256 6466 case Intrinsic::x86_avx_storeu_pd_256: // llvm.x86.avx.storeu.pd.256 6467 ResultTy = Type::getVoidTy(Context); 6468 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6469 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 6470 break; 6471 case Intrinsic::x86_avx_maskstore_pd_256: // llvm.x86.avx.maskstore.pd.256 6472 ResultTy = Type::getVoidTy(Context); 6473 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6474 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 6475 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 6476 break; 6477 case Intrinsic::x86_sse2_storel_dq: // llvm.x86.sse2.storel.dq 6478 ResultTy = Type::getVoidTy(Context); 6479 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6480 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 6481 break; 6482 case Intrinsic::x86_avx_movnt_dq_256: // llvm.x86.avx.movnt.dq.256 6483 ResultTy = Type::getVoidTy(Context); 6484 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6485 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4)); 6486 break; 6487 case Intrinsic::x86_avx_movnt_ps_256: // llvm.x86.avx.movnt.ps.256 6488 case Intrinsic::x86_avx_storeu_ps_256: // llvm.x86.avx.storeu.ps.256 6489 ResultTy = Type::getVoidTy(Context); 6490 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6491 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 6492 break; 6493 case Intrinsic::x86_avx_maskstore_ps_256: // llvm.x86.avx.maskstore.ps.256 6494 ResultTy = Type::getVoidTy(Context); 6495 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6496 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 6497 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 6498 break; 6499 case Intrinsic::gcroot: // llvm.gcroot 6500 ResultTy = Type::getVoidTy(Context); 6501 ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8)))); 6502 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6503 break; 6504 case Intrinsic::x86_mmx_movnt_dq: // llvm.x86.mmx.movnt.dq 6505 ResultTy = Type::getVoidTy(Context); 6506 ArgTys.push_back(PointerType::getUnqual(Type::getX86_MMXTy(Context))); 6507 ArgTys.push_back(Type::getX86_MMXTy(Context)); 6508 break; 6509 case Intrinsic::x86_sse2_maskmov_dqu: // llvm.x86.sse2.maskmov.dqu 6510 ResultTy = Type::getVoidTy(Context); 6511 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6512 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6513 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6514 break; 6515 case Intrinsic::x86_mmx_maskmovq: // llvm.x86.mmx.maskmovq 6516 ResultTy = Type::getVoidTy(Context); 6517 ArgTys.push_back(Type::getX86_MMXTy(Context)); 6518 ArgTys.push_back(Type::getX86_MMXTy(Context)); 6519 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6520 break; 6521 case Intrinsic::ptr_annotation: // llvm.ptr.annotation 6522 ResultTy = (0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(Tys[0]); 6523 ArgTys.push_back(Tys[0]); 6524 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6525 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6526 ArgTys.push_back(IntegerType::get(Context, 32)); 6527 break; 6528 case Intrinsic::sin: // llvm.sin 6529 ResultTy = Tys[0]; 6530 ArgTys.push_back(Tys[0]); 6531 break; 6532 case Intrinsic::cos: // llvm.cos 6533 ResultTy = Tys[0]; 6534 ArgTys.push_back(Tys[0]); 6535 break; 6536 case Intrinsic::pow: // llvm.pow 6537 ResultTy = Tys[0]; 6538 ArgTys.push_back(Tys[0]); 6539 ArgTys.push_back(Tys[0]); 6540 break; 6541 case Intrinsic::log: // llvm.log 6542 ResultTy = Tys[0]; 6543 ArgTys.push_back(Tys[0]); 6544 break; 6545 case Intrinsic::log10: // llvm.log10 6546 ResultTy = Tys[0]; 6547 ArgTys.push_back(Tys[0]); 6548 break; 6549 case Intrinsic::log2: // llvm.log2 6550 ResultTy = Tys[0]; 6551 ArgTys.push_back(Tys[0]); 6552 break; 6553 case Intrinsic::exp: // llvm.exp 6554 ResultTy = Tys[0]; 6555 ArgTys.push_back(Tys[0]); 6556 break; 6557 case Intrinsic::exp2: // llvm.exp2 6558 ResultTy = Tys[0]; 6559 ArgTys.push_back(Tys[0]); 6560 break; 6561 case Intrinsic::fma: // llvm.fma 6562 ResultTy = Tys[0]; 6563 ArgTys.push_back(Tys[0]); 6564 ArgTys.push_back(Tys[0]); 6565 ArgTys.push_back(Tys[0]); 6566 break; 6567 case Intrinsic::sqrt: // llvm.sqrt 6568 ResultTy = Tys[0]; 6569 ArgTys.push_back(Tys[0]); 6570 break; 6571 case Intrinsic::powi: // llvm.powi 6572 ResultTy = Tys[0]; 6573 ArgTys.push_back(Tys[0]); 6574 ArgTys.push_back(IntegerType::get(Context, 32)); 6575 break; 6576 case Intrinsic::convertff: // llvm.convertff 6577 ResultTy = Tys[0]; 6578 ArgTys.push_back(Tys[1]); 6579 ArgTys.push_back(IntegerType::get(Context, 32)); 6580 ArgTys.push_back(IntegerType::get(Context, 32)); 6581 break; 6582 case Intrinsic::convertfsi: // llvm.convertfsi 6583 case Intrinsic::convertfui: // llvm.convertfui 6584 ResultTy = Tys[0]; 6585 ArgTys.push_back(Tys[1]); 6586 ArgTys.push_back(IntegerType::get(Context, 32)); 6587 ArgTys.push_back(IntegerType::get(Context, 32)); 6588 break; 6589 case Intrinsic::expect: // llvm.expect 6590 ResultTy = Tys[0]; 6591 ArgTys.push_back(Tys[0]); 6592 ArgTys.push_back(Tys[0]); 6593 break; 6594 case Intrinsic::bswap: // llvm.bswap 6595 ResultTy = Tys[0]; 6596 ArgTys.push_back(Tys[0]); 6597 break; 6598 case Intrinsic::ctpop: // llvm.ctpop 6599 ResultTy = Tys[0]; 6600 ArgTys.push_back(Tys[0]); 6601 break; 6602 case Intrinsic::ctlz: // llvm.ctlz 6603 ResultTy = Tys[0]; 6604 ArgTys.push_back(Tys[0]); 6605 break; 6606 case Intrinsic::cttz: // llvm.cttz 6607 ResultTy = Tys[0]; 6608 ArgTys.push_back(Tys[0]); 6609 break; 6610 case Intrinsic::annotation: // llvm.annotation 6611 ResultTy = Tys[0]; 6612 ArgTys.push_back(Tys[0]); 6613 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6614 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6615 ArgTys.push_back(IntegerType::get(Context, 32)); 6616 break; 6617 case Intrinsic::convertsif: // llvm.convertsif 6618 case Intrinsic::convertuif: // llvm.convertuif 6619 ResultTy = Tys[0]; 6620 ArgTys.push_back(Tys[1]); 6621 ArgTys.push_back(IntegerType::get(Context, 32)); 6622 ArgTys.push_back(IntegerType::get(Context, 32)); 6623 break; 6624 case Intrinsic::convertss: // llvm.convertss 6625 case Intrinsic::convertsu: // llvm.convertsu 6626 case Intrinsic::convertus: // llvm.convertus 6627 case Intrinsic::convertuu: // llvm.convertuu 6628 ResultTy = Tys[0]; 6629 ArgTys.push_back(Tys[1]); 6630 ArgTys.push_back(IntegerType::get(Context, 32)); 6631 ArgTys.push_back(IntegerType::get(Context, 32)); 6632 break; 6633 case Intrinsic::objectsize: // llvm.objectsize 6634 ResultTy = Tys[0]; 6635 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6636 ArgTys.push_back(IntegerType::get(Context, 1)); 6637 break; 6638 case Intrinsic::sadd_with_overflow: // llvm.sadd.with.overflow 6639 ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); 6640 ArgTys.push_back(Tys[0]); 6641 ArgTys.push_back(Tys[0]); 6642 break; 6643 case Intrinsic::uadd_with_overflow: // llvm.uadd.with.overflow 6644 ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); 6645 ArgTys.push_back(Tys[0]); 6646 ArgTys.push_back(Tys[0]); 6647 break; 6648 case Intrinsic::ssub_with_overflow: // llvm.ssub.with.overflow 6649 ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); 6650 ArgTys.push_back(Tys[0]); 6651 ArgTys.push_back(Tys[0]); 6652 break; 6653 case Intrinsic::usub_with_overflow: // llvm.usub.with.overflow 6654 ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); 6655 ArgTys.push_back(Tys[0]); 6656 ArgTys.push_back(Tys[0]); 6657 break; 6658 case Intrinsic::smul_with_overflow: // llvm.smul.with.overflow 6659 ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); 6660 ArgTys.push_back(Tys[0]); 6661 ArgTys.push_back(Tys[0]); 6662 break; 6663 case Intrinsic::umul_with_overflow: // llvm.umul.with.overflow 6664 ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); 6665 ArgTys.push_back(Tys[0]); 6666 ArgTys.push_back(Tys[0]); 6667 break; 6668 case Intrinsic::invariant_start: // llvm.invariant.start 6669 ResultTy = PointerType::getUnqual(StructType::get(Context)); 6670 ArgTys.push_back(IntegerType::get(Context, 64)); 6671 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6672 break; 6673 case Intrinsic::convert_from_fp16: // llvm.convert.from.fp16 6674 ResultTy = Type::getFloatTy(Context); 6675 ArgTys.push_back(IntegerType::get(Context, 16)); 6676 break; 6677 case Intrinsic::convert_to_fp16: // llvm.convert.to.fp16 6678 ResultTy = IntegerType::get(Context, 16); 6679 ArgTys.push_back(Type::getFloatTy(Context)); 6680 break; 6681 case Intrinsic::flt_rounds: // llvm.flt.rounds 6682 ResultTy = IntegerType::get(Context, 32); 6683 break; 6684 case Intrinsic::x86_sse42_crc32_32_16: // llvm.x86.sse42.crc32.32.16 6685 ResultTy = IntegerType::get(Context, 32); 6686 ArgTys.push_back(IntegerType::get(Context, 32)); 6687 ArgTys.push_back(IntegerType::get(Context, 16)); 6688 break; 6689 case Intrinsic::x86_sse42_crc32_32_32: // llvm.x86.sse42.crc32.32.32 6690 ResultTy = IntegerType::get(Context, 32); 6691 ArgTys.push_back(IntegerType::get(Context, 32)); 6692 ArgTys.push_back(IntegerType::get(Context, 32)); 6693 break; 6694 case Intrinsic::x86_sse42_crc32_32_8: // llvm.x86.sse42.crc32.32.8 6695 ResultTy = IntegerType::get(Context, 32); 6696 ArgTys.push_back(IntegerType::get(Context, 32)); 6697 ArgTys.push_back(IntegerType::get(Context, 8)); 6698 break; 6699 case Intrinsic::eh_sjlj_setjmp: // llvm.eh.sjlj.setjmp 6700 case Intrinsic::eh_typeid_for: // llvm.eh.typeid.for 6701 case Intrinsic::setjmp: // llvm.setjmp 6702 ResultTy = IntegerType::get(Context, 32); 6703 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6704 break; 6705 case Intrinsic::sigsetjmp: // llvm.sigsetjmp 6706 ResultTy = IntegerType::get(Context, 32); 6707 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6708 ArgTys.push_back(IntegerType::get(Context, 32)); 6709 break; 6710 case Intrinsic::eh_selector: // llvm.eh.selector 6711 IsVarArg = true; 6712 ResultTy = IntegerType::get(Context, 32); 6713 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6714 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6715 break; 6716 case Intrinsic::x86_sse2_pmovmskb_128: // llvm.x86.sse2.pmovmskb.128 6717 ResultTy = IntegerType::get(Context, 32); 6718 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6719 break; 6720 case Intrinsic::x86_sse41_pextrb: // llvm.x86.sse41.pextrb 6721 ResultTy = IntegerType::get(Context, 32); 6722 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6723 ArgTys.push_back(IntegerType::get(Context, 32)); 6724 break; 6725 case Intrinsic::x86_sse42_pcmpestri128: // llvm.x86.sse42.pcmpestri128 6726 case Intrinsic::x86_sse42_pcmpestria128: // llvm.x86.sse42.pcmpestria128 6727 case Intrinsic::x86_sse42_pcmpestric128: // llvm.x86.sse42.pcmpestric128 6728 case Intrinsic::x86_sse42_pcmpestrio128: // llvm.x86.sse42.pcmpestrio128 6729 case Intrinsic::x86_sse42_pcmpestris128: // llvm.x86.sse42.pcmpestris128 6730 case Intrinsic::x86_sse42_pcmpestriz128: // llvm.x86.sse42.pcmpestriz128 6731 ResultTy = IntegerType::get(Context, 32); 6732 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6733 ArgTys.push_back(IntegerType::get(Context, 32)); 6734 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6735 ArgTys.push_back(IntegerType::get(Context, 32)); 6736 ArgTys.push_back(IntegerType::get(Context, 8)); 6737 break; 6738 case Intrinsic::x86_sse42_pcmpistri128: // llvm.x86.sse42.pcmpistri128 6739 case Intrinsic::x86_sse42_pcmpistria128: // llvm.x86.sse42.pcmpistria128 6740 case Intrinsic::x86_sse42_pcmpistric128: // llvm.x86.sse42.pcmpistric128 6741 case Intrinsic::x86_sse42_pcmpistrio128: // llvm.x86.sse42.pcmpistrio128 6742 case Intrinsic::x86_sse42_pcmpistris128: // llvm.x86.sse42.pcmpistris128 6743 case Intrinsic::x86_sse42_pcmpistriz128: // llvm.x86.sse42.pcmpistriz128 6744 ResultTy = IntegerType::get(Context, 32); 6745 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6746 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6747 ArgTys.push_back(IntegerType::get(Context, 8)); 6748 break; 6749 case Intrinsic::x86_sse2_cvtsd2si: // llvm.x86.sse2.cvtsd2si 6750 case Intrinsic::x86_sse2_cvttsd2si: // llvm.x86.sse2.cvttsd2si 6751 case Intrinsic::x86_sse2_movmsk_pd: // llvm.x86.sse2.movmsk.pd 6752 ResultTy = IntegerType::get(Context, 32); 6753 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6754 break; 6755 case Intrinsic::x86_avx_vtestc_pd: // llvm.x86.avx.vtestc.pd 6756 case Intrinsic::x86_avx_vtestnzc_pd: // llvm.x86.avx.vtestnzc.pd 6757 case Intrinsic::x86_avx_vtestz_pd: // llvm.x86.avx.vtestz.pd 6758 case Intrinsic::x86_sse2_comieq_sd: // llvm.x86.sse2.comieq.sd 6759 case Intrinsic::x86_sse2_comige_sd: // llvm.x86.sse2.comige.sd 6760 case Intrinsic::x86_sse2_comigt_sd: // llvm.x86.sse2.comigt.sd 6761 case Intrinsic::x86_sse2_comile_sd: // llvm.x86.sse2.comile.sd 6762 case Intrinsic::x86_sse2_comilt_sd: // llvm.x86.sse2.comilt.sd 6763 case Intrinsic::x86_sse2_comineq_sd: // llvm.x86.sse2.comineq.sd 6764 case Intrinsic::x86_sse2_ucomieq_sd: // llvm.x86.sse2.ucomieq.sd 6765 case Intrinsic::x86_sse2_ucomige_sd: // llvm.x86.sse2.ucomige.sd 6766 case Intrinsic::x86_sse2_ucomigt_sd: // llvm.x86.sse2.ucomigt.sd 6767 case Intrinsic::x86_sse2_ucomile_sd: // llvm.x86.sse2.ucomile.sd 6768 case Intrinsic::x86_sse2_ucomilt_sd: // llvm.x86.sse2.ucomilt.sd 6769 case Intrinsic::x86_sse2_ucomineq_sd: // llvm.x86.sse2.ucomineq.sd 6770 ResultTy = IntegerType::get(Context, 32); 6771 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6772 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6773 break; 6774 case Intrinsic::x86_sse_cvtss2si: // llvm.x86.sse.cvtss2si 6775 case Intrinsic::x86_sse_cvttss2si: // llvm.x86.sse.cvttss2si 6776 case Intrinsic::x86_sse_movmsk_ps: // llvm.x86.sse.movmsk.ps 6777 ResultTy = IntegerType::get(Context, 32); 6778 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 6779 break; 6780 case Intrinsic::x86_sse41_extractps: // llvm.x86.sse41.extractps 6781 ResultTy = IntegerType::get(Context, 32); 6782 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 6783 ArgTys.push_back(IntegerType::get(Context, 32)); 6784 break; 6785 case Intrinsic::x86_avx_vtestc_ps: // llvm.x86.avx.vtestc.ps 6786 case Intrinsic::x86_avx_vtestnzc_ps: // llvm.x86.avx.vtestnzc.ps 6787 case Intrinsic::x86_avx_vtestz_ps: // llvm.x86.avx.vtestz.ps 6788 case Intrinsic::x86_sse41_ptestc: // llvm.x86.sse41.ptestc 6789 case Intrinsic::x86_sse41_ptestnzc: // llvm.x86.sse41.ptestnzc 6790 case Intrinsic::x86_sse41_ptestz: // llvm.x86.sse41.ptestz 6791 case Intrinsic::x86_sse_comieq_ss: // llvm.x86.sse.comieq.ss 6792 case Intrinsic::x86_sse_comige_ss: // llvm.x86.sse.comige.ss 6793 case Intrinsic::x86_sse_comigt_ss: // llvm.x86.sse.comigt.ss 6794 case Intrinsic::x86_sse_comile_ss: // llvm.x86.sse.comile.ss 6795 case Intrinsic::x86_sse_comilt_ss: // llvm.x86.sse.comilt.ss 6796 case Intrinsic::x86_sse_comineq_ss: // llvm.x86.sse.comineq.ss 6797 case Intrinsic::x86_sse_ucomieq_ss: // llvm.x86.sse.ucomieq.ss 6798 case Intrinsic::x86_sse_ucomige_ss: // llvm.x86.sse.ucomige.ss 6799 case Intrinsic::x86_sse_ucomigt_ss: // llvm.x86.sse.ucomigt.ss 6800 case Intrinsic::x86_sse_ucomile_ss: // llvm.x86.sse.ucomile.ss 6801 case Intrinsic::x86_sse_ucomilt_ss: // llvm.x86.sse.ucomilt.ss 6802 case Intrinsic::x86_sse_ucomineq_ss: // llvm.x86.sse.ucomineq.ss 6803 ResultTy = IntegerType::get(Context, 32); 6804 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 6805 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 6806 break; 6807 case Intrinsic::x86_avx_movmsk_pd_256: // llvm.x86.avx.movmsk.pd.256 6808 ResultTy = IntegerType::get(Context, 32); 6809 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 6810 break; 6811 case Intrinsic::x86_avx_vtestc_pd_256: // llvm.x86.avx.vtestc.pd.256 6812 case Intrinsic::x86_avx_vtestnzc_pd_256: // llvm.x86.avx.vtestnzc.pd.256 6813 case Intrinsic::x86_avx_vtestz_pd_256: // llvm.x86.avx.vtestz.pd.256 6814 ResultTy = IntegerType::get(Context, 32); 6815 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 6816 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 6817 break; 6818 case Intrinsic::x86_sse41_pextrd: // llvm.x86.sse41.pextrd 6819 ResultTy = IntegerType::get(Context, 32); 6820 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 6821 ArgTys.push_back(IntegerType::get(Context, 32)); 6822 break; 6823 case Intrinsic::x86_avx_ptestc_256: // llvm.x86.avx.ptestc.256 6824 case Intrinsic::x86_avx_ptestnzc_256: // llvm.x86.avx.ptestnzc.256 6825 case Intrinsic::x86_avx_ptestz_256: // llvm.x86.avx.ptestz.256 6826 ResultTy = IntegerType::get(Context, 32); 6827 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4)); 6828 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4)); 6829 break; 6830 case Intrinsic::x86_avx_movmsk_ps_256: // llvm.x86.avx.movmsk.ps.256 6831 ResultTy = IntegerType::get(Context, 32); 6832 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 6833 break; 6834 case Intrinsic::x86_avx_vtestc_ps_256: // llvm.x86.avx.vtestc.ps.256 6835 case Intrinsic::x86_avx_vtestnzc_ps_256: // llvm.x86.avx.vtestnzc.ps.256 6836 case Intrinsic::x86_avx_vtestz_ps_256: // llvm.x86.avx.vtestz.ps.256 6837 ResultTy = IntegerType::get(Context, 32); 6838 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 6839 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 6840 break; 6841 case Intrinsic::x86_mmx_pmovmskb: // llvm.x86.mmx.pmovmskb 6842 ResultTy = IntegerType::get(Context, 32); 6843 ArgTys.push_back(Type::getX86_MMXTy(Context)); 6844 break; 6845 case Intrinsic::x86_mmx_pextr_w: // llvm.x86.mmx.pextr.w 6846 ResultTy = IntegerType::get(Context, 32); 6847 ArgTys.push_back(Type::getX86_MMXTy(Context)); 6848 ArgTys.push_back(IntegerType::get(Context, 32)); 6849 break; 6850 case Intrinsic::readcyclecounter: // llvm.readcyclecounter 6851 ResultTy = IntegerType::get(Context, 64); 6852 break; 6853 case Intrinsic::x86_sse42_crc32_64_64: // llvm.x86.sse42.crc32.64.64 6854 ResultTy = IntegerType::get(Context, 64); 6855 ArgTys.push_back(IntegerType::get(Context, 64)); 6856 ArgTys.push_back(IntegerType::get(Context, 64)); 6857 break; 6858 case Intrinsic::x86_sse42_crc32_64_8: // llvm.x86.sse42.crc32.64.8 6859 ResultTy = IntegerType::get(Context, 64); 6860 ArgTys.push_back(IntegerType::get(Context, 64)); 6861 ArgTys.push_back(IntegerType::get(Context, 8)); 6862 break; 6863 case Intrinsic::x86_sse2_cvtsd2si64: // llvm.x86.sse2.cvtsd2si64 6864 case Intrinsic::x86_sse2_cvttsd2si64: // llvm.x86.sse2.cvttsd2si64 6865 ResultTy = IntegerType::get(Context, 64); 6866 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6867 break; 6868 case Intrinsic::x86_sse41_pextrq: // llvm.x86.sse41.pextrq 6869 ResultTy = IntegerType::get(Context, 64); 6870 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); 6871 ArgTys.push_back(IntegerType::get(Context, 32)); 6872 break; 6873 case Intrinsic::x86_sse_cvtss2si64: // llvm.x86.sse.cvtss2si64 6874 case Intrinsic::x86_sse_cvttss2si64: // llvm.x86.sse.cvttss2si64 6875 ResultTy = IntegerType::get(Context, 64); 6876 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 6877 break; 6878 case Intrinsic::eh_exception: // llvm.eh.exception 6879 case Intrinsic::eh_sjlj_lsda: // llvm.eh.sjlj.lsda 6880 case Intrinsic::stacksave: // llvm.stacksave 6881 ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8)); 6882 break; 6883 case Intrinsic::eh_dwarf_cfa: // llvm.eh.dwarf.cfa 6884 case Intrinsic::frameaddress: // llvm.frameaddress 6885 case Intrinsic::returnaddress: // llvm.returnaddress 6886 ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8)); 6887 ArgTys.push_back(IntegerType::get(Context, 32)); 6888 break; 6889 case Intrinsic::adjust_trampoline: // llvm.adjust.trampoline 6890 ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8)); 6891 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6892 break; 6893 case Intrinsic::gcread: // llvm.gcread 6894 ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8)); 6895 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6896 ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8)))); 6897 break; 6898 case Intrinsic::x86_sse3_ldu_dq: // llvm.x86.sse3.ldu.dq 6899 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); 6900 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6901 break; 6902 case Intrinsic::x86_ssse3_pabs_b_128: // llvm.x86.ssse3.pabs.b.128 6903 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); 6904 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6905 break; 6906 case Intrinsic::x86_sse42_pcmpestrm128: // llvm.x86.sse42.pcmpestrm128 6907 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); 6908 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6909 ArgTys.push_back(IntegerType::get(Context, 32)); 6910 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6911 ArgTys.push_back(IntegerType::get(Context, 32)); 6912 ArgTys.push_back(IntegerType::get(Context, 8)); 6913 break; 6914 case Intrinsic::x86_sse2_padds_b: // llvm.x86.sse2.padds.b 6915 case Intrinsic::x86_sse2_paddus_b: // llvm.x86.sse2.paddus.b 6916 case Intrinsic::x86_sse2_pavg_b: // llvm.x86.sse2.pavg.b 6917 case Intrinsic::x86_sse2_pcmpeq_b: // llvm.x86.sse2.pcmpeq.b 6918 case Intrinsic::x86_sse2_pcmpgt_b: // llvm.x86.sse2.pcmpgt.b 6919 case Intrinsic::x86_sse2_pmaxu_b: // llvm.x86.sse2.pmaxu.b 6920 case Intrinsic::x86_sse2_pminu_b: // llvm.x86.sse2.pminu.b 6921 case Intrinsic::x86_sse2_psubs_b: // llvm.x86.sse2.psubs.b 6922 case Intrinsic::x86_sse2_psubus_b: // llvm.x86.sse2.psubus.b 6923 case Intrinsic::x86_sse41_pmaxsb: // llvm.x86.sse41.pmaxsb 6924 case Intrinsic::x86_sse41_pminsb: // llvm.x86.sse41.pminsb 6925 case Intrinsic::x86_ssse3_pshuf_b_128: // llvm.x86.ssse3.pshuf.b.128 6926 case Intrinsic::x86_ssse3_psign_b_128: // llvm.x86.ssse3.psign.b.128 6927 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); 6928 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6929 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6930 break; 6931 case Intrinsic::x86_sse41_mpsadbw: // llvm.x86.sse41.mpsadbw 6932 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); 6933 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6934 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6935 ArgTys.push_back(IntegerType::get(Context, 32)); 6936 break; 6937 case Intrinsic::x86_sse42_pcmpistrm128: // llvm.x86.sse42.pcmpistrm128 6938 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); 6939 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6940 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6941 ArgTys.push_back(IntegerType::get(Context, 8)); 6942 break; 6943 case Intrinsic::x86_sse41_pblendvb: // llvm.x86.sse41.pblendvb 6944 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); 6945 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6946 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6947 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 6948 break; 6949 case Intrinsic::x86_sse2_packsswb_128: // llvm.x86.sse2.packsswb.128 6950 case Intrinsic::x86_sse2_packuswb_128: // llvm.x86.sse2.packuswb.128 6951 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); 6952 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 6953 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 6954 break; 6955 case Intrinsic::x86_avx_maskload_pd: // llvm.x86.avx.maskload.pd 6956 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 6957 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 6958 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6959 break; 6960 case Intrinsic::x86_sse2_sqrt_pd: // llvm.x86.sse2.sqrt.pd 6961 case Intrinsic::x86_sse2_sqrt_sd: // llvm.x86.sse2.sqrt.sd 6962 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 6963 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6964 break; 6965 case Intrinsic::x86_sse2_cvtsi2sd: // llvm.x86.sse2.cvtsi2sd 6966 case Intrinsic::x86_sse41_round_pd: // llvm.x86.sse41.round.pd 6967 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 6968 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6969 ArgTys.push_back(IntegerType::get(Context, 32)); 6970 break; 6971 case Intrinsic::x86_sse2_cvtsi642sd: // llvm.x86.sse2.cvtsi642sd 6972 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 6973 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6974 ArgTys.push_back(IntegerType::get(Context, 64)); 6975 break; 6976 case Intrinsic::x86_avx_vpermil_pd: // llvm.x86.avx.vpermil.pd 6977 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 6978 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6979 ArgTys.push_back(IntegerType::get(Context, 8)); 6980 break; 6981 case Intrinsic::x86_sse2_add_sd: // llvm.x86.sse2.add.sd 6982 case Intrinsic::x86_sse2_div_sd: // llvm.x86.sse2.div.sd 6983 case Intrinsic::x86_sse2_max_pd: // llvm.x86.sse2.max.pd 6984 case Intrinsic::x86_sse2_max_sd: // llvm.x86.sse2.max.sd 6985 case Intrinsic::x86_sse2_min_pd: // llvm.x86.sse2.min.pd 6986 case Intrinsic::x86_sse2_min_sd: // llvm.x86.sse2.min.sd 6987 case Intrinsic::x86_sse2_mul_sd: // llvm.x86.sse2.mul.sd 6988 case Intrinsic::x86_sse2_sub_sd: // llvm.x86.sse2.sub.sd 6989 case Intrinsic::x86_sse3_addsub_pd: // llvm.x86.sse3.addsub.pd 6990 case Intrinsic::x86_sse3_hadd_pd: // llvm.x86.sse3.hadd.pd 6991 case Intrinsic::x86_sse3_hsub_pd: // llvm.x86.sse3.hsub.pd 6992 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 6993 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6994 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 6995 break; 6996 case Intrinsic::x86_sse41_blendpd: // llvm.x86.sse41.blendpd 6997 case Intrinsic::x86_sse41_dppd: // llvm.x86.sse41.dppd 6998 case Intrinsic::x86_sse41_round_sd: // llvm.x86.sse41.round.sd 6999 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 7000 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7001 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7002 ArgTys.push_back(IntegerType::get(Context, 32)); 7003 break; 7004 case Intrinsic::x86_sse2_cmp_pd: // llvm.x86.sse2.cmp.pd 7005 case Intrinsic::x86_sse2_cmp_sd: // llvm.x86.sse2.cmp.sd 7006 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 7007 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7008 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7009 ArgTys.push_back(IntegerType::get(Context, 8)); 7010 break; 7011 case Intrinsic::x86_sse41_blendvpd: // llvm.x86.sse41.blendvpd 7012 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 7013 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7014 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7015 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7016 break; 7017 case Intrinsic::x86_avx_vpermilvar_pd: // llvm.x86.avx.vpermilvar.pd 7018 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 7019 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7020 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); 7021 break; 7022 case Intrinsic::x86_sse2_cvtss2sd: // llvm.x86.sse2.cvtss2sd 7023 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 7024 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7025 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7026 break; 7027 case Intrinsic::x86_sse2_cvtps2pd: // llvm.x86.sse2.cvtps2pd 7028 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 7029 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7030 break; 7031 case Intrinsic::x86_avx_vextractf128_pd_256: // llvm.x86.avx.vextractf128.pd.256 7032 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 7033 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7034 ArgTys.push_back(IntegerType::get(Context, 8)); 7035 break; 7036 case Intrinsic::x86_sse2_cvtdq2pd: // llvm.x86.sse2.cvtdq2pd 7037 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 7038 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7039 break; 7040 case Intrinsic::x86_sse_cvtpi2pd: // llvm.x86.sse.cvtpi2pd 7041 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); 7042 ArgTys.push_back(Type::getX86_MMXTy(Context)); 7043 break; 7044 case Intrinsic::x86_sse41_movntdqa: // llvm.x86.sse41.movntdqa 7045 ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); 7046 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 7047 break; 7048 case Intrinsic::x86_sse41_pmovsxbq: // llvm.x86.sse41.pmovsxbq 7049 case Intrinsic::x86_sse41_pmovzxbq: // llvm.x86.sse41.pmovzxbq 7050 ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); 7051 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 7052 break; 7053 case Intrinsic::x86_sse2_psad_bw: // llvm.x86.sse2.psad.bw 7054 ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); 7055 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 7056 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 7057 break; 7058 case Intrinsic::x86_aesni_aesimc: // llvm.x86.aesni.aesimc 7059 ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); 7060 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); 7061 break; 7062 case Intrinsic::x86_sse2_psll_dq: // llvm.x86.sse2.psll.dq 7063 case Intrinsic::x86_sse2_psll_dq_bs: // llvm.x86.sse2.psll.dq.bs 7064 case Intrinsic::x86_sse2_pslli_q: // llvm.x86.sse2.pslli.q 7065 case Intrinsic::x86_sse2_psrl_dq: // llvm.x86.sse2.psrl.dq 7066 case Intrinsic::x86_sse2_psrl_dq_bs: // llvm.x86.sse2.psrl.dq.bs 7067 case Intrinsic::x86_sse2_psrli_q: // llvm.x86.sse2.psrli.q 7068 ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); 7069 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); 7070 ArgTys.push_back(IntegerType::get(Context, 32)); 7071 break; 7072 case Intrinsic::x86_aesni_aeskeygenassist: // llvm.x86.aesni.aeskeygenassist 7073 ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); 7074 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); 7075 ArgTys.push_back(IntegerType::get(Context, 8)); 7076 break; 7077 case Intrinsic::x86_aesni_aesdec: // llvm.x86.aesni.aesdec 7078 case Intrinsic::x86_aesni_aesdeclast: // llvm.x86.aesni.aesdeclast 7079 case Intrinsic::x86_aesni_aesenc: // llvm.x86.aesni.aesenc 7080 case Intrinsic::x86_aesni_aesenclast: // llvm.x86.aesni.aesenclast 7081 case Intrinsic::x86_sse2_psll_q: // llvm.x86.sse2.psll.q 7082 case Intrinsic::x86_sse2_psrl_q: // llvm.x86.sse2.psrl.q 7083 case Intrinsic::x86_sse41_pcmpeqq: // llvm.x86.sse41.pcmpeqq 7084 case Intrinsic::x86_sse42_pcmpgtq: // llvm.x86.sse42.pcmpgtq 7085 ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); 7086 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); 7087 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); 7088 break; 7089 case Intrinsic::x86_sse41_pmovsxdq: // llvm.x86.sse41.pmovsxdq 7090 case Intrinsic::x86_sse41_pmovzxdq: // llvm.x86.sse41.pmovzxdq 7091 ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); 7092 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7093 break; 7094 case Intrinsic::x86_sse2_pmulu_dq: // llvm.x86.sse2.pmulu.dq 7095 case Intrinsic::x86_sse41_pmuldq: // llvm.x86.sse41.pmuldq 7096 ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); 7097 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7098 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7099 break; 7100 case Intrinsic::x86_sse41_pmovsxwq: // llvm.x86.sse41.pmovsxwq 7101 case Intrinsic::x86_sse41_pmovzxwq: // llvm.x86.sse41.pmovzxwq 7102 ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); 7103 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 7104 break; 7105 case Intrinsic::x86_avx_ldu_dq_256: // llvm.x86.avx.ldu.dq.256 7106 case Intrinsic::x86_avx_loadu_dq_256: // llvm.x86.avx.loadu.dq.256 7107 ResultTy = VectorType::get(IntegerType::get(Context, 8), 32); 7108 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 7109 break; 7110 case Intrinsic::x86_avx_vbroadcastss: // llvm.x86.avx.vbroadcastss 7111 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7112 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 7113 break; 7114 case Intrinsic::x86_avx_maskload_ps: // llvm.x86.avx.maskload.ps 7115 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7116 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 7117 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7118 break; 7119 case Intrinsic::x86_sse2_cvtpd2ps: // llvm.x86.sse2.cvtpd2ps 7120 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7121 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7122 break; 7123 case Intrinsic::x86_sse_rcp_ps: // llvm.x86.sse.rcp.ps 7124 case Intrinsic::x86_sse_rcp_ss: // llvm.x86.sse.rcp.ss 7125 case Intrinsic::x86_sse_rsqrt_ps: // llvm.x86.sse.rsqrt.ps 7126 case Intrinsic::x86_sse_rsqrt_ss: // llvm.x86.sse.rsqrt.ss 7127 case Intrinsic::x86_sse_sqrt_ps: // llvm.x86.sse.sqrt.ps 7128 case Intrinsic::x86_sse_sqrt_ss: // llvm.x86.sse.sqrt.ss 7129 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7130 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7131 break; 7132 case Intrinsic::x86_sse41_round_ps: // llvm.x86.sse41.round.ps 7133 case Intrinsic::x86_sse_cvtsi2ss: // llvm.x86.sse.cvtsi2ss 7134 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7135 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7136 ArgTys.push_back(IntegerType::get(Context, 32)); 7137 break; 7138 case Intrinsic::x86_sse_cvtsi642ss: // llvm.x86.sse.cvtsi642ss 7139 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7140 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7141 ArgTys.push_back(IntegerType::get(Context, 64)); 7142 break; 7143 case Intrinsic::x86_avx_vpermil_ps: // llvm.x86.avx.vpermil.ps 7144 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7145 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7146 ArgTys.push_back(IntegerType::get(Context, 8)); 7147 break; 7148 case Intrinsic::x86_sse2_cvtsd2ss: // llvm.x86.sse2.cvtsd2ss 7149 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7150 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7151 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7152 break; 7153 case Intrinsic::x86_sse3_addsub_ps: // llvm.x86.sse3.addsub.ps 7154 case Intrinsic::x86_sse3_hadd_ps: // llvm.x86.sse3.hadd.ps 7155 case Intrinsic::x86_sse3_hsub_ps: // llvm.x86.sse3.hsub.ps 7156 case Intrinsic::x86_sse_add_ss: // llvm.x86.sse.add.ss 7157 case Intrinsic::x86_sse_div_ss: // llvm.x86.sse.div.ss 7158 case Intrinsic::x86_sse_max_ps: // llvm.x86.sse.max.ps 7159 case Intrinsic::x86_sse_max_ss: // llvm.x86.sse.max.ss 7160 case Intrinsic::x86_sse_min_ps: // llvm.x86.sse.min.ps 7161 case Intrinsic::x86_sse_min_ss: // llvm.x86.sse.min.ss 7162 case Intrinsic::x86_sse_mul_ss: // llvm.x86.sse.mul.ss 7163 case Intrinsic::x86_sse_sub_ss: // llvm.x86.sse.sub.ss 7164 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7165 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7166 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7167 break; 7168 case Intrinsic::x86_sse41_blendps: // llvm.x86.sse41.blendps 7169 case Intrinsic::x86_sse41_dpps: // llvm.x86.sse41.dpps 7170 case Intrinsic::x86_sse41_insertps: // llvm.x86.sse41.insertps 7171 case Intrinsic::x86_sse41_round_ss: // llvm.x86.sse41.round.ss 7172 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7173 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7174 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7175 ArgTys.push_back(IntegerType::get(Context, 32)); 7176 break; 7177 case Intrinsic::x86_sse_cmp_ps: // llvm.x86.sse.cmp.ps 7178 case Intrinsic::x86_sse_cmp_ss: // llvm.x86.sse.cmp.ss 7179 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7180 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7181 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7182 ArgTys.push_back(IntegerType::get(Context, 8)); 7183 break; 7184 case Intrinsic::x86_sse41_blendvps: // llvm.x86.sse41.blendvps 7185 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7186 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7187 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7188 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7189 break; 7190 case Intrinsic::x86_avx_vpermilvar_ps: // llvm.x86.avx.vpermilvar.ps 7191 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7192 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7193 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7194 break; 7195 case Intrinsic::x86_sse_cvtpi2ps: // llvm.x86.sse.cvtpi2ps 7196 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7197 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7198 ArgTys.push_back(Type::getX86_MMXTy(Context)); 7199 break; 7200 case Intrinsic::x86_avx_cvt_pd2_ps_256: // llvm.x86.avx.cvt.pd2.ps.256 7201 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7202 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7203 break; 7204 case Intrinsic::x86_sse2_cvtdq2ps: // llvm.x86.sse2.cvtdq2ps 7205 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7206 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7207 break; 7208 case Intrinsic::x86_avx_vextractf128_ps_256: // llvm.x86.avx.vextractf128.ps.256 7209 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); 7210 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7211 ArgTys.push_back(IntegerType::get(Context, 8)); 7212 break; 7213 case Intrinsic::x86_avx_loadu_pd_256: // llvm.x86.avx.loadu.pd.256 7214 case Intrinsic::x86_avx_vbroadcast_sd_256: // llvm.x86.avx.vbroadcast.sd.256 7215 case Intrinsic::x86_avx_vbroadcastf128_pd_256: // llvm.x86.avx.vbroadcastf128.pd.256 7216 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7217 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 7218 break; 7219 case Intrinsic::x86_avx_maskload_pd_256: // llvm.x86.avx.maskload.pd.256 7220 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7221 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 7222 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7223 break; 7224 case Intrinsic::x86_avx_cvt_ps2_pd_256: // llvm.x86.avx.cvt.ps2.pd.256 7225 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7226 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7227 break; 7228 case Intrinsic::x86_avx_sqrt_pd_256: // llvm.x86.avx.sqrt.pd.256 7229 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7230 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7231 break; 7232 case Intrinsic::x86_avx_round_pd_256: // llvm.x86.avx.round.pd.256 7233 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7234 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7235 ArgTys.push_back(IntegerType::get(Context, 32)); 7236 break; 7237 case Intrinsic::x86_avx_vpermil_pd_256: // llvm.x86.avx.vpermil.pd.256 7238 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7239 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7240 ArgTys.push_back(IntegerType::get(Context, 8)); 7241 break; 7242 case Intrinsic::x86_avx_vinsertf128_pd_256: // llvm.x86.avx.vinsertf128.pd.256 7243 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7244 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7245 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7246 ArgTys.push_back(IntegerType::get(Context, 8)); 7247 break; 7248 case Intrinsic::x86_avx_addsub_pd_256: // llvm.x86.avx.addsub.pd.256 7249 case Intrinsic::x86_avx_hadd_pd_256: // llvm.x86.avx.hadd.pd.256 7250 case Intrinsic::x86_avx_hsub_pd_256: // llvm.x86.avx.hsub.pd.256 7251 case Intrinsic::x86_avx_max_pd_256: // llvm.x86.avx.max.pd.256 7252 case Intrinsic::x86_avx_min_pd_256: // llvm.x86.avx.min.pd.256 7253 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7254 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7255 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7256 break; 7257 case Intrinsic::x86_avx_blend_pd_256: // llvm.x86.avx.blend.pd.256 7258 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7259 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7260 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7261 ArgTys.push_back(IntegerType::get(Context, 32)); 7262 break; 7263 case Intrinsic::x86_avx_cmp_pd_256: // llvm.x86.avx.cmp.pd.256 7264 case Intrinsic::x86_avx_vperm2f128_pd_256: // llvm.x86.avx.vperm2f128.pd.256 7265 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7266 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7267 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7268 ArgTys.push_back(IntegerType::get(Context, 8)); 7269 break; 7270 case Intrinsic::x86_avx_blendv_pd_256: // llvm.x86.avx.blendv.pd.256 7271 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7272 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7273 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7274 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7275 break; 7276 case Intrinsic::x86_avx_vpermilvar_pd_256: // llvm.x86.avx.vpermilvar.pd.256 7277 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7278 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7279 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4)); 7280 break; 7281 case Intrinsic::x86_avx_cvtdq2_pd_256: // llvm.x86.avx.cvtdq2.pd.256 7282 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); 7283 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7284 break; 7285 case Intrinsic::x86_sse41_pmovsxbd: // llvm.x86.sse41.pmovsxbd 7286 case Intrinsic::x86_sse41_pmovzxbd: // llvm.x86.sse41.pmovzxbd 7287 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); 7288 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 7289 break; 7290 case Intrinsic::x86_sse2_cvtpd2dq: // llvm.x86.sse2.cvtpd2dq 7291 case Intrinsic::x86_sse2_cvttpd2dq: // llvm.x86.sse2.cvttpd2dq 7292 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); 7293 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7294 break; 7295 case Intrinsic::x86_sse2_cvtps2dq: // llvm.x86.sse2.cvtps2dq 7296 case Intrinsic::x86_sse2_cvttps2dq: // llvm.x86.sse2.cvttps2dq 7297 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); 7298 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7299 break; 7300 case Intrinsic::x86_avx_cvt_pd2dq_256: // llvm.x86.avx.cvt.pd2dq.256 7301 case Intrinsic::x86_avx_cvtt_pd2dq_256: // llvm.x86.avx.cvtt.pd2dq.256 7302 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); 7303 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); 7304 break; 7305 case Intrinsic::x86_ssse3_pabs_d_128: // llvm.x86.ssse3.pabs.d.128 7306 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); 7307 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7308 break; 7309 case Intrinsic::x86_sse2_pslli_d: // llvm.x86.sse2.pslli.d 7310 case Intrinsic::x86_sse2_psrai_d: // llvm.x86.sse2.psrai.d 7311 case Intrinsic::x86_sse2_psrli_d: // llvm.x86.sse2.psrli.d 7312 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); 7313 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7314 ArgTys.push_back(IntegerType::get(Context, 32)); 7315 break; 7316 case Intrinsic::x86_sse2_pcmpeq_d: // llvm.x86.sse2.pcmpeq.d 7317 case Intrinsic::x86_sse2_pcmpgt_d: // llvm.x86.sse2.pcmpgt.d 7318 case Intrinsic::x86_sse2_psll_d: // llvm.x86.sse2.psll.d 7319 case Intrinsic::x86_sse2_psra_d: // llvm.x86.sse2.psra.d 7320 case Intrinsic::x86_sse2_psrl_d: // llvm.x86.sse2.psrl.d 7321 case Intrinsic::x86_sse41_pmaxsd: // llvm.x86.sse41.pmaxsd 7322 case Intrinsic::x86_sse41_pmaxud: // llvm.x86.sse41.pmaxud 7323 case Intrinsic::x86_sse41_pminsd: // llvm.x86.sse41.pminsd 7324 case Intrinsic::x86_sse41_pminud: // llvm.x86.sse41.pminud 7325 case Intrinsic::x86_ssse3_phadd_d_128: // llvm.x86.ssse3.phadd.d.128 7326 case Intrinsic::x86_ssse3_phadd_sw_128: // llvm.x86.ssse3.phadd.sw.128 7327 case Intrinsic::x86_ssse3_phsub_d_128: // llvm.x86.ssse3.phsub.d.128 7328 case Intrinsic::x86_ssse3_psign_d_128: // llvm.x86.ssse3.psign.d.128 7329 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); 7330 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7331 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7332 break; 7333 case Intrinsic::x86_sse41_pmovsxwd: // llvm.x86.sse41.pmovsxwd 7334 case Intrinsic::x86_sse41_pmovzxwd: // llvm.x86.sse41.pmovzxwd 7335 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); 7336 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 7337 break; 7338 case Intrinsic::x86_sse2_pmadd_wd: // llvm.x86.sse2.pmadd.wd 7339 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); 7340 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 7341 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 7342 break; 7343 case Intrinsic::x86_avx_vextractf128_si_256: // llvm.x86.avx.vextractf128.si.256 7344 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); 7345 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); 7346 ArgTys.push_back(IntegerType::get(Context, 8)); 7347 break; 7348 case Intrinsic::x86_avx_loadu_ps_256: // llvm.x86.avx.loadu.ps.256 7349 case Intrinsic::x86_avx_vbroadcastf128_ps_256: // llvm.x86.avx.vbroadcastf128.ps.256 7350 case Intrinsic::x86_avx_vbroadcastss_256: // llvm.x86.avx.vbroadcastss.256 7351 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7352 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 7353 break; 7354 case Intrinsic::x86_avx_maskload_ps_256: // llvm.x86.avx.maskload.ps.256 7355 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7356 ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); 7357 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7358 break; 7359 case Intrinsic::x86_avx_rcp_ps_256: // llvm.x86.avx.rcp.ps.256 7360 case Intrinsic::x86_avx_rsqrt_ps_256: // llvm.x86.avx.rsqrt.ps.256 7361 case Intrinsic::x86_avx_sqrt_ps_256: // llvm.x86.avx.sqrt.ps.256 7362 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7363 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7364 break; 7365 case Intrinsic::x86_avx_round_ps_256: // llvm.x86.avx.round.ps.256 7366 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7367 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7368 ArgTys.push_back(IntegerType::get(Context, 32)); 7369 break; 7370 case Intrinsic::x86_avx_vpermil_ps_256: // llvm.x86.avx.vpermil.ps.256 7371 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7372 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7373 ArgTys.push_back(IntegerType::get(Context, 8)); 7374 break; 7375 case Intrinsic::x86_avx_vinsertf128_ps_256: // llvm.x86.avx.vinsertf128.ps.256 7376 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7377 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7378 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7379 ArgTys.push_back(IntegerType::get(Context, 8)); 7380 break; 7381 case Intrinsic::x86_avx_addsub_ps_256: // llvm.x86.avx.addsub.ps.256 7382 case Intrinsic::x86_avx_hadd_ps_256: // llvm.x86.avx.hadd.ps.256 7383 case Intrinsic::x86_avx_hsub_ps_256: // llvm.x86.avx.hsub.ps.256 7384 case Intrinsic::x86_avx_max_ps_256: // llvm.x86.avx.max.ps.256 7385 case Intrinsic::x86_avx_min_ps_256: // llvm.x86.avx.min.ps.256 7386 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7387 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7388 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7389 break; 7390 case Intrinsic::x86_avx_blend_ps_256: // llvm.x86.avx.blend.ps.256 7391 case Intrinsic::x86_avx_dp_ps_256: // llvm.x86.avx.dp.ps.256 7392 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7393 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7394 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7395 ArgTys.push_back(IntegerType::get(Context, 32)); 7396 break; 7397 case Intrinsic::x86_avx_cmp_ps_256: // llvm.x86.avx.cmp.ps.256 7398 case Intrinsic::x86_avx_vperm2f128_ps_256: // llvm.x86.avx.vperm2f128.ps.256 7399 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7400 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7401 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7402 ArgTys.push_back(IntegerType::get(Context, 8)); 7403 break; 7404 case Intrinsic::x86_avx_blendv_ps_256: // llvm.x86.avx.blendv.ps.256 7405 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7406 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7407 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7408 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7409 break; 7410 case Intrinsic::x86_avx_vpermilvar_ps_256: // llvm.x86.avx.vpermilvar.ps.256 7411 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7412 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7413 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); 7414 break; 7415 case Intrinsic::x86_avx_cvtdq2_ps_256: // llvm.x86.avx.cvtdq2.ps.256 7416 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); 7417 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); 7418 break; 7419 case Intrinsic::x86_sse41_pmovsxbw: // llvm.x86.sse41.pmovsxbw 7420 case Intrinsic::x86_sse41_pmovzxbw: // llvm.x86.sse41.pmovzxbw 7421 ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); 7422 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); 7423 break; 7424 case Intrinsic::x86_sse2_packssdw_128: // llvm.x86.sse2.packssdw.128 7425 case Intrinsic::x86_sse41_packusdw: // llvm.x86.sse41.packusdw 7426 ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); 7427 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7428 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7429 break; 7430 case Intrinsic::x86_sse41_phminposuw: // llvm.x86.sse41.phminposuw 7431 case Intrinsic::x86_ssse3_pabs_w_128: // llvm.x86.ssse3.pabs.w.128 7432 ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); 7433 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 7434 break; 7435 case Intrinsic::x86_sse2_pslli_w: // llvm.x86.sse2.pslli.w 7436 case Intrinsic::x86_sse2_psrai_w: // llvm.x86.sse2.psrai.w 7437 case Intrinsic::x86_sse2_psrli_w: // llvm.x86.sse2.psrli.w 7438 ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); 7439 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 7440 ArgTys.push_back(IntegerType::get(Context, 32)); 7441 break; 7442 case Intrinsic::x86_sse2_padds_w: // llvm.x86.sse2.padds.w 7443 case Intrinsic::x86_sse2_paddus_w: // llvm.x86.sse2.paddus.w 7444 case Intrinsic::x86_sse2_pavg_w: // llvm.x86.sse2.pavg.w 7445 case Intrinsic::x86_sse2_pcmpeq_w: // llvm.x86.sse2.pcmpeq.w 7446 case Intrinsic::x86_sse2_pcmpgt_w: // llvm.x86.sse2.pcmpgt.w 7447 case Intrinsic::x86_sse2_pmaxs_w: // llvm.x86.sse2.pmaxs.w 7448 case Intrinsic::x86_sse2_pmins_w: // llvm.x86.sse2.pmins.w 7449 case Intrinsic::x86_sse2_pmulh_w: // llvm.x86.sse2.pmulh.w 7450 case Intrinsic::x86_sse2_pmulhu_w: // llvm.x86.sse2.pmulhu.w 7451 case Intrinsic::x86_sse2_psll_w: // llvm.x86.sse2.psll.w 7452 case Intrinsic::x86_sse2_psra_w: // llvm.x86.sse2.psra.w 7453 case Intrinsic::x86_sse2_psrl_w: // llvm.x86.sse2.psrl.w 7454 case Intrinsic::x86_sse2_psubs_w: // llvm.x86.sse2.psubs.w 7455 case Intrinsic::x86_sse2_psubus_w: // llvm.x86.sse2.psubus.w 7456 case Intrinsic::x86_sse41_pmaxuw: // llvm.x86.sse41.pmaxuw 7457 case Intrinsic::x86_sse41_pminuw: // llvm.x86.sse41.pminuw 7458 case Intrinsic::x86_ssse3_phadd_w_128: // llvm.x86.ssse3.phadd.w.128 7459 case Intrinsic::x86_ssse3_phsub_sw_128: // llvm.x86.ssse3.phsub.sw.128 7460 case Intrinsic::x86_ssse3_phsub_w_128: // llvm.x86.ssse3.phsub.w.128 7461 case Intrinsic::x86_ssse3_pmadd_ub_sw_128: // llvm.x86.ssse3.pmadd.ub.sw.128 7462 case Intrinsic::x86_ssse3_pmul_hr_sw_128: // llvm.x86.ssse3.pmul.hr.sw.128 7463 case Intrinsic::x86_ssse3_psign_w_128: // llvm.x86.ssse3.psign.w.128 7464 ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); 7465 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 7466 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 7467 break; 7468 case Intrinsic::x86_sse41_pblendw: // llvm.x86.sse41.pblendw 7469 ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); 7470 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 7471 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); 7472 ArgTys.push_back(IntegerType::get(Context, 32)); 7473 break; 7474 case Intrinsic::x86_avx_cvt_ps2dq_256: // llvm.x86.avx.cvt.ps2dq.256 7475 case Intrinsic::x86_avx_cvtt_ps2dq_256: // llvm.x86.avx.cvtt.ps2dq.256 7476 ResultTy = VectorType::get(IntegerType::get(Context, 32), 8); 7477 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); 7478 break; 7479 case Intrinsic::x86_avx_vinsertf128_si_256: // llvm.x86.avx.vinsertf128.si.256 7480 ResultTy = VectorType::get(IntegerType::get(Context, 32), 8); 7481 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); 7482 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); 7483 ArgTys.push_back(IntegerType::get(Context, 8)); 7484 break; 7485 case Intrinsic::x86_avx_vperm2f128_si_256: // llvm.x86.avx.vperm2f128.si.256 7486 ResultTy = VectorType::get(IntegerType::get(Context, 32), 8); 7487 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); 7488 ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); 7489 ArgTys.push_back(IntegerType::get(Context, 8)); 7490 break; 7491 case Intrinsic::x86_sse_cvtpd2pi: // llvm.x86.sse.cvtpd2pi 7492 case Intrinsic::x86_sse_cvttpd2pi: // llvm.x86.sse.cvttpd2pi 7493 ResultTy = Type::getX86_MMXTy(Context); 7494 ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); 7495 break; 7496 case Intrinsic::x86_sse_cvtps2pi: // llvm.x86.sse.cvtps2pi 7497 case Intrinsic::x86_sse_cvttps2pi: // llvm.x86.sse.cvttps2pi 7498 ResultTy = Type::getX86_MMXTy(Context); 7499 ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); 7500 break; 7501 case Intrinsic::x86_3dnow_pf2id: // llvm.x86.3dnow.pf2id 7502 case Intrinsic::x86_3dnow_pfrcp: // llvm.x86.3dnow.pfrcp 7503 case Intrinsic::x86_3dnow_pfrsqrt: // llvm.x86.3dnow.pfrsqrt 7504 case Intrinsic::x86_3dnow_pi2fd: // llvm.x86.3dnow.pi2fd 7505 case Intrinsic::x86_3dnowa_pf2iw: // llvm.x86.3dnowa.pf2iw 7506 case Intrinsic::x86_3dnowa_pi2fw: // llvm.x86.3dnowa.pi2fw 7507 case Intrinsic::x86_3dnowa_pswapd: // llvm.x86.3dnowa.pswapd 7508 case Intrinsic::x86_ssse3_pabs_b: // llvm.x86.ssse3.pabs.b 7509 case Intrinsic::x86_ssse3_pabs_d: // llvm.x86.ssse3.pabs.d 7510 case Intrinsic::x86_ssse3_pabs_w: // llvm.x86.ssse3.pabs.w 7511 ResultTy = Type::getX86_MMXTy(Context); 7512 ArgTys.push_back(Type::getX86_MMXTy(Context)); 7513 break; 7514 case Intrinsic::x86_mmx_pslli_d: // llvm.x86.mmx.pslli.d 7515 case Intrinsic::x86_mmx_pslli_q: // llvm.x86.mmx.pslli.q 7516 case Intrinsic::x86_mmx_pslli_w: // llvm.x86.mmx.pslli.w 7517 case Intrinsic::x86_mmx_psrai_d: // llvm.x86.mmx.psrai.d 7518 case Intrinsic::x86_mmx_psrai_w: // llvm.x86.mmx.psrai.w 7519 case Intrinsic::x86_mmx_psrli_d: // llvm.x86.mmx.psrli.d 7520 case Intrinsic::x86_mmx_psrli_q: // llvm.x86.mmx.psrli.q 7521 case Intrinsic::x86_mmx_psrli_w: // llvm.x86.mmx.psrli.w 7522 ResultTy = Type::getX86_MMXTy(Context); 7523 ArgTys.push_back(Type::getX86_MMXTy(Context)); 7524 ArgTys.push_back(IntegerType::get(Context, 32)); 7525 break; 7526 case Intrinsic::x86_mmx_pinsr_w: // llvm.x86.mmx.pinsr.w 7527 ResultTy = Type::getX86_MMXTy(Context); 7528 ArgTys.push_back(Type::getX86_MMXTy(Context)); 7529 ArgTys.push_back(IntegerType::get(Context, 32)); 7530 ArgTys.push_back(IntegerType::get(Context, 32)); 7531 break; 7532 case Intrinsic::x86_sse_pshuf_w: // llvm.x86.sse.pshuf.w 7533 ResultTy = Type::getX86_MMXTy(Context); 7534 ArgTys.push_back(Type::getX86_MMXTy(Context)); 7535 ArgTys.push_back(IntegerType::get(Context, 8)); 7536 break; 7537 case Intrinsic::x86_3dnow_pavgusb: // llvm.x86.3dnow.pavgusb 7538 case Intrinsic::x86_3dnow_pfacc: // llvm.x86.3dnow.pfacc 7539 case Intrinsic::x86_3dnow_pfadd: // llvm.x86.3dnow.pfadd 7540 case Intrinsic::x86_3dnow_pfcmpeq: // llvm.x86.3dnow.pfcmpeq 7541 case Intrinsic::x86_3dnow_pfcmpge: // llvm.x86.3dnow.pfcmpge 7542 case Intrinsic::x86_3dnow_pfcmpgt: // llvm.x86.3dnow.pfcmpgt 7543 case Intrinsic::x86_3dnow_pfmax: // llvm.x86.3dnow.pfmax 7544 case Intrinsic::x86_3dnow_pfmin: // llvm.x86.3dnow.pfmin 7545 case Intrinsic::x86_3dnow_pfmul: // llvm.x86.3dnow.pfmul 7546 case Intrinsic::x86_3dnow_pfrcpit1: // llvm.x86.3dnow.pfrcpit1 7547 case Intrinsic::x86_3dnow_pfrcpit2: // llvm.x86.3dnow.pfrcpit2 7548 case Intrinsic::x86_3dnow_pfrsqit1: // llvm.x86.3dnow.pfrsqit1 7549 case Intrinsic::x86_3dnow_pfsub: // llvm.x86.3dnow.pfsub 7550 case Intrinsic::x86_3dnow_pfsubr: // llvm.x86.3dnow.pfsubr 7551 case Intrinsic::x86_3dnow_pmulhrw: // llvm.x86.3dnow.pmulhrw 7552 case Intrinsic::x86_3dnowa_pfnacc: // llvm.x86.3dnowa.pfnacc 7553 case Intrinsic::x86_3dnowa_pfpnacc: // llvm.x86.3dnowa.pfpnacc 7554 case Intrinsic::x86_mmx_packssdw: // llvm.x86.mmx.packssdw 7555 case Intrinsic::x86_mmx_packsswb: // llvm.x86.mmx.packsswb 7556 case Intrinsic::x86_mmx_packuswb: // llvm.x86.mmx.packuswb 7557 case Intrinsic::x86_mmx_padd_b: // llvm.x86.mmx.padd.b 7558 case Intrinsic::x86_mmx_padd_d: // llvm.x86.mmx.padd.d 7559 case Intrinsic::x86_mmx_padd_q: // llvm.x86.mmx.padd.q 7560 case Intrinsic::x86_mmx_padd_w: // llvm.x86.mmx.padd.w 7561 case Intrinsic::x86_mmx_padds_b: // llvm.x86.mmx.padds.b 7562 case Intrinsic::x86_mmx_padds_w: // llvm.x86.mmx.padds.w 7563 case Intrinsic::x86_mmx_paddus_b: // llvm.x86.mmx.paddus.b 7564 case Intrinsic::x86_mmx_paddus_w: // llvm.x86.mmx.paddus.w 7565 case Intrinsic::x86_mmx_pand: // llvm.x86.mmx.pand 7566 case Intrinsic::x86_mmx_pandn: // llvm.x86.mmx.pandn 7567 case Intrinsic::x86_mmx_pavg_b: // llvm.x86.mmx.pavg.b 7568 case Intrinsic::x86_mmx_pavg_w: // llvm.x86.mmx.pavg.w 7569 case Intrinsic::x86_mmx_pcmpeq_b: // llvm.x86.mmx.pcmpeq.b 7570 case Intrinsic::x86_mmx_pcmpeq_d: // llvm.x86.mmx.pcmpeq.d 7571 case Intrinsic::x86_mmx_pcmpeq_w: // llvm.x86.mmx.pcmpeq.w 7572 case Intrinsic::x86_mmx_pcmpgt_b: // llvm.x86.mmx.pcmpgt.b 7573 case Intrinsic::x86_mmx_pcmpgt_d: // llvm.x86.mmx.pcmpgt.d 7574 case Intrinsic::x86_mmx_pcmpgt_w: // llvm.x86.mmx.pcmpgt.w 7575 case Intrinsic::x86_mmx_pmadd_wd: // llvm.x86.mmx.pmadd.wd 7576 case Intrinsic::x86_mmx_pmaxs_w: // llvm.x86.mmx.pmaxs.w 7577 case Intrinsic::x86_mmx_pmaxu_b: // llvm.x86.mmx.pmaxu.b 7578 case Intrinsic::x86_mmx_pmins_w: // llvm.x86.mmx.pmins.w 7579 case Intrinsic::x86_mmx_pminu_b: // llvm.x86.mmx.pminu.b 7580 case Intrinsic::x86_mmx_pmulh_w: // llvm.x86.mmx.pmulh.w 7581 case Intrinsic::x86_mmx_pmulhu_w: // llvm.x86.mmx.pmulhu.w 7582 case Intrinsic::x86_mmx_pmull_w: // llvm.x86.mmx.pmull.w 7583 case Intrinsic::x86_mmx_pmulu_dq: // llvm.x86.mmx.pmulu.dq 7584 case Intrinsic::x86_mmx_por: // llvm.x86.mmx.por 7585 case Intrinsic::x86_mmx_psad_bw: // llvm.x86.mmx.psad.bw 7586 case Intrinsic::x86_mmx_psll_d: // llvm.x86.mmx.psll.d 7587 case Intrinsic::x86_mmx_psll_q: // llvm.x86.mmx.psll.q 7588 case Intrinsic::x86_mmx_psll_w: // llvm.x86.mmx.psll.w 7589 case Intrinsic::x86_mmx_psra_d: // llvm.x86.mmx.psra.d 7590 case Intrinsic::x86_mmx_psra_w: // llvm.x86.mmx.psra.w 7591 case Intrinsic::x86_mmx_psrl_d: // llvm.x86.mmx.psrl.d 7592 case Intrinsic::x86_mmx_psrl_q: // llvm.x86.mmx.psrl.q 7593 case Intrinsic::x86_mmx_psrl_w: // llvm.x86.mmx.psrl.w 7594 case Intrinsic::x86_mmx_psub_b: // llvm.x86.mmx.psub.b 7595 case Intrinsic::x86_mmx_psub_d: // llvm.x86.mmx.psub.d 7596 case Intrinsic::x86_mmx_psub_q: // llvm.x86.mmx.psub.q 7597 case Intrinsic::x86_mmx_psub_w: // llvm.x86.mmx.psub.w 7598 case Intrinsic::x86_mmx_psubs_b: // llvm.x86.mmx.psubs.b 7599 case Intrinsic::x86_mmx_psubs_w: // llvm.x86.mmx.psubs.w 7600 case Intrinsic::x86_mmx_psubus_b: // llvm.x86.mmx.psubus.b 7601 case Intrinsic::x86_mmx_psubus_w: // llvm.x86.mmx.psubus.w 7602 case Intrinsic::x86_mmx_punpckhbw: // llvm.x86.mmx.punpckhbw 7603 case Intrinsic::x86_mmx_punpckhdq: // llvm.x86.mmx.punpckhdq 7604 case Intrinsic::x86_mmx_punpckhwd: // llvm.x86.mmx.punpckhwd 7605 case Intrinsic::x86_mmx_punpcklbw: // llvm.x86.mmx.punpcklbw 7606 case Intrinsic::x86_mmx_punpckldq: // llvm.x86.mmx.punpckldq 7607 case Intrinsic::x86_mmx_punpcklwd: // llvm.x86.mmx.punpcklwd 7608 case Intrinsic::x86_mmx_pxor: // llvm.x86.mmx.pxor 7609 case Intrinsic::x86_ssse3_phadd_d: // llvm.x86.ssse3.phadd.d 7610 case Intrinsic::x86_ssse3_phadd_sw: // llvm.x86.ssse3.phadd.sw 7611 case Intrinsic::x86_ssse3_phadd_w: // llvm.x86.ssse3.phadd.w 7612 case Intrinsic::x86_ssse3_phsub_d: // llvm.x86.ssse3.phsub.d 7613 case Intrinsic::x86_ssse3_phsub_sw: // llvm.x86.ssse3.phsub.sw 7614 case Intrinsic::x86_ssse3_phsub_w: // llvm.x86.ssse3.phsub.w 7615 case Intrinsic::x86_ssse3_pmadd_ub_sw: // llvm.x86.ssse3.pmadd.ub.sw 7616 case Intrinsic::x86_ssse3_pmul_hr_sw: // llvm.x86.ssse3.pmul.hr.sw 7617 case Intrinsic::x86_ssse3_pshuf_b: // llvm.x86.ssse3.pshuf.b 7618 case Intrinsic::x86_ssse3_psign_b: // llvm.x86.ssse3.psign.b 7619 case Intrinsic::x86_ssse3_psign_d: // llvm.x86.ssse3.psign.d 7620 case Intrinsic::x86_ssse3_psign_w: // llvm.x86.ssse3.psign.w 7621 ResultTy = Type::getX86_MMXTy(Context); 7622 ArgTys.push_back(Type::getX86_MMXTy(Context)); 7623 ArgTys.push_back(Type::getX86_MMXTy(Context)); 7624 break; 7625 case Intrinsic::x86_mmx_palignr_b: // llvm.x86.mmx.palignr.b 7626 ResultTy = Type::getX86_MMXTy(Context); 7627 ArgTys.push_back(Type::getX86_MMXTy(Context)); 7628 ArgTys.push_back(Type::getX86_MMXTy(Context)); 7629 ArgTys.push_back(IntegerType::get(Context, 8)); 7630 break; 7631 } 7632 #endif 7633 7634 // Add parameter attributes that are not common to all intrinsics. 7635 #ifdef GET_INTRINSIC_ATTRIBUTES 7636 AttrListPtr Intrinsic::getAttributes(ID id) { 7637 AttributeWithIndex AWI[3]; 7638 unsigned NumAttrs = 0; 7639 switch (id) { 7640 default: break; 7641 case Intrinsic::bswap: 7642 case Intrinsic::convert_from_fp16: 7643 case Intrinsic::convert_to_fp16: 7644 case Intrinsic::ctlz: 7645 case Intrinsic::ctpop: 7646 case Intrinsic::cttz: 7647 case Intrinsic::dbg_declare: 7648 case Intrinsic::dbg_value: 7649 case Intrinsic::eh_sjlj_callsite: 7650 case Intrinsic::eh_sjlj_lsda: 7651 case Intrinsic::eh_typeid_for: 7652 case Intrinsic::expect: 7653 case Intrinsic::fma: 7654 case Intrinsic::frameaddress: 7655 case Intrinsic::objectsize: 7656 case Intrinsic::returnaddress: 7657 case Intrinsic::sadd_with_overflow: 7658 case Intrinsic::smul_with_overflow: 7659 case Intrinsic::ssub_with_overflow: 7660 case Intrinsic::uadd_with_overflow: 7661 case Intrinsic::umul_with_overflow: 7662 case Intrinsic::usub_with_overflow: 7663 case Intrinsic::x86_3dnow_pavgusb: 7664 case Intrinsic::x86_3dnow_pf2id: 7665 case Intrinsic::x86_3dnow_pfacc: 7666 case Intrinsic::x86_3dnow_pfadd: 7667 case Intrinsic::x86_3dnow_pfcmpeq: 7668 case Intrinsic::x86_3dnow_pfcmpge: 7669 case Intrinsic::x86_3dnow_pfcmpgt: 7670 case Intrinsic::x86_3dnow_pfmax: 7671 case Intrinsic::x86_3dnow_pfmin: 7672 case Intrinsic::x86_3dnow_pfmul: 7673 case Intrinsic::x86_3dnow_pfrcp: 7674 case Intrinsic::x86_3dnow_pfrcpit1: 7675 case Intrinsic::x86_3dnow_pfrcpit2: 7676 case Intrinsic::x86_3dnow_pfrsqit1: 7677 case Intrinsic::x86_3dnow_pfrsqrt: 7678 case Intrinsic::x86_3dnow_pfsub: 7679 case Intrinsic::x86_3dnow_pfsubr: 7680 case Intrinsic::x86_3dnow_pi2fd: 7681 case Intrinsic::x86_3dnow_pmulhrw: 7682 case Intrinsic::x86_3dnowa_pf2iw: 7683 case Intrinsic::x86_3dnowa_pfnacc: 7684 case Intrinsic::x86_3dnowa_pfpnacc: 7685 case Intrinsic::x86_3dnowa_pi2fw: 7686 case Intrinsic::x86_3dnowa_pswapd: 7687 case Intrinsic::x86_aesni_aesdec: 7688 case Intrinsic::x86_aesni_aesdeclast: 7689 case Intrinsic::x86_aesni_aesenc: 7690 case Intrinsic::x86_aesni_aesenclast: 7691 case Intrinsic::x86_aesni_aesimc: 7692 case Intrinsic::x86_aesni_aeskeygenassist: 7693 case Intrinsic::x86_avx_addsub_pd_256: 7694 case Intrinsic::x86_avx_addsub_ps_256: 7695 case Intrinsic::x86_avx_blend_pd_256: 7696 case Intrinsic::x86_avx_blend_ps_256: 7697 case Intrinsic::x86_avx_blendv_pd_256: 7698 case Intrinsic::x86_avx_blendv_ps_256: 7699 case Intrinsic::x86_avx_cmp_pd_256: 7700 case Intrinsic::x86_avx_cmp_ps_256: 7701 case Intrinsic::x86_avx_cvt_pd2_ps_256: 7702 case Intrinsic::x86_avx_cvt_pd2dq_256: 7703 case Intrinsic::x86_avx_cvt_ps2_pd_256: 7704 case Intrinsic::x86_avx_cvt_ps2dq_256: 7705 case Intrinsic::x86_avx_cvtdq2_pd_256: 7706 case Intrinsic::x86_avx_cvtdq2_ps_256: 7707 case Intrinsic::x86_avx_cvtt_pd2dq_256: 7708 case Intrinsic::x86_avx_cvtt_ps2dq_256: 7709 case Intrinsic::x86_avx_dp_ps_256: 7710 case Intrinsic::x86_avx_hadd_pd_256: 7711 case Intrinsic::x86_avx_hadd_ps_256: 7712 case Intrinsic::x86_avx_hsub_pd_256: 7713 case Intrinsic::x86_avx_hsub_ps_256: 7714 case Intrinsic::x86_avx_max_pd_256: 7715 case Intrinsic::x86_avx_max_ps_256: 7716 case Intrinsic::x86_avx_min_pd_256: 7717 case Intrinsic::x86_avx_min_ps_256: 7718 case Intrinsic::x86_avx_movmsk_pd_256: 7719 case Intrinsic::x86_avx_movmsk_ps_256: 7720 case Intrinsic::x86_avx_ptestc_256: 7721 case Intrinsic::x86_avx_ptestnzc_256: 7722 case Intrinsic::x86_avx_ptestz_256: 7723 case Intrinsic::x86_avx_rcp_ps_256: 7724 case Intrinsic::x86_avx_round_pd_256: 7725 case Intrinsic::x86_avx_round_ps_256: 7726 case Intrinsic::x86_avx_rsqrt_ps_256: 7727 case Intrinsic::x86_avx_sqrt_pd_256: 7728 case Intrinsic::x86_avx_sqrt_ps_256: 7729 case Intrinsic::x86_avx_vextractf128_pd_256: 7730 case Intrinsic::x86_avx_vextractf128_ps_256: 7731 case Intrinsic::x86_avx_vextractf128_si_256: 7732 case Intrinsic::x86_avx_vinsertf128_pd_256: 7733 case Intrinsic::x86_avx_vinsertf128_ps_256: 7734 case Intrinsic::x86_avx_vinsertf128_si_256: 7735 case Intrinsic::x86_avx_vperm2f128_pd_256: 7736 case Intrinsic::x86_avx_vperm2f128_ps_256: 7737 case Intrinsic::x86_avx_vperm2f128_si_256: 7738 case Intrinsic::x86_avx_vpermil_pd: 7739 case Intrinsic::x86_avx_vpermil_pd_256: 7740 case Intrinsic::x86_avx_vpermil_ps: 7741 case Intrinsic::x86_avx_vpermil_ps_256: 7742 case Intrinsic::x86_avx_vpermilvar_pd: 7743 case Intrinsic::x86_avx_vpermilvar_pd_256: 7744 case Intrinsic::x86_avx_vpermilvar_ps: 7745 case Intrinsic::x86_avx_vpermilvar_ps_256: 7746 case Intrinsic::x86_avx_vtestc_pd: 7747 case Intrinsic::x86_avx_vtestc_pd_256: 7748 case Intrinsic::x86_avx_vtestc_ps: 7749 case Intrinsic::x86_avx_vtestc_ps_256: 7750 case Intrinsic::x86_avx_vtestnzc_pd: 7751 case Intrinsic::x86_avx_vtestnzc_pd_256: 7752 case Intrinsic::x86_avx_vtestnzc_ps: 7753 case Intrinsic::x86_avx_vtestnzc_ps_256: 7754 case Intrinsic::x86_avx_vtestz_pd: 7755 case Intrinsic::x86_avx_vtestz_pd_256: 7756 case Intrinsic::x86_avx_vtestz_ps: 7757 case Intrinsic::x86_avx_vtestz_ps_256: 7758 case Intrinsic::x86_mmx_packssdw: 7759 case Intrinsic::x86_mmx_packsswb: 7760 case Intrinsic::x86_mmx_packuswb: 7761 case Intrinsic::x86_mmx_padd_b: 7762 case Intrinsic::x86_mmx_padd_d: 7763 case Intrinsic::x86_mmx_padd_q: 7764 case Intrinsic::x86_mmx_padd_w: 7765 case Intrinsic::x86_mmx_padds_b: 7766 case Intrinsic::x86_mmx_padds_w: 7767 case Intrinsic::x86_mmx_paddus_b: 7768 case Intrinsic::x86_mmx_paddus_w: 7769 case Intrinsic::x86_mmx_palignr_b: 7770 case Intrinsic::x86_mmx_pand: 7771 case Intrinsic::x86_mmx_pandn: 7772 case Intrinsic::x86_mmx_pavg_b: 7773 case Intrinsic::x86_mmx_pavg_w: 7774 case Intrinsic::x86_mmx_pcmpeq_b: 7775 case Intrinsic::x86_mmx_pcmpeq_d: 7776 case Intrinsic::x86_mmx_pcmpeq_w: 7777 case Intrinsic::x86_mmx_pcmpgt_b: 7778 case Intrinsic::x86_mmx_pcmpgt_d: 7779 case Intrinsic::x86_mmx_pcmpgt_w: 7780 case Intrinsic::x86_mmx_pextr_w: 7781 case Intrinsic::x86_mmx_pinsr_w: 7782 case Intrinsic::x86_mmx_pmadd_wd: 7783 case Intrinsic::x86_mmx_pmaxs_w: 7784 case Intrinsic::x86_mmx_pmaxu_b: 7785 case Intrinsic::x86_mmx_pmins_w: 7786 case Intrinsic::x86_mmx_pminu_b: 7787 case Intrinsic::x86_mmx_pmovmskb: 7788 case Intrinsic::x86_mmx_pmulh_w: 7789 case Intrinsic::x86_mmx_pmulhu_w: 7790 case Intrinsic::x86_mmx_pmull_w: 7791 case Intrinsic::x86_mmx_pmulu_dq: 7792 case Intrinsic::x86_mmx_por: 7793 case Intrinsic::x86_mmx_psad_bw: 7794 case Intrinsic::x86_mmx_psll_d: 7795 case Intrinsic::x86_mmx_psll_q: 7796 case Intrinsic::x86_mmx_psll_w: 7797 case Intrinsic::x86_mmx_pslli_d: 7798 case Intrinsic::x86_mmx_pslli_q: 7799 case Intrinsic::x86_mmx_pslli_w: 7800 case Intrinsic::x86_mmx_psra_d: 7801 case Intrinsic::x86_mmx_psra_w: 7802 case Intrinsic::x86_mmx_psrai_d: 7803 case Intrinsic::x86_mmx_psrai_w: 7804 case Intrinsic::x86_mmx_psrl_d: 7805 case Intrinsic::x86_mmx_psrl_q: 7806 case Intrinsic::x86_mmx_psrl_w: 7807 case Intrinsic::x86_mmx_psrli_d: 7808 case Intrinsic::x86_mmx_psrli_q: 7809 case Intrinsic::x86_mmx_psrli_w: 7810 case Intrinsic::x86_mmx_psub_b: 7811 case Intrinsic::x86_mmx_psub_d: 7812 case Intrinsic::x86_mmx_psub_q: 7813 case Intrinsic::x86_mmx_psub_w: 7814 case Intrinsic::x86_mmx_psubs_b: 7815 case Intrinsic::x86_mmx_psubs_w: 7816 case Intrinsic::x86_mmx_psubus_b: 7817 case Intrinsic::x86_mmx_psubus_w: 7818 case Intrinsic::x86_mmx_punpckhbw: 7819 case Intrinsic::x86_mmx_punpckhdq: 7820 case Intrinsic::x86_mmx_punpckhwd: 7821 case Intrinsic::x86_mmx_punpcklbw: 7822 case Intrinsic::x86_mmx_punpckldq: 7823 case Intrinsic::x86_mmx_punpcklwd: 7824 case Intrinsic::x86_mmx_pxor: 7825 case Intrinsic::x86_sse2_add_sd: 7826 case Intrinsic::x86_sse2_cmp_pd: 7827 case Intrinsic::x86_sse2_cmp_sd: 7828 case Intrinsic::x86_sse2_comieq_sd: 7829 case Intrinsic::x86_sse2_comige_sd: 7830 case Intrinsic::x86_sse2_comigt_sd: 7831 case Intrinsic::x86_sse2_comile_sd: 7832 case Intrinsic::x86_sse2_comilt_sd: 7833 case Intrinsic::x86_sse2_comineq_sd: 7834 case Intrinsic::x86_sse2_cvtdq2pd: 7835 case Intrinsic::x86_sse2_cvtdq2ps: 7836 case Intrinsic::x86_sse2_cvtpd2dq: 7837 case Intrinsic::x86_sse2_cvtpd2ps: 7838 case Intrinsic::x86_sse2_cvtps2dq: 7839 case Intrinsic::x86_sse2_cvtps2pd: 7840 case Intrinsic::x86_sse2_cvtsd2si: 7841 case Intrinsic::x86_sse2_cvtsd2si64: 7842 case Intrinsic::x86_sse2_cvtsd2ss: 7843 case Intrinsic::x86_sse2_cvtsi2sd: 7844 case Intrinsic::x86_sse2_cvtsi642sd: 7845 case Intrinsic::x86_sse2_cvtss2sd: 7846 case Intrinsic::x86_sse2_cvttpd2dq: 7847 case Intrinsic::x86_sse2_cvttps2dq: 7848 case Intrinsic::x86_sse2_cvttsd2si: 7849 case Intrinsic::x86_sse2_cvttsd2si64: 7850 case Intrinsic::x86_sse2_div_sd: 7851 case Intrinsic::x86_sse2_max_pd: 7852 case Intrinsic::x86_sse2_max_sd: 7853 case Intrinsic::x86_sse2_min_pd: 7854 case Intrinsic::x86_sse2_min_sd: 7855 case Intrinsic::x86_sse2_movmsk_pd: 7856 case Intrinsic::x86_sse2_mul_sd: 7857 case Intrinsic::x86_sse2_packssdw_128: 7858 case Intrinsic::x86_sse2_packsswb_128: 7859 case Intrinsic::x86_sse2_packuswb_128: 7860 case Intrinsic::x86_sse2_padds_b: 7861 case Intrinsic::x86_sse2_padds_w: 7862 case Intrinsic::x86_sse2_paddus_b: 7863 case Intrinsic::x86_sse2_paddus_w: 7864 case Intrinsic::x86_sse2_pavg_b: 7865 case Intrinsic::x86_sse2_pavg_w: 7866 case Intrinsic::x86_sse2_pcmpeq_b: 7867 case Intrinsic::x86_sse2_pcmpeq_d: 7868 case Intrinsic::x86_sse2_pcmpeq_w: 7869 case Intrinsic::x86_sse2_pcmpgt_b: 7870 case Intrinsic::x86_sse2_pcmpgt_d: 7871 case Intrinsic::x86_sse2_pcmpgt_w: 7872 case Intrinsic::x86_sse2_pmadd_wd: 7873 case Intrinsic::x86_sse2_pmaxs_w: 7874 case Intrinsic::x86_sse2_pmaxu_b: 7875 case Intrinsic::x86_sse2_pmins_w: 7876 case Intrinsic::x86_sse2_pminu_b: 7877 case Intrinsic::x86_sse2_pmovmskb_128: 7878 case Intrinsic::x86_sse2_pmulh_w: 7879 case Intrinsic::x86_sse2_pmulhu_w: 7880 case Intrinsic::x86_sse2_pmulu_dq: 7881 case Intrinsic::x86_sse2_psad_bw: 7882 case Intrinsic::x86_sse2_psll_d: 7883 case Intrinsic::x86_sse2_psll_dq: 7884 case Intrinsic::x86_sse2_psll_dq_bs: 7885 case Intrinsic::x86_sse2_psll_q: 7886 case Intrinsic::x86_sse2_psll_w: 7887 case Intrinsic::x86_sse2_pslli_d: 7888 case Intrinsic::x86_sse2_pslli_q: 7889 case Intrinsic::x86_sse2_pslli_w: 7890 case Intrinsic::x86_sse2_psra_d: 7891 case Intrinsic::x86_sse2_psra_w: 7892 case Intrinsic::x86_sse2_psrai_d: 7893 case Intrinsic::x86_sse2_psrai_w: 7894 case Intrinsic::x86_sse2_psrl_d: 7895 case Intrinsic::x86_sse2_psrl_dq: 7896 case Intrinsic::x86_sse2_psrl_dq_bs: 7897 case Intrinsic::x86_sse2_psrl_q: 7898 case Intrinsic::x86_sse2_psrl_w: 7899 case Intrinsic::x86_sse2_psrli_d: 7900 case Intrinsic::x86_sse2_psrli_q: 7901 case Intrinsic::x86_sse2_psrli_w: 7902 case Intrinsic::x86_sse2_psubs_b: 7903 case Intrinsic::x86_sse2_psubs_w: 7904 case Intrinsic::x86_sse2_psubus_b: 7905 case Intrinsic::x86_sse2_psubus_w: 7906 case Intrinsic::x86_sse2_sqrt_pd: 7907 case Intrinsic::x86_sse2_sqrt_sd: 7908 case Intrinsic::x86_sse2_sub_sd: 7909 case Intrinsic::x86_sse2_ucomieq_sd: 7910 case Intrinsic::x86_sse2_ucomige_sd: 7911 case Intrinsic::x86_sse2_ucomigt_sd: 7912 case Intrinsic::x86_sse2_ucomile_sd: 7913 case Intrinsic::x86_sse2_ucomilt_sd: 7914 case Intrinsic::x86_sse2_ucomineq_sd: 7915 case Intrinsic::x86_sse3_addsub_pd: 7916 case Intrinsic::x86_sse3_addsub_ps: 7917 case Intrinsic::x86_sse3_hadd_pd: 7918 case Intrinsic::x86_sse3_hadd_ps: 7919 case Intrinsic::x86_sse3_hsub_pd: 7920 case Intrinsic::x86_sse3_hsub_ps: 7921 case Intrinsic::x86_sse41_blendpd: 7922 case Intrinsic::x86_sse41_blendps: 7923 case Intrinsic::x86_sse41_blendvpd: 7924 case Intrinsic::x86_sse41_blendvps: 7925 case Intrinsic::x86_sse41_dppd: 7926 case Intrinsic::x86_sse41_dpps: 7927 case Intrinsic::x86_sse41_extractps: 7928 case Intrinsic::x86_sse41_insertps: 7929 case Intrinsic::x86_sse41_mpsadbw: 7930 case Intrinsic::x86_sse41_packusdw: 7931 case Intrinsic::x86_sse41_pblendvb: 7932 case Intrinsic::x86_sse41_pblendw: 7933 case Intrinsic::x86_sse41_pcmpeqq: 7934 case Intrinsic::x86_sse41_pextrb: 7935 case Intrinsic::x86_sse41_pextrd: 7936 case Intrinsic::x86_sse41_pextrq: 7937 case Intrinsic::x86_sse41_phminposuw: 7938 case Intrinsic::x86_sse41_pmaxsb: 7939 case Intrinsic::x86_sse41_pmaxsd: 7940 case Intrinsic::x86_sse41_pmaxud: 7941 case Intrinsic::x86_sse41_pmaxuw: 7942 case Intrinsic::x86_sse41_pminsb: 7943 case Intrinsic::x86_sse41_pminsd: 7944 case Intrinsic::x86_sse41_pminud: 7945 case Intrinsic::x86_sse41_pminuw: 7946 case Intrinsic::x86_sse41_pmovsxbd: 7947 case Intrinsic::x86_sse41_pmovsxbq: 7948 case Intrinsic::x86_sse41_pmovsxbw: 7949 case Intrinsic::x86_sse41_pmovsxdq: 7950 case Intrinsic::x86_sse41_pmovsxwd: 7951 case Intrinsic::x86_sse41_pmovsxwq: 7952 case Intrinsic::x86_sse41_pmovzxbd: 7953 case Intrinsic::x86_sse41_pmovzxbq: 7954 case Intrinsic::x86_sse41_pmovzxbw: 7955 case Intrinsic::x86_sse41_pmovzxdq: 7956 case Intrinsic::x86_sse41_pmovzxwd: 7957 case Intrinsic::x86_sse41_pmovzxwq: 7958 case Intrinsic::x86_sse41_pmuldq: 7959 case Intrinsic::x86_sse41_ptestc: 7960 case Intrinsic::x86_sse41_ptestnzc: 7961 case Intrinsic::x86_sse41_ptestz: 7962 case Intrinsic::x86_sse41_round_pd: 7963 case Intrinsic::x86_sse41_round_ps: 7964 case Intrinsic::x86_sse41_round_sd: 7965 case Intrinsic::x86_sse41_round_ss: 7966 case Intrinsic::x86_sse42_crc32_32_16: 7967 case Intrinsic::x86_sse42_crc32_32_32: 7968 case Intrinsic::x86_sse42_crc32_32_8: 7969 case Intrinsic::x86_sse42_crc32_64_64: 7970 case Intrinsic::x86_sse42_crc32_64_8: 7971 case Intrinsic::x86_sse42_pcmpestri128: 7972 case Intrinsic::x86_sse42_pcmpestria128: 7973 case Intrinsic::x86_sse42_pcmpestric128: 7974 case Intrinsic::x86_sse42_pcmpestrio128: 7975 case Intrinsic::x86_sse42_pcmpestris128: 7976 case Intrinsic::x86_sse42_pcmpestriz128: 7977 case Intrinsic::x86_sse42_pcmpestrm128: 7978 case Intrinsic::x86_sse42_pcmpgtq: 7979 case Intrinsic::x86_sse42_pcmpistri128: 7980 case Intrinsic::x86_sse42_pcmpistria128: 7981 case Intrinsic::x86_sse42_pcmpistric128: 7982 case Intrinsic::x86_sse42_pcmpistrio128: 7983 case Intrinsic::x86_sse42_pcmpistris128: 7984 case Intrinsic::x86_sse42_pcmpistriz128: 7985 case Intrinsic::x86_sse42_pcmpistrm128: 7986 case Intrinsic::x86_sse_add_ss: 7987 case Intrinsic::x86_sse_cmp_ps: 7988 case Intrinsic::x86_sse_cmp_ss: 7989 case Intrinsic::x86_sse_comieq_ss: 7990 case Intrinsic::x86_sse_comige_ss: 7991 case Intrinsic::x86_sse_comigt_ss: 7992 case Intrinsic::x86_sse_comile_ss: 7993 case Intrinsic::x86_sse_comilt_ss: 7994 case Intrinsic::x86_sse_comineq_ss: 7995 case Intrinsic::x86_sse_cvtpd2pi: 7996 case Intrinsic::x86_sse_cvtpi2pd: 7997 case Intrinsic::x86_sse_cvtpi2ps: 7998 case Intrinsic::x86_sse_cvtps2pi: 7999 case Intrinsic::x86_sse_cvtsi2ss: 8000 case Intrinsic::x86_sse_cvtsi642ss: 8001 case Intrinsic::x86_sse_cvtss2si: 8002 case Intrinsic::x86_sse_cvtss2si64: 8003 case Intrinsic::x86_sse_cvttpd2pi: 8004 case Intrinsic::x86_sse_cvttps2pi: 8005 case Intrinsic::x86_sse_cvttss2si: 8006 case Intrinsic::x86_sse_cvttss2si64: 8007 case Intrinsic::x86_sse_div_ss: 8008 case Intrinsic::x86_sse_max_ps: 8009 case Intrinsic::x86_sse_max_ss: 8010 case Intrinsic::x86_sse_min_ps: 8011 case Intrinsic::x86_sse_min_ss: 8012 case Intrinsic::x86_sse_movmsk_ps: 8013 case Intrinsic::x86_sse_mul_ss: 8014 case Intrinsic::x86_sse_pshuf_w: 8015 case Intrinsic::x86_sse_rcp_ps: 8016 case Intrinsic::x86_sse_rcp_ss: 8017 case Intrinsic::x86_sse_rsqrt_ps: 8018 case Intrinsic::x86_sse_rsqrt_ss: 8019 case Intrinsic::x86_sse_sqrt_ps: 8020 case Intrinsic::x86_sse_sqrt_ss: 8021 case Intrinsic::x86_sse_sub_ss: 8022 case Intrinsic::x86_sse_ucomieq_ss: 8023 case Intrinsic::x86_sse_ucomige_ss: 8024 case Intrinsic::x86_sse_ucomigt_ss: 8025 case Intrinsic::x86_sse_ucomile_ss: 8026 case Intrinsic::x86_sse_ucomilt_ss: 8027 case Intrinsic::x86_sse_ucomineq_ss: 8028 case Intrinsic::x86_ssse3_pabs_b: 8029 case Intrinsic::x86_ssse3_pabs_b_128: 8030 case Intrinsic::x86_ssse3_pabs_d: 8031 case Intrinsic::x86_ssse3_pabs_d_128: 8032 case Intrinsic::x86_ssse3_pabs_w: 8033 case Intrinsic::x86_ssse3_pabs_w_128: 8034 case Intrinsic::x86_ssse3_phadd_d: 8035 case Intrinsic::x86_ssse3_phadd_d_128: 8036 case Intrinsic::x86_ssse3_phadd_sw: 8037 case Intrinsic::x86_ssse3_phadd_sw_128: 8038 case Intrinsic::x86_ssse3_phadd_w: 8039 case Intrinsic::x86_ssse3_phadd_w_128: 8040 case Intrinsic::x86_ssse3_phsub_d: 8041 case Intrinsic::x86_ssse3_phsub_d_128: 8042 case Intrinsic::x86_ssse3_phsub_sw: 8043 case Intrinsic::x86_ssse3_phsub_sw_128: 8044 case Intrinsic::x86_ssse3_phsub_w: 8045 case Intrinsic::x86_ssse3_phsub_w_128: 8046 case Intrinsic::x86_ssse3_pmadd_ub_sw: 8047 case Intrinsic::x86_ssse3_pmadd_ub_sw_128: 8048 case Intrinsic::x86_ssse3_pmul_hr_sw: 8049 case Intrinsic::x86_ssse3_pmul_hr_sw_128: 8050 case Intrinsic::x86_ssse3_pshuf_b: 8051 case Intrinsic::x86_ssse3_pshuf_b_128: 8052 case Intrinsic::x86_ssse3_psign_b: 8053 case Intrinsic::x86_ssse3_psign_b_128: 8054 case Intrinsic::x86_ssse3_psign_d: 8055 case Intrinsic::x86_ssse3_psign_d_128: 8056 case Intrinsic::x86_ssse3_psign_w: 8057 case Intrinsic::x86_ssse3_psign_w_128: 8058 AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadNone); 8059 NumAttrs = 1; 8060 break; 8061 case Intrinsic::adjust_trampoline: 8062 case Intrinsic::cos: 8063 case Intrinsic::eh_exception: 8064 case Intrinsic::exp: 8065 case Intrinsic::exp2: 8066 case Intrinsic::gcread: 8067 case Intrinsic::log: 8068 case Intrinsic::log10: 8069 case Intrinsic::log2: 8070 case Intrinsic::pow: 8071 case Intrinsic::powi: 8072 case Intrinsic::sin: 8073 case Intrinsic::sqrt: 8074 case Intrinsic::x86_avx_ldu_dq_256: 8075 case Intrinsic::x86_avx_loadu_dq_256: 8076 case Intrinsic::x86_avx_loadu_pd_256: 8077 case Intrinsic::x86_avx_loadu_ps_256: 8078 case Intrinsic::x86_avx_maskload_pd: 8079 case Intrinsic::x86_avx_maskload_pd_256: 8080 case Intrinsic::x86_avx_maskload_ps: 8081 case Intrinsic::x86_avx_maskload_ps_256: 8082 case Intrinsic::x86_avx_vbroadcast_sd_256: 8083 case Intrinsic::x86_avx_vbroadcastf128_pd_256: 8084 case Intrinsic::x86_avx_vbroadcastf128_ps_256: 8085 case Intrinsic::x86_avx_vbroadcastss: 8086 case Intrinsic::x86_avx_vbroadcastss_256: 8087 case Intrinsic::x86_sse3_ldu_dq: 8088 case Intrinsic::x86_sse41_movntdqa: 8089 AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadOnly); 8090 NumAttrs = 1; 8091 break; 8092 case Intrinsic::annotation: 8093 case Intrinsic::convertff: 8094 case Intrinsic::convertfsi: 8095 case Intrinsic::convertfui: 8096 case Intrinsic::convertsif: 8097 case Intrinsic::convertss: 8098 case Intrinsic::convertsu: 8099 case Intrinsic::convertuif: 8100 case Intrinsic::convertus: 8101 case Intrinsic::convertuu: 8102 case Intrinsic::eh_dwarf_cfa: 8103 case Intrinsic::eh_return_i32: 8104 case Intrinsic::eh_return_i64: 8105 case Intrinsic::eh_selector: 8106 case Intrinsic::eh_sjlj_dispatch_setup: 8107 case Intrinsic::eh_sjlj_functioncontext: 8108 case Intrinsic::eh_sjlj_longjmp: 8109 case Intrinsic::eh_sjlj_setjmp: 8110 case Intrinsic::eh_unwind_init: 8111 case Intrinsic::flt_rounds: 8112 case Intrinsic::gcroot: 8113 case Intrinsic::longjmp: 8114 case Intrinsic::pcmarker: 8115 case Intrinsic::ptr_annotation: 8116 case Intrinsic::readcyclecounter: 8117 case Intrinsic::setjmp: 8118 case Intrinsic::siglongjmp: 8119 case Intrinsic::sigsetjmp: 8120 case Intrinsic::stackprotector: 8121 case Intrinsic::stackrestore: 8122 case Intrinsic::stacksave: 8123 case Intrinsic::trap: 8124 case Intrinsic::vacopy: 8125 case Intrinsic::vaend: 8126 case Intrinsic::var_annotation: 8127 case Intrinsic::vastart: 8128 case Intrinsic::x86_avx_maskstore_pd: 8129 case Intrinsic::x86_avx_maskstore_pd_256: 8130 case Intrinsic::x86_avx_maskstore_ps: 8131 case Intrinsic::x86_avx_maskstore_ps_256: 8132 case Intrinsic::x86_avx_movnt_dq_256: 8133 case Intrinsic::x86_avx_movnt_pd_256: 8134 case Intrinsic::x86_avx_movnt_ps_256: 8135 case Intrinsic::x86_avx_storeu_dq_256: 8136 case Intrinsic::x86_avx_storeu_pd_256: 8137 case Intrinsic::x86_avx_storeu_ps_256: 8138 case Intrinsic::x86_avx_vzeroall: 8139 case Intrinsic::x86_avx_vzeroupper: 8140 case Intrinsic::x86_int: 8141 case Intrinsic::x86_mmx_emms: 8142 case Intrinsic::x86_mmx_femms: 8143 case Intrinsic::x86_mmx_maskmovq: 8144 case Intrinsic::x86_mmx_movnt_dq: 8145 case Intrinsic::x86_sse2_clflush: 8146 case Intrinsic::x86_sse2_lfence: 8147 case Intrinsic::x86_sse2_maskmov_dqu: 8148 case Intrinsic::x86_sse2_mfence: 8149 case Intrinsic::x86_sse2_storel_dq: 8150 case Intrinsic::x86_sse2_storeu_dq: 8151 case Intrinsic::x86_sse2_storeu_pd: 8152 case Intrinsic::x86_sse3_monitor: 8153 case Intrinsic::x86_sse3_mwait: 8154 case Intrinsic::x86_sse_ldmxcsr: 8155 case Intrinsic::x86_sse_sfence: 8156 case Intrinsic::x86_sse_stmxcsr: 8157 case Intrinsic::x86_sse_storeu_ps: 8158 AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind); 8159 NumAttrs = 1; 8160 break; 8161 case Intrinsic::init_trampoline: 8162 case Intrinsic::memset: 8163 case Intrinsic::prefetch: 8164 AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture); 8165 AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind); 8166 NumAttrs = 2; 8167 break; 8168 case Intrinsic::memcpy: 8169 case Intrinsic::memmove: 8170 AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture); 8171 AWI[1] = AttributeWithIndex::get(2, Attribute::NoCapture); 8172 AWI[2] = AttributeWithIndex::get(~0, Attribute::NoUnwind); 8173 NumAttrs = 3; 8174 break; 8175 case Intrinsic::invariant_start: 8176 case Intrinsic::lifetime_end: 8177 case Intrinsic::lifetime_start: 8178 AWI[0] = AttributeWithIndex::get(2, Attribute::NoCapture); 8179 AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind); 8180 NumAttrs = 2; 8181 break; 8182 case Intrinsic::gcwrite: 8183 AWI[0] = AttributeWithIndex::get(2, Attribute::NoCapture); 8184 AWI[1] = AttributeWithIndex::get(3, Attribute::NoCapture); 8185 AWI[2] = AttributeWithIndex::get(~0, Attribute::NoUnwind); 8186 NumAttrs = 3; 8187 break; 8188 case Intrinsic::invariant_end: 8189 AWI[0] = AttributeWithIndex::get(3, Attribute::NoCapture); 8190 AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind); 8191 NumAttrs = 2; 8192 break; 8193 case Intrinsic::eh_resume: 8194 return AttrListPtr(); 8195 } 8196 return AttrListPtr::get(AWI, NumAttrs); 8197 } 8198 #endif // GET_INTRINSIC_ATTRIBUTES 8199 8200 // Determine intrinsic alias analysis mod/ref behavior. 8201 #ifdef GET_INTRINSIC_MODREF_BEHAVIOR 8202 switch (iid) { 8203 default: 8204 return UnknownModRefBehavior; 8205 case Intrinsic::adjust_trampoline: 8206 return OnlyReadsArgumentPointees; 8207 case Intrinsic::bswap: 8208 return DoesNotAccessMemory; 8209 case Intrinsic::convert_from_fp16: 8210 return DoesNotAccessMemory; 8211 case Intrinsic::convert_to_fp16: 8212 return DoesNotAccessMemory; 8213 case Intrinsic::cos: 8214 return OnlyReadsMemory; 8215 case Intrinsic::ctlz: 8216 return DoesNotAccessMemory; 8217 case Intrinsic::ctpop: 8218 return DoesNotAccessMemory; 8219 case Intrinsic::cttz: 8220 return DoesNotAccessMemory; 8221 case Intrinsic::dbg_declare: 8222 return DoesNotAccessMemory; 8223 case Intrinsic::dbg_value: 8224 return DoesNotAccessMemory; 8225 case Intrinsic::eh_exception: 8226 return OnlyReadsMemory; 8227 case Intrinsic::eh_sjlj_callsite: 8228 return DoesNotAccessMemory; 8229 case Intrinsic::eh_sjlj_lsda: 8230 return DoesNotAccessMemory; 8231 case Intrinsic::eh_typeid_for: 8232 return DoesNotAccessMemory; 8233 case Intrinsic::exp: 8234 return OnlyReadsMemory; 8235 case Intrinsic::exp2: 8236 return OnlyReadsMemory; 8237 case Intrinsic::expect: 8238 return DoesNotAccessMemory; 8239 case Intrinsic::fma: 8240 return DoesNotAccessMemory; 8241 case Intrinsic::frameaddress: 8242 return DoesNotAccessMemory; 8243 case Intrinsic::gcread: 8244 return OnlyReadsArgumentPointees; 8245 case Intrinsic::gcwrite: 8246 return OnlyAccessesArgumentPointees; 8247 case Intrinsic::init_trampoline: 8248 return OnlyAccessesArgumentPointees; 8249 case Intrinsic::invariant_end: 8250 return OnlyAccessesArgumentPointees; 8251 case Intrinsic::invariant_start: 8252 return OnlyAccessesArgumentPointees; 8253 case Intrinsic::lifetime_end: 8254 return OnlyAccessesArgumentPointees; 8255 case Intrinsic::lifetime_start: 8256 return OnlyAccessesArgumentPointees; 8257 case Intrinsic::log: 8258 return OnlyReadsMemory; 8259 case Intrinsic::log10: 8260 return OnlyReadsMemory; 8261 case Intrinsic::log2: 8262 return OnlyReadsMemory; 8263 case Intrinsic::memcpy: 8264 return OnlyAccessesArgumentPointees; 8265 case Intrinsic::memmove: 8266 return OnlyAccessesArgumentPointees; 8267 case Intrinsic::memset: 8268 return OnlyAccessesArgumentPointees; 8269 case Intrinsic::objectsize: 8270 return DoesNotAccessMemory; 8271 case Intrinsic::pow: 8272 return OnlyReadsMemory; 8273 case Intrinsic::powi: 8274 return OnlyReadsMemory; 8275 case Intrinsic::prefetch: 8276 return OnlyAccessesArgumentPointees; 8277 case Intrinsic::returnaddress: 8278 return DoesNotAccessMemory; 8279 case Intrinsic::sadd_with_overflow: 8280 return DoesNotAccessMemory; 8281 case Intrinsic::sin: 8282 return OnlyReadsMemory; 8283 case Intrinsic::smul_with_overflow: 8284 return DoesNotAccessMemory; 8285 case Intrinsic::sqrt: 8286 return OnlyReadsMemory; 8287 case Intrinsic::ssub_with_overflow: 8288 return DoesNotAccessMemory; 8289 case Intrinsic::uadd_with_overflow: 8290 return DoesNotAccessMemory; 8291 case Intrinsic::umul_with_overflow: 8292 return DoesNotAccessMemory; 8293 case Intrinsic::usub_with_overflow: 8294 return DoesNotAccessMemory; 8295 case Intrinsic::x86_3dnow_pavgusb: 8296 return DoesNotAccessMemory; 8297 case Intrinsic::x86_3dnow_pf2id: 8298 return DoesNotAccessMemory; 8299 case Intrinsic::x86_3dnow_pfacc: 8300 return DoesNotAccessMemory; 8301 case Intrinsic::x86_3dnow_pfadd: 8302 return DoesNotAccessMemory; 8303 case Intrinsic::x86_3dnow_pfcmpeq: 8304 return DoesNotAccessMemory; 8305 case Intrinsic::x86_3dnow_pfcmpge: 8306 return DoesNotAccessMemory; 8307 case Intrinsic::x86_3dnow_pfcmpgt: 8308 return DoesNotAccessMemory; 8309 case Intrinsic::x86_3dnow_pfmax: 8310 return DoesNotAccessMemory; 8311 case Intrinsic::x86_3dnow_pfmin: 8312 return DoesNotAccessMemory; 8313 case Intrinsic::x86_3dnow_pfmul: 8314 return DoesNotAccessMemory; 8315 case Intrinsic::x86_3dnow_pfrcp: 8316 return DoesNotAccessMemory; 8317 case Intrinsic::x86_3dnow_pfrcpit1: 8318 return DoesNotAccessMemory; 8319 case Intrinsic::x86_3dnow_pfrcpit2: 8320 return DoesNotAccessMemory; 8321 case Intrinsic::x86_3dnow_pfrsqit1: 8322 return DoesNotAccessMemory; 8323 case Intrinsic::x86_3dnow_pfrsqrt: 8324 return DoesNotAccessMemory; 8325 case Intrinsic::x86_3dnow_pfsub: 8326 return DoesNotAccessMemory; 8327 case Intrinsic::x86_3dnow_pfsubr: 8328 return DoesNotAccessMemory; 8329 case Intrinsic::x86_3dnow_pi2fd: 8330 return DoesNotAccessMemory; 8331 case Intrinsic::x86_3dnow_pmulhrw: 8332 return DoesNotAccessMemory; 8333 case Intrinsic::x86_3dnowa_pf2iw: 8334 return DoesNotAccessMemory; 8335 case Intrinsic::x86_3dnowa_pfnacc: 8336 return DoesNotAccessMemory; 8337 case Intrinsic::x86_3dnowa_pfpnacc: 8338 return DoesNotAccessMemory; 8339 case Intrinsic::x86_3dnowa_pi2fw: 8340 return DoesNotAccessMemory; 8341 case Intrinsic::x86_3dnowa_pswapd: 8342 return DoesNotAccessMemory; 8343 case Intrinsic::x86_aesni_aesdec: 8344 return DoesNotAccessMemory; 8345 case Intrinsic::x86_aesni_aesdeclast: 8346 return DoesNotAccessMemory; 8347 case Intrinsic::x86_aesni_aesenc: 8348 return DoesNotAccessMemory; 8349 case Intrinsic::x86_aesni_aesenclast: 8350 return DoesNotAccessMemory; 8351 case Intrinsic::x86_aesni_aesimc: 8352 return DoesNotAccessMemory; 8353 case Intrinsic::x86_aesni_aeskeygenassist: 8354 return DoesNotAccessMemory; 8355 case Intrinsic::x86_avx_addsub_pd_256: 8356 return DoesNotAccessMemory; 8357 case Intrinsic::x86_avx_addsub_ps_256: 8358 return DoesNotAccessMemory; 8359 case Intrinsic::x86_avx_blend_pd_256: 8360 return DoesNotAccessMemory; 8361 case Intrinsic::x86_avx_blend_ps_256: 8362 return DoesNotAccessMemory; 8363 case Intrinsic::x86_avx_blendv_pd_256: 8364 return DoesNotAccessMemory; 8365 case Intrinsic::x86_avx_blendv_ps_256: 8366 return DoesNotAccessMemory; 8367 case Intrinsic::x86_avx_cmp_pd_256: 8368 return DoesNotAccessMemory; 8369 case Intrinsic::x86_avx_cmp_ps_256: 8370 return DoesNotAccessMemory; 8371 case Intrinsic::x86_avx_cvt_pd2_ps_256: 8372 return DoesNotAccessMemory; 8373 case Intrinsic::x86_avx_cvt_pd2dq_256: 8374 return DoesNotAccessMemory; 8375 case Intrinsic::x86_avx_cvt_ps2_pd_256: 8376 return DoesNotAccessMemory; 8377 case Intrinsic::x86_avx_cvt_ps2dq_256: 8378 return DoesNotAccessMemory; 8379 case Intrinsic::x86_avx_cvtdq2_pd_256: 8380 return DoesNotAccessMemory; 8381 case Intrinsic::x86_avx_cvtdq2_ps_256: 8382 return DoesNotAccessMemory; 8383 case Intrinsic::x86_avx_cvtt_pd2dq_256: 8384 return DoesNotAccessMemory; 8385 case Intrinsic::x86_avx_cvtt_ps2dq_256: 8386 return DoesNotAccessMemory; 8387 case Intrinsic::x86_avx_dp_ps_256: 8388 return DoesNotAccessMemory; 8389 case Intrinsic::x86_avx_hadd_pd_256: 8390 return DoesNotAccessMemory; 8391 case Intrinsic::x86_avx_hadd_ps_256: 8392 return DoesNotAccessMemory; 8393 case Intrinsic::x86_avx_hsub_pd_256: 8394 return DoesNotAccessMemory; 8395 case Intrinsic::x86_avx_hsub_ps_256: 8396 return DoesNotAccessMemory; 8397 case Intrinsic::x86_avx_ldu_dq_256: 8398 return OnlyReadsMemory; 8399 case Intrinsic::x86_avx_loadu_dq_256: 8400 return OnlyReadsMemory; 8401 case Intrinsic::x86_avx_loadu_pd_256: 8402 return OnlyReadsMemory; 8403 case Intrinsic::x86_avx_loadu_ps_256: 8404 return OnlyReadsMemory; 8405 case Intrinsic::x86_avx_maskload_pd: 8406 return OnlyReadsMemory; 8407 case Intrinsic::x86_avx_maskload_pd_256: 8408 return OnlyReadsMemory; 8409 case Intrinsic::x86_avx_maskload_ps: 8410 return OnlyReadsMemory; 8411 case Intrinsic::x86_avx_maskload_ps_256: 8412 return OnlyReadsMemory; 8413 case Intrinsic::x86_avx_max_pd_256: 8414 return DoesNotAccessMemory; 8415 case Intrinsic::x86_avx_max_ps_256: 8416 return DoesNotAccessMemory; 8417 case Intrinsic::x86_avx_min_pd_256: 8418 return DoesNotAccessMemory; 8419 case Intrinsic::x86_avx_min_ps_256: 8420 return DoesNotAccessMemory; 8421 case Intrinsic::x86_avx_movmsk_pd_256: 8422 return DoesNotAccessMemory; 8423 case Intrinsic::x86_avx_movmsk_ps_256: 8424 return DoesNotAccessMemory; 8425 case Intrinsic::x86_avx_ptestc_256: 8426 return DoesNotAccessMemory; 8427 case Intrinsic::x86_avx_ptestnzc_256: 8428 return DoesNotAccessMemory; 8429 case Intrinsic::x86_avx_ptestz_256: 8430 return DoesNotAccessMemory; 8431 case Intrinsic::x86_avx_rcp_ps_256: 8432 return DoesNotAccessMemory; 8433 case Intrinsic::x86_avx_round_pd_256: 8434 return DoesNotAccessMemory; 8435 case Intrinsic::x86_avx_round_ps_256: 8436 return DoesNotAccessMemory; 8437 case Intrinsic::x86_avx_rsqrt_ps_256: 8438 return DoesNotAccessMemory; 8439 case Intrinsic::x86_avx_sqrt_pd_256: 8440 return DoesNotAccessMemory; 8441 case Intrinsic::x86_avx_sqrt_ps_256: 8442 return DoesNotAccessMemory; 8443 case Intrinsic::x86_avx_vbroadcast_sd_256: 8444 return OnlyReadsMemory; 8445 case Intrinsic::x86_avx_vbroadcastf128_pd_256: 8446 return OnlyReadsMemory; 8447 case Intrinsic::x86_avx_vbroadcastf128_ps_256: 8448 return OnlyReadsMemory; 8449 case Intrinsic::x86_avx_vbroadcastss: 8450 return OnlyReadsMemory; 8451 case Intrinsic::x86_avx_vbroadcastss_256: 8452 return OnlyReadsMemory; 8453 case Intrinsic::x86_avx_vextractf128_pd_256: 8454 return DoesNotAccessMemory; 8455 case Intrinsic::x86_avx_vextractf128_ps_256: 8456 return DoesNotAccessMemory; 8457 case Intrinsic::x86_avx_vextractf128_si_256: 8458 return DoesNotAccessMemory; 8459 case Intrinsic::x86_avx_vinsertf128_pd_256: 8460 return DoesNotAccessMemory; 8461 case Intrinsic::x86_avx_vinsertf128_ps_256: 8462 return DoesNotAccessMemory; 8463 case Intrinsic::x86_avx_vinsertf128_si_256: 8464 return DoesNotAccessMemory; 8465 case Intrinsic::x86_avx_vperm2f128_pd_256: 8466 return DoesNotAccessMemory; 8467 case Intrinsic::x86_avx_vperm2f128_ps_256: 8468 return DoesNotAccessMemory; 8469 case Intrinsic::x86_avx_vperm2f128_si_256: 8470 return DoesNotAccessMemory; 8471 case Intrinsic::x86_avx_vpermil_pd: 8472 return DoesNotAccessMemory; 8473 case Intrinsic::x86_avx_vpermil_pd_256: 8474 return DoesNotAccessMemory; 8475 case Intrinsic::x86_avx_vpermil_ps: 8476 return DoesNotAccessMemory; 8477 case Intrinsic::x86_avx_vpermil_ps_256: 8478 return DoesNotAccessMemory; 8479 case Intrinsic::x86_avx_vpermilvar_pd: 8480 return DoesNotAccessMemory; 8481 case Intrinsic::x86_avx_vpermilvar_pd_256: 8482 return DoesNotAccessMemory; 8483 case Intrinsic::x86_avx_vpermilvar_ps: 8484 return DoesNotAccessMemory; 8485 case Intrinsic::x86_avx_vpermilvar_ps_256: 8486 return DoesNotAccessMemory; 8487 case Intrinsic::x86_avx_vtestc_pd: 8488 return DoesNotAccessMemory; 8489 case Intrinsic::x86_avx_vtestc_pd_256: 8490 return DoesNotAccessMemory; 8491 case Intrinsic::x86_avx_vtestc_ps: 8492 return DoesNotAccessMemory; 8493 case Intrinsic::x86_avx_vtestc_ps_256: 8494 return DoesNotAccessMemory; 8495 case Intrinsic::x86_avx_vtestnzc_pd: 8496 return DoesNotAccessMemory; 8497 case Intrinsic::x86_avx_vtestnzc_pd_256: 8498 return DoesNotAccessMemory; 8499 case Intrinsic::x86_avx_vtestnzc_ps: 8500 return DoesNotAccessMemory; 8501 case Intrinsic::x86_avx_vtestnzc_ps_256: 8502 return DoesNotAccessMemory; 8503 case Intrinsic::x86_avx_vtestz_pd: 8504 return DoesNotAccessMemory; 8505 case Intrinsic::x86_avx_vtestz_pd_256: 8506 return DoesNotAccessMemory; 8507 case Intrinsic::x86_avx_vtestz_ps: 8508 return DoesNotAccessMemory; 8509 case Intrinsic::x86_avx_vtestz_ps_256: 8510 return DoesNotAccessMemory; 8511 case Intrinsic::x86_mmx_packssdw: 8512 return DoesNotAccessMemory; 8513 case Intrinsic::x86_mmx_packsswb: 8514 return DoesNotAccessMemory; 8515 case Intrinsic::x86_mmx_packuswb: 8516 return DoesNotAccessMemory; 8517 case Intrinsic::x86_mmx_padd_b: 8518 return DoesNotAccessMemory; 8519 case Intrinsic::x86_mmx_padd_d: 8520 return DoesNotAccessMemory; 8521 case Intrinsic::x86_mmx_padd_q: 8522 return DoesNotAccessMemory; 8523 case Intrinsic::x86_mmx_padd_w: 8524 return DoesNotAccessMemory; 8525 case Intrinsic::x86_mmx_padds_b: 8526 return DoesNotAccessMemory; 8527 case Intrinsic::x86_mmx_padds_w: 8528 return DoesNotAccessMemory; 8529 case Intrinsic::x86_mmx_paddus_b: 8530 return DoesNotAccessMemory; 8531 case Intrinsic::x86_mmx_paddus_w: 8532 return DoesNotAccessMemory; 8533 case Intrinsic::x86_mmx_palignr_b: 8534 return DoesNotAccessMemory; 8535 case Intrinsic::x86_mmx_pand: 8536 return DoesNotAccessMemory; 8537 case Intrinsic::x86_mmx_pandn: 8538 return DoesNotAccessMemory; 8539 case Intrinsic::x86_mmx_pavg_b: 8540 return DoesNotAccessMemory; 8541 case Intrinsic::x86_mmx_pavg_w: 8542 return DoesNotAccessMemory; 8543 case Intrinsic::x86_mmx_pcmpeq_b: 8544 return DoesNotAccessMemory; 8545 case Intrinsic::x86_mmx_pcmpeq_d: 8546 return DoesNotAccessMemory; 8547 case Intrinsic::x86_mmx_pcmpeq_w: 8548 return DoesNotAccessMemory; 8549 case Intrinsic::x86_mmx_pcmpgt_b: 8550 return DoesNotAccessMemory; 8551 case Intrinsic::x86_mmx_pcmpgt_d: 8552 return DoesNotAccessMemory; 8553 case Intrinsic::x86_mmx_pcmpgt_w: 8554 return DoesNotAccessMemory; 8555 case Intrinsic::x86_mmx_pextr_w: 8556 return DoesNotAccessMemory; 8557 case Intrinsic::x86_mmx_pinsr_w: 8558 return DoesNotAccessMemory; 8559 case Intrinsic::x86_mmx_pmadd_wd: 8560 return DoesNotAccessMemory; 8561 case Intrinsic::x86_mmx_pmaxs_w: 8562 return DoesNotAccessMemory; 8563 case Intrinsic::x86_mmx_pmaxu_b: 8564 return DoesNotAccessMemory; 8565 case Intrinsic::x86_mmx_pmins_w: 8566 return DoesNotAccessMemory; 8567 case Intrinsic::x86_mmx_pminu_b: 8568 return DoesNotAccessMemory; 8569 case Intrinsic::x86_mmx_pmovmskb: 8570 return DoesNotAccessMemory; 8571 case Intrinsic::x86_mmx_pmulh_w: 8572 return DoesNotAccessMemory; 8573 case Intrinsic::x86_mmx_pmulhu_w: 8574 return DoesNotAccessMemory; 8575 case Intrinsic::x86_mmx_pmull_w: 8576 return DoesNotAccessMemory; 8577 case Intrinsic::x86_mmx_pmulu_dq: 8578 return DoesNotAccessMemory; 8579 case Intrinsic::x86_mmx_por: 8580 return DoesNotAccessMemory; 8581 case Intrinsic::x86_mmx_psad_bw: 8582 return DoesNotAccessMemory; 8583 case Intrinsic::x86_mmx_psll_d: 8584 return DoesNotAccessMemory; 8585 case Intrinsic::x86_mmx_psll_q: 8586 return DoesNotAccessMemory; 8587 case Intrinsic::x86_mmx_psll_w: 8588 return DoesNotAccessMemory; 8589 case Intrinsic::x86_mmx_pslli_d: 8590 return DoesNotAccessMemory; 8591 case Intrinsic::x86_mmx_pslli_q: 8592 return DoesNotAccessMemory; 8593 case Intrinsic::x86_mmx_pslli_w: 8594 return DoesNotAccessMemory; 8595 case Intrinsic::x86_mmx_psra_d: 8596 return DoesNotAccessMemory; 8597 case Intrinsic::x86_mmx_psra_w: 8598 return DoesNotAccessMemory; 8599 case Intrinsic::x86_mmx_psrai_d: 8600 return DoesNotAccessMemory; 8601 case Intrinsic::x86_mmx_psrai_w: 8602 return DoesNotAccessMemory; 8603 case Intrinsic::x86_mmx_psrl_d: 8604 return DoesNotAccessMemory; 8605 case Intrinsic::x86_mmx_psrl_q: 8606 return DoesNotAccessMemory; 8607 case Intrinsic::x86_mmx_psrl_w: 8608 return DoesNotAccessMemory; 8609 case Intrinsic::x86_mmx_psrli_d: 8610 return DoesNotAccessMemory; 8611 case Intrinsic::x86_mmx_psrli_q: 8612 return DoesNotAccessMemory; 8613 case Intrinsic::x86_mmx_psrli_w: 8614 return DoesNotAccessMemory; 8615 case Intrinsic::x86_mmx_psub_b: 8616 return DoesNotAccessMemory; 8617 case Intrinsic::x86_mmx_psub_d: 8618 return DoesNotAccessMemory; 8619 case Intrinsic::x86_mmx_psub_q: 8620 return DoesNotAccessMemory; 8621 case Intrinsic::x86_mmx_psub_w: 8622 return DoesNotAccessMemory; 8623 case Intrinsic::x86_mmx_psubs_b: 8624 return DoesNotAccessMemory; 8625 case Intrinsic::x86_mmx_psubs_w: 8626 return DoesNotAccessMemory; 8627 case Intrinsic::x86_mmx_psubus_b: 8628 return DoesNotAccessMemory; 8629 case Intrinsic::x86_mmx_psubus_w: 8630 return DoesNotAccessMemory; 8631 case Intrinsic::x86_mmx_punpckhbw: 8632 return DoesNotAccessMemory; 8633 case Intrinsic::x86_mmx_punpckhdq: 8634 return DoesNotAccessMemory; 8635 case Intrinsic::x86_mmx_punpckhwd: 8636 return DoesNotAccessMemory; 8637 case Intrinsic::x86_mmx_punpcklbw: 8638 return DoesNotAccessMemory; 8639 case Intrinsic::x86_mmx_punpckldq: 8640 return DoesNotAccessMemory; 8641 case Intrinsic::x86_mmx_punpcklwd: 8642 return DoesNotAccessMemory; 8643 case Intrinsic::x86_mmx_pxor: 8644 return DoesNotAccessMemory; 8645 case Intrinsic::x86_sse2_add_sd: 8646 return DoesNotAccessMemory; 8647 case Intrinsic::x86_sse2_cmp_pd: 8648 return DoesNotAccessMemory; 8649 case Intrinsic::x86_sse2_cmp_sd: 8650 return DoesNotAccessMemory; 8651 case Intrinsic::x86_sse2_comieq_sd: 8652 return DoesNotAccessMemory; 8653 case Intrinsic::x86_sse2_comige_sd: 8654 return DoesNotAccessMemory; 8655 case Intrinsic::x86_sse2_comigt_sd: 8656 return DoesNotAccessMemory; 8657 case Intrinsic::x86_sse2_comile_sd: 8658 return DoesNotAccessMemory; 8659 case Intrinsic::x86_sse2_comilt_sd: 8660 return DoesNotAccessMemory; 8661 case Intrinsic::x86_sse2_comineq_sd: 8662 return DoesNotAccessMemory; 8663 case Intrinsic::x86_sse2_cvtdq2pd: 8664 return DoesNotAccessMemory; 8665 case Intrinsic::x86_sse2_cvtdq2ps: 8666 return DoesNotAccessMemory; 8667 case Intrinsic::x86_sse2_cvtpd2dq: 8668 return DoesNotAccessMemory; 8669 case Intrinsic::x86_sse2_cvtpd2ps: 8670 return DoesNotAccessMemory; 8671 case Intrinsic::x86_sse2_cvtps2dq: 8672 return DoesNotAccessMemory; 8673 case Intrinsic::x86_sse2_cvtps2pd: 8674 return DoesNotAccessMemory; 8675 case Intrinsic::x86_sse2_cvtsd2si: 8676 return DoesNotAccessMemory; 8677 case Intrinsic::x86_sse2_cvtsd2si64: 8678 return DoesNotAccessMemory; 8679 case Intrinsic::x86_sse2_cvtsd2ss: 8680 return DoesNotAccessMemory; 8681 case Intrinsic::x86_sse2_cvtsi2sd: 8682 return DoesNotAccessMemory; 8683 case Intrinsic::x86_sse2_cvtsi642sd: 8684 return DoesNotAccessMemory; 8685 case Intrinsic::x86_sse2_cvtss2sd: 8686 return DoesNotAccessMemory; 8687 case Intrinsic::x86_sse2_cvttpd2dq: 8688 return DoesNotAccessMemory; 8689 case Intrinsic::x86_sse2_cvttps2dq: 8690 return DoesNotAccessMemory; 8691 case Intrinsic::x86_sse2_cvttsd2si: 8692 return DoesNotAccessMemory; 8693 case Intrinsic::x86_sse2_cvttsd2si64: 8694 return DoesNotAccessMemory; 8695 case Intrinsic::x86_sse2_div_sd: 8696 return DoesNotAccessMemory; 8697 case Intrinsic::x86_sse2_max_pd: 8698 return DoesNotAccessMemory; 8699 case Intrinsic::x86_sse2_max_sd: 8700 return DoesNotAccessMemory; 8701 case Intrinsic::x86_sse2_min_pd: 8702 return DoesNotAccessMemory; 8703 case Intrinsic::x86_sse2_min_sd: 8704 return DoesNotAccessMemory; 8705 case Intrinsic::x86_sse2_movmsk_pd: 8706 return DoesNotAccessMemory; 8707 case Intrinsic::x86_sse2_mul_sd: 8708 return DoesNotAccessMemory; 8709 case Intrinsic::x86_sse2_packssdw_128: 8710 return DoesNotAccessMemory; 8711 case Intrinsic::x86_sse2_packsswb_128: 8712 return DoesNotAccessMemory; 8713 case Intrinsic::x86_sse2_packuswb_128: 8714 return DoesNotAccessMemory; 8715 case Intrinsic::x86_sse2_padds_b: 8716 return DoesNotAccessMemory; 8717 case Intrinsic::x86_sse2_padds_w: 8718 return DoesNotAccessMemory; 8719 case Intrinsic::x86_sse2_paddus_b: 8720 return DoesNotAccessMemory; 8721 case Intrinsic::x86_sse2_paddus_w: 8722 return DoesNotAccessMemory; 8723 case Intrinsic::x86_sse2_pavg_b: 8724 return DoesNotAccessMemory; 8725 case Intrinsic::x86_sse2_pavg_w: 8726 return DoesNotAccessMemory; 8727 case Intrinsic::x86_sse2_pcmpeq_b: 8728 return DoesNotAccessMemory; 8729 case Intrinsic::x86_sse2_pcmpeq_d: 8730 return DoesNotAccessMemory; 8731 case Intrinsic::x86_sse2_pcmpeq_w: 8732 return DoesNotAccessMemory; 8733 case Intrinsic::x86_sse2_pcmpgt_b: 8734 return DoesNotAccessMemory; 8735 case Intrinsic::x86_sse2_pcmpgt_d: 8736 return DoesNotAccessMemory; 8737 case Intrinsic::x86_sse2_pcmpgt_w: 8738 return DoesNotAccessMemory; 8739 case Intrinsic::x86_sse2_pmadd_wd: 8740 return DoesNotAccessMemory; 8741 case Intrinsic::x86_sse2_pmaxs_w: 8742 return DoesNotAccessMemory; 8743 case Intrinsic::x86_sse2_pmaxu_b: 8744 return DoesNotAccessMemory; 8745 case Intrinsic::x86_sse2_pmins_w: 8746 return DoesNotAccessMemory; 8747 case Intrinsic::x86_sse2_pminu_b: 8748 return DoesNotAccessMemory; 8749 case Intrinsic::x86_sse2_pmovmskb_128: 8750 return DoesNotAccessMemory; 8751 case Intrinsic::x86_sse2_pmulh_w: 8752 return DoesNotAccessMemory; 8753 case Intrinsic::x86_sse2_pmulhu_w: 8754 return DoesNotAccessMemory; 8755 case Intrinsic::x86_sse2_pmulu_dq: 8756 return DoesNotAccessMemory; 8757 case Intrinsic::x86_sse2_psad_bw: 8758 return DoesNotAccessMemory; 8759 case Intrinsic::x86_sse2_psll_d: 8760 return DoesNotAccessMemory; 8761 case Intrinsic::x86_sse2_psll_dq: 8762 return DoesNotAccessMemory; 8763 case Intrinsic::x86_sse2_psll_dq_bs: 8764 return DoesNotAccessMemory; 8765 case Intrinsic::x86_sse2_psll_q: 8766 return DoesNotAccessMemory; 8767 case Intrinsic::x86_sse2_psll_w: 8768 return DoesNotAccessMemory; 8769 case Intrinsic::x86_sse2_pslli_d: 8770 return DoesNotAccessMemory; 8771 case Intrinsic::x86_sse2_pslli_q: 8772 return DoesNotAccessMemory; 8773 case Intrinsic::x86_sse2_pslli_w: 8774 return DoesNotAccessMemory; 8775 case Intrinsic::x86_sse2_psra_d: 8776 return DoesNotAccessMemory; 8777 case Intrinsic::x86_sse2_psra_w: 8778 return DoesNotAccessMemory; 8779 case Intrinsic::x86_sse2_psrai_d: 8780 return DoesNotAccessMemory; 8781 case Intrinsic::x86_sse2_psrai_w: 8782 return DoesNotAccessMemory; 8783 case Intrinsic::x86_sse2_psrl_d: 8784 return DoesNotAccessMemory; 8785 case Intrinsic::x86_sse2_psrl_dq: 8786 return DoesNotAccessMemory; 8787 case Intrinsic::x86_sse2_psrl_dq_bs: 8788 return DoesNotAccessMemory; 8789 case Intrinsic::x86_sse2_psrl_q: 8790 return DoesNotAccessMemory; 8791 case Intrinsic::x86_sse2_psrl_w: 8792 return DoesNotAccessMemory; 8793 case Intrinsic::x86_sse2_psrli_d: 8794 return DoesNotAccessMemory; 8795 case Intrinsic::x86_sse2_psrli_q: 8796 return DoesNotAccessMemory; 8797 case Intrinsic::x86_sse2_psrli_w: 8798 return DoesNotAccessMemory; 8799 case Intrinsic::x86_sse2_psubs_b: 8800 return DoesNotAccessMemory; 8801 case Intrinsic::x86_sse2_psubs_w: 8802 return DoesNotAccessMemory; 8803 case Intrinsic::x86_sse2_psubus_b: 8804 return DoesNotAccessMemory; 8805 case Intrinsic::x86_sse2_psubus_w: 8806 return DoesNotAccessMemory; 8807 case Intrinsic::x86_sse2_sqrt_pd: 8808 return DoesNotAccessMemory; 8809 case Intrinsic::x86_sse2_sqrt_sd: 8810 return DoesNotAccessMemory; 8811 case Intrinsic::x86_sse2_sub_sd: 8812 return DoesNotAccessMemory; 8813 case Intrinsic::x86_sse2_ucomieq_sd: 8814 return DoesNotAccessMemory; 8815 case Intrinsic::x86_sse2_ucomige_sd: 8816 return DoesNotAccessMemory; 8817 case Intrinsic::x86_sse2_ucomigt_sd: 8818 return DoesNotAccessMemory; 8819 case Intrinsic::x86_sse2_ucomile_sd: 8820 return DoesNotAccessMemory; 8821 case Intrinsic::x86_sse2_ucomilt_sd: 8822 return DoesNotAccessMemory; 8823 case Intrinsic::x86_sse2_ucomineq_sd: 8824 return DoesNotAccessMemory; 8825 case Intrinsic::x86_sse3_addsub_pd: 8826 return DoesNotAccessMemory; 8827 case Intrinsic::x86_sse3_addsub_ps: 8828 return DoesNotAccessMemory; 8829 case Intrinsic::x86_sse3_hadd_pd: 8830 return DoesNotAccessMemory; 8831 case Intrinsic::x86_sse3_hadd_ps: 8832 return DoesNotAccessMemory; 8833 case Intrinsic::x86_sse3_hsub_pd: 8834 return DoesNotAccessMemory; 8835 case Intrinsic::x86_sse3_hsub_ps: 8836 return DoesNotAccessMemory; 8837 case Intrinsic::x86_sse3_ldu_dq: 8838 return OnlyReadsMemory; 8839 case Intrinsic::x86_sse41_blendpd: 8840 return DoesNotAccessMemory; 8841 case Intrinsic::x86_sse41_blendps: 8842 return DoesNotAccessMemory; 8843 case Intrinsic::x86_sse41_blendvpd: 8844 return DoesNotAccessMemory; 8845 case Intrinsic::x86_sse41_blendvps: 8846 return DoesNotAccessMemory; 8847 case Intrinsic::x86_sse41_dppd: 8848 return DoesNotAccessMemory; 8849 case Intrinsic::x86_sse41_dpps: 8850 return DoesNotAccessMemory; 8851 case Intrinsic::x86_sse41_extractps: 8852 return DoesNotAccessMemory; 8853 case Intrinsic::x86_sse41_insertps: 8854 return DoesNotAccessMemory; 8855 case Intrinsic::x86_sse41_movntdqa: 8856 return OnlyReadsMemory; 8857 case Intrinsic::x86_sse41_mpsadbw: 8858 return DoesNotAccessMemory; 8859 case Intrinsic::x86_sse41_packusdw: 8860 return DoesNotAccessMemory; 8861 case Intrinsic::x86_sse41_pblendvb: 8862 return DoesNotAccessMemory; 8863 case Intrinsic::x86_sse41_pblendw: 8864 return DoesNotAccessMemory; 8865 case Intrinsic::x86_sse41_pcmpeqq: 8866 return DoesNotAccessMemory; 8867 case Intrinsic::x86_sse41_pextrb: 8868 return DoesNotAccessMemory; 8869 case Intrinsic::x86_sse41_pextrd: 8870 return DoesNotAccessMemory; 8871 case Intrinsic::x86_sse41_pextrq: 8872 return DoesNotAccessMemory; 8873 case Intrinsic::x86_sse41_phminposuw: 8874 return DoesNotAccessMemory; 8875 case Intrinsic::x86_sse41_pmaxsb: 8876 return DoesNotAccessMemory; 8877 case Intrinsic::x86_sse41_pmaxsd: 8878 return DoesNotAccessMemory; 8879 case Intrinsic::x86_sse41_pmaxud: 8880 return DoesNotAccessMemory; 8881 case Intrinsic::x86_sse41_pmaxuw: 8882 return DoesNotAccessMemory; 8883 case Intrinsic::x86_sse41_pminsb: 8884 return DoesNotAccessMemory; 8885 case Intrinsic::x86_sse41_pminsd: 8886 return DoesNotAccessMemory; 8887 case Intrinsic::x86_sse41_pminud: 8888 return DoesNotAccessMemory; 8889 case Intrinsic::x86_sse41_pminuw: 8890 return DoesNotAccessMemory; 8891 case Intrinsic::x86_sse41_pmovsxbd: 8892 return DoesNotAccessMemory; 8893 case Intrinsic::x86_sse41_pmovsxbq: 8894 return DoesNotAccessMemory; 8895 case Intrinsic::x86_sse41_pmovsxbw: 8896 return DoesNotAccessMemory; 8897 case Intrinsic::x86_sse41_pmovsxdq: 8898 return DoesNotAccessMemory; 8899 case Intrinsic::x86_sse41_pmovsxwd: 8900 return DoesNotAccessMemory; 8901 case Intrinsic::x86_sse41_pmovsxwq: 8902 return DoesNotAccessMemory; 8903 case Intrinsic::x86_sse41_pmovzxbd: 8904 return DoesNotAccessMemory; 8905 case Intrinsic::x86_sse41_pmovzxbq: 8906 return DoesNotAccessMemory; 8907 case Intrinsic::x86_sse41_pmovzxbw: 8908 return DoesNotAccessMemory; 8909 case Intrinsic::x86_sse41_pmovzxdq: 8910 return DoesNotAccessMemory; 8911 case Intrinsic::x86_sse41_pmovzxwd: 8912 return DoesNotAccessMemory; 8913 case Intrinsic::x86_sse41_pmovzxwq: 8914 return DoesNotAccessMemory; 8915 case Intrinsic::x86_sse41_pmuldq: 8916 return DoesNotAccessMemory; 8917 case Intrinsic::x86_sse41_ptestc: 8918 return DoesNotAccessMemory; 8919 case Intrinsic::x86_sse41_ptestnzc: 8920 return DoesNotAccessMemory; 8921 case Intrinsic::x86_sse41_ptestz: 8922 return DoesNotAccessMemory; 8923 case Intrinsic::x86_sse41_round_pd: 8924 return DoesNotAccessMemory; 8925 case Intrinsic::x86_sse41_round_ps: 8926 return DoesNotAccessMemory; 8927 case Intrinsic::x86_sse41_round_sd: 8928 return DoesNotAccessMemory; 8929 case Intrinsic::x86_sse41_round_ss: 8930 return DoesNotAccessMemory; 8931 case Intrinsic::x86_sse42_crc32_32_16: 8932 return DoesNotAccessMemory; 8933 case Intrinsic::x86_sse42_crc32_32_32: 8934 return DoesNotAccessMemory; 8935 case Intrinsic::x86_sse42_crc32_32_8: 8936 return DoesNotAccessMemory; 8937 case Intrinsic::x86_sse42_crc32_64_64: 8938 return DoesNotAccessMemory; 8939 case Intrinsic::x86_sse42_crc32_64_8: 8940 return DoesNotAccessMemory; 8941 case Intrinsic::x86_sse42_pcmpestri128: 8942 return DoesNotAccessMemory; 8943 case Intrinsic::x86_sse42_pcmpestria128: 8944 return DoesNotAccessMemory; 8945 case Intrinsic::x86_sse42_pcmpestric128: 8946 return DoesNotAccessMemory; 8947 case Intrinsic::x86_sse42_pcmpestrio128: 8948 return DoesNotAccessMemory; 8949 case Intrinsic::x86_sse42_pcmpestris128: 8950 return DoesNotAccessMemory; 8951 case Intrinsic::x86_sse42_pcmpestriz128: 8952 return DoesNotAccessMemory; 8953 case Intrinsic::x86_sse42_pcmpestrm128: 8954 return DoesNotAccessMemory; 8955 case Intrinsic::x86_sse42_pcmpgtq: 8956 return DoesNotAccessMemory; 8957 case Intrinsic::x86_sse42_pcmpistri128: 8958 return DoesNotAccessMemory; 8959 case Intrinsic::x86_sse42_pcmpistria128: 8960 return DoesNotAccessMemory; 8961 case Intrinsic::x86_sse42_pcmpistric128: 8962 return DoesNotAccessMemory; 8963 case Intrinsic::x86_sse42_pcmpistrio128: 8964 return DoesNotAccessMemory; 8965 case Intrinsic::x86_sse42_pcmpistris128: 8966 return DoesNotAccessMemory; 8967 case Intrinsic::x86_sse42_pcmpistriz128: 8968 return DoesNotAccessMemory; 8969 case Intrinsic::x86_sse42_pcmpistrm128: 8970 return DoesNotAccessMemory; 8971 case Intrinsic::x86_sse_add_ss: 8972 return DoesNotAccessMemory; 8973 case Intrinsic::x86_sse_cmp_ps: 8974 return DoesNotAccessMemory; 8975 case Intrinsic::x86_sse_cmp_ss: 8976 return DoesNotAccessMemory; 8977 case Intrinsic::x86_sse_comieq_ss: 8978 return DoesNotAccessMemory; 8979 case Intrinsic::x86_sse_comige_ss: 8980 return DoesNotAccessMemory; 8981 case Intrinsic::x86_sse_comigt_ss: 8982 return DoesNotAccessMemory; 8983 case Intrinsic::x86_sse_comile_ss: 8984 return DoesNotAccessMemory; 8985 case Intrinsic::x86_sse_comilt_ss: 8986 return DoesNotAccessMemory; 8987 case Intrinsic::x86_sse_comineq_ss: 8988 return DoesNotAccessMemory; 8989 case Intrinsic::x86_sse_cvtpd2pi: 8990 return DoesNotAccessMemory; 8991 case Intrinsic::x86_sse_cvtpi2pd: 8992 return DoesNotAccessMemory; 8993 case Intrinsic::x86_sse_cvtpi2ps: 8994 return DoesNotAccessMemory; 8995 case Intrinsic::x86_sse_cvtps2pi: 8996 return DoesNotAccessMemory; 8997 case Intrinsic::x86_sse_cvtsi2ss: 8998 return DoesNotAccessMemory; 8999 case Intrinsic::x86_sse_cvtsi642ss: 9000 return DoesNotAccessMemory; 9001 case Intrinsic::x86_sse_cvtss2si: 9002 return DoesNotAccessMemory; 9003 case Intrinsic::x86_sse_cvtss2si64: 9004 return DoesNotAccessMemory; 9005 case Intrinsic::x86_sse_cvttpd2pi: 9006 return DoesNotAccessMemory; 9007 case Intrinsic::x86_sse_cvttps2pi: 9008 return DoesNotAccessMemory; 9009 case Intrinsic::x86_sse_cvttss2si: 9010 return DoesNotAccessMemory; 9011 case Intrinsic::x86_sse_cvttss2si64: 9012 return DoesNotAccessMemory; 9013 case Intrinsic::x86_sse_div_ss: 9014 return DoesNotAccessMemory; 9015 case Intrinsic::x86_sse_max_ps: 9016 return DoesNotAccessMemory; 9017 case Intrinsic::x86_sse_max_ss: 9018 return DoesNotAccessMemory; 9019 case Intrinsic::x86_sse_min_ps: 9020 return DoesNotAccessMemory; 9021 case Intrinsic::x86_sse_min_ss: 9022 return DoesNotAccessMemory; 9023 case Intrinsic::x86_sse_movmsk_ps: 9024 return DoesNotAccessMemory; 9025 case Intrinsic::x86_sse_mul_ss: 9026 return DoesNotAccessMemory; 9027 case Intrinsic::x86_sse_pshuf_w: 9028 return DoesNotAccessMemory; 9029 case Intrinsic::x86_sse_rcp_ps: 9030 return DoesNotAccessMemory; 9031 case Intrinsic::x86_sse_rcp_ss: 9032 return DoesNotAccessMemory; 9033 case Intrinsic::x86_sse_rsqrt_ps: 9034 return DoesNotAccessMemory; 9035 case Intrinsic::x86_sse_rsqrt_ss: 9036 return DoesNotAccessMemory; 9037 case Intrinsic::x86_sse_sqrt_ps: 9038 return DoesNotAccessMemory; 9039 case Intrinsic::x86_sse_sqrt_ss: 9040 return DoesNotAccessMemory; 9041 case Intrinsic::x86_sse_sub_ss: 9042 return DoesNotAccessMemory; 9043 case Intrinsic::x86_sse_ucomieq_ss: 9044 return DoesNotAccessMemory; 9045 case Intrinsic::x86_sse_ucomige_ss: 9046 return DoesNotAccessMemory; 9047 case Intrinsic::x86_sse_ucomigt_ss: 9048 return DoesNotAccessMemory; 9049 case Intrinsic::x86_sse_ucomile_ss: 9050 return DoesNotAccessMemory; 9051 case Intrinsic::x86_sse_ucomilt_ss: 9052 return DoesNotAccessMemory; 9053 case Intrinsic::x86_sse_ucomineq_ss: 9054 return DoesNotAccessMemory; 9055 case Intrinsic::x86_ssse3_pabs_b: 9056 return DoesNotAccessMemory; 9057 case Intrinsic::x86_ssse3_pabs_b_128: 9058 return DoesNotAccessMemory; 9059 case Intrinsic::x86_ssse3_pabs_d: 9060 return DoesNotAccessMemory; 9061 case Intrinsic::x86_ssse3_pabs_d_128: 9062 return DoesNotAccessMemory; 9063 case Intrinsic::x86_ssse3_pabs_w: 9064 return DoesNotAccessMemory; 9065 case Intrinsic::x86_ssse3_pabs_w_128: 9066 return DoesNotAccessMemory; 9067 case Intrinsic::x86_ssse3_phadd_d: 9068 return DoesNotAccessMemory; 9069 case Intrinsic::x86_ssse3_phadd_d_128: 9070 return DoesNotAccessMemory; 9071 case Intrinsic::x86_ssse3_phadd_sw: 9072 return DoesNotAccessMemory; 9073 case Intrinsic::x86_ssse3_phadd_sw_128: 9074 return DoesNotAccessMemory; 9075 case Intrinsic::x86_ssse3_phadd_w: 9076 return DoesNotAccessMemory; 9077 case Intrinsic::x86_ssse3_phadd_w_128: 9078 return DoesNotAccessMemory; 9079 case Intrinsic::x86_ssse3_phsub_d: 9080 return DoesNotAccessMemory; 9081 case Intrinsic::x86_ssse3_phsub_d_128: 9082 return DoesNotAccessMemory; 9083 case Intrinsic::x86_ssse3_phsub_sw: 9084 return DoesNotAccessMemory; 9085 case Intrinsic::x86_ssse3_phsub_sw_128: 9086 return DoesNotAccessMemory; 9087 case Intrinsic::x86_ssse3_phsub_w: 9088 return DoesNotAccessMemory; 9089 case Intrinsic::x86_ssse3_phsub_w_128: 9090 return DoesNotAccessMemory; 9091 case Intrinsic::x86_ssse3_pmadd_ub_sw: 9092 return DoesNotAccessMemory; 9093 case Intrinsic::x86_ssse3_pmadd_ub_sw_128: 9094 return DoesNotAccessMemory; 9095 case Intrinsic::x86_ssse3_pmul_hr_sw: 9096 return DoesNotAccessMemory; 9097 case Intrinsic::x86_ssse3_pmul_hr_sw_128: 9098 return DoesNotAccessMemory; 9099 case Intrinsic::x86_ssse3_pshuf_b: 9100 return DoesNotAccessMemory; 9101 case Intrinsic::x86_ssse3_pshuf_b_128: 9102 return DoesNotAccessMemory; 9103 case Intrinsic::x86_ssse3_psign_b: 9104 return DoesNotAccessMemory; 9105 case Intrinsic::x86_ssse3_psign_b_128: 9106 return DoesNotAccessMemory; 9107 case Intrinsic::x86_ssse3_psign_d: 9108 return DoesNotAccessMemory; 9109 case Intrinsic::x86_ssse3_psign_d_128: 9110 return DoesNotAccessMemory; 9111 case Intrinsic::x86_ssse3_psign_w: 9112 return DoesNotAccessMemory; 9113 case Intrinsic::x86_ssse3_psign_w_128: 9114 return DoesNotAccessMemory; 9115 } 9116 #endif // GET_INTRINSIC_MODREF_BEHAVIOR 9117 9118 // Get the GCC builtin that corresponds to an LLVM intrinsic. 9119 #ifdef GET_GCC_BUILTIN_NAME 9120 switch (F->getIntrinsicID()) { 9121 default: BuiltinName = ""; break; 9122 case Intrinsic::adjust_trampoline: BuiltinName = "__builtin_adjust_trampoline"; break; 9123 case Intrinsic::convert_from_fp16: BuiltinName = "__gnu_h2f_ieee"; break; 9124 case Intrinsic::convert_to_fp16: BuiltinName = "__gnu_f2h_ieee"; break; 9125 case Intrinsic::eh_unwind_init: BuiltinName = "__builtin_unwind_init"; break; 9126 case Intrinsic::flt_rounds: BuiltinName = "__builtin_flt_rounds"; break; 9127 case Intrinsic::init_trampoline: BuiltinName = "__builtin_init_trampoline"; break; 9128 case Intrinsic::objectsize: BuiltinName = "__builtin_object_size"; break; 9129 case Intrinsic::stackrestore: BuiltinName = "__builtin_stack_restore"; break; 9130 case Intrinsic::stacksave: BuiltinName = "__builtin_stack_save"; break; 9131 case Intrinsic::trap: BuiltinName = "__builtin_trap"; break; 9132 case Intrinsic::x86_3dnow_pavgusb: BuiltinName = "__builtin_ia32_pavgusb"; break; 9133 case Intrinsic::x86_3dnow_pf2id: BuiltinName = "__builtin_ia32_pf2id"; break; 9134 case Intrinsic::x86_3dnow_pfacc: BuiltinName = "__builtin_ia32_pfacc"; break; 9135 case Intrinsic::x86_3dnow_pfadd: BuiltinName = "__builtin_ia32_pfadd"; break; 9136 case Intrinsic::x86_3dnow_pfcmpeq: BuiltinName = "__builtin_ia32_pfcmpeq"; break; 9137 case Intrinsic::x86_3dnow_pfcmpge: BuiltinName = "__builtin_ia32_pfcmpge"; break; 9138 case Intrinsic::x86_3dnow_pfcmpgt: BuiltinName = "__builtin_ia32_pfcmpgt"; break; 9139 case Intrinsic::x86_3dnow_pfmax: BuiltinName = "__builtin_ia32_pfmax"; break; 9140 case Intrinsic::x86_3dnow_pfmin: BuiltinName = "__builtin_ia32_pfmin"; break; 9141 case Intrinsic::x86_3dnow_pfmul: BuiltinName = "__builtin_ia32_pfmul"; break; 9142 case Intrinsic::x86_3dnow_pfrcp: BuiltinName = "__builtin_ia32_pfrcp"; break; 9143 case Intrinsic::x86_3dnow_pfrcpit1: BuiltinName = "__builtin_ia32_pfrcpit1"; break; 9144 case Intrinsic::x86_3dnow_pfrcpit2: BuiltinName = "__builtin_ia32_pfrcpit2"; break; 9145 case Intrinsic::x86_3dnow_pfrsqit1: BuiltinName = "__builtin_ia32_pfrsqit1"; break; 9146 case Intrinsic::x86_3dnow_pfrsqrt: BuiltinName = "__builtin_ia32_pfrsqrt"; break; 9147 case Intrinsic::x86_3dnow_pfsub: BuiltinName = "__builtin_ia32_pfsub"; break; 9148 case Intrinsic::x86_3dnow_pfsubr: BuiltinName = "__builtin_ia32_pfsubr"; break; 9149 case Intrinsic::x86_3dnow_pi2fd: BuiltinName = "__builtin_ia32_pi2fd"; break; 9150 case Intrinsic::x86_3dnow_pmulhrw: BuiltinName = "__builtin_ia32_pmulhrw"; break; 9151 case Intrinsic::x86_3dnowa_pf2iw: BuiltinName = "__builtin_ia32_pf2iw"; break; 9152 case Intrinsic::x86_3dnowa_pfnacc: BuiltinName = "__builtin_ia32_pfnacc"; break; 9153 case Intrinsic::x86_3dnowa_pfpnacc: BuiltinName = "__builtin_ia32_pfpnacc"; break; 9154 case Intrinsic::x86_3dnowa_pi2fw: BuiltinName = "__builtin_ia32_pi2fw"; break; 9155 case Intrinsic::x86_aesni_aesdec: BuiltinName = "__builtin_ia32_aesdec128"; break; 9156 case Intrinsic::x86_aesni_aesdeclast: BuiltinName = "__builtin_ia32_aesdeclast128"; break; 9157 case Intrinsic::x86_aesni_aesenc: BuiltinName = "__builtin_ia32_aesenc128"; break; 9158 case Intrinsic::x86_aesni_aesenclast: BuiltinName = "__builtin_ia32_aesenclast128"; break; 9159 case Intrinsic::x86_aesni_aesimc: BuiltinName = "__builtin_ia32_aesimc128"; break; 9160 case Intrinsic::x86_aesni_aeskeygenassist: BuiltinName = "__builtin_ia32_aeskeygenassist128"; break; 9161 case Intrinsic::x86_avx_addsub_pd_256: BuiltinName = "__builtin_ia32_addsubpd256"; break; 9162 case Intrinsic::x86_avx_addsub_ps_256: BuiltinName = "__builtin_ia32_addsubps256"; break; 9163 case Intrinsic::x86_avx_blend_pd_256: BuiltinName = "__builtin_ia32_blendpd256"; break; 9164 case Intrinsic::x86_avx_blend_ps_256: BuiltinName = "__builtin_ia32_blendps256"; break; 9165 case Intrinsic::x86_avx_blendv_pd_256: BuiltinName = "__builtin_ia32_blendvpd256"; break; 9166 case Intrinsic::x86_avx_blendv_ps_256: BuiltinName = "__builtin_ia32_blendvps256"; break; 9167 case Intrinsic::x86_avx_cmp_pd_256: BuiltinName = "__builtin_ia32_cmppd256"; break; 9168 case Intrinsic::x86_avx_cmp_ps_256: BuiltinName = "__builtin_ia32_cmpps256"; break; 9169 case Intrinsic::x86_avx_cvt_pd2_ps_256: BuiltinName = "__builtin_ia32_cvtpd2ps256"; break; 9170 case Intrinsic::x86_avx_cvt_pd2dq_256: BuiltinName = "__builtin_ia32_cvtpd2dq256"; break; 9171 case Intrinsic::x86_avx_cvt_ps2_pd_256: BuiltinName = "__builtin_ia32_cvtps2pd256"; break; 9172 case Intrinsic::x86_avx_cvt_ps2dq_256: BuiltinName = "__builtin_ia32_cvtps2dq256"; break; 9173 case Intrinsic::x86_avx_cvtdq2_pd_256: BuiltinName = "__builtin_ia32_cvtdq2pd256"; break; 9174 case Intrinsic::x86_avx_cvtdq2_ps_256: BuiltinName = "__builtin_ia32_cvtdq2ps256"; break; 9175 case Intrinsic::x86_avx_cvtt_pd2dq_256: BuiltinName = "__builtin_ia32_cvttpd2dq256"; break; 9176 case Intrinsic::x86_avx_cvtt_ps2dq_256: BuiltinName = "__builtin_ia32_cvttps2dq256"; break; 9177 case Intrinsic::x86_avx_dp_ps_256: BuiltinName = "__builtin_ia32_dpps256"; break; 9178 case Intrinsic::x86_avx_hadd_pd_256: BuiltinName = "__builtin_ia32_haddpd256"; break; 9179 case Intrinsic::x86_avx_hadd_ps_256: BuiltinName = "__builtin_ia32_haddps256"; break; 9180 case Intrinsic::x86_avx_hsub_pd_256: BuiltinName = "__builtin_ia32_hsubpd256"; break; 9181 case Intrinsic::x86_avx_hsub_ps_256: BuiltinName = "__builtin_ia32_hsubps256"; break; 9182 case Intrinsic::x86_avx_ldu_dq_256: BuiltinName = "__builtin_ia32_lddqu256"; break; 9183 case Intrinsic::x86_avx_loadu_dq_256: BuiltinName = "__builtin_ia32_loaddqu256"; break; 9184 case Intrinsic::x86_avx_loadu_pd_256: BuiltinName = "__builtin_ia32_loadupd256"; break; 9185 case Intrinsic::x86_avx_loadu_ps_256: BuiltinName = "__builtin_ia32_loadups256"; break; 9186 case Intrinsic::x86_avx_maskload_pd: BuiltinName = "__builtin_ia32_maskloadpd"; break; 9187 case Intrinsic::x86_avx_maskload_pd_256: BuiltinName = "__builtin_ia32_maskloadpd256"; break; 9188 case Intrinsic::x86_avx_maskload_ps: BuiltinName = "__builtin_ia32_maskloadps"; break; 9189 case Intrinsic::x86_avx_maskload_ps_256: BuiltinName = "__builtin_ia32_maskloadps256"; break; 9190 case Intrinsic::x86_avx_maskstore_pd: BuiltinName = "__builtin_ia32_maskstorepd"; break; 9191 case Intrinsic::x86_avx_maskstore_pd_256: BuiltinName = "__builtin_ia32_maskstorepd256"; break; 9192 case Intrinsic::x86_avx_maskstore_ps: BuiltinName = "__builtin_ia32_maskstoreps"; break; 9193 case Intrinsic::x86_avx_maskstore_ps_256: BuiltinName = "__builtin_ia32_maskstoreps256"; break; 9194 case Intrinsic::x86_avx_max_pd_256: BuiltinName = "__builtin_ia32_maxpd256"; break; 9195 case Intrinsic::x86_avx_max_ps_256: BuiltinName = "__builtin_ia32_maxps256"; break; 9196 case Intrinsic::x86_avx_min_pd_256: BuiltinName = "__builtin_ia32_minpd256"; break; 9197 case Intrinsic::x86_avx_min_ps_256: BuiltinName = "__builtin_ia32_minps256"; break; 9198 case Intrinsic::x86_avx_movmsk_pd_256: BuiltinName = "__builtin_ia32_movmskpd256"; break; 9199 case Intrinsic::x86_avx_movmsk_ps_256: BuiltinName = "__builtin_ia32_movmskps256"; break; 9200 case Intrinsic::x86_avx_movnt_dq_256: BuiltinName = "__builtin_ia32_movntdq256"; break; 9201 case Intrinsic::x86_avx_movnt_pd_256: BuiltinName = "__builtin_ia32_movntpd256"; break; 9202 case Intrinsic::x86_avx_movnt_ps_256: BuiltinName = "__builtin_ia32_movntps256"; break; 9203 case Intrinsic::x86_avx_ptestc_256: BuiltinName = "__builtin_ia32_ptestc256"; break; 9204 case Intrinsic::x86_avx_ptestnzc_256: BuiltinName = "__builtin_ia32_ptestnzc256"; break; 9205 case Intrinsic::x86_avx_ptestz_256: BuiltinName = "__builtin_ia32_ptestz256"; break; 9206 case Intrinsic::x86_avx_rcp_ps_256: BuiltinName = "__builtin_ia32_rcpps256"; break; 9207 case Intrinsic::x86_avx_round_pd_256: BuiltinName = "__builtin_ia32_roundpd256"; break; 9208 case Intrinsic::x86_avx_round_ps_256: BuiltinName = "__builtin_ia32_roundps256"; break; 9209 case Intrinsic::x86_avx_rsqrt_ps_256: BuiltinName = "__builtin_ia32_rsqrtps256"; break; 9210 case Intrinsic::x86_avx_sqrt_pd_256: BuiltinName = "__builtin_ia32_sqrtpd256"; break; 9211 case Intrinsic::x86_avx_sqrt_ps_256: BuiltinName = "__builtin_ia32_sqrtps256"; break; 9212 case Intrinsic::x86_avx_storeu_dq_256: BuiltinName = "__builtin_ia32_storedqu256"; break; 9213 case Intrinsic::x86_avx_storeu_pd_256: BuiltinName = "__builtin_ia32_storeupd256"; break; 9214 case Intrinsic::x86_avx_storeu_ps_256: BuiltinName = "__builtin_ia32_storeups256"; break; 9215 case Intrinsic::x86_avx_vbroadcast_sd_256: BuiltinName = "__builtin_ia32_vbroadcastsd256"; break; 9216 case Intrinsic::x86_avx_vbroadcastf128_pd_256: BuiltinName = "__builtin_ia32_vbroadcastf128_pd256"; break; 9217 case Intrinsic::x86_avx_vbroadcastf128_ps_256: BuiltinName = "__builtin_ia32_vbroadcastf128_ps256"; break; 9218 case Intrinsic::x86_avx_vbroadcastss: BuiltinName = "__builtin_ia32_vbroadcastss"; break; 9219 case Intrinsic::x86_avx_vbroadcastss_256: BuiltinName = "__builtin_ia32_vbroadcastss256"; break; 9220 case Intrinsic::x86_avx_vextractf128_pd_256: BuiltinName = "__builtin_ia32_vextractf128_pd256"; break; 9221 case Intrinsic::x86_avx_vextractf128_ps_256: BuiltinName = "__builtin_ia32_vextractf128_ps256"; break; 9222 case Intrinsic::x86_avx_vextractf128_si_256: BuiltinName = "__builtin_ia32_vextractf128_si256"; break; 9223 case Intrinsic::x86_avx_vinsertf128_pd_256: BuiltinName = "__builtin_ia32_vinsertf128_pd256"; break; 9224 case Intrinsic::x86_avx_vinsertf128_ps_256: BuiltinName = "__builtin_ia32_vinsertf128_ps256"; break; 9225 case Intrinsic::x86_avx_vinsertf128_si_256: BuiltinName = "__builtin_ia32_vinsertf128_si256"; break; 9226 case Intrinsic::x86_avx_vperm2f128_pd_256: BuiltinName = "__builtin_ia32_vperm2f128_pd256"; break; 9227 case Intrinsic::x86_avx_vperm2f128_ps_256: BuiltinName = "__builtin_ia32_vperm2f128_ps256"; break; 9228 case Intrinsic::x86_avx_vperm2f128_si_256: BuiltinName = "__builtin_ia32_vperm2f128_si256"; break; 9229 case Intrinsic::x86_avx_vpermil_pd: BuiltinName = "__builtin_ia32_vpermilpd"; break; 9230 case Intrinsic::x86_avx_vpermil_pd_256: BuiltinName = "__builtin_ia32_vpermilpd256"; break; 9231 case Intrinsic::x86_avx_vpermil_ps: BuiltinName = "__builtin_ia32_vpermilps"; break; 9232 case Intrinsic::x86_avx_vpermil_ps_256: BuiltinName = "__builtin_ia32_vpermilps256"; break; 9233 case Intrinsic::x86_avx_vpermilvar_pd: BuiltinName = "__builtin_ia32_vpermilvarpd"; break; 9234 case Intrinsic::x86_avx_vpermilvar_pd_256: BuiltinName = "__builtin_ia32_vpermilvarpd256"; break; 9235 case Intrinsic::x86_avx_vpermilvar_ps: BuiltinName = "__builtin_ia32_vpermilvarps"; break; 9236 case Intrinsic::x86_avx_vpermilvar_ps_256: BuiltinName = "__builtin_ia32_vpermilvarps256"; break; 9237 case Intrinsic::x86_avx_vtestc_pd: BuiltinName = "__builtin_ia32_vtestcpd"; break; 9238 case Intrinsic::x86_avx_vtestc_pd_256: BuiltinName = "__builtin_ia32_vtestcpd256"; break; 9239 case Intrinsic::x86_avx_vtestc_ps: BuiltinName = "__builtin_ia32_vtestcps"; break; 9240 case Intrinsic::x86_avx_vtestc_ps_256: BuiltinName = "__builtin_ia32_vtestcps256"; break; 9241 case Intrinsic::x86_avx_vtestnzc_pd: BuiltinName = "__builtin_ia32_vtestnzcpd"; break; 9242 case Intrinsic::x86_avx_vtestnzc_pd_256: BuiltinName = "__builtin_ia32_vtestnzcpd256"; break; 9243 case Intrinsic::x86_avx_vtestnzc_ps: BuiltinName = "__builtin_ia32_vtestnzcps"; break; 9244 case Intrinsic::x86_avx_vtestnzc_ps_256: BuiltinName = "__builtin_ia32_vtestnzcps256"; break; 9245 case Intrinsic::x86_avx_vtestz_pd: BuiltinName = "__builtin_ia32_vtestzpd"; break; 9246 case Intrinsic::x86_avx_vtestz_pd_256: BuiltinName = "__builtin_ia32_vtestzpd256"; break; 9247 case Intrinsic::x86_avx_vtestz_ps: BuiltinName = "__builtin_ia32_vtestzps"; break; 9248 case Intrinsic::x86_avx_vtestz_ps_256: BuiltinName = "__builtin_ia32_vtestzps256"; break; 9249 case Intrinsic::x86_avx_vzeroall: BuiltinName = "__builtin_ia32_vzeroall"; break; 9250 case Intrinsic::x86_avx_vzeroupper: BuiltinName = "__builtin_ia32_vzeroupper"; break; 9251 case Intrinsic::x86_mmx_emms: BuiltinName = "__builtin_ia32_emms"; break; 9252 case Intrinsic::x86_mmx_femms: BuiltinName = "__builtin_ia32_femms"; break; 9253 case Intrinsic::x86_mmx_maskmovq: BuiltinName = "__builtin_ia32_maskmovq"; break; 9254 case Intrinsic::x86_mmx_movnt_dq: BuiltinName = "__builtin_ia32_movntq"; break; 9255 case Intrinsic::x86_mmx_packssdw: BuiltinName = "__builtin_ia32_packssdw"; break; 9256 case Intrinsic::x86_mmx_packsswb: BuiltinName = "__builtin_ia32_packsswb"; break; 9257 case Intrinsic::x86_mmx_packuswb: BuiltinName = "__builtin_ia32_packuswb"; break; 9258 case Intrinsic::x86_mmx_padd_b: BuiltinName = "__builtin_ia32_paddb"; break; 9259 case Intrinsic::x86_mmx_padd_d: BuiltinName = "__builtin_ia32_paddd"; break; 9260 case Intrinsic::x86_mmx_padd_q: BuiltinName = "__builtin_ia32_paddq"; break; 9261 case Intrinsic::x86_mmx_padd_w: BuiltinName = "__builtin_ia32_paddw"; break; 9262 case Intrinsic::x86_mmx_padds_b: BuiltinName = "__builtin_ia32_paddsb"; break; 9263 case Intrinsic::x86_mmx_padds_w: BuiltinName = "__builtin_ia32_paddsw"; break; 9264 case Intrinsic::x86_mmx_paddus_b: BuiltinName = "__builtin_ia32_paddusb"; break; 9265 case Intrinsic::x86_mmx_paddus_w: BuiltinName = "__builtin_ia32_paddusw"; break; 9266 case Intrinsic::x86_mmx_palignr_b: BuiltinName = "__builtin_ia32_palignr"; break; 9267 case Intrinsic::x86_mmx_pand: BuiltinName = "__builtin_ia32_pand"; break; 9268 case Intrinsic::x86_mmx_pandn: BuiltinName = "__builtin_ia32_pandn"; break; 9269 case Intrinsic::x86_mmx_pavg_b: BuiltinName = "__builtin_ia32_pavgb"; break; 9270 case Intrinsic::x86_mmx_pavg_w: BuiltinName = "__builtin_ia32_pavgw"; break; 9271 case Intrinsic::x86_mmx_pcmpeq_b: BuiltinName = "__builtin_ia32_pcmpeqb"; break; 9272 case Intrinsic::x86_mmx_pcmpeq_d: BuiltinName = "__builtin_ia32_pcmpeqd"; break; 9273 case Intrinsic::x86_mmx_pcmpeq_w: BuiltinName = "__builtin_ia32_pcmpeqw"; break; 9274 case Intrinsic::x86_mmx_pcmpgt_b: BuiltinName = "__builtin_ia32_pcmpgtb"; break; 9275 case Intrinsic::x86_mmx_pcmpgt_d: BuiltinName = "__builtin_ia32_pcmpgtd"; break; 9276 case Intrinsic::x86_mmx_pcmpgt_w: BuiltinName = "__builtin_ia32_pcmpgtw"; break; 9277 case Intrinsic::x86_mmx_pextr_w: BuiltinName = "__builtin_ia32_vec_ext_v4hi"; break; 9278 case Intrinsic::x86_mmx_pinsr_w: BuiltinName = "__builtin_ia32_vec_set_v4hi"; break; 9279 case Intrinsic::x86_mmx_pmadd_wd: BuiltinName = "__builtin_ia32_pmaddwd"; break; 9280 case Intrinsic::x86_mmx_pmaxs_w: BuiltinName = "__builtin_ia32_pmaxsw"; break; 9281 case Intrinsic::x86_mmx_pmaxu_b: BuiltinName = "__builtin_ia32_pmaxub"; break; 9282 case Intrinsic::x86_mmx_pmins_w: BuiltinName = "__builtin_ia32_pminsw"; break; 9283 case Intrinsic::x86_mmx_pminu_b: BuiltinName = "__builtin_ia32_pminub"; break; 9284 case Intrinsic::x86_mmx_pmovmskb: BuiltinName = "__builtin_ia32_pmovmskb"; break; 9285 case Intrinsic::x86_mmx_pmulh_w: BuiltinName = "__builtin_ia32_pmulhw"; break; 9286 case Intrinsic::x86_mmx_pmulhu_w: BuiltinName = "__builtin_ia32_pmulhuw"; break; 9287 case Intrinsic::x86_mmx_pmull_w: BuiltinName = "__builtin_ia32_pmullw"; break; 9288 case Intrinsic::x86_mmx_pmulu_dq: BuiltinName = "__builtin_ia32_pmuludq"; break; 9289 case Intrinsic::x86_mmx_por: BuiltinName = "__builtin_ia32_por"; break; 9290 case Intrinsic::x86_mmx_psad_bw: BuiltinName = "__builtin_ia32_psadbw"; break; 9291 case Intrinsic::x86_mmx_psll_d: BuiltinName = "__builtin_ia32_pslld"; break; 9292 case Intrinsic::x86_mmx_psll_q: BuiltinName = "__builtin_ia32_psllq"; break; 9293 case Intrinsic::x86_mmx_psll_w: BuiltinName = "__builtin_ia32_psllw"; break; 9294 case Intrinsic::x86_mmx_pslli_d: BuiltinName = "__builtin_ia32_pslldi"; break; 9295 case Intrinsic::x86_mmx_pslli_q: BuiltinName = "__builtin_ia32_psllqi"; break; 9296 case Intrinsic::x86_mmx_pslli_w: BuiltinName = "__builtin_ia32_psllwi"; break; 9297 case Intrinsic::x86_mmx_psra_d: BuiltinName = "__builtin_ia32_psrad"; break; 9298 case Intrinsic::x86_mmx_psra_w: BuiltinName = "__builtin_ia32_psraw"; break; 9299 case Intrinsic::x86_mmx_psrai_d: BuiltinName = "__builtin_ia32_psradi"; break; 9300 case Intrinsic::x86_mmx_psrai_w: BuiltinName = "__builtin_ia32_psrawi"; break; 9301 case Intrinsic::x86_mmx_psrl_d: BuiltinName = "__builtin_ia32_psrld"; break; 9302 case Intrinsic::x86_mmx_psrl_q: BuiltinName = "__builtin_ia32_psrlq"; break; 9303 case Intrinsic::x86_mmx_psrl_w: BuiltinName = "__builtin_ia32_psrlw"; break; 9304 case Intrinsic::x86_mmx_psrli_d: BuiltinName = "__builtin_ia32_psrldi"; break; 9305 case Intrinsic::x86_mmx_psrli_q: BuiltinName = "__builtin_ia32_psrlqi"; break; 9306 case Intrinsic::x86_mmx_psrli_w: BuiltinName = "__builtin_ia32_psrlwi"; break; 9307 case Intrinsic::x86_mmx_psub_b: BuiltinName = "__builtin_ia32_psubb"; break; 9308 case Intrinsic::x86_mmx_psub_d: BuiltinName = "__builtin_ia32_psubd"; break; 9309 case Intrinsic::x86_mmx_psub_q: BuiltinName = "__builtin_ia32_psubq"; break; 9310 case Intrinsic::x86_mmx_psub_w: BuiltinName = "__builtin_ia32_psubw"; break; 9311 case Intrinsic::x86_mmx_psubs_b: BuiltinName = "__builtin_ia32_psubsb"; break; 9312 case Intrinsic::x86_mmx_psubs_w: BuiltinName = "__builtin_ia32_psubsw"; break; 9313 case Intrinsic::x86_mmx_psubus_b: BuiltinName = "__builtin_ia32_psubusb"; break; 9314 case Intrinsic::x86_mmx_psubus_w: BuiltinName = "__builtin_ia32_psubusw"; break; 9315 case Intrinsic::x86_mmx_punpckhbw: BuiltinName = "__builtin_ia32_punpckhbw"; break; 9316 case Intrinsic::x86_mmx_punpckhdq: BuiltinName = "__builtin_ia32_punpckhdq"; break; 9317 case Intrinsic::x86_mmx_punpckhwd: BuiltinName = "__builtin_ia32_punpckhwd"; break; 9318 case Intrinsic::x86_mmx_punpcklbw: BuiltinName = "__builtin_ia32_punpcklbw"; break; 9319 case Intrinsic::x86_mmx_punpckldq: BuiltinName = "__builtin_ia32_punpckldq"; break; 9320 case Intrinsic::x86_mmx_punpcklwd: BuiltinName = "__builtin_ia32_punpcklwd"; break; 9321 case Intrinsic::x86_mmx_pxor: BuiltinName = "__builtin_ia32_pxor"; break; 9322 case Intrinsic::x86_sse2_add_sd: BuiltinName = "__builtin_ia32_addsd"; break; 9323 case Intrinsic::x86_sse2_clflush: BuiltinName = "__builtin_ia32_clflush"; break; 9324 case Intrinsic::x86_sse2_comieq_sd: BuiltinName = "__builtin_ia32_comisdeq"; break; 9325 case Intrinsic::x86_sse2_comige_sd: BuiltinName = "__builtin_ia32_comisdge"; break; 9326 case Intrinsic::x86_sse2_comigt_sd: BuiltinName = "__builtin_ia32_comisdgt"; break; 9327 case Intrinsic::x86_sse2_comile_sd: BuiltinName = "__builtin_ia32_comisdle"; break; 9328 case Intrinsic::x86_sse2_comilt_sd: BuiltinName = "__builtin_ia32_comisdlt"; break; 9329 case Intrinsic::x86_sse2_comineq_sd: BuiltinName = "__builtin_ia32_comisdneq"; break; 9330 case Intrinsic::x86_sse2_cvtdq2pd: BuiltinName = "__builtin_ia32_cvtdq2pd"; break; 9331 case Intrinsic::x86_sse2_cvtdq2ps: BuiltinName = "__builtin_ia32_cvtdq2ps"; break; 9332 case Intrinsic::x86_sse2_cvtpd2dq: BuiltinName = "__builtin_ia32_cvtpd2dq"; break; 9333 case Intrinsic::x86_sse2_cvtpd2ps: BuiltinName = "__builtin_ia32_cvtpd2ps"; break; 9334 case Intrinsic::x86_sse2_cvtps2dq: BuiltinName = "__builtin_ia32_cvtps2dq"; break; 9335 case Intrinsic::x86_sse2_cvtps2pd: BuiltinName = "__builtin_ia32_cvtps2pd"; break; 9336 case Intrinsic::x86_sse2_cvtsd2si: BuiltinName = "__builtin_ia32_cvtsd2si"; break; 9337 case Intrinsic::x86_sse2_cvtsd2si64: BuiltinName = "__builtin_ia32_cvtsd2si64"; break; 9338 case Intrinsic::x86_sse2_cvtsd2ss: BuiltinName = "__builtin_ia32_cvtsd2ss"; break; 9339 case Intrinsic::x86_sse2_cvtsi2sd: BuiltinName = "__builtin_ia32_cvtsi2sd"; break; 9340 case Intrinsic::x86_sse2_cvtsi642sd: BuiltinName = "__builtin_ia32_cvtsi642sd"; break; 9341 case Intrinsic::x86_sse2_cvtss2sd: BuiltinName = "__builtin_ia32_cvtss2sd"; break; 9342 case Intrinsic::x86_sse2_cvttpd2dq: BuiltinName = "__builtin_ia32_cvttpd2dq"; break; 9343 case Intrinsic::x86_sse2_cvttps2dq: BuiltinName = "__builtin_ia32_cvttps2dq"; break; 9344 case Intrinsic::x86_sse2_cvttsd2si: BuiltinName = "__builtin_ia32_cvttsd2si"; break; 9345 case Intrinsic::x86_sse2_cvttsd2si64: BuiltinName = "__builtin_ia32_cvttsd2si64"; break; 9346 case Intrinsic::x86_sse2_div_sd: BuiltinName = "__builtin_ia32_divsd"; break; 9347 case Intrinsic::x86_sse2_lfence: BuiltinName = "__builtin_ia32_lfence"; break; 9348 case Intrinsic::x86_sse2_maskmov_dqu: BuiltinName = "__builtin_ia32_maskmovdqu"; break; 9349 case Intrinsic::x86_sse2_max_pd: BuiltinName = "__builtin_ia32_maxpd"; break; 9350 case Intrinsic::x86_sse2_max_sd: BuiltinName = "__builtin_ia32_maxsd"; break; 9351 case Intrinsic::x86_sse2_mfence: BuiltinName = "__builtin_ia32_mfence"; break; 9352 case Intrinsic::x86_sse2_min_pd: BuiltinName = "__builtin_ia32_minpd"; break; 9353 case Intrinsic::x86_sse2_min_sd: BuiltinName = "__builtin_ia32_minsd"; break; 9354 case Intrinsic::x86_sse2_movmsk_pd: BuiltinName = "__builtin_ia32_movmskpd"; break; 9355 case Intrinsic::x86_sse2_mul_sd: BuiltinName = "__builtin_ia32_mulsd"; break; 9356 case Intrinsic::x86_sse2_packssdw_128: BuiltinName = "__builtin_ia32_packssdw128"; break; 9357 case Intrinsic::x86_sse2_packsswb_128: BuiltinName = "__builtin_ia32_packsswb128"; break; 9358 case Intrinsic::x86_sse2_packuswb_128: BuiltinName = "__builtin_ia32_packuswb128"; break; 9359 case Intrinsic::x86_sse2_padds_b: BuiltinName = "__builtin_ia32_paddsb128"; break; 9360 case Intrinsic::x86_sse2_padds_w: BuiltinName = "__builtin_ia32_paddsw128"; break; 9361 case Intrinsic::x86_sse2_paddus_b: BuiltinName = "__builtin_ia32_paddusb128"; break; 9362 case Intrinsic::x86_sse2_paddus_w: BuiltinName = "__builtin_ia32_paddusw128"; break; 9363 case Intrinsic::x86_sse2_pavg_b: BuiltinName = "__builtin_ia32_pavgb128"; break; 9364 case Intrinsic::x86_sse2_pavg_w: BuiltinName = "__builtin_ia32_pavgw128"; break; 9365 case Intrinsic::x86_sse2_pcmpeq_b: BuiltinName = "__builtin_ia32_pcmpeqb128"; break; 9366 case Intrinsic::x86_sse2_pcmpeq_d: BuiltinName = "__builtin_ia32_pcmpeqd128"; break; 9367 case Intrinsic::x86_sse2_pcmpeq_w: BuiltinName = "__builtin_ia32_pcmpeqw128"; break; 9368 case Intrinsic::x86_sse2_pcmpgt_b: BuiltinName = "__builtin_ia32_pcmpgtb128"; break; 9369 case Intrinsic::x86_sse2_pcmpgt_d: BuiltinName = "__builtin_ia32_pcmpgtd128"; break; 9370 case Intrinsic::x86_sse2_pcmpgt_w: BuiltinName = "__builtin_ia32_pcmpgtw128"; break; 9371 case Intrinsic::x86_sse2_pmadd_wd: BuiltinName = "__builtin_ia32_pmaddwd128"; break; 9372 case Intrinsic::x86_sse2_pmaxs_w: BuiltinName = "__builtin_ia32_pmaxsw128"; break; 9373 case Intrinsic::x86_sse2_pmaxu_b: BuiltinName = "__builtin_ia32_pmaxub128"; break; 9374 case Intrinsic::x86_sse2_pmins_w: BuiltinName = "__builtin_ia32_pminsw128"; break; 9375 case Intrinsic::x86_sse2_pminu_b: BuiltinName = "__builtin_ia32_pminub128"; break; 9376 case Intrinsic::x86_sse2_pmovmskb_128: BuiltinName = "__builtin_ia32_pmovmskb128"; break; 9377 case Intrinsic::x86_sse2_pmulh_w: BuiltinName = "__builtin_ia32_pmulhw128"; break; 9378 case Intrinsic::x86_sse2_pmulhu_w: BuiltinName = "__builtin_ia32_pmulhuw128"; break; 9379 case Intrinsic::x86_sse2_pmulu_dq: BuiltinName = "__builtin_ia32_pmuludq128"; break; 9380 case Intrinsic::x86_sse2_psad_bw: BuiltinName = "__builtin_ia32_psadbw128"; break; 9381 case Intrinsic::x86_sse2_psll_d: BuiltinName = "__builtin_ia32_pslld128"; break; 9382 case Intrinsic::x86_sse2_psll_dq: BuiltinName = "__builtin_ia32_pslldqi128"; break; 9383 case Intrinsic::x86_sse2_psll_dq_bs: BuiltinName = "__builtin_ia32_pslldqi128_byteshift"; break; 9384 case Intrinsic::x86_sse2_psll_q: BuiltinName = "__builtin_ia32_psllq128"; break; 9385 case Intrinsic::x86_sse2_psll_w: BuiltinName = "__builtin_ia32_psllw128"; break; 9386 case Intrinsic::x86_sse2_pslli_d: BuiltinName = "__builtin_ia32_pslldi128"; break; 9387 case Intrinsic::x86_sse2_pslli_q: BuiltinName = "__builtin_ia32_psllqi128"; break; 9388 case Intrinsic::x86_sse2_pslli_w: BuiltinName = "__builtin_ia32_psllwi128"; break; 9389 case Intrinsic::x86_sse2_psra_d: BuiltinName = "__builtin_ia32_psrad128"; break; 9390 case Intrinsic::x86_sse2_psra_w: BuiltinName = "__builtin_ia32_psraw128"; break; 9391 case Intrinsic::x86_sse2_psrai_d: BuiltinName = "__builtin_ia32_psradi128"; break; 9392 case Intrinsic::x86_sse2_psrai_w: BuiltinName = "__builtin_ia32_psrawi128"; break; 9393 case Intrinsic::x86_sse2_psrl_d: BuiltinName = "__builtin_ia32_psrld128"; break; 9394 case Intrinsic::x86_sse2_psrl_dq: BuiltinName = "__builtin_ia32_psrldqi128"; break; 9395 case Intrinsic::x86_sse2_psrl_dq_bs: BuiltinName = "__builtin_ia32_psrldqi128_byteshift"; break; 9396 case Intrinsic::x86_sse2_psrl_q: BuiltinName = "__builtin_ia32_psrlq128"; break; 9397 case Intrinsic::x86_sse2_psrl_w: BuiltinName = "__builtin_ia32_psrlw128"; break; 9398 case Intrinsic::x86_sse2_psrli_d: BuiltinName = "__builtin_ia32_psrldi128"; break; 9399 case Intrinsic::x86_sse2_psrli_q: BuiltinName = "__builtin_ia32_psrlqi128"; break; 9400 case Intrinsic::x86_sse2_psrli_w: BuiltinName = "__builtin_ia32_psrlwi128"; break; 9401 case Intrinsic::x86_sse2_psubs_b: BuiltinName = "__builtin_ia32_psubsb128"; break; 9402 case Intrinsic::x86_sse2_psubs_w: BuiltinName = "__builtin_ia32_psubsw128"; break; 9403 case Intrinsic::x86_sse2_psubus_b: BuiltinName = "__builtin_ia32_psubusb128"; break; 9404 case Intrinsic::x86_sse2_psubus_w: BuiltinName = "__builtin_ia32_psubusw128"; break; 9405 case Intrinsic::x86_sse2_sqrt_pd: BuiltinName = "__builtin_ia32_sqrtpd"; break; 9406 case Intrinsic::x86_sse2_sqrt_sd: BuiltinName = "__builtin_ia32_sqrtsd"; break; 9407 case Intrinsic::x86_sse2_storel_dq: BuiltinName = "__builtin_ia32_storelv4si"; break; 9408 case Intrinsic::x86_sse2_storeu_dq: BuiltinName = "__builtin_ia32_storedqu"; break; 9409 case Intrinsic::x86_sse2_storeu_pd: BuiltinName = "__builtin_ia32_storeupd"; break; 9410 case Intrinsic::x86_sse2_sub_sd: BuiltinName = "__builtin_ia32_subsd"; break; 9411 case Intrinsic::x86_sse2_ucomieq_sd: BuiltinName = "__builtin_ia32_ucomisdeq"; break; 9412 case Intrinsic::x86_sse2_ucomige_sd: BuiltinName = "__builtin_ia32_ucomisdge"; break; 9413 case Intrinsic::x86_sse2_ucomigt_sd: BuiltinName = "__builtin_ia32_ucomisdgt"; break; 9414 case Intrinsic::x86_sse2_ucomile_sd: BuiltinName = "__builtin_ia32_ucomisdle"; break; 9415 case Intrinsic::x86_sse2_ucomilt_sd: BuiltinName = "__builtin_ia32_ucomisdlt"; break; 9416 case Intrinsic::x86_sse2_ucomineq_sd: BuiltinName = "__builtin_ia32_ucomisdneq"; break; 9417 case Intrinsic::x86_sse3_addsub_pd: BuiltinName = "__builtin_ia32_addsubpd"; break; 9418 case Intrinsic::x86_sse3_addsub_ps: BuiltinName = "__builtin_ia32_addsubps"; break; 9419 case Intrinsic::x86_sse3_hadd_pd: BuiltinName = "__builtin_ia32_haddpd"; break; 9420 case Intrinsic::x86_sse3_hadd_ps: BuiltinName = "__builtin_ia32_haddps"; break; 9421 case Intrinsic::x86_sse3_hsub_pd: BuiltinName = "__builtin_ia32_hsubpd"; break; 9422 case Intrinsic::x86_sse3_hsub_ps: BuiltinName = "__builtin_ia32_hsubps"; break; 9423 case Intrinsic::x86_sse3_ldu_dq: BuiltinName = "__builtin_ia32_lddqu"; break; 9424 case Intrinsic::x86_sse3_monitor: BuiltinName = "__builtin_ia32_monitor"; break; 9425 case Intrinsic::x86_sse3_mwait: BuiltinName = "__builtin_ia32_mwait"; break; 9426 case Intrinsic::x86_sse41_blendpd: BuiltinName = "__builtin_ia32_blendpd"; break; 9427 case Intrinsic::x86_sse41_blendps: BuiltinName = "__builtin_ia32_blendps"; break; 9428 case Intrinsic::x86_sse41_blendvpd: BuiltinName = "__builtin_ia32_blendvpd"; break; 9429 case Intrinsic::x86_sse41_blendvps: BuiltinName = "__builtin_ia32_blendvps"; break; 9430 case Intrinsic::x86_sse41_dppd: BuiltinName = "__builtin_ia32_dppd"; break; 9431 case Intrinsic::x86_sse41_dpps: BuiltinName = "__builtin_ia32_dpps"; break; 9432 case Intrinsic::x86_sse41_extractps: BuiltinName = "__builtin_ia32_extractps128"; break; 9433 case Intrinsic::x86_sse41_insertps: BuiltinName = "__builtin_ia32_insertps128"; break; 9434 case Intrinsic::x86_sse41_movntdqa: BuiltinName = "__builtin_ia32_movntdqa"; break; 9435 case Intrinsic::x86_sse41_mpsadbw: BuiltinName = "__builtin_ia32_mpsadbw128"; break; 9436 case Intrinsic::x86_sse41_packusdw: BuiltinName = "__builtin_ia32_packusdw128"; break; 9437 case Intrinsic::x86_sse41_pblendvb: BuiltinName = "__builtin_ia32_pblendvb128"; break; 9438 case Intrinsic::x86_sse41_pblendw: BuiltinName = "__builtin_ia32_pblendw128"; break; 9439 case Intrinsic::x86_sse41_pcmpeqq: BuiltinName = "__builtin_ia32_pcmpeqq"; break; 9440 case Intrinsic::x86_sse41_phminposuw: BuiltinName = "__builtin_ia32_phminposuw128"; break; 9441 case Intrinsic::x86_sse41_pmaxsb: BuiltinName = "__builtin_ia32_pmaxsb128"; break; 9442 case Intrinsic::x86_sse41_pmaxsd: BuiltinName = "__builtin_ia32_pmaxsd128"; break; 9443 case Intrinsic::x86_sse41_pmaxud: BuiltinName = "__builtin_ia32_pmaxud128"; break; 9444 case Intrinsic::x86_sse41_pmaxuw: BuiltinName = "__builtin_ia32_pmaxuw128"; break; 9445 case Intrinsic::x86_sse41_pminsb: BuiltinName = "__builtin_ia32_pminsb128"; break; 9446 case Intrinsic::x86_sse41_pminsd: BuiltinName = "__builtin_ia32_pminsd128"; break; 9447 case Intrinsic::x86_sse41_pminud: BuiltinName = "__builtin_ia32_pminud128"; break; 9448 case Intrinsic::x86_sse41_pminuw: BuiltinName = "__builtin_ia32_pminuw128"; break; 9449 case Intrinsic::x86_sse41_pmovsxbd: BuiltinName = "__builtin_ia32_pmovsxbd128"; break; 9450 case Intrinsic::x86_sse41_pmovsxbq: BuiltinName = "__builtin_ia32_pmovsxbq128"; break; 9451 case Intrinsic::x86_sse41_pmovsxbw: BuiltinName = "__builtin_ia32_pmovsxbw128"; break; 9452 case Intrinsic::x86_sse41_pmovsxdq: BuiltinName = "__builtin_ia32_pmovsxdq128"; break; 9453 case Intrinsic::x86_sse41_pmovsxwd: BuiltinName = "__builtin_ia32_pmovsxwd128"; break; 9454 case Intrinsic::x86_sse41_pmovsxwq: BuiltinName = "__builtin_ia32_pmovsxwq128"; break; 9455 case Intrinsic::x86_sse41_pmovzxbd: BuiltinName = "__builtin_ia32_pmovzxbd128"; break; 9456 case Intrinsic::x86_sse41_pmovzxbq: BuiltinName = "__builtin_ia32_pmovzxbq128"; break; 9457 case Intrinsic::x86_sse41_pmovzxbw: BuiltinName = "__builtin_ia32_pmovzxbw128"; break; 9458 case Intrinsic::x86_sse41_pmovzxdq: BuiltinName = "__builtin_ia32_pmovzxdq128"; break; 9459 case Intrinsic::x86_sse41_pmovzxwd: BuiltinName = "__builtin_ia32_pmovzxwd128"; break; 9460 case Intrinsic::x86_sse41_pmovzxwq: BuiltinName = "__builtin_ia32_pmovzxwq128"; break; 9461 case Intrinsic::x86_sse41_pmuldq: BuiltinName = "__builtin_ia32_pmuldq128"; break; 9462 case Intrinsic::x86_sse41_ptestc: BuiltinName = "__builtin_ia32_ptestc128"; break; 9463 case Intrinsic::x86_sse41_ptestnzc: BuiltinName = "__builtin_ia32_ptestnzc128"; break; 9464 case Intrinsic::x86_sse41_ptestz: BuiltinName = "__builtin_ia32_ptestz128"; break; 9465 case Intrinsic::x86_sse41_round_pd: BuiltinName = "__builtin_ia32_roundpd"; break; 9466 case Intrinsic::x86_sse41_round_ps: BuiltinName = "__builtin_ia32_roundps"; break; 9467 case Intrinsic::x86_sse41_round_sd: BuiltinName = "__builtin_ia32_roundsd"; break; 9468 case Intrinsic::x86_sse41_round_ss: BuiltinName = "__builtin_ia32_roundss"; break; 9469 case Intrinsic::x86_sse42_crc32_32_16: BuiltinName = "__builtin_ia32_crc32hi"; break; 9470 case Intrinsic::x86_sse42_crc32_32_32: BuiltinName = "__builtin_ia32_crc32si"; break; 9471 case Intrinsic::x86_sse42_crc32_32_8: BuiltinName = "__builtin_ia32_crc32qi"; break; 9472 case Intrinsic::x86_sse42_crc32_64_64: BuiltinName = "__builtin_ia32_crc32di"; break; 9473 case Intrinsic::x86_sse42_pcmpestri128: BuiltinName = "__builtin_ia32_pcmpestri128"; break; 9474 case Intrinsic::x86_sse42_pcmpestria128: BuiltinName = "__builtin_ia32_pcmpestria128"; break; 9475 case Intrinsic::x86_sse42_pcmpestric128: BuiltinName = "__builtin_ia32_pcmpestric128"; break; 9476 case Intrinsic::x86_sse42_pcmpestrio128: BuiltinName = "__builtin_ia32_pcmpestrio128"; break; 9477 case Intrinsic::x86_sse42_pcmpestris128: BuiltinName = "__builtin_ia32_pcmpestris128"; break; 9478 case Intrinsic::x86_sse42_pcmpestriz128: BuiltinName = "__builtin_ia32_pcmpestriz128"; break; 9479 case Intrinsic::x86_sse42_pcmpestrm128: BuiltinName = "__builtin_ia32_pcmpestrm128"; break; 9480 case Intrinsic::x86_sse42_pcmpgtq: BuiltinName = "__builtin_ia32_pcmpgtq"; break; 9481 case Intrinsic::x86_sse42_pcmpistri128: BuiltinName = "__builtin_ia32_pcmpistri128"; break; 9482 case Intrinsic::x86_sse42_pcmpistria128: BuiltinName = "__builtin_ia32_pcmpistria128"; break; 9483 case Intrinsic::x86_sse42_pcmpistric128: BuiltinName = "__builtin_ia32_pcmpistric128"; break; 9484 case Intrinsic::x86_sse42_pcmpistrio128: BuiltinName = "__builtin_ia32_pcmpistrio128"; break; 9485 case Intrinsic::x86_sse42_pcmpistris128: BuiltinName = "__builtin_ia32_pcmpistris128"; break; 9486 case Intrinsic::x86_sse42_pcmpistriz128: BuiltinName = "__builtin_ia32_pcmpistriz128"; break; 9487 case Intrinsic::x86_sse42_pcmpistrm128: BuiltinName = "__builtin_ia32_pcmpistrm128"; break; 9488 case Intrinsic::x86_sse_add_ss: BuiltinName = "__builtin_ia32_addss"; break; 9489 case Intrinsic::x86_sse_comieq_ss: BuiltinName = "__builtin_ia32_comieq"; break; 9490 case Intrinsic::x86_sse_comige_ss: BuiltinName = "__builtin_ia32_comige"; break; 9491 case Intrinsic::x86_sse_comigt_ss: BuiltinName = "__builtin_ia32_comigt"; break; 9492 case Intrinsic::x86_sse_comile_ss: BuiltinName = "__builtin_ia32_comile"; break; 9493 case Intrinsic::x86_sse_comilt_ss: BuiltinName = "__builtin_ia32_comilt"; break; 9494 case Intrinsic::x86_sse_comineq_ss: BuiltinName = "__builtin_ia32_comineq"; break; 9495 case Intrinsic::x86_sse_cvtpd2pi: BuiltinName = "__builtin_ia32_cvtpd2pi"; break; 9496 case Intrinsic::x86_sse_cvtpi2pd: BuiltinName = "__builtin_ia32_cvtpi2pd"; break; 9497 case Intrinsic::x86_sse_cvtpi2ps: BuiltinName = "__builtin_ia32_cvtpi2ps"; break; 9498 case Intrinsic::x86_sse_cvtps2pi: BuiltinName = "__builtin_ia32_cvtps2pi"; break; 9499 case Intrinsic::x86_sse_cvtsi2ss: BuiltinName = "__builtin_ia32_cvtsi2ss"; break; 9500 case Intrinsic::x86_sse_cvtsi642ss: BuiltinName = "__builtin_ia32_cvtsi642ss"; break; 9501 case Intrinsic::x86_sse_cvtss2si: BuiltinName = "__builtin_ia32_cvtss2si"; break; 9502 case Intrinsic::x86_sse_cvtss2si64: BuiltinName = "__builtin_ia32_cvtss2si64"; break; 9503 case Intrinsic::x86_sse_cvttpd2pi: BuiltinName = "__builtin_ia32_cvttpd2pi"; break; 9504 case Intrinsic::x86_sse_cvttps2pi: BuiltinName = "__builtin_ia32_cvttps2pi"; break; 9505 case Intrinsic::x86_sse_cvttss2si: BuiltinName = "__builtin_ia32_cvttss2si"; break; 9506 case Intrinsic::x86_sse_cvttss2si64: BuiltinName = "__builtin_ia32_cvttss2si64"; break; 9507 case Intrinsic::x86_sse_div_ss: BuiltinName = "__builtin_ia32_divss"; break; 9508 case Intrinsic::x86_sse_max_ps: BuiltinName = "__builtin_ia32_maxps"; break; 9509 case Intrinsic::x86_sse_max_ss: BuiltinName = "__builtin_ia32_maxss"; break; 9510 case Intrinsic::x86_sse_min_ps: BuiltinName = "__builtin_ia32_minps"; break; 9511 case Intrinsic::x86_sse_min_ss: BuiltinName = "__builtin_ia32_minss"; break; 9512 case Intrinsic::x86_sse_movmsk_ps: BuiltinName = "__builtin_ia32_movmskps"; break; 9513 case Intrinsic::x86_sse_mul_ss: BuiltinName = "__builtin_ia32_mulss"; break; 9514 case Intrinsic::x86_sse_pshuf_w: BuiltinName = "__builtin_ia32_pshufw"; break; 9515 case Intrinsic::x86_sse_rcp_ps: BuiltinName = "__builtin_ia32_rcpps"; break; 9516 case Intrinsic::x86_sse_rcp_ss: BuiltinName = "__builtin_ia32_rcpss"; break; 9517 case Intrinsic::x86_sse_rsqrt_ps: BuiltinName = "__builtin_ia32_rsqrtps"; break; 9518 case Intrinsic::x86_sse_rsqrt_ss: BuiltinName = "__builtin_ia32_rsqrtss"; break; 9519 case Intrinsic::x86_sse_sfence: BuiltinName = "__builtin_ia32_sfence"; break; 9520 case Intrinsic::x86_sse_sqrt_ps: BuiltinName = "__builtin_ia32_sqrtps"; break; 9521 case Intrinsic::x86_sse_sqrt_ss: BuiltinName = "__builtin_ia32_sqrtss"; break; 9522 case Intrinsic::x86_sse_storeu_ps: BuiltinName = "__builtin_ia32_storeups"; break; 9523 case Intrinsic::x86_sse_sub_ss: BuiltinName = "__builtin_ia32_subss"; break; 9524 case Intrinsic::x86_sse_ucomieq_ss: BuiltinName = "__builtin_ia32_ucomieq"; break; 9525 case Intrinsic::x86_sse_ucomige_ss: BuiltinName = "__builtin_ia32_ucomige"; break; 9526 case Intrinsic::x86_sse_ucomigt_ss: BuiltinName = "__builtin_ia32_ucomigt"; break; 9527 case Intrinsic::x86_sse_ucomile_ss: BuiltinName = "__builtin_ia32_ucomile"; break; 9528 case Intrinsic::x86_sse_ucomilt_ss: BuiltinName = "__builtin_ia32_ucomilt"; break; 9529 case Intrinsic::x86_sse_ucomineq_ss: BuiltinName = "__builtin_ia32_ucomineq"; break; 9530 case Intrinsic::x86_ssse3_pabs_b: BuiltinName = "__builtin_ia32_pabsb"; break; 9531 case Intrinsic::x86_ssse3_pabs_b_128: BuiltinName = "__builtin_ia32_pabsb128"; break; 9532 case Intrinsic::x86_ssse3_pabs_d: BuiltinName = "__builtin_ia32_pabsd"; break; 9533 case Intrinsic::x86_ssse3_pabs_d_128: BuiltinName = "__builtin_ia32_pabsd128"; break; 9534 case Intrinsic::x86_ssse3_pabs_w: BuiltinName = "__builtin_ia32_pabsw"; break; 9535 case Intrinsic::x86_ssse3_pabs_w_128: BuiltinName = "__builtin_ia32_pabsw128"; break; 9536 case Intrinsic::x86_ssse3_phadd_d: BuiltinName = "__builtin_ia32_phaddd"; break; 9537 case Intrinsic::x86_ssse3_phadd_d_128: BuiltinName = "__builtin_ia32_phaddd128"; break; 9538 case Intrinsic::x86_ssse3_phadd_sw: BuiltinName = "__builtin_ia32_phaddsw"; break; 9539 case Intrinsic::x86_ssse3_phadd_sw_128: BuiltinName = "__builtin_ia32_phaddsw128"; break; 9540 case Intrinsic::x86_ssse3_phadd_w: BuiltinName = "__builtin_ia32_phaddw"; break; 9541 case Intrinsic::x86_ssse3_phadd_w_128: BuiltinName = "__builtin_ia32_phaddw128"; break; 9542 case Intrinsic::x86_ssse3_phsub_d: BuiltinName = "__builtin_ia32_phsubd"; break; 9543 case Intrinsic::x86_ssse3_phsub_d_128: BuiltinName = "__builtin_ia32_phsubd128"; break; 9544 case Intrinsic::x86_ssse3_phsub_sw: BuiltinName = "__builtin_ia32_phsubsw"; break; 9545 case Intrinsic::x86_ssse3_phsub_sw_128: BuiltinName = "__builtin_ia32_phsubsw128"; break; 9546 case Intrinsic::x86_ssse3_phsub_w: BuiltinName = "__builtin_ia32_phsubw"; break; 9547 case Intrinsic::x86_ssse3_phsub_w_128: BuiltinName = "__builtin_ia32_phsubw128"; break; 9548 case Intrinsic::x86_ssse3_pmadd_ub_sw: BuiltinName = "__builtin_ia32_pmaddubsw"; break; 9549 case Intrinsic::x86_ssse3_pmadd_ub_sw_128: BuiltinName = "__builtin_ia32_pmaddubsw128"; break; 9550 case Intrinsic::x86_ssse3_pmul_hr_sw: BuiltinName = "__builtin_ia32_pmulhrsw"; break; 9551 case Intrinsic::x86_ssse3_pmul_hr_sw_128: BuiltinName = "__builtin_ia32_pmulhrsw128"; break; 9552 case Intrinsic::x86_ssse3_pshuf_b: BuiltinName = "__builtin_ia32_pshufb"; break; 9553 case Intrinsic::x86_ssse3_pshuf_b_128: BuiltinName = "__builtin_ia32_pshufb128"; break; 9554 case Intrinsic::x86_ssse3_psign_b: BuiltinName = "__builtin_ia32_psignb"; break; 9555 case Intrinsic::x86_ssse3_psign_b_128: BuiltinName = "__builtin_ia32_psignb128"; break; 9556 case Intrinsic::x86_ssse3_psign_d: BuiltinName = "__builtin_ia32_psignd"; break; 9557 case Intrinsic::x86_ssse3_psign_d_128: BuiltinName = "__builtin_ia32_psignd128"; break; 9558 case Intrinsic::x86_ssse3_psign_w: BuiltinName = "__builtin_ia32_psignw"; break; 9559 case Intrinsic::x86_ssse3_psign_w_128: BuiltinName = "__builtin_ia32_psignw128"; break; 9560 } 9561 #endif 9562 9563 // Get the LLVM intrinsic that corresponds to a GCC builtin. 9564 // This is used by the C front-end. The GCC builtin name is passed 9565 // in as BuiltinName, and a target prefix (e.g. 'ppc') is passed 9566 // in as TargetPrefix. The result is assigned to 'IntrinsicID'. 9567 #ifdef GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN 9568 Intrinsic::ID Intrinsic::getIntrinsicForGCCBuiltin(const char *TargetPrefixStr, const char *BuiltinNameStr) { 9569 StringRef BuiltinName(BuiltinNameStr); 9570 StringRef TargetPrefix(TargetPrefixStr); 9571 9572 /* Target Independent Builtins */ { 9573 switch (BuiltinName.size()) { 9574 default: break; 9575 case 14: // 3 strings to match. 9576 if (BuiltinName.substr(0, 2) != "__") 9577 break; 9578 switch (BuiltinName[2]) { 9579 default: break; 9580 case 'b': // 1 string to match. 9581 if (BuiltinName.substr(3, 11) != "uiltin_trap") 9582 break; 9583 return Intrinsic::trap; // "__builtin_trap" 9584 case 'g': // 2 strings to match. 9585 if (BuiltinName.substr(3, 3) != "nu_") 9586 break; 9587 switch (BuiltinName[6]) { 9588 default: break; 9589 case 'f': // 1 string to match. 9590 if (BuiltinName.substr(7, 7) != "2h_ieee") 9591 break; 9592 return Intrinsic::convert_to_fp16; // "__gnu_f2h_ieee" 9593 case 'h': // 1 string to match. 9594 if (BuiltinName.substr(7, 7) != "2f_ieee") 9595 break; 9596 return Intrinsic::convert_from_fp16; // "__gnu_h2f_ieee" 9597 } 9598 break; 9599 } 9600 break; 9601 case 20: // 2 strings to match. 9602 if (BuiltinName.substr(0, 10) != "__builtin_") 9603 break; 9604 switch (BuiltinName[10]) { 9605 default: break; 9606 case 'f': // 1 string to match. 9607 if (BuiltinName.substr(11, 9) != "lt_rounds") 9608 break; 9609 return Intrinsic::flt_rounds; // "__builtin_flt_rounds" 9610 case 's': // 1 string to match. 9611 if (BuiltinName.substr(11, 9) != "tack_save") 9612 break; 9613 return Intrinsic::stacksave; // "__builtin_stack_save" 9614 } 9615 break; 9616 case 21: // 2 strings to match. 9617 if (BuiltinName.substr(0, 10) != "__builtin_") 9618 break; 9619 switch (BuiltinName[10]) { 9620 default: break; 9621 case 'o': // 1 string to match. 9622 if (BuiltinName.substr(11, 10) != "bject_size") 9623 break; 9624 return Intrinsic::objectsize; // "__builtin_object_size" 9625 case 'u': // 1 string to match. 9626 if (BuiltinName.substr(11, 10) != "nwind_init") 9627 break; 9628 return Intrinsic::eh_unwind_init; // "__builtin_unwind_init" 9629 } 9630 break; 9631 case 23: // 1 string to match. 9632 if (BuiltinName.substr(0, 23) != "__builtin_stack_restore") 9633 break; 9634 return Intrinsic::stackrestore; // "__builtin_stack_restore" 9635 case 25: // 1 string to match. 9636 if (BuiltinName.substr(0, 25) != "__builtin_init_trampoline") 9637 break; 9638 return Intrinsic::init_trampoline; // "__builtin_init_trampoline" 9639 case 27: // 1 string to match. 9640 if (BuiltinName.substr(0, 27) != "__builtin_adjust_trampoline") 9641 break; 9642 return Intrinsic::adjust_trampoline; // "__builtin_adjust_trampoline" 9643 } 9644 } 9645 if (TargetPrefix == "x86") { 9646 switch (BuiltinName.size()) { 9647 default: break; 9648 case 18: // 1 string to match. 9649 if (BuiltinName.substr(0, 18) != "__builtin_ia32_por") 9650 break; 9651 return Intrinsic::x86_mmx_por; // "__builtin_ia32_por" 9652 case 19: // 5 strings to match. 9653 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 9654 break; 9655 switch (BuiltinName[15]) { 9656 default: break; 9657 case 'd': // 2 strings to match. 9658 if (BuiltinName.substr(16, 2) != "pp") 9659 break; 9660 switch (BuiltinName[18]) { 9661 default: break; 9662 case 'd': // 1 string to match. 9663 return Intrinsic::x86_sse41_dppd; // "__builtin_ia32_dppd" 9664 case 's': // 1 string to match. 9665 return Intrinsic::x86_sse41_dpps; // "__builtin_ia32_dpps" 9666 } 9667 break; 9668 case 'e': // 1 string to match. 9669 if (BuiltinName.substr(16, 3) != "mms") 9670 break; 9671 return Intrinsic::x86_mmx_emms; // "__builtin_ia32_emms" 9672 case 'p': // 2 strings to match. 9673 switch (BuiltinName[16]) { 9674 default: break; 9675 case 'a': // 1 string to match. 9676 if (BuiltinName.substr(17, 2) != "nd") 9677 break; 9678 return Intrinsic::x86_mmx_pand; // "__builtin_ia32_pand" 9679 case 'x': // 1 string to match. 9680 if (BuiltinName.substr(17, 2) != "or") 9681 break; 9682 return Intrinsic::x86_mmx_pxor; // "__builtin_ia32_pxor" 9683 } 9684 break; 9685 } 9686 break; 9687 case 20: // 54 strings to match. 9688 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 9689 break; 9690 switch (BuiltinName[15]) { 9691 default: break; 9692 case 'a': // 2 strings to match. 9693 if (BuiltinName.substr(16, 3) != "dds") 9694 break; 9695 switch (BuiltinName[19]) { 9696 default: break; 9697 case 'd': // 1 string to match. 9698 return Intrinsic::x86_sse2_add_sd; // "__builtin_ia32_addsd" 9699 case 's': // 1 string to match. 9700 return Intrinsic::x86_sse_add_ss; // "__builtin_ia32_addss" 9701 } 9702 break; 9703 case 'd': // 2 strings to match. 9704 if (BuiltinName.substr(16, 3) != "ivs") 9705 break; 9706 switch (BuiltinName[19]) { 9707 default: break; 9708 case 'd': // 1 string to match. 9709 return Intrinsic::x86_sse2_div_sd; // "__builtin_ia32_divsd" 9710 case 's': // 1 string to match. 9711 return Intrinsic::x86_sse_div_ss; // "__builtin_ia32_divss" 9712 } 9713 break; 9714 case 'f': // 1 string to match. 9715 if (BuiltinName.substr(16, 4) != "emms") 9716 break; 9717 return Intrinsic::x86_mmx_femms; // "__builtin_ia32_femms" 9718 case 'l': // 1 string to match. 9719 if (BuiltinName.substr(16, 4) != "ddqu") 9720 break; 9721 return Intrinsic::x86_sse3_ldu_dq; // "__builtin_ia32_lddqu" 9722 case 'm': // 11 strings to match. 9723 switch (BuiltinName[16]) { 9724 default: break; 9725 case 'a': // 4 strings to match. 9726 if (BuiltinName[17] != 'x') 9727 break; 9728 switch (BuiltinName[18]) { 9729 default: break; 9730 case 'p': // 2 strings to match. 9731 switch (BuiltinName[19]) { 9732 default: break; 9733 case 'd': // 1 string to match. 9734 return Intrinsic::x86_sse2_max_pd; // "__builtin_ia32_maxpd" 9735 case 's': // 1 string to match. 9736 return Intrinsic::x86_sse_max_ps; // "__builtin_ia32_maxps" 9737 } 9738 break; 9739 case 's': // 2 strings to match. 9740 switch (BuiltinName[19]) { 9741 default: break; 9742 case 'd': // 1 string to match. 9743 return Intrinsic::x86_sse2_max_sd; // "__builtin_ia32_maxsd" 9744 case 's': // 1 string to match. 9745 return Intrinsic::x86_sse_max_ss; // "__builtin_ia32_maxss" 9746 } 9747 break; 9748 } 9749 break; 9750 case 'i': // 4 strings to match. 9751 if (BuiltinName[17] != 'n') 9752 break; 9753 switch (BuiltinName[18]) { 9754 default: break; 9755 case 'p': // 2 strings to match. 9756 switch (BuiltinName[19]) { 9757 default: break; 9758 case 'd': // 1 string to match. 9759 return Intrinsic::x86_sse2_min_pd; // "__builtin_ia32_minpd" 9760 case 's': // 1 string to match. 9761 return Intrinsic::x86_sse_min_ps; // "__builtin_ia32_minps" 9762 } 9763 break; 9764 case 's': // 2 strings to match. 9765 switch (BuiltinName[19]) { 9766 default: break; 9767 case 'd': // 1 string to match. 9768 return Intrinsic::x86_sse2_min_sd; // "__builtin_ia32_minsd" 9769 case 's': // 1 string to match. 9770 return Intrinsic::x86_sse_min_ss; // "__builtin_ia32_minss" 9771 } 9772 break; 9773 } 9774 break; 9775 case 'u': // 2 strings to match. 9776 if (BuiltinName.substr(17, 2) != "ls") 9777 break; 9778 switch (BuiltinName[19]) { 9779 default: break; 9780 case 'd': // 1 string to match. 9781 return Intrinsic::x86_sse2_mul_sd; // "__builtin_ia32_mulsd" 9782 case 's': // 1 string to match. 9783 return Intrinsic::x86_sse_mul_ss; // "__builtin_ia32_mulss" 9784 } 9785 break; 9786 case 'w': // 1 string to match. 9787 if (BuiltinName.substr(17, 3) != "ait") 9788 break; 9789 return Intrinsic::x86_sse3_mwait; // "__builtin_ia32_mwait" 9790 } 9791 break; 9792 case 'p': // 33 strings to match. 9793 switch (BuiltinName[16]) { 9794 default: break; 9795 case 'a': // 10 strings to match. 9796 switch (BuiltinName[17]) { 9797 default: break; 9798 case 'b': // 3 strings to match. 9799 if (BuiltinName[18] != 's') 9800 break; 9801 switch (BuiltinName[19]) { 9802 default: break; 9803 case 'b': // 1 string to match. 9804 return Intrinsic::x86_ssse3_pabs_b; // "__builtin_ia32_pabsb" 9805 case 'd': // 1 string to match. 9806 return Intrinsic::x86_ssse3_pabs_d; // "__builtin_ia32_pabsd" 9807 case 'w': // 1 string to match. 9808 return Intrinsic::x86_ssse3_pabs_w; // "__builtin_ia32_pabsw" 9809 } 9810 break; 9811 case 'd': // 4 strings to match. 9812 if (BuiltinName[18] != 'd') 9813 break; 9814 switch (BuiltinName[19]) { 9815 default: break; 9816 case 'b': // 1 string to match. 9817 return Intrinsic::x86_mmx_padd_b; // "__builtin_ia32_paddb" 9818 case 'd': // 1 string to match. 9819 return Intrinsic::x86_mmx_padd_d; // "__builtin_ia32_paddd" 9820 case 'q': // 1 string to match. 9821 return Intrinsic::x86_mmx_padd_q; // "__builtin_ia32_paddq" 9822 case 'w': // 1 string to match. 9823 return Intrinsic::x86_mmx_padd_w; // "__builtin_ia32_paddw" 9824 } 9825 break; 9826 case 'n': // 1 string to match. 9827 if (BuiltinName.substr(18, 2) != "dn") 9828 break; 9829 return Intrinsic::x86_mmx_pandn; // "__builtin_ia32_pandn" 9830 case 'v': // 2 strings to match. 9831 if (BuiltinName[18] != 'g') 9832 break; 9833 switch (BuiltinName[19]) { 9834 default: break; 9835 case 'b': // 1 string to match. 9836 return Intrinsic::x86_mmx_pavg_b; // "__builtin_ia32_pavgb" 9837 case 'w': // 1 string to match. 9838 return Intrinsic::x86_mmx_pavg_w; // "__builtin_ia32_pavgw" 9839 } 9840 break; 9841 } 9842 break; 9843 case 'f': // 9 strings to match. 9844 switch (BuiltinName[17]) { 9845 default: break; 9846 case '2': // 2 strings to match. 9847 if (BuiltinName[18] != 'i') 9848 break; 9849 switch (BuiltinName[19]) { 9850 default: break; 9851 case 'd': // 1 string to match. 9852 return Intrinsic::x86_3dnow_pf2id; // "__builtin_ia32_pf2id" 9853 case 'w': // 1 string to match. 9854 return Intrinsic::x86_3dnowa_pf2iw; // "__builtin_ia32_pf2iw" 9855 } 9856 break; 9857 case 'a': // 2 strings to match. 9858 switch (BuiltinName[18]) { 9859 default: break; 9860 case 'c': // 1 string to match. 9861 if (BuiltinName[19] != 'c') 9862 break; 9863 return Intrinsic::x86_3dnow_pfacc; // "__builtin_ia32_pfacc" 9864 case 'd': // 1 string to match. 9865 if (BuiltinName[19] != 'd') 9866 break; 9867 return Intrinsic::x86_3dnow_pfadd; // "__builtin_ia32_pfadd" 9868 } 9869 break; 9870 case 'm': // 3 strings to match. 9871 switch (BuiltinName[18]) { 9872 default: break; 9873 case 'a': // 1 string to match. 9874 if (BuiltinName[19] != 'x') 9875 break; 9876 return Intrinsic::x86_3dnow_pfmax; // "__builtin_ia32_pfmax" 9877 case 'i': // 1 string to match. 9878 if (BuiltinName[19] != 'n') 9879 break; 9880 return Intrinsic::x86_3dnow_pfmin; // "__builtin_ia32_pfmin" 9881 case 'u': // 1 string to match. 9882 if (BuiltinName[19] != 'l') 9883 break; 9884 return Intrinsic::x86_3dnow_pfmul; // "__builtin_ia32_pfmul" 9885 } 9886 break; 9887 case 'r': // 1 string to match. 9888 if (BuiltinName.substr(18, 2) != "cp") 9889 break; 9890 return Intrinsic::x86_3dnow_pfrcp; // "__builtin_ia32_pfrcp" 9891 case 's': // 1 string to match. 9892 if (BuiltinName.substr(18, 2) != "ub") 9893 break; 9894 return Intrinsic::x86_3dnow_pfsub; // "__builtin_ia32_pfsub" 9895 } 9896 break; 9897 case 'i': // 2 strings to match. 9898 if (BuiltinName.substr(17, 2) != "2f") 9899 break; 9900 switch (BuiltinName[19]) { 9901 default: break; 9902 case 'd': // 1 string to match. 9903 return Intrinsic::x86_3dnow_pi2fd; // "__builtin_ia32_pi2fd" 9904 case 'w': // 1 string to match. 9905 return Intrinsic::x86_3dnowa_pi2fw; // "__builtin_ia32_pi2fw" 9906 } 9907 break; 9908 case 's': // 12 strings to match. 9909 switch (BuiltinName[17]) { 9910 default: break; 9911 case 'l': // 3 strings to match. 9912 if (BuiltinName[18] != 'l') 9913 break; 9914 switch (BuiltinName[19]) { 9915 default: break; 9916 case 'd': // 1 string to match. 9917 return Intrinsic::x86_mmx_psll_d; // "__builtin_ia32_pslld" 9918 case 'q': // 1 string to match. 9919 return Intrinsic::x86_mmx_psll_q; // "__builtin_ia32_psllq" 9920 case 'w': // 1 string to match. 9921 return Intrinsic::x86_mmx_psll_w; // "__builtin_ia32_psllw" 9922 } 9923 break; 9924 case 'r': // 5 strings to match. 9925 switch (BuiltinName[18]) { 9926 default: break; 9927 case 'a': // 2 strings to match. 9928 switch (BuiltinName[19]) { 9929 default: break; 9930 case 'd': // 1 string to match. 9931 return Intrinsic::x86_mmx_psra_d; // "__builtin_ia32_psrad" 9932 case 'w': // 1 string to match. 9933 return Intrinsic::x86_mmx_psra_w; // "__builtin_ia32_psraw" 9934 } 9935 break; 9936 case 'l': // 3 strings to match. 9937 switch (BuiltinName[19]) { 9938 default: break; 9939 case 'd': // 1 string to match. 9940 return Intrinsic::x86_mmx_psrl_d; // "__builtin_ia32_psrld" 9941 case 'q': // 1 string to match. 9942 return Intrinsic::x86_mmx_psrl_q; // "__builtin_ia32_psrlq" 9943 case 'w': // 1 string to match. 9944 return Intrinsic::x86_mmx_psrl_w; // "__builtin_ia32_psrlw" 9945 } 9946 break; 9947 } 9948 break; 9949 case 'u': // 4 strings to match. 9950 if (BuiltinName[18] != 'b') 9951 break; 9952 switch (BuiltinName[19]) { 9953 default: break; 9954 case 'b': // 1 string to match. 9955 return Intrinsic::x86_mmx_psub_b; // "__builtin_ia32_psubb" 9956 case 'd': // 1 string to match. 9957 return Intrinsic::x86_mmx_psub_d; // "__builtin_ia32_psubd" 9958 case 'q': // 1 string to match. 9959 return Intrinsic::x86_mmx_psub_q; // "__builtin_ia32_psubq" 9960 case 'w': // 1 string to match. 9961 return Intrinsic::x86_mmx_psub_w; // "__builtin_ia32_psubw" 9962 } 9963 break; 9964 } 9965 break; 9966 } 9967 break; 9968 case 'r': // 2 strings to match. 9969 if (BuiltinName.substr(16, 2) != "cp") 9970 break; 9971 switch (BuiltinName[18]) { 9972 default: break; 9973 case 'p': // 1 string to match. 9974 if (BuiltinName[19] != 's') 9975 break; 9976 return Intrinsic::x86_sse_rcp_ps; // "__builtin_ia32_rcpps" 9977 case 's': // 1 string to match. 9978 if (BuiltinName[19] != 's') 9979 break; 9980 return Intrinsic::x86_sse_rcp_ss; // "__builtin_ia32_rcpss" 9981 } 9982 break; 9983 case 's': // 2 strings to match. 9984 if (BuiltinName.substr(16, 3) != "ubs") 9985 break; 9986 switch (BuiltinName[19]) { 9987 default: break; 9988 case 'd': // 1 string to match. 9989 return Intrinsic::x86_sse2_sub_sd; // "__builtin_ia32_subsd" 9990 case 's': // 1 string to match. 9991 return Intrinsic::x86_sse_sub_ss; // "__builtin_ia32_subss" 9992 } 9993 break; 9994 } 9995 break; 9996 case 21: // 47 strings to match. 9997 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 9998 break; 9999 switch (BuiltinName[15]) { 10000 default: break; 10001 case 'c': // 5 strings to match. 10002 if (BuiltinName.substr(16, 3) != "omi") 10003 break; 10004 switch (BuiltinName[19]) { 10005 default: break; 10006 case 'e': // 1 string to match. 10007 if (BuiltinName[20] != 'q') 10008 break; 10009 return Intrinsic::x86_sse_comieq_ss; // "__builtin_ia32_comieq" 10010 case 'g': // 2 strings to match. 10011 switch (BuiltinName[20]) { 10012 default: break; 10013 case 'e': // 1 string to match. 10014 return Intrinsic::x86_sse_comige_ss; // "__builtin_ia32_comige" 10015 case 't': // 1 string to match. 10016 return Intrinsic::x86_sse_comigt_ss; // "__builtin_ia32_comigt" 10017 } 10018 break; 10019 case 'l': // 2 strings to match. 10020 switch (BuiltinName[20]) { 10021 default: break; 10022 case 'e': // 1 string to match. 10023 return Intrinsic::x86_sse_comile_ss; // "__builtin_ia32_comile" 10024 case 't': // 1 string to match. 10025 return Intrinsic::x86_sse_comilt_ss; // "__builtin_ia32_comilt" 10026 } 10027 break; 10028 } 10029 break; 10030 case 'h': // 4 strings to match. 10031 switch (BuiltinName[16]) { 10032 default: break; 10033 case 'a': // 2 strings to match. 10034 if (BuiltinName.substr(17, 3) != "ddp") 10035 break; 10036 switch (BuiltinName[20]) { 10037 default: break; 10038 case 'd': // 1 string to match. 10039 return Intrinsic::x86_sse3_hadd_pd; // "__builtin_ia32_haddpd" 10040 case 's': // 1 string to match. 10041 return Intrinsic::x86_sse3_hadd_ps; // "__builtin_ia32_haddps" 10042 } 10043 break; 10044 case 's': // 2 strings to match. 10045 if (BuiltinName.substr(17, 3) != "ubp") 10046 break; 10047 switch (BuiltinName[20]) { 10048 default: break; 10049 case 'd': // 1 string to match. 10050 return Intrinsic::x86_sse3_hsub_pd; // "__builtin_ia32_hsubpd" 10051 case 's': // 1 string to match. 10052 return Intrinsic::x86_sse3_hsub_ps; // "__builtin_ia32_hsubps" 10053 } 10054 break; 10055 } 10056 break; 10057 case 'l': // 1 string to match. 10058 if (BuiltinName.substr(16, 5) != "fence") 10059 break; 10060 return Intrinsic::x86_sse2_lfence; // "__builtin_ia32_lfence" 10061 case 'm': // 2 strings to match. 10062 switch (BuiltinName[16]) { 10063 default: break; 10064 case 'f': // 1 string to match. 10065 if (BuiltinName.substr(17, 4) != "ence") 10066 break; 10067 return Intrinsic::x86_sse2_mfence; // "__builtin_ia32_mfence" 10068 case 'o': // 1 string to match. 10069 if (BuiltinName.substr(17, 4) != "vntq") 10070 break; 10071 return Intrinsic::x86_mmx_movnt_dq; // "__builtin_ia32_movntq" 10072 } 10073 break; 10074 case 'p': // 30 strings to match. 10075 switch (BuiltinName[16]) { 10076 default: break; 10077 case 'a': // 2 strings to match. 10078 if (BuiltinName.substr(17, 3) != "dds") 10079 break; 10080 switch (BuiltinName[20]) { 10081 default: break; 10082 case 'b': // 1 string to match. 10083 return Intrinsic::x86_mmx_padds_b; // "__builtin_ia32_paddsb" 10084 case 'w': // 1 string to match. 10085 return Intrinsic::x86_mmx_padds_w; // "__builtin_ia32_paddsw" 10086 } 10087 break; 10088 case 'f': // 2 strings to match. 10089 switch (BuiltinName[17]) { 10090 default: break; 10091 case 'n': // 1 string to match. 10092 if (BuiltinName.substr(18, 3) != "acc") 10093 break; 10094 return Intrinsic::x86_3dnowa_pfnacc; // "__builtin_ia32_pfnacc" 10095 case 's': // 1 string to match. 10096 if (BuiltinName.substr(18, 3) != "ubr") 10097 break; 10098 return Intrinsic::x86_3dnow_pfsubr; // "__builtin_ia32_pfsubr" 10099 } 10100 break; 10101 case 'h': // 4 strings to match. 10102 switch (BuiltinName[17]) { 10103 default: break; 10104 case 'a': // 2 strings to match. 10105 if (BuiltinName.substr(18, 2) != "dd") 10106 break; 10107 switch (BuiltinName[20]) { 10108 default: break; 10109 case 'd': // 1 string to match. 10110 return Intrinsic::x86_ssse3_phadd_d; // "__builtin_ia32_phaddd" 10111 case 'w': // 1 string to match. 10112 return Intrinsic::x86_ssse3_phadd_w; // "__builtin_ia32_phaddw" 10113 } 10114 break; 10115 case 's': // 2 strings to match. 10116 if (BuiltinName.substr(18, 2) != "ub") 10117 break; 10118 switch (BuiltinName[20]) { 10119 default: break; 10120 case 'd': // 1 string to match. 10121 return Intrinsic::x86_ssse3_phsub_d; // "__builtin_ia32_phsubd" 10122 case 'w': // 1 string to match. 10123 return Intrinsic::x86_ssse3_phsub_w; // "__builtin_ia32_phsubw" 10124 } 10125 break; 10126 } 10127 break; 10128 case 'm': // 6 strings to match. 10129 switch (BuiltinName[17]) { 10130 default: break; 10131 case 'a': // 2 strings to match. 10132 if (BuiltinName[18] != 'x') 10133 break; 10134 switch (BuiltinName[19]) { 10135 default: break; 10136 case 's': // 1 string to match. 10137 if (BuiltinName[20] != 'w') 10138 break; 10139 return Intrinsic::x86_mmx_pmaxs_w; // "__builtin_ia32_pmaxsw" 10140 case 'u': // 1 string to match. 10141 if (BuiltinName[20] != 'b') 10142 break; 10143 return Intrinsic::x86_mmx_pmaxu_b; // "__builtin_ia32_pmaxub" 10144 } 10145 break; 10146 case 'i': // 2 strings to match. 10147 if (BuiltinName[18] != 'n') 10148 break; 10149 switch (BuiltinName[19]) { 10150 default: break; 10151 case 's': // 1 string to match. 10152 if (BuiltinName[20] != 'w') 10153 break; 10154 return Intrinsic::x86_mmx_pmins_w; // "__builtin_ia32_pminsw" 10155 case 'u': // 1 string to match. 10156 if (BuiltinName[20] != 'b') 10157 break; 10158 return Intrinsic::x86_mmx_pminu_b; // "__builtin_ia32_pminub" 10159 } 10160 break; 10161 case 'u': // 2 strings to match. 10162 if (BuiltinName[18] != 'l') 10163 break; 10164 switch (BuiltinName[19]) { 10165 default: break; 10166 case 'h': // 1 string to match. 10167 if (BuiltinName[20] != 'w') 10168 break; 10169 return Intrinsic::x86_mmx_pmulh_w; // "__builtin_ia32_pmulhw" 10170 case 'l': // 1 string to match. 10171 if (BuiltinName[20] != 'w') 10172 break; 10173 return Intrinsic::x86_mmx_pmull_w; // "__builtin_ia32_pmullw" 10174 } 10175 break; 10176 } 10177 break; 10178 case 's': // 16 strings to match. 10179 switch (BuiltinName[17]) { 10180 default: break; 10181 case 'a': // 1 string to match. 10182 if (BuiltinName.substr(18, 3) != "dbw") 10183 break; 10184 return Intrinsic::x86_mmx_psad_bw; // "__builtin_ia32_psadbw" 10185 case 'h': // 2 strings to match. 10186 if (BuiltinName.substr(18, 2) != "uf") 10187 break; 10188 switch (BuiltinName[20]) { 10189 default: break; 10190 case 'b': // 1 string to match. 10191 return Intrinsic::x86_ssse3_pshuf_b; // "__builtin_ia32_pshufb" 10192 case 'w': // 1 string to match. 10193 return Intrinsic::x86_sse_pshuf_w; // "__builtin_ia32_pshufw" 10194 } 10195 break; 10196 case 'i': // 3 strings to match. 10197 if (BuiltinName.substr(18, 2) != "gn") 10198 break; 10199 switch (BuiltinName[20]) { 10200 default: break; 10201 case 'b': // 1 string to match. 10202 return Intrinsic::x86_ssse3_psign_b; // "__builtin_ia32_psignb" 10203 case 'd': // 1 string to match. 10204 return Intrinsic::x86_ssse3_psign_d; // "__builtin_ia32_psignd" 10205 case 'w': // 1 string to match. 10206 return Intrinsic::x86_ssse3_psign_w; // "__builtin_ia32_psignw" 10207 } 10208 break; 10209 case 'l': // 3 strings to match. 10210 if (BuiltinName[18] != 'l') 10211 break; 10212 switch (BuiltinName[19]) { 10213 default: break; 10214 case 'd': // 1 string to match. 10215 if (BuiltinName[20] != 'i') 10216 break; 10217 return Intrinsic::x86_mmx_pslli_d; // "__builtin_ia32_pslldi" 10218 case 'q': // 1 string to match. 10219 if (BuiltinName[20] != 'i') 10220 break; 10221 return Intrinsic::x86_mmx_pslli_q; // "__builtin_ia32_psllqi" 10222 case 'w': // 1 string to match. 10223 if (BuiltinName[20] != 'i') 10224 break; 10225 return Intrinsic::x86_mmx_pslli_w; // "__builtin_ia32_psllwi" 10226 } 10227 break; 10228 case 'r': // 5 strings to match. 10229 switch (BuiltinName[18]) { 10230 default: break; 10231 case 'a': // 2 strings to match. 10232 switch (BuiltinName[19]) { 10233 default: break; 10234 case 'd': // 1 string to match. 10235 if (BuiltinName[20] != 'i') 10236 break; 10237 return Intrinsic::x86_mmx_psrai_d; // "__builtin_ia32_psradi" 10238 case 'w': // 1 string to match. 10239 if (BuiltinName[20] != 'i') 10240 break; 10241 return Intrinsic::x86_mmx_psrai_w; // "__builtin_ia32_psrawi" 10242 } 10243 break; 10244 case 'l': // 3 strings to match. 10245 switch (BuiltinName[19]) { 10246 default: break; 10247 case 'd': // 1 string to match. 10248 if (BuiltinName[20] != 'i') 10249 break; 10250 return Intrinsic::x86_mmx_psrli_d; // "__builtin_ia32_psrldi" 10251 case 'q': // 1 string to match. 10252 if (BuiltinName[20] != 'i') 10253 break; 10254 return Intrinsic::x86_mmx_psrli_q; // "__builtin_ia32_psrlqi" 10255 case 'w': // 1 string to match. 10256 if (BuiltinName[20] != 'i') 10257 break; 10258 return Intrinsic::x86_mmx_psrli_w; // "__builtin_ia32_psrlwi" 10259 } 10260 break; 10261 } 10262 break; 10263 case 'u': // 2 strings to match. 10264 if (BuiltinName.substr(18, 2) != "bs") 10265 break; 10266 switch (BuiltinName[20]) { 10267 default: break; 10268 case 'b': // 1 string to match. 10269 return Intrinsic::x86_mmx_psubs_b; // "__builtin_ia32_psubsb" 10270 case 'w': // 1 string to match. 10271 return Intrinsic::x86_mmx_psubs_w; // "__builtin_ia32_psubsw" 10272 } 10273 break; 10274 } 10275 break; 10276 } 10277 break; 10278 case 's': // 5 strings to match. 10279 switch (BuiltinName[16]) { 10280 default: break; 10281 case 'f': // 1 string to match. 10282 if (BuiltinName.substr(17, 4) != "ence") 10283 break; 10284 return Intrinsic::x86_sse_sfence; // "__builtin_ia32_sfence" 10285 case 'q': // 4 strings to match. 10286 if (BuiltinName.substr(17, 2) != "rt") 10287 break; 10288 switch (BuiltinName[19]) { 10289 default: break; 10290 case 'p': // 2 strings to match. 10291 switch (BuiltinName[20]) { 10292 default: break; 10293 case 'd': // 1 string to match. 10294 return Intrinsic::x86_sse2_sqrt_pd; // "__builtin_ia32_sqrtpd" 10295 case 's': // 1 string to match. 10296 return Intrinsic::x86_sse_sqrt_ps; // "__builtin_ia32_sqrtps" 10297 } 10298 break; 10299 case 's': // 2 strings to match. 10300 switch (BuiltinName[20]) { 10301 default: break; 10302 case 'd': // 1 string to match. 10303 return Intrinsic::x86_sse2_sqrt_sd; // "__builtin_ia32_sqrtsd" 10304 case 's': // 1 string to match. 10305 return Intrinsic::x86_sse_sqrt_ss; // "__builtin_ia32_sqrtss" 10306 } 10307 break; 10308 } 10309 break; 10310 } 10311 break; 10312 } 10313 break; 10314 case 22: // 46 strings to match. 10315 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 10316 break; 10317 switch (BuiltinName[15]) { 10318 default: break; 10319 case 'b': // 2 strings to match. 10320 if (BuiltinName.substr(16, 5) != "lendp") 10321 break; 10322 switch (BuiltinName[21]) { 10323 default: break; 10324 case 'd': // 1 string to match. 10325 return Intrinsic::x86_sse41_blendpd; // "__builtin_ia32_blendpd" 10326 case 's': // 1 string to match. 10327 return Intrinsic::x86_sse41_blendps; // "__builtin_ia32_blendps" 10328 } 10329 break; 10330 case 'c': // 6 strings to match. 10331 switch (BuiltinName[16]) { 10332 default: break; 10333 case 'l': // 1 string to match. 10334 if (BuiltinName.substr(17, 5) != "flush") 10335 break; 10336 return Intrinsic::x86_sse2_clflush; // "__builtin_ia32_clflush" 10337 case 'o': // 1 string to match. 10338 if (BuiltinName.substr(17, 5) != "mineq") 10339 break; 10340 return Intrinsic::x86_sse_comineq_ss; // "__builtin_ia32_comineq" 10341 case 'r': // 4 strings to match. 10342 if (BuiltinName.substr(17, 3) != "c32") 10343 break; 10344 switch (BuiltinName[20]) { 10345 default: break; 10346 case 'd': // 1 string to match. 10347 if (BuiltinName[21] != 'i') 10348 break; 10349 return Intrinsic::x86_sse42_crc32_64_64; // "__builtin_ia32_crc32di" 10350 case 'h': // 1 string to match. 10351 if (BuiltinName[21] != 'i') 10352 break; 10353 return Intrinsic::x86_sse42_crc32_32_16; // "__builtin_ia32_crc32hi" 10354 case 'q': // 1 string to match. 10355 if (BuiltinName[21] != 'i') 10356 break; 10357 return Intrinsic::x86_sse42_crc32_32_8; // "__builtin_ia32_crc32qi" 10358 case 's': // 1 string to match. 10359 if (BuiltinName[21] != 'i') 10360 break; 10361 return Intrinsic::x86_sse42_crc32_32_32; // "__builtin_ia32_crc32si" 10362 } 10363 break; 10364 } 10365 break; 10366 case 'd': // 1 string to match. 10367 if (BuiltinName.substr(16, 6) != "pps256") 10368 break; 10369 return Intrinsic::x86_avx_dp_ps_256; // "__builtin_ia32_dpps256" 10370 case 'm': // 1 string to match. 10371 if (BuiltinName.substr(16, 6) != "onitor") 10372 break; 10373 return Intrinsic::x86_sse3_monitor; // "__builtin_ia32_monitor" 10374 case 'p': // 25 strings to match. 10375 switch (BuiltinName[16]) { 10376 default: break; 10377 case 'a': // 4 strings to match. 10378 switch (BuiltinName[17]) { 10379 default: break; 10380 case 'd': // 2 strings to match. 10381 if (BuiltinName.substr(18, 3) != "dus") 10382 break; 10383 switch (BuiltinName[21]) { 10384 default: break; 10385 case 'b': // 1 string to match. 10386 return Intrinsic::x86_mmx_paddus_b; // "__builtin_ia32_paddusb" 10387 case 'w': // 1 string to match. 10388 return Intrinsic::x86_mmx_paddus_w; // "__builtin_ia32_paddusw" 10389 } 10390 break; 10391 case 'l': // 1 string to match. 10392 if (BuiltinName.substr(18, 4) != "ignr") 10393 break; 10394 return Intrinsic::x86_mmx_palignr_b; // "__builtin_ia32_palignr" 10395 case 'v': // 1 string to match. 10396 if (BuiltinName.substr(18, 4) != "gusb") 10397 break; 10398 return Intrinsic::x86_3dnow_pavgusb; // "__builtin_ia32_pavgusb" 10399 } 10400 break; 10401 case 'c': // 8 strings to match. 10402 if (BuiltinName.substr(17, 2) != "mp") 10403 break; 10404 switch (BuiltinName[19]) { 10405 default: break; 10406 case 'e': // 4 strings to match. 10407 if (BuiltinName[20] != 'q') 10408 break; 10409 switch (BuiltinName[21]) { 10410 default: break; 10411 case 'b': // 1 string to match. 10412 return Intrinsic::x86_mmx_pcmpeq_b; // "__builtin_ia32_pcmpeqb" 10413 case 'd': // 1 string to match. 10414 return Intrinsic::x86_mmx_pcmpeq_d; // "__builtin_ia32_pcmpeqd" 10415 case 'q': // 1 string to match. 10416 return Intrinsic::x86_sse41_pcmpeqq; // "__builtin_ia32_pcmpeqq" 10417 case 'w': // 1 string to match. 10418 return Intrinsic::x86_mmx_pcmpeq_w; // "__builtin_ia32_pcmpeqw" 10419 } 10420 break; 10421 case 'g': // 4 strings to match. 10422 if (BuiltinName[20] != 't') 10423 break; 10424 switch (BuiltinName[21]) { 10425 default: break; 10426 case 'b': // 1 string to match. 10427 return Intrinsic::x86_mmx_pcmpgt_b; // "__builtin_ia32_pcmpgtb" 10428 case 'd': // 1 string to match. 10429 return Intrinsic::x86_mmx_pcmpgt_d; // "__builtin_ia32_pcmpgtd" 10430 case 'q': // 1 string to match. 10431 return Intrinsic::x86_sse42_pcmpgtq; // "__builtin_ia32_pcmpgtq" 10432 case 'w': // 1 string to match. 10433 return Intrinsic::x86_mmx_pcmpgt_w; // "__builtin_ia32_pcmpgtw" 10434 } 10435 break; 10436 } 10437 break; 10438 case 'f': // 5 strings to match. 10439 switch (BuiltinName[17]) { 10440 default: break; 10441 case 'c': // 3 strings to match. 10442 if (BuiltinName.substr(18, 2) != "mp") 10443 break; 10444 switch (BuiltinName[20]) { 10445 default: break; 10446 case 'e': // 1 string to match. 10447 if (BuiltinName[21] != 'q') 10448 break; 10449 return Intrinsic::x86_3dnow_pfcmpeq; // "__builtin_ia32_pfcmpeq" 10450 case 'g': // 2 strings to match. 10451 switch (BuiltinName[21]) { 10452 default: break; 10453 case 'e': // 1 string to match. 10454 return Intrinsic::x86_3dnow_pfcmpge; // "__builtin_ia32_pfcmpge" 10455 case 't': // 1 string to match. 10456 return Intrinsic::x86_3dnow_pfcmpgt; // "__builtin_ia32_pfcmpgt" 10457 } 10458 break; 10459 } 10460 break; 10461 case 'p': // 1 string to match. 10462 if (BuiltinName.substr(18, 4) != "nacc") 10463 break; 10464 return Intrinsic::x86_3dnowa_pfpnacc; // "__builtin_ia32_pfpnacc" 10465 case 'r': // 1 string to match. 10466 if (BuiltinName.substr(18, 4) != "sqrt") 10467 break; 10468 return Intrinsic::x86_3dnow_pfrsqrt; // "__builtin_ia32_pfrsqrt" 10469 } 10470 break; 10471 case 'h': // 2 strings to match. 10472 switch (BuiltinName[17]) { 10473 default: break; 10474 case 'a': // 1 string to match. 10475 if (BuiltinName.substr(18, 4) != "ddsw") 10476 break; 10477 return Intrinsic::x86_ssse3_phadd_sw; // "__builtin_ia32_phaddsw" 10478 case 's': // 1 string to match. 10479 if (BuiltinName.substr(18, 4) != "ubsw") 10480 break; 10481 return Intrinsic::x86_ssse3_phsub_sw; // "__builtin_ia32_phsubsw" 10482 } 10483 break; 10484 case 'm': // 4 strings to match. 10485 switch (BuiltinName[17]) { 10486 default: break; 10487 case 'a': // 1 string to match. 10488 if (BuiltinName.substr(18, 4) != "ddwd") 10489 break; 10490 return Intrinsic::x86_mmx_pmadd_wd; // "__builtin_ia32_pmaddwd" 10491 case 'u': // 3 strings to match. 10492 if (BuiltinName[18] != 'l') 10493 break; 10494 switch (BuiltinName[19]) { 10495 default: break; 10496 case 'h': // 2 strings to match. 10497 switch (BuiltinName[20]) { 10498 default: break; 10499 case 'r': // 1 string to match. 10500 if (BuiltinName[21] != 'w') 10501 break; 10502 return Intrinsic::x86_3dnow_pmulhrw; // "__builtin_ia32_pmulhrw" 10503 case 'u': // 1 string to match. 10504 if (BuiltinName[21] != 'w') 10505 break; 10506 return Intrinsic::x86_mmx_pmulhu_w; // "__builtin_ia32_pmulhuw" 10507 } 10508 break; 10509 case 'u': // 1 string to match. 10510 if (BuiltinName.substr(20, 2) != "dq") 10511 break; 10512 return Intrinsic::x86_mmx_pmulu_dq; // "__builtin_ia32_pmuludq" 10513 } 10514 break; 10515 } 10516 break; 10517 case 's': // 2 strings to match. 10518 if (BuiltinName.substr(17, 4) != "ubus") 10519 break; 10520 switch (BuiltinName[21]) { 10521 default: break; 10522 case 'b': // 1 string to match. 10523 return Intrinsic::x86_mmx_psubus_b; // "__builtin_ia32_psubusb" 10524 case 'w': // 1 string to match. 10525 return Intrinsic::x86_mmx_psubus_w; // "__builtin_ia32_psubusw" 10526 } 10527 break; 10528 } 10529 break; 10530 case 'r': // 6 strings to match. 10531 switch (BuiltinName[16]) { 10532 default: break; 10533 case 'o': // 4 strings to match. 10534 if (BuiltinName.substr(17, 3) != "und") 10535 break; 10536 switch (BuiltinName[20]) { 10537 default: break; 10538 case 'p': // 2 strings to match. 10539 switch (BuiltinName[21]) { 10540 default: break; 10541 case 'd': // 1 string to match. 10542 return Intrinsic::x86_sse41_round_pd; // "__builtin_ia32_roundpd" 10543 case 's': // 1 string to match. 10544 return Intrinsic::x86_sse41_round_ps; // "__builtin_ia32_roundps" 10545 } 10546 break; 10547 case 's': // 2 strings to match. 10548 switch (BuiltinName[21]) { 10549 default: break; 10550 case 'd': // 1 string to match. 10551 return Intrinsic::x86_sse41_round_sd; // "__builtin_ia32_roundsd" 10552 case 's': // 1 string to match. 10553 return Intrinsic::x86_sse41_round_ss; // "__builtin_ia32_roundss" 10554 } 10555 break; 10556 } 10557 break; 10558 case 's': // 2 strings to match. 10559 if (BuiltinName.substr(17, 3) != "qrt") 10560 break; 10561 switch (BuiltinName[20]) { 10562 default: break; 10563 case 'p': // 1 string to match. 10564 if (BuiltinName[21] != 's') 10565 break; 10566 return Intrinsic::x86_sse_rsqrt_ps; // "__builtin_ia32_rsqrtps" 10567 case 's': // 1 string to match. 10568 if (BuiltinName[21] != 's') 10569 break; 10570 return Intrinsic::x86_sse_rsqrt_ss; // "__builtin_ia32_rsqrtss" 10571 } 10572 break; 10573 } 10574 break; 10575 case 'u': // 5 strings to match. 10576 if (BuiltinName.substr(16, 4) != "comi") 10577 break; 10578 switch (BuiltinName[20]) { 10579 default: break; 10580 case 'e': // 1 string to match. 10581 if (BuiltinName[21] != 'q') 10582 break; 10583 return Intrinsic::x86_sse_ucomieq_ss; // "__builtin_ia32_ucomieq" 10584 case 'g': // 2 strings to match. 10585 switch (BuiltinName[21]) { 10586 default: break; 10587 case 'e': // 1 string to match. 10588 return Intrinsic::x86_sse_ucomige_ss; // "__builtin_ia32_ucomige" 10589 case 't': // 1 string to match. 10590 return Intrinsic::x86_sse_ucomigt_ss; // "__builtin_ia32_ucomigt" 10591 } 10592 break; 10593 case 'l': // 2 strings to match. 10594 switch (BuiltinName[21]) { 10595 default: break; 10596 case 'e': // 1 string to match. 10597 return Intrinsic::x86_sse_ucomile_ss; // "__builtin_ia32_ucomile" 10598 case 't': // 1 string to match. 10599 return Intrinsic::x86_sse_ucomilt_ss; // "__builtin_ia32_ucomilt" 10600 } 10601 break; 10602 } 10603 break; 10604 } 10605 break; 10606 case 23: // 67 strings to match. 10607 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 10608 break; 10609 switch (BuiltinName[15]) { 10610 default: break; 10611 case 'a': // 2 strings to match. 10612 if (BuiltinName.substr(16, 6) != "ddsubp") 10613 break; 10614 switch (BuiltinName[22]) { 10615 default: break; 10616 case 'd': // 1 string to match. 10617 return Intrinsic::x86_sse3_addsub_pd; // "__builtin_ia32_addsubpd" 10618 case 's': // 1 string to match. 10619 return Intrinsic::x86_sse3_addsub_ps; // "__builtin_ia32_addsubps" 10620 } 10621 break; 10622 case 'b': // 2 strings to match. 10623 if (BuiltinName.substr(16, 6) != "lendvp") 10624 break; 10625 switch (BuiltinName[22]) { 10626 default: break; 10627 case 'd': // 1 string to match. 10628 return Intrinsic::x86_sse41_blendvpd; // "__builtin_ia32_blendvpd" 10629 case 's': // 1 string to match. 10630 return Intrinsic::x86_sse41_blendvps; // "__builtin_ia32_blendvps" 10631 } 10632 break; 10633 case 'c': // 23 strings to match. 10634 switch (BuiltinName[16]) { 10635 default: break; 10636 case 'm': // 2 strings to match. 10637 if (BuiltinName.substr(17, 2) != "pp") 10638 break; 10639 switch (BuiltinName[19]) { 10640 default: break; 10641 case 'd': // 1 string to match. 10642 if (BuiltinName.substr(20, 3) != "256") 10643 break; 10644 return Intrinsic::x86_avx_cmp_pd_256; // "__builtin_ia32_cmppd256" 10645 case 's': // 1 string to match. 10646 if (BuiltinName.substr(20, 3) != "256") 10647 break; 10648 return Intrinsic::x86_avx_cmp_ps_256; // "__builtin_ia32_cmpps256" 10649 } 10650 break; 10651 case 'o': // 5 strings to match. 10652 if (BuiltinName.substr(17, 4) != "misd") 10653 break; 10654 switch (BuiltinName[21]) { 10655 default: break; 10656 case 'e': // 1 string to match. 10657 if (BuiltinName[22] != 'q') 10658 break; 10659 return Intrinsic::x86_sse2_comieq_sd; // "__builtin_ia32_comisdeq" 10660 case 'g': // 2 strings to match. 10661 switch (BuiltinName[22]) { 10662 default: break; 10663 case 'e': // 1 string to match. 10664 return Intrinsic::x86_sse2_comige_sd; // "__builtin_ia32_comisdge" 10665 case 't': // 1 string to match. 10666 return Intrinsic::x86_sse2_comigt_sd; // "__builtin_ia32_comisdgt" 10667 } 10668 break; 10669 case 'l': // 2 strings to match. 10670 switch (BuiltinName[22]) { 10671 default: break; 10672 case 'e': // 1 string to match. 10673 return Intrinsic::x86_sse2_comile_sd; // "__builtin_ia32_comisdle" 10674 case 't': // 1 string to match. 10675 return Intrinsic::x86_sse2_comilt_sd; // "__builtin_ia32_comisdlt" 10676 } 10677 break; 10678 } 10679 break; 10680 case 'v': // 16 strings to match. 10681 if (BuiltinName[17] != 't') 10682 break; 10683 switch (BuiltinName[18]) { 10684 default: break; 10685 case 'd': // 2 strings to match. 10686 if (BuiltinName.substr(19, 3) != "q2p") 10687 break; 10688 switch (BuiltinName[22]) { 10689 default: break; 10690 case 'd': // 1 string to match. 10691 return Intrinsic::x86_sse2_cvtdq2pd; // "__builtin_ia32_cvtdq2pd" 10692 case 's': // 1 string to match. 10693 return Intrinsic::x86_sse2_cvtdq2ps; // "__builtin_ia32_cvtdq2ps" 10694 } 10695 break; 10696 case 'p': // 8 strings to match. 10697 switch (BuiltinName[19]) { 10698 default: break; 10699 case 'd': // 3 strings to match. 10700 if (BuiltinName[20] != '2') 10701 break; 10702 switch (BuiltinName[21]) { 10703 default: break; 10704 case 'd': // 1 string to match. 10705 if (BuiltinName[22] != 'q') 10706 break; 10707 return Intrinsic::x86_sse2_cvtpd2dq; // "__builtin_ia32_cvtpd2dq" 10708 case 'p': // 2 strings to match. 10709 switch (BuiltinName[22]) { 10710 default: break; 10711 case 'i': // 1 string to match. 10712 return Intrinsic::x86_sse_cvtpd2pi; // "__builtin_ia32_cvtpd2pi" 10713 case 's': // 1 string to match. 10714 return Intrinsic::x86_sse2_cvtpd2ps; // "__builtin_ia32_cvtpd2ps" 10715 } 10716 break; 10717 } 10718 break; 10719 case 'i': // 2 strings to match. 10720 if (BuiltinName.substr(20, 2) != "2p") 10721 break; 10722 switch (BuiltinName[22]) { 10723 default: break; 10724 case 'd': // 1 string to match. 10725 return Intrinsic::x86_sse_cvtpi2pd; // "__builtin_ia32_cvtpi2pd" 10726 case 's': // 1 string to match. 10727 return Intrinsic::x86_sse_cvtpi2ps; // "__builtin_ia32_cvtpi2ps" 10728 } 10729 break; 10730 case 's': // 3 strings to match. 10731 if (BuiltinName[20] != '2') 10732 break; 10733 switch (BuiltinName[21]) { 10734 default: break; 10735 case 'd': // 1 string to match. 10736 if (BuiltinName[22] != 'q') 10737 break; 10738 return Intrinsic::x86_sse2_cvtps2dq; // "__builtin_ia32_cvtps2dq" 10739 case 'p': // 2 strings to match. 10740 switch (BuiltinName[22]) { 10741 default: break; 10742 case 'd': // 1 string to match. 10743 return Intrinsic::x86_sse2_cvtps2pd; // "__builtin_ia32_cvtps2pd" 10744 case 'i': // 1 string to match. 10745 return Intrinsic::x86_sse_cvtps2pi; // "__builtin_ia32_cvtps2pi" 10746 } 10747 break; 10748 } 10749 break; 10750 } 10751 break; 10752 case 's': // 6 strings to match. 10753 switch (BuiltinName[19]) { 10754 default: break; 10755 case 'd': // 2 strings to match. 10756 if (BuiltinName.substr(20, 2) != "2s") 10757 break; 10758 switch (BuiltinName[22]) { 10759 default: break; 10760 case 'i': // 1 string to match. 10761 return Intrinsic::x86_sse2_cvtsd2si; // "__builtin_ia32_cvtsd2si" 10762 case 's': // 1 string to match. 10763 return Intrinsic::x86_sse2_cvtsd2ss; // "__builtin_ia32_cvtsd2ss" 10764 } 10765 break; 10766 case 'i': // 2 strings to match. 10767 if (BuiltinName.substr(20, 2) != "2s") 10768 break; 10769 switch (BuiltinName[22]) { 10770 default: break; 10771 case 'd': // 1 string to match. 10772 return Intrinsic::x86_sse2_cvtsi2sd; // "__builtin_ia32_cvtsi2sd" 10773 case 's': // 1 string to match. 10774 return Intrinsic::x86_sse_cvtsi2ss; // "__builtin_ia32_cvtsi2ss" 10775 } 10776 break; 10777 case 's': // 2 strings to match. 10778 if (BuiltinName.substr(20, 2) != "2s") 10779 break; 10780 switch (BuiltinName[22]) { 10781 default: break; 10782 case 'd': // 1 string to match. 10783 return Intrinsic::x86_sse2_cvtss2sd; // "__builtin_ia32_cvtss2sd" 10784 case 'i': // 1 string to match. 10785 return Intrinsic::x86_sse_cvtss2si; // "__builtin_ia32_cvtss2si" 10786 } 10787 break; 10788 } 10789 break; 10790 } 10791 break; 10792 } 10793 break; 10794 case 'l': // 1 string to match. 10795 if (BuiltinName.substr(16, 7) != "ddqu256") 10796 break; 10797 return Intrinsic::x86_avx_ldu_dq_256; // "__builtin_ia32_lddqu256" 10798 case 'm': // 8 strings to match. 10799 switch (BuiltinName[16]) { 10800 default: break; 10801 case 'a': // 3 strings to match. 10802 switch (BuiltinName[17]) { 10803 default: break; 10804 case 's': // 1 string to match. 10805 if (BuiltinName.substr(18, 5) != "kmovq") 10806 break; 10807 return Intrinsic::x86_mmx_maskmovq; // "__builtin_ia32_maskmovq" 10808 case 'x': // 2 strings to match. 10809 if (BuiltinName[18] != 'p') 10810 break; 10811 switch (BuiltinName[19]) { 10812 default: break; 10813 case 'd': // 1 string to match. 10814 if (BuiltinName.substr(20, 3) != "256") 10815 break; 10816 return Intrinsic::x86_avx_max_pd_256; // "__builtin_ia32_maxpd256" 10817 case 's': // 1 string to match. 10818 if (BuiltinName.substr(20, 3) != "256") 10819 break; 10820 return Intrinsic::x86_avx_max_ps_256; // "__builtin_ia32_maxps256" 10821 } 10822 break; 10823 } 10824 break; 10825 case 'i': // 2 strings to match. 10826 if (BuiltinName.substr(17, 2) != "np") 10827 break; 10828 switch (BuiltinName[19]) { 10829 default: break; 10830 case 'd': // 1 string to match. 10831 if (BuiltinName.substr(20, 3) != "256") 10832 break; 10833 return Intrinsic::x86_avx_min_pd_256; // "__builtin_ia32_minpd256" 10834 case 's': // 1 string to match. 10835 if (BuiltinName.substr(20, 3) != "256") 10836 break; 10837 return Intrinsic::x86_avx_min_ps_256; // "__builtin_ia32_minps256" 10838 } 10839 break; 10840 case 'o': // 3 strings to match. 10841 if (BuiltinName[17] != 'v') 10842 break; 10843 switch (BuiltinName[18]) { 10844 default: break; 10845 case 'm': // 2 strings to match. 10846 if (BuiltinName.substr(19, 3) != "skp") 10847 break; 10848 switch (BuiltinName[22]) { 10849 default: break; 10850 case 'd': // 1 string to match. 10851 return Intrinsic::x86_sse2_movmsk_pd; // "__builtin_ia32_movmskpd" 10852 case 's': // 1 string to match. 10853 return Intrinsic::x86_sse_movmsk_ps; // "__builtin_ia32_movmskps" 10854 } 10855 break; 10856 case 'n': // 1 string to match. 10857 if (BuiltinName.substr(19, 4) != "tdqa") 10858 break; 10859 return Intrinsic::x86_sse41_movntdqa; // "__builtin_ia32_movntdqa" 10860 } 10861 break; 10862 } 10863 break; 10864 case 'p': // 21 strings to match. 10865 switch (BuiltinName[16]) { 10866 default: break; 10867 case 'a': // 8 strings to match. 10868 switch (BuiltinName[17]) { 10869 default: break; 10870 case 'b': // 3 strings to match. 10871 if (BuiltinName[18] != 's') 10872 break; 10873 switch (BuiltinName[19]) { 10874 default: break; 10875 case 'b': // 1 string to match. 10876 if (BuiltinName.substr(20, 3) != "128") 10877 break; 10878 return Intrinsic::x86_ssse3_pabs_b_128; // "__builtin_ia32_pabsb128" 10879 case 'd': // 1 string to match. 10880 if (BuiltinName.substr(20, 3) != "128") 10881 break; 10882 return Intrinsic::x86_ssse3_pabs_d_128; // "__builtin_ia32_pabsd128" 10883 case 'w': // 1 string to match. 10884 if (BuiltinName.substr(20, 3) != "128") 10885 break; 10886 return Intrinsic::x86_ssse3_pabs_w_128; // "__builtin_ia32_pabsw128" 10887 } 10888 break; 10889 case 'c': // 3 strings to match. 10890 if (BuiltinName[18] != 'k') 10891 break; 10892 switch (BuiltinName[19]) { 10893 default: break; 10894 case 's': // 2 strings to match. 10895 if (BuiltinName[20] != 's') 10896 break; 10897 switch (BuiltinName[21]) { 10898 default: break; 10899 case 'd': // 1 string to match. 10900 if (BuiltinName[22] != 'w') 10901 break; 10902 return Intrinsic::x86_mmx_packssdw; // "__builtin_ia32_packssdw" 10903 case 'w': // 1 string to match. 10904 if (BuiltinName[22] != 'b') 10905 break; 10906 return Intrinsic::x86_mmx_packsswb; // "__builtin_ia32_packsswb" 10907 } 10908 break; 10909 case 'u': // 1 string to match. 10910 if (BuiltinName.substr(20, 3) != "swb") 10911 break; 10912 return Intrinsic::x86_mmx_packuswb; // "__builtin_ia32_packuswb" 10913 } 10914 break; 10915 case 'v': // 2 strings to match. 10916 if (BuiltinName[18] != 'g') 10917 break; 10918 switch (BuiltinName[19]) { 10919 default: break; 10920 case 'b': // 1 string to match. 10921 if (BuiltinName.substr(20, 3) != "128") 10922 break; 10923 return Intrinsic::x86_sse2_pavg_b; // "__builtin_ia32_pavgb128" 10924 case 'w': // 1 string to match. 10925 if (BuiltinName.substr(20, 3) != "128") 10926 break; 10927 return Intrinsic::x86_sse2_pavg_w; // "__builtin_ia32_pavgw128" 10928 } 10929 break; 10930 } 10931 break; 10932 case 'f': // 3 strings to match. 10933 if (BuiltinName[17] != 'r') 10934 break; 10935 switch (BuiltinName[18]) { 10936 default: break; 10937 case 'c': // 2 strings to match. 10938 if (BuiltinName.substr(19, 3) != "pit") 10939 break; 10940 switch (BuiltinName[22]) { 10941 default: break; 10942 case '1': // 1 string to match. 10943 return Intrinsic::x86_3dnow_pfrcpit1; // "__builtin_ia32_pfrcpit1" 10944 case '2': // 1 string to match. 10945 return Intrinsic::x86_3dnow_pfrcpit2; // "__builtin_ia32_pfrcpit2" 10946 } 10947 break; 10948 case 's': // 1 string to match. 10949 if (BuiltinName.substr(19, 4) != "qit1") 10950 break; 10951 return Intrinsic::x86_3dnow_pfrsqit1; // "__builtin_ia32_pfrsqit1" 10952 } 10953 break; 10954 case 'm': // 2 strings to match. 10955 switch (BuiltinName[17]) { 10956 default: break; 10957 case 'o': // 1 string to match. 10958 if (BuiltinName.substr(18, 5) != "vmskb") 10959 break; 10960 return Intrinsic::x86_mmx_pmovmskb; // "__builtin_ia32_pmovmskb" 10961 case 'u': // 1 string to match. 10962 if (BuiltinName.substr(18, 5) != "lhrsw") 10963 break; 10964 return Intrinsic::x86_ssse3_pmul_hr_sw; // "__builtin_ia32_pmulhrsw" 10965 } 10966 break; 10967 case 's': // 8 strings to match. 10968 switch (BuiltinName[17]) { 10969 default: break; 10970 case 'l': // 3 strings to match. 10971 if (BuiltinName[18] != 'l') 10972 break; 10973 switch (BuiltinName[19]) { 10974 default: break; 10975 case 'd': // 1 string to match. 10976 if (BuiltinName.substr(20, 3) != "128") 10977 break; 10978 return Intrinsic::x86_sse2_psll_d; // "__builtin_ia32_pslld128" 10979 case 'q': // 1 string to match. 10980 if (BuiltinName.substr(20, 3) != "128") 10981 break; 10982 return Intrinsic::x86_sse2_psll_q; // "__builtin_ia32_psllq128" 10983 case 'w': // 1 string to match. 10984 if (BuiltinName.substr(20, 3) != "128") 10985 break; 10986 return Intrinsic::x86_sse2_psll_w; // "__builtin_ia32_psllw128" 10987 } 10988 break; 10989 case 'r': // 5 strings to match. 10990 switch (BuiltinName[18]) { 10991 default: break; 10992 case 'a': // 2 strings to match. 10993 switch (BuiltinName[19]) { 10994 default: break; 10995 case 'd': // 1 string to match. 10996 if (BuiltinName.substr(20, 3) != "128") 10997 break; 10998 return Intrinsic::x86_sse2_psra_d; // "__builtin_ia32_psrad128" 10999 case 'w': // 1 string to match. 11000 if (BuiltinName.substr(20, 3) != "128") 11001 break; 11002 return Intrinsic::x86_sse2_psra_w; // "__builtin_ia32_psraw128" 11003 } 11004 break; 11005 case 'l': // 3 strings to match. 11006 switch (BuiltinName[19]) { 11007 default: break; 11008 case 'd': // 1 string to match. 11009 if (BuiltinName.substr(20, 3) != "128") 11010 break; 11011 return Intrinsic::x86_sse2_psrl_d; // "__builtin_ia32_psrld128" 11012 case 'q': // 1 string to match. 11013 if (BuiltinName.substr(20, 3) != "128") 11014 break; 11015 return Intrinsic::x86_sse2_psrl_q; // "__builtin_ia32_psrlq128" 11016 case 'w': // 1 string to match. 11017 if (BuiltinName.substr(20, 3) != "128") 11018 break; 11019 return Intrinsic::x86_sse2_psrl_w; // "__builtin_ia32_psrlw128" 11020 } 11021 break; 11022 } 11023 break; 11024 } 11025 break; 11026 } 11027 break; 11028 case 'r': // 1 string to match. 11029 if (BuiltinName.substr(16, 7) != "cpps256") 11030 break; 11031 return Intrinsic::x86_avx_rcp_ps_256; // "__builtin_ia32_rcpps256" 11032 case 's': // 3 strings to match. 11033 if (BuiltinName.substr(16, 4) != "tore") 11034 break; 11035 switch (BuiltinName[20]) { 11036 default: break; 11037 case 'd': // 1 string to match. 11038 if (BuiltinName.substr(21, 2) != "qu") 11039 break; 11040 return Intrinsic::x86_sse2_storeu_dq; // "__builtin_ia32_storedqu" 11041 case 'u': // 2 strings to match. 11042 if (BuiltinName[21] != 'p') 11043 break; 11044 switch (BuiltinName[22]) { 11045 default: break; 11046 case 'd': // 1 string to match. 11047 return Intrinsic::x86_sse2_storeu_pd; // "__builtin_ia32_storeupd" 11048 case 's': // 1 string to match. 11049 return Intrinsic::x86_sse_storeu_ps; // "__builtin_ia32_storeups" 11050 } 11051 break; 11052 } 11053 break; 11054 case 'u': // 1 string to match. 11055 if (BuiltinName.substr(16, 7) != "comineq") 11056 break; 11057 return Intrinsic::x86_sse_ucomineq_ss; // "__builtin_ia32_ucomineq" 11058 case 'v': // 5 strings to match. 11059 switch (BuiltinName[16]) { 11060 default: break; 11061 case 't': // 4 strings to match. 11062 if (BuiltinName.substr(17, 3) != "est") 11063 break; 11064 switch (BuiltinName[20]) { 11065 default: break; 11066 case 'c': // 2 strings to match. 11067 if (BuiltinName[21] != 'p') 11068 break; 11069 switch (BuiltinName[22]) { 11070 default: break; 11071 case 'd': // 1 string to match. 11072 return Intrinsic::x86_avx_vtestc_pd; // "__builtin_ia32_vtestcpd" 11073 case 's': // 1 string to match. 11074 return Intrinsic::x86_avx_vtestc_ps; // "__builtin_ia32_vtestcps" 11075 } 11076 break; 11077 case 'z': // 2 strings to match. 11078 if (BuiltinName[21] != 'p') 11079 break; 11080 switch (BuiltinName[22]) { 11081 default: break; 11082 case 'd': // 1 string to match. 11083 return Intrinsic::x86_avx_vtestz_pd; // "__builtin_ia32_vtestzpd" 11084 case 's': // 1 string to match. 11085 return Intrinsic::x86_avx_vtestz_ps; // "__builtin_ia32_vtestzps" 11086 } 11087 break; 11088 } 11089 break; 11090 case 'z': // 1 string to match. 11091 if (BuiltinName.substr(17, 6) != "eroall") 11092 break; 11093 return Intrinsic::x86_avx_vzeroall; // "__builtin_ia32_vzeroall" 11094 } 11095 break; 11096 } 11097 break; 11098 case 24: // 69 strings to match. 11099 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 11100 break; 11101 switch (BuiltinName[15]) { 11102 default: break; 11103 case 'a': // 3 strings to match. 11104 if (BuiltinName.substr(16, 2) != "es") 11105 break; 11106 switch (BuiltinName[18]) { 11107 default: break; 11108 case 'd': // 1 string to match. 11109 if (BuiltinName.substr(19, 5) != "ec128") 11110 break; 11111 return Intrinsic::x86_aesni_aesdec; // "__builtin_ia32_aesdec128" 11112 case 'e': // 1 string to match. 11113 if (BuiltinName.substr(19, 5) != "nc128") 11114 break; 11115 return Intrinsic::x86_aesni_aesenc; // "__builtin_ia32_aesenc128" 11116 case 'i': // 1 string to match. 11117 if (BuiltinName.substr(19, 5) != "mc128") 11118 break; 11119 return Intrinsic::x86_aesni_aesimc; // "__builtin_ia32_aesimc128" 11120 } 11121 break; 11122 case 'c': // 7 strings to match. 11123 switch (BuiltinName[16]) { 11124 default: break; 11125 case 'o': // 1 string to match. 11126 if (BuiltinName.substr(17, 7) != "misdneq") 11127 break; 11128 return Intrinsic::x86_sse2_comineq_sd; // "__builtin_ia32_comisdneq" 11129 case 'v': // 6 strings to match. 11130 if (BuiltinName.substr(17, 2) != "tt") 11131 break; 11132 switch (BuiltinName[19]) { 11133 default: break; 11134 case 'p': // 4 strings to match. 11135 switch (BuiltinName[20]) { 11136 default: break; 11137 case 'd': // 2 strings to match. 11138 if (BuiltinName[21] != '2') 11139 break; 11140 switch (BuiltinName[22]) { 11141 default: break; 11142 case 'd': // 1 string to match. 11143 if (BuiltinName[23] != 'q') 11144 break; 11145 return Intrinsic::x86_sse2_cvttpd2dq; // "__builtin_ia32_cvttpd2dq" 11146 case 'p': // 1 string to match. 11147 if (BuiltinName[23] != 'i') 11148 break; 11149 return Intrinsic::x86_sse_cvttpd2pi; // "__builtin_ia32_cvttpd2pi" 11150 } 11151 break; 11152 case 's': // 2 strings to match. 11153 if (BuiltinName[21] != '2') 11154 break; 11155 switch (BuiltinName[22]) { 11156 default: break; 11157 case 'd': // 1 string to match. 11158 if (BuiltinName[23] != 'q') 11159 break; 11160 return Intrinsic::x86_sse2_cvttps2dq; // "__builtin_ia32_cvttps2dq" 11161 case 'p': // 1 string to match. 11162 if (BuiltinName[23] != 'i') 11163 break; 11164 return Intrinsic::x86_sse_cvttps2pi; // "__builtin_ia32_cvttps2pi" 11165 } 11166 break; 11167 } 11168 break; 11169 case 's': // 2 strings to match. 11170 switch (BuiltinName[20]) { 11171 default: break; 11172 case 'd': // 1 string to match. 11173 if (BuiltinName.substr(21, 3) != "2si") 11174 break; 11175 return Intrinsic::x86_sse2_cvttsd2si; // "__builtin_ia32_cvttsd2si" 11176 case 's': // 1 string to match. 11177 if (BuiltinName.substr(21, 3) != "2si") 11178 break; 11179 return Intrinsic::x86_sse_cvttss2si; // "__builtin_ia32_cvttss2si" 11180 } 11181 break; 11182 } 11183 break; 11184 } 11185 break; 11186 case 'h': // 4 strings to match. 11187 switch (BuiltinName[16]) { 11188 default: break; 11189 case 'a': // 2 strings to match. 11190 if (BuiltinName.substr(17, 3) != "ddp") 11191 break; 11192 switch (BuiltinName[20]) { 11193 default: break; 11194 case 'd': // 1 string to match. 11195 if (BuiltinName.substr(21, 3) != "256") 11196 break; 11197 return Intrinsic::x86_avx_hadd_pd_256; // "__builtin_ia32_haddpd256" 11198 case 's': // 1 string to match. 11199 if (BuiltinName.substr(21, 3) != "256") 11200 break; 11201 return Intrinsic::x86_avx_hadd_ps_256; // "__builtin_ia32_haddps256" 11202 } 11203 break; 11204 case 's': // 2 strings to match. 11205 if (BuiltinName.substr(17, 3) != "ubp") 11206 break; 11207 switch (BuiltinName[20]) { 11208 default: break; 11209 case 'd': // 1 string to match. 11210 if (BuiltinName.substr(21, 3) != "256") 11211 break; 11212 return Intrinsic::x86_avx_hsub_pd_256; // "__builtin_ia32_hsubpd256" 11213 case 's': // 1 string to match. 11214 if (BuiltinName.substr(21, 3) != "256") 11215 break; 11216 return Intrinsic::x86_avx_hsub_ps_256; // "__builtin_ia32_hsubps256" 11217 } 11218 break; 11219 } 11220 break; 11221 case 'p': // 46 strings to match. 11222 switch (BuiltinName[16]) { 11223 default: break; 11224 case 'a': // 2 strings to match. 11225 if (BuiltinName.substr(17, 3) != "dds") 11226 break; 11227 switch (BuiltinName[20]) { 11228 default: break; 11229 case 'b': // 1 string to match. 11230 if (BuiltinName.substr(21, 3) != "128") 11231 break; 11232 return Intrinsic::x86_sse2_padds_b; // "__builtin_ia32_paddsb128" 11233 case 'w': // 1 string to match. 11234 if (BuiltinName.substr(21, 3) != "128") 11235 break; 11236 return Intrinsic::x86_sse2_padds_w; // "__builtin_ia32_paddsw128" 11237 } 11238 break; 11239 case 'h': // 4 strings to match. 11240 switch (BuiltinName[17]) { 11241 default: break; 11242 case 'a': // 2 strings to match. 11243 if (BuiltinName.substr(18, 2) != "dd") 11244 break; 11245 switch (BuiltinName[20]) { 11246 default: break; 11247 case 'd': // 1 string to match. 11248 if (BuiltinName.substr(21, 3) != "128") 11249 break; 11250 return Intrinsic::x86_ssse3_phadd_d_128; // "__builtin_ia32_phaddd128" 11251 case 'w': // 1 string to match. 11252 if (BuiltinName.substr(21, 3) != "128") 11253 break; 11254 return Intrinsic::x86_ssse3_phadd_w_128; // "__builtin_ia32_phaddw128" 11255 } 11256 break; 11257 case 's': // 2 strings to match. 11258 if (BuiltinName.substr(18, 2) != "ub") 11259 break; 11260 switch (BuiltinName[20]) { 11261 default: break; 11262 case 'd': // 1 string to match. 11263 if (BuiltinName.substr(21, 3) != "128") 11264 break; 11265 return Intrinsic::x86_ssse3_phsub_d_128; // "__builtin_ia32_phsubd128" 11266 case 'w': // 1 string to match. 11267 if (BuiltinName.substr(21, 3) != "128") 11268 break; 11269 return Intrinsic::x86_ssse3_phsub_w_128; // "__builtin_ia32_phsubw128" 11270 } 11271 break; 11272 } 11273 break; 11274 case 'm': // 15 strings to match. 11275 switch (BuiltinName[17]) { 11276 default: break; 11277 case 'a': // 7 strings to match. 11278 switch (BuiltinName[18]) { 11279 default: break; 11280 case 'd': // 1 string to match. 11281 if (BuiltinName.substr(19, 5) != "dubsw") 11282 break; 11283 return Intrinsic::x86_ssse3_pmadd_ub_sw; // "__builtin_ia32_pmaddubsw" 11284 case 'x': // 6 strings to match. 11285 switch (BuiltinName[19]) { 11286 default: break; 11287 case 's': // 3 strings to match. 11288 switch (BuiltinName[20]) { 11289 default: break; 11290 case 'b': // 1 string to match. 11291 if (BuiltinName.substr(21, 3) != "128") 11292 break; 11293 return Intrinsic::x86_sse41_pmaxsb; // "__builtin_ia32_pmaxsb128" 11294 case 'd': // 1 string to match. 11295 if (BuiltinName.substr(21, 3) != "128") 11296 break; 11297 return Intrinsic::x86_sse41_pmaxsd; // "__builtin_ia32_pmaxsd128" 11298 case 'w': // 1 string to match. 11299 if (BuiltinName.substr(21, 3) != "128") 11300 break; 11301 return Intrinsic::x86_sse2_pmaxs_w; // "__builtin_ia32_pmaxsw128" 11302 } 11303 break; 11304 case 'u': // 3 strings to match. 11305 switch (BuiltinName[20]) { 11306 default: break; 11307 case 'b': // 1 string to match. 11308 if (BuiltinName.substr(21, 3) != "128") 11309 break; 11310 return Intrinsic::x86_sse2_pmaxu_b; // "__builtin_ia32_pmaxub128" 11311 case 'd': // 1 string to match. 11312 if (BuiltinName.substr(21, 3) != "128") 11313 break; 11314 return Intrinsic::x86_sse41_pmaxud; // "__builtin_ia32_pmaxud128" 11315 case 'w': // 1 string to match. 11316 if (BuiltinName.substr(21, 3) != "128") 11317 break; 11318 return Intrinsic::x86_sse41_pmaxuw; // "__builtin_ia32_pmaxuw128" 11319 } 11320 break; 11321 } 11322 break; 11323 } 11324 break; 11325 case 'i': // 6 strings to match. 11326 if (BuiltinName[18] != 'n') 11327 break; 11328 switch (BuiltinName[19]) { 11329 default: break; 11330 case 's': // 3 strings to match. 11331 switch (BuiltinName[20]) { 11332 default: break; 11333 case 'b': // 1 string to match. 11334 if (BuiltinName.substr(21, 3) != "128") 11335 break; 11336 return Intrinsic::x86_sse41_pminsb; // "__builtin_ia32_pminsb128" 11337 case 'd': // 1 string to match. 11338 if (BuiltinName.substr(21, 3) != "128") 11339 break; 11340 return Intrinsic::x86_sse41_pminsd; // "__builtin_ia32_pminsd128" 11341 case 'w': // 1 string to match. 11342 if (BuiltinName.substr(21, 3) != "128") 11343 break; 11344 return Intrinsic::x86_sse2_pmins_w; // "__builtin_ia32_pminsw128" 11345 } 11346 break; 11347 case 'u': // 3 strings to match. 11348 switch (BuiltinName[20]) { 11349 default: break; 11350 case 'b': // 1 string to match. 11351 if (BuiltinName.substr(21, 3) != "128") 11352 break; 11353 return Intrinsic::x86_sse2_pminu_b; // "__builtin_ia32_pminub128" 11354 case 'd': // 1 string to match. 11355 if (BuiltinName.substr(21, 3) != "128") 11356 break; 11357 return Intrinsic::x86_sse41_pminud; // "__builtin_ia32_pminud128" 11358 case 'w': // 1 string to match. 11359 if (BuiltinName.substr(21, 3) != "128") 11360 break; 11361 return Intrinsic::x86_sse41_pminuw; // "__builtin_ia32_pminuw128" 11362 } 11363 break; 11364 } 11365 break; 11366 case 'u': // 2 strings to match. 11367 if (BuiltinName[18] != 'l') 11368 break; 11369 switch (BuiltinName[19]) { 11370 default: break; 11371 case 'd': // 1 string to match. 11372 if (BuiltinName.substr(20, 4) != "q128") 11373 break; 11374 return Intrinsic::x86_sse41_pmuldq; // "__builtin_ia32_pmuldq128" 11375 case 'h': // 1 string to match. 11376 if (BuiltinName.substr(20, 4) != "w128") 11377 break; 11378 return Intrinsic::x86_sse2_pmulh_w; // "__builtin_ia32_pmulhw128" 11379 } 11380 break; 11381 } 11382 break; 11383 case 's': // 15 strings to match. 11384 switch (BuiltinName[17]) { 11385 default: break; 11386 case 'a': // 1 string to match. 11387 if (BuiltinName.substr(18, 6) != "dbw128") 11388 break; 11389 return Intrinsic::x86_sse2_psad_bw; // "__builtin_ia32_psadbw128" 11390 case 'h': // 1 string to match. 11391 if (BuiltinName.substr(18, 6) != "ufb128") 11392 break; 11393 return Intrinsic::x86_ssse3_pshuf_b_128; // "__builtin_ia32_pshufb128" 11394 case 'i': // 3 strings to match. 11395 if (BuiltinName.substr(18, 2) != "gn") 11396 break; 11397 switch (BuiltinName[20]) { 11398 default: break; 11399 case 'b': // 1 string to match. 11400 if (BuiltinName.substr(21, 3) != "128") 11401 break; 11402 return Intrinsic::x86_ssse3_psign_b_128; // "__builtin_ia32_psignb128" 11403 case 'd': // 1 string to match. 11404 if (BuiltinName.substr(21, 3) != "128") 11405 break; 11406 return Intrinsic::x86_ssse3_psign_d_128; // "__builtin_ia32_psignd128" 11407 case 'w': // 1 string to match. 11408 if (BuiltinName.substr(21, 3) != "128") 11409 break; 11410 return Intrinsic::x86_ssse3_psign_w_128; // "__builtin_ia32_psignw128" 11411 } 11412 break; 11413 case 'l': // 3 strings to match. 11414 if (BuiltinName[18] != 'l') 11415 break; 11416 switch (BuiltinName[19]) { 11417 default: break; 11418 case 'd': // 1 string to match. 11419 if (BuiltinName.substr(20, 4) != "i128") 11420 break; 11421 return Intrinsic::x86_sse2_pslli_d; // "__builtin_ia32_pslldi128" 11422 case 'q': // 1 string to match. 11423 if (BuiltinName.substr(20, 4) != "i128") 11424 break; 11425 return Intrinsic::x86_sse2_pslli_q; // "__builtin_ia32_psllqi128" 11426 case 'w': // 1 string to match. 11427 if (BuiltinName.substr(20, 4) != "i128") 11428 break; 11429 return Intrinsic::x86_sse2_pslli_w; // "__builtin_ia32_psllwi128" 11430 } 11431 break; 11432 case 'r': // 5 strings to match. 11433 switch (BuiltinName[18]) { 11434 default: break; 11435 case 'a': // 2 strings to match. 11436 switch (BuiltinName[19]) { 11437 default: break; 11438 case 'd': // 1 string to match. 11439 if (BuiltinName.substr(20, 4) != "i128") 11440 break; 11441 return Intrinsic::x86_sse2_psrai_d; // "__builtin_ia32_psradi128" 11442 case 'w': // 1 string to match. 11443 if (BuiltinName.substr(20, 4) != "i128") 11444 break; 11445 return Intrinsic::x86_sse2_psrai_w; // "__builtin_ia32_psrawi128" 11446 } 11447 break; 11448 case 'l': // 3 strings to match. 11449 switch (BuiltinName[19]) { 11450 default: break; 11451 case 'd': // 1 string to match. 11452 if (BuiltinName.substr(20, 4) != "i128") 11453 break; 11454 return Intrinsic::x86_sse2_psrli_d; // "__builtin_ia32_psrldi128" 11455 case 'q': // 1 string to match. 11456 if (BuiltinName.substr(20, 4) != "i128") 11457 break; 11458 return Intrinsic::x86_sse2_psrli_q; // "__builtin_ia32_psrlqi128" 11459 case 'w': // 1 string to match. 11460 if (BuiltinName.substr(20, 4) != "i128") 11461 break; 11462 return Intrinsic::x86_sse2_psrli_w; // "__builtin_ia32_psrlwi128" 11463 } 11464 break; 11465 } 11466 break; 11467 case 'u': // 2 strings to match. 11468 if (BuiltinName.substr(18, 2) != "bs") 11469 break; 11470 switch (BuiltinName[20]) { 11471 default: break; 11472 case 'b': // 1 string to match. 11473 if (BuiltinName.substr(21, 3) != "128") 11474 break; 11475 return Intrinsic::x86_sse2_psubs_b; // "__builtin_ia32_psubsb128" 11476 case 'w': // 1 string to match. 11477 if (BuiltinName.substr(21, 3) != "128") 11478 break; 11479 return Intrinsic::x86_sse2_psubs_w; // "__builtin_ia32_psubsw128" 11480 } 11481 break; 11482 } 11483 break; 11484 case 't': // 4 strings to match. 11485 if (BuiltinName.substr(17, 3) != "est") 11486 break; 11487 switch (BuiltinName[20]) { 11488 default: break; 11489 case 'c': // 2 strings to match. 11490 switch (BuiltinName[21]) { 11491 default: break; 11492 case '1': // 1 string to match. 11493 if (BuiltinName.substr(22, 2) != "28") 11494 break; 11495 return Intrinsic::x86_sse41_ptestc; // "__builtin_ia32_ptestc128" 11496 case '2': // 1 string to match. 11497 if (BuiltinName.substr(22, 2) != "56") 11498 break; 11499 return Intrinsic::x86_avx_ptestc_256; // "__builtin_ia32_ptestc256" 11500 } 11501 break; 11502 case 'z': // 2 strings to match. 11503 switch (BuiltinName[21]) { 11504 default: break; 11505 case '1': // 1 string to match. 11506 if (BuiltinName.substr(22, 2) != "28") 11507 break; 11508 return Intrinsic::x86_sse41_ptestz; // "__builtin_ia32_ptestz128" 11509 case '2': // 1 string to match. 11510 if (BuiltinName.substr(22, 2) != "56") 11511 break; 11512 return Intrinsic::x86_avx_ptestz_256; // "__builtin_ia32_ptestz256" 11513 } 11514 break; 11515 } 11516 break; 11517 case 'u': // 6 strings to match. 11518 if (BuiltinName.substr(17, 4) != "npck") 11519 break; 11520 switch (BuiltinName[21]) { 11521 default: break; 11522 case 'h': // 3 strings to match. 11523 switch (BuiltinName[22]) { 11524 default: break; 11525 case 'b': // 1 string to match. 11526 if (BuiltinName[23] != 'w') 11527 break; 11528 return Intrinsic::x86_mmx_punpckhbw; // "__builtin_ia32_punpckhbw" 11529 case 'd': // 1 string to match. 11530 if (BuiltinName[23] != 'q') 11531 break; 11532 return Intrinsic::x86_mmx_punpckhdq; // "__builtin_ia32_punpckhdq" 11533 case 'w': // 1 string to match. 11534 if (BuiltinName[23] != 'd') 11535 break; 11536 return Intrinsic::x86_mmx_punpckhwd; // "__builtin_ia32_punpckhwd" 11537 } 11538 break; 11539 case 'l': // 3 strings to match. 11540 switch (BuiltinName[22]) { 11541 default: break; 11542 case 'b': // 1 string to match. 11543 if (BuiltinName[23] != 'w') 11544 break; 11545 return Intrinsic::x86_mmx_punpcklbw; // "__builtin_ia32_punpcklbw" 11546 case 'd': // 1 string to match. 11547 if (BuiltinName[23] != 'q') 11548 break; 11549 return Intrinsic::x86_mmx_punpckldq; // "__builtin_ia32_punpckldq" 11550 case 'w': // 1 string to match. 11551 if (BuiltinName[23] != 'd') 11552 break; 11553 return Intrinsic::x86_mmx_punpcklwd; // "__builtin_ia32_punpcklwd" 11554 } 11555 break; 11556 } 11557 break; 11558 } 11559 break; 11560 case 's': // 2 strings to match. 11561 if (BuiltinName.substr(16, 4) != "qrtp") 11562 break; 11563 switch (BuiltinName[20]) { 11564 default: break; 11565 case 'd': // 1 string to match. 11566 if (BuiltinName.substr(21, 3) != "256") 11567 break; 11568 return Intrinsic::x86_avx_sqrt_pd_256; // "__builtin_ia32_sqrtpd256" 11569 case 's': // 1 string to match. 11570 if (BuiltinName.substr(21, 3) != "256") 11571 break; 11572 return Intrinsic::x86_avx_sqrt_ps_256; // "__builtin_ia32_sqrtps256" 11573 } 11574 break; 11575 case 'u': // 5 strings to match. 11576 if (BuiltinName.substr(16, 6) != "comisd") 11577 break; 11578 switch (BuiltinName[22]) { 11579 default: break; 11580 case 'e': // 1 string to match. 11581 if (BuiltinName[23] != 'q') 11582 break; 11583 return Intrinsic::x86_sse2_ucomieq_sd; // "__builtin_ia32_ucomisdeq" 11584 case 'g': // 2 strings to match. 11585 switch (BuiltinName[23]) { 11586 default: break; 11587 case 'e': // 1 string to match. 11588 return Intrinsic::x86_sse2_ucomige_sd; // "__builtin_ia32_ucomisdge" 11589 case 't': // 1 string to match. 11590 return Intrinsic::x86_sse2_ucomigt_sd; // "__builtin_ia32_ucomisdgt" 11591 } 11592 break; 11593 case 'l': // 2 strings to match. 11594 switch (BuiltinName[23]) { 11595 default: break; 11596 case 'e': // 1 string to match. 11597 return Intrinsic::x86_sse2_ucomile_sd; // "__builtin_ia32_ucomisdle" 11598 case 't': // 1 string to match. 11599 return Intrinsic::x86_sse2_ucomilt_sd; // "__builtin_ia32_ucomisdlt" 11600 } 11601 break; 11602 } 11603 break; 11604 case 'v': // 2 strings to match. 11605 if (BuiltinName.substr(16, 7) != "permilp") 11606 break; 11607 switch (BuiltinName[23]) { 11608 default: break; 11609 case 'd': // 1 string to match. 11610 return Intrinsic::x86_avx_vpermil_pd; // "__builtin_ia32_vpermilpd" 11611 case 's': // 1 string to match. 11612 return Intrinsic::x86_avx_vpermil_ps; // "__builtin_ia32_vpermilps" 11613 } 11614 break; 11615 } 11616 break; 11617 case 25: // 42 strings to match. 11618 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 11619 break; 11620 switch (BuiltinName[15]) { 11621 default: break; 11622 case 'b': // 2 strings to match. 11623 if (BuiltinName.substr(16, 5) != "lendp") 11624 break; 11625 switch (BuiltinName[21]) { 11626 default: break; 11627 case 'd': // 1 string to match. 11628 if (BuiltinName.substr(22, 3) != "256") 11629 break; 11630 return Intrinsic::x86_avx_blend_pd_256; // "__builtin_ia32_blendpd256" 11631 case 's': // 1 string to match. 11632 if (BuiltinName.substr(22, 3) != "256") 11633 break; 11634 return Intrinsic::x86_avx_blend_ps_256; // "__builtin_ia32_blendps256" 11635 } 11636 break; 11637 case 'c': // 4 strings to match. 11638 if (BuiltinName.substr(16, 3) != "vts") 11639 break; 11640 switch (BuiltinName[19]) { 11641 default: break; 11642 case 'd': // 1 string to match. 11643 if (BuiltinName.substr(20, 5) != "2si64") 11644 break; 11645 return Intrinsic::x86_sse2_cvtsd2si64; // "__builtin_ia32_cvtsd2si64" 11646 case 'i': // 2 strings to match. 11647 if (BuiltinName.substr(20, 4) != "642s") 11648 break; 11649 switch (BuiltinName[24]) { 11650 default: break; 11651 case 'd': // 1 string to match. 11652 return Intrinsic::x86_sse2_cvtsi642sd; // "__builtin_ia32_cvtsi642sd" 11653 case 's': // 1 string to match. 11654 return Intrinsic::x86_sse_cvtsi642ss; // "__builtin_ia32_cvtsi642ss" 11655 } 11656 break; 11657 case 's': // 1 string to match. 11658 if (BuiltinName.substr(20, 5) != "2si64") 11659 break; 11660 return Intrinsic::x86_sse_cvtss2si64; // "__builtin_ia32_cvtss2si64" 11661 } 11662 break; 11663 case 'l': // 3 strings to match. 11664 if (BuiltinName.substr(16, 3) != "oad") 11665 break; 11666 switch (BuiltinName[19]) { 11667 default: break; 11668 case 'd': // 1 string to match. 11669 if (BuiltinName.substr(20, 5) != "qu256") 11670 break; 11671 return Intrinsic::x86_avx_loadu_dq_256; // "__builtin_ia32_loaddqu256" 11672 case 'u': // 2 strings to match. 11673 if (BuiltinName[20] != 'p') 11674 break; 11675 switch (BuiltinName[21]) { 11676 default: break; 11677 case 'd': // 1 string to match. 11678 if (BuiltinName.substr(22, 3) != "256") 11679 break; 11680 return Intrinsic::x86_avx_loadu_pd_256; // "__builtin_ia32_loadupd256" 11681 case 's': // 1 string to match. 11682 if (BuiltinName.substr(22, 3) != "256") 11683 break; 11684 return Intrinsic::x86_avx_loadu_ps_256; // "__builtin_ia32_loadups256" 11685 } 11686 break; 11687 } 11688 break; 11689 case 'm': // 7 strings to match. 11690 switch (BuiltinName[16]) { 11691 default: break; 11692 case 'a': // 3 strings to match. 11693 if (BuiltinName.substr(17, 2) != "sk") 11694 break; 11695 switch (BuiltinName[19]) { 11696 default: break; 11697 case 'l': // 2 strings to match. 11698 if (BuiltinName.substr(20, 4) != "oadp") 11699 break; 11700 switch (BuiltinName[24]) { 11701 default: break; 11702 case 'd': // 1 string to match. 11703 return Intrinsic::x86_avx_maskload_pd; // "__builtin_ia32_maskloadpd" 11704 case 's': // 1 string to match. 11705 return Intrinsic::x86_avx_maskload_ps; // "__builtin_ia32_maskloadps" 11706 } 11707 break; 11708 case 'm': // 1 string to match. 11709 if (BuiltinName.substr(20, 5) != "ovdqu") 11710 break; 11711 return Intrinsic::x86_sse2_maskmov_dqu; // "__builtin_ia32_maskmovdqu" 11712 } 11713 break; 11714 case 'o': // 3 strings to match. 11715 if (BuiltinName.substr(17, 3) != "vnt") 11716 break; 11717 switch (BuiltinName[20]) { 11718 default: break; 11719 case 'd': // 1 string to match. 11720 if (BuiltinName.substr(21, 4) != "q256") 11721 break; 11722 return Intrinsic::x86_avx_movnt_dq_256; // "__builtin_ia32_movntdq256" 11723 case 'p': // 2 strings to match. 11724 switch (BuiltinName[21]) { 11725 default: break; 11726 case 'd': // 1 string to match. 11727 if (BuiltinName.substr(22, 3) != "256") 11728 break; 11729 return Intrinsic::x86_avx_movnt_pd_256; // "__builtin_ia32_movntpd256" 11730 case 's': // 1 string to match. 11731 if (BuiltinName.substr(22, 3) != "256") 11732 break; 11733 return Intrinsic::x86_avx_movnt_ps_256; // "__builtin_ia32_movntps256" 11734 } 11735 break; 11736 } 11737 break; 11738 case 'p': // 1 string to match. 11739 if (BuiltinName.substr(17, 8) != "sadbw128") 11740 break; 11741 return Intrinsic::x86_sse41_mpsadbw; // "__builtin_ia32_mpsadbw128" 11742 } 11743 break; 11744 case 'p': // 18 strings to match. 11745 switch (BuiltinName[16]) { 11746 default: break; 11747 case 'a': // 2 strings to match. 11748 if (BuiltinName.substr(17, 4) != "ddus") 11749 break; 11750 switch (BuiltinName[21]) { 11751 default: break; 11752 case 'b': // 1 string to match. 11753 if (BuiltinName.substr(22, 3) != "128") 11754 break; 11755 return Intrinsic::x86_sse2_paddus_b; // "__builtin_ia32_paddusb128" 11756 case 'w': // 1 string to match. 11757 if (BuiltinName.substr(22, 3) != "128") 11758 break; 11759 return Intrinsic::x86_sse2_paddus_w; // "__builtin_ia32_paddusw128" 11760 } 11761 break; 11762 case 'b': // 1 string to match. 11763 if (BuiltinName.substr(17, 8) != "lendw128") 11764 break; 11765 return Intrinsic::x86_sse41_pblendw; // "__builtin_ia32_pblendw128" 11766 case 'c': // 6 strings to match. 11767 if (BuiltinName.substr(17, 2) != "mp") 11768 break; 11769 switch (BuiltinName[19]) { 11770 default: break; 11771 case 'e': // 3 strings to match. 11772 if (BuiltinName[20] != 'q') 11773 break; 11774 switch (BuiltinName[21]) { 11775 default: break; 11776 case 'b': // 1 string to match. 11777 if (BuiltinName.substr(22, 3) != "128") 11778 break; 11779 return Intrinsic::x86_sse2_pcmpeq_b; // "__builtin_ia32_pcmpeqb128" 11780 case 'd': // 1 string to match. 11781 if (BuiltinName.substr(22, 3) != "128") 11782 break; 11783 return Intrinsic::x86_sse2_pcmpeq_d; // "__builtin_ia32_pcmpeqd128" 11784 case 'w': // 1 string to match. 11785 if (BuiltinName.substr(22, 3) != "128") 11786 break; 11787 return Intrinsic::x86_sse2_pcmpeq_w; // "__builtin_ia32_pcmpeqw128" 11788 } 11789 break; 11790 case 'g': // 3 strings to match. 11791 if (BuiltinName[20] != 't') 11792 break; 11793 switch (BuiltinName[21]) { 11794 default: break; 11795 case 'b': // 1 string to match. 11796 if (BuiltinName.substr(22, 3) != "128") 11797 break; 11798 return Intrinsic::x86_sse2_pcmpgt_b; // "__builtin_ia32_pcmpgtb128" 11799 case 'd': // 1 string to match. 11800 if (BuiltinName.substr(22, 3) != "128") 11801 break; 11802 return Intrinsic::x86_sse2_pcmpgt_d; // "__builtin_ia32_pcmpgtd128" 11803 case 'w': // 1 string to match. 11804 if (BuiltinName.substr(22, 3) != "128") 11805 break; 11806 return Intrinsic::x86_sse2_pcmpgt_w; // "__builtin_ia32_pcmpgtw128" 11807 } 11808 break; 11809 } 11810 break; 11811 case 'h': // 2 strings to match. 11812 switch (BuiltinName[17]) { 11813 default: break; 11814 case 'a': // 1 string to match. 11815 if (BuiltinName.substr(18, 7) != "ddsw128") 11816 break; 11817 return Intrinsic::x86_ssse3_phadd_sw_128; // "__builtin_ia32_phaddsw128" 11818 case 's': // 1 string to match. 11819 if (BuiltinName.substr(18, 7) != "ubsw128") 11820 break; 11821 return Intrinsic::x86_ssse3_phsub_sw_128; // "__builtin_ia32_phsubsw128" 11822 } 11823 break; 11824 case 'm': // 3 strings to match. 11825 switch (BuiltinName[17]) { 11826 default: break; 11827 case 'a': // 1 string to match. 11828 if (BuiltinName.substr(18, 7) != "ddwd128") 11829 break; 11830 return Intrinsic::x86_sse2_pmadd_wd; // "__builtin_ia32_pmaddwd128" 11831 case 'u': // 2 strings to match. 11832 if (BuiltinName[18] != 'l') 11833 break; 11834 switch (BuiltinName[19]) { 11835 default: break; 11836 case 'h': // 1 string to match. 11837 if (BuiltinName.substr(20, 5) != "uw128") 11838 break; 11839 return Intrinsic::x86_sse2_pmulhu_w; // "__builtin_ia32_pmulhuw128" 11840 case 'u': // 1 string to match. 11841 if (BuiltinName.substr(20, 5) != "dq128") 11842 break; 11843 return Intrinsic::x86_sse2_pmulu_dq; // "__builtin_ia32_pmuludq128" 11844 } 11845 break; 11846 } 11847 break; 11848 case 's': // 4 strings to match. 11849 switch (BuiltinName[17]) { 11850 default: break; 11851 case 'l': // 1 string to match. 11852 if (BuiltinName.substr(18, 7) != "ldqi128") 11853 break; 11854 return Intrinsic::x86_sse2_psll_dq; // "__builtin_ia32_pslldqi128" 11855 case 'r': // 1 string to match. 11856 if (BuiltinName.substr(18, 7) != "ldqi128") 11857 break; 11858 return Intrinsic::x86_sse2_psrl_dq; // "__builtin_ia32_psrldqi128" 11859 case 'u': // 2 strings to match. 11860 if (BuiltinName.substr(18, 3) != "bus") 11861 break; 11862 switch (BuiltinName[21]) { 11863 default: break; 11864 case 'b': // 1 string to match. 11865 if (BuiltinName.substr(22, 3) != "128") 11866 break; 11867 return Intrinsic::x86_sse2_psubus_b; // "__builtin_ia32_psubusb128" 11868 case 'w': // 1 string to match. 11869 if (BuiltinName.substr(22, 3) != "128") 11870 break; 11871 return Intrinsic::x86_sse2_psubus_w; // "__builtin_ia32_psubusw128" 11872 } 11873 break; 11874 } 11875 break; 11876 } 11877 break; 11878 case 'r': // 3 strings to match. 11879 switch (BuiltinName[16]) { 11880 default: break; 11881 case 'o': // 2 strings to match. 11882 if (BuiltinName.substr(17, 4) != "undp") 11883 break; 11884 switch (BuiltinName[21]) { 11885 default: break; 11886 case 'd': // 1 string to match. 11887 if (BuiltinName.substr(22, 3) != "256") 11888 break; 11889 return Intrinsic::x86_avx_round_pd_256; // "__builtin_ia32_roundpd256" 11890 case 's': // 1 string to match. 11891 if (BuiltinName.substr(22, 3) != "256") 11892 break; 11893 return Intrinsic::x86_avx_round_ps_256; // "__builtin_ia32_roundps256" 11894 } 11895 break; 11896 case 's': // 1 string to match. 11897 if (BuiltinName.substr(17, 8) != "qrtps256") 11898 break; 11899 return Intrinsic::x86_avx_rsqrt_ps_256; // "__builtin_ia32_rsqrtps256" 11900 } 11901 break; 11902 case 's': // 1 string to match. 11903 if (BuiltinName.substr(16, 9) != "torelv4si") 11904 break; 11905 return Intrinsic::x86_sse2_storel_dq; // "__builtin_ia32_storelv4si" 11906 case 'u': // 1 string to match. 11907 if (BuiltinName.substr(16, 9) != "comisdneq") 11908 break; 11909 return Intrinsic::x86_sse2_ucomineq_sd; // "__builtin_ia32_ucomisdneq" 11910 case 'v': // 3 strings to match. 11911 switch (BuiltinName[16]) { 11912 default: break; 11913 case 't': // 2 strings to match. 11914 if (BuiltinName.substr(17, 7) != "estnzcp") 11915 break; 11916 switch (BuiltinName[24]) { 11917 default: break; 11918 case 'd': // 1 string to match. 11919 return Intrinsic::x86_avx_vtestnzc_pd; // "__builtin_ia32_vtestnzcpd" 11920 case 's': // 1 string to match. 11921 return Intrinsic::x86_avx_vtestnzc_ps; // "__builtin_ia32_vtestnzcps" 11922 } 11923 break; 11924 case 'z': // 1 string to match. 11925 if (BuiltinName.substr(17, 8) != "eroupper") 11926 break; 11927 return Intrinsic::x86_avx_vzeroupper; // "__builtin_ia32_vzeroupper" 11928 } 11929 break; 11930 } 11931 break; 11932 case 26: // 45 strings to match. 11933 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 11934 break; 11935 switch (BuiltinName[15]) { 11936 default: break; 11937 case 'a': // 2 strings to match. 11938 if (BuiltinName.substr(16, 6) != "ddsubp") 11939 break; 11940 switch (BuiltinName[22]) { 11941 default: break; 11942 case 'd': // 1 string to match. 11943 if (BuiltinName.substr(23, 3) != "256") 11944 break; 11945 return Intrinsic::x86_avx_addsub_pd_256; // "__builtin_ia32_addsubpd256" 11946 case 's': // 1 string to match. 11947 if (BuiltinName.substr(23, 3) != "256") 11948 break; 11949 return Intrinsic::x86_avx_addsub_ps_256; // "__builtin_ia32_addsubps256" 11950 } 11951 break; 11952 case 'b': // 2 strings to match. 11953 if (BuiltinName.substr(16, 6) != "lendvp") 11954 break; 11955 switch (BuiltinName[22]) { 11956 default: break; 11957 case 'd': // 1 string to match. 11958 if (BuiltinName.substr(23, 3) != "256") 11959 break; 11960 return Intrinsic::x86_avx_blendv_pd_256; // "__builtin_ia32_blendvpd256" 11961 case 's': // 1 string to match. 11962 if (BuiltinName.substr(23, 3) != "256") 11963 break; 11964 return Intrinsic::x86_avx_blendv_ps_256; // "__builtin_ia32_blendvps256" 11965 } 11966 break; 11967 case 'c': // 8 strings to match. 11968 if (BuiltinName.substr(16, 2) != "vt") 11969 break; 11970 switch (BuiltinName[18]) { 11971 default: break; 11972 case 'd': // 2 strings to match. 11973 if (BuiltinName.substr(19, 3) != "q2p") 11974 break; 11975 switch (BuiltinName[22]) { 11976 default: break; 11977 case 'd': // 1 string to match. 11978 if (BuiltinName.substr(23, 3) != "256") 11979 break; 11980 return Intrinsic::x86_avx_cvtdq2_pd_256; // "__builtin_ia32_cvtdq2pd256" 11981 case 's': // 1 string to match. 11982 if (BuiltinName.substr(23, 3) != "256") 11983 break; 11984 return Intrinsic::x86_avx_cvtdq2_ps_256; // "__builtin_ia32_cvtdq2ps256" 11985 } 11986 break; 11987 case 'p': // 4 strings to match. 11988 switch (BuiltinName[19]) { 11989 default: break; 11990 case 'd': // 2 strings to match. 11991 if (BuiltinName[20] != '2') 11992 break; 11993 switch (BuiltinName[21]) { 11994 default: break; 11995 case 'd': // 1 string to match. 11996 if (BuiltinName.substr(22, 4) != "q256") 11997 break; 11998 return Intrinsic::x86_avx_cvt_pd2dq_256; // "__builtin_ia32_cvtpd2dq256" 11999 case 'p': // 1 string to match. 12000 if (BuiltinName.substr(22, 4) != "s256") 12001 break; 12002 return Intrinsic::x86_avx_cvt_pd2_ps_256; // "__builtin_ia32_cvtpd2ps256" 12003 } 12004 break; 12005 case 's': // 2 strings to match. 12006 if (BuiltinName[20] != '2') 12007 break; 12008 switch (BuiltinName[21]) { 12009 default: break; 12010 case 'd': // 1 string to match. 12011 if (BuiltinName.substr(22, 4) != "q256") 12012 break; 12013 return Intrinsic::x86_avx_cvt_ps2dq_256; // "__builtin_ia32_cvtps2dq256" 12014 case 'p': // 1 string to match. 12015 if (BuiltinName.substr(22, 4) != "d256") 12016 break; 12017 return Intrinsic::x86_avx_cvt_ps2_pd_256; // "__builtin_ia32_cvtps2pd256" 12018 } 12019 break; 12020 } 12021 break; 12022 case 't': // 2 strings to match. 12023 if (BuiltinName[19] != 's') 12024 break; 12025 switch (BuiltinName[20]) { 12026 default: break; 12027 case 'd': // 1 string to match. 12028 if (BuiltinName.substr(21, 5) != "2si64") 12029 break; 12030 return Intrinsic::x86_sse2_cvttsd2si64; // "__builtin_ia32_cvttsd2si64" 12031 case 's': // 1 string to match. 12032 if (BuiltinName.substr(21, 5) != "2si64") 12033 break; 12034 return Intrinsic::x86_sse_cvttss2si64; // "__builtin_ia32_cvttss2si64" 12035 } 12036 break; 12037 } 12038 break; 12039 case 'i': // 1 string to match. 12040 if (BuiltinName.substr(16, 10) != "nsertps128") 12041 break; 12042 return Intrinsic::x86_sse41_insertps; // "__builtin_ia32_insertps128" 12043 case 'm': // 4 strings to match. 12044 switch (BuiltinName[16]) { 12045 default: break; 12046 case 'a': // 2 strings to match. 12047 if (BuiltinName.substr(17, 8) != "skstorep") 12048 break; 12049 switch (BuiltinName[25]) { 12050 default: break; 12051 case 'd': // 1 string to match. 12052 return Intrinsic::x86_avx_maskstore_pd; // "__builtin_ia32_maskstorepd" 12053 case 's': // 1 string to match. 12054 return Intrinsic::x86_avx_maskstore_ps; // "__builtin_ia32_maskstoreps" 12055 } 12056 break; 12057 case 'o': // 2 strings to match. 12058 if (BuiltinName.substr(17, 5) != "vmskp") 12059 break; 12060 switch (BuiltinName[22]) { 12061 default: break; 12062 case 'd': // 1 string to match. 12063 if (BuiltinName.substr(23, 3) != "256") 12064 break; 12065 return Intrinsic::x86_avx_movmsk_pd_256; // "__builtin_ia32_movmskpd256" 12066 case 's': // 1 string to match. 12067 if (BuiltinName.substr(23, 3) != "256") 12068 break; 12069 return Intrinsic::x86_avx_movmsk_ps_256; // "__builtin_ia32_movmskps256" 12070 } 12071 break; 12072 } 12073 break; 12074 case 'p': // 21 strings to match. 12075 switch (BuiltinName[16]) { 12076 default: break; 12077 case 'a': // 4 strings to match. 12078 if (BuiltinName.substr(17, 2) != "ck") 12079 break; 12080 switch (BuiltinName[19]) { 12081 default: break; 12082 case 's': // 2 strings to match. 12083 if (BuiltinName[20] != 's') 12084 break; 12085 switch (BuiltinName[21]) { 12086 default: break; 12087 case 'd': // 1 string to match. 12088 if (BuiltinName.substr(22, 4) != "w128") 12089 break; 12090 return Intrinsic::x86_sse2_packssdw_128; // "__builtin_ia32_packssdw128" 12091 case 'w': // 1 string to match. 12092 if (BuiltinName.substr(22, 4) != "b128") 12093 break; 12094 return Intrinsic::x86_sse2_packsswb_128; // "__builtin_ia32_packsswb128" 12095 } 12096 break; 12097 case 'u': // 2 strings to match. 12098 if (BuiltinName[20] != 's') 12099 break; 12100 switch (BuiltinName[21]) { 12101 default: break; 12102 case 'd': // 1 string to match. 12103 if (BuiltinName.substr(22, 4) != "w128") 12104 break; 12105 return Intrinsic::x86_sse41_packusdw; // "__builtin_ia32_packusdw128" 12106 case 'w': // 1 string to match. 12107 if (BuiltinName.substr(22, 4) != "b128") 12108 break; 12109 return Intrinsic::x86_sse2_packuswb_128; // "__builtin_ia32_packuswb128" 12110 } 12111 break; 12112 } 12113 break; 12114 case 'b': // 1 string to match. 12115 if (BuiltinName.substr(17, 9) != "lendvb128") 12116 break; 12117 return Intrinsic::x86_sse41_pblendvb; // "__builtin_ia32_pblendvb128" 12118 case 'm': // 14 strings to match. 12119 switch (BuiltinName[17]) { 12120 default: break; 12121 case 'o': // 13 strings to match. 12122 if (BuiltinName[18] != 'v') 12123 break; 12124 switch (BuiltinName[19]) { 12125 default: break; 12126 case 'm': // 1 string to match. 12127 if (BuiltinName.substr(20, 6) != "skb128") 12128 break; 12129 return Intrinsic::x86_sse2_pmovmskb_128; // "__builtin_ia32_pmovmskb128" 12130 case 's': // 6 strings to match. 12131 if (BuiltinName[20] != 'x') 12132 break; 12133 switch (BuiltinName[21]) { 12134 default: break; 12135 case 'b': // 3 strings to match. 12136 switch (BuiltinName[22]) { 12137 default: break; 12138 case 'd': // 1 string to match. 12139 if (BuiltinName.substr(23, 3) != "128") 12140 break; 12141 return Intrinsic::x86_sse41_pmovsxbd; // "__builtin_ia32_pmovsxbd128" 12142 case 'q': // 1 string to match. 12143 if (BuiltinName.substr(23, 3) != "128") 12144 break; 12145 return Intrinsic::x86_sse41_pmovsxbq; // "__builtin_ia32_pmovsxbq128" 12146 case 'w': // 1 string to match. 12147 if (BuiltinName.substr(23, 3) != "128") 12148 break; 12149 return Intrinsic::x86_sse41_pmovsxbw; // "__builtin_ia32_pmovsxbw128" 12150 } 12151 break; 12152 case 'd': // 1 string to match. 12153 if (BuiltinName.substr(22, 4) != "q128") 12154 break; 12155 return Intrinsic::x86_sse41_pmovsxdq; // "__builtin_ia32_pmovsxdq128" 12156 case 'w': // 2 strings to match. 12157 switch (BuiltinName[22]) { 12158 default: break; 12159 case 'd': // 1 string to match. 12160 if (BuiltinName.substr(23, 3) != "128") 12161 break; 12162 return Intrinsic::x86_sse41_pmovsxwd; // "__builtin_ia32_pmovsxwd128" 12163 case 'q': // 1 string to match. 12164 if (BuiltinName.substr(23, 3) != "128") 12165 break; 12166 return Intrinsic::x86_sse41_pmovsxwq; // "__builtin_ia32_pmovsxwq128" 12167 } 12168 break; 12169 } 12170 break; 12171 case 'z': // 6 strings to match. 12172 if (BuiltinName[20] != 'x') 12173 break; 12174 switch (BuiltinName[21]) { 12175 default: break; 12176 case 'b': // 3 strings to match. 12177 switch (BuiltinName[22]) { 12178 default: break; 12179 case 'd': // 1 string to match. 12180 if (BuiltinName.substr(23, 3) != "128") 12181 break; 12182 return Intrinsic::x86_sse41_pmovzxbd; // "__builtin_ia32_pmovzxbd128" 12183 case 'q': // 1 string to match. 12184 if (BuiltinName.substr(23, 3) != "128") 12185 break; 12186 return Intrinsic::x86_sse41_pmovzxbq; // "__builtin_ia32_pmovzxbq128" 12187 case 'w': // 1 string to match. 12188 if (BuiltinName.substr(23, 3) != "128") 12189 break; 12190 return Intrinsic::x86_sse41_pmovzxbw; // "__builtin_ia32_pmovzxbw128" 12191 } 12192 break; 12193 case 'd': // 1 string to match. 12194 if (BuiltinName.substr(22, 4) != "q128") 12195 break; 12196 return Intrinsic::x86_sse41_pmovzxdq; // "__builtin_ia32_pmovzxdq128" 12197 case 'w': // 2 strings to match. 12198 switch (BuiltinName[22]) { 12199 default: break; 12200 case 'd': // 1 string to match. 12201 if (BuiltinName.substr(23, 3) != "128") 12202 break; 12203 return Intrinsic::x86_sse41_pmovzxwd; // "__builtin_ia32_pmovzxwd128" 12204 case 'q': // 1 string to match. 12205 if (BuiltinName.substr(23, 3) != "128") 12206 break; 12207 return Intrinsic::x86_sse41_pmovzxwq; // "__builtin_ia32_pmovzxwq128" 12208 } 12209 break; 12210 } 12211 break; 12212 } 12213 break; 12214 case 'u': // 1 string to match. 12215 if (BuiltinName.substr(18, 8) != "lhrsw128") 12216 break; 12217 return Intrinsic::x86_ssse3_pmul_hr_sw_128; // "__builtin_ia32_pmulhrsw128" 12218 } 12219 break; 12220 case 't': // 2 strings to match. 12221 if (BuiltinName.substr(17, 6) != "estnzc") 12222 break; 12223 switch (BuiltinName[23]) { 12224 default: break; 12225 case '1': // 1 string to match. 12226 if (BuiltinName.substr(24, 2) != "28") 12227 break; 12228 return Intrinsic::x86_sse41_ptestnzc; // "__builtin_ia32_ptestnzc128" 12229 case '2': // 1 string to match. 12230 if (BuiltinName.substr(24, 2) != "56") 12231 break; 12232 return Intrinsic::x86_avx_ptestnzc_256; // "__builtin_ia32_ptestnzc256" 12233 } 12234 break; 12235 } 12236 break; 12237 case 's': // 3 strings to match. 12238 if (BuiltinName.substr(16, 4) != "tore") 12239 break; 12240 switch (BuiltinName[20]) { 12241 default: break; 12242 case 'd': // 1 string to match. 12243 if (BuiltinName.substr(21, 5) != "qu256") 12244 break; 12245 return Intrinsic::x86_avx_storeu_dq_256; // "__builtin_ia32_storedqu256" 12246 case 'u': // 2 strings to match. 12247 if (BuiltinName[21] != 'p') 12248 break; 12249 switch (BuiltinName[22]) { 12250 default: break; 12251 case 'd': // 1 string to match. 12252 if (BuiltinName.substr(23, 3) != "256") 12253 break; 12254 return Intrinsic::x86_avx_storeu_pd_256; // "__builtin_ia32_storeupd256" 12255 case 's': // 1 string to match. 12256 if (BuiltinName.substr(23, 3) != "256") 12257 break; 12258 return Intrinsic::x86_avx_storeu_ps_256; // "__builtin_ia32_storeups256" 12259 } 12260 break; 12261 } 12262 break; 12263 case 'v': // 4 strings to match. 12264 if (BuiltinName.substr(16, 4) != "test") 12265 break; 12266 switch (BuiltinName[20]) { 12267 default: break; 12268 case 'c': // 2 strings to match. 12269 if (BuiltinName[21] != 'p') 12270 break; 12271 switch (BuiltinName[22]) { 12272 default: break; 12273 case 'd': // 1 string to match. 12274 if (BuiltinName.substr(23, 3) != "256") 12275 break; 12276 return Intrinsic::x86_avx_vtestc_pd_256; // "__builtin_ia32_vtestcpd256" 12277 case 's': // 1 string to match. 12278 if (BuiltinName.substr(23, 3) != "256") 12279 break; 12280 return Intrinsic::x86_avx_vtestc_ps_256; // "__builtin_ia32_vtestcps256" 12281 } 12282 break; 12283 case 'z': // 2 strings to match. 12284 if (BuiltinName[21] != 'p') 12285 break; 12286 switch (BuiltinName[22]) { 12287 default: break; 12288 case 'd': // 1 string to match. 12289 if (BuiltinName.substr(23, 3) != "256") 12290 break; 12291 return Intrinsic::x86_avx_vtestz_pd_256; // "__builtin_ia32_vtestzpd256" 12292 case 's': // 1 string to match. 12293 if (BuiltinName.substr(23, 3) != "256") 12294 break; 12295 return Intrinsic::x86_avx_vtestz_ps_256; // "__builtin_ia32_vtestzps256" 12296 } 12297 break; 12298 } 12299 break; 12300 } 12301 break; 12302 case 27: // 15 strings to match. 12303 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 12304 break; 12305 switch (BuiltinName[15]) { 12306 default: break; 12307 case 'c': // 2 strings to match. 12308 if (BuiltinName.substr(16, 4) != "vttp") 12309 break; 12310 switch (BuiltinName[20]) { 12311 default: break; 12312 case 'd': // 1 string to match. 12313 if (BuiltinName.substr(21, 6) != "2dq256") 12314 break; 12315 return Intrinsic::x86_avx_cvtt_pd2dq_256; // "__builtin_ia32_cvttpd2dq256" 12316 case 's': // 1 string to match. 12317 if (BuiltinName.substr(21, 6) != "2dq256") 12318 break; 12319 return Intrinsic::x86_avx_cvtt_ps2dq_256; // "__builtin_ia32_cvttps2dq256" 12320 } 12321 break; 12322 case 'e': // 1 string to match. 12323 if (BuiltinName.substr(16, 11) != "xtractps128") 12324 break; 12325 return Intrinsic::x86_sse41_extractps; // "__builtin_ia32_extractps128" 12326 case 'p': // 5 strings to match. 12327 switch (BuiltinName[16]) { 12328 default: break; 12329 case 'c': // 4 strings to match. 12330 if (BuiltinName.substr(17, 2) != "mp") 12331 break; 12332 switch (BuiltinName[19]) { 12333 default: break; 12334 case 'e': // 2 strings to match. 12335 if (BuiltinName.substr(20, 3) != "str") 12336 break; 12337 switch (BuiltinName[23]) { 12338 default: break; 12339 case 'i': // 1 string to match. 12340 if (BuiltinName.substr(24, 3) != "128") 12341 break; 12342 return Intrinsic::x86_sse42_pcmpestri128; // "__builtin_ia32_pcmpestri128" 12343 case 'm': // 1 string to match. 12344 if (BuiltinName.substr(24, 3) != "128") 12345 break; 12346 return Intrinsic::x86_sse42_pcmpestrm128; // "__builtin_ia32_pcmpestrm128" 12347 } 12348 break; 12349 case 'i': // 2 strings to match. 12350 if (BuiltinName.substr(20, 3) != "str") 12351 break; 12352 switch (BuiltinName[23]) { 12353 default: break; 12354 case 'i': // 1 string to match. 12355 if (BuiltinName.substr(24, 3) != "128") 12356 break; 12357 return Intrinsic::x86_sse42_pcmpistri128; // "__builtin_ia32_pcmpistri128" 12358 case 'm': // 1 string to match. 12359 if (BuiltinName.substr(24, 3) != "128") 12360 break; 12361 return Intrinsic::x86_sse42_pcmpistrm128; // "__builtin_ia32_pcmpistrm128" 12362 } 12363 break; 12364 } 12365 break; 12366 case 'm': // 1 string to match. 12367 if (BuiltinName.substr(17, 10) != "addubsw128") 12368 break; 12369 return Intrinsic::x86_ssse3_pmadd_ub_sw_128; // "__builtin_ia32_pmaddubsw128" 12370 } 12371 break; 12372 case 'v': // 7 strings to match. 12373 switch (BuiltinName[16]) { 12374 default: break; 12375 case 'b': // 1 string to match. 12376 if (BuiltinName.substr(17, 10) != "roadcastss") 12377 break; 12378 return Intrinsic::x86_avx_vbroadcastss; // "__builtin_ia32_vbroadcastss" 12379 case 'e': // 2 strings to match. 12380 if (BuiltinName.substr(17, 2) != "c_") 12381 break; 12382 switch (BuiltinName[19]) { 12383 default: break; 12384 case 'e': // 1 string to match. 12385 if (BuiltinName.substr(20, 7) != "xt_v4hi") 12386 break; 12387 return Intrinsic::x86_mmx_pextr_w; // "__builtin_ia32_vec_ext_v4hi" 12388 case 's': // 1 string to match. 12389 if (BuiltinName.substr(20, 7) != "et_v4hi") 12390 break; 12391 return Intrinsic::x86_mmx_pinsr_w; // "__builtin_ia32_vec_set_v4hi" 12392 } 12393 break; 12394 case 'p': // 4 strings to match. 12395 if (BuiltinName.substr(17, 5) != "ermil") 12396 break; 12397 switch (BuiltinName[22]) { 12398 default: break; 12399 case 'p': // 2 strings to match. 12400 switch (BuiltinName[23]) { 12401 default: break; 12402 case 'd': // 1 string to match. 12403 if (BuiltinName.substr(24, 3) != "256") 12404 break; 12405 return Intrinsic::x86_avx_vpermil_pd_256; // "__builtin_ia32_vpermilpd256" 12406 case 's': // 1 string to match. 12407 if (BuiltinName.substr(24, 3) != "256") 12408 break; 12409 return Intrinsic::x86_avx_vpermil_ps_256; // "__builtin_ia32_vpermilps256" 12410 } 12411 break; 12412 case 'v': // 2 strings to match. 12413 if (BuiltinName.substr(23, 3) != "arp") 12414 break; 12415 switch (BuiltinName[26]) { 12416 default: break; 12417 case 'd': // 1 string to match. 12418 return Intrinsic::x86_avx_vpermilvar_pd; // "__builtin_ia32_vpermilvarpd" 12419 case 's': // 1 string to match. 12420 return Intrinsic::x86_avx_vpermilvar_ps; // "__builtin_ia32_vpermilvarps" 12421 } 12422 break; 12423 } 12424 break; 12425 } 12426 break; 12427 } 12428 break; 12429 case 28: // 17 strings to match. 12430 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 12431 break; 12432 switch (BuiltinName[15]) { 12433 default: break; 12434 case 'a': // 2 strings to match. 12435 if (BuiltinName.substr(16, 2) != "es") 12436 break; 12437 switch (BuiltinName[18]) { 12438 default: break; 12439 case 'd': // 1 string to match. 12440 if (BuiltinName.substr(19, 9) != "eclast128") 12441 break; 12442 return Intrinsic::x86_aesni_aesdeclast; // "__builtin_ia32_aesdeclast128" 12443 case 'e': // 1 string to match. 12444 if (BuiltinName.substr(19, 9) != "nclast128") 12445 break; 12446 return Intrinsic::x86_aesni_aesenclast; // "__builtin_ia32_aesenclast128" 12447 } 12448 break; 12449 case 'm': // 2 strings to match. 12450 if (BuiltinName.substr(16, 8) != "askloadp") 12451 break; 12452 switch (BuiltinName[24]) { 12453 default: break; 12454 case 'd': // 1 string to match. 12455 if (BuiltinName.substr(25, 3) != "256") 12456 break; 12457 return Intrinsic::x86_avx_maskload_pd_256; // "__builtin_ia32_maskloadpd256" 12458 case 's': // 1 string to match. 12459 if (BuiltinName.substr(25, 3) != "256") 12460 break; 12461 return Intrinsic::x86_avx_maskload_ps_256; // "__builtin_ia32_maskloadps256" 12462 } 12463 break; 12464 case 'p': // 11 strings to match. 12465 switch (BuiltinName[16]) { 12466 default: break; 12467 case 'c': // 10 strings to match. 12468 if (BuiltinName.substr(17, 2) != "mp") 12469 break; 12470 switch (BuiltinName[19]) { 12471 default: break; 12472 case 'e': // 5 strings to match. 12473 if (BuiltinName.substr(20, 4) != "stri") 12474 break; 12475 switch (BuiltinName[24]) { 12476 default: break; 12477 case 'a': // 1 string to match. 12478 if (BuiltinName.substr(25, 3) != "128") 12479 break; 12480 return Intrinsic::x86_sse42_pcmpestria128; // "__builtin_ia32_pcmpestria128" 12481 case 'c': // 1 string to match. 12482 if (BuiltinName.substr(25, 3) != "128") 12483 break; 12484 return Intrinsic::x86_sse42_pcmpestric128; // "__builtin_ia32_pcmpestric128" 12485 case 'o': // 1 string to match. 12486 if (BuiltinName.substr(25, 3) != "128") 12487 break; 12488 return Intrinsic::x86_sse42_pcmpestrio128; // "__builtin_ia32_pcmpestrio128" 12489 case 's': // 1 string to match. 12490 if (BuiltinName.substr(25, 3) != "128") 12491 break; 12492 return Intrinsic::x86_sse42_pcmpestris128; // "__builtin_ia32_pcmpestris128" 12493 case 'z': // 1 string to match. 12494 if (BuiltinName.substr(25, 3) != "128") 12495 break; 12496 return Intrinsic::x86_sse42_pcmpestriz128; // "__builtin_ia32_pcmpestriz128" 12497 } 12498 break; 12499 case 'i': // 5 strings to match. 12500 if (BuiltinName.substr(20, 4) != "stri") 12501 break; 12502 switch (BuiltinName[24]) { 12503 default: break; 12504 case 'a': // 1 string to match. 12505 if (BuiltinName.substr(25, 3) != "128") 12506 break; 12507 return Intrinsic::x86_sse42_pcmpistria128; // "__builtin_ia32_pcmpistria128" 12508 case 'c': // 1 string to match. 12509 if (BuiltinName.substr(25, 3) != "128") 12510 break; 12511 return Intrinsic::x86_sse42_pcmpistric128; // "__builtin_ia32_pcmpistric128" 12512 case 'o': // 1 string to match. 12513 if (BuiltinName.substr(25, 3) != "128") 12514 break; 12515 return Intrinsic::x86_sse42_pcmpistrio128; // "__builtin_ia32_pcmpistrio128" 12516 case 's': // 1 string to match. 12517 if (BuiltinName.substr(25, 3) != "128") 12518 break; 12519 return Intrinsic::x86_sse42_pcmpistris128; // "__builtin_ia32_pcmpistris128" 12520 case 'z': // 1 string to match. 12521 if (BuiltinName.substr(25, 3) != "128") 12522 break; 12523 return Intrinsic::x86_sse42_pcmpistriz128; // "__builtin_ia32_pcmpistriz128" 12524 } 12525 break; 12526 } 12527 break; 12528 case 'h': // 1 string to match. 12529 if (BuiltinName.substr(17, 11) != "minposuw128") 12530 break; 12531 return Intrinsic::x86_sse41_phminposuw; // "__builtin_ia32_phminposuw128" 12532 } 12533 break; 12534 case 'v': // 2 strings to match. 12535 if (BuiltinName.substr(16, 8) != "testnzcp") 12536 break; 12537 switch (BuiltinName[24]) { 12538 default: break; 12539 case 'd': // 1 string to match. 12540 if (BuiltinName.substr(25, 3) != "256") 12541 break; 12542 return Intrinsic::x86_avx_vtestnzc_pd_256; // "__builtin_ia32_vtestnzcpd256" 12543 case 's': // 1 string to match. 12544 if (BuiltinName.substr(25, 3) != "256") 12545 break; 12546 return Intrinsic::x86_avx_vtestnzc_ps_256; // "__builtin_ia32_vtestnzcps256" 12547 } 12548 break; 12549 } 12550 break; 12551 case 29: // 2 strings to match. 12552 if (BuiltinName.substr(0, 25) != "__builtin_ia32_maskstorep") 12553 break; 12554 switch (BuiltinName[25]) { 12555 default: break; 12556 case 'd': // 1 string to match. 12557 if (BuiltinName.substr(26, 3) != "256") 12558 break; 12559 return Intrinsic::x86_avx_maskstore_pd_256; // "__builtin_ia32_maskstorepd256" 12560 case 's': // 1 string to match. 12561 if (BuiltinName.substr(26, 3) != "256") 12562 break; 12563 return Intrinsic::x86_avx_maskstore_ps_256; // "__builtin_ia32_maskstoreps256" 12564 } 12565 break; 12566 case 30: // 4 strings to match. 12567 if (BuiltinName.substr(0, 16) != "__builtin_ia32_v") 12568 break; 12569 switch (BuiltinName[16]) { 12570 default: break; 12571 case 'b': // 2 strings to match. 12572 if (BuiltinName.substr(17, 9) != "roadcasts") 12573 break; 12574 switch (BuiltinName[26]) { 12575 default: break; 12576 case 'd': // 1 string to match. 12577 if (BuiltinName.substr(27, 3) != "256") 12578 break; 12579 return Intrinsic::x86_avx_vbroadcast_sd_256; // "__builtin_ia32_vbroadcastsd256" 12580 case 's': // 1 string to match. 12581 if (BuiltinName.substr(27, 3) != "256") 12582 break; 12583 return Intrinsic::x86_avx_vbroadcastss_256; // "__builtin_ia32_vbroadcastss256" 12584 } 12585 break; 12586 case 'p': // 2 strings to match. 12587 if (BuiltinName.substr(17, 9) != "ermilvarp") 12588 break; 12589 switch (BuiltinName[26]) { 12590 default: break; 12591 case 'd': // 1 string to match. 12592 if (BuiltinName.substr(27, 3) != "256") 12593 break; 12594 return Intrinsic::x86_avx_vpermilvar_pd_256; // "__builtin_ia32_vpermilvarpd256" 12595 case 's': // 1 string to match. 12596 if (BuiltinName.substr(27, 3) != "256") 12597 break; 12598 return Intrinsic::x86_avx_vpermilvar_ps_256; // "__builtin_ia32_vpermilvarps256" 12599 } 12600 break; 12601 } 12602 break; 12603 case 31: // 3 strings to match. 12604 if (BuiltinName.substr(0, 26) != "__builtin_ia32_vperm2f128_") 12605 break; 12606 switch (BuiltinName[26]) { 12607 default: break; 12608 case 'p': // 2 strings to match. 12609 switch (BuiltinName[27]) { 12610 default: break; 12611 case 'd': // 1 string to match. 12612 if (BuiltinName.substr(28, 3) != "256") 12613 break; 12614 return Intrinsic::x86_avx_vperm2f128_pd_256; // "__builtin_ia32_vperm2f128_pd256" 12615 case 's': // 1 string to match. 12616 if (BuiltinName.substr(28, 3) != "256") 12617 break; 12618 return Intrinsic::x86_avx_vperm2f128_ps_256; // "__builtin_ia32_vperm2f128_ps256" 12619 } 12620 break; 12621 case 's': // 1 string to match. 12622 if (BuiltinName.substr(27, 4) != "i256") 12623 break; 12624 return Intrinsic::x86_avx_vperm2f128_si_256; // "__builtin_ia32_vperm2f128_si256" 12625 } 12626 break; 12627 case 32: // 3 strings to match. 12628 if (BuiltinName.substr(0, 27) != "__builtin_ia32_vinsertf128_") 12629 break; 12630 switch (BuiltinName[27]) { 12631 default: break; 12632 case 'p': // 2 strings to match. 12633 switch (BuiltinName[28]) { 12634 default: break; 12635 case 'd': // 1 string to match. 12636 if (BuiltinName.substr(29, 3) != "256") 12637 break; 12638 return Intrinsic::x86_avx_vinsertf128_pd_256; // "__builtin_ia32_vinsertf128_pd256" 12639 case 's': // 1 string to match. 12640 if (BuiltinName.substr(29, 3) != "256") 12641 break; 12642 return Intrinsic::x86_avx_vinsertf128_ps_256; // "__builtin_ia32_vinsertf128_ps256" 12643 } 12644 break; 12645 case 's': // 1 string to match. 12646 if (BuiltinName.substr(28, 4) != "i256") 12647 break; 12648 return Intrinsic::x86_avx_vinsertf128_si_256; // "__builtin_ia32_vinsertf128_si256" 12649 } 12650 break; 12651 case 33: // 4 strings to match. 12652 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 12653 break; 12654 switch (BuiltinName[15]) { 12655 default: break; 12656 case 'a': // 1 string to match. 12657 if (BuiltinName.substr(16, 17) != "eskeygenassist128") 12658 break; 12659 return Intrinsic::x86_aesni_aeskeygenassist; // "__builtin_ia32_aeskeygenassist128" 12660 case 'v': // 3 strings to match. 12661 if (BuiltinName.substr(16, 12) != "extractf128_") 12662 break; 12663 switch (BuiltinName[28]) { 12664 default: break; 12665 case 'p': // 2 strings to match. 12666 switch (BuiltinName[29]) { 12667 default: break; 12668 case 'd': // 1 string to match. 12669 if (BuiltinName.substr(30, 3) != "256") 12670 break; 12671 return Intrinsic::x86_avx_vextractf128_pd_256; // "__builtin_ia32_vextractf128_pd256" 12672 case 's': // 1 string to match. 12673 if (BuiltinName.substr(30, 3) != "256") 12674 break; 12675 return Intrinsic::x86_avx_vextractf128_ps_256; // "__builtin_ia32_vextractf128_ps256" 12676 } 12677 break; 12678 case 's': // 1 string to match. 12679 if (BuiltinName.substr(29, 4) != "i256") 12680 break; 12681 return Intrinsic::x86_avx_vextractf128_si_256; // "__builtin_ia32_vextractf128_si256" 12682 } 12683 break; 12684 } 12685 break; 12686 case 35: // 4 strings to match. 12687 if (BuiltinName.substr(0, 15) != "__builtin_ia32_") 12688 break; 12689 switch (BuiltinName[15]) { 12690 default: break; 12691 case 'p': // 2 strings to match. 12692 if (BuiltinName[16] != 's') 12693 break; 12694 switch (BuiltinName[17]) { 12695 default: break; 12696 case 'l': // 1 string to match. 12697 if (BuiltinName.substr(18, 17) != "ldqi128_byteshift") 12698 break; 12699 return Intrinsic::x86_sse2_psll_dq_bs; // "__builtin_ia32_pslldqi128_byteshift" 12700 case 'r': // 1 string to match. 12701 if (BuiltinName.substr(18, 17) != "ldqi128_byteshift") 12702 break; 12703 return Intrinsic::x86_sse2_psrl_dq_bs; // "__builtin_ia32_psrldqi128_byteshift" 12704 } 12705 break; 12706 case 'v': // 2 strings to match. 12707 if (BuiltinName.substr(16, 15) != "broadcastf128_p") 12708 break; 12709 switch (BuiltinName[31]) { 12710 default: break; 12711 case 'd': // 1 string to match. 12712 if (BuiltinName.substr(32, 3) != "256") 12713 break; 12714 return Intrinsic::x86_avx_vbroadcastf128_pd_256; // "__builtin_ia32_vbroadcastf128_pd256" 12715 case 's': // 1 string to match. 12716 if (BuiltinName.substr(32, 3) != "256") 12717 break; 12718 return Intrinsic::x86_avx_vbroadcastf128_ps_256; // "__builtin_ia32_vbroadcastf128_ps256" 12719 } 12720 break; 12721 } 12722 break; 12723 } 12724 } 12725 return Intrinsic::not_intrinsic; 12726 } 12727 #endif 12728 12729 #if defined(_MSC_VER) && defined(setjmp_undefined_for_msvc) 12730 // let's return it to _setjmp state 12731 # pragma pop_macro("setjmp") 12732 # undef setjmp_undefined_for_msvc 12733 #endif 12734 12735