//===- TableGen'erated file -------------------------------------*- C++ -*-===// // // Intrinsic Function Source Fragment // // Automatically generated file, do not edit! // //===----------------------------------------------------------------------===// // VisualStudio defines setjmp as _setjmp #if defined(_MSC_VER) && defined(setjmp) && \ !defined(setjmp_undefined_for_msvc) # pragma push_macro("setjmp") # undef setjmp # define setjmp_undefined_for_msvc #endif // Enum values for Intrinsics.h #ifdef GET_INTRINSIC_ENUM_VALUES adjust_trampoline, // llvm.adjust.trampoline annotation, // llvm.annotation bswap, // llvm.bswap convert_from_fp16, // llvm.convert.from.fp16 convert_to_fp16, // llvm.convert.to.fp16 convertff, // llvm.convertff convertfsi, // llvm.convertfsi convertfui, // llvm.convertfui convertsif, // llvm.convertsif convertss, // llvm.convertss convertsu, // llvm.convertsu convertuif, // llvm.convertuif convertus, // llvm.convertus convertuu, // llvm.convertuu cos, // llvm.cos ctlz, // llvm.ctlz ctpop, // llvm.ctpop cttz, // llvm.cttz dbg_declare, // llvm.dbg.declare dbg_value, // llvm.dbg.value eh_dwarf_cfa, // llvm.eh.dwarf.cfa eh_exception, // llvm.eh.exception eh_resume, // llvm.eh.resume eh_return_i32, // llvm.eh.return.i32 eh_return_i64, // llvm.eh.return.i64 eh_selector, // llvm.eh.selector eh_sjlj_callsite, // llvm.eh.sjlj.callsite eh_sjlj_dispatch_setup, // llvm.eh.sjlj.dispatch.setup eh_sjlj_functioncontext, // llvm.eh.sjlj.functioncontext eh_sjlj_longjmp, // llvm.eh.sjlj.longjmp eh_sjlj_lsda, // llvm.eh.sjlj.lsda eh_sjlj_setjmp, // llvm.eh.sjlj.setjmp eh_typeid_for, // llvm.eh.typeid.for eh_unwind_init, // llvm.eh.unwind.init exp, // llvm.exp exp2, // llvm.exp2 expect, // llvm.expect flt_rounds, // llvm.flt.rounds fma, // llvm.fma frameaddress, // llvm.frameaddress gcread, // llvm.gcread gcroot, // llvm.gcroot gcwrite, // llvm.gcwrite init_trampoline, // llvm.init.trampoline invariant_end, // llvm.invariant.end invariant_start, // llvm.invariant.start lifetime_end, // llvm.lifetime.end lifetime_start, // llvm.lifetime.start log, // llvm.log log10, // llvm.log10 log2, // llvm.log2 longjmp, // llvm.longjmp memcpy, // llvm.memcpy memmove, // llvm.memmove memset, // llvm.memset objectsize, // llvm.objectsize pcmarker, // llvm.pcmarker pow, // llvm.pow powi, // llvm.powi prefetch, // llvm.prefetch ptr_annotation, // llvm.ptr.annotation readcyclecounter, // llvm.readcyclecounter returnaddress, // llvm.returnaddress sadd_with_overflow, // llvm.sadd.with.overflow setjmp, // llvm.setjmp siglongjmp, // llvm.siglongjmp sigsetjmp, // llvm.sigsetjmp sin, // llvm.sin smul_with_overflow, // llvm.smul.with.overflow sqrt, // llvm.sqrt ssub_with_overflow, // llvm.ssub.with.overflow stackprotector, // llvm.stackprotector stackrestore, // llvm.stackrestore stacksave, // llvm.stacksave trap, // llvm.trap uadd_with_overflow, // llvm.uadd.with.overflow umul_with_overflow, // llvm.umul.with.overflow usub_with_overflow, // llvm.usub.with.overflow vacopy, // llvm.va_copy vaend, // llvm.va_end var_annotation, // llvm.var.annotation vastart, // llvm.va_start x86_3dnow_pavgusb, // llvm.x86.3dnow.pavgusb x86_3dnow_pf2id, // llvm.x86.3dnow.pf2id x86_3dnow_pfacc, // llvm.x86.3dnow.pfacc x86_3dnow_pfadd, // llvm.x86.3dnow.pfadd x86_3dnow_pfcmpeq, // llvm.x86.3dnow.pfcmpeq x86_3dnow_pfcmpge, // llvm.x86.3dnow.pfcmpge x86_3dnow_pfcmpgt, // llvm.x86.3dnow.pfcmpgt x86_3dnow_pfmax, // llvm.x86.3dnow.pfmax x86_3dnow_pfmin, // llvm.x86.3dnow.pfmin x86_3dnow_pfmul, // llvm.x86.3dnow.pfmul x86_3dnow_pfrcp, // llvm.x86.3dnow.pfrcp x86_3dnow_pfrcpit1, // llvm.x86.3dnow.pfrcpit1 x86_3dnow_pfrcpit2, // llvm.x86.3dnow.pfrcpit2 x86_3dnow_pfrsqit1, // llvm.x86.3dnow.pfrsqit1 x86_3dnow_pfrsqrt, // llvm.x86.3dnow.pfrsqrt x86_3dnow_pfsub, // llvm.x86.3dnow.pfsub x86_3dnow_pfsubr, // llvm.x86.3dnow.pfsubr x86_3dnow_pi2fd, // llvm.x86.3dnow.pi2fd x86_3dnow_pmulhrw, // llvm.x86.3dnow.pmulhrw x86_3dnowa_pf2iw, // llvm.x86.3dnowa.pf2iw x86_3dnowa_pfnacc, // llvm.x86.3dnowa.pfnacc x86_3dnowa_pfpnacc, // llvm.x86.3dnowa.pfpnacc x86_3dnowa_pi2fw, // llvm.x86.3dnowa.pi2fw x86_3dnowa_pswapd, // llvm.x86.3dnowa.pswapd x86_aesni_aesdec, // llvm.x86.aesni.aesdec x86_aesni_aesdeclast, // llvm.x86.aesni.aesdeclast x86_aesni_aesenc, // llvm.x86.aesni.aesenc x86_aesni_aesenclast, // llvm.x86.aesni.aesenclast x86_aesni_aesimc, // llvm.x86.aesni.aesimc x86_aesni_aeskeygenassist, // llvm.x86.aesni.aeskeygenassist x86_avx_addsub_pd_256, // llvm.x86.avx.addsub.pd.256 x86_avx_addsub_ps_256, // llvm.x86.avx.addsub.ps.256 x86_avx_blend_pd_256, // llvm.x86.avx.blend.pd.256 x86_avx_blend_ps_256, // llvm.x86.avx.blend.ps.256 x86_avx_blendv_pd_256, // llvm.x86.avx.blendv.pd.256 x86_avx_blendv_ps_256, // llvm.x86.avx.blendv.ps.256 x86_avx_cmp_pd_256, // llvm.x86.avx.cmp.pd.256 x86_avx_cmp_ps_256, // llvm.x86.avx.cmp.ps.256 x86_avx_cvt_pd2_ps_256, // llvm.x86.avx.cvt.pd2.ps.256 x86_avx_cvt_pd2dq_256, // llvm.x86.avx.cvt.pd2dq.256 x86_avx_cvt_ps2_pd_256, // llvm.x86.avx.cvt.ps2.pd.256 x86_avx_cvt_ps2dq_256, // llvm.x86.avx.cvt.ps2dq.256 x86_avx_cvtdq2_pd_256, // llvm.x86.avx.cvtdq2.pd.256 x86_avx_cvtdq2_ps_256, // llvm.x86.avx.cvtdq2.ps.256 x86_avx_cvtt_pd2dq_256, // llvm.x86.avx.cvtt.pd2dq.256 x86_avx_cvtt_ps2dq_256, // llvm.x86.avx.cvtt.ps2dq.256 x86_avx_dp_ps_256, // llvm.x86.avx.dp.ps.256 x86_avx_hadd_pd_256, // llvm.x86.avx.hadd.pd.256 x86_avx_hadd_ps_256, // llvm.x86.avx.hadd.ps.256 x86_avx_hsub_pd_256, // llvm.x86.avx.hsub.pd.256 x86_avx_hsub_ps_256, // llvm.x86.avx.hsub.ps.256 x86_avx_ldu_dq_256, // llvm.x86.avx.ldu.dq.256 x86_avx_loadu_dq_256, // llvm.x86.avx.loadu.dq.256 x86_avx_loadu_pd_256, // llvm.x86.avx.loadu.pd.256 x86_avx_loadu_ps_256, // llvm.x86.avx.loadu.ps.256 x86_avx_maskload_pd, // llvm.x86.avx.maskload.pd x86_avx_maskload_pd_256, // llvm.x86.avx.maskload.pd.256 x86_avx_maskload_ps, // llvm.x86.avx.maskload.ps x86_avx_maskload_ps_256, // llvm.x86.avx.maskload.ps.256 x86_avx_maskstore_pd, // llvm.x86.avx.maskstore.pd x86_avx_maskstore_pd_256, // llvm.x86.avx.maskstore.pd.256 x86_avx_maskstore_ps, // llvm.x86.avx.maskstore.ps x86_avx_maskstore_ps_256, // llvm.x86.avx.maskstore.ps.256 x86_avx_max_pd_256, // llvm.x86.avx.max.pd.256 x86_avx_max_ps_256, // llvm.x86.avx.max.ps.256 x86_avx_min_pd_256, // llvm.x86.avx.min.pd.256 x86_avx_min_ps_256, // llvm.x86.avx.min.ps.256 x86_avx_movmsk_pd_256, // llvm.x86.avx.movmsk.pd.256 x86_avx_movmsk_ps_256, // llvm.x86.avx.movmsk.ps.256 x86_avx_movnt_dq_256, // llvm.x86.avx.movnt.dq.256 x86_avx_movnt_pd_256, // llvm.x86.avx.movnt.pd.256 x86_avx_movnt_ps_256, // llvm.x86.avx.movnt.ps.256 x86_avx_ptestc_256, // llvm.x86.avx.ptestc.256 x86_avx_ptestnzc_256, // llvm.x86.avx.ptestnzc.256 x86_avx_ptestz_256, // llvm.x86.avx.ptestz.256 x86_avx_rcp_ps_256, // llvm.x86.avx.rcp.ps.256 x86_avx_round_pd_256, // llvm.x86.avx.round.pd.256 x86_avx_round_ps_256, // llvm.x86.avx.round.ps.256 x86_avx_rsqrt_ps_256, // llvm.x86.avx.rsqrt.ps.256 x86_avx_sqrt_pd_256, // llvm.x86.avx.sqrt.pd.256 x86_avx_sqrt_ps_256, // llvm.x86.avx.sqrt.ps.256 x86_avx_storeu_dq_256, // llvm.x86.avx.storeu.dq.256 x86_avx_storeu_pd_256, // llvm.x86.avx.storeu.pd.256 x86_avx_storeu_ps_256, // llvm.x86.avx.storeu.ps.256 x86_avx_vbroadcast_sd_256, // llvm.x86.avx.vbroadcast.sd.256 x86_avx_vbroadcastf128_pd_256, // llvm.x86.avx.vbroadcastf128.pd.256 x86_avx_vbroadcastf128_ps_256, // llvm.x86.avx.vbroadcastf128.ps.256 x86_avx_vbroadcastss, // llvm.x86.avx.vbroadcastss x86_avx_vbroadcastss_256, // llvm.x86.avx.vbroadcastss.256 x86_avx_vextractf128_pd_256, // llvm.x86.avx.vextractf128.pd.256 x86_avx_vextractf128_ps_256, // llvm.x86.avx.vextractf128.ps.256 x86_avx_vextractf128_si_256, // llvm.x86.avx.vextractf128.si.256 x86_avx_vinsertf128_pd_256, // llvm.x86.avx.vinsertf128.pd.256 x86_avx_vinsertf128_ps_256, // llvm.x86.avx.vinsertf128.ps.256 x86_avx_vinsertf128_si_256, // llvm.x86.avx.vinsertf128.si.256 x86_avx_vperm2f128_pd_256, // llvm.x86.avx.vperm2f128.pd.256 x86_avx_vperm2f128_ps_256, // llvm.x86.avx.vperm2f128.ps.256 x86_avx_vperm2f128_si_256, // llvm.x86.avx.vperm2f128.si.256 x86_avx_vpermil_pd, // llvm.x86.avx.vpermil.pd x86_avx_vpermil_pd_256, // llvm.x86.avx.vpermil.pd.256 x86_avx_vpermil_ps, // llvm.x86.avx.vpermil.ps x86_avx_vpermil_ps_256, // llvm.x86.avx.vpermil.ps.256 x86_avx_vpermilvar_pd, // llvm.x86.avx.vpermilvar.pd x86_avx_vpermilvar_pd_256, // llvm.x86.avx.vpermilvar.pd.256 x86_avx_vpermilvar_ps, // llvm.x86.avx.vpermilvar.ps x86_avx_vpermilvar_ps_256, // llvm.x86.avx.vpermilvar.ps.256 x86_avx_vtestc_pd, // llvm.x86.avx.vtestc.pd x86_avx_vtestc_pd_256, // llvm.x86.avx.vtestc.pd.256 x86_avx_vtestc_ps, // llvm.x86.avx.vtestc.ps x86_avx_vtestc_ps_256, // llvm.x86.avx.vtestc.ps.256 x86_avx_vtestnzc_pd, // llvm.x86.avx.vtestnzc.pd x86_avx_vtestnzc_pd_256, // llvm.x86.avx.vtestnzc.pd.256 x86_avx_vtestnzc_ps, // llvm.x86.avx.vtestnzc.ps x86_avx_vtestnzc_ps_256, // llvm.x86.avx.vtestnzc.ps.256 x86_avx_vtestz_pd, // llvm.x86.avx.vtestz.pd x86_avx_vtestz_pd_256, // llvm.x86.avx.vtestz.pd.256 x86_avx_vtestz_ps, // llvm.x86.avx.vtestz.ps x86_avx_vtestz_ps_256, // llvm.x86.avx.vtestz.ps.256 x86_avx_vzeroall, // llvm.x86.avx.vzeroall x86_avx_vzeroupper, // llvm.x86.avx.vzeroupper x86_int, // llvm.x86.int x86_mmx_emms, // llvm.x86.mmx.emms x86_mmx_femms, // llvm.x86.mmx.femms x86_mmx_maskmovq, // llvm.x86.mmx.maskmovq x86_mmx_movnt_dq, // llvm.x86.mmx.movnt.dq x86_mmx_packssdw, // llvm.x86.mmx.packssdw x86_mmx_packsswb, // llvm.x86.mmx.packsswb x86_mmx_packuswb, // llvm.x86.mmx.packuswb x86_mmx_padd_b, // llvm.x86.mmx.padd.b x86_mmx_padd_d, // llvm.x86.mmx.padd.d x86_mmx_padd_q, // llvm.x86.mmx.padd.q x86_mmx_padd_w, // llvm.x86.mmx.padd.w x86_mmx_padds_b, // llvm.x86.mmx.padds.b x86_mmx_padds_w, // llvm.x86.mmx.padds.w x86_mmx_paddus_b, // llvm.x86.mmx.paddus.b x86_mmx_paddus_w, // llvm.x86.mmx.paddus.w x86_mmx_palignr_b, // llvm.x86.mmx.palignr.b x86_mmx_pand, // llvm.x86.mmx.pand x86_mmx_pandn, // llvm.x86.mmx.pandn x86_mmx_pavg_b, // llvm.x86.mmx.pavg.b x86_mmx_pavg_w, // llvm.x86.mmx.pavg.w x86_mmx_pcmpeq_b, // llvm.x86.mmx.pcmpeq.b x86_mmx_pcmpeq_d, // llvm.x86.mmx.pcmpeq.d x86_mmx_pcmpeq_w, // llvm.x86.mmx.pcmpeq.w x86_mmx_pcmpgt_b, // llvm.x86.mmx.pcmpgt.b x86_mmx_pcmpgt_d, // llvm.x86.mmx.pcmpgt.d x86_mmx_pcmpgt_w, // llvm.x86.mmx.pcmpgt.w x86_mmx_pextr_w, // llvm.x86.mmx.pextr.w x86_mmx_pinsr_w, // llvm.x86.mmx.pinsr.w x86_mmx_pmadd_wd, // llvm.x86.mmx.pmadd.wd x86_mmx_pmaxs_w, // llvm.x86.mmx.pmaxs.w x86_mmx_pmaxu_b, // llvm.x86.mmx.pmaxu.b x86_mmx_pmins_w, // llvm.x86.mmx.pmins.w x86_mmx_pminu_b, // llvm.x86.mmx.pminu.b x86_mmx_pmovmskb, // llvm.x86.mmx.pmovmskb x86_mmx_pmulh_w, // llvm.x86.mmx.pmulh.w x86_mmx_pmulhu_w, // llvm.x86.mmx.pmulhu.w x86_mmx_pmull_w, // llvm.x86.mmx.pmull.w x86_mmx_pmulu_dq, // llvm.x86.mmx.pmulu.dq x86_mmx_por, // llvm.x86.mmx.por x86_mmx_psad_bw, // llvm.x86.mmx.psad.bw x86_mmx_psll_d, // llvm.x86.mmx.psll.d x86_mmx_psll_q, // llvm.x86.mmx.psll.q x86_mmx_psll_w, // llvm.x86.mmx.psll.w x86_mmx_pslli_d, // llvm.x86.mmx.pslli.d x86_mmx_pslli_q, // llvm.x86.mmx.pslli.q x86_mmx_pslli_w, // llvm.x86.mmx.pslli.w x86_mmx_psra_d, // llvm.x86.mmx.psra.d x86_mmx_psra_w, // llvm.x86.mmx.psra.w x86_mmx_psrai_d, // llvm.x86.mmx.psrai.d x86_mmx_psrai_w, // llvm.x86.mmx.psrai.w x86_mmx_psrl_d, // llvm.x86.mmx.psrl.d x86_mmx_psrl_q, // llvm.x86.mmx.psrl.q x86_mmx_psrl_w, // llvm.x86.mmx.psrl.w x86_mmx_psrli_d, // llvm.x86.mmx.psrli.d x86_mmx_psrli_q, // llvm.x86.mmx.psrli.q x86_mmx_psrli_w, // llvm.x86.mmx.psrli.w x86_mmx_psub_b, // llvm.x86.mmx.psub.b x86_mmx_psub_d, // llvm.x86.mmx.psub.d x86_mmx_psub_q, // llvm.x86.mmx.psub.q x86_mmx_psub_w, // llvm.x86.mmx.psub.w x86_mmx_psubs_b, // llvm.x86.mmx.psubs.b x86_mmx_psubs_w, // llvm.x86.mmx.psubs.w x86_mmx_psubus_b, // llvm.x86.mmx.psubus.b x86_mmx_psubus_w, // llvm.x86.mmx.psubus.w x86_mmx_punpckhbw, // llvm.x86.mmx.punpckhbw x86_mmx_punpckhdq, // llvm.x86.mmx.punpckhdq x86_mmx_punpckhwd, // llvm.x86.mmx.punpckhwd x86_mmx_punpcklbw, // llvm.x86.mmx.punpcklbw x86_mmx_punpckldq, // llvm.x86.mmx.punpckldq x86_mmx_punpcklwd, // llvm.x86.mmx.punpcklwd x86_mmx_pxor, // llvm.x86.mmx.pxor x86_sse2_add_sd, // llvm.x86.sse2.add.sd x86_sse2_clflush, // llvm.x86.sse2.clflush x86_sse2_cmp_pd, // llvm.x86.sse2.cmp.pd x86_sse2_cmp_sd, // llvm.x86.sse2.cmp.sd x86_sse2_comieq_sd, // llvm.x86.sse2.comieq.sd x86_sse2_comige_sd, // llvm.x86.sse2.comige.sd x86_sse2_comigt_sd, // llvm.x86.sse2.comigt.sd x86_sse2_comile_sd, // llvm.x86.sse2.comile.sd x86_sse2_comilt_sd, // llvm.x86.sse2.comilt.sd x86_sse2_comineq_sd, // llvm.x86.sse2.comineq.sd x86_sse2_cvtdq2pd, // llvm.x86.sse2.cvtdq2pd x86_sse2_cvtdq2ps, // llvm.x86.sse2.cvtdq2ps x86_sse2_cvtpd2dq, // llvm.x86.sse2.cvtpd2dq x86_sse2_cvtpd2ps, // llvm.x86.sse2.cvtpd2ps x86_sse2_cvtps2dq, // llvm.x86.sse2.cvtps2dq x86_sse2_cvtps2pd, // llvm.x86.sse2.cvtps2pd x86_sse2_cvtsd2si, // llvm.x86.sse2.cvtsd2si x86_sse2_cvtsd2si64, // llvm.x86.sse2.cvtsd2si64 x86_sse2_cvtsd2ss, // llvm.x86.sse2.cvtsd2ss x86_sse2_cvtsi2sd, // llvm.x86.sse2.cvtsi2sd x86_sse2_cvtsi642sd, // llvm.x86.sse2.cvtsi642sd x86_sse2_cvtss2sd, // llvm.x86.sse2.cvtss2sd x86_sse2_cvttpd2dq, // llvm.x86.sse2.cvttpd2dq x86_sse2_cvttps2dq, // llvm.x86.sse2.cvttps2dq x86_sse2_cvttsd2si, // llvm.x86.sse2.cvttsd2si x86_sse2_cvttsd2si64, // llvm.x86.sse2.cvttsd2si64 x86_sse2_div_sd, // llvm.x86.sse2.div.sd x86_sse2_lfence, // llvm.x86.sse2.lfence x86_sse2_maskmov_dqu, // llvm.x86.sse2.maskmov.dqu x86_sse2_max_pd, // llvm.x86.sse2.max.pd x86_sse2_max_sd, // llvm.x86.sse2.max.sd x86_sse2_mfence, // llvm.x86.sse2.mfence x86_sse2_min_pd, // llvm.x86.sse2.min.pd x86_sse2_min_sd, // llvm.x86.sse2.min.sd x86_sse2_movmsk_pd, // llvm.x86.sse2.movmsk.pd x86_sse2_mul_sd, // llvm.x86.sse2.mul.sd x86_sse2_packssdw_128, // llvm.x86.sse2.packssdw.128 x86_sse2_packsswb_128, // llvm.x86.sse2.packsswb.128 x86_sse2_packuswb_128, // llvm.x86.sse2.packuswb.128 x86_sse2_padds_b, // llvm.x86.sse2.padds.b x86_sse2_padds_w, // llvm.x86.sse2.padds.w x86_sse2_paddus_b, // llvm.x86.sse2.paddus.b x86_sse2_paddus_w, // llvm.x86.sse2.paddus.w x86_sse2_pavg_b, // llvm.x86.sse2.pavg.b x86_sse2_pavg_w, // llvm.x86.sse2.pavg.w x86_sse2_pcmpeq_b, // llvm.x86.sse2.pcmpeq.b x86_sse2_pcmpeq_d, // llvm.x86.sse2.pcmpeq.d x86_sse2_pcmpeq_w, // llvm.x86.sse2.pcmpeq.w x86_sse2_pcmpgt_b, // llvm.x86.sse2.pcmpgt.b x86_sse2_pcmpgt_d, // llvm.x86.sse2.pcmpgt.d x86_sse2_pcmpgt_w, // llvm.x86.sse2.pcmpgt.w x86_sse2_pmadd_wd, // llvm.x86.sse2.pmadd.wd x86_sse2_pmaxs_w, // llvm.x86.sse2.pmaxs.w x86_sse2_pmaxu_b, // llvm.x86.sse2.pmaxu.b x86_sse2_pmins_w, // llvm.x86.sse2.pmins.w x86_sse2_pminu_b, // llvm.x86.sse2.pminu.b x86_sse2_pmovmskb_128, // llvm.x86.sse2.pmovmskb.128 x86_sse2_pmulh_w, // llvm.x86.sse2.pmulh.w x86_sse2_pmulhu_w, // llvm.x86.sse2.pmulhu.w x86_sse2_pmulu_dq, // llvm.x86.sse2.pmulu.dq x86_sse2_psad_bw, // llvm.x86.sse2.psad.bw x86_sse2_psll_d, // llvm.x86.sse2.psll.d x86_sse2_psll_dq, // llvm.x86.sse2.psll.dq x86_sse2_psll_dq_bs, // llvm.x86.sse2.psll.dq.bs x86_sse2_psll_q, // llvm.x86.sse2.psll.q x86_sse2_psll_w, // llvm.x86.sse2.psll.w x86_sse2_pslli_d, // llvm.x86.sse2.pslli.d x86_sse2_pslli_q, // llvm.x86.sse2.pslli.q x86_sse2_pslli_w, // llvm.x86.sse2.pslli.w x86_sse2_psra_d, // llvm.x86.sse2.psra.d x86_sse2_psra_w, // llvm.x86.sse2.psra.w x86_sse2_psrai_d, // llvm.x86.sse2.psrai.d x86_sse2_psrai_w, // llvm.x86.sse2.psrai.w x86_sse2_psrl_d, // llvm.x86.sse2.psrl.d x86_sse2_psrl_dq, // llvm.x86.sse2.psrl.dq x86_sse2_psrl_dq_bs, // llvm.x86.sse2.psrl.dq.bs x86_sse2_psrl_q, // llvm.x86.sse2.psrl.q x86_sse2_psrl_w, // llvm.x86.sse2.psrl.w x86_sse2_psrli_d, // llvm.x86.sse2.psrli.d x86_sse2_psrli_q, // llvm.x86.sse2.psrli.q x86_sse2_psrli_w, // llvm.x86.sse2.psrli.w x86_sse2_psubs_b, // llvm.x86.sse2.psubs.b x86_sse2_psubs_w, // llvm.x86.sse2.psubs.w x86_sse2_psubus_b, // llvm.x86.sse2.psubus.b x86_sse2_psubus_w, // llvm.x86.sse2.psubus.w x86_sse2_sqrt_pd, // llvm.x86.sse2.sqrt.pd x86_sse2_sqrt_sd, // llvm.x86.sse2.sqrt.sd x86_sse2_storel_dq, // llvm.x86.sse2.storel.dq x86_sse2_storeu_dq, // llvm.x86.sse2.storeu.dq x86_sse2_storeu_pd, // llvm.x86.sse2.storeu.pd x86_sse2_sub_sd, // llvm.x86.sse2.sub.sd x86_sse2_ucomieq_sd, // llvm.x86.sse2.ucomieq.sd x86_sse2_ucomige_sd, // llvm.x86.sse2.ucomige.sd x86_sse2_ucomigt_sd, // llvm.x86.sse2.ucomigt.sd x86_sse2_ucomile_sd, // llvm.x86.sse2.ucomile.sd x86_sse2_ucomilt_sd, // llvm.x86.sse2.ucomilt.sd x86_sse2_ucomineq_sd, // llvm.x86.sse2.ucomineq.sd x86_sse3_addsub_pd, // llvm.x86.sse3.addsub.pd x86_sse3_addsub_ps, // llvm.x86.sse3.addsub.ps x86_sse3_hadd_pd, // llvm.x86.sse3.hadd.pd x86_sse3_hadd_ps, // llvm.x86.sse3.hadd.ps x86_sse3_hsub_pd, // llvm.x86.sse3.hsub.pd x86_sse3_hsub_ps, // llvm.x86.sse3.hsub.ps x86_sse3_ldu_dq, // llvm.x86.sse3.ldu.dq x86_sse3_monitor, // llvm.x86.sse3.monitor x86_sse3_mwait, // llvm.x86.sse3.mwait x86_sse41_blendpd, // llvm.x86.sse41.blendpd x86_sse41_blendps, // llvm.x86.sse41.blendps x86_sse41_blendvpd, // llvm.x86.sse41.blendvpd x86_sse41_blendvps, // llvm.x86.sse41.blendvps x86_sse41_dppd, // llvm.x86.sse41.dppd x86_sse41_dpps, // llvm.x86.sse41.dpps x86_sse41_extractps, // llvm.x86.sse41.extractps x86_sse41_insertps, // llvm.x86.sse41.insertps x86_sse41_movntdqa, // llvm.x86.sse41.movntdqa x86_sse41_mpsadbw, // llvm.x86.sse41.mpsadbw x86_sse41_packusdw, // llvm.x86.sse41.packusdw x86_sse41_pblendvb, // llvm.x86.sse41.pblendvb x86_sse41_pblendw, // llvm.x86.sse41.pblendw x86_sse41_pcmpeqq, // llvm.x86.sse41.pcmpeqq x86_sse41_pextrb, // llvm.x86.sse41.pextrb x86_sse41_pextrd, // llvm.x86.sse41.pextrd x86_sse41_pextrq, // llvm.x86.sse41.pextrq x86_sse41_phminposuw, // llvm.x86.sse41.phminposuw x86_sse41_pmaxsb, // llvm.x86.sse41.pmaxsb x86_sse41_pmaxsd, // llvm.x86.sse41.pmaxsd x86_sse41_pmaxud, // llvm.x86.sse41.pmaxud x86_sse41_pmaxuw, // llvm.x86.sse41.pmaxuw x86_sse41_pminsb, // llvm.x86.sse41.pminsb x86_sse41_pminsd, // llvm.x86.sse41.pminsd x86_sse41_pminud, // llvm.x86.sse41.pminud x86_sse41_pminuw, // llvm.x86.sse41.pminuw x86_sse41_pmovsxbd, // llvm.x86.sse41.pmovsxbd x86_sse41_pmovsxbq, // llvm.x86.sse41.pmovsxbq x86_sse41_pmovsxbw, // llvm.x86.sse41.pmovsxbw x86_sse41_pmovsxdq, // llvm.x86.sse41.pmovsxdq x86_sse41_pmovsxwd, // llvm.x86.sse41.pmovsxwd x86_sse41_pmovsxwq, // llvm.x86.sse41.pmovsxwq x86_sse41_pmovzxbd, // llvm.x86.sse41.pmovzxbd x86_sse41_pmovzxbq, // llvm.x86.sse41.pmovzxbq x86_sse41_pmovzxbw, // llvm.x86.sse41.pmovzxbw x86_sse41_pmovzxdq, // llvm.x86.sse41.pmovzxdq x86_sse41_pmovzxwd, // llvm.x86.sse41.pmovzxwd x86_sse41_pmovzxwq, // llvm.x86.sse41.pmovzxwq x86_sse41_pmuldq, // llvm.x86.sse41.pmuldq x86_sse41_ptestc, // llvm.x86.sse41.ptestc x86_sse41_ptestnzc, // llvm.x86.sse41.ptestnzc x86_sse41_ptestz, // llvm.x86.sse41.ptestz x86_sse41_round_pd, // llvm.x86.sse41.round.pd x86_sse41_round_ps, // llvm.x86.sse41.round.ps x86_sse41_round_sd, // llvm.x86.sse41.round.sd x86_sse41_round_ss, // llvm.x86.sse41.round.ss x86_sse42_crc32_32_16, // llvm.x86.sse42.crc32.32.16 x86_sse42_crc32_32_32, // llvm.x86.sse42.crc32.32.32 x86_sse42_crc32_32_8, // llvm.x86.sse42.crc32.32.8 x86_sse42_crc32_64_64, // llvm.x86.sse42.crc32.64.64 x86_sse42_crc32_64_8, // llvm.x86.sse42.crc32.64.8 x86_sse42_pcmpestri128, // llvm.x86.sse42.pcmpestri128 x86_sse42_pcmpestria128, // llvm.x86.sse42.pcmpestria128 x86_sse42_pcmpestric128, // llvm.x86.sse42.pcmpestric128 x86_sse42_pcmpestrio128, // llvm.x86.sse42.pcmpestrio128 x86_sse42_pcmpestris128, // llvm.x86.sse42.pcmpestris128 x86_sse42_pcmpestriz128, // llvm.x86.sse42.pcmpestriz128 x86_sse42_pcmpestrm128, // llvm.x86.sse42.pcmpestrm128 x86_sse42_pcmpgtq, // llvm.x86.sse42.pcmpgtq x86_sse42_pcmpistri128, // llvm.x86.sse42.pcmpistri128 x86_sse42_pcmpistria128, // llvm.x86.sse42.pcmpistria128 x86_sse42_pcmpistric128, // llvm.x86.sse42.pcmpistric128 x86_sse42_pcmpistrio128, // llvm.x86.sse42.pcmpistrio128 x86_sse42_pcmpistris128, // llvm.x86.sse42.pcmpistris128 x86_sse42_pcmpistriz128, // llvm.x86.sse42.pcmpistriz128 x86_sse42_pcmpistrm128, // llvm.x86.sse42.pcmpistrm128 x86_sse_add_ss, // llvm.x86.sse.add.ss x86_sse_cmp_ps, // llvm.x86.sse.cmp.ps x86_sse_cmp_ss, // llvm.x86.sse.cmp.ss x86_sse_comieq_ss, // llvm.x86.sse.comieq.ss x86_sse_comige_ss, // llvm.x86.sse.comige.ss x86_sse_comigt_ss, // llvm.x86.sse.comigt.ss x86_sse_comile_ss, // llvm.x86.sse.comile.ss x86_sse_comilt_ss, // llvm.x86.sse.comilt.ss x86_sse_comineq_ss, // llvm.x86.sse.comineq.ss x86_sse_cvtpd2pi, // llvm.x86.sse.cvtpd2pi x86_sse_cvtpi2pd, // llvm.x86.sse.cvtpi2pd x86_sse_cvtpi2ps, // llvm.x86.sse.cvtpi2ps x86_sse_cvtps2pi, // llvm.x86.sse.cvtps2pi x86_sse_cvtsi2ss, // llvm.x86.sse.cvtsi2ss x86_sse_cvtsi642ss, // llvm.x86.sse.cvtsi642ss x86_sse_cvtss2si, // llvm.x86.sse.cvtss2si x86_sse_cvtss2si64, // llvm.x86.sse.cvtss2si64 x86_sse_cvttpd2pi, // llvm.x86.sse.cvttpd2pi x86_sse_cvttps2pi, // llvm.x86.sse.cvttps2pi x86_sse_cvttss2si, // llvm.x86.sse.cvttss2si x86_sse_cvttss2si64, // llvm.x86.sse.cvttss2si64 x86_sse_div_ss, // llvm.x86.sse.div.ss x86_sse_ldmxcsr, // llvm.x86.sse.ldmxcsr x86_sse_max_ps, // llvm.x86.sse.max.ps x86_sse_max_ss, // llvm.x86.sse.max.ss x86_sse_min_ps, // llvm.x86.sse.min.ps x86_sse_min_ss, // llvm.x86.sse.min.ss x86_sse_movmsk_ps, // llvm.x86.sse.movmsk.ps x86_sse_mul_ss, // llvm.x86.sse.mul.ss x86_sse_pshuf_w, // llvm.x86.sse.pshuf.w x86_sse_rcp_ps, // llvm.x86.sse.rcp.ps x86_sse_rcp_ss, // llvm.x86.sse.rcp.ss x86_sse_rsqrt_ps, // llvm.x86.sse.rsqrt.ps x86_sse_rsqrt_ss, // llvm.x86.sse.rsqrt.ss x86_sse_sfence, // llvm.x86.sse.sfence x86_sse_sqrt_ps, // llvm.x86.sse.sqrt.ps x86_sse_sqrt_ss, // llvm.x86.sse.sqrt.ss x86_sse_stmxcsr, // llvm.x86.sse.stmxcsr x86_sse_storeu_ps, // llvm.x86.sse.storeu.ps x86_sse_sub_ss, // llvm.x86.sse.sub.ss x86_sse_ucomieq_ss, // llvm.x86.sse.ucomieq.ss x86_sse_ucomige_ss, // llvm.x86.sse.ucomige.ss x86_sse_ucomigt_ss, // llvm.x86.sse.ucomigt.ss x86_sse_ucomile_ss, // llvm.x86.sse.ucomile.ss x86_sse_ucomilt_ss, // llvm.x86.sse.ucomilt.ss x86_sse_ucomineq_ss, // llvm.x86.sse.ucomineq.ss x86_ssse3_pabs_b, // llvm.x86.ssse3.pabs.b x86_ssse3_pabs_b_128, // llvm.x86.ssse3.pabs.b.128 x86_ssse3_pabs_d, // llvm.x86.ssse3.pabs.d x86_ssse3_pabs_d_128, // llvm.x86.ssse3.pabs.d.128 x86_ssse3_pabs_w, // llvm.x86.ssse3.pabs.w x86_ssse3_pabs_w_128, // llvm.x86.ssse3.pabs.w.128 x86_ssse3_phadd_d, // llvm.x86.ssse3.phadd.d x86_ssse3_phadd_d_128, // llvm.x86.ssse3.phadd.d.128 x86_ssse3_phadd_sw, // llvm.x86.ssse3.phadd.sw x86_ssse3_phadd_sw_128, // llvm.x86.ssse3.phadd.sw.128 x86_ssse3_phadd_w, // llvm.x86.ssse3.phadd.w x86_ssse3_phadd_w_128, // llvm.x86.ssse3.phadd.w.128 x86_ssse3_phsub_d, // llvm.x86.ssse3.phsub.d x86_ssse3_phsub_d_128, // llvm.x86.ssse3.phsub.d.128 x86_ssse3_phsub_sw, // llvm.x86.ssse3.phsub.sw x86_ssse3_phsub_sw_128, // llvm.x86.ssse3.phsub.sw.128 x86_ssse3_phsub_w, // llvm.x86.ssse3.phsub.w x86_ssse3_phsub_w_128, // llvm.x86.ssse3.phsub.w.128 x86_ssse3_pmadd_ub_sw, // llvm.x86.ssse3.pmadd.ub.sw x86_ssse3_pmadd_ub_sw_128, // llvm.x86.ssse3.pmadd.ub.sw.128 x86_ssse3_pmul_hr_sw, // llvm.x86.ssse3.pmul.hr.sw x86_ssse3_pmul_hr_sw_128, // llvm.x86.ssse3.pmul.hr.sw.128 x86_ssse3_pshuf_b, // llvm.x86.ssse3.pshuf.b x86_ssse3_pshuf_b_128, // llvm.x86.ssse3.pshuf.b.128 x86_ssse3_psign_b, // llvm.x86.ssse3.psign.b x86_ssse3_psign_b_128, // llvm.x86.ssse3.psign.b.128 x86_ssse3_psign_d, // llvm.x86.ssse3.psign.d x86_ssse3_psign_d_128, // llvm.x86.ssse3.psign.d.128 x86_ssse3_psign_w, // llvm.x86.ssse3.psign.w x86_ssse3_psign_w_128 // llvm.x86.ssse3.psign.w.128 #endif // Intrinsic ID to name table #ifdef GET_INTRINSIC_NAME_TABLE // Note that entry #0 is the invalid intrinsic! "llvm.adjust.trampoline", "llvm.annotation", "llvm.bswap", "llvm.convert.from.fp16", "llvm.convert.to.fp16", "llvm.convertff", "llvm.convertfsi", "llvm.convertfui", "llvm.convertsif", "llvm.convertss", "llvm.convertsu", "llvm.convertuif", "llvm.convertus", "llvm.convertuu", "llvm.cos", "llvm.ctlz", "llvm.ctpop", "llvm.cttz", "llvm.dbg.declare", "llvm.dbg.value", "llvm.eh.dwarf.cfa", "llvm.eh.exception", "llvm.eh.resume", "llvm.eh.return.i32", "llvm.eh.return.i64", "llvm.eh.selector", "llvm.eh.sjlj.callsite", "llvm.eh.sjlj.dispatch.setup", "llvm.eh.sjlj.functioncontext", "llvm.eh.sjlj.longjmp", "llvm.eh.sjlj.lsda", "llvm.eh.sjlj.setjmp", "llvm.eh.typeid.for", "llvm.eh.unwind.init", "llvm.exp", "llvm.exp2", "llvm.expect", "llvm.flt.rounds", "llvm.fma", "llvm.frameaddress", "llvm.gcread", "llvm.gcroot", "llvm.gcwrite", "llvm.init.trampoline", "llvm.invariant.end", "llvm.invariant.start", "llvm.lifetime.end", "llvm.lifetime.start", "llvm.log", "llvm.log10", "llvm.log2", "llvm.longjmp", "llvm.memcpy", "llvm.memmove", "llvm.memset", "llvm.objectsize", "llvm.pcmarker", "llvm.pow", "llvm.powi", "llvm.prefetch", "llvm.ptr.annotation", "llvm.readcyclecounter", "llvm.returnaddress", "llvm.sadd.with.overflow", "llvm.setjmp", "llvm.siglongjmp", "llvm.sigsetjmp", "llvm.sin", "llvm.smul.with.overflow", "llvm.sqrt", "llvm.ssub.with.overflow", "llvm.stackprotector", "llvm.stackrestore", "llvm.stacksave", "llvm.trap", "llvm.uadd.with.overflow", "llvm.umul.with.overflow", "llvm.usub.with.overflow", "llvm.va_copy", "llvm.va_end", "llvm.var.annotation", "llvm.va_start", "llvm.x86.3dnow.pavgusb", "llvm.x86.3dnow.pf2id", "llvm.x86.3dnow.pfacc", "llvm.x86.3dnow.pfadd", "llvm.x86.3dnow.pfcmpeq", "llvm.x86.3dnow.pfcmpge", "llvm.x86.3dnow.pfcmpgt", "llvm.x86.3dnow.pfmax", "llvm.x86.3dnow.pfmin", "llvm.x86.3dnow.pfmul", "llvm.x86.3dnow.pfrcp", "llvm.x86.3dnow.pfrcpit1", "llvm.x86.3dnow.pfrcpit2", "llvm.x86.3dnow.pfrsqit1", "llvm.x86.3dnow.pfrsqrt", "llvm.x86.3dnow.pfsub", "llvm.x86.3dnow.pfsubr", "llvm.x86.3dnow.pi2fd", "llvm.x86.3dnow.pmulhrw", "llvm.x86.3dnowa.pf2iw", "llvm.x86.3dnowa.pfnacc", "llvm.x86.3dnowa.pfpnacc", "llvm.x86.3dnowa.pi2fw", "llvm.x86.3dnowa.pswapd", "llvm.x86.aesni.aesdec", "llvm.x86.aesni.aesdeclast", "llvm.x86.aesni.aesenc", "llvm.x86.aesni.aesenclast", "llvm.x86.aesni.aesimc", "llvm.x86.aesni.aeskeygenassist", "llvm.x86.avx.addsub.pd.256", "llvm.x86.avx.addsub.ps.256", "llvm.x86.avx.blend.pd.256", "llvm.x86.avx.blend.ps.256", "llvm.x86.avx.blendv.pd.256", "llvm.x86.avx.blendv.ps.256", "llvm.x86.avx.cmp.pd.256", "llvm.x86.avx.cmp.ps.256", "llvm.x86.avx.cvt.pd2.ps.256", "llvm.x86.avx.cvt.pd2dq.256", "llvm.x86.avx.cvt.ps2.pd.256", "llvm.x86.avx.cvt.ps2dq.256", "llvm.x86.avx.cvtdq2.pd.256", "llvm.x86.avx.cvtdq2.ps.256", "llvm.x86.avx.cvtt.pd2dq.256", "llvm.x86.avx.cvtt.ps2dq.256", "llvm.x86.avx.dp.ps.256", "llvm.x86.avx.hadd.pd.256", "llvm.x86.avx.hadd.ps.256", "llvm.x86.avx.hsub.pd.256", "llvm.x86.avx.hsub.ps.256", "llvm.x86.avx.ldu.dq.256", "llvm.x86.avx.loadu.dq.256", "llvm.x86.avx.loadu.pd.256", "llvm.x86.avx.loadu.ps.256", "llvm.x86.avx.maskload.pd", "llvm.x86.avx.maskload.pd.256", "llvm.x86.avx.maskload.ps", "llvm.x86.avx.maskload.ps.256", "llvm.x86.avx.maskstore.pd", "llvm.x86.avx.maskstore.pd.256", "llvm.x86.avx.maskstore.ps", "llvm.x86.avx.maskstore.ps.256", "llvm.x86.avx.max.pd.256", "llvm.x86.avx.max.ps.256", "llvm.x86.avx.min.pd.256", "llvm.x86.avx.min.ps.256", "llvm.x86.avx.movmsk.pd.256", "llvm.x86.avx.movmsk.ps.256", "llvm.x86.avx.movnt.dq.256", "llvm.x86.avx.movnt.pd.256", "llvm.x86.avx.movnt.ps.256", "llvm.x86.avx.ptestc.256", "llvm.x86.avx.ptestnzc.256", "llvm.x86.avx.ptestz.256", "llvm.x86.avx.rcp.ps.256", "llvm.x86.avx.round.pd.256", "llvm.x86.avx.round.ps.256", "llvm.x86.avx.rsqrt.ps.256", "llvm.x86.avx.sqrt.pd.256", "llvm.x86.avx.sqrt.ps.256", "llvm.x86.avx.storeu.dq.256", "llvm.x86.avx.storeu.pd.256", "llvm.x86.avx.storeu.ps.256", "llvm.x86.avx.vbroadcast.sd.256", "llvm.x86.avx.vbroadcastf128.pd.256", "llvm.x86.avx.vbroadcastf128.ps.256", "llvm.x86.avx.vbroadcastss", "llvm.x86.avx.vbroadcastss.256", "llvm.x86.avx.vextractf128.pd.256", "llvm.x86.avx.vextractf128.ps.256", "llvm.x86.avx.vextractf128.si.256", "llvm.x86.avx.vinsertf128.pd.256", "llvm.x86.avx.vinsertf128.ps.256", "llvm.x86.avx.vinsertf128.si.256", "llvm.x86.avx.vperm2f128.pd.256", "llvm.x86.avx.vperm2f128.ps.256", "llvm.x86.avx.vperm2f128.si.256", "llvm.x86.avx.vpermil.pd", "llvm.x86.avx.vpermil.pd.256", "llvm.x86.avx.vpermil.ps", "llvm.x86.avx.vpermil.ps.256", "llvm.x86.avx.vpermilvar.pd", "llvm.x86.avx.vpermilvar.pd.256", "llvm.x86.avx.vpermilvar.ps", "llvm.x86.avx.vpermilvar.ps.256", "llvm.x86.avx.vtestc.pd", "llvm.x86.avx.vtestc.pd.256", "llvm.x86.avx.vtestc.ps", "llvm.x86.avx.vtestc.ps.256", "llvm.x86.avx.vtestnzc.pd", "llvm.x86.avx.vtestnzc.pd.256", "llvm.x86.avx.vtestnzc.ps", "llvm.x86.avx.vtestnzc.ps.256", "llvm.x86.avx.vtestz.pd", "llvm.x86.avx.vtestz.pd.256", "llvm.x86.avx.vtestz.ps", "llvm.x86.avx.vtestz.ps.256", "llvm.x86.avx.vzeroall", "llvm.x86.avx.vzeroupper", "llvm.x86.int", "llvm.x86.mmx.emms", "llvm.x86.mmx.femms", "llvm.x86.mmx.maskmovq", "llvm.x86.mmx.movnt.dq", "llvm.x86.mmx.packssdw", "llvm.x86.mmx.packsswb", "llvm.x86.mmx.packuswb", "llvm.x86.mmx.padd.b", "llvm.x86.mmx.padd.d", "llvm.x86.mmx.padd.q", "llvm.x86.mmx.padd.w", "llvm.x86.mmx.padds.b", "llvm.x86.mmx.padds.w", "llvm.x86.mmx.paddus.b", "llvm.x86.mmx.paddus.w", "llvm.x86.mmx.palignr.b", "llvm.x86.mmx.pand", "llvm.x86.mmx.pandn", "llvm.x86.mmx.pavg.b", "llvm.x86.mmx.pavg.w", "llvm.x86.mmx.pcmpeq.b", "llvm.x86.mmx.pcmpeq.d", "llvm.x86.mmx.pcmpeq.w", "llvm.x86.mmx.pcmpgt.b", "llvm.x86.mmx.pcmpgt.d", "llvm.x86.mmx.pcmpgt.w", "llvm.x86.mmx.pextr.w", "llvm.x86.mmx.pinsr.w", "llvm.x86.mmx.pmadd.wd", "llvm.x86.mmx.pmaxs.w", "llvm.x86.mmx.pmaxu.b", "llvm.x86.mmx.pmins.w", "llvm.x86.mmx.pminu.b", "llvm.x86.mmx.pmovmskb", "llvm.x86.mmx.pmulh.w", "llvm.x86.mmx.pmulhu.w", "llvm.x86.mmx.pmull.w", "llvm.x86.mmx.pmulu.dq", "llvm.x86.mmx.por", "llvm.x86.mmx.psad.bw", "llvm.x86.mmx.psll.d", "llvm.x86.mmx.psll.q", "llvm.x86.mmx.psll.w", "llvm.x86.mmx.pslli.d", "llvm.x86.mmx.pslli.q", "llvm.x86.mmx.pslli.w", "llvm.x86.mmx.psra.d", "llvm.x86.mmx.psra.w", "llvm.x86.mmx.psrai.d", "llvm.x86.mmx.psrai.w", "llvm.x86.mmx.psrl.d", "llvm.x86.mmx.psrl.q", "llvm.x86.mmx.psrl.w", "llvm.x86.mmx.psrli.d", "llvm.x86.mmx.psrli.q", "llvm.x86.mmx.psrli.w", "llvm.x86.mmx.psub.b", "llvm.x86.mmx.psub.d", "llvm.x86.mmx.psub.q", "llvm.x86.mmx.psub.w", "llvm.x86.mmx.psubs.b", "llvm.x86.mmx.psubs.w", "llvm.x86.mmx.psubus.b", "llvm.x86.mmx.psubus.w", "llvm.x86.mmx.punpckhbw", "llvm.x86.mmx.punpckhdq", "llvm.x86.mmx.punpckhwd", "llvm.x86.mmx.punpcklbw", "llvm.x86.mmx.punpckldq", "llvm.x86.mmx.punpcklwd", "llvm.x86.mmx.pxor", "llvm.x86.sse2.add.sd", "llvm.x86.sse2.clflush", "llvm.x86.sse2.cmp.pd", "llvm.x86.sse2.cmp.sd", "llvm.x86.sse2.comieq.sd", "llvm.x86.sse2.comige.sd", "llvm.x86.sse2.comigt.sd", "llvm.x86.sse2.comile.sd", "llvm.x86.sse2.comilt.sd", "llvm.x86.sse2.comineq.sd", "llvm.x86.sse2.cvtdq2pd", "llvm.x86.sse2.cvtdq2ps", "llvm.x86.sse2.cvtpd2dq", "llvm.x86.sse2.cvtpd2ps", "llvm.x86.sse2.cvtps2dq", "llvm.x86.sse2.cvtps2pd", "llvm.x86.sse2.cvtsd2si", "llvm.x86.sse2.cvtsd2si64", "llvm.x86.sse2.cvtsd2ss", "llvm.x86.sse2.cvtsi2sd", "llvm.x86.sse2.cvtsi642sd", "llvm.x86.sse2.cvtss2sd", "llvm.x86.sse2.cvttpd2dq", "llvm.x86.sse2.cvttps2dq", "llvm.x86.sse2.cvttsd2si", "llvm.x86.sse2.cvttsd2si64", "llvm.x86.sse2.div.sd", "llvm.x86.sse2.lfence", "llvm.x86.sse2.maskmov.dqu", "llvm.x86.sse2.max.pd", "llvm.x86.sse2.max.sd", "llvm.x86.sse2.mfence", "llvm.x86.sse2.min.pd", "llvm.x86.sse2.min.sd", "llvm.x86.sse2.movmsk.pd", "llvm.x86.sse2.mul.sd", "llvm.x86.sse2.packssdw.128", "llvm.x86.sse2.packsswb.128", "llvm.x86.sse2.packuswb.128", "llvm.x86.sse2.padds.b", "llvm.x86.sse2.padds.w", "llvm.x86.sse2.paddus.b", "llvm.x86.sse2.paddus.w", "llvm.x86.sse2.pavg.b", "llvm.x86.sse2.pavg.w", "llvm.x86.sse2.pcmpeq.b", "llvm.x86.sse2.pcmpeq.d", "llvm.x86.sse2.pcmpeq.w", "llvm.x86.sse2.pcmpgt.b", "llvm.x86.sse2.pcmpgt.d", "llvm.x86.sse2.pcmpgt.w", "llvm.x86.sse2.pmadd.wd", "llvm.x86.sse2.pmaxs.w", "llvm.x86.sse2.pmaxu.b", "llvm.x86.sse2.pmins.w", "llvm.x86.sse2.pminu.b", "llvm.x86.sse2.pmovmskb.128", "llvm.x86.sse2.pmulh.w", "llvm.x86.sse2.pmulhu.w", "llvm.x86.sse2.pmulu.dq", "llvm.x86.sse2.psad.bw", "llvm.x86.sse2.psll.d", "llvm.x86.sse2.psll.dq", "llvm.x86.sse2.psll.dq.bs", "llvm.x86.sse2.psll.q", "llvm.x86.sse2.psll.w", "llvm.x86.sse2.pslli.d", "llvm.x86.sse2.pslli.q", "llvm.x86.sse2.pslli.w", "llvm.x86.sse2.psra.d", "llvm.x86.sse2.psra.w", "llvm.x86.sse2.psrai.d", "llvm.x86.sse2.psrai.w", "llvm.x86.sse2.psrl.d", "llvm.x86.sse2.psrl.dq", "llvm.x86.sse2.psrl.dq.bs", "llvm.x86.sse2.psrl.q", "llvm.x86.sse2.psrl.w", "llvm.x86.sse2.psrli.d", "llvm.x86.sse2.psrli.q", "llvm.x86.sse2.psrli.w", "llvm.x86.sse2.psubs.b", "llvm.x86.sse2.psubs.w", "llvm.x86.sse2.psubus.b", "llvm.x86.sse2.psubus.w", "llvm.x86.sse2.sqrt.pd", "llvm.x86.sse2.sqrt.sd", "llvm.x86.sse2.storel.dq", "llvm.x86.sse2.storeu.dq", "llvm.x86.sse2.storeu.pd", "llvm.x86.sse2.sub.sd", "llvm.x86.sse2.ucomieq.sd", "llvm.x86.sse2.ucomige.sd", "llvm.x86.sse2.ucomigt.sd", "llvm.x86.sse2.ucomile.sd", "llvm.x86.sse2.ucomilt.sd", "llvm.x86.sse2.ucomineq.sd", "llvm.x86.sse3.addsub.pd", "llvm.x86.sse3.addsub.ps", "llvm.x86.sse3.hadd.pd", "llvm.x86.sse3.hadd.ps", "llvm.x86.sse3.hsub.pd", "llvm.x86.sse3.hsub.ps", "llvm.x86.sse3.ldu.dq", "llvm.x86.sse3.monitor", "llvm.x86.sse3.mwait", "llvm.x86.sse41.blendpd", "llvm.x86.sse41.blendps", "llvm.x86.sse41.blendvpd", "llvm.x86.sse41.blendvps", "llvm.x86.sse41.dppd", "llvm.x86.sse41.dpps", "llvm.x86.sse41.extractps", "llvm.x86.sse41.insertps", "llvm.x86.sse41.movntdqa", "llvm.x86.sse41.mpsadbw", "llvm.x86.sse41.packusdw", "llvm.x86.sse41.pblendvb", "llvm.x86.sse41.pblendw", "llvm.x86.sse41.pcmpeqq", "llvm.x86.sse41.pextrb", "llvm.x86.sse41.pextrd", "llvm.x86.sse41.pextrq", "llvm.x86.sse41.phminposuw", "llvm.x86.sse41.pmaxsb", "llvm.x86.sse41.pmaxsd", "llvm.x86.sse41.pmaxud", "llvm.x86.sse41.pmaxuw", "llvm.x86.sse41.pminsb", "llvm.x86.sse41.pminsd", "llvm.x86.sse41.pminud", "llvm.x86.sse41.pminuw", "llvm.x86.sse41.pmovsxbd", "llvm.x86.sse41.pmovsxbq", "llvm.x86.sse41.pmovsxbw", "llvm.x86.sse41.pmovsxdq", "llvm.x86.sse41.pmovsxwd", "llvm.x86.sse41.pmovsxwq", "llvm.x86.sse41.pmovzxbd", "llvm.x86.sse41.pmovzxbq", "llvm.x86.sse41.pmovzxbw", "llvm.x86.sse41.pmovzxdq", "llvm.x86.sse41.pmovzxwd", "llvm.x86.sse41.pmovzxwq", "llvm.x86.sse41.pmuldq", "llvm.x86.sse41.ptestc", "llvm.x86.sse41.ptestnzc", "llvm.x86.sse41.ptestz", "llvm.x86.sse41.round.pd", "llvm.x86.sse41.round.ps", "llvm.x86.sse41.round.sd", "llvm.x86.sse41.round.ss", "llvm.x86.sse42.crc32.32.16", "llvm.x86.sse42.crc32.32.32", "llvm.x86.sse42.crc32.32.8", "llvm.x86.sse42.crc32.64.64", "llvm.x86.sse42.crc32.64.8", "llvm.x86.sse42.pcmpestri128", "llvm.x86.sse42.pcmpestria128", "llvm.x86.sse42.pcmpestric128", "llvm.x86.sse42.pcmpestrio128", "llvm.x86.sse42.pcmpestris128", "llvm.x86.sse42.pcmpestriz128", "llvm.x86.sse42.pcmpestrm128", "llvm.x86.sse42.pcmpgtq", "llvm.x86.sse42.pcmpistri128", "llvm.x86.sse42.pcmpistria128", "llvm.x86.sse42.pcmpistric128", "llvm.x86.sse42.pcmpistrio128", "llvm.x86.sse42.pcmpistris128", "llvm.x86.sse42.pcmpistriz128", "llvm.x86.sse42.pcmpistrm128", "llvm.x86.sse.add.ss", "llvm.x86.sse.cmp.ps", "llvm.x86.sse.cmp.ss", "llvm.x86.sse.comieq.ss", "llvm.x86.sse.comige.ss", "llvm.x86.sse.comigt.ss", "llvm.x86.sse.comile.ss", "llvm.x86.sse.comilt.ss", "llvm.x86.sse.comineq.ss", "llvm.x86.sse.cvtpd2pi", "llvm.x86.sse.cvtpi2pd", "llvm.x86.sse.cvtpi2ps", "llvm.x86.sse.cvtps2pi", "llvm.x86.sse.cvtsi2ss", "llvm.x86.sse.cvtsi642ss", "llvm.x86.sse.cvtss2si", "llvm.x86.sse.cvtss2si64", "llvm.x86.sse.cvttpd2pi", "llvm.x86.sse.cvttps2pi", "llvm.x86.sse.cvttss2si", "llvm.x86.sse.cvttss2si64", "llvm.x86.sse.div.ss", "llvm.x86.sse.ldmxcsr", "llvm.x86.sse.max.ps", "llvm.x86.sse.max.ss", "llvm.x86.sse.min.ps", "llvm.x86.sse.min.ss", "llvm.x86.sse.movmsk.ps", "llvm.x86.sse.mul.ss", "llvm.x86.sse.pshuf.w", "llvm.x86.sse.rcp.ps", "llvm.x86.sse.rcp.ss", "llvm.x86.sse.rsqrt.ps", "llvm.x86.sse.rsqrt.ss", "llvm.x86.sse.sfence", "llvm.x86.sse.sqrt.ps", "llvm.x86.sse.sqrt.ss", "llvm.x86.sse.stmxcsr", "llvm.x86.sse.storeu.ps", "llvm.x86.sse.sub.ss", "llvm.x86.sse.ucomieq.ss", "llvm.x86.sse.ucomige.ss", "llvm.x86.sse.ucomigt.ss", "llvm.x86.sse.ucomile.ss", "llvm.x86.sse.ucomilt.ss", "llvm.x86.sse.ucomineq.ss", "llvm.x86.ssse3.pabs.b", "llvm.x86.ssse3.pabs.b.128", "llvm.x86.ssse3.pabs.d", "llvm.x86.ssse3.pabs.d.128", "llvm.x86.ssse3.pabs.w", "llvm.x86.ssse3.pabs.w.128", "llvm.x86.ssse3.phadd.d", "llvm.x86.ssse3.phadd.d.128", "llvm.x86.ssse3.phadd.sw", "llvm.x86.ssse3.phadd.sw.128", "llvm.x86.ssse3.phadd.w", "llvm.x86.ssse3.phadd.w.128", "llvm.x86.ssse3.phsub.d", "llvm.x86.ssse3.phsub.d.128", "llvm.x86.ssse3.phsub.sw", "llvm.x86.ssse3.phsub.sw.128", "llvm.x86.ssse3.phsub.w", "llvm.x86.ssse3.phsub.w.128", "llvm.x86.ssse3.pmadd.ub.sw", "llvm.x86.ssse3.pmadd.ub.sw.128", "llvm.x86.ssse3.pmul.hr.sw", "llvm.x86.ssse3.pmul.hr.sw.128", "llvm.x86.ssse3.pshuf.b", "llvm.x86.ssse3.pshuf.b.128", "llvm.x86.ssse3.psign.b", "llvm.x86.ssse3.psign.b.128", "llvm.x86.ssse3.psign.d", "llvm.x86.ssse3.psign.d.128", "llvm.x86.ssse3.psign.w", "llvm.x86.ssse3.psign.w.128", #endif // Intrinsic ID to overload table #ifdef GET_INTRINSIC_OVERLOAD_TABLE // Note that entry #0 is the invalid intrinsic! false, true, true, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, false, true, false, false, false, false, false, false, false, false, false, true, true, true, false, true, true, true, true, false, true, true, false, true, false, false, true, false, false, false, true, true, true, true, false, false, false, false, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, #endif // Function name -> enum value recognizer code. #ifdef GET_FUNCTION_RECOGNIZER StringRef NameR(Name+6, Len-6); // Skip over 'llvm.' switch (Name[5]) { // Dispatch on first letter. default: break; case 'a': if (NameR.startswith("nnotation.")) return Intrinsic::annotation; switch (NameR.size()) { default: break; case 16: // 1 string to match. if (NameR.substr(0, 16) != "djust.trampoline") break; return Intrinsic::adjust_trampoline; // "djust.trampoline" } break; // end of 'a' case. case 'b': if (NameR.startswith("swap.")) return Intrinsic::bswap; break; // end of 'b' case. case 'c': if (NameR.startswith("onvertff.")) return Intrinsic::convertff; if (NameR.startswith("onvertfsi.")) return Intrinsic::convertfsi; if (NameR.startswith("onvertfui.")) return Intrinsic::convertfui; if (NameR.startswith("onvertsif.")) return Intrinsic::convertsif; if (NameR.startswith("onvertss.")) return Intrinsic::convertss; if (NameR.startswith("onvertsu.")) return Intrinsic::convertsu; if (NameR.startswith("onvertuif.")) return Intrinsic::convertuif; if (NameR.startswith("onvertus.")) return Intrinsic::convertus; if (NameR.startswith("onvertuu.")) return Intrinsic::convertuu; if (NameR.startswith("os.")) return Intrinsic::cos; if (NameR.startswith("tlz.")) return Intrinsic::ctlz; if (NameR.startswith("tpop.")) return Intrinsic::ctpop; if (NameR.startswith("ttz.")) return Intrinsic::cttz; switch (NameR.size()) { default: break; case 14: // 1 string to match. if (NameR.substr(0, 14) != "onvert.to.fp16") break; return Intrinsic::convert_to_fp16; // "onvert.to.fp16" case 16: // 1 string to match. if (NameR.substr(0, 16) != "onvert.from.fp16") break; return Intrinsic::convert_from_fp16; // "onvert.from.fp16" } break; // end of 'c' case. case 'd': switch (NameR.size()) { default: break; case 8: // 1 string to match. if (NameR.substr(0, 8) != "bg.value") break; return Intrinsic::dbg_value; // "bg.value" case 10: // 1 string to match. if (NameR.substr(0, 10) != "bg.declare") break; return Intrinsic::dbg_declare; // "bg.declare" } break; // end of 'd' case. case 'e': if (NameR.startswith("xp.")) return Intrinsic::exp; if (NameR.startswith("xp2.")) return Intrinsic::exp2; if (NameR.startswith("xpect.")) return Intrinsic::expect; switch (NameR.size()) { default: break; case 8: // 1 string to match. if (NameR.substr(0, 8) != "h.resume") break; return Intrinsic::eh_resume; // "h.resume" case 10: // 1 string to match. if (NameR.substr(0, 10) != "h.selector") break; return Intrinsic::eh_selector; // "h.selector" case 11: // 3 strings to match. if (NameR.substr(0, 2) != "h.") break; switch (NameR[2]) { default: break; case 'd': // 1 string to match. if (NameR.substr(3, 8) != "warf.cfa") break; return Intrinsic::eh_dwarf_cfa; // "h.dwarf.cfa" case 'e': // 1 string to match. if (NameR.substr(3, 8) != "xception") break; return Intrinsic::eh_exception; // "h.exception" case 's': // 1 string to match. if (NameR.substr(3, 8) != "jlj.lsda") break; return Intrinsic::eh_sjlj_lsda; // "h.sjlj.lsda" } break; case 12: // 3 strings to match. if (NameR.substr(0, 2) != "h.") break; switch (NameR[2]) { default: break; case 'r': // 2 strings to match. if (NameR.substr(3, 7) != "eturn.i") break; switch (NameR[10]) { default: break; case '3': // 1 string to match. if (NameR[11] != '2') break; return Intrinsic::eh_return_i32; // "h.return.i32" case '6': // 1 string to match. if (NameR[11] != '4') break; return Intrinsic::eh_return_i64; // "h.return.i64" } break; case 't': // 1 string to match. if (NameR.substr(3, 9) != "ypeid.for") break; return Intrinsic::eh_typeid_for; // "h.typeid.for" } break; case 13: // 2 strings to match. if (NameR.substr(0, 2) != "h.") break; switch (NameR[2]) { default: break; case 's': // 1 string to match. if (NameR.substr(3, 10) != "jlj.setjmp") break; return Intrinsic::eh_sjlj_setjmp; // "h.sjlj.setjmp" case 'u': // 1 string to match. if (NameR.substr(3, 10) != "nwind.init") break; return Intrinsic::eh_unwind_init; // "h.unwind.init" } break; case 14: // 1 string to match. if (NameR.substr(0, 14) != "h.sjlj.longjmp") break; return Intrinsic::eh_sjlj_longjmp; // "h.sjlj.longjmp" case 15: // 1 string to match. if (NameR.substr(0, 15) != "h.sjlj.callsite") break; return Intrinsic::eh_sjlj_callsite; // "h.sjlj.callsite" case 21: // 1 string to match. if (NameR.substr(0, 21) != "h.sjlj.dispatch.setup") break; return Intrinsic::eh_sjlj_dispatch_setup; // "h.sjlj.dispatch.setup" case 22: // 1 string to match. if (NameR.substr(0, 22) != "h.sjlj.functioncontext") break; return Intrinsic::eh_sjlj_functioncontext; // "h.sjlj.functioncontext" } break; // end of 'e' case. case 'f': if (NameR.startswith("ma.")) return Intrinsic::fma; switch (NameR.size()) { default: break; case 9: // 1 string to match. if (NameR.substr(0, 9) != "lt.rounds") break; return Intrinsic::flt_rounds; // "lt.rounds" case 11: // 1 string to match. if (NameR.substr(0, 11) != "rameaddress") break; return Intrinsic::frameaddress; // "rameaddress" } break; // end of 'f' case. case 'g': switch (NameR.size()) { default: break; case 5: // 2 strings to match. if (NameR.substr(0, 2) != "cr") break; switch (NameR[2]) { default: break; case 'e': // 1 string to match. if (NameR.substr(3, 2) != "ad") break; return Intrinsic::gcread; // "cread" case 'o': // 1 string to match. if (NameR.substr(3, 2) != "ot") break; return Intrinsic::gcroot; // "croot" } break; case 6: // 1 string to match. if (NameR.substr(0, 6) != "cwrite") break; return Intrinsic::gcwrite; // "cwrite" } break; // end of 'g' case. case 'i': switch (NameR.size()) { default: break; case 12: // 1 string to match. if (NameR.substr(0, 12) != "nvariant.end") break; return Intrinsic::invariant_end; // "nvariant.end" case 14: // 2 strings to match. if (NameR[0] != 'n') break; switch (NameR[1]) { default: break; case 'i': // 1 string to match. if (NameR.substr(2, 12) != "t.trampoline") break; return Intrinsic::init_trampoline; // "nit.trampoline" case 'v': // 1 string to match. if (NameR.substr(2, 12) != "ariant.start") break; return Intrinsic::invariant_start; // "nvariant.start" } break; } break; // end of 'i' case. case 'l': if (NameR.startswith("og.")) return Intrinsic::log; if (NameR.startswith("og10.")) return Intrinsic::log10; if (NameR.startswith("og2.")) return Intrinsic::log2; switch (NameR.size()) { default: break; case 6: // 1 string to match. if (NameR.substr(0, 6) != "ongjmp") break; return Intrinsic::longjmp; // "ongjmp" case 11: // 1 string to match. if (NameR.substr(0, 11) != "ifetime.end") break; return Intrinsic::lifetime_end; // "ifetime.end" case 13: // 1 string to match. if (NameR.substr(0, 13) != "ifetime.start") break; return Intrinsic::lifetime_start; // "ifetime.start" } break; // end of 'l' case. case 'm': if (NameR.startswith("emcpy.")) return Intrinsic::memcpy; if (NameR.startswith("emmove.")) return Intrinsic::memmove; if (NameR.startswith("emset.")) return Intrinsic::memset; break; // end of 'm' case. case 'o': if (NameR.startswith("bjectsize.")) return Intrinsic::objectsize; break; // end of 'o' case. case 'p': if (NameR.startswith("ow.")) return Intrinsic::pow; if (NameR.startswith("owi.")) return Intrinsic::powi; if (NameR.startswith("tr.annotation.")) return Intrinsic::ptr_annotation; switch (NameR.size()) { default: break; case 7: // 2 strings to match. switch (NameR[0]) { default: break; case 'c': // 1 string to match. if (NameR.substr(1, 6) != "marker") break; return Intrinsic::pcmarker; // "cmarker" case 'r': // 1 string to match. if (NameR.substr(1, 6) != "efetch") break; return Intrinsic::prefetch; // "refetch" } break; } break; // end of 'p' case. case 'r': switch (NameR.size()) { default: break; case 12: // 1 string to match. if (NameR.substr(0, 12) != "eturnaddress") break; return Intrinsic::returnaddress; // "eturnaddress" case 15: // 1 string to match. if (NameR.substr(0, 15) != "eadcyclecounter") break; return Intrinsic::readcyclecounter; // "eadcyclecounter" } break; // end of 'r' case. case 's': if (NameR.startswith("add.with.overflow.")) return Intrinsic::sadd_with_overflow; if (NameR.startswith("in.")) return Intrinsic::sin; if (NameR.startswith("mul.with.overflow.")) return Intrinsic::smul_with_overflow; if (NameR.startswith("qrt.")) return Intrinsic::sqrt; if (NameR.startswith("sub.with.overflow.")) return Intrinsic::ssub_with_overflow; switch (NameR.size()) { default: break; case 5: // 1 string to match. if (NameR.substr(0, 5) != "etjmp") break; return Intrinsic::setjmp; // "etjmp" case 8: // 2 strings to match. switch (NameR[0]) { default: break; case 'i': // 1 string to match. if (NameR.substr(1, 7) != "gsetjmp") break; return Intrinsic::sigsetjmp; // "igsetjmp" case 't': // 1 string to match. if (NameR.substr(1, 7) != "acksave") break; return Intrinsic::stacksave; // "tacksave" } break; case 9: // 1 string to match. if (NameR.substr(0, 9) != "iglongjmp") break; return Intrinsic::siglongjmp; // "iglongjmp" case 11: // 1 string to match. if (NameR.substr(0, 11) != "tackrestore") break; return Intrinsic::stackrestore; // "tackrestore" case 13: // 1 string to match. if (NameR.substr(0, 13) != "tackprotector") break; return Intrinsic::stackprotector; // "tackprotector" } break; // end of 's' case. case 't': switch (NameR.size()) { default: break; case 3: // 1 string to match. if (NameR.substr(0, 3) != "rap") break; return Intrinsic::trap; // "rap" } break; // end of 't' case. case 'u': if (NameR.startswith("add.with.overflow.")) return Intrinsic::uadd_with_overflow; if (NameR.startswith("mul.with.overflow.")) return Intrinsic::umul_with_overflow; if (NameR.startswith("sub.with.overflow.")) return Intrinsic::usub_with_overflow; break; // end of 'u' case. case 'v': switch (NameR.size()) { default: break; case 5: // 1 string to match. if (NameR.substr(0, 5) != "a_end") break; return Intrinsic::vaend; // "a_end" case 6: // 1 string to match. if (NameR.substr(0, 6) != "a_copy") break; return Intrinsic::vacopy; // "a_copy" case 7: // 1 string to match. if (NameR.substr(0, 7) != "a_start") break; return Intrinsic::vastart; // "a_start" case 13: // 1 string to match. if (NameR.substr(0, 13) != "ar.annotation") break; return Intrinsic::var_annotation; // "ar.annotation" } break; // end of 'v' case. case 'x': switch (NameR.size()) { default: break; case 6: // 1 string to match. if (NameR.substr(0, 6) != "86.int") break; return Intrinsic::x86_int; // "86.int" case 10: // 1 string to match. if (NameR.substr(0, 10) != "86.mmx.por") break; return Intrinsic::x86_mmx_por; // "86.mmx.por" case 11: // 3 strings to match. if (NameR.substr(0, 7) != "86.mmx.") break; switch (NameR[7]) { default: break; case 'e': // 1 string to match. if (NameR.substr(8, 3) != "mms") break; return Intrinsic::x86_mmx_emms; // "86.mmx.emms" case 'p': // 2 strings to match. switch (NameR[8]) { default: break; case 'a': // 1 string to match. if (NameR.substr(9, 2) != "nd") break; return Intrinsic::x86_mmx_pand; // "86.mmx.pand" case 'x': // 1 string to match. if (NameR.substr(9, 2) != "or") break; return Intrinsic::x86_mmx_pxor; // "86.mmx.pxor" } break; } break; case 12: // 2 strings to match. if (NameR.substr(0, 7) != "86.mmx.") break; switch (NameR[7]) { default: break; case 'f': // 1 string to match. if (NameR.substr(8, 4) != "emms") break; return Intrinsic::x86_mmx_femms; // "86.mmx.femms" case 'p': // 1 string to match. if (NameR.substr(8, 4) != "andn") break; return Intrinsic::x86_mmx_pandn; // "86.mmx.pandn" } break; case 13: // 34 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case 'm': // 18 strings to match. if (NameR.substr(4, 4) != "mx.p") break; switch (NameR[8]) { default: break; case 'a': // 6 strings to match. switch (NameR[9]) { default: break; case 'd': // 4 strings to match. if (NameR.substr(10, 2) != "d.") break; switch (NameR[12]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_padd_b; // "86.mmx.padd.b" case 'd': // 1 string to match. return Intrinsic::x86_mmx_padd_d; // "86.mmx.padd.d" case 'q': // 1 string to match. return Intrinsic::x86_mmx_padd_q; // "86.mmx.padd.q" case 'w': // 1 string to match. return Intrinsic::x86_mmx_padd_w; // "86.mmx.padd.w" } break; case 'v': // 2 strings to match. if (NameR.substr(10, 2) != "g.") break; switch (NameR[12]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_pavg_b; // "86.mmx.pavg.b" case 'w': // 1 string to match. return Intrinsic::x86_mmx_pavg_w; // "86.mmx.pavg.w" } break; } break; case 's': // 12 strings to match. switch (NameR[9]) { default: break; case 'l': // 3 strings to match. if (NameR.substr(10, 2) != "l.") break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_mmx_psll_d; // "86.mmx.psll.d" case 'q': // 1 string to match. return Intrinsic::x86_mmx_psll_q; // "86.mmx.psll.q" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psll_w; // "86.mmx.psll.w" } break; case 'r': // 5 strings to match. switch (NameR[10]) { default: break; case 'a': // 2 strings to match. if (NameR[11] != '.') break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_mmx_psra_d; // "86.mmx.psra.d" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psra_w; // "86.mmx.psra.w" } break; case 'l': // 3 strings to match. if (NameR[11] != '.') break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_mmx_psrl_d; // "86.mmx.psrl.d" case 'q': // 1 string to match. return Intrinsic::x86_mmx_psrl_q; // "86.mmx.psrl.q" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psrl_w; // "86.mmx.psrl.w" } break; } break; case 'u': // 4 strings to match. if (NameR.substr(10, 2) != "b.") break; switch (NameR[12]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_psub_b; // "86.mmx.psub.b" case 'd': // 1 string to match. return Intrinsic::x86_mmx_psub_d; // "86.mmx.psub.d" case 'q': // 1 string to match. return Intrinsic::x86_mmx_psub_q; // "86.mmx.psub.q" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psub_w; // "86.mmx.psub.w" } break; } break; } break; case 's': // 16 strings to match. if (NameR.substr(4, 2) != "se") break; switch (NameR[6]) { default: break; case '.': // 13 strings to match. switch (NameR[7]) { default: break; case 'a': // 1 string to match. if (NameR.substr(8, 5) != "dd.ss") break; return Intrinsic::x86_sse_add_ss; // "86.sse.add.ss" case 'c': // 2 strings to match. if (NameR.substr(8, 3) != "mp.") break; switch (NameR[11]) { default: break; case 'p': // 1 string to match. if (NameR[12] != 's') break; return Intrinsic::x86_sse_cmp_ps; // "86.sse.cmp.ps" case 's': // 1 string to match. if (NameR[12] != 's') break; return Intrinsic::x86_sse_cmp_ss; // "86.sse.cmp.ss" } break; case 'd': // 1 string to match. if (NameR.substr(8, 5) != "iv.ss") break; return Intrinsic::x86_sse_div_ss; // "86.sse.div.ss" case 'm': // 5 strings to match. switch (NameR[8]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(9, 2) != "x.") break; switch (NameR[11]) { default: break; case 'p': // 1 string to match. if (NameR[12] != 's') break; return Intrinsic::x86_sse_max_ps; // "86.sse.max.ps" case 's': // 1 string to match. if (NameR[12] != 's') break; return Intrinsic::x86_sse_max_ss; // "86.sse.max.ss" } break; case 'i': // 2 strings to match. if (NameR.substr(9, 2) != "n.") break; switch (NameR[11]) { default: break; case 'p': // 1 string to match. if (NameR[12] != 's') break; return Intrinsic::x86_sse_min_ps; // "86.sse.min.ps" case 's': // 1 string to match. if (NameR[12] != 's') break; return Intrinsic::x86_sse_min_ss; // "86.sse.min.ss" } break; case 'u': // 1 string to match. if (NameR.substr(9, 4) != "l.ss") break; return Intrinsic::x86_sse_mul_ss; // "86.sse.mul.ss" } break; case 'r': // 2 strings to match. if (NameR.substr(8, 3) != "cp.") break; switch (NameR[11]) { default: break; case 'p': // 1 string to match. if (NameR[12] != 's') break; return Intrinsic::x86_sse_rcp_ps; // "86.sse.rcp.ps" case 's': // 1 string to match. if (NameR[12] != 's') break; return Intrinsic::x86_sse_rcp_ss; // "86.sse.rcp.ss" } break; case 's': // 2 strings to match. switch (NameR[8]) { default: break; case 'f': // 1 string to match. if (NameR.substr(9, 4) != "ence") break; return Intrinsic::x86_sse_sfence; // "86.sse.sfence" case 'u': // 1 string to match. if (NameR.substr(9, 4) != "b.ss") break; return Intrinsic::x86_sse_sub_ss; // "86.sse.sub.ss" } break; } break; case '3': // 1 string to match. if (NameR.substr(7, 6) != ".mwait") break; return Intrinsic::x86_sse3_mwait; // "86.sse3.mwait" case '4': // 2 strings to match. if (NameR.substr(7, 5) != "1.dpp") break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_dppd; // "86.sse41.dppd" case 's': // 1 string to match. return Intrinsic::x86_sse41_dpps; // "86.sse41.dpps" } break; } break; } break; case 14: // 58 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case '3': // 9 strings to match. if (NameR.substr(4, 6) != "dnow.p") break; switch (NameR[10]) { default: break; case 'f': // 8 strings to match. switch (NameR[11]) { default: break; case '2': // 1 string to match. if (NameR.substr(12, 2) != "id") break; return Intrinsic::x86_3dnow_pf2id; // "86.3dnow.pf2id" case 'a': // 2 strings to match. switch (NameR[12]) { default: break; case 'c': // 1 string to match. if (NameR[13] != 'c') break; return Intrinsic::x86_3dnow_pfacc; // "86.3dnow.pfacc" case 'd': // 1 string to match. if (NameR[13] != 'd') break; return Intrinsic::x86_3dnow_pfadd; // "86.3dnow.pfadd" } break; case 'm': // 3 strings to match. switch (NameR[12]) { default: break; case 'a': // 1 string to match. if (NameR[13] != 'x') break; return Intrinsic::x86_3dnow_pfmax; // "86.3dnow.pfmax" case 'i': // 1 string to match. if (NameR[13] != 'n') break; return Intrinsic::x86_3dnow_pfmin; // "86.3dnow.pfmin" case 'u': // 1 string to match. if (NameR[13] != 'l') break; return Intrinsic::x86_3dnow_pfmul; // "86.3dnow.pfmul" } break; case 'r': // 1 string to match. if (NameR.substr(12, 2) != "cp") break; return Intrinsic::x86_3dnow_pfrcp; // "86.3dnow.pfrcp" case 's': // 1 string to match. if (NameR.substr(12, 2) != "ub") break; return Intrinsic::x86_3dnow_pfsub; // "86.3dnow.pfsub" } break; case 'i': // 1 string to match. if (NameR.substr(11, 3) != "2fd") break; return Intrinsic::x86_3dnow_pi2fd; // "86.3dnow.pi2fd" } break; case 'm': // 21 strings to match. if (NameR.substr(4, 4) != "mx.p") break; switch (NameR[8]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(9, 4) != "dds.") break; switch (NameR[13]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_padds_b; // "86.mmx.padds.b" case 'w': // 1 string to match. return Intrinsic::x86_mmx_padds_w; // "86.mmx.padds.w" } break; case 'e': // 1 string to match. if (NameR.substr(9, 5) != "xtr.w") break; return Intrinsic::x86_mmx_pextr_w; // "86.mmx.pextr.w" case 'i': // 1 string to match. if (NameR.substr(9, 5) != "nsr.w") break; return Intrinsic::x86_mmx_pinsr_w; // "86.mmx.pinsr.w" case 'm': // 6 strings to match. switch (NameR[9]) { default: break; case 'a': // 2 strings to match. if (NameR[10] != 'x') break; switch (NameR[11]) { default: break; case 's': // 1 string to match. if (NameR.substr(12, 2) != ".w") break; return Intrinsic::x86_mmx_pmaxs_w; // "86.mmx.pmaxs.w" case 'u': // 1 string to match. if (NameR.substr(12, 2) != ".b") break; return Intrinsic::x86_mmx_pmaxu_b; // "86.mmx.pmaxu.b" } break; case 'i': // 2 strings to match. if (NameR[10] != 'n') break; switch (NameR[11]) { default: break; case 's': // 1 string to match. if (NameR.substr(12, 2) != ".w") break; return Intrinsic::x86_mmx_pmins_w; // "86.mmx.pmins.w" case 'u': // 1 string to match. if (NameR.substr(12, 2) != ".b") break; return Intrinsic::x86_mmx_pminu_b; // "86.mmx.pminu.b" } break; case 'u': // 2 strings to match. if (NameR[10] != 'l') break; switch (NameR[11]) { default: break; case 'h': // 1 string to match. if (NameR.substr(12, 2) != ".w") break; return Intrinsic::x86_mmx_pmulh_w; // "86.mmx.pmulh.w" case 'l': // 1 string to match. if (NameR.substr(12, 2) != ".w") break; return Intrinsic::x86_mmx_pmull_w; // "86.mmx.pmull.w" } break; } break; case 's': // 11 strings to match. switch (NameR[9]) { default: break; case 'a': // 1 string to match. if (NameR.substr(10, 4) != "d.bw") break; return Intrinsic::x86_mmx_psad_bw; // "86.mmx.psad.bw" case 'l': // 3 strings to match. if (NameR.substr(10, 3) != "li.") break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_mmx_pslli_d; // "86.mmx.pslli.d" case 'q': // 1 string to match. return Intrinsic::x86_mmx_pslli_q; // "86.mmx.pslli.q" case 'w': // 1 string to match. return Intrinsic::x86_mmx_pslli_w; // "86.mmx.pslli.w" } break; case 'r': // 5 strings to match. switch (NameR[10]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(11, 2) != "i.") break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_mmx_psrai_d; // "86.mmx.psrai.d" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psrai_w; // "86.mmx.psrai.w" } break; case 'l': // 3 strings to match. if (NameR.substr(11, 2) != "i.") break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_mmx_psrli_d; // "86.mmx.psrli.d" case 'q': // 1 string to match. return Intrinsic::x86_mmx_psrli_q; // "86.mmx.psrli.q" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psrli_w; // "86.mmx.psrli.w" } break; } break; case 'u': // 2 strings to match. if (NameR.substr(10, 3) != "bs.") break; switch (NameR[13]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_psubs_b; // "86.mmx.psubs.b" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psubs_w; // "86.mmx.psubs.w" } break; } break; } break; case 's': // 28 strings to match. if (NameR.substr(4, 2) != "se") break; switch (NameR[6]) { default: break; case '.': // 5 strings to match. switch (NameR[7]) { default: break; case 'l': // 1 string to match. if (NameR.substr(8, 6) != "dmxcsr") break; return Intrinsic::x86_sse_ldmxcsr; // "86.sse.ldmxcsr" case 'p': // 1 string to match. if (NameR.substr(8, 6) != "shuf.w") break; return Intrinsic::x86_sse_pshuf_w; // "86.sse.pshuf.w" case 's': // 3 strings to match. switch (NameR[8]) { default: break; case 'q': // 2 strings to match. if (NameR.substr(9, 3) != "rt.") break; switch (NameR[12]) { default: break; case 'p': // 1 string to match. if (NameR[13] != 's') break; return Intrinsic::x86_sse_sqrt_ps; // "86.sse.sqrt.ps" case 's': // 1 string to match. if (NameR[13] != 's') break; return Intrinsic::x86_sse_sqrt_ss; // "86.sse.sqrt.ss" } break; case 't': // 1 string to match. if (NameR.substr(9, 5) != "mxcsr") break; return Intrinsic::x86_sse_stmxcsr; // "86.sse.stmxcsr" } break; } break; case '2': // 22 strings to match. if (NameR[7] != '.') break; switch (NameR[8]) { default: break; case 'a': // 1 string to match. if (NameR.substr(9, 5) != "dd.sd") break; return Intrinsic::x86_sse2_add_sd; // "86.sse2.add.sd" case 'c': // 2 strings to match. if (NameR.substr(9, 3) != "mp.") break; switch (NameR[12]) { default: break; case 'p': // 1 string to match. if (NameR[13] != 'd') break; return Intrinsic::x86_sse2_cmp_pd; // "86.sse2.cmp.pd" case 's': // 1 string to match. if (NameR[13] != 'd') break; return Intrinsic::x86_sse2_cmp_sd; // "86.sse2.cmp.sd" } break; case 'd': // 1 string to match. if (NameR.substr(9, 5) != "iv.sd") break; return Intrinsic::x86_sse2_div_sd; // "86.sse2.div.sd" case 'l': // 1 string to match. if (NameR.substr(9, 5) != "fence") break; return Intrinsic::x86_sse2_lfence; // "86.sse2.lfence" case 'm': // 6 strings to match. switch (NameR[9]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(10, 2) != "x.") break; switch (NameR[12]) { default: break; case 'p': // 1 string to match. if (NameR[13] != 'd') break; return Intrinsic::x86_sse2_max_pd; // "86.sse2.max.pd" case 's': // 1 string to match. if (NameR[13] != 'd') break; return Intrinsic::x86_sse2_max_sd; // "86.sse2.max.sd" } break; case 'f': // 1 string to match. if (NameR.substr(10, 4) != "ence") break; return Intrinsic::x86_sse2_mfence; // "86.sse2.mfence" case 'i': // 2 strings to match. if (NameR.substr(10, 2) != "n.") break; switch (NameR[12]) { default: break; case 'p': // 1 string to match. if (NameR[13] != 'd') break; return Intrinsic::x86_sse2_min_pd; // "86.sse2.min.pd" case 's': // 1 string to match. if (NameR[13] != 'd') break; return Intrinsic::x86_sse2_min_sd; // "86.sse2.min.sd" } break; case 'u': // 1 string to match. if (NameR.substr(10, 4) != "l.sd") break; return Intrinsic::x86_sse2_mul_sd; // "86.sse2.mul.sd" } break; case 'p': // 10 strings to match. switch (NameR[9]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(10, 3) != "vg.") break; switch (NameR[13]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_sse2_pavg_b; // "86.sse2.pavg.b" case 'w': // 1 string to match. return Intrinsic::x86_sse2_pavg_w; // "86.sse2.pavg.w" } break; case 's': // 8 strings to match. switch (NameR[10]) { default: break; case 'l': // 3 strings to match. if (NameR.substr(11, 2) != "l.") break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_psll_d; // "86.sse2.psll.d" case 'q': // 1 string to match. return Intrinsic::x86_sse2_psll_q; // "86.sse2.psll.q" case 'w': // 1 string to match. return Intrinsic::x86_sse2_psll_w; // "86.sse2.psll.w" } break; case 'r': // 5 strings to match. switch (NameR[11]) { default: break; case 'a': // 2 strings to match. if (NameR[12] != '.') break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_psra_d; // "86.sse2.psra.d" case 'w': // 1 string to match. return Intrinsic::x86_sse2_psra_w; // "86.sse2.psra.w" } break; case 'l': // 3 strings to match. if (NameR[12] != '.') break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_psrl_d; // "86.sse2.psrl.d" case 'q': // 1 string to match. return Intrinsic::x86_sse2_psrl_q; // "86.sse2.psrl.q" case 'w': // 1 string to match. return Intrinsic::x86_sse2_psrl_w; // "86.sse2.psrl.w" } break; } break; } break; } break; case 's': // 1 string to match. if (NameR.substr(9, 5) != "ub.sd") break; return Intrinsic::x86_sse2_sub_sd; // "86.sse2.sub.sd" } break; case '3': // 1 string to match. if (NameR.substr(7, 7) != ".ldu.dq") break; return Intrinsic::x86_sse3_ldu_dq; // "86.sse3.ldu.dq" } break; } break; case 15: // 79 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case '3': // 3 strings to match. if (NameR.substr(4, 4) != "dnow") break; switch (NameR[8]) { default: break; case '.': // 1 string to match. if (NameR.substr(9, 6) != "pfsubr") break; return Intrinsic::x86_3dnow_pfsubr; // "86.3dnow.pfsubr" case 'a': // 2 strings to match. if (NameR.substr(9, 2) != ".p") break; switch (NameR[11]) { default: break; case 'f': // 1 string to match. if (NameR.substr(12, 3) != "2iw") break; return Intrinsic::x86_3dnowa_pf2iw; // "86.3dnowa.pf2iw" case 'i': // 1 string to match. if (NameR.substr(12, 3) != "2fw") break; return Intrinsic::x86_3dnowa_pi2fw; // "86.3dnowa.pi2fw" } break; } break; case 'a': // 4 strings to match. switch (NameR[4]) { default: break; case 'e': // 3 strings to match. if (NameR.substr(5, 7) != "sni.aes") break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. if (NameR.substr(13, 2) != "ec") break; return Intrinsic::x86_aesni_aesdec; // "86.aesni.aesdec" case 'e': // 1 string to match. if (NameR.substr(13, 2) != "nc") break; return Intrinsic::x86_aesni_aesenc; // "86.aesni.aesenc" case 'i': // 1 string to match. if (NameR.substr(13, 2) != "mc") break; return Intrinsic::x86_aesni_aesimc; // "86.aesni.aesimc" } break; case 'v': // 1 string to match. if (NameR.substr(5, 10) != "x.vzeroall") break; return Intrinsic::x86_avx_vzeroall; // "86.avx.vzeroall" } break; case 'm': // 19 strings to match. if (NameR.substr(4, 3) != "mx.") break; switch (NameR[7]) { default: break; case 'm': // 2 strings to match. switch (NameR[8]) { default: break; case 'a': // 1 string to match. if (NameR.substr(9, 6) != "skmovq") break; return Intrinsic::x86_mmx_maskmovq; // "86.mmx.maskmovq" case 'o': // 1 string to match. if (NameR.substr(9, 6) != "vnt.dq") break; return Intrinsic::x86_mmx_movnt_dq; // "86.mmx.movnt.dq" } break; case 'p': // 17 strings to match. switch (NameR[8]) { default: break; case 'a': // 5 strings to match. switch (NameR[9]) { default: break; case 'c': // 3 strings to match. if (NameR[10] != 'k') break; switch (NameR[11]) { default: break; case 's': // 2 strings to match. if (NameR[12] != 's') break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. if (NameR[14] != 'w') break; return Intrinsic::x86_mmx_packssdw; // "86.mmx.packssdw" case 'w': // 1 string to match. if (NameR[14] != 'b') break; return Intrinsic::x86_mmx_packsswb; // "86.mmx.packsswb" } break; case 'u': // 1 string to match. if (NameR.substr(12, 3) != "swb") break; return Intrinsic::x86_mmx_packuswb; // "86.mmx.packuswb" } break; case 'd': // 2 strings to match. if (NameR.substr(10, 4) != "dus.") break; switch (NameR[14]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_paddus_b; // "86.mmx.paddus.b" case 'w': // 1 string to match. return Intrinsic::x86_mmx_paddus_w; // "86.mmx.paddus.w" } break; } break; case 'c': // 6 strings to match. if (NameR.substr(9, 2) != "mp") break; switch (NameR[11]) { default: break; case 'e': // 3 strings to match. if (NameR.substr(12, 2) != "q.") break; switch (NameR[14]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_pcmpeq_b; // "86.mmx.pcmpeq.b" case 'd': // 1 string to match. return Intrinsic::x86_mmx_pcmpeq_d; // "86.mmx.pcmpeq.d" case 'w': // 1 string to match. return Intrinsic::x86_mmx_pcmpeq_w; // "86.mmx.pcmpeq.w" } break; case 'g': // 3 strings to match. if (NameR.substr(12, 2) != "t.") break; switch (NameR[14]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_pcmpgt_b; // "86.mmx.pcmpgt.b" case 'd': // 1 string to match. return Intrinsic::x86_mmx_pcmpgt_d; // "86.mmx.pcmpgt.d" case 'w': // 1 string to match. return Intrinsic::x86_mmx_pcmpgt_w; // "86.mmx.pcmpgt.w" } break; } break; case 'm': // 4 strings to match. switch (NameR[9]) { default: break; case 'a': // 1 string to match. if (NameR.substr(10, 5) != "dd.wd") break; return Intrinsic::x86_mmx_pmadd_wd; // "86.mmx.pmadd.wd" case 'o': // 1 string to match. if (NameR.substr(10, 5) != "vmskb") break; return Intrinsic::x86_mmx_pmovmskb; // "86.mmx.pmovmskb" case 'u': // 2 strings to match. if (NameR[10] != 'l') break; switch (NameR[11]) { default: break; case 'h': // 1 string to match. if (NameR.substr(12, 3) != "u.w") break; return Intrinsic::x86_mmx_pmulhu_w; // "86.mmx.pmulhu.w" case 'u': // 1 string to match. if (NameR.substr(12, 3) != ".dq") break; return Intrinsic::x86_mmx_pmulu_dq; // "86.mmx.pmulu.dq" } break; } break; case 's': // 2 strings to match. if (NameR.substr(9, 5) != "ubus.") break; switch (NameR[14]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_psubus_b; // "86.mmx.psubus.b" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psubus_w; // "86.mmx.psubus.w" } break; } break; } break; case 's': // 53 strings to match. if (NameR[4] != 's') break; switch (NameR[5]) { default: break; case 'e': // 50 strings to match. switch (NameR[6]) { default: break; case '.': // 8 strings to match. switch (NameR[7]) { default: break; case 'c': // 6 strings to match. if (NameR.substr(8, 2) != "vt") break; switch (NameR[10]) { default: break; case 'p': // 4 strings to match. switch (NameR[11]) { default: break; case 'd': // 1 string to match. if (NameR.substr(12, 3) != "2pi") break; return Intrinsic::x86_sse_cvtpd2pi; // "86.sse.cvtpd2pi" case 'i': // 2 strings to match. if (NameR.substr(12, 2) != "2p") break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse_cvtpi2pd; // "86.sse.cvtpi2pd" case 's': // 1 string to match. return Intrinsic::x86_sse_cvtpi2ps; // "86.sse.cvtpi2ps" } break; case 's': // 1 string to match. if (NameR.substr(12, 3) != "2pi") break; return Intrinsic::x86_sse_cvtps2pi; // "86.sse.cvtps2pi" } break; case 's': // 2 strings to match. switch (NameR[11]) { default: break; case 'i': // 1 string to match. if (NameR.substr(12, 3) != "2ss") break; return Intrinsic::x86_sse_cvtsi2ss; // "86.sse.cvtsi2ss" case 's': // 1 string to match. if (NameR.substr(12, 3) != "2si") break; return Intrinsic::x86_sse_cvtss2si; // "86.sse.cvtss2si" } break; } break; case 'r': // 2 strings to match. if (NameR.substr(8, 5) != "sqrt.") break; switch (NameR[13]) { default: break; case 'p': // 1 string to match. if (NameR[14] != 's') break; return Intrinsic::x86_sse_rsqrt_ps; // "86.sse.rsqrt.ps" case 's': // 1 string to match. if (NameR[14] != 's') break; return Intrinsic::x86_sse_rsqrt_ss; // "86.sse.rsqrt.ss" } break; } break; case '2': // 23 strings to match. if (NameR[7] != '.') break; switch (NameR[8]) { default: break; case 'c': // 1 string to match. if (NameR.substr(9, 6) != "lflush") break; return Intrinsic::x86_sse2_clflush; // "86.sse2.clflush" case 'p': // 20 strings to match. switch (NameR[9]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(10, 4) != "dds.") break; switch (NameR[14]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_sse2_padds_b; // "86.sse2.padds.b" case 'w': // 1 string to match. return Intrinsic::x86_sse2_padds_w; // "86.sse2.padds.w" } break; case 'm': // 5 strings to match. switch (NameR[10]) { default: break; case 'a': // 2 strings to match. if (NameR[11] != 'x') break; switch (NameR[12]) { default: break; case 's': // 1 string to match. if (NameR.substr(13, 2) != ".w") break; return Intrinsic::x86_sse2_pmaxs_w; // "86.sse2.pmaxs.w" case 'u': // 1 string to match. if (NameR.substr(13, 2) != ".b") break; return Intrinsic::x86_sse2_pmaxu_b; // "86.sse2.pmaxu.b" } break; case 'i': // 2 strings to match. if (NameR[11] != 'n') break; switch (NameR[12]) { default: break; case 's': // 1 string to match. if (NameR.substr(13, 2) != ".w") break; return Intrinsic::x86_sse2_pmins_w; // "86.sse2.pmins.w" case 'u': // 1 string to match. if (NameR.substr(13, 2) != ".b") break; return Intrinsic::x86_sse2_pminu_b; // "86.sse2.pminu.b" } break; case 'u': // 1 string to match. if (NameR.substr(11, 4) != "lh.w") break; return Intrinsic::x86_sse2_pmulh_w; // "86.sse2.pmulh.w" } break; case 's': // 13 strings to match. switch (NameR[10]) { default: break; case 'a': // 1 string to match. if (NameR.substr(11, 4) != "d.bw") break; return Intrinsic::x86_sse2_psad_bw; // "86.sse2.psad.bw" case 'l': // 4 strings to match. if (NameR[11] != 'l') break; switch (NameR[12]) { default: break; case '.': // 1 string to match. if (NameR.substr(13, 2) != "dq") break; return Intrinsic::x86_sse2_psll_dq; // "86.sse2.psll.dq" case 'i': // 3 strings to match. if (NameR[13] != '.') break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_pslli_d; // "86.sse2.pslli.d" case 'q': // 1 string to match. return Intrinsic::x86_sse2_pslli_q; // "86.sse2.pslli.q" case 'w': // 1 string to match. return Intrinsic::x86_sse2_pslli_w; // "86.sse2.pslli.w" } break; } break; case 'r': // 6 strings to match. switch (NameR[11]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(12, 2) != "i.") break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_psrai_d; // "86.sse2.psrai.d" case 'w': // 1 string to match. return Intrinsic::x86_sse2_psrai_w; // "86.sse2.psrai.w" } break; case 'l': // 4 strings to match. switch (NameR[12]) { default: break; case '.': // 1 string to match. if (NameR.substr(13, 2) != "dq") break; return Intrinsic::x86_sse2_psrl_dq; // "86.sse2.psrl.dq" case 'i': // 3 strings to match. if (NameR[13] != '.') break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_psrli_d; // "86.sse2.psrli.d" case 'q': // 1 string to match. return Intrinsic::x86_sse2_psrli_q; // "86.sse2.psrli.q" case 'w': // 1 string to match. return Intrinsic::x86_sse2_psrli_w; // "86.sse2.psrli.w" } break; } break; } break; case 'u': // 2 strings to match. if (NameR.substr(11, 3) != "bs.") break; switch (NameR[14]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_sse2_psubs_b; // "86.sse2.psubs.b" case 'w': // 1 string to match. return Intrinsic::x86_sse2_psubs_w; // "86.sse2.psubs.w" } break; } break; } break; case 's': // 2 strings to match. if (NameR.substr(9, 4) != "qrt.") break; switch (NameR[13]) { default: break; case 'p': // 1 string to match. if (NameR[14] != 'd') break; return Intrinsic::x86_sse2_sqrt_pd; // "86.sse2.sqrt.pd" case 's': // 1 string to match. if (NameR[14] != 'd') break; return Intrinsic::x86_sse2_sqrt_sd; // "86.sse2.sqrt.sd" } break; } break; case '3': // 5 strings to match. if (NameR[7] != '.') break; switch (NameR[8]) { default: break; case 'h': // 4 strings to match. switch (NameR[9]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(10, 4) != "dd.p") break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse3_hadd_pd; // "86.sse3.hadd.pd" case 's': // 1 string to match. return Intrinsic::x86_sse3_hadd_ps; // "86.sse3.hadd.ps" } break; case 's': // 2 strings to match. if (NameR.substr(10, 4) != "ub.p") break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse3_hsub_pd; // "86.sse3.hsub.pd" case 's': // 1 string to match. return Intrinsic::x86_sse3_hsub_ps; // "86.sse3.hsub.ps" } break; } break; case 'm': // 1 string to match. if (NameR.substr(9, 6) != "onitor") break; return Intrinsic::x86_sse3_monitor; // "86.sse3.monitor" } break; case '4': // 14 strings to match. if (NameR.substr(7, 3) != "1.p") break; switch (NameR[10]) { default: break; case 'e': // 3 strings to match. if (NameR.substr(11, 3) != "xtr") break; switch (NameR[14]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_sse41_pextrb; // "86.sse41.pextrb" case 'd': // 1 string to match. return Intrinsic::x86_sse41_pextrd; // "86.sse41.pextrd" case 'q': // 1 string to match. return Intrinsic::x86_sse41_pextrq; // "86.sse41.pextrq" } break; case 'm': // 9 strings to match. switch (NameR[11]) { default: break; case 'a': // 4 strings to match. if (NameR[12] != 'x') break; switch (NameR[13]) { default: break; case 's': // 2 strings to match. switch (NameR[14]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_sse41_pmaxsb; // "86.sse41.pmaxsb" case 'd': // 1 string to match. return Intrinsic::x86_sse41_pmaxsd; // "86.sse41.pmaxsd" } break; case 'u': // 2 strings to match. switch (NameR[14]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_pmaxud; // "86.sse41.pmaxud" case 'w': // 1 string to match. return Intrinsic::x86_sse41_pmaxuw; // "86.sse41.pmaxuw" } break; } break; case 'i': // 4 strings to match. if (NameR[12] != 'n') break; switch (NameR[13]) { default: break; case 's': // 2 strings to match. switch (NameR[14]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_sse41_pminsb; // "86.sse41.pminsb" case 'd': // 1 string to match. return Intrinsic::x86_sse41_pminsd; // "86.sse41.pminsd" } break; case 'u': // 2 strings to match. switch (NameR[14]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_pminud; // "86.sse41.pminud" case 'w': // 1 string to match. return Intrinsic::x86_sse41_pminuw; // "86.sse41.pminuw" } break; } break; case 'u': // 1 string to match. if (NameR.substr(12, 3) != "ldq") break; return Intrinsic::x86_sse41_pmuldq; // "86.sse41.pmuldq" } break; case 't': // 2 strings to match. if (NameR.substr(11, 3) != "est") break; switch (NameR[14]) { default: break; case 'c': // 1 string to match. return Intrinsic::x86_sse41_ptestc; // "86.sse41.ptestc" case 'z': // 1 string to match. return Intrinsic::x86_sse41_ptestz; // "86.sse41.ptestz" } break; } break; } break; case 's': // 3 strings to match. if (NameR.substr(6, 8) != "e3.pabs.") break; switch (NameR[14]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_ssse3_pabs_b; // "86.ssse3.pabs.b" case 'd': // 1 string to match. return Intrinsic::x86_ssse3_pabs_d; // "86.ssse3.pabs.d" case 'w': // 1 string to match. return Intrinsic::x86_ssse3_pabs_w; // "86.ssse3.pabs.w" } break; } break; } break; case 16: // 67 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case '3': // 8 strings to match. if (NameR.substr(4, 4) != "dnow") break; switch (NameR[8]) { default: break; case '.': // 6 strings to match. if (NameR[9] != 'p') break; switch (NameR[10]) { default: break; case 'a': // 1 string to match. if (NameR.substr(11, 5) != "vgusb") break; return Intrinsic::x86_3dnow_pavgusb; // "86.3dnow.pavgusb" case 'f': // 4 strings to match. switch (NameR[11]) { default: break; case 'c': // 3 strings to match. if (NameR.substr(12, 2) != "mp") break; switch (NameR[14]) { default: break; case 'e': // 1 string to match. if (NameR[15] != 'q') break; return Intrinsic::x86_3dnow_pfcmpeq; // "86.3dnow.pfcmpeq" case 'g': // 2 strings to match. switch (NameR[15]) { default: break; case 'e': // 1 string to match. return Intrinsic::x86_3dnow_pfcmpge; // "86.3dnow.pfcmpge" case 't': // 1 string to match. return Intrinsic::x86_3dnow_pfcmpgt; // "86.3dnow.pfcmpgt" } break; } break; case 'r': // 1 string to match. if (NameR.substr(12, 4) != "sqrt") break; return Intrinsic::x86_3dnow_pfrsqrt; // "86.3dnow.pfrsqrt" } break; case 'm': // 1 string to match. if (NameR.substr(11, 5) != "ulhrw") break; return Intrinsic::x86_3dnow_pmulhrw; // "86.3dnow.pmulhrw" } break; case 'a': // 2 strings to match. if (NameR.substr(9, 2) != ".p") break; switch (NameR[11]) { default: break; case 'f': // 1 string to match. if (NameR.substr(12, 4) != "nacc") break; return Intrinsic::x86_3dnowa_pfnacc; // "86.3dnowa.pfnacc" case 's': // 1 string to match. if (NameR.substr(12, 4) != "wapd") break; return Intrinsic::x86_3dnowa_pswapd; // "86.3dnowa.pswapd" } break; } break; case 'a': // 5 strings to match. if (NameR.substr(4, 3) != "vx.") break; switch (NameR[7]) { default: break; case 'd': // 1 string to match. if (NameR.substr(8, 8) != "p.ps.256") break; return Intrinsic::x86_avx_dp_ps_256; // "86.avx.dp.ps.256" case 'v': // 4 strings to match. if (NameR.substr(8, 4) != "test") break; switch (NameR[12]) { default: break; case 'c': // 2 strings to match. if (NameR.substr(13, 2) != ".p") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_vtestc_pd; // "86.avx.vtestc.pd" case 's': // 1 string to match. return Intrinsic::x86_avx_vtestc_ps; // "86.avx.vtestc.ps" } break; case 'z': // 2 strings to match. if (NameR.substr(13, 2) != ".p") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_vtestz_pd; // "86.avx.vtestz.pd" case 's': // 1 string to match. return Intrinsic::x86_avx_vtestz_ps; // "86.avx.vtestz.ps" } break; } break; } break; case 'm': // 7 strings to match. if (NameR.substr(4, 4) != "mx.p") break; switch (NameR[8]) { default: break; case 'a': // 1 string to match. if (NameR.substr(9, 7) != "lignr.b") break; return Intrinsic::x86_mmx_palignr_b; // "86.mmx.palignr.b" case 'u': // 6 strings to match. if (NameR.substr(9, 4) != "npck") break; switch (NameR[13]) { default: break; case 'h': // 3 strings to match. switch (NameR[14]) { default: break; case 'b': // 1 string to match. if (NameR[15] != 'w') break; return Intrinsic::x86_mmx_punpckhbw; // "86.mmx.punpckhbw" case 'd': // 1 string to match. if (NameR[15] != 'q') break; return Intrinsic::x86_mmx_punpckhdq; // "86.mmx.punpckhdq" case 'w': // 1 string to match. if (NameR[15] != 'd') break; return Intrinsic::x86_mmx_punpckhwd; // "86.mmx.punpckhwd" } break; case 'l': // 3 strings to match. switch (NameR[14]) { default: break; case 'b': // 1 string to match. if (NameR[15] != 'w') break; return Intrinsic::x86_mmx_punpcklbw; // "86.mmx.punpcklbw" case 'd': // 1 string to match. if (NameR[15] != 'q') break; return Intrinsic::x86_mmx_punpckldq; // "86.mmx.punpckldq" case 'w': // 1 string to match. if (NameR[15] != 'd') break; return Intrinsic::x86_mmx_punpcklwd; // "86.mmx.punpcklwd" } break; } break; } break; case 's': // 47 strings to match. if (NameR[4] != 's') break; switch (NameR[5]) { default: break; case 'e': // 39 strings to match. switch (NameR[6]) { default: break; case '.': // 10 strings to match. switch (NameR[7]) { default: break; case 'c': // 8 strings to match. switch (NameR[8]) { default: break; case 'o': // 5 strings to match. if (NameR.substr(9, 2) != "mi") break; switch (NameR[11]) { default: break; case 'e': // 1 string to match. if (NameR.substr(12, 4) != "q.ss") break; return Intrinsic::x86_sse_comieq_ss; // "86.sse.comieq.ss" case 'g': // 2 strings to match. switch (NameR[12]) { default: break; case 'e': // 1 string to match. if (NameR.substr(13, 3) != ".ss") break; return Intrinsic::x86_sse_comige_ss; // "86.sse.comige.ss" case 't': // 1 string to match. if (NameR.substr(13, 3) != ".ss") break; return Intrinsic::x86_sse_comigt_ss; // "86.sse.comigt.ss" } break; case 'l': // 2 strings to match. switch (NameR[12]) { default: break; case 'e': // 1 string to match. if (NameR.substr(13, 3) != ".ss") break; return Intrinsic::x86_sse_comile_ss; // "86.sse.comile.ss" case 't': // 1 string to match. if (NameR.substr(13, 3) != ".ss") break; return Intrinsic::x86_sse_comilt_ss; // "86.sse.comilt.ss" } break; } break; case 'v': // 3 strings to match. if (NameR.substr(9, 2) != "tt") break; switch (NameR[11]) { default: break; case 'p': // 2 strings to match. switch (NameR[12]) { default: break; case 'd': // 1 string to match. if (NameR.substr(13, 3) != "2pi") break; return Intrinsic::x86_sse_cvttpd2pi; // "86.sse.cvttpd2pi" case 's': // 1 string to match. if (NameR.substr(13, 3) != "2pi") break; return Intrinsic::x86_sse_cvttps2pi; // "86.sse.cvttps2pi" } break; case 's': // 1 string to match. if (NameR.substr(12, 4) != "s2si") break; return Intrinsic::x86_sse_cvttss2si; // "86.sse.cvttss2si" } break; } break; case 'm': // 1 string to match. if (NameR.substr(8, 8) != "ovmsk.ps") break; return Intrinsic::x86_sse_movmsk_ps; // "86.sse.movmsk.ps" case 's': // 1 string to match. if (NameR.substr(8, 8) != "toreu.ps") break; return Intrinsic::x86_sse_storeu_ps; // "86.sse.storeu.ps" } break; case '2': // 23 strings to match. if (NameR[7] != '.') break; switch (NameR[8]) { default: break; case 'c': // 10 strings to match. if (NameR.substr(9, 2) != "vt") break; switch (NameR[11]) { default: break; case 'd': // 2 strings to match. if (NameR.substr(12, 3) != "q2p") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_cvtdq2pd; // "86.sse2.cvtdq2pd" case 's': // 1 string to match. return Intrinsic::x86_sse2_cvtdq2ps; // "86.sse2.cvtdq2ps" } break; case 'p': // 4 strings to match. switch (NameR[12]) { default: break; case 'd': // 2 strings to match. if (NameR[13] != '2') break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. if (NameR[15] != 'q') break; return Intrinsic::x86_sse2_cvtpd2dq; // "86.sse2.cvtpd2dq" case 'p': // 1 string to match. if (NameR[15] != 's') break; return Intrinsic::x86_sse2_cvtpd2ps; // "86.sse2.cvtpd2ps" } break; case 's': // 2 strings to match. if (NameR[13] != '2') break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. if (NameR[15] != 'q') break; return Intrinsic::x86_sse2_cvtps2dq; // "86.sse2.cvtps2dq" case 'p': // 1 string to match. if (NameR[15] != 'd') break; return Intrinsic::x86_sse2_cvtps2pd; // "86.sse2.cvtps2pd" } break; } break; case 's': // 4 strings to match. switch (NameR[12]) { default: break; case 'd': // 2 strings to match. if (NameR.substr(13, 2) != "2s") break; switch (NameR[15]) { default: break; case 'i': // 1 string to match. return Intrinsic::x86_sse2_cvtsd2si; // "86.sse2.cvtsd2si" case 's': // 1 string to match. return Intrinsic::x86_sse2_cvtsd2ss; // "86.sse2.cvtsd2ss" } break; case 'i': // 1 string to match. if (NameR.substr(13, 3) != "2sd") break; return Intrinsic::x86_sse2_cvtsi2sd; // "86.sse2.cvtsi2sd" case 's': // 1 string to match. if (NameR.substr(13, 3) != "2sd") break; return Intrinsic::x86_sse2_cvtss2sd; // "86.sse2.cvtss2sd" } break; } break; case 'p': // 13 strings to match. switch (NameR[9]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(10, 5) != "ddus.") break; switch (NameR[15]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_sse2_paddus_b; // "86.sse2.paddus.b" case 'w': // 1 string to match. return Intrinsic::x86_sse2_paddus_w; // "86.sse2.paddus.w" } break; case 'c': // 6 strings to match. if (NameR.substr(10, 2) != "mp") break; switch (NameR[12]) { default: break; case 'e': // 3 strings to match. if (NameR.substr(13, 2) != "q.") break; switch (NameR[15]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_sse2_pcmpeq_b; // "86.sse2.pcmpeq.b" case 'd': // 1 string to match. return Intrinsic::x86_sse2_pcmpeq_d; // "86.sse2.pcmpeq.d" case 'w': // 1 string to match. return Intrinsic::x86_sse2_pcmpeq_w; // "86.sse2.pcmpeq.w" } break; case 'g': // 3 strings to match. if (NameR.substr(13, 2) != "t.") break; switch (NameR[15]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_sse2_pcmpgt_b; // "86.sse2.pcmpgt.b" case 'd': // 1 string to match. return Intrinsic::x86_sse2_pcmpgt_d; // "86.sse2.pcmpgt.d" case 'w': // 1 string to match. return Intrinsic::x86_sse2_pcmpgt_w; // "86.sse2.pcmpgt.w" } break; } break; case 'm': // 3 strings to match. switch (NameR[10]) { default: break; case 'a': // 1 string to match. if (NameR.substr(11, 5) != "dd.wd") break; return Intrinsic::x86_sse2_pmadd_wd; // "86.sse2.pmadd.wd" case 'u': // 2 strings to match. if (NameR[11] != 'l') break; switch (NameR[12]) { default: break; case 'h': // 1 string to match. if (NameR.substr(13, 3) != "u.w") break; return Intrinsic::x86_sse2_pmulhu_w; // "86.sse2.pmulhu.w" case 'u': // 1 string to match. if (NameR.substr(13, 3) != ".dq") break; return Intrinsic::x86_sse2_pmulu_dq; // "86.sse2.pmulu.dq" } break; } break; case 's': // 2 strings to match. if (NameR.substr(10, 5) != "ubus.") break; switch (NameR[15]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_sse2_psubus_b; // "86.sse2.psubus.b" case 'w': // 1 string to match. return Intrinsic::x86_sse2_psubus_w; // "86.sse2.psubus.w" } break; } break; } break; case '4': // 6 strings to match. switch (NameR[7]) { default: break; case '1': // 5 strings to match. if (NameR[8] != '.') break; switch (NameR[9]) { default: break; case 'b': // 2 strings to match. if (NameR.substr(10, 5) != "lendp") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_blendpd; // "86.sse41.blendpd" case 's': // 1 string to match. return Intrinsic::x86_sse41_blendps; // "86.sse41.blendps" } break; case 'm': // 1 string to match. if (NameR.substr(10, 6) != "psadbw") break; return Intrinsic::x86_sse41_mpsadbw; // "86.sse41.mpsadbw" case 'p': // 2 strings to match. switch (NameR[10]) { default: break; case 'b': // 1 string to match. if (NameR.substr(11, 5) != "lendw") break; return Intrinsic::x86_sse41_pblendw; // "86.sse41.pblendw" case 'c': // 1 string to match. if (NameR.substr(11, 5) != "mpeqq") break; return Intrinsic::x86_sse41_pcmpeqq; // "86.sse41.pcmpeqq" } break; } break; case '2': // 1 string to match. if (NameR.substr(8, 8) != ".pcmpgtq") break; return Intrinsic::x86_sse42_pcmpgtq; // "86.sse42.pcmpgtq" } break; } break; case 's': // 8 strings to match. if (NameR.substr(6, 4) != "e3.p") break; switch (NameR[10]) { default: break; case 'h': // 4 strings to match. switch (NameR[11]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(12, 3) != "dd.") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_ssse3_phadd_d; // "86.ssse3.phadd.d" case 'w': // 1 string to match. return Intrinsic::x86_ssse3_phadd_w; // "86.ssse3.phadd.w" } break; case 's': // 2 strings to match. if (NameR.substr(12, 3) != "ub.") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_ssse3_phsub_d; // "86.ssse3.phsub.d" case 'w': // 1 string to match. return Intrinsic::x86_ssse3_phsub_w; // "86.ssse3.phsub.w" } break; } break; case 's': // 4 strings to match. switch (NameR[11]) { default: break; case 'h': // 1 string to match. if (NameR.substr(12, 4) != "uf.b") break; return Intrinsic::x86_ssse3_pshuf_b; // "86.ssse3.pshuf.b" case 'i': // 3 strings to match. if (NameR.substr(12, 3) != "gn.") break; switch (NameR[15]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_ssse3_psign_b; // "86.ssse3.psign.b" case 'd': // 1 string to match. return Intrinsic::x86_ssse3_psign_d; // "86.ssse3.psign.d" case 'w': // 1 string to match. return Intrinsic::x86_ssse3_psign_w; // "86.ssse3.psign.w" } break; } break; } break; } break; } break; case 17: // 64 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case '3': // 4 strings to match. if (NameR.substr(4, 4) != "dnow") break; switch (NameR[8]) { default: break; case '.': // 3 strings to match. if (NameR.substr(9, 3) != "pfr") break; switch (NameR[12]) { default: break; case 'c': // 2 strings to match. if (NameR.substr(13, 3) != "pit") break; switch (NameR[16]) { default: break; case '1': // 1 string to match. return Intrinsic::x86_3dnow_pfrcpit1; // "86.3dnow.pfrcpit1" case '2': // 1 string to match. return Intrinsic::x86_3dnow_pfrcpit2; // "86.3dnow.pfrcpit2" } break; case 's': // 1 string to match. if (NameR.substr(13, 4) != "qit1") break; return Intrinsic::x86_3dnow_pfrsqit1; // "86.3dnow.pfrsqit1" } break; case 'a': // 1 string to match. if (NameR.substr(9, 8) != ".pfpnacc") break; return Intrinsic::x86_3dnowa_pfpnacc; // "86.3dnowa.pfpnacc" } break; case 'a': // 13 strings to match. if (NameR.substr(4, 3) != "vx.") break; switch (NameR[7]) { default: break; case 'c': // 2 strings to match. if (NameR.substr(8, 4) != "mp.p") break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. if (NameR.substr(13, 4) != ".256") break; return Intrinsic::x86_avx_cmp_pd_256; // "86.avx.cmp.pd.256" case 's': // 1 string to match. if (NameR.substr(13, 4) != ".256") break; return Intrinsic::x86_avx_cmp_ps_256; // "86.avx.cmp.ps.256" } break; case 'l': // 1 string to match. if (NameR.substr(8, 9) != "du.dq.256") break; return Intrinsic::x86_avx_ldu_dq_256; // "86.avx.ldu.dq.256" case 'm': // 4 strings to match. switch (NameR[8]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(9, 3) != "x.p") break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. if (NameR.substr(13, 4) != ".256") break; return Intrinsic::x86_avx_max_pd_256; // "86.avx.max.pd.256" case 's': // 1 string to match. if (NameR.substr(13, 4) != ".256") break; return Intrinsic::x86_avx_max_ps_256; // "86.avx.max.ps.256" } break; case 'i': // 2 strings to match. if (NameR.substr(9, 3) != "n.p") break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. if (NameR.substr(13, 4) != ".256") break; return Intrinsic::x86_avx_min_pd_256; // "86.avx.min.pd.256" case 's': // 1 string to match. if (NameR.substr(13, 4) != ".256") break; return Intrinsic::x86_avx_min_ps_256; // "86.avx.min.ps.256" } break; } break; case 'p': // 2 strings to match. if (NameR.substr(8, 4) != "test") break; switch (NameR[12]) { default: break; case 'c': // 1 string to match. if (NameR.substr(13, 4) != ".256") break; return Intrinsic::x86_avx_ptestc_256; // "86.avx.ptestc.256" case 'z': // 1 string to match. if (NameR.substr(13, 4) != ".256") break; return Intrinsic::x86_avx_ptestz_256; // "86.avx.ptestz.256" } break; case 'r': // 1 string to match. if (NameR.substr(8, 9) != "cp.ps.256") break; return Intrinsic::x86_avx_rcp_ps_256; // "86.avx.rcp.ps.256" case 'v': // 3 strings to match. switch (NameR[8]) { default: break; case 'p': // 2 strings to match. if (NameR.substr(9, 7) != "ermil.p") break; switch (NameR[16]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_vpermil_pd; // "86.avx.vpermil.pd" case 's': // 1 string to match. return Intrinsic::x86_avx_vpermil_ps; // "86.avx.vpermil.ps" } break; case 'z': // 1 string to match. if (NameR.substr(9, 8) != "eroupper") break; return Intrinsic::x86_avx_vzeroupper; // "86.avx.vzeroupper" } break; } break; case 's': // 47 strings to match. if (NameR[4] != 's') break; switch (NameR[5]) { default: break; case 'e': // 45 strings to match. switch (NameR[6]) { default: break; case '.': // 8 strings to match. switch (NameR[7]) { default: break; case 'c': // 3 strings to match. switch (NameR[8]) { default: break; case 'o': // 1 string to match. if (NameR.substr(9, 8) != "mineq.ss") break; return Intrinsic::x86_sse_comineq_ss; // "86.sse.comineq.ss" case 'v': // 2 strings to match. if (NameR.substr(9, 2) != "ts") break; switch (NameR[11]) { default: break; case 'i': // 1 string to match. if (NameR.substr(12, 5) != "642ss") break; return Intrinsic::x86_sse_cvtsi642ss; // "86.sse.cvtsi642ss" case 's': // 1 string to match. if (NameR.substr(12, 5) != "2si64") break; return Intrinsic::x86_sse_cvtss2si64; // "86.sse.cvtss2si64" } break; } break; case 'u': // 5 strings to match. if (NameR.substr(8, 4) != "comi") break; switch (NameR[12]) { default: break; case 'e': // 1 string to match. if (NameR.substr(13, 4) != "q.ss") break; return Intrinsic::x86_sse_ucomieq_ss; // "86.sse.ucomieq.ss" case 'g': // 2 strings to match. switch (NameR[13]) { default: break; case 'e': // 1 string to match. if (NameR.substr(14, 3) != ".ss") break; return Intrinsic::x86_sse_ucomige_ss; // "86.sse.ucomige.ss" case 't': // 1 string to match. if (NameR.substr(14, 3) != ".ss") break; return Intrinsic::x86_sse_ucomigt_ss; // "86.sse.ucomigt.ss" } break; case 'l': // 2 strings to match. switch (NameR[13]) { default: break; case 'e': // 1 string to match. if (NameR.substr(14, 3) != ".ss") break; return Intrinsic::x86_sse_ucomile_ss; // "86.sse.ucomile.ss" case 't': // 1 string to match. if (NameR.substr(14, 3) != ".ss") break; return Intrinsic::x86_sse_ucomilt_ss; // "86.sse.ucomilt.ss" } break; } break; } break; case '2': // 12 strings to match. if (NameR[7] != '.') break; switch (NameR[8]) { default: break; case 'c': // 8 strings to match. switch (NameR[9]) { default: break; case 'o': // 5 strings to match. if (NameR.substr(10, 2) != "mi") break; switch (NameR[12]) { default: break; case 'e': // 1 string to match. if (NameR.substr(13, 4) != "q.sd") break; return Intrinsic::x86_sse2_comieq_sd; // "86.sse2.comieq.sd" case 'g': // 2 strings to match. switch (NameR[13]) { default: break; case 'e': // 1 string to match. if (NameR.substr(14, 3) != ".sd") break; return Intrinsic::x86_sse2_comige_sd; // "86.sse2.comige.sd" case 't': // 1 string to match. if (NameR.substr(14, 3) != ".sd") break; return Intrinsic::x86_sse2_comigt_sd; // "86.sse2.comigt.sd" } break; case 'l': // 2 strings to match. switch (NameR[13]) { default: break; case 'e': // 1 string to match. if (NameR.substr(14, 3) != ".sd") break; return Intrinsic::x86_sse2_comile_sd; // "86.sse2.comile.sd" case 't': // 1 string to match. if (NameR.substr(14, 3) != ".sd") break; return Intrinsic::x86_sse2_comilt_sd; // "86.sse2.comilt.sd" } break; } break; case 'v': // 3 strings to match. if (NameR.substr(10, 2) != "tt") break; switch (NameR[12]) { default: break; case 'p': // 2 strings to match. switch (NameR[13]) { default: break; case 'd': // 1 string to match. if (NameR.substr(14, 3) != "2dq") break; return Intrinsic::x86_sse2_cvttpd2dq; // "86.sse2.cvttpd2dq" case 's': // 1 string to match. if (NameR.substr(14, 3) != "2dq") break; return Intrinsic::x86_sse2_cvttps2dq; // "86.sse2.cvttps2dq" } break; case 's': // 1 string to match. if (NameR.substr(13, 4) != "d2si") break; return Intrinsic::x86_sse2_cvttsd2si; // "86.sse2.cvttsd2si" } break; } break; case 'm': // 1 string to match. if (NameR.substr(9, 8) != "ovmsk.pd") break; return Intrinsic::x86_sse2_movmsk_pd; // "86.sse2.movmsk.pd" case 's': // 3 strings to match. if (NameR.substr(9, 4) != "tore") break; switch (NameR[13]) { default: break; case 'l': // 1 string to match. if (NameR.substr(14, 3) != ".dq") break; return Intrinsic::x86_sse2_storel_dq; // "86.sse2.storel.dq" case 'u': // 2 strings to match. if (NameR[14] != '.') break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. if (NameR[16] != 'q') break; return Intrinsic::x86_sse2_storeu_dq; // "86.sse2.storeu.dq" case 'p': // 1 string to match. if (NameR[16] != 'd') break; return Intrinsic::x86_sse2_storeu_pd; // "86.sse2.storeu.pd" } break; } break; } break; case '3': // 2 strings to match. if (NameR.substr(7, 9) != ".addsub.p") break; switch (NameR[16]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse3_addsub_pd; // "86.sse3.addsub.pd" case 's': // 1 string to match. return Intrinsic::x86_sse3_addsub_ps; // "86.sse3.addsub.ps" } break; case '4': // 23 strings to match. if (NameR.substr(7, 2) != "1.") break; switch (NameR[9]) { default: break; case 'b': // 2 strings to match. if (NameR.substr(10, 6) != "lendvp") break; switch (NameR[16]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_blendvpd; // "86.sse41.blendvpd" case 's': // 1 string to match. return Intrinsic::x86_sse41_blendvps; // "86.sse41.blendvps" } break; case 'i': // 1 string to match. if (NameR.substr(10, 7) != "nsertps") break; return Intrinsic::x86_sse41_insertps; // "86.sse41.insertps" case 'm': // 1 string to match. if (NameR.substr(10, 7) != "ovntdqa") break; return Intrinsic::x86_sse41_movntdqa; // "86.sse41.movntdqa" case 'p': // 15 strings to match. switch (NameR[10]) { default: break; case 'a': // 1 string to match. if (NameR.substr(11, 6) != "ckusdw") break; return Intrinsic::x86_sse41_packusdw; // "86.sse41.packusdw" case 'b': // 1 string to match. if (NameR.substr(11, 6) != "lendvb") break; return Intrinsic::x86_sse41_pblendvb; // "86.sse41.pblendvb" case 'm': // 12 strings to match. if (NameR.substr(11, 2) != "ov") break; switch (NameR[13]) { default: break; case 's': // 6 strings to match. if (NameR[14] != 'x') break; switch (NameR[15]) { default: break; case 'b': // 3 strings to match. switch (NameR[16]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_pmovsxbd; // "86.sse41.pmovsxbd" case 'q': // 1 string to match. return Intrinsic::x86_sse41_pmovsxbq; // "86.sse41.pmovsxbq" case 'w': // 1 string to match. return Intrinsic::x86_sse41_pmovsxbw; // "86.sse41.pmovsxbw" } break; case 'd': // 1 string to match. if (NameR[16] != 'q') break; return Intrinsic::x86_sse41_pmovsxdq; // "86.sse41.pmovsxdq" case 'w': // 2 strings to match. switch (NameR[16]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_pmovsxwd; // "86.sse41.pmovsxwd" case 'q': // 1 string to match. return Intrinsic::x86_sse41_pmovsxwq; // "86.sse41.pmovsxwq" } break; } break; case 'z': // 6 strings to match. if (NameR[14] != 'x') break; switch (NameR[15]) { default: break; case 'b': // 3 strings to match. switch (NameR[16]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_pmovzxbd; // "86.sse41.pmovzxbd" case 'q': // 1 string to match. return Intrinsic::x86_sse41_pmovzxbq; // "86.sse41.pmovzxbq" case 'w': // 1 string to match. return Intrinsic::x86_sse41_pmovzxbw; // "86.sse41.pmovzxbw" } break; case 'd': // 1 string to match. if (NameR[16] != 'q') break; return Intrinsic::x86_sse41_pmovzxdq; // "86.sse41.pmovzxdq" case 'w': // 2 strings to match. switch (NameR[16]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_pmovzxwd; // "86.sse41.pmovzxwd" case 'q': // 1 string to match. return Intrinsic::x86_sse41_pmovzxwq; // "86.sse41.pmovzxwq" } break; } break; } break; case 't': // 1 string to match. if (NameR.substr(11, 6) != "estnzc") break; return Intrinsic::x86_sse41_ptestnzc; // "86.sse41.ptestnzc" } break; case 'r': // 4 strings to match. if (NameR.substr(10, 5) != "ound.") break; switch (NameR[15]) { default: break; case 'p': // 2 strings to match. switch (NameR[16]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_round_pd; // "86.sse41.round.pd" case 's': // 1 string to match. return Intrinsic::x86_sse41_round_ps; // "86.sse41.round.ps" } break; case 's': // 2 strings to match. switch (NameR[16]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_round_sd; // "86.sse41.round.sd" case 's': // 1 string to match. return Intrinsic::x86_sse41_round_ss; // "86.sse41.round.ss" } break; } break; } break; } break; case 's': // 2 strings to match. if (NameR.substr(6, 5) != "e3.ph") break; switch (NameR[11]) { default: break; case 'a': // 1 string to match. if (NameR.substr(12, 5) != "dd.sw") break; return Intrinsic::x86_ssse3_phadd_sw; // "86.ssse3.phadd.sw" case 's': // 1 string to match. if (NameR.substr(12, 5) != "ub.sw") break; return Intrinsic::x86_ssse3_phsub_sw; // "86.ssse3.phsub.sw" } break; } break; } break; case 18: // 23 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case 'a': // 10 strings to match. if (NameR.substr(4, 3) != "vx.") break; switch (NameR[7]) { default: break; case 'h': // 4 strings to match. switch (NameR[8]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(9, 4) != "dd.p") break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. if (NameR.substr(14, 4) != ".256") break; return Intrinsic::x86_avx_hadd_pd_256; // "86.avx.hadd.pd.256" case 's': // 1 string to match. if (NameR.substr(14, 4) != ".256") break; return Intrinsic::x86_avx_hadd_ps_256; // "86.avx.hadd.ps.256" } break; case 's': // 2 strings to match. if (NameR.substr(9, 4) != "ub.p") break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. if (NameR.substr(14, 4) != ".256") break; return Intrinsic::x86_avx_hsub_pd_256; // "86.avx.hsub.pd.256" case 's': // 1 string to match. if (NameR.substr(14, 4) != ".256") break; return Intrinsic::x86_avx_hsub_ps_256; // "86.avx.hsub.ps.256" } break; } break; case 'm': // 2 strings to match. if (NameR.substr(8, 9) != "askload.p") break; switch (NameR[17]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_maskload_pd; // "86.avx.maskload.pd" case 's': // 1 string to match. return Intrinsic::x86_avx_maskload_ps; // "86.avx.maskload.ps" } break; case 's': // 2 strings to match. if (NameR.substr(8, 5) != "qrt.p") break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. if (NameR.substr(14, 4) != ".256") break; return Intrinsic::x86_avx_sqrt_pd_256; // "86.avx.sqrt.pd.256" case 's': // 1 string to match. if (NameR.substr(14, 4) != ".256") break; return Intrinsic::x86_avx_sqrt_ps_256; // "86.avx.sqrt.ps.256" } break; case 'v': // 2 strings to match. if (NameR.substr(8, 9) != "testnzc.p") break; switch (NameR[17]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_vtestnzc_pd; // "86.avx.vtestnzc.pd" case 's': // 1 string to match. return Intrinsic::x86_avx_vtestnzc_ps; // "86.avx.vtestnzc.ps" } break; } break; case 's': // 13 strings to match. if (NameR.substr(4, 2) != "se") break; switch (NameR[6]) { default: break; case '.': // 2 strings to match. switch (NameR[7]) { default: break; case 'c': // 1 string to match. if (NameR.substr(8, 10) != "vttss2si64") break; return Intrinsic::x86_sse_cvttss2si64; // "86.sse.cvttss2si64" case 'u': // 1 string to match. if (NameR.substr(8, 10) != "comineq.ss") break; return Intrinsic::x86_sse_ucomineq_ss; // "86.sse.ucomineq.ss" } break; case '2': // 10 strings to match. if (NameR[7] != '.') break; switch (NameR[8]) { default: break; case 'c': // 3 strings to match. switch (NameR[9]) { default: break; case 'o': // 1 string to match. if (NameR.substr(10, 8) != "mineq.sd") break; return Intrinsic::x86_sse2_comineq_sd; // "86.sse2.comineq.sd" case 'v': // 2 strings to match. if (NameR.substr(10, 2) != "ts") break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. if (NameR.substr(13, 5) != "2si64") break; return Intrinsic::x86_sse2_cvtsd2si64; // "86.sse2.cvtsd2si64" case 'i': // 1 string to match. if (NameR.substr(13, 5) != "642sd") break; return Intrinsic::x86_sse2_cvtsi642sd; // "86.sse2.cvtsi642sd" } break; } break; case 'p': // 2 strings to match. if (NameR[9] != 's') break; switch (NameR[10]) { default: break; case 'l': // 1 string to match. if (NameR.substr(11, 7) != "l.dq.bs") break; return Intrinsic::x86_sse2_psll_dq_bs; // "86.sse2.psll.dq.bs" case 'r': // 1 string to match. if (NameR.substr(11, 7) != "l.dq.bs") break; return Intrinsic::x86_sse2_psrl_dq_bs; // "86.sse2.psrl.dq.bs" } break; case 'u': // 5 strings to match. if (NameR.substr(9, 4) != "comi") break; switch (NameR[13]) { default: break; case 'e': // 1 string to match. if (NameR.substr(14, 4) != "q.sd") break; return Intrinsic::x86_sse2_ucomieq_sd; // "86.sse2.ucomieq.sd" case 'g': // 2 strings to match. switch (NameR[14]) { default: break; case 'e': // 1 string to match. if (NameR.substr(15, 3) != ".sd") break; return Intrinsic::x86_sse2_ucomige_sd; // "86.sse2.ucomige.sd" case 't': // 1 string to match. if (NameR.substr(15, 3) != ".sd") break; return Intrinsic::x86_sse2_ucomigt_sd; // "86.sse2.ucomigt.sd" } break; case 'l': // 2 strings to match. switch (NameR[14]) { default: break; case 'e': // 1 string to match. if (NameR.substr(15, 3) != ".sd") break; return Intrinsic::x86_sse2_ucomile_sd; // "86.sse2.ucomile.sd" case 't': // 1 string to match. if (NameR.substr(15, 3) != ".sd") break; return Intrinsic::x86_sse2_ucomilt_sd; // "86.sse2.ucomilt.sd" } break; } break; } break; case '4': // 1 string to match. if (NameR.substr(7, 11) != "1.extractps") break; return Intrinsic::x86_sse41_extractps; // "86.sse41.extractps" } break; } break; case 19: // 27 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case 'a': // 17 strings to match. switch (NameR[4]) { default: break; case 'e': // 2 strings to match. if (NameR.substr(5, 7) != "sni.aes") break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. if (NameR.substr(13, 6) != "eclast") break; return Intrinsic::x86_aesni_aesdeclast; // "86.aesni.aesdeclast" case 'e': // 1 string to match. if (NameR.substr(13, 6) != "nclast") break; return Intrinsic::x86_aesni_aesenclast; // "86.aesni.aesenclast" } break; case 'v': // 15 strings to match. if (NameR.substr(5, 2) != "x.") break; switch (NameR[7]) { default: break; case 'b': // 2 strings to match. if (NameR.substr(8, 6) != "lend.p") break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. if (NameR.substr(15, 4) != ".256") break; return Intrinsic::x86_avx_blend_pd_256; // "86.avx.blend.pd.256" case 's': // 1 string to match. if (NameR.substr(15, 4) != ".256") break; return Intrinsic::x86_avx_blend_ps_256; // "86.avx.blend.ps.256" } break; case 'l': // 3 strings to match. if (NameR.substr(8, 5) != "oadu.") break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. if (NameR.substr(14, 5) != "q.256") break; return Intrinsic::x86_avx_loadu_dq_256; // "86.avx.loadu.dq.256" case 'p': // 2 strings to match. switch (NameR[14]) { default: break; case 'd': // 1 string to match. if (NameR.substr(15, 4) != ".256") break; return Intrinsic::x86_avx_loadu_pd_256; // "86.avx.loadu.pd.256" case 's': // 1 string to match. if (NameR.substr(15, 4) != ".256") break; return Intrinsic::x86_avx_loadu_ps_256; // "86.avx.loadu.ps.256" } break; } break; case 'm': // 5 strings to match. switch (NameR[8]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(9, 9) != "skstore.p") break; switch (NameR[18]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_maskstore_pd; // "86.avx.maskstore.pd" case 's': // 1 string to match. return Intrinsic::x86_avx_maskstore_ps; // "86.avx.maskstore.ps" } break; case 'o': // 3 strings to match. if (NameR.substr(9, 4) != "vnt.") break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. if (NameR.substr(14, 5) != "q.256") break; return Intrinsic::x86_avx_movnt_dq_256; // "86.avx.movnt.dq.256" case 'p': // 2 strings to match. switch (NameR[14]) { default: break; case 'd': // 1 string to match. if (NameR.substr(15, 4) != ".256") break; return Intrinsic::x86_avx_movnt_pd_256; // "86.avx.movnt.pd.256" case 's': // 1 string to match. if (NameR.substr(15, 4) != ".256") break; return Intrinsic::x86_avx_movnt_ps_256; // "86.avx.movnt.ps.256" } break; } break; } break; case 'p': // 1 string to match. if (NameR.substr(8, 11) != "testnzc.256") break; return Intrinsic::x86_avx_ptestnzc_256; // "86.avx.ptestnzc.256" case 'r': // 3 strings to match. switch (NameR[8]) { default: break; case 'o': // 2 strings to match. if (NameR.substr(9, 5) != "und.p") break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. if (NameR.substr(15, 4) != ".256") break; return Intrinsic::x86_avx_round_pd_256; // "86.avx.round.pd.256" case 's': // 1 string to match. if (NameR.substr(15, 4) != ".256") break; return Intrinsic::x86_avx_round_ps_256; // "86.avx.round.ps.256" } break; case 's': // 1 string to match. if (NameR.substr(9, 10) != "qrt.ps.256") break; return Intrinsic::x86_avx_rsqrt_ps_256; // "86.avx.rsqrt.ps.256" } break; case 'v': // 1 string to match. if (NameR.substr(8, 11) != "broadcastss") break; return Intrinsic::x86_avx_vbroadcastss; // "86.avx.vbroadcastss" } break; } break; case 's': // 10 strings to match. if (NameR[4] != 's') break; switch (NameR[5]) { default: break; case 'e': // 6 strings to match. switch (NameR[6]) { default: break; case '2': // 3 strings to match. if (NameR[7] != '.') break; switch (NameR[8]) { default: break; case 'c': // 1 string to match. if (NameR.substr(9, 10) != "vttsd2si64") break; return Intrinsic::x86_sse2_cvttsd2si64; // "86.sse2.cvttsd2si64" case 'm': // 1 string to match. if (NameR.substr(9, 10) != "askmov.dqu") break; return Intrinsic::x86_sse2_maskmov_dqu; // "86.sse2.maskmov.dqu" case 'u': // 1 string to match. if (NameR.substr(9, 10) != "comineq.sd") break; return Intrinsic::x86_sse2_ucomineq_sd; // "86.sse2.ucomineq.sd" } break; case '4': // 3 strings to match. switch (NameR[7]) { default: break; case '1': // 1 string to match. if (NameR.substr(8, 11) != ".phminposuw") break; return Intrinsic::x86_sse41_phminposuw; // "86.sse41.phminposuw" case '2': // 2 strings to match. if (NameR.substr(8, 7) != ".crc32.") break; switch (NameR[15]) { default: break; case '3': // 1 string to match. if (NameR.substr(16, 3) != "2.8") break; return Intrinsic::x86_sse42_crc32_32_8; // "86.sse42.crc32.32.8" case '6': // 1 string to match. if (NameR.substr(16, 3) != "4.8") break; return Intrinsic::x86_sse42_crc32_64_8; // "86.sse42.crc32.64.8" } break; } break; } break; case 's': // 4 strings to match. if (NameR.substr(6, 4) != "e3.p") break; switch (NameR[10]) { default: break; case 'a': // 3 strings to match. if (NameR.substr(11, 3) != "bs.") break; switch (NameR[14]) { default: break; case 'b': // 1 string to match. if (NameR.substr(15, 4) != ".128") break; return Intrinsic::x86_ssse3_pabs_b_128; // "86.ssse3.pabs.b.128" case 'd': // 1 string to match. if (NameR.substr(15, 4) != ".128") break; return Intrinsic::x86_ssse3_pabs_d_128; // "86.ssse3.pabs.d.128" case 'w': // 1 string to match. if (NameR.substr(15, 4) != ".128") break; return Intrinsic::x86_ssse3_pabs_w_128; // "86.ssse3.pabs.w.128" } break; case 'm': // 1 string to match. if (NameR.substr(11, 8) != "ul.hr.sw") break; return Intrinsic::x86_ssse3_pmul_hr_sw; // "86.ssse3.pmul.hr.sw" } break; } break; } break; case 20: // 35 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case 'a': // 19 strings to match. if (NameR.substr(4, 3) != "vx.") break; switch (NameR[7]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(8, 7) != "ddsub.p") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_addsub_pd_256; // "86.avx.addsub.pd.256" case 's': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_addsub_ps_256; // "86.avx.addsub.ps.256" } break; case 'b': // 2 strings to match. if (NameR.substr(8, 7) != "lendv.p") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_blendv_pd_256; // "86.avx.blendv.pd.256" case 's': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_blendv_ps_256; // "86.avx.blendv.ps.256" } break; case 'c': // 4 strings to match. if (NameR.substr(8, 2) != "vt") break; switch (NameR[10]) { default: break; case '.': // 2 strings to match. if (NameR[11] != 'p') break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. if (NameR.substr(13, 7) != "2dq.256") break; return Intrinsic::x86_avx_cvt_pd2dq_256; // "86.avx.cvt.pd2dq.256" case 's': // 1 string to match. if (NameR.substr(13, 7) != "2dq.256") break; return Intrinsic::x86_avx_cvt_ps2dq_256; // "86.avx.cvt.ps2dq.256" } break; case 'd': // 2 strings to match. if (NameR.substr(11, 4) != "q2.p") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_cvtdq2_pd_256; // "86.avx.cvtdq2.pd.256" case 's': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_cvtdq2_ps_256; // "86.avx.cvtdq2.ps.256" } break; } break; case 'm': // 2 strings to match. if (NameR.substr(8, 7) != "ovmsk.p") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_movmsk_pd_256; // "86.avx.movmsk.pd.256" case 's': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_movmsk_ps_256; // "86.avx.movmsk.ps.256" } break; case 's': // 3 strings to match. if (NameR.substr(8, 6) != "toreu.") break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. if (NameR.substr(15, 5) != "q.256") break; return Intrinsic::x86_avx_storeu_dq_256; // "86.avx.storeu.dq.256" case 'p': // 2 strings to match. switch (NameR[15]) { default: break; case 'd': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_storeu_pd_256; // "86.avx.storeu.pd.256" case 's': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_storeu_ps_256; // "86.avx.storeu.ps.256" } break; } break; case 'v': // 6 strings to match. switch (NameR[8]) { default: break; case 'p': // 2 strings to match. if (NameR.substr(9, 10) != "ermilvar.p") break; switch (NameR[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_vpermilvar_pd; // "86.avx.vpermilvar.pd" case 's': // 1 string to match. return Intrinsic::x86_avx_vpermilvar_ps; // "86.avx.vpermilvar.ps" } break; case 't': // 4 strings to match. if (NameR.substr(9, 3) != "est") break; switch (NameR[12]) { default: break; case 'c': // 2 strings to match. if (NameR.substr(13, 2) != ".p") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_vtestc_pd_256; // "86.avx.vtestc.pd.256" case 's': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_vtestc_ps_256; // "86.avx.vtestc.ps.256" } break; case 'z': // 2 strings to match. if (NameR.substr(13, 2) != ".p") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_vtestz_pd_256; // "86.avx.vtestz.pd.256" case 's': // 1 string to match. if (NameR.substr(16, 4) != ".256") break; return Intrinsic::x86_avx_vtestz_ps_256; // "86.avx.vtestz.ps.256" } break; } break; } break; } break; case 's': // 16 strings to match. if (NameR[4] != 's') break; switch (NameR[5]) { default: break; case 'e': // 7 strings to match. switch (NameR[6]) { default: break; case '2': // 4 strings to match. if (NameR.substr(7, 2) != ".p") break; switch (NameR[9]) { default: break; case 'a': // 3 strings to match. if (NameR.substr(10, 2) != "ck") break; switch (NameR[12]) { default: break; case 's': // 2 strings to match. if (NameR[13] != 's') break; switch (NameR[14]) { default: break; case 'd': // 1 string to match. if (NameR.substr(15, 5) != "w.128") break; return Intrinsic::x86_sse2_packssdw_128; // "86.sse2.packssdw.128" case 'w': // 1 string to match. if (NameR.substr(15, 5) != "b.128") break; return Intrinsic::x86_sse2_packsswb_128; // "86.sse2.packsswb.128" } break; case 'u': // 1 string to match. if (NameR.substr(13, 7) != "swb.128") break; return Intrinsic::x86_sse2_packuswb_128; // "86.sse2.packuswb.128" } break; case 'm': // 1 string to match. if (NameR.substr(10, 10) != "ovmskb.128") break; return Intrinsic::x86_sse2_pmovmskb_128; // "86.sse2.pmovmskb.128" } break; case '4': // 3 strings to match. if (NameR.substr(7, 8) != "2.crc32.") break; switch (NameR[15]) { default: break; case '3': // 2 strings to match. if (NameR.substr(16, 2) != "2.") break; switch (NameR[18]) { default: break; case '1': // 1 string to match. if (NameR[19] != '6') break; return Intrinsic::x86_sse42_crc32_32_16; // "86.sse42.crc32.32.16" case '3': // 1 string to match. if (NameR[19] != '2') break; return Intrinsic::x86_sse42_crc32_32_32; // "86.sse42.crc32.32.32" } break; case '6': // 1 string to match. if (NameR.substr(16, 4) != "4.64") break; return Intrinsic::x86_sse42_crc32_64_64; // "86.sse42.crc32.64.64" } break; } break; case 's': // 9 strings to match. if (NameR.substr(6, 4) != "e3.p") break; switch (NameR[10]) { default: break; case 'h': // 4 strings to match. switch (NameR[11]) { default: break; case 'a': // 2 strings to match. if (NameR.substr(12, 3) != "dd.") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. if (NameR.substr(16, 4) != ".128") break; return Intrinsic::x86_ssse3_phadd_d_128; // "86.ssse3.phadd.d.128" case 'w': // 1 string to match. if (NameR.substr(16, 4) != ".128") break; return Intrinsic::x86_ssse3_phadd_w_128; // "86.ssse3.phadd.w.128" } break; case 's': // 2 strings to match. if (NameR.substr(12, 3) != "ub.") break; switch (NameR[15]) { default: break; case 'd': // 1 string to match. if (NameR.substr(16, 4) != ".128") break; return Intrinsic::x86_ssse3_phsub_d_128; // "86.ssse3.phsub.d.128" case 'w': // 1 string to match. if (NameR.substr(16, 4) != ".128") break; return Intrinsic::x86_ssse3_phsub_w_128; // "86.ssse3.phsub.w.128" } break; } break; case 'm': // 1 string to match. if (NameR.substr(11, 9) != "add.ub.sw") break; return Intrinsic::x86_ssse3_pmadd_ub_sw; // "86.ssse3.pmadd.ub.sw" case 's': // 4 strings to match. switch (NameR[11]) { default: break; case 'h': // 1 string to match. if (NameR.substr(12, 8) != "uf.b.128") break; return Intrinsic::x86_ssse3_pshuf_b_128; // "86.ssse3.pshuf.b.128" case 'i': // 3 strings to match. if (NameR.substr(12, 3) != "gn.") break; switch (NameR[15]) { default: break; case 'b': // 1 string to match. if (NameR.substr(16, 4) != ".128") break; return Intrinsic::x86_ssse3_psign_b_128; // "86.ssse3.psign.b.128" case 'd': // 1 string to match. if (NameR.substr(16, 4) != ".128") break; return Intrinsic::x86_ssse3_psign_d_128; // "86.ssse3.psign.d.128" case 'w': // 1 string to match. if (NameR.substr(16, 4) != ".128") break; return Intrinsic::x86_ssse3_psign_w_128; // "86.ssse3.psign.w.128" } break; } break; } break; } break; } break; case 21: // 12 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case 'a': // 6 strings to match. if (NameR.substr(4, 3) != "vx.") break; switch (NameR[7]) { default: break; case 'c': // 4 strings to match. if (NameR.substr(8, 2) != "vt") break; switch (NameR[10]) { default: break; case '.': // 2 strings to match. if (NameR[11] != 'p') break; switch (NameR[12]) { default: break; case 'd': // 1 string to match. if (NameR.substr(13, 8) != "2.ps.256") break; return Intrinsic::x86_avx_cvt_pd2_ps_256; // "86.avx.cvt.pd2.ps.256" case 's': // 1 string to match. if (NameR.substr(13, 8) != "2.pd.256") break; return Intrinsic::x86_avx_cvt_ps2_pd_256; // "86.avx.cvt.ps2.pd.256" } break; case 't': // 2 strings to match. if (NameR.substr(11, 2) != ".p") break; switch (NameR[13]) { default: break; case 'd': // 1 string to match. if (NameR.substr(14, 7) != "2dq.256") break; return Intrinsic::x86_avx_cvtt_pd2dq_256; // "86.avx.cvtt.pd2dq.256" case 's': // 1 string to match. if (NameR.substr(14, 7) != "2dq.256") break; return Intrinsic::x86_avx_cvtt_ps2dq_256; // "86.avx.cvtt.ps2dq.256" } break; } break; case 'v': // 2 strings to match. if (NameR.substr(8, 8) != "permil.p") break; switch (NameR[16]) { default: break; case 'd': // 1 string to match. if (NameR.substr(17, 4) != ".256") break; return Intrinsic::x86_avx_vpermil_pd_256; // "86.avx.vpermil.pd.256" case 's': // 1 string to match. if (NameR.substr(17, 4) != ".256") break; return Intrinsic::x86_avx_vpermil_ps_256; // "86.avx.vpermil.ps.256" } break; } break; case 's': // 6 strings to match. if (NameR[4] != 's') break; switch (NameR[5]) { default: break; case 'e': // 4 strings to match. if (NameR.substr(6, 7) != "42.pcmp") break; switch (NameR[13]) { default: break; case 'e': // 2 strings to match. if (NameR.substr(14, 3) != "str") break; switch (NameR[17]) { default: break; case 'i': // 1 string to match. if (NameR.substr(18, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestri128; // "86.sse42.pcmpestri128" case 'm': // 1 string to match. if (NameR.substr(18, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestrm128; // "86.sse42.pcmpestrm128" } break; case 'i': // 2 strings to match. if (NameR.substr(14, 3) != "str") break; switch (NameR[17]) { default: break; case 'i': // 1 string to match. if (NameR.substr(18, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistri128; // "86.sse42.pcmpistri128" case 'm': // 1 string to match. if (NameR.substr(18, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistrm128; // "86.sse42.pcmpistrm128" } break; } break; case 's': // 2 strings to match. if (NameR.substr(6, 5) != "e3.ph") break; switch (NameR[11]) { default: break; case 'a': // 1 string to match. if (NameR.substr(12, 9) != "dd.sw.128") break; return Intrinsic::x86_ssse3_phadd_sw_128; // "86.ssse3.phadd.sw.128" case 's': // 1 string to match. if (NameR.substr(12, 9) != "ub.sw.128") break; return Intrinsic::x86_ssse3_phsub_sw_128; // "86.ssse3.phsub.sw.128" } break; } break; } break; case 22: // 14 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case 'a': // 4 strings to match. if (NameR.substr(4, 3) != "vx.") break; switch (NameR[7]) { default: break; case 'm': // 2 strings to match. if (NameR.substr(8, 9) != "askload.p") break; switch (NameR[17]) { default: break; case 'd': // 1 string to match. if (NameR.substr(18, 4) != ".256") break; return Intrinsic::x86_avx_maskload_pd_256; // "86.avx.maskload.pd.256" case 's': // 1 string to match. if (NameR.substr(18, 4) != ".256") break; return Intrinsic::x86_avx_maskload_ps_256; // "86.avx.maskload.ps.256" } break; case 'v': // 2 strings to match. if (NameR.substr(8, 9) != "testnzc.p") break; switch (NameR[17]) { default: break; case 'd': // 1 string to match. if (NameR.substr(18, 4) != ".256") break; return Intrinsic::x86_avx_vtestnzc_pd_256; // "86.avx.vtestnzc.pd.256" case 's': // 1 string to match. if (NameR.substr(18, 4) != ".256") break; return Intrinsic::x86_avx_vtestnzc_ps_256; // "86.avx.vtestnzc.ps.256" } break; } break; case 's': // 10 strings to match. if (NameR.substr(4, 9) != "se42.pcmp") break; switch (NameR[13]) { default: break; case 'e': // 5 strings to match. if (NameR.substr(14, 4) != "stri") break; switch (NameR[18]) { default: break; case 'a': // 1 string to match. if (NameR.substr(19, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestria128; // "86.sse42.pcmpestria128" case 'c': // 1 string to match. if (NameR.substr(19, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestric128; // "86.sse42.pcmpestric128" case 'o': // 1 string to match. if (NameR.substr(19, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestrio128; // "86.sse42.pcmpestrio128" case 's': // 1 string to match. if (NameR.substr(19, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestris128; // "86.sse42.pcmpestris128" case 'z': // 1 string to match. if (NameR.substr(19, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestriz128; // "86.sse42.pcmpestriz128" } break; case 'i': // 5 strings to match. if (NameR.substr(14, 4) != "stri") break; switch (NameR[18]) { default: break; case 'a': // 1 string to match. if (NameR.substr(19, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistria128; // "86.sse42.pcmpistria128" case 'c': // 1 string to match. if (NameR.substr(19, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistric128; // "86.sse42.pcmpistric128" case 'o': // 1 string to match. if (NameR.substr(19, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistrio128; // "86.sse42.pcmpistrio128" case 's': // 1 string to match. if (NameR.substr(19, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistris128; // "86.sse42.pcmpistris128" case 'z': // 1 string to match. if (NameR.substr(19, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistriz128; // "86.sse42.pcmpistriz128" } break; } break; } break; case 23: // 4 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case 'a': // 3 strings to match. if (NameR.substr(4, 3) != "vx.") break; switch (NameR[7]) { default: break; case 'm': // 2 strings to match. if (NameR.substr(8, 10) != "askstore.p") break; switch (NameR[18]) { default: break; case 'd': // 1 string to match. if (NameR.substr(19, 4) != ".256") break; return Intrinsic::x86_avx_maskstore_pd_256; // "86.avx.maskstore.pd.256" case 's': // 1 string to match. if (NameR.substr(19, 4) != ".256") break; return Intrinsic::x86_avx_maskstore_ps_256; // "86.avx.maskstore.ps.256" } break; case 'v': // 1 string to match. if (NameR.substr(8, 15) != "broadcastss.256") break; return Intrinsic::x86_avx_vbroadcastss_256; // "86.avx.vbroadcastss.256" } break; case 's': // 1 string to match. if (NameR.substr(4, 19) != "sse3.pmul.hr.sw.128") break; return Intrinsic::x86_ssse3_pmul_hr_sw_128; // "86.ssse3.pmul.hr.sw.128" } break; case 24: // 8 strings to match. if (NameR.substr(0, 3) != "86.") break; switch (NameR[3]) { default: break; case 'a': // 7 strings to match. switch (NameR[4]) { default: break; case 'e': // 1 string to match. if (NameR.substr(5, 19) != "sni.aeskeygenassist") break; return Intrinsic::x86_aesni_aeskeygenassist; // "86.aesni.aeskeygenassist" case 'v': // 6 strings to match. if (NameR.substr(5, 3) != "x.v") break; switch (NameR[8]) { default: break; case 'b': // 1 string to match. if (NameR.substr(9, 15) != "roadcast.sd.256") break; return Intrinsic::x86_avx_vbroadcast_sd_256; // "86.avx.vbroadcast.sd.256" case 'p': // 5 strings to match. if (NameR.substr(9, 3) != "erm") break; switch (NameR[12]) { default: break; case '2': // 3 strings to match. if (NameR.substr(13, 5) != "f128.") break; switch (NameR[18]) { default: break; case 'p': // 2 strings to match. switch (NameR[19]) { default: break; case 'd': // 1 string to match. if (NameR.substr(20, 4) != ".256") break; return Intrinsic::x86_avx_vperm2f128_pd_256; // "86.avx.vperm2f128.pd.256" case 's': // 1 string to match. if (NameR.substr(20, 4) != ".256") break; return Intrinsic::x86_avx_vperm2f128_ps_256; // "86.avx.vperm2f128.ps.256" } break; case 's': // 1 string to match. if (NameR.substr(19, 5) != "i.256") break; return Intrinsic::x86_avx_vperm2f128_si_256; // "86.avx.vperm2f128.si.256" } break; case 'i': // 2 strings to match. if (NameR.substr(13, 6) != "lvar.p") break; switch (NameR[19]) { default: break; case 'd': // 1 string to match. if (NameR.substr(20, 4) != ".256") break; return Intrinsic::x86_avx_vpermilvar_pd_256; // "86.avx.vpermilvar.pd.256" case 's': // 1 string to match. if (NameR.substr(20, 4) != ".256") break; return Intrinsic::x86_avx_vpermilvar_ps_256; // "86.avx.vpermilvar.ps.256" } break; } break; } break; } break; case 's': // 1 string to match. if (NameR.substr(4, 20) != "sse3.pmadd.ub.sw.128") break; return Intrinsic::x86_ssse3_pmadd_ub_sw_128; // "86.ssse3.pmadd.ub.sw.128" } break; case 25: // 3 strings to match. if (NameR.substr(0, 19) != "86.avx.vinsertf128.") break; switch (NameR[19]) { default: break; case 'p': // 2 strings to match. switch (NameR[20]) { default: break; case 'd': // 1 string to match. if (NameR.substr(21, 4) != ".256") break; return Intrinsic::x86_avx_vinsertf128_pd_256; // "86.avx.vinsertf128.pd.256" case 's': // 1 string to match. if (NameR.substr(21, 4) != ".256") break; return Intrinsic::x86_avx_vinsertf128_ps_256; // "86.avx.vinsertf128.ps.256" } break; case 's': // 1 string to match. if (NameR.substr(20, 5) != "i.256") break; return Intrinsic::x86_avx_vinsertf128_si_256; // "86.avx.vinsertf128.si.256" } break; case 26: // 3 strings to match. if (NameR.substr(0, 20) != "86.avx.vextractf128.") break; switch (NameR[20]) { default: break; case 'p': // 2 strings to match. switch (NameR[21]) { default: break; case 'd': // 1 string to match. if (NameR.substr(22, 4) != ".256") break; return Intrinsic::x86_avx_vextractf128_pd_256; // "86.avx.vextractf128.pd.256" case 's': // 1 string to match. if (NameR.substr(22, 4) != ".256") break; return Intrinsic::x86_avx_vextractf128_ps_256; // "86.avx.vextractf128.ps.256" } break; case 's': // 1 string to match. if (NameR.substr(21, 5) != "i.256") break; return Intrinsic::x86_avx_vextractf128_si_256; // "86.avx.vextractf128.si.256" } break; case 28: // 2 strings to match. if (NameR.substr(0, 23) != "86.avx.vbroadcastf128.p") break; switch (NameR[23]) { default: break; case 'd': // 1 string to match. if (NameR.substr(24, 4) != ".256") break; return Intrinsic::x86_avx_vbroadcastf128_pd_256; // "86.avx.vbroadcastf128.pd.256" case 's': // 1 string to match. if (NameR.substr(24, 4) != ".256") break; return Intrinsic::x86_avx_vbroadcastf128_ps_256; // "86.avx.vbroadcastf128.ps.256" } break; } break; // end of 'x' case. } #endif // Verifier::visitIntrinsicFunctionCall code. #ifdef GET_INTRINSIC_VERIFIER switch (ID) { default: assert(0 && "Invalid intrinsic!"); case Intrinsic::eh_unwind_init: // llvm.eh.unwind.init case Intrinsic::trap: // llvm.trap case Intrinsic::x86_avx_vzeroall: // llvm.x86.avx.vzeroall case Intrinsic::x86_avx_vzeroupper: // llvm.x86.avx.vzeroupper case Intrinsic::x86_mmx_emms: // llvm.x86.mmx.emms case Intrinsic::x86_mmx_femms: // llvm.x86.mmx.femms case Intrinsic::x86_sse2_lfence: // llvm.x86.sse2.lfence case Intrinsic::x86_sse2_mfence: // llvm.x86.sse2.mfence case Intrinsic::x86_sse_sfence: // llvm.x86.sse.sfence VerifyIntrinsicPrototype(ID, IF, 0, 0); break; case Intrinsic::memcpy: // llvm.memcpy case Intrinsic::memmove: // llvm.memmove VerifyIntrinsicPrototype(ID, IF, 0, 5, MVT::iPTRAny, MVT::iPTRAny, MVT::iAny, MVT::i32, MVT::i1); break; case Intrinsic::memset: // llvm.memset VerifyIntrinsicPrototype(ID, IF, 0, 5, MVT::iPTRAny, MVT::i8, MVT::iAny, MVT::i32, MVT::i1); break; case Intrinsic::invariant_end: // llvm.invariant.end VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::i64, MVT::iPTR); break; case Intrinsic::eh_sjlj_callsite: // llvm.eh.sjlj.callsite case Intrinsic::eh_sjlj_dispatch_setup: // llvm.eh.sjlj.dispatch.setup case Intrinsic::pcmarker: // llvm.pcmarker VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::i32); break; case Intrinsic::x86_sse3_mwait: // llvm.x86.sse3.mwait VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i32, MVT::i32); break; case Intrinsic::eh_return_i32: // llvm.eh.return.i32 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i32, MVT::iPTR); break; case Intrinsic::eh_return_i64: // llvm.eh.return.i64 case Intrinsic::lifetime_end: // llvm.lifetime.end case Intrinsic::lifetime_start: // llvm.lifetime.start VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i64, MVT::iPTR); break; case Intrinsic::x86_int: // llvm.x86.int VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::i8); break; case Intrinsic::dbg_value: // llvm.dbg.value VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::Metadata, MVT::i64, MVT::Metadata); break; case Intrinsic::dbg_declare: // llvm.dbg.declare VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::Metadata, MVT::Metadata); break; case Intrinsic::eh_sjlj_functioncontext: // llvm.eh.sjlj.functioncontext case Intrinsic::eh_sjlj_longjmp: // llvm.eh.sjlj.longjmp case Intrinsic::stackrestore: // llvm.stackrestore case Intrinsic::vaend: // llvm.va_end case Intrinsic::vastart: // llvm.va_start case Intrinsic::x86_sse2_clflush: // llvm.x86.sse2.clflush case Intrinsic::x86_sse_ldmxcsr: // llvm.x86.sse.ldmxcsr case Intrinsic::x86_sse_stmxcsr: // llvm.x86.sse.stmxcsr VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::iPTR); break; case Intrinsic::eh_resume: // llvm.eh.resume case Intrinsic::longjmp: // llvm.longjmp case Intrinsic::siglongjmp: // llvm.siglongjmp VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::i32); break; case Intrinsic::x86_sse3_monitor: // llvm.x86.sse3.monitor VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::i32, MVT::i32); break; case Intrinsic::prefetch: // llvm.prefetch VerifyIntrinsicPrototype(ID, IF, 0, 4, MVT::iPTR, MVT::i32, MVT::i32, MVT::i32); break; case Intrinsic::vacopy: // llvm.va_copy VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR); break; case Intrinsic::init_trampoline: // llvm.init.trampoline VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::iPTR, MVT::iPTR); break; case Intrinsic::var_annotation: // llvm.var.annotation VerifyIntrinsicPrototype(ID, IF, 0, 4, MVT::iPTR, MVT::iPTR, MVT::iPTR, MVT::i32); break; case Intrinsic::gcwrite: // llvm.gcwrite VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::iPTR, MVT::iPTR); break; case Intrinsic::stackprotector: // llvm.stackprotector VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR); break; case Intrinsic::x86_sse2_storeu_dq: // llvm.x86.sse2.storeu.dq VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v16i8); break; case Intrinsic::x86_sse2_storeu_pd: // llvm.x86.sse2.storeu.pd VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v2f64); break; case Intrinsic::x86_avx_maskstore_pd: // llvm.x86.avx.maskstore.pd VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v2f64, MVT::v2f64); break; case Intrinsic::x86_avx_storeu_dq_256: // llvm.x86.avx.storeu.dq.256 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v32i8); break; case Intrinsic::x86_sse_storeu_ps: // llvm.x86.sse.storeu.ps VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4f32); break; case Intrinsic::x86_avx_maskstore_ps: // llvm.x86.avx.maskstore.ps VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v4f32, MVT::v4f32); break; case Intrinsic::x86_avx_movnt_pd_256: // llvm.x86.avx.movnt.pd.256 case Intrinsic::x86_avx_storeu_pd_256: // llvm.x86.avx.storeu.pd.256 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4f64); break; case Intrinsic::x86_avx_maskstore_pd_256: // llvm.x86.avx.maskstore.pd.256 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v4f64, MVT::v4f64); break; case Intrinsic::x86_sse2_storel_dq: // llvm.x86.sse2.storel.dq VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4i32); break; case Intrinsic::x86_avx_movnt_dq_256: // llvm.x86.avx.movnt.dq.256 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4i64); break; case Intrinsic::x86_avx_movnt_ps_256: // llvm.x86.avx.movnt.ps.256 case Intrinsic::x86_avx_storeu_ps_256: // llvm.x86.avx.storeu.ps.256 VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v8f32); break; case Intrinsic::x86_avx_maskstore_ps_256: // llvm.x86.avx.maskstore.ps.256 VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v8f32, MVT::v8f32); break; case Intrinsic::gcroot: // llvm.gcroot VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR); break; case Intrinsic::x86_mmx_movnt_dq: // llvm.x86.mmx.movnt.dq VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::x86mmx); break; case Intrinsic::x86_sse2_maskmov_dqu: // llvm.x86.sse2.maskmov.dqu VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::v16i8, MVT::v16i8, MVT::iPTR); break; case Intrinsic::x86_mmx_maskmovq: // llvm.x86.mmx.maskmovq VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::x86mmx, MVT::x86mmx, MVT::iPTR); break; case Intrinsic::ptr_annotation: // llvm.ptr.annotation VerifyIntrinsicPrototype(ID, IF, 1, 4, MVT::iPTRAny, ~0, MVT::iPTR, MVT::iPTR, MVT::i32); break; case Intrinsic::sin: // llvm.sin VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); break; case Intrinsic::cos: // llvm.cos VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); break; case Intrinsic::pow: // llvm.pow VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::fAny, ~0, ~0); break; case Intrinsic::log: // llvm.log VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); break; case Intrinsic::log10: // llvm.log10 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); break; case Intrinsic::log2: // llvm.log2 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); break; case Intrinsic::exp: // llvm.exp VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); break; case Intrinsic::exp2: // llvm.exp2 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); break; case Intrinsic::fma: // llvm.fma VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, ~0, ~0, ~0); break; case Intrinsic::sqrt: // llvm.sqrt VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0); break; case Intrinsic::powi: // llvm.powi VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::fAny, ~0, MVT::i32); break; case Intrinsic::convertff: // llvm.convertff VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, MVT::fAny, MVT::i32, MVT::i32); break; case Intrinsic::convertfsi: // llvm.convertfsi case Intrinsic::convertfui: // llvm.convertfui VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, MVT::iAny, MVT::i32, MVT::i32); break; case Intrinsic::expect: // llvm.expect VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iAny, ~0, ~0); break; case Intrinsic::bswap: // llvm.bswap VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0); break; case Intrinsic::ctpop: // llvm.ctpop VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0); break; case Intrinsic::ctlz: // llvm.ctlz VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0); break; case Intrinsic::cttz: // llvm.cttz VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0); break; case Intrinsic::annotation: // llvm.annotation VerifyIntrinsicPrototype(ID, IF, 1, 4, MVT::iAny, ~0, MVT::iPTR, MVT::iPTR, MVT::i32); break; case Intrinsic::convertsif: // llvm.convertsif case Intrinsic::convertuif: // llvm.convertuif VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::iAny, MVT::fAny, MVT::i32, MVT::i32); break; case Intrinsic::convertss: // llvm.convertss case Intrinsic::convertsu: // llvm.convertsu case Intrinsic::convertus: // llvm.convertus case Intrinsic::convertuu: // llvm.convertuu VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::iAny, MVT::iAny, MVT::i32, MVT::i32); break; case Intrinsic::objectsize: // llvm.objectsize VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iAny, MVT::iPTR, MVT::i1); break; case Intrinsic::sadd_with_overflow: // llvm.sadd.with.overflow VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); break; case Intrinsic::uadd_with_overflow: // llvm.uadd.with.overflow VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); break; case Intrinsic::ssub_with_overflow: // llvm.ssub.with.overflow VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); break; case Intrinsic::usub_with_overflow: // llvm.usub.with.overflow VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); break; case Intrinsic::smul_with_overflow: // llvm.smul.with.overflow VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); break; case Intrinsic::umul_with_overflow: // llvm.umul.with.overflow VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0); break; case Intrinsic::invariant_start: // llvm.invariant.start VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iPTR, MVT::i64, MVT::iPTR); break; case Intrinsic::convert_from_fp16: // llvm.convert.from.fp16 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::f32, MVT::i16); break; case Intrinsic::convert_to_fp16: // llvm.convert.to.fp16 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i16, MVT::f32); break; case Intrinsic::flt_rounds: // llvm.flt.rounds VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::i32); break; case Intrinsic::x86_sse42_crc32_32_16: // llvm.x86.sse42.crc32.32.16 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i16); break; case Intrinsic::x86_sse42_crc32_32_32: // llvm.x86.sse42.crc32.32.32 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i32); break; case Intrinsic::x86_sse42_crc32_32_8: // llvm.x86.sse42.crc32.32.8 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i8); break; case Intrinsic::eh_sjlj_setjmp: // llvm.eh.sjlj.setjmp case Intrinsic::eh_typeid_for: // llvm.eh.typeid.for case Intrinsic::setjmp: // llvm.setjmp VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::iPTR); break; case Intrinsic::sigsetjmp: // llvm.sigsetjmp VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::iPTR, MVT::i32); break; case Intrinsic::eh_selector: // llvm.eh.selector VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::i32, MVT::iPTR, MVT::iPTR, MVT::isVoid); break; case Intrinsic::x86_sse2_pmovmskb_128: // llvm.x86.sse2.pmovmskb.128 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v16i8); break; case Intrinsic::x86_sse41_pextrb: // llvm.x86.sse41.pextrb VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v16i8, MVT::i32); break; case Intrinsic::x86_sse42_pcmpestri128: // llvm.x86.sse42.pcmpestri128 case Intrinsic::x86_sse42_pcmpestria128: // llvm.x86.sse42.pcmpestria128 case Intrinsic::x86_sse42_pcmpestric128: // llvm.x86.sse42.pcmpestric128 case Intrinsic::x86_sse42_pcmpestrio128: // llvm.x86.sse42.pcmpestrio128 case Intrinsic::x86_sse42_pcmpestris128: // llvm.x86.sse42.pcmpestris128 case Intrinsic::x86_sse42_pcmpestriz128: // llvm.x86.sse42.pcmpestriz128 VerifyIntrinsicPrototype(ID, IF, 1, 5, MVT::i32, MVT::v16i8, MVT::i32, MVT::v16i8, MVT::i32, MVT::i8); break; case Intrinsic::x86_sse42_pcmpistri128: // llvm.x86.sse42.pcmpistri128 case Intrinsic::x86_sse42_pcmpistria128: // llvm.x86.sse42.pcmpistria128 case Intrinsic::x86_sse42_pcmpistric128: // llvm.x86.sse42.pcmpistric128 case Intrinsic::x86_sse42_pcmpistrio128: // llvm.x86.sse42.pcmpistrio128 case Intrinsic::x86_sse42_pcmpistris128: // llvm.x86.sse42.pcmpistris128 case Intrinsic::x86_sse42_pcmpistriz128: // llvm.x86.sse42.pcmpistriz128 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::i32, MVT::v16i8, MVT::v16i8, MVT::i8); break; case Intrinsic::x86_sse2_cvtsd2si: // llvm.x86.sse2.cvtsd2si case Intrinsic::x86_sse2_cvttsd2si: // llvm.x86.sse2.cvttsd2si case Intrinsic::x86_sse2_movmsk_pd: // llvm.x86.sse2.movmsk.pd VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v2f64); break; case Intrinsic::x86_avx_vtestc_pd: // llvm.x86.avx.vtestc.pd case Intrinsic::x86_avx_vtestnzc_pd: // llvm.x86.avx.vtestnzc.pd case Intrinsic::x86_avx_vtestz_pd: // llvm.x86.avx.vtestz.pd case Intrinsic::x86_sse2_comieq_sd: // llvm.x86.sse2.comieq.sd case Intrinsic::x86_sse2_comige_sd: // llvm.x86.sse2.comige.sd case Intrinsic::x86_sse2_comigt_sd: // llvm.x86.sse2.comigt.sd case Intrinsic::x86_sse2_comile_sd: // llvm.x86.sse2.comile.sd case Intrinsic::x86_sse2_comilt_sd: // llvm.x86.sse2.comilt.sd case Intrinsic::x86_sse2_comineq_sd: // llvm.x86.sse2.comineq.sd case Intrinsic::x86_sse2_ucomieq_sd: // llvm.x86.sse2.ucomieq.sd case Intrinsic::x86_sse2_ucomige_sd: // llvm.x86.sse2.ucomige.sd case Intrinsic::x86_sse2_ucomigt_sd: // llvm.x86.sse2.ucomigt.sd case Intrinsic::x86_sse2_ucomile_sd: // llvm.x86.sse2.ucomile.sd case Intrinsic::x86_sse2_ucomilt_sd: // llvm.x86.sse2.ucomilt.sd case Intrinsic::x86_sse2_ucomineq_sd: // llvm.x86.sse2.ucomineq.sd VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v2f64, MVT::v2f64); break; case Intrinsic::x86_sse_cvtss2si: // llvm.x86.sse.cvtss2si case Intrinsic::x86_sse_cvttss2si: // llvm.x86.sse.cvttss2si case Intrinsic::x86_sse_movmsk_ps: // llvm.x86.sse.movmsk.ps VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v4f32); break; case Intrinsic::x86_sse41_extractps: // llvm.x86.sse41.extractps VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f32, MVT::i32); break; case Intrinsic::x86_avx_vtestc_ps: // llvm.x86.avx.vtestc.ps case Intrinsic::x86_avx_vtestnzc_ps: // llvm.x86.avx.vtestnzc.ps case Intrinsic::x86_avx_vtestz_ps: // llvm.x86.avx.vtestz.ps case Intrinsic::x86_sse41_ptestc: // llvm.x86.sse41.ptestc case Intrinsic::x86_sse41_ptestnzc: // llvm.x86.sse41.ptestnzc case Intrinsic::x86_sse41_ptestz: // llvm.x86.sse41.ptestz case Intrinsic::x86_sse_comieq_ss: // llvm.x86.sse.comieq.ss case Intrinsic::x86_sse_comige_ss: // llvm.x86.sse.comige.ss case Intrinsic::x86_sse_comigt_ss: // llvm.x86.sse.comigt.ss case Intrinsic::x86_sse_comile_ss: // llvm.x86.sse.comile.ss case Intrinsic::x86_sse_comilt_ss: // llvm.x86.sse.comilt.ss case Intrinsic::x86_sse_comineq_ss: // llvm.x86.sse.comineq.ss case Intrinsic::x86_sse_ucomieq_ss: // llvm.x86.sse.ucomieq.ss case Intrinsic::x86_sse_ucomige_ss: // llvm.x86.sse.ucomige.ss case Intrinsic::x86_sse_ucomigt_ss: // llvm.x86.sse.ucomigt.ss case Intrinsic::x86_sse_ucomile_ss: // llvm.x86.sse.ucomile.ss case Intrinsic::x86_sse_ucomilt_ss: // llvm.x86.sse.ucomilt.ss case Intrinsic::x86_sse_ucomineq_ss: // llvm.x86.sse.ucomineq.ss VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f32, MVT::v4f32); break; case Intrinsic::x86_avx_movmsk_pd_256: // llvm.x86.avx.movmsk.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v4f64); break; case Intrinsic::x86_avx_vtestc_pd_256: // llvm.x86.avx.vtestc.pd.256 case Intrinsic::x86_avx_vtestnzc_pd_256: // llvm.x86.avx.vtestnzc.pd.256 case Intrinsic::x86_avx_vtestz_pd_256: // llvm.x86.avx.vtestz.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f64, MVT::v4f64); break; case Intrinsic::x86_sse41_pextrd: // llvm.x86.sse41.pextrd VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4i32, MVT::i32); break; case Intrinsic::x86_avx_ptestc_256: // llvm.x86.avx.ptestc.256 case Intrinsic::x86_avx_ptestnzc_256: // llvm.x86.avx.ptestnzc.256 case Intrinsic::x86_avx_ptestz_256: // llvm.x86.avx.ptestz.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4i64, MVT::v4i64); break; case Intrinsic::x86_avx_movmsk_ps_256: // llvm.x86.avx.movmsk.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v8f32); break; case Intrinsic::x86_avx_vtestc_ps_256: // llvm.x86.avx.vtestc.ps.256 case Intrinsic::x86_avx_vtestnzc_ps_256: // llvm.x86.avx.vtestnzc.ps.256 case Intrinsic::x86_avx_vtestz_ps_256: // llvm.x86.avx.vtestz.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v8f32, MVT::v8f32); break; case Intrinsic::x86_mmx_pmovmskb: // llvm.x86.mmx.pmovmskb VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::x86mmx); break; case Intrinsic::x86_mmx_pextr_w: // llvm.x86.mmx.pextr.w VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::x86mmx, MVT::i32); break; case Intrinsic::readcyclecounter: // llvm.readcyclecounter VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::i64); break; case Intrinsic::x86_sse42_crc32_64_64: // llvm.x86.sse42.crc32.64.64 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::i64, MVT::i64); break; case Intrinsic::x86_sse42_crc32_64_8: // llvm.x86.sse42.crc32.64.8 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::i64, MVT::i8); break; case Intrinsic::x86_sse2_cvtsd2si64: // llvm.x86.sse2.cvtsd2si64 case Intrinsic::x86_sse2_cvttsd2si64: // llvm.x86.sse2.cvttsd2si64 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i64, MVT::v2f64); break; case Intrinsic::x86_sse41_pextrq: // llvm.x86.sse41.pextrq VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::v2i64, MVT::i32); break; case Intrinsic::x86_sse_cvtss2si64: // llvm.x86.sse.cvtss2si64 case Intrinsic::x86_sse_cvttss2si64: // llvm.x86.sse.cvttss2si64 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i64, MVT::v4f32); break; case Intrinsic::eh_exception: // llvm.eh.exception case Intrinsic::eh_sjlj_lsda: // llvm.eh.sjlj.lsda case Intrinsic::stacksave: // llvm.stacksave VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::iPTR); break; case Intrinsic::eh_dwarf_cfa: // llvm.eh.dwarf.cfa case Intrinsic::frameaddress: // llvm.frameaddress case Intrinsic::returnaddress: // llvm.returnaddress VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iPTR, MVT::i32); break; case Intrinsic::adjust_trampoline: // llvm.adjust.trampoline VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iPTR, MVT::iPTR); break; case Intrinsic::gcread: // llvm.gcread VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iPTR, MVT::iPTR, MVT::iPTR); break; case Intrinsic::x86_sse3_ldu_dq: // llvm.x86.sse3.ldu.dq VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v16i8, MVT::iPTR); break; case Intrinsic::x86_ssse3_pabs_b_128: // llvm.x86.ssse3.pabs.b.128 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v16i8, MVT::v16i8); break; case Intrinsic::x86_sse42_pcmpestrm128: // llvm.x86.sse42.pcmpestrm128 VerifyIntrinsicPrototype(ID, IF, 1, 5, MVT::v16i8, MVT::v16i8, MVT::i32, MVT::v16i8, MVT::i32, MVT::i8); break; case Intrinsic::x86_sse2_padds_b: // llvm.x86.sse2.padds.b case Intrinsic::x86_sse2_paddus_b: // llvm.x86.sse2.paddus.b case Intrinsic::x86_sse2_pavg_b: // llvm.x86.sse2.pavg.b case Intrinsic::x86_sse2_pcmpeq_b: // llvm.x86.sse2.pcmpeq.b case Intrinsic::x86_sse2_pcmpgt_b: // llvm.x86.sse2.pcmpgt.b case Intrinsic::x86_sse2_pmaxu_b: // llvm.x86.sse2.pmaxu.b case Intrinsic::x86_sse2_pminu_b: // llvm.x86.sse2.pminu.b case Intrinsic::x86_sse2_psubs_b: // llvm.x86.sse2.psubs.b case Intrinsic::x86_sse2_psubus_b: // llvm.x86.sse2.psubus.b case Intrinsic::x86_sse41_pmaxsb: // llvm.x86.sse41.pmaxsb case Intrinsic::x86_sse41_pminsb: // llvm.x86.sse41.pminsb case Intrinsic::x86_ssse3_pshuf_b_128: // llvm.x86.ssse3.pshuf.b.128 case Intrinsic::x86_ssse3_psign_b_128: // llvm.x86.ssse3.psign.b.128 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v16i8, MVT::v16i8, MVT::v16i8); break; case Intrinsic::x86_sse41_mpsadbw: // llvm.x86.sse41.mpsadbw VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::i32); break; case Intrinsic::x86_sse42_pcmpistrm128: // llvm.x86.sse42.pcmpistrm128 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::i8); break; case Intrinsic::x86_sse41_pblendvb: // llvm.x86.sse41.pblendvb VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::v16i8); break; case Intrinsic::x86_sse2_packsswb_128: // llvm.x86.sse2.packsswb.128 case Intrinsic::x86_sse2_packuswb_128: // llvm.x86.sse2.packuswb.128 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v16i8, MVT::v8i16, MVT::v8i16); break; case Intrinsic::x86_avx_maskload_pd: // llvm.x86.avx.maskload.pd VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::iPTR, MVT::v2f64); break; case Intrinsic::x86_sse2_sqrt_pd: // llvm.x86.sse2.sqrt.pd case Intrinsic::x86_sse2_sqrt_sd: // llvm.x86.sse2.sqrt.sd VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v2f64); break; case Intrinsic::x86_sse2_cvtsi2sd: // llvm.x86.sse2.cvtsi2sd case Intrinsic::x86_sse41_round_pd: // llvm.x86.sse41.round.pd VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i32); break; case Intrinsic::x86_sse2_cvtsi642sd: // llvm.x86.sse2.cvtsi642sd VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i64); break; case Intrinsic::x86_avx_vpermil_pd: // llvm.x86.avx.vpermil.pd VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i8); break; case Intrinsic::x86_sse2_add_sd: // llvm.x86.sse2.add.sd case Intrinsic::x86_sse2_div_sd: // llvm.x86.sse2.div.sd case Intrinsic::x86_sse2_max_pd: // llvm.x86.sse2.max.pd case Intrinsic::x86_sse2_max_sd: // llvm.x86.sse2.max.sd case Intrinsic::x86_sse2_min_pd: // llvm.x86.sse2.min.pd case Intrinsic::x86_sse2_min_sd: // llvm.x86.sse2.min.sd case Intrinsic::x86_sse2_mul_sd: // llvm.x86.sse2.mul.sd case Intrinsic::x86_sse2_sub_sd: // llvm.x86.sse2.sub.sd case Intrinsic::x86_sse3_addsub_pd: // llvm.x86.sse3.addsub.pd case Intrinsic::x86_sse3_hadd_pd: // llvm.x86.sse3.hadd.pd case Intrinsic::x86_sse3_hsub_pd: // llvm.x86.sse3.hsub.pd VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v2f64); break; case Intrinsic::x86_sse41_blendpd: // llvm.x86.sse41.blendpd case Intrinsic::x86_sse41_dppd: // llvm.x86.sse41.dppd case Intrinsic::x86_sse41_round_sd: // llvm.x86.sse41.round.sd VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::i32); break; case Intrinsic::x86_sse2_cmp_pd: // llvm.x86.sse2.cmp.pd case Intrinsic::x86_sse2_cmp_sd: // llvm.x86.sse2.cmp.sd VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::i8); break; case Intrinsic::x86_sse41_blendvpd: // llvm.x86.sse41.blendvpd VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::v2f64); break; case Intrinsic::x86_avx_vpermilvar_pd: // llvm.x86.avx.vpermilvar.pd VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v2i64); break; case Intrinsic::x86_sse2_cvtss2sd: // llvm.x86.sse2.cvtss2sd VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v4f32); break; case Intrinsic::x86_sse2_cvtps2pd: // llvm.x86.sse2.cvtps2pd VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v4f32); break; case Intrinsic::x86_avx_vextractf128_pd_256: // llvm.x86.avx.vextractf128.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v4f64, MVT::i8); break; case Intrinsic::x86_sse2_cvtdq2pd: // llvm.x86.sse2.cvtdq2pd VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v4i32); break; case Intrinsic::x86_sse_cvtpi2pd: // llvm.x86.sse.cvtpi2pd VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::x86mmx); break; case Intrinsic::x86_sse41_movntdqa: // llvm.x86.sse41.movntdqa VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::iPTR); break; case Intrinsic::x86_sse41_pmovsxbq: // llvm.x86.sse41.pmovsxbq case Intrinsic::x86_sse41_pmovzxbq: // llvm.x86.sse41.pmovzxbq VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v16i8); break; case Intrinsic::x86_sse2_psad_bw: // llvm.x86.sse2.psad.bw VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v16i8, MVT::v16i8); break; case Intrinsic::x86_aesni_aesimc: // llvm.x86.aesni.aesimc VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v2i64); break; case Intrinsic::x86_sse2_psll_dq: // llvm.x86.sse2.psll.dq case Intrinsic::x86_sse2_psll_dq_bs: // llvm.x86.sse2.psll.dq.bs case Intrinsic::x86_sse2_pslli_q: // llvm.x86.sse2.pslli.q case Intrinsic::x86_sse2_psrl_dq: // llvm.x86.sse2.psrl.dq case Intrinsic::x86_sse2_psrl_dq_bs: // llvm.x86.sse2.psrl.dq.bs case Intrinsic::x86_sse2_psrli_q: // llvm.x86.sse2.psrli.q VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::i32); break; case Intrinsic::x86_aesni_aeskeygenassist: // llvm.x86.aesni.aeskeygenassist VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::i8); break; case Intrinsic::x86_aesni_aesdec: // llvm.x86.aesni.aesdec case Intrinsic::x86_aesni_aesdeclast: // llvm.x86.aesni.aesdeclast case Intrinsic::x86_aesni_aesenc: // llvm.x86.aesni.aesenc case Intrinsic::x86_aesni_aesenclast: // llvm.x86.aesni.aesenclast case Intrinsic::x86_sse2_psll_q: // llvm.x86.sse2.psll.q case Intrinsic::x86_sse2_psrl_q: // llvm.x86.sse2.psrl.q case Intrinsic::x86_sse41_pcmpeqq: // llvm.x86.sse41.pcmpeqq case Intrinsic::x86_sse42_pcmpgtq: // llvm.x86.sse42.pcmpgtq VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::v2i64); break; case Intrinsic::x86_sse41_pmovsxdq: // llvm.x86.sse41.pmovsxdq case Intrinsic::x86_sse41_pmovzxdq: // llvm.x86.sse41.pmovzxdq VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v4i32); break; case Intrinsic::x86_sse2_pmulu_dq: // llvm.x86.sse2.pmulu.dq case Intrinsic::x86_sse41_pmuldq: // llvm.x86.sse41.pmuldq VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v4i32, MVT::v4i32); break; case Intrinsic::x86_sse41_pmovsxwq: // llvm.x86.sse41.pmovsxwq case Intrinsic::x86_sse41_pmovzxwq: // llvm.x86.sse41.pmovzxwq VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v8i16); break; case Intrinsic::x86_avx_ldu_dq_256: // llvm.x86.avx.ldu.dq.256 case Intrinsic::x86_avx_loadu_dq_256: // llvm.x86.avx.loadu.dq.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v32i8, MVT::iPTR); break; case Intrinsic::x86_avx_vbroadcastss: // llvm.x86.avx.vbroadcastss VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::iPTR); break; case Intrinsic::x86_avx_maskload_ps: // llvm.x86.avx.maskload.ps VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::iPTR, MVT::v4f32); break; case Intrinsic::x86_sse2_cvtpd2ps: // llvm.x86.sse2.cvtpd2ps VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v2f64); break; case Intrinsic::x86_sse_rcp_ps: // llvm.x86.sse.rcp.ps case Intrinsic::x86_sse_rcp_ss: // llvm.x86.sse.rcp.ss case Intrinsic::x86_sse_rsqrt_ps: // llvm.x86.sse.rsqrt.ps case Intrinsic::x86_sse_rsqrt_ss: // llvm.x86.sse.rsqrt.ss case Intrinsic::x86_sse_sqrt_ps: // llvm.x86.sse.sqrt.ps case Intrinsic::x86_sse_sqrt_ss: // llvm.x86.sse.sqrt.ss VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4f32); break; case Intrinsic::x86_sse41_round_ps: // llvm.x86.sse41.round.ps case Intrinsic::x86_sse_cvtsi2ss: // llvm.x86.sse.cvtsi2ss VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i32); break; case Intrinsic::x86_sse_cvtsi642ss: // llvm.x86.sse.cvtsi642ss VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i64); break; case Intrinsic::x86_avx_vpermil_ps: // llvm.x86.avx.vpermil.ps VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i8); break; case Intrinsic::x86_sse2_cvtsd2ss: // llvm.x86.sse2.cvtsd2ss VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v2f64); break; case Intrinsic::x86_sse3_addsub_ps: // llvm.x86.sse3.addsub.ps case Intrinsic::x86_sse3_hadd_ps: // llvm.x86.sse3.hadd.ps case Intrinsic::x86_sse3_hsub_ps: // llvm.x86.sse3.hsub.ps case Intrinsic::x86_sse_add_ss: // llvm.x86.sse.add.ss case Intrinsic::x86_sse_div_ss: // llvm.x86.sse.div.ss case Intrinsic::x86_sse_max_ps: // llvm.x86.sse.max.ps case Intrinsic::x86_sse_max_ss: // llvm.x86.sse.max.ss case Intrinsic::x86_sse_min_ps: // llvm.x86.sse.min.ps case Intrinsic::x86_sse_min_ss: // llvm.x86.sse.min.ss case Intrinsic::x86_sse_mul_ss: // llvm.x86.sse.mul.ss case Intrinsic::x86_sse_sub_ss: // llvm.x86.sse.sub.ss VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v4f32); break; case Intrinsic::x86_sse41_blendps: // llvm.x86.sse41.blendps case Intrinsic::x86_sse41_dpps: // llvm.x86.sse41.dpps case Intrinsic::x86_sse41_insertps: // llvm.x86.sse41.insertps case Intrinsic::x86_sse41_round_ss: // llvm.x86.sse41.round.ss VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::i32); break; case Intrinsic::x86_sse_cmp_ps: // llvm.x86.sse.cmp.ps case Intrinsic::x86_sse_cmp_ss: // llvm.x86.sse.cmp.ss VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::i8); break; case Intrinsic::x86_sse41_blendvps: // llvm.x86.sse41.blendvps VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::v4f32); break; case Intrinsic::x86_avx_vpermilvar_ps: // llvm.x86.avx.vpermilvar.ps VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v4i32); break; case Intrinsic::x86_sse_cvtpi2ps: // llvm.x86.sse.cvtpi2ps VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::x86mmx); break; case Intrinsic::x86_avx_cvt_pd2_ps_256: // llvm.x86.avx.cvt.pd2.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4f64); break; case Intrinsic::x86_sse2_cvtdq2ps: // llvm.x86.sse2.cvtdq2ps VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4i32); break; case Intrinsic::x86_avx_vextractf128_ps_256: // llvm.x86.avx.vextractf128.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v8f32, MVT::i8); break; case Intrinsic::x86_avx_loadu_pd_256: // llvm.x86.avx.loadu.pd.256 case Intrinsic::x86_avx_vbroadcast_sd_256: // llvm.x86.avx.vbroadcast.sd.256 case Intrinsic::x86_avx_vbroadcastf128_pd_256: // llvm.x86.avx.vbroadcastf128.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::iPTR); break; case Intrinsic::x86_avx_maskload_pd_256: // llvm.x86.avx.maskload.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::iPTR, MVT::v4f64); break; case Intrinsic::x86_avx_cvt_ps2_pd_256: // llvm.x86.avx.cvt.ps2.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4f32); break; case Intrinsic::x86_avx_sqrt_pd_256: // llvm.x86.avx.sqrt.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4f64); break; case Intrinsic::x86_avx_round_pd_256: // llvm.x86.avx.round.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::i32); break; case Intrinsic::x86_avx_vpermil_pd_256: // llvm.x86.avx.vpermil.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::i8); break; case Intrinsic::x86_avx_vinsertf128_pd_256: // llvm.x86.avx.vinsertf128.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v2f64, MVT::i8); break; case Intrinsic::x86_avx_addsub_pd_256: // llvm.x86.avx.addsub.pd.256 case Intrinsic::x86_avx_hadd_pd_256: // llvm.x86.avx.hadd.pd.256 case Intrinsic::x86_avx_hsub_pd_256: // llvm.x86.avx.hsub.pd.256 case Intrinsic::x86_avx_max_pd_256: // llvm.x86.avx.max.pd.256 case Intrinsic::x86_avx_min_pd_256: // llvm.x86.avx.min.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::v4f64); break; case Intrinsic::x86_avx_blend_pd_256: // llvm.x86.avx.blend.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::i32); break; case Intrinsic::x86_avx_cmp_pd_256: // llvm.x86.avx.cmp.pd.256 case Intrinsic::x86_avx_vperm2f128_pd_256: // llvm.x86.avx.vperm2f128.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::i8); break; case Intrinsic::x86_avx_blendv_pd_256: // llvm.x86.avx.blendv.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::v4f64); break; case Intrinsic::x86_avx_vpermilvar_pd_256: // llvm.x86.avx.vpermilvar.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::v4i64); break; case Intrinsic::x86_avx_cvtdq2_pd_256: // llvm.x86.avx.cvtdq2.pd.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4i32); break; case Intrinsic::x86_sse41_pmovsxbd: // llvm.x86.sse41.pmovsxbd case Intrinsic::x86_sse41_pmovzxbd: // llvm.x86.sse41.pmovzxbd VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v16i8); break; case Intrinsic::x86_sse2_cvtpd2dq: // llvm.x86.sse2.cvtpd2dq case Intrinsic::x86_sse2_cvttpd2dq: // llvm.x86.sse2.cvttpd2dq VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v2f64); break; case Intrinsic::x86_sse2_cvtps2dq: // llvm.x86.sse2.cvtps2dq case Intrinsic::x86_sse2_cvttps2dq: // llvm.x86.sse2.cvttps2dq VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4f32); break; case Intrinsic::x86_avx_cvt_pd2dq_256: // llvm.x86.avx.cvt.pd2dq.256 case Intrinsic::x86_avx_cvtt_pd2dq_256: // llvm.x86.avx.cvtt.pd2dq.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4f64); break; case Intrinsic::x86_ssse3_pabs_d_128: // llvm.x86.ssse3.pabs.d.128 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4i32); break; case Intrinsic::x86_sse2_pslli_d: // llvm.x86.sse2.pslli.d case Intrinsic::x86_sse2_psrai_d: // llvm.x86.sse2.psrai.d case Intrinsic::x86_sse2_psrli_d: // llvm.x86.sse2.psrli.d VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v4i32, MVT::i32); break; case Intrinsic::x86_sse2_pcmpeq_d: // llvm.x86.sse2.pcmpeq.d case Intrinsic::x86_sse2_pcmpgt_d: // llvm.x86.sse2.pcmpgt.d case Intrinsic::x86_sse2_psll_d: // llvm.x86.sse2.psll.d case Intrinsic::x86_sse2_psra_d: // llvm.x86.sse2.psra.d case Intrinsic::x86_sse2_psrl_d: // llvm.x86.sse2.psrl.d case Intrinsic::x86_sse41_pmaxsd: // llvm.x86.sse41.pmaxsd case Intrinsic::x86_sse41_pmaxud: // llvm.x86.sse41.pmaxud case Intrinsic::x86_sse41_pminsd: // llvm.x86.sse41.pminsd case Intrinsic::x86_sse41_pminud: // llvm.x86.sse41.pminud case Intrinsic::x86_ssse3_phadd_d_128: // llvm.x86.ssse3.phadd.d.128 case Intrinsic::x86_ssse3_phadd_sw_128: // llvm.x86.ssse3.phadd.sw.128 case Intrinsic::x86_ssse3_phsub_d_128: // llvm.x86.ssse3.phsub.d.128 case Intrinsic::x86_ssse3_psign_d_128: // llvm.x86.ssse3.psign.d.128 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v4i32, MVT::v4i32); break; case Intrinsic::x86_sse41_pmovsxwd: // llvm.x86.sse41.pmovsxwd case Intrinsic::x86_sse41_pmovzxwd: // llvm.x86.sse41.pmovzxwd VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v8i16); break; case Intrinsic::x86_sse2_pmadd_wd: // llvm.x86.sse2.pmadd.wd VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v8i16, MVT::v8i16); break; case Intrinsic::x86_avx_vextractf128_si_256: // llvm.x86.avx.vextractf128.si.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v8i32, MVT::i8); break; case Intrinsic::x86_avx_loadu_ps_256: // llvm.x86.avx.loadu.ps.256 case Intrinsic::x86_avx_vbroadcastf128_ps_256: // llvm.x86.avx.vbroadcastf128.ps.256 case Intrinsic::x86_avx_vbroadcastss_256: // llvm.x86.avx.vbroadcastss.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::iPTR); break; case Intrinsic::x86_avx_maskload_ps_256: // llvm.x86.avx.maskload.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::iPTR, MVT::v8f32); break; case Intrinsic::x86_avx_rcp_ps_256: // llvm.x86.avx.rcp.ps.256 case Intrinsic::x86_avx_rsqrt_ps_256: // llvm.x86.avx.rsqrt.ps.256 case Intrinsic::x86_avx_sqrt_ps_256: // llvm.x86.avx.sqrt.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::v8f32); break; case Intrinsic::x86_avx_round_ps_256: // llvm.x86.avx.round.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::i32); break; case Intrinsic::x86_avx_vpermil_ps_256: // llvm.x86.avx.vpermil.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::i8); break; case Intrinsic::x86_avx_vinsertf128_ps_256: // llvm.x86.avx.vinsertf128.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v4f32, MVT::i8); break; case Intrinsic::x86_avx_addsub_ps_256: // llvm.x86.avx.addsub.ps.256 case Intrinsic::x86_avx_hadd_ps_256: // llvm.x86.avx.hadd.ps.256 case Intrinsic::x86_avx_hsub_ps_256: // llvm.x86.avx.hsub.ps.256 case Intrinsic::x86_avx_max_ps_256: // llvm.x86.avx.max.ps.256 case Intrinsic::x86_avx_min_ps_256: // llvm.x86.avx.min.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::v8f32); break; case Intrinsic::x86_avx_blend_ps_256: // llvm.x86.avx.blend.ps.256 case Intrinsic::x86_avx_dp_ps_256: // llvm.x86.avx.dp.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::i32); break; case Intrinsic::x86_avx_cmp_ps_256: // llvm.x86.avx.cmp.ps.256 case Intrinsic::x86_avx_vperm2f128_ps_256: // llvm.x86.avx.vperm2f128.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::i8); break; case Intrinsic::x86_avx_blendv_ps_256: // llvm.x86.avx.blendv.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::v8f32); break; case Intrinsic::x86_avx_vpermilvar_ps_256: // llvm.x86.avx.vpermilvar.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::v8i32); break; case Intrinsic::x86_avx_cvtdq2_ps_256: // llvm.x86.avx.cvtdq2.ps.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::v8i32); break; case Intrinsic::x86_sse41_pmovsxbw: // llvm.x86.sse41.pmovsxbw case Intrinsic::x86_sse41_pmovzxbw: // llvm.x86.sse41.pmovzxbw VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i16, MVT::v16i8); break; case Intrinsic::x86_sse2_packssdw_128: // llvm.x86.sse2.packssdw.128 case Intrinsic::x86_sse41_packusdw: // llvm.x86.sse41.packusdw VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v4i32, MVT::v4i32); break; case Intrinsic::x86_sse41_phminposuw: // llvm.x86.sse41.phminposuw case Intrinsic::x86_ssse3_pabs_w_128: // llvm.x86.ssse3.pabs.w.128 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i16, MVT::v8i16); break; case Intrinsic::x86_sse2_pslli_w: // llvm.x86.sse2.pslli.w case Intrinsic::x86_sse2_psrai_w: // llvm.x86.sse2.psrai.w case Intrinsic::x86_sse2_psrli_w: // llvm.x86.sse2.psrli.w VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v8i16, MVT::i32); break; case Intrinsic::x86_sse2_padds_w: // llvm.x86.sse2.padds.w case Intrinsic::x86_sse2_paddus_w: // llvm.x86.sse2.paddus.w case Intrinsic::x86_sse2_pavg_w: // llvm.x86.sse2.pavg.w case Intrinsic::x86_sse2_pcmpeq_w: // llvm.x86.sse2.pcmpeq.w case Intrinsic::x86_sse2_pcmpgt_w: // llvm.x86.sse2.pcmpgt.w case Intrinsic::x86_sse2_pmaxs_w: // llvm.x86.sse2.pmaxs.w case Intrinsic::x86_sse2_pmins_w: // llvm.x86.sse2.pmins.w case Intrinsic::x86_sse2_pmulh_w: // llvm.x86.sse2.pmulh.w case Intrinsic::x86_sse2_pmulhu_w: // llvm.x86.sse2.pmulhu.w case Intrinsic::x86_sse2_psll_w: // llvm.x86.sse2.psll.w case Intrinsic::x86_sse2_psra_w: // llvm.x86.sse2.psra.w case Intrinsic::x86_sse2_psrl_w: // llvm.x86.sse2.psrl.w case Intrinsic::x86_sse2_psubs_w: // llvm.x86.sse2.psubs.w case Intrinsic::x86_sse2_psubus_w: // llvm.x86.sse2.psubus.w case Intrinsic::x86_sse41_pmaxuw: // llvm.x86.sse41.pmaxuw case Intrinsic::x86_sse41_pminuw: // llvm.x86.sse41.pminuw case Intrinsic::x86_ssse3_phadd_w_128: // llvm.x86.ssse3.phadd.w.128 case Intrinsic::x86_ssse3_phsub_sw_128: // llvm.x86.ssse3.phsub.sw.128 case Intrinsic::x86_ssse3_phsub_w_128: // llvm.x86.ssse3.phsub.w.128 case Intrinsic::x86_ssse3_pmadd_ub_sw_128: // llvm.x86.ssse3.pmadd.ub.sw.128 case Intrinsic::x86_ssse3_pmul_hr_sw_128: // llvm.x86.ssse3.pmul.hr.sw.128 case Intrinsic::x86_ssse3_psign_w_128: // llvm.x86.ssse3.psign.w.128 VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v8i16, MVT::v8i16); break; case Intrinsic::x86_sse41_pblendw: // llvm.x86.sse41.pblendw VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i16, MVT::v8i16, MVT::v8i16, MVT::i32); break; case Intrinsic::x86_avx_cvt_ps2dq_256: // llvm.x86.avx.cvt.ps2dq.256 case Intrinsic::x86_avx_cvtt_ps2dq_256: // llvm.x86.avx.cvtt.ps2dq.256 VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i32, MVT::v8f32); break; case Intrinsic::x86_avx_vinsertf128_si_256: // llvm.x86.avx.vinsertf128.si.256 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i32, MVT::v8i32, MVT::v4i32, MVT::i8); break; case Intrinsic::x86_avx_vperm2f128_si_256: // llvm.x86.avx.vperm2f128.si.256 VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i32, MVT::v8i32, MVT::v8i32, MVT::i8); break; case Intrinsic::x86_sse_cvtpd2pi: // llvm.x86.sse.cvtpd2pi case Intrinsic::x86_sse_cvttpd2pi: // llvm.x86.sse.cvttpd2pi VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::v2f64); break; case Intrinsic::x86_sse_cvtps2pi: // llvm.x86.sse.cvtps2pi case Intrinsic::x86_sse_cvttps2pi: // llvm.x86.sse.cvttps2pi VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::v4f32); break; case Intrinsic::x86_3dnow_pf2id: // llvm.x86.3dnow.pf2id case Intrinsic::x86_3dnow_pfrcp: // llvm.x86.3dnow.pfrcp case Intrinsic::x86_3dnow_pfrsqrt: // llvm.x86.3dnow.pfrsqrt case Intrinsic::x86_3dnow_pi2fd: // llvm.x86.3dnow.pi2fd case Intrinsic::x86_3dnowa_pf2iw: // llvm.x86.3dnowa.pf2iw case Intrinsic::x86_3dnowa_pi2fw: // llvm.x86.3dnowa.pi2fw case Intrinsic::x86_3dnowa_pswapd: // llvm.x86.3dnowa.pswapd case Intrinsic::x86_ssse3_pabs_b: // llvm.x86.ssse3.pabs.b case Intrinsic::x86_ssse3_pabs_d: // llvm.x86.ssse3.pabs.d case Intrinsic::x86_ssse3_pabs_w: // llvm.x86.ssse3.pabs.w VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::x86mmx); break; case Intrinsic::x86_mmx_pslli_d: // llvm.x86.mmx.pslli.d case Intrinsic::x86_mmx_pslli_q: // llvm.x86.mmx.pslli.q case Intrinsic::x86_mmx_pslli_w: // llvm.x86.mmx.pslli.w case Intrinsic::x86_mmx_psrai_d: // llvm.x86.mmx.psrai.d case Intrinsic::x86_mmx_psrai_w: // llvm.x86.mmx.psrai.w case Intrinsic::x86_mmx_psrli_d: // llvm.x86.mmx.psrli.d case Intrinsic::x86_mmx_psrli_q: // llvm.x86.mmx.psrli.q case Intrinsic::x86_mmx_psrli_w: // llvm.x86.mmx.psrli.w VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::i32); break; case Intrinsic::x86_mmx_pinsr_w: // llvm.x86.mmx.pinsr.w VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::x86mmx, MVT::x86mmx, MVT::i32, MVT::i32); break; case Intrinsic::x86_sse_pshuf_w: // llvm.x86.sse.pshuf.w VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::i8); break; case Intrinsic::x86_3dnow_pavgusb: // llvm.x86.3dnow.pavgusb case Intrinsic::x86_3dnow_pfacc: // llvm.x86.3dnow.pfacc case Intrinsic::x86_3dnow_pfadd: // llvm.x86.3dnow.pfadd case Intrinsic::x86_3dnow_pfcmpeq: // llvm.x86.3dnow.pfcmpeq case Intrinsic::x86_3dnow_pfcmpge: // llvm.x86.3dnow.pfcmpge case Intrinsic::x86_3dnow_pfcmpgt: // llvm.x86.3dnow.pfcmpgt case Intrinsic::x86_3dnow_pfmax: // llvm.x86.3dnow.pfmax case Intrinsic::x86_3dnow_pfmin: // llvm.x86.3dnow.pfmin case Intrinsic::x86_3dnow_pfmul: // llvm.x86.3dnow.pfmul case Intrinsic::x86_3dnow_pfrcpit1: // llvm.x86.3dnow.pfrcpit1 case Intrinsic::x86_3dnow_pfrcpit2: // llvm.x86.3dnow.pfrcpit2 case Intrinsic::x86_3dnow_pfrsqit1: // llvm.x86.3dnow.pfrsqit1 case Intrinsic::x86_3dnow_pfsub: // llvm.x86.3dnow.pfsub case Intrinsic::x86_3dnow_pfsubr: // llvm.x86.3dnow.pfsubr case Intrinsic::x86_3dnow_pmulhrw: // llvm.x86.3dnow.pmulhrw case Intrinsic::x86_3dnowa_pfnacc: // llvm.x86.3dnowa.pfnacc case Intrinsic::x86_3dnowa_pfpnacc: // llvm.x86.3dnowa.pfpnacc case Intrinsic::x86_mmx_packssdw: // llvm.x86.mmx.packssdw case Intrinsic::x86_mmx_packsswb: // llvm.x86.mmx.packsswb case Intrinsic::x86_mmx_packuswb: // llvm.x86.mmx.packuswb case Intrinsic::x86_mmx_padd_b: // llvm.x86.mmx.padd.b case Intrinsic::x86_mmx_padd_d: // llvm.x86.mmx.padd.d case Intrinsic::x86_mmx_padd_q: // llvm.x86.mmx.padd.q case Intrinsic::x86_mmx_padd_w: // llvm.x86.mmx.padd.w case Intrinsic::x86_mmx_padds_b: // llvm.x86.mmx.padds.b case Intrinsic::x86_mmx_padds_w: // llvm.x86.mmx.padds.w case Intrinsic::x86_mmx_paddus_b: // llvm.x86.mmx.paddus.b case Intrinsic::x86_mmx_paddus_w: // llvm.x86.mmx.paddus.w case Intrinsic::x86_mmx_pand: // llvm.x86.mmx.pand case Intrinsic::x86_mmx_pandn: // llvm.x86.mmx.pandn case Intrinsic::x86_mmx_pavg_b: // llvm.x86.mmx.pavg.b case Intrinsic::x86_mmx_pavg_w: // llvm.x86.mmx.pavg.w case Intrinsic::x86_mmx_pcmpeq_b: // llvm.x86.mmx.pcmpeq.b case Intrinsic::x86_mmx_pcmpeq_d: // llvm.x86.mmx.pcmpeq.d case Intrinsic::x86_mmx_pcmpeq_w: // llvm.x86.mmx.pcmpeq.w case Intrinsic::x86_mmx_pcmpgt_b: // llvm.x86.mmx.pcmpgt.b case Intrinsic::x86_mmx_pcmpgt_d: // llvm.x86.mmx.pcmpgt.d case Intrinsic::x86_mmx_pcmpgt_w: // llvm.x86.mmx.pcmpgt.w case Intrinsic::x86_mmx_pmadd_wd: // llvm.x86.mmx.pmadd.wd case Intrinsic::x86_mmx_pmaxs_w: // llvm.x86.mmx.pmaxs.w case Intrinsic::x86_mmx_pmaxu_b: // llvm.x86.mmx.pmaxu.b case Intrinsic::x86_mmx_pmins_w: // llvm.x86.mmx.pmins.w case Intrinsic::x86_mmx_pminu_b: // llvm.x86.mmx.pminu.b case Intrinsic::x86_mmx_pmulh_w: // llvm.x86.mmx.pmulh.w case Intrinsic::x86_mmx_pmulhu_w: // llvm.x86.mmx.pmulhu.w case Intrinsic::x86_mmx_pmull_w: // llvm.x86.mmx.pmull.w case Intrinsic::x86_mmx_pmulu_dq: // llvm.x86.mmx.pmulu.dq case Intrinsic::x86_mmx_por: // llvm.x86.mmx.por case Intrinsic::x86_mmx_psad_bw: // llvm.x86.mmx.psad.bw case Intrinsic::x86_mmx_psll_d: // llvm.x86.mmx.psll.d case Intrinsic::x86_mmx_psll_q: // llvm.x86.mmx.psll.q case Intrinsic::x86_mmx_psll_w: // llvm.x86.mmx.psll.w case Intrinsic::x86_mmx_psra_d: // llvm.x86.mmx.psra.d case Intrinsic::x86_mmx_psra_w: // llvm.x86.mmx.psra.w case Intrinsic::x86_mmx_psrl_d: // llvm.x86.mmx.psrl.d case Intrinsic::x86_mmx_psrl_q: // llvm.x86.mmx.psrl.q case Intrinsic::x86_mmx_psrl_w: // llvm.x86.mmx.psrl.w case Intrinsic::x86_mmx_psub_b: // llvm.x86.mmx.psub.b case Intrinsic::x86_mmx_psub_d: // llvm.x86.mmx.psub.d case Intrinsic::x86_mmx_psub_q: // llvm.x86.mmx.psub.q case Intrinsic::x86_mmx_psub_w: // llvm.x86.mmx.psub.w case Intrinsic::x86_mmx_psubs_b: // llvm.x86.mmx.psubs.b case Intrinsic::x86_mmx_psubs_w: // llvm.x86.mmx.psubs.w case Intrinsic::x86_mmx_psubus_b: // llvm.x86.mmx.psubus.b case Intrinsic::x86_mmx_psubus_w: // llvm.x86.mmx.psubus.w case Intrinsic::x86_mmx_punpckhbw: // llvm.x86.mmx.punpckhbw case Intrinsic::x86_mmx_punpckhdq: // llvm.x86.mmx.punpckhdq case Intrinsic::x86_mmx_punpckhwd: // llvm.x86.mmx.punpckhwd case Intrinsic::x86_mmx_punpcklbw: // llvm.x86.mmx.punpcklbw case Intrinsic::x86_mmx_punpckldq: // llvm.x86.mmx.punpckldq case Intrinsic::x86_mmx_punpcklwd: // llvm.x86.mmx.punpcklwd case Intrinsic::x86_mmx_pxor: // llvm.x86.mmx.pxor case Intrinsic::x86_ssse3_phadd_d: // llvm.x86.ssse3.phadd.d case Intrinsic::x86_ssse3_phadd_sw: // llvm.x86.ssse3.phadd.sw case Intrinsic::x86_ssse3_phadd_w: // llvm.x86.ssse3.phadd.w case Intrinsic::x86_ssse3_phsub_d: // llvm.x86.ssse3.phsub.d case Intrinsic::x86_ssse3_phsub_sw: // llvm.x86.ssse3.phsub.sw case Intrinsic::x86_ssse3_phsub_w: // llvm.x86.ssse3.phsub.w case Intrinsic::x86_ssse3_pmadd_ub_sw: // llvm.x86.ssse3.pmadd.ub.sw case Intrinsic::x86_ssse3_pmul_hr_sw: // llvm.x86.ssse3.pmul.hr.sw case Intrinsic::x86_ssse3_pshuf_b: // llvm.x86.ssse3.pshuf.b case Intrinsic::x86_ssse3_psign_b: // llvm.x86.ssse3.psign.b case Intrinsic::x86_ssse3_psign_d: // llvm.x86.ssse3.psign.d case Intrinsic::x86_ssse3_psign_w: // llvm.x86.ssse3.psign.w VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::x86mmx); break; case Intrinsic::x86_mmx_palignr_b: // llvm.x86.mmx.palignr.b VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::x86mmx, MVT::x86mmx, MVT::x86mmx, MVT::i8); break; } #endif // Code for generating Intrinsic function declarations. #ifdef GET_INTRINSIC_GENERATOR switch (id) { default: assert(0 && "Invalid intrinsic!"); case Intrinsic::eh_unwind_init: // llvm.eh.unwind.init case Intrinsic::trap: // llvm.trap case Intrinsic::x86_avx_vzeroall: // llvm.x86.avx.vzeroall case Intrinsic::x86_avx_vzeroupper: // llvm.x86.avx.vzeroupper case Intrinsic::x86_mmx_emms: // llvm.x86.mmx.emms case Intrinsic::x86_mmx_femms: // llvm.x86.mmx.femms case Intrinsic::x86_sse2_lfence: // llvm.x86.sse2.lfence case Intrinsic::x86_sse2_mfence: // llvm.x86.sse2.mfence case Intrinsic::x86_sse_sfence: // llvm.x86.sse.sfence ResultTy = Type::getVoidTy(Context); break; case Intrinsic::memcpy: // llvm.memcpy case Intrinsic::memmove: // llvm.memmove ResultTy = Type::getVoidTy(Context); ArgTys.push_back((0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back((1 < Tys.size()) ? Tys[1] : PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(Tys[2]); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 1)); break; case Intrinsic::memset: // llvm.memset ResultTy = Type::getVoidTy(Context); ArgTys.push_back((0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(IntegerType::get(Context, 8)); ArgTys.push_back(Tys[1]); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 1)); break; case Intrinsic::invariant_end: // llvm.invariant.end ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(StructType::get(Context))); ArgTys.push_back(IntegerType::get(Context, 64)); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::eh_sjlj_callsite: // llvm.eh.sjlj.callsite case Intrinsic::eh_sjlj_dispatch_setup: // llvm.eh.sjlj.dispatch.setup case Intrinsic::pcmarker: // llvm.pcmarker ResultTy = Type::getVoidTy(Context); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse3_mwait: // llvm.x86.sse3.mwait ResultTy = Type::getVoidTy(Context); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::eh_return_i32: // llvm.eh.return.i32 ResultTy = Type::getVoidTy(Context); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::eh_return_i64: // llvm.eh.return.i64 case Intrinsic::lifetime_end: // llvm.lifetime.end case Intrinsic::lifetime_start: // llvm.lifetime.start ResultTy = Type::getVoidTy(Context); ArgTys.push_back(IntegerType::get(Context, 64)); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::x86_int: // llvm.x86.int ResultTy = Type::getVoidTy(Context); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::dbg_value: // llvm.dbg.value ResultTy = Type::getVoidTy(Context); ArgTys.push_back(Type::getMetadataTy(Context)); ArgTys.push_back(IntegerType::get(Context, 64)); ArgTys.push_back(Type::getMetadataTy(Context)); break; case Intrinsic::dbg_declare: // llvm.dbg.declare ResultTy = Type::getVoidTy(Context); ArgTys.push_back(Type::getMetadataTy(Context)); ArgTys.push_back(Type::getMetadataTy(Context)); break; case Intrinsic::eh_sjlj_functioncontext: // llvm.eh.sjlj.functioncontext case Intrinsic::eh_sjlj_longjmp: // llvm.eh.sjlj.longjmp case Intrinsic::stackrestore: // llvm.stackrestore case Intrinsic::vaend: // llvm.va_end case Intrinsic::vastart: // llvm.va_start case Intrinsic::x86_sse2_clflush: // llvm.x86.sse2.clflush case Intrinsic::x86_sse_ldmxcsr: // llvm.x86.sse.ldmxcsr case Intrinsic::x86_sse_stmxcsr: // llvm.x86.sse.stmxcsr ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::eh_resume: // llvm.eh.resume case Intrinsic::longjmp: // llvm.longjmp case Intrinsic::siglongjmp: // llvm.siglongjmp ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse3_monitor: // llvm.x86.sse3.monitor ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::prefetch: // llvm.prefetch ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::vacopy: // llvm.va_copy ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::init_trampoline: // llvm.init.trampoline ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::var_annotation: // llvm.var.annotation ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::gcwrite: // llvm.gcwrite ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8)))); break; case Intrinsic::stackprotector: // llvm.stackprotector ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8)))); break; case Intrinsic::x86_sse2_storeu_dq: // llvm.x86.sse2.storeu.dq ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); break; case Intrinsic::x86_sse2_storeu_pd: // llvm.x86.sse2.storeu.pd ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_avx_maskstore_pd: // llvm.x86.avx.maskstore.pd ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_avx_storeu_dq_256: // llvm.x86.avx.storeu.dq.256 ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 32)); break; case Intrinsic::x86_sse_storeu_ps: // llvm.x86.sse.storeu.ps ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_avx_maskstore_ps: // llvm.x86.avx.maskstore.ps ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_avx_movnt_pd_256: // llvm.x86.avx.movnt.pd.256 case Intrinsic::x86_avx_storeu_pd_256: // llvm.x86.avx.storeu.pd.256 ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); break; case Intrinsic::x86_avx_maskstore_pd_256: // llvm.x86.avx.maskstore.pd.256 ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); break; case Intrinsic::x86_sse2_storel_dq: // llvm.x86.sse2.storel.dq ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); break; case Intrinsic::x86_avx_movnt_dq_256: // llvm.x86.avx.movnt.dq.256 ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4)); break; case Intrinsic::x86_avx_movnt_ps_256: // llvm.x86.avx.movnt.ps.256 case Intrinsic::x86_avx_storeu_ps_256: // llvm.x86.avx.storeu.ps.256 ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); break; case Intrinsic::x86_avx_maskstore_ps_256: // llvm.x86.avx.maskstore.ps.256 ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); break; case Intrinsic::gcroot: // llvm.gcroot ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8)))); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::x86_mmx_movnt_dq: // llvm.x86.mmx.movnt.dq ResultTy = Type::getVoidTy(Context); ArgTys.push_back(PointerType::getUnqual(Type::getX86_MMXTy(Context))); ArgTys.push_back(Type::getX86_MMXTy(Context)); break; case Intrinsic::x86_sse2_maskmov_dqu: // llvm.x86.sse2.maskmov.dqu ResultTy = Type::getVoidTy(Context); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::x86_mmx_maskmovq: // llvm.x86.mmx.maskmovq ResultTy = Type::getVoidTy(Context); ArgTys.push_back(Type::getX86_MMXTy(Context)); ArgTys.push_back(Type::getX86_MMXTy(Context)); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::ptr_annotation: // llvm.ptr.annotation ResultTy = (0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(Tys[0]); ArgTys.push_back(Tys[0]); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::sin: // llvm.sin ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::cos: // llvm.cos ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::pow: // llvm.pow ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); ArgTys.push_back(Tys[0]); break; case Intrinsic::log: // llvm.log ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::log10: // llvm.log10 ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::log2: // llvm.log2 ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::exp: // llvm.exp ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::exp2: // llvm.exp2 ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::fma: // llvm.fma ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); ArgTys.push_back(Tys[0]); ArgTys.push_back(Tys[0]); break; case Intrinsic::sqrt: // llvm.sqrt ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::powi: // llvm.powi ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::convertff: // llvm.convertff ResultTy = Tys[0]; ArgTys.push_back(Tys[1]); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::convertfsi: // llvm.convertfsi case Intrinsic::convertfui: // llvm.convertfui ResultTy = Tys[0]; ArgTys.push_back(Tys[1]); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::expect: // llvm.expect ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); ArgTys.push_back(Tys[0]); break; case Intrinsic::bswap: // llvm.bswap ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::ctpop: // llvm.ctpop ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::ctlz: // llvm.ctlz ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::cttz: // llvm.cttz ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); break; case Intrinsic::annotation: // llvm.annotation ResultTy = Tys[0]; ArgTys.push_back(Tys[0]); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::convertsif: // llvm.convertsif case Intrinsic::convertuif: // llvm.convertuif ResultTy = Tys[0]; ArgTys.push_back(Tys[1]); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::convertss: // llvm.convertss case Intrinsic::convertsu: // llvm.convertsu case Intrinsic::convertus: // llvm.convertus case Intrinsic::convertuu: // llvm.convertuu ResultTy = Tys[0]; ArgTys.push_back(Tys[1]); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::objectsize: // llvm.objectsize ResultTy = Tys[0]; ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(IntegerType::get(Context, 1)); break; case Intrinsic::sadd_with_overflow: // llvm.sadd.with.overflow ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); ArgTys.push_back(Tys[0]); ArgTys.push_back(Tys[0]); break; case Intrinsic::uadd_with_overflow: // llvm.uadd.with.overflow ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); ArgTys.push_back(Tys[0]); ArgTys.push_back(Tys[0]); break; case Intrinsic::ssub_with_overflow: // llvm.ssub.with.overflow ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); ArgTys.push_back(Tys[0]); ArgTys.push_back(Tys[0]); break; case Intrinsic::usub_with_overflow: // llvm.usub.with.overflow ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); ArgTys.push_back(Tys[0]); ArgTys.push_back(Tys[0]); break; case Intrinsic::smul_with_overflow: // llvm.smul.with.overflow ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); ArgTys.push_back(Tys[0]); ArgTys.push_back(Tys[0]); break; case Intrinsic::umul_with_overflow: // llvm.umul.with.overflow ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL); ArgTys.push_back(Tys[0]); ArgTys.push_back(Tys[0]); break; case Intrinsic::invariant_start: // llvm.invariant.start ResultTy = PointerType::getUnqual(StructType::get(Context)); ArgTys.push_back(IntegerType::get(Context, 64)); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::convert_from_fp16: // llvm.convert.from.fp16 ResultTy = Type::getFloatTy(Context); ArgTys.push_back(IntegerType::get(Context, 16)); break; case Intrinsic::convert_to_fp16: // llvm.convert.to.fp16 ResultTy = IntegerType::get(Context, 16); ArgTys.push_back(Type::getFloatTy(Context)); break; case Intrinsic::flt_rounds: // llvm.flt.rounds ResultTy = IntegerType::get(Context, 32); break; case Intrinsic::x86_sse42_crc32_32_16: // llvm.x86.sse42.crc32.32.16 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 16)); break; case Intrinsic::x86_sse42_crc32_32_32: // llvm.x86.sse42.crc32.32.32 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse42_crc32_32_8: // llvm.x86.sse42.crc32.32.8 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::eh_sjlj_setjmp: // llvm.eh.sjlj.setjmp case Intrinsic::eh_typeid_for: // llvm.eh.typeid.for case Intrinsic::setjmp: // llvm.setjmp ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::sigsetjmp: // llvm.sigsetjmp ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::eh_selector: // llvm.eh.selector IsVarArg = true; ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::x86_sse2_pmovmskb_128: // llvm.x86.sse2.pmovmskb.128 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); break; case Intrinsic::x86_sse41_pextrb: // llvm.x86.sse41.pextrb ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse42_pcmpestri128: // llvm.x86.sse42.pcmpestri128 case Intrinsic::x86_sse42_pcmpestria128: // llvm.x86.sse42.pcmpestria128 case Intrinsic::x86_sse42_pcmpestric128: // llvm.x86.sse42.pcmpestric128 case Intrinsic::x86_sse42_pcmpestrio128: // llvm.x86.sse42.pcmpestrio128 case Intrinsic::x86_sse42_pcmpestris128: // llvm.x86.sse42.pcmpestris128 case Intrinsic::x86_sse42_pcmpestriz128: // llvm.x86.sse42.pcmpestriz128 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse42_pcmpistri128: // llvm.x86.sse42.pcmpistri128 case Intrinsic::x86_sse42_pcmpistria128: // llvm.x86.sse42.pcmpistria128 case Intrinsic::x86_sse42_pcmpistric128: // llvm.x86.sse42.pcmpistric128 case Intrinsic::x86_sse42_pcmpistrio128: // llvm.x86.sse42.pcmpistrio128 case Intrinsic::x86_sse42_pcmpistris128: // llvm.x86.sse42.pcmpistris128 case Intrinsic::x86_sse42_pcmpistriz128: // llvm.x86.sse42.pcmpistriz128 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse2_cvtsd2si: // llvm.x86.sse2.cvtsd2si case Intrinsic::x86_sse2_cvttsd2si: // llvm.x86.sse2.cvttsd2si case Intrinsic::x86_sse2_movmsk_pd: // llvm.x86.sse2.movmsk.pd ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_avx_vtestc_pd: // llvm.x86.avx.vtestc.pd case Intrinsic::x86_avx_vtestnzc_pd: // llvm.x86.avx.vtestnzc.pd case Intrinsic::x86_avx_vtestz_pd: // llvm.x86.avx.vtestz.pd case Intrinsic::x86_sse2_comieq_sd: // llvm.x86.sse2.comieq.sd case Intrinsic::x86_sse2_comige_sd: // llvm.x86.sse2.comige.sd case Intrinsic::x86_sse2_comigt_sd: // llvm.x86.sse2.comigt.sd case Intrinsic::x86_sse2_comile_sd: // llvm.x86.sse2.comile.sd case Intrinsic::x86_sse2_comilt_sd: // llvm.x86.sse2.comilt.sd case Intrinsic::x86_sse2_comineq_sd: // llvm.x86.sse2.comineq.sd case Intrinsic::x86_sse2_ucomieq_sd: // llvm.x86.sse2.ucomieq.sd case Intrinsic::x86_sse2_ucomige_sd: // llvm.x86.sse2.ucomige.sd case Intrinsic::x86_sse2_ucomigt_sd: // llvm.x86.sse2.ucomigt.sd case Intrinsic::x86_sse2_ucomile_sd: // llvm.x86.sse2.ucomile.sd case Intrinsic::x86_sse2_ucomilt_sd: // llvm.x86.sse2.ucomilt.sd case Intrinsic::x86_sse2_ucomineq_sd: // llvm.x86.sse2.ucomineq.sd ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_sse_cvtss2si: // llvm.x86.sse.cvtss2si case Intrinsic::x86_sse_cvttss2si: // llvm.x86.sse.cvttss2si case Intrinsic::x86_sse_movmsk_ps: // llvm.x86.sse.movmsk.ps ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_sse41_extractps: // llvm.x86.sse41.extractps ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_avx_vtestc_ps: // llvm.x86.avx.vtestc.ps case Intrinsic::x86_avx_vtestnzc_ps: // llvm.x86.avx.vtestnzc.ps case Intrinsic::x86_avx_vtestz_ps: // llvm.x86.avx.vtestz.ps case Intrinsic::x86_sse41_ptestc: // llvm.x86.sse41.ptestc case Intrinsic::x86_sse41_ptestnzc: // llvm.x86.sse41.ptestnzc case Intrinsic::x86_sse41_ptestz: // llvm.x86.sse41.ptestz case Intrinsic::x86_sse_comieq_ss: // llvm.x86.sse.comieq.ss case Intrinsic::x86_sse_comige_ss: // llvm.x86.sse.comige.ss case Intrinsic::x86_sse_comigt_ss: // llvm.x86.sse.comigt.ss case Intrinsic::x86_sse_comile_ss: // llvm.x86.sse.comile.ss case Intrinsic::x86_sse_comilt_ss: // llvm.x86.sse.comilt.ss case Intrinsic::x86_sse_comineq_ss: // llvm.x86.sse.comineq.ss case Intrinsic::x86_sse_ucomieq_ss: // llvm.x86.sse.ucomieq.ss case Intrinsic::x86_sse_ucomige_ss: // llvm.x86.sse.ucomige.ss case Intrinsic::x86_sse_ucomigt_ss: // llvm.x86.sse.ucomigt.ss case Intrinsic::x86_sse_ucomile_ss: // llvm.x86.sse.ucomile.ss case Intrinsic::x86_sse_ucomilt_ss: // llvm.x86.sse.ucomilt.ss case Intrinsic::x86_sse_ucomineq_ss: // llvm.x86.sse.ucomineq.ss ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_avx_movmsk_pd_256: // llvm.x86.avx.movmsk.pd.256 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); break; case Intrinsic::x86_avx_vtestc_pd_256: // llvm.x86.avx.vtestc.pd.256 case Intrinsic::x86_avx_vtestnzc_pd_256: // llvm.x86.avx.vtestnzc.pd.256 case Intrinsic::x86_avx_vtestz_pd_256: // llvm.x86.avx.vtestz.pd.256 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); break; case Intrinsic::x86_sse41_pextrd: // llvm.x86.sse41.pextrd ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_avx_ptestc_256: // llvm.x86.avx.ptestc.256 case Intrinsic::x86_avx_ptestnzc_256: // llvm.x86.avx.ptestnzc.256 case Intrinsic::x86_avx_ptestz_256: // llvm.x86.avx.ptestz.256 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4)); break; case Intrinsic::x86_avx_movmsk_ps_256: // llvm.x86.avx.movmsk.ps.256 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); break; case Intrinsic::x86_avx_vtestc_ps_256: // llvm.x86.avx.vtestc.ps.256 case Intrinsic::x86_avx_vtestnzc_ps_256: // llvm.x86.avx.vtestnzc.ps.256 case Intrinsic::x86_avx_vtestz_ps_256: // llvm.x86.avx.vtestz.ps.256 ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); break; case Intrinsic::x86_mmx_pmovmskb: // llvm.x86.mmx.pmovmskb ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(Type::getX86_MMXTy(Context)); break; case Intrinsic::x86_mmx_pextr_w: // llvm.x86.mmx.pextr.w ResultTy = IntegerType::get(Context, 32); ArgTys.push_back(Type::getX86_MMXTy(Context)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::readcyclecounter: // llvm.readcyclecounter ResultTy = IntegerType::get(Context, 64); break; case Intrinsic::x86_sse42_crc32_64_64: // llvm.x86.sse42.crc32.64.64 ResultTy = IntegerType::get(Context, 64); ArgTys.push_back(IntegerType::get(Context, 64)); ArgTys.push_back(IntegerType::get(Context, 64)); break; case Intrinsic::x86_sse42_crc32_64_8: // llvm.x86.sse42.crc32.64.8 ResultTy = IntegerType::get(Context, 64); ArgTys.push_back(IntegerType::get(Context, 64)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse2_cvtsd2si64: // llvm.x86.sse2.cvtsd2si64 case Intrinsic::x86_sse2_cvttsd2si64: // llvm.x86.sse2.cvttsd2si64 ResultTy = IntegerType::get(Context, 64); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_sse41_pextrq: // llvm.x86.sse41.pextrq ResultTy = IntegerType::get(Context, 64); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse_cvtss2si64: // llvm.x86.sse.cvtss2si64 case Intrinsic::x86_sse_cvttss2si64: // llvm.x86.sse.cvttss2si64 ResultTy = IntegerType::get(Context, 64); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::eh_exception: // llvm.eh.exception case Intrinsic::eh_sjlj_lsda: // llvm.eh.sjlj.lsda case Intrinsic::stacksave: // llvm.stacksave ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8)); break; case Intrinsic::eh_dwarf_cfa: // llvm.eh.dwarf.cfa case Intrinsic::frameaddress: // llvm.frameaddress case Intrinsic::returnaddress: // llvm.returnaddress ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::adjust_trampoline: // llvm.adjust.trampoline ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8)); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::gcread: // llvm.gcread ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8)); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8)))); break; case Intrinsic::x86_sse3_ldu_dq: // llvm.x86.sse3.ldu.dq ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::x86_ssse3_pabs_b_128: // llvm.x86.ssse3.pabs.b.128 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); break; case Intrinsic::x86_sse42_pcmpestrm128: // llvm.x86.sse42.pcmpestrm128 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse2_padds_b: // llvm.x86.sse2.padds.b case Intrinsic::x86_sse2_paddus_b: // llvm.x86.sse2.paddus.b case Intrinsic::x86_sse2_pavg_b: // llvm.x86.sse2.pavg.b case Intrinsic::x86_sse2_pcmpeq_b: // llvm.x86.sse2.pcmpeq.b case Intrinsic::x86_sse2_pcmpgt_b: // llvm.x86.sse2.pcmpgt.b case Intrinsic::x86_sse2_pmaxu_b: // llvm.x86.sse2.pmaxu.b case Intrinsic::x86_sse2_pminu_b: // llvm.x86.sse2.pminu.b case Intrinsic::x86_sse2_psubs_b: // llvm.x86.sse2.psubs.b case Intrinsic::x86_sse2_psubus_b: // llvm.x86.sse2.psubus.b case Intrinsic::x86_sse41_pmaxsb: // llvm.x86.sse41.pmaxsb case Intrinsic::x86_sse41_pminsb: // llvm.x86.sse41.pminsb case Intrinsic::x86_ssse3_pshuf_b_128: // llvm.x86.ssse3.pshuf.b.128 case Intrinsic::x86_ssse3_psign_b_128: // llvm.x86.ssse3.psign.b.128 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); break; case Intrinsic::x86_sse41_mpsadbw: // llvm.x86.sse41.mpsadbw ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse42_pcmpistrm128: // llvm.x86.sse42.pcmpistrm128 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse41_pblendvb: // llvm.x86.sse41.pblendvb ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); break; case Intrinsic::x86_sse2_packsswb_128: // llvm.x86.sse2.packsswb.128 case Intrinsic::x86_sse2_packuswb_128: // llvm.x86.sse2.packuswb.128 ResultTy = VectorType::get(IntegerType::get(Context, 8), 16); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); break; case Intrinsic::x86_avx_maskload_pd: // llvm.x86.avx.maskload.pd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_sse2_sqrt_pd: // llvm.x86.sse2.sqrt.pd case Intrinsic::x86_sse2_sqrt_sd: // llvm.x86.sse2.sqrt.sd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_sse2_cvtsi2sd: // llvm.x86.sse2.cvtsi2sd case Intrinsic::x86_sse41_round_pd: // llvm.x86.sse41.round.pd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse2_cvtsi642sd: // llvm.x86.sse2.cvtsi642sd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(IntegerType::get(Context, 64)); break; case Intrinsic::x86_avx_vpermil_pd: // llvm.x86.avx.vpermil.pd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse2_add_sd: // llvm.x86.sse2.add.sd case Intrinsic::x86_sse2_div_sd: // llvm.x86.sse2.div.sd case Intrinsic::x86_sse2_max_pd: // llvm.x86.sse2.max.pd case Intrinsic::x86_sse2_max_sd: // llvm.x86.sse2.max.sd case Intrinsic::x86_sse2_min_pd: // llvm.x86.sse2.min.pd case Intrinsic::x86_sse2_min_sd: // llvm.x86.sse2.min.sd case Intrinsic::x86_sse2_mul_sd: // llvm.x86.sse2.mul.sd case Intrinsic::x86_sse2_sub_sd: // llvm.x86.sse2.sub.sd case Intrinsic::x86_sse3_addsub_pd: // llvm.x86.sse3.addsub.pd case Intrinsic::x86_sse3_hadd_pd: // llvm.x86.sse3.hadd.pd case Intrinsic::x86_sse3_hsub_pd: // llvm.x86.sse3.hsub.pd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_sse41_blendpd: // llvm.x86.sse41.blendpd case Intrinsic::x86_sse41_dppd: // llvm.x86.sse41.dppd case Intrinsic::x86_sse41_round_sd: // llvm.x86.sse41.round.sd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse2_cmp_pd: // llvm.x86.sse2.cmp.pd case Intrinsic::x86_sse2_cmp_sd: // llvm.x86.sse2.cmp.sd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse41_blendvpd: // llvm.x86.sse41.blendvpd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_avx_vpermilvar_pd: // llvm.x86.avx.vpermilvar.pd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); break; case Intrinsic::x86_sse2_cvtss2sd: // llvm.x86.sse2.cvtss2sd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_sse2_cvtps2pd: // llvm.x86.sse2.cvtps2pd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_avx_vextractf128_pd_256: // llvm.x86.avx.vextractf128.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse2_cvtdq2pd: // llvm.x86.sse2.cvtdq2pd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); break; case Intrinsic::x86_sse_cvtpi2pd: // llvm.x86.sse.cvtpi2pd ResultTy = VectorType::get(Type::getDoubleTy(Context), 2); ArgTys.push_back(Type::getX86_MMXTy(Context)); break; case Intrinsic::x86_sse41_movntdqa: // llvm.x86.sse41.movntdqa ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::x86_sse41_pmovsxbq: // llvm.x86.sse41.pmovsxbq case Intrinsic::x86_sse41_pmovzxbq: // llvm.x86.sse41.pmovzxbq ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); break; case Intrinsic::x86_sse2_psad_bw: // llvm.x86.sse2.psad.bw ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); break; case Intrinsic::x86_aesni_aesimc: // llvm.x86.aesni.aesimc ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); break; case Intrinsic::x86_sse2_psll_dq: // llvm.x86.sse2.psll.dq case Intrinsic::x86_sse2_psll_dq_bs: // llvm.x86.sse2.psll.dq.bs case Intrinsic::x86_sse2_pslli_q: // llvm.x86.sse2.pslli.q case Intrinsic::x86_sse2_psrl_dq: // llvm.x86.sse2.psrl.dq case Intrinsic::x86_sse2_psrl_dq_bs: // llvm.x86.sse2.psrl.dq.bs case Intrinsic::x86_sse2_psrli_q: // llvm.x86.sse2.psrli.q ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_aesni_aeskeygenassist: // llvm.x86.aesni.aeskeygenassist ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_aesni_aesdec: // llvm.x86.aesni.aesdec case Intrinsic::x86_aesni_aesdeclast: // llvm.x86.aesni.aesdeclast case Intrinsic::x86_aesni_aesenc: // llvm.x86.aesni.aesenc case Intrinsic::x86_aesni_aesenclast: // llvm.x86.aesni.aesenclast case Intrinsic::x86_sse2_psll_q: // llvm.x86.sse2.psll.q case Intrinsic::x86_sse2_psrl_q: // llvm.x86.sse2.psrl.q case Intrinsic::x86_sse41_pcmpeqq: // llvm.x86.sse41.pcmpeqq case Intrinsic::x86_sse42_pcmpgtq: // llvm.x86.sse42.pcmpgtq ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2)); break; case Intrinsic::x86_sse41_pmovsxdq: // llvm.x86.sse41.pmovsxdq case Intrinsic::x86_sse41_pmovzxdq: // llvm.x86.sse41.pmovzxdq ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); break; case Intrinsic::x86_sse2_pmulu_dq: // llvm.x86.sse2.pmulu.dq case Intrinsic::x86_sse41_pmuldq: // llvm.x86.sse41.pmuldq ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); break; case Intrinsic::x86_sse41_pmovsxwq: // llvm.x86.sse41.pmovsxwq case Intrinsic::x86_sse41_pmovzxwq: // llvm.x86.sse41.pmovzxwq ResultTy = VectorType::get(IntegerType::get(Context, 64), 2); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); break; case Intrinsic::x86_avx_ldu_dq_256: // llvm.x86.avx.ldu.dq.256 case Intrinsic::x86_avx_loadu_dq_256: // llvm.x86.avx.loadu.dq.256 ResultTy = VectorType::get(IntegerType::get(Context, 8), 32); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::x86_avx_vbroadcastss: // llvm.x86.avx.vbroadcastss ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::x86_avx_maskload_ps: // llvm.x86.avx.maskload.ps ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_sse2_cvtpd2ps: // llvm.x86.sse2.cvtpd2ps ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_sse_rcp_ps: // llvm.x86.sse.rcp.ps case Intrinsic::x86_sse_rcp_ss: // llvm.x86.sse.rcp.ss case Intrinsic::x86_sse_rsqrt_ps: // llvm.x86.sse.rsqrt.ps case Intrinsic::x86_sse_rsqrt_ss: // llvm.x86.sse.rsqrt.ss case Intrinsic::x86_sse_sqrt_ps: // llvm.x86.sse.sqrt.ps case Intrinsic::x86_sse_sqrt_ss: // llvm.x86.sse.sqrt.ss ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_sse41_round_ps: // llvm.x86.sse41.round.ps case Intrinsic::x86_sse_cvtsi2ss: // llvm.x86.sse.cvtsi2ss ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse_cvtsi642ss: // llvm.x86.sse.cvtsi642ss ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 64)); break; case Intrinsic::x86_avx_vpermil_ps: // llvm.x86.avx.vpermil.ps ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse2_cvtsd2ss: // llvm.x86.sse2.cvtsd2ss ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_sse3_addsub_ps: // llvm.x86.sse3.addsub.ps case Intrinsic::x86_sse3_hadd_ps: // llvm.x86.sse3.hadd.ps case Intrinsic::x86_sse3_hsub_ps: // llvm.x86.sse3.hsub.ps case Intrinsic::x86_sse_add_ss: // llvm.x86.sse.add.ss case Intrinsic::x86_sse_div_ss: // llvm.x86.sse.div.ss case Intrinsic::x86_sse_max_ps: // llvm.x86.sse.max.ps case Intrinsic::x86_sse_max_ss: // llvm.x86.sse.max.ss case Intrinsic::x86_sse_min_ps: // llvm.x86.sse.min.ps case Intrinsic::x86_sse_min_ss: // llvm.x86.sse.min.ss case Intrinsic::x86_sse_mul_ss: // llvm.x86.sse.mul.ss case Intrinsic::x86_sse_sub_ss: // llvm.x86.sse.sub.ss ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_sse41_blendps: // llvm.x86.sse41.blendps case Intrinsic::x86_sse41_dpps: // llvm.x86.sse41.dpps case Intrinsic::x86_sse41_insertps: // llvm.x86.sse41.insertps case Intrinsic::x86_sse41_round_ss: // llvm.x86.sse41.round.ss ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse_cmp_ps: // llvm.x86.sse.cmp.ps case Intrinsic::x86_sse_cmp_ss: // llvm.x86.sse.cmp.ss ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse41_blendvps: // llvm.x86.sse41.blendvps ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_avx_vpermilvar_ps: // llvm.x86.avx.vpermilvar.ps ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); break; case Intrinsic::x86_sse_cvtpi2ps: // llvm.x86.sse.cvtpi2ps ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(Type::getX86_MMXTy(Context)); break; case Intrinsic::x86_avx_cvt_pd2_ps_256: // llvm.x86.avx.cvt.pd2.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); break; case Intrinsic::x86_sse2_cvtdq2ps: // llvm.x86.sse2.cvtdq2ps ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); break; case Intrinsic::x86_avx_vextractf128_ps_256: // llvm.x86.avx.vextractf128.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_avx_loadu_pd_256: // llvm.x86.avx.loadu.pd.256 case Intrinsic::x86_avx_vbroadcast_sd_256: // llvm.x86.avx.vbroadcast.sd.256 case Intrinsic::x86_avx_vbroadcastf128_pd_256: // llvm.x86.avx.vbroadcastf128.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::x86_avx_maskload_pd_256: // llvm.x86.avx.maskload.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); break; case Intrinsic::x86_avx_cvt_ps2_pd_256: // llvm.x86.avx.cvt.ps2.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_avx_sqrt_pd_256: // llvm.x86.avx.sqrt.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); break; case Intrinsic::x86_avx_round_pd_256: // llvm.x86.avx.round.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_avx_vpermil_pd_256: // llvm.x86.avx.vpermil.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_avx_vinsertf128_pd_256: // llvm.x86.avx.vinsertf128.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_avx_addsub_pd_256: // llvm.x86.avx.addsub.pd.256 case Intrinsic::x86_avx_hadd_pd_256: // llvm.x86.avx.hadd.pd.256 case Intrinsic::x86_avx_hsub_pd_256: // llvm.x86.avx.hsub.pd.256 case Intrinsic::x86_avx_max_pd_256: // llvm.x86.avx.max.pd.256 case Intrinsic::x86_avx_min_pd_256: // llvm.x86.avx.min.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); break; case Intrinsic::x86_avx_blend_pd_256: // llvm.x86.avx.blend.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_avx_cmp_pd_256: // llvm.x86.avx.cmp.pd.256 case Intrinsic::x86_avx_vperm2f128_pd_256: // llvm.x86.avx.vperm2f128.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_avx_blendv_pd_256: // llvm.x86.avx.blendv.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); break; case Intrinsic::x86_avx_vpermilvar_pd_256: // llvm.x86.avx.vpermilvar.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4)); break; case Intrinsic::x86_avx_cvtdq2_pd_256: // llvm.x86.avx.cvtdq2.pd.256 ResultTy = VectorType::get(Type::getDoubleTy(Context), 4); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); break; case Intrinsic::x86_sse41_pmovsxbd: // llvm.x86.sse41.pmovsxbd case Intrinsic::x86_sse41_pmovzxbd: // llvm.x86.sse41.pmovzxbd ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); break; case Intrinsic::x86_sse2_cvtpd2dq: // llvm.x86.sse2.cvtpd2dq case Intrinsic::x86_sse2_cvttpd2dq: // llvm.x86.sse2.cvttpd2dq ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_sse2_cvtps2dq: // llvm.x86.sse2.cvtps2dq case Intrinsic::x86_sse2_cvttps2dq: // llvm.x86.sse2.cvttps2dq ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_avx_cvt_pd2dq_256: // llvm.x86.avx.cvt.pd2dq.256 case Intrinsic::x86_avx_cvtt_pd2dq_256: // llvm.x86.avx.cvtt.pd2dq.256 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4)); break; case Intrinsic::x86_ssse3_pabs_d_128: // llvm.x86.ssse3.pabs.d.128 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); break; case Intrinsic::x86_sse2_pslli_d: // llvm.x86.sse2.pslli.d case Intrinsic::x86_sse2_psrai_d: // llvm.x86.sse2.psrai.d case Intrinsic::x86_sse2_psrli_d: // llvm.x86.sse2.psrli.d ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse2_pcmpeq_d: // llvm.x86.sse2.pcmpeq.d case Intrinsic::x86_sse2_pcmpgt_d: // llvm.x86.sse2.pcmpgt.d case Intrinsic::x86_sse2_psll_d: // llvm.x86.sse2.psll.d case Intrinsic::x86_sse2_psra_d: // llvm.x86.sse2.psra.d case Intrinsic::x86_sse2_psrl_d: // llvm.x86.sse2.psrl.d case Intrinsic::x86_sse41_pmaxsd: // llvm.x86.sse41.pmaxsd case Intrinsic::x86_sse41_pmaxud: // llvm.x86.sse41.pmaxud case Intrinsic::x86_sse41_pminsd: // llvm.x86.sse41.pminsd case Intrinsic::x86_sse41_pminud: // llvm.x86.sse41.pminud case Intrinsic::x86_ssse3_phadd_d_128: // llvm.x86.ssse3.phadd.d.128 case Intrinsic::x86_ssse3_phadd_sw_128: // llvm.x86.ssse3.phadd.sw.128 case Intrinsic::x86_ssse3_phsub_d_128: // llvm.x86.ssse3.phsub.d.128 case Intrinsic::x86_ssse3_psign_d_128: // llvm.x86.ssse3.psign.d.128 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); break; case Intrinsic::x86_sse41_pmovsxwd: // llvm.x86.sse41.pmovsxwd case Intrinsic::x86_sse41_pmovzxwd: // llvm.x86.sse41.pmovzxwd ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); break; case Intrinsic::x86_sse2_pmadd_wd: // llvm.x86.sse2.pmadd.wd ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); break; case Intrinsic::x86_avx_vextractf128_si_256: // llvm.x86.avx.vextractf128.si.256 ResultTy = VectorType::get(IntegerType::get(Context, 32), 4); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_avx_loadu_ps_256: // llvm.x86.avx.loadu.ps.256 case Intrinsic::x86_avx_vbroadcastf128_ps_256: // llvm.x86.avx.vbroadcastf128.ps.256 case Intrinsic::x86_avx_vbroadcastss_256: // llvm.x86.avx.vbroadcastss.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); break; case Intrinsic::x86_avx_maskload_ps_256: // llvm.x86.avx.maskload.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8))); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); break; case Intrinsic::x86_avx_rcp_ps_256: // llvm.x86.avx.rcp.ps.256 case Intrinsic::x86_avx_rsqrt_ps_256: // llvm.x86.avx.rsqrt.ps.256 case Intrinsic::x86_avx_sqrt_ps_256: // llvm.x86.avx.sqrt.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); break; case Intrinsic::x86_avx_round_ps_256: // llvm.x86.avx.round.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_avx_vpermil_ps_256: // llvm.x86.avx.vpermil.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_avx_vinsertf128_ps_256: // llvm.x86.avx.vinsertf128.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_avx_addsub_ps_256: // llvm.x86.avx.addsub.ps.256 case Intrinsic::x86_avx_hadd_ps_256: // llvm.x86.avx.hadd.ps.256 case Intrinsic::x86_avx_hsub_ps_256: // llvm.x86.avx.hsub.ps.256 case Intrinsic::x86_avx_max_ps_256: // llvm.x86.avx.max.ps.256 case Intrinsic::x86_avx_min_ps_256: // llvm.x86.avx.min.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); break; case Intrinsic::x86_avx_blend_ps_256: // llvm.x86.avx.blend.ps.256 case Intrinsic::x86_avx_dp_ps_256: // llvm.x86.avx.dp.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_avx_cmp_ps_256: // llvm.x86.avx.cmp.ps.256 case Intrinsic::x86_avx_vperm2f128_ps_256: // llvm.x86.avx.vperm2f128.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_avx_blendv_ps_256: // llvm.x86.avx.blendv.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); break; case Intrinsic::x86_avx_vpermilvar_ps_256: // llvm.x86.avx.vpermilvar.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); break; case Intrinsic::x86_avx_cvtdq2_ps_256: // llvm.x86.avx.cvtdq2.ps.256 ResultTy = VectorType::get(Type::getFloatTy(Context), 8); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); break; case Intrinsic::x86_sse41_pmovsxbw: // llvm.x86.sse41.pmovsxbw case Intrinsic::x86_sse41_pmovzxbw: // llvm.x86.sse41.pmovzxbw ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16)); break; case Intrinsic::x86_sse2_packssdw_128: // llvm.x86.sse2.packssdw.128 case Intrinsic::x86_sse41_packusdw: // llvm.x86.sse41.packusdw ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); break; case Intrinsic::x86_sse41_phminposuw: // llvm.x86.sse41.phminposuw case Intrinsic::x86_ssse3_pabs_w_128: // llvm.x86.ssse3.pabs.w.128 ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); break; case Intrinsic::x86_sse2_pslli_w: // llvm.x86.sse2.pslli.w case Intrinsic::x86_sse2_psrai_w: // llvm.x86.sse2.psrai.w case Intrinsic::x86_sse2_psrli_w: // llvm.x86.sse2.psrli.w ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse2_padds_w: // llvm.x86.sse2.padds.w case Intrinsic::x86_sse2_paddus_w: // llvm.x86.sse2.paddus.w case Intrinsic::x86_sse2_pavg_w: // llvm.x86.sse2.pavg.w case Intrinsic::x86_sse2_pcmpeq_w: // llvm.x86.sse2.pcmpeq.w case Intrinsic::x86_sse2_pcmpgt_w: // llvm.x86.sse2.pcmpgt.w case Intrinsic::x86_sse2_pmaxs_w: // llvm.x86.sse2.pmaxs.w case Intrinsic::x86_sse2_pmins_w: // llvm.x86.sse2.pmins.w case Intrinsic::x86_sse2_pmulh_w: // llvm.x86.sse2.pmulh.w case Intrinsic::x86_sse2_pmulhu_w: // llvm.x86.sse2.pmulhu.w case Intrinsic::x86_sse2_psll_w: // llvm.x86.sse2.psll.w case Intrinsic::x86_sse2_psra_w: // llvm.x86.sse2.psra.w case Intrinsic::x86_sse2_psrl_w: // llvm.x86.sse2.psrl.w case Intrinsic::x86_sse2_psubs_w: // llvm.x86.sse2.psubs.w case Intrinsic::x86_sse2_psubus_w: // llvm.x86.sse2.psubus.w case Intrinsic::x86_sse41_pmaxuw: // llvm.x86.sse41.pmaxuw case Intrinsic::x86_sse41_pminuw: // llvm.x86.sse41.pminuw case Intrinsic::x86_ssse3_phadd_w_128: // llvm.x86.ssse3.phadd.w.128 case Intrinsic::x86_ssse3_phsub_sw_128: // llvm.x86.ssse3.phsub.sw.128 case Intrinsic::x86_ssse3_phsub_w_128: // llvm.x86.ssse3.phsub.w.128 case Intrinsic::x86_ssse3_pmadd_ub_sw_128: // llvm.x86.ssse3.pmadd.ub.sw.128 case Intrinsic::x86_ssse3_pmul_hr_sw_128: // llvm.x86.ssse3.pmul.hr.sw.128 case Intrinsic::x86_ssse3_psign_w_128: // llvm.x86.ssse3.psign.w.128 ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); break; case Intrinsic::x86_sse41_pblendw: // llvm.x86.sse41.pblendw ResultTy = VectorType::get(IntegerType::get(Context, 16), 8); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_avx_cvt_ps2dq_256: // llvm.x86.avx.cvt.ps2dq.256 case Intrinsic::x86_avx_cvtt_ps2dq_256: // llvm.x86.avx.cvtt.ps2dq.256 ResultTy = VectorType::get(IntegerType::get(Context, 32), 8); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8)); break; case Intrinsic::x86_avx_vinsertf128_si_256: // llvm.x86.avx.vinsertf128.si.256 ResultTy = VectorType::get(IntegerType::get(Context, 32), 8); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_avx_vperm2f128_si_256: // llvm.x86.avx.vperm2f128.si.256 ResultTy = VectorType::get(IntegerType::get(Context, 32), 8); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_sse_cvtpd2pi: // llvm.x86.sse.cvtpd2pi case Intrinsic::x86_sse_cvttpd2pi: // llvm.x86.sse.cvttpd2pi ResultTy = Type::getX86_MMXTy(Context); ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2)); break; case Intrinsic::x86_sse_cvtps2pi: // llvm.x86.sse.cvtps2pi case Intrinsic::x86_sse_cvttps2pi: // llvm.x86.sse.cvttps2pi ResultTy = Type::getX86_MMXTy(Context); ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4)); break; case Intrinsic::x86_3dnow_pf2id: // llvm.x86.3dnow.pf2id case Intrinsic::x86_3dnow_pfrcp: // llvm.x86.3dnow.pfrcp case Intrinsic::x86_3dnow_pfrsqrt: // llvm.x86.3dnow.pfrsqrt case Intrinsic::x86_3dnow_pi2fd: // llvm.x86.3dnow.pi2fd case Intrinsic::x86_3dnowa_pf2iw: // llvm.x86.3dnowa.pf2iw case Intrinsic::x86_3dnowa_pi2fw: // llvm.x86.3dnowa.pi2fw case Intrinsic::x86_3dnowa_pswapd: // llvm.x86.3dnowa.pswapd case Intrinsic::x86_ssse3_pabs_b: // llvm.x86.ssse3.pabs.b case Intrinsic::x86_ssse3_pabs_d: // llvm.x86.ssse3.pabs.d case Intrinsic::x86_ssse3_pabs_w: // llvm.x86.ssse3.pabs.w ResultTy = Type::getX86_MMXTy(Context); ArgTys.push_back(Type::getX86_MMXTy(Context)); break; case Intrinsic::x86_mmx_pslli_d: // llvm.x86.mmx.pslli.d case Intrinsic::x86_mmx_pslli_q: // llvm.x86.mmx.pslli.q case Intrinsic::x86_mmx_pslli_w: // llvm.x86.mmx.pslli.w case Intrinsic::x86_mmx_psrai_d: // llvm.x86.mmx.psrai.d case Intrinsic::x86_mmx_psrai_w: // llvm.x86.mmx.psrai.w case Intrinsic::x86_mmx_psrli_d: // llvm.x86.mmx.psrli.d case Intrinsic::x86_mmx_psrli_q: // llvm.x86.mmx.psrli.q case Intrinsic::x86_mmx_psrli_w: // llvm.x86.mmx.psrli.w ResultTy = Type::getX86_MMXTy(Context); ArgTys.push_back(Type::getX86_MMXTy(Context)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_mmx_pinsr_w: // llvm.x86.mmx.pinsr.w ResultTy = Type::getX86_MMXTy(Context); ArgTys.push_back(Type::getX86_MMXTy(Context)); ArgTys.push_back(IntegerType::get(Context, 32)); ArgTys.push_back(IntegerType::get(Context, 32)); break; case Intrinsic::x86_sse_pshuf_w: // llvm.x86.sse.pshuf.w ResultTy = Type::getX86_MMXTy(Context); ArgTys.push_back(Type::getX86_MMXTy(Context)); ArgTys.push_back(IntegerType::get(Context, 8)); break; case Intrinsic::x86_3dnow_pavgusb: // llvm.x86.3dnow.pavgusb case Intrinsic::x86_3dnow_pfacc: // llvm.x86.3dnow.pfacc case Intrinsic::x86_3dnow_pfadd: // llvm.x86.3dnow.pfadd case Intrinsic::x86_3dnow_pfcmpeq: // llvm.x86.3dnow.pfcmpeq case Intrinsic::x86_3dnow_pfcmpge: // llvm.x86.3dnow.pfcmpge case Intrinsic::x86_3dnow_pfcmpgt: // llvm.x86.3dnow.pfcmpgt case Intrinsic::x86_3dnow_pfmax: // llvm.x86.3dnow.pfmax case Intrinsic::x86_3dnow_pfmin: // llvm.x86.3dnow.pfmin case Intrinsic::x86_3dnow_pfmul: // llvm.x86.3dnow.pfmul case Intrinsic::x86_3dnow_pfrcpit1: // llvm.x86.3dnow.pfrcpit1 case Intrinsic::x86_3dnow_pfrcpit2: // llvm.x86.3dnow.pfrcpit2 case Intrinsic::x86_3dnow_pfrsqit1: // llvm.x86.3dnow.pfrsqit1 case Intrinsic::x86_3dnow_pfsub: // llvm.x86.3dnow.pfsub case Intrinsic::x86_3dnow_pfsubr: // llvm.x86.3dnow.pfsubr case Intrinsic::x86_3dnow_pmulhrw: // llvm.x86.3dnow.pmulhrw case Intrinsic::x86_3dnowa_pfnacc: // llvm.x86.3dnowa.pfnacc case Intrinsic::x86_3dnowa_pfpnacc: // llvm.x86.3dnowa.pfpnacc case Intrinsic::x86_mmx_packssdw: // llvm.x86.mmx.packssdw case Intrinsic::x86_mmx_packsswb: // llvm.x86.mmx.packsswb case Intrinsic::x86_mmx_packuswb: // llvm.x86.mmx.packuswb case Intrinsic::x86_mmx_padd_b: // llvm.x86.mmx.padd.b case Intrinsic::x86_mmx_padd_d: // llvm.x86.mmx.padd.d case Intrinsic::x86_mmx_padd_q: // llvm.x86.mmx.padd.q case Intrinsic::x86_mmx_padd_w: // llvm.x86.mmx.padd.w case Intrinsic::x86_mmx_padds_b: // llvm.x86.mmx.padds.b case Intrinsic::x86_mmx_padds_w: // llvm.x86.mmx.padds.w case Intrinsic::x86_mmx_paddus_b: // llvm.x86.mmx.paddus.b case Intrinsic::x86_mmx_paddus_w: // llvm.x86.mmx.paddus.w case Intrinsic::x86_mmx_pand: // llvm.x86.mmx.pand case Intrinsic::x86_mmx_pandn: // llvm.x86.mmx.pandn case Intrinsic::x86_mmx_pavg_b: // llvm.x86.mmx.pavg.b case Intrinsic::x86_mmx_pavg_w: // llvm.x86.mmx.pavg.w case Intrinsic::x86_mmx_pcmpeq_b: // llvm.x86.mmx.pcmpeq.b case Intrinsic::x86_mmx_pcmpeq_d: // llvm.x86.mmx.pcmpeq.d case Intrinsic::x86_mmx_pcmpeq_w: // llvm.x86.mmx.pcmpeq.w case Intrinsic::x86_mmx_pcmpgt_b: // llvm.x86.mmx.pcmpgt.b case Intrinsic::x86_mmx_pcmpgt_d: // llvm.x86.mmx.pcmpgt.d case Intrinsic::x86_mmx_pcmpgt_w: // llvm.x86.mmx.pcmpgt.w case Intrinsic::x86_mmx_pmadd_wd: // llvm.x86.mmx.pmadd.wd case Intrinsic::x86_mmx_pmaxs_w: // llvm.x86.mmx.pmaxs.w case Intrinsic::x86_mmx_pmaxu_b: // llvm.x86.mmx.pmaxu.b case Intrinsic::x86_mmx_pmins_w: // llvm.x86.mmx.pmins.w case Intrinsic::x86_mmx_pminu_b: // llvm.x86.mmx.pminu.b case Intrinsic::x86_mmx_pmulh_w: // llvm.x86.mmx.pmulh.w case Intrinsic::x86_mmx_pmulhu_w: // llvm.x86.mmx.pmulhu.w case Intrinsic::x86_mmx_pmull_w: // llvm.x86.mmx.pmull.w case Intrinsic::x86_mmx_pmulu_dq: // llvm.x86.mmx.pmulu.dq case Intrinsic::x86_mmx_por: // llvm.x86.mmx.por case Intrinsic::x86_mmx_psad_bw: // llvm.x86.mmx.psad.bw case Intrinsic::x86_mmx_psll_d: // llvm.x86.mmx.psll.d case Intrinsic::x86_mmx_psll_q: // llvm.x86.mmx.psll.q case Intrinsic::x86_mmx_psll_w: // llvm.x86.mmx.psll.w case Intrinsic::x86_mmx_psra_d: // llvm.x86.mmx.psra.d case Intrinsic::x86_mmx_psra_w: // llvm.x86.mmx.psra.w case Intrinsic::x86_mmx_psrl_d: // llvm.x86.mmx.psrl.d case Intrinsic::x86_mmx_psrl_q: // llvm.x86.mmx.psrl.q case Intrinsic::x86_mmx_psrl_w: // llvm.x86.mmx.psrl.w case Intrinsic::x86_mmx_psub_b: // llvm.x86.mmx.psub.b case Intrinsic::x86_mmx_psub_d: // llvm.x86.mmx.psub.d case Intrinsic::x86_mmx_psub_q: // llvm.x86.mmx.psub.q case Intrinsic::x86_mmx_psub_w: // llvm.x86.mmx.psub.w case Intrinsic::x86_mmx_psubs_b: // llvm.x86.mmx.psubs.b case Intrinsic::x86_mmx_psubs_w: // llvm.x86.mmx.psubs.w case Intrinsic::x86_mmx_psubus_b: // llvm.x86.mmx.psubus.b case Intrinsic::x86_mmx_psubus_w: // llvm.x86.mmx.psubus.w case Intrinsic::x86_mmx_punpckhbw: // llvm.x86.mmx.punpckhbw case Intrinsic::x86_mmx_punpckhdq: // llvm.x86.mmx.punpckhdq case Intrinsic::x86_mmx_punpckhwd: // llvm.x86.mmx.punpckhwd case Intrinsic::x86_mmx_punpcklbw: // llvm.x86.mmx.punpcklbw case Intrinsic::x86_mmx_punpckldq: // llvm.x86.mmx.punpckldq case Intrinsic::x86_mmx_punpcklwd: // llvm.x86.mmx.punpcklwd case Intrinsic::x86_mmx_pxor: // llvm.x86.mmx.pxor case Intrinsic::x86_ssse3_phadd_d: // llvm.x86.ssse3.phadd.d case Intrinsic::x86_ssse3_phadd_sw: // llvm.x86.ssse3.phadd.sw case Intrinsic::x86_ssse3_phadd_w: // llvm.x86.ssse3.phadd.w case Intrinsic::x86_ssse3_phsub_d: // llvm.x86.ssse3.phsub.d case Intrinsic::x86_ssse3_phsub_sw: // llvm.x86.ssse3.phsub.sw case Intrinsic::x86_ssse3_phsub_w: // llvm.x86.ssse3.phsub.w case Intrinsic::x86_ssse3_pmadd_ub_sw: // llvm.x86.ssse3.pmadd.ub.sw case Intrinsic::x86_ssse3_pmul_hr_sw: // llvm.x86.ssse3.pmul.hr.sw case Intrinsic::x86_ssse3_pshuf_b: // llvm.x86.ssse3.pshuf.b case Intrinsic::x86_ssse3_psign_b: // llvm.x86.ssse3.psign.b case Intrinsic::x86_ssse3_psign_d: // llvm.x86.ssse3.psign.d case Intrinsic::x86_ssse3_psign_w: // llvm.x86.ssse3.psign.w ResultTy = Type::getX86_MMXTy(Context); ArgTys.push_back(Type::getX86_MMXTy(Context)); ArgTys.push_back(Type::getX86_MMXTy(Context)); break; case Intrinsic::x86_mmx_palignr_b: // llvm.x86.mmx.palignr.b ResultTy = Type::getX86_MMXTy(Context); ArgTys.push_back(Type::getX86_MMXTy(Context)); ArgTys.push_back(Type::getX86_MMXTy(Context)); ArgTys.push_back(IntegerType::get(Context, 8)); break; } #endif // Add parameter attributes that are not common to all intrinsics. #ifdef GET_INTRINSIC_ATTRIBUTES AttrListPtr Intrinsic::getAttributes(ID id) { AttributeWithIndex AWI[3]; unsigned NumAttrs = 0; switch (id) { default: break; case Intrinsic::bswap: case Intrinsic::convert_from_fp16: case Intrinsic::convert_to_fp16: case Intrinsic::ctlz: case Intrinsic::ctpop: case Intrinsic::cttz: case Intrinsic::dbg_declare: case Intrinsic::dbg_value: case Intrinsic::eh_sjlj_callsite: case Intrinsic::eh_sjlj_lsda: case Intrinsic::eh_typeid_for: case Intrinsic::expect: case Intrinsic::fma: case Intrinsic::frameaddress: case Intrinsic::objectsize: case Intrinsic::returnaddress: case Intrinsic::sadd_with_overflow: case Intrinsic::smul_with_overflow: case Intrinsic::ssub_with_overflow: case Intrinsic::uadd_with_overflow: case Intrinsic::umul_with_overflow: case Intrinsic::usub_with_overflow: case Intrinsic::x86_3dnow_pavgusb: case Intrinsic::x86_3dnow_pf2id: case Intrinsic::x86_3dnow_pfacc: case Intrinsic::x86_3dnow_pfadd: case Intrinsic::x86_3dnow_pfcmpeq: case Intrinsic::x86_3dnow_pfcmpge: case Intrinsic::x86_3dnow_pfcmpgt: case Intrinsic::x86_3dnow_pfmax: case Intrinsic::x86_3dnow_pfmin: case Intrinsic::x86_3dnow_pfmul: case Intrinsic::x86_3dnow_pfrcp: case Intrinsic::x86_3dnow_pfrcpit1: case Intrinsic::x86_3dnow_pfrcpit2: case Intrinsic::x86_3dnow_pfrsqit1: case Intrinsic::x86_3dnow_pfrsqrt: case Intrinsic::x86_3dnow_pfsub: case Intrinsic::x86_3dnow_pfsubr: case Intrinsic::x86_3dnow_pi2fd: case Intrinsic::x86_3dnow_pmulhrw: case Intrinsic::x86_3dnowa_pf2iw: case Intrinsic::x86_3dnowa_pfnacc: case Intrinsic::x86_3dnowa_pfpnacc: case Intrinsic::x86_3dnowa_pi2fw: case Intrinsic::x86_3dnowa_pswapd: case Intrinsic::x86_aesni_aesdec: case Intrinsic::x86_aesni_aesdeclast: case Intrinsic::x86_aesni_aesenc: case Intrinsic::x86_aesni_aesenclast: case Intrinsic::x86_aesni_aesimc: case Intrinsic::x86_aesni_aeskeygenassist: case Intrinsic::x86_avx_addsub_pd_256: case Intrinsic::x86_avx_addsub_ps_256: case Intrinsic::x86_avx_blend_pd_256: case Intrinsic::x86_avx_blend_ps_256: case Intrinsic::x86_avx_blendv_pd_256: case Intrinsic::x86_avx_blendv_ps_256: case Intrinsic::x86_avx_cmp_pd_256: case Intrinsic::x86_avx_cmp_ps_256: case Intrinsic::x86_avx_cvt_pd2_ps_256: case Intrinsic::x86_avx_cvt_pd2dq_256: case Intrinsic::x86_avx_cvt_ps2_pd_256: case Intrinsic::x86_avx_cvt_ps2dq_256: case Intrinsic::x86_avx_cvtdq2_pd_256: case Intrinsic::x86_avx_cvtdq2_ps_256: case Intrinsic::x86_avx_cvtt_pd2dq_256: case Intrinsic::x86_avx_cvtt_ps2dq_256: case Intrinsic::x86_avx_dp_ps_256: case Intrinsic::x86_avx_hadd_pd_256: case Intrinsic::x86_avx_hadd_ps_256: case Intrinsic::x86_avx_hsub_pd_256: case Intrinsic::x86_avx_hsub_ps_256: case Intrinsic::x86_avx_max_pd_256: case Intrinsic::x86_avx_max_ps_256: case Intrinsic::x86_avx_min_pd_256: case Intrinsic::x86_avx_min_ps_256: case Intrinsic::x86_avx_movmsk_pd_256: case Intrinsic::x86_avx_movmsk_ps_256: case Intrinsic::x86_avx_ptestc_256: case Intrinsic::x86_avx_ptestnzc_256: case Intrinsic::x86_avx_ptestz_256: case Intrinsic::x86_avx_rcp_ps_256: case Intrinsic::x86_avx_round_pd_256: case Intrinsic::x86_avx_round_ps_256: case Intrinsic::x86_avx_rsqrt_ps_256: case Intrinsic::x86_avx_sqrt_pd_256: case Intrinsic::x86_avx_sqrt_ps_256: case Intrinsic::x86_avx_vextractf128_pd_256: case Intrinsic::x86_avx_vextractf128_ps_256: case Intrinsic::x86_avx_vextractf128_si_256: case Intrinsic::x86_avx_vinsertf128_pd_256: case Intrinsic::x86_avx_vinsertf128_ps_256: case Intrinsic::x86_avx_vinsertf128_si_256: case Intrinsic::x86_avx_vperm2f128_pd_256: case Intrinsic::x86_avx_vperm2f128_ps_256: case Intrinsic::x86_avx_vperm2f128_si_256: case Intrinsic::x86_avx_vpermil_pd: case Intrinsic::x86_avx_vpermil_pd_256: case Intrinsic::x86_avx_vpermil_ps: case Intrinsic::x86_avx_vpermil_ps_256: case Intrinsic::x86_avx_vpermilvar_pd: case Intrinsic::x86_avx_vpermilvar_pd_256: case Intrinsic::x86_avx_vpermilvar_ps: case Intrinsic::x86_avx_vpermilvar_ps_256: case Intrinsic::x86_avx_vtestc_pd: case Intrinsic::x86_avx_vtestc_pd_256: case Intrinsic::x86_avx_vtestc_ps: case Intrinsic::x86_avx_vtestc_ps_256: case Intrinsic::x86_avx_vtestnzc_pd: case Intrinsic::x86_avx_vtestnzc_pd_256: case Intrinsic::x86_avx_vtestnzc_ps: case Intrinsic::x86_avx_vtestnzc_ps_256: case Intrinsic::x86_avx_vtestz_pd: case Intrinsic::x86_avx_vtestz_pd_256: case Intrinsic::x86_avx_vtestz_ps: case Intrinsic::x86_avx_vtestz_ps_256: case Intrinsic::x86_mmx_packssdw: case Intrinsic::x86_mmx_packsswb: case Intrinsic::x86_mmx_packuswb: case Intrinsic::x86_mmx_padd_b: case Intrinsic::x86_mmx_padd_d: case Intrinsic::x86_mmx_padd_q: case Intrinsic::x86_mmx_padd_w: case Intrinsic::x86_mmx_padds_b: case Intrinsic::x86_mmx_padds_w: case Intrinsic::x86_mmx_paddus_b: case Intrinsic::x86_mmx_paddus_w: case Intrinsic::x86_mmx_palignr_b: case Intrinsic::x86_mmx_pand: case Intrinsic::x86_mmx_pandn: case Intrinsic::x86_mmx_pavg_b: case Intrinsic::x86_mmx_pavg_w: case Intrinsic::x86_mmx_pcmpeq_b: case Intrinsic::x86_mmx_pcmpeq_d: case Intrinsic::x86_mmx_pcmpeq_w: case Intrinsic::x86_mmx_pcmpgt_b: case Intrinsic::x86_mmx_pcmpgt_d: case Intrinsic::x86_mmx_pcmpgt_w: case Intrinsic::x86_mmx_pextr_w: case Intrinsic::x86_mmx_pinsr_w: case Intrinsic::x86_mmx_pmadd_wd: case Intrinsic::x86_mmx_pmaxs_w: case Intrinsic::x86_mmx_pmaxu_b: case Intrinsic::x86_mmx_pmins_w: case Intrinsic::x86_mmx_pminu_b: case Intrinsic::x86_mmx_pmovmskb: case Intrinsic::x86_mmx_pmulh_w: case Intrinsic::x86_mmx_pmulhu_w: case Intrinsic::x86_mmx_pmull_w: case Intrinsic::x86_mmx_pmulu_dq: case Intrinsic::x86_mmx_por: case Intrinsic::x86_mmx_psad_bw: case Intrinsic::x86_mmx_psll_d: case Intrinsic::x86_mmx_psll_q: case Intrinsic::x86_mmx_psll_w: case Intrinsic::x86_mmx_pslli_d: case Intrinsic::x86_mmx_pslli_q: case Intrinsic::x86_mmx_pslli_w: case Intrinsic::x86_mmx_psra_d: case Intrinsic::x86_mmx_psra_w: case Intrinsic::x86_mmx_psrai_d: case Intrinsic::x86_mmx_psrai_w: case Intrinsic::x86_mmx_psrl_d: case Intrinsic::x86_mmx_psrl_q: case Intrinsic::x86_mmx_psrl_w: case Intrinsic::x86_mmx_psrli_d: case Intrinsic::x86_mmx_psrli_q: case Intrinsic::x86_mmx_psrli_w: case Intrinsic::x86_mmx_psub_b: case Intrinsic::x86_mmx_psub_d: case Intrinsic::x86_mmx_psub_q: case Intrinsic::x86_mmx_psub_w: case Intrinsic::x86_mmx_psubs_b: case Intrinsic::x86_mmx_psubs_w: case Intrinsic::x86_mmx_psubus_b: case Intrinsic::x86_mmx_psubus_w: case Intrinsic::x86_mmx_punpckhbw: case Intrinsic::x86_mmx_punpckhdq: case Intrinsic::x86_mmx_punpckhwd: case Intrinsic::x86_mmx_punpcklbw: case Intrinsic::x86_mmx_punpckldq: case Intrinsic::x86_mmx_punpcklwd: case Intrinsic::x86_mmx_pxor: case Intrinsic::x86_sse2_add_sd: case Intrinsic::x86_sse2_cmp_pd: case Intrinsic::x86_sse2_cmp_sd: case Intrinsic::x86_sse2_comieq_sd: case Intrinsic::x86_sse2_comige_sd: case Intrinsic::x86_sse2_comigt_sd: case Intrinsic::x86_sse2_comile_sd: case Intrinsic::x86_sse2_comilt_sd: case Intrinsic::x86_sse2_comineq_sd: case Intrinsic::x86_sse2_cvtdq2pd: case Intrinsic::x86_sse2_cvtdq2ps: case Intrinsic::x86_sse2_cvtpd2dq: case Intrinsic::x86_sse2_cvtpd2ps: case Intrinsic::x86_sse2_cvtps2dq: case Intrinsic::x86_sse2_cvtps2pd: case Intrinsic::x86_sse2_cvtsd2si: case Intrinsic::x86_sse2_cvtsd2si64: case Intrinsic::x86_sse2_cvtsd2ss: case Intrinsic::x86_sse2_cvtsi2sd: case Intrinsic::x86_sse2_cvtsi642sd: case Intrinsic::x86_sse2_cvtss2sd: case Intrinsic::x86_sse2_cvttpd2dq: case Intrinsic::x86_sse2_cvttps2dq: case Intrinsic::x86_sse2_cvttsd2si: case Intrinsic::x86_sse2_cvttsd2si64: case Intrinsic::x86_sse2_div_sd: case Intrinsic::x86_sse2_max_pd: case Intrinsic::x86_sse2_max_sd: case Intrinsic::x86_sse2_min_pd: case Intrinsic::x86_sse2_min_sd: case Intrinsic::x86_sse2_movmsk_pd: case Intrinsic::x86_sse2_mul_sd: case Intrinsic::x86_sse2_packssdw_128: case Intrinsic::x86_sse2_packsswb_128: case Intrinsic::x86_sse2_packuswb_128: case Intrinsic::x86_sse2_padds_b: case Intrinsic::x86_sse2_padds_w: case Intrinsic::x86_sse2_paddus_b: case Intrinsic::x86_sse2_paddus_w: case Intrinsic::x86_sse2_pavg_b: case Intrinsic::x86_sse2_pavg_w: case Intrinsic::x86_sse2_pcmpeq_b: case Intrinsic::x86_sse2_pcmpeq_d: case Intrinsic::x86_sse2_pcmpeq_w: case Intrinsic::x86_sse2_pcmpgt_b: case Intrinsic::x86_sse2_pcmpgt_d: case Intrinsic::x86_sse2_pcmpgt_w: case Intrinsic::x86_sse2_pmadd_wd: case Intrinsic::x86_sse2_pmaxs_w: case Intrinsic::x86_sse2_pmaxu_b: case Intrinsic::x86_sse2_pmins_w: case Intrinsic::x86_sse2_pminu_b: case Intrinsic::x86_sse2_pmovmskb_128: case Intrinsic::x86_sse2_pmulh_w: case Intrinsic::x86_sse2_pmulhu_w: case Intrinsic::x86_sse2_pmulu_dq: case Intrinsic::x86_sse2_psad_bw: case Intrinsic::x86_sse2_psll_d: case Intrinsic::x86_sse2_psll_dq: case Intrinsic::x86_sse2_psll_dq_bs: case Intrinsic::x86_sse2_psll_q: case Intrinsic::x86_sse2_psll_w: case Intrinsic::x86_sse2_pslli_d: case Intrinsic::x86_sse2_pslli_q: case Intrinsic::x86_sse2_pslli_w: case Intrinsic::x86_sse2_psra_d: case Intrinsic::x86_sse2_psra_w: case Intrinsic::x86_sse2_psrai_d: case Intrinsic::x86_sse2_psrai_w: case Intrinsic::x86_sse2_psrl_d: case Intrinsic::x86_sse2_psrl_dq: case Intrinsic::x86_sse2_psrl_dq_bs: case Intrinsic::x86_sse2_psrl_q: case Intrinsic::x86_sse2_psrl_w: case Intrinsic::x86_sse2_psrli_d: case Intrinsic::x86_sse2_psrli_q: case Intrinsic::x86_sse2_psrli_w: case Intrinsic::x86_sse2_psubs_b: case Intrinsic::x86_sse2_psubs_w: case Intrinsic::x86_sse2_psubus_b: case Intrinsic::x86_sse2_psubus_w: case Intrinsic::x86_sse2_sqrt_pd: case Intrinsic::x86_sse2_sqrt_sd: case Intrinsic::x86_sse2_sub_sd: case Intrinsic::x86_sse2_ucomieq_sd: case Intrinsic::x86_sse2_ucomige_sd: case Intrinsic::x86_sse2_ucomigt_sd: case Intrinsic::x86_sse2_ucomile_sd: case Intrinsic::x86_sse2_ucomilt_sd: case Intrinsic::x86_sse2_ucomineq_sd: case Intrinsic::x86_sse3_addsub_pd: case Intrinsic::x86_sse3_addsub_ps: case Intrinsic::x86_sse3_hadd_pd: case Intrinsic::x86_sse3_hadd_ps: case Intrinsic::x86_sse3_hsub_pd: case Intrinsic::x86_sse3_hsub_ps: case Intrinsic::x86_sse41_blendpd: case Intrinsic::x86_sse41_blendps: case Intrinsic::x86_sse41_blendvpd: case Intrinsic::x86_sse41_blendvps: case Intrinsic::x86_sse41_dppd: case Intrinsic::x86_sse41_dpps: case Intrinsic::x86_sse41_extractps: case Intrinsic::x86_sse41_insertps: case Intrinsic::x86_sse41_mpsadbw: case Intrinsic::x86_sse41_packusdw: case Intrinsic::x86_sse41_pblendvb: case Intrinsic::x86_sse41_pblendw: case Intrinsic::x86_sse41_pcmpeqq: case Intrinsic::x86_sse41_pextrb: case Intrinsic::x86_sse41_pextrd: case Intrinsic::x86_sse41_pextrq: case Intrinsic::x86_sse41_phminposuw: case Intrinsic::x86_sse41_pmaxsb: case Intrinsic::x86_sse41_pmaxsd: case Intrinsic::x86_sse41_pmaxud: case Intrinsic::x86_sse41_pmaxuw: case Intrinsic::x86_sse41_pminsb: case Intrinsic::x86_sse41_pminsd: case Intrinsic::x86_sse41_pminud: case Intrinsic::x86_sse41_pminuw: case Intrinsic::x86_sse41_pmovsxbd: case Intrinsic::x86_sse41_pmovsxbq: case Intrinsic::x86_sse41_pmovsxbw: case Intrinsic::x86_sse41_pmovsxdq: case Intrinsic::x86_sse41_pmovsxwd: case Intrinsic::x86_sse41_pmovsxwq: case Intrinsic::x86_sse41_pmovzxbd: case Intrinsic::x86_sse41_pmovzxbq: case Intrinsic::x86_sse41_pmovzxbw: case Intrinsic::x86_sse41_pmovzxdq: case Intrinsic::x86_sse41_pmovzxwd: case Intrinsic::x86_sse41_pmovzxwq: case Intrinsic::x86_sse41_pmuldq: case Intrinsic::x86_sse41_ptestc: case Intrinsic::x86_sse41_ptestnzc: case Intrinsic::x86_sse41_ptestz: case Intrinsic::x86_sse41_round_pd: case Intrinsic::x86_sse41_round_ps: case Intrinsic::x86_sse41_round_sd: case Intrinsic::x86_sse41_round_ss: case Intrinsic::x86_sse42_crc32_32_16: case Intrinsic::x86_sse42_crc32_32_32: case Intrinsic::x86_sse42_crc32_32_8: case Intrinsic::x86_sse42_crc32_64_64: case Intrinsic::x86_sse42_crc32_64_8: case Intrinsic::x86_sse42_pcmpestri128: case Intrinsic::x86_sse42_pcmpestria128: case Intrinsic::x86_sse42_pcmpestric128: case Intrinsic::x86_sse42_pcmpestrio128: case Intrinsic::x86_sse42_pcmpestris128: case Intrinsic::x86_sse42_pcmpestriz128: case Intrinsic::x86_sse42_pcmpestrm128: case Intrinsic::x86_sse42_pcmpgtq: case Intrinsic::x86_sse42_pcmpistri128: case Intrinsic::x86_sse42_pcmpistria128: case Intrinsic::x86_sse42_pcmpistric128: case Intrinsic::x86_sse42_pcmpistrio128: case Intrinsic::x86_sse42_pcmpistris128: case Intrinsic::x86_sse42_pcmpistriz128: case Intrinsic::x86_sse42_pcmpistrm128: case Intrinsic::x86_sse_add_ss: case Intrinsic::x86_sse_cmp_ps: case Intrinsic::x86_sse_cmp_ss: case Intrinsic::x86_sse_comieq_ss: case Intrinsic::x86_sse_comige_ss: case Intrinsic::x86_sse_comigt_ss: case Intrinsic::x86_sse_comile_ss: case Intrinsic::x86_sse_comilt_ss: case Intrinsic::x86_sse_comineq_ss: case Intrinsic::x86_sse_cvtpd2pi: case Intrinsic::x86_sse_cvtpi2pd: case Intrinsic::x86_sse_cvtpi2ps: case Intrinsic::x86_sse_cvtps2pi: case Intrinsic::x86_sse_cvtsi2ss: case Intrinsic::x86_sse_cvtsi642ss: case Intrinsic::x86_sse_cvtss2si: case Intrinsic::x86_sse_cvtss2si64: case Intrinsic::x86_sse_cvttpd2pi: case Intrinsic::x86_sse_cvttps2pi: case Intrinsic::x86_sse_cvttss2si: case Intrinsic::x86_sse_cvttss2si64: case Intrinsic::x86_sse_div_ss: case Intrinsic::x86_sse_max_ps: case Intrinsic::x86_sse_max_ss: case Intrinsic::x86_sse_min_ps: case Intrinsic::x86_sse_min_ss: case Intrinsic::x86_sse_movmsk_ps: case Intrinsic::x86_sse_mul_ss: case Intrinsic::x86_sse_pshuf_w: case Intrinsic::x86_sse_rcp_ps: case Intrinsic::x86_sse_rcp_ss: case Intrinsic::x86_sse_rsqrt_ps: case Intrinsic::x86_sse_rsqrt_ss: case Intrinsic::x86_sse_sqrt_ps: case Intrinsic::x86_sse_sqrt_ss: case Intrinsic::x86_sse_sub_ss: case Intrinsic::x86_sse_ucomieq_ss: case Intrinsic::x86_sse_ucomige_ss: case Intrinsic::x86_sse_ucomigt_ss: case Intrinsic::x86_sse_ucomile_ss: case Intrinsic::x86_sse_ucomilt_ss: case Intrinsic::x86_sse_ucomineq_ss: case Intrinsic::x86_ssse3_pabs_b: case Intrinsic::x86_ssse3_pabs_b_128: case Intrinsic::x86_ssse3_pabs_d: case Intrinsic::x86_ssse3_pabs_d_128: case Intrinsic::x86_ssse3_pabs_w: case Intrinsic::x86_ssse3_pabs_w_128: case Intrinsic::x86_ssse3_phadd_d: case Intrinsic::x86_ssse3_phadd_d_128: case Intrinsic::x86_ssse3_phadd_sw: case Intrinsic::x86_ssse3_phadd_sw_128: case Intrinsic::x86_ssse3_phadd_w: case Intrinsic::x86_ssse3_phadd_w_128: case Intrinsic::x86_ssse3_phsub_d: case Intrinsic::x86_ssse3_phsub_d_128: case Intrinsic::x86_ssse3_phsub_sw: case Intrinsic::x86_ssse3_phsub_sw_128: case Intrinsic::x86_ssse3_phsub_w: case Intrinsic::x86_ssse3_phsub_w_128: case Intrinsic::x86_ssse3_pmadd_ub_sw: case Intrinsic::x86_ssse3_pmadd_ub_sw_128: case Intrinsic::x86_ssse3_pmul_hr_sw: case Intrinsic::x86_ssse3_pmul_hr_sw_128: case Intrinsic::x86_ssse3_pshuf_b: case Intrinsic::x86_ssse3_pshuf_b_128: case Intrinsic::x86_ssse3_psign_b: case Intrinsic::x86_ssse3_psign_b_128: case Intrinsic::x86_ssse3_psign_d: case Intrinsic::x86_ssse3_psign_d_128: case Intrinsic::x86_ssse3_psign_w: case Intrinsic::x86_ssse3_psign_w_128: AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadNone); NumAttrs = 1; break; case Intrinsic::adjust_trampoline: case Intrinsic::cos: case Intrinsic::eh_exception: case Intrinsic::exp: case Intrinsic::exp2: case Intrinsic::gcread: case Intrinsic::log: case Intrinsic::log10: case Intrinsic::log2: case Intrinsic::pow: case Intrinsic::powi: case Intrinsic::sin: case Intrinsic::sqrt: case Intrinsic::x86_avx_ldu_dq_256: case Intrinsic::x86_avx_loadu_dq_256: case Intrinsic::x86_avx_loadu_pd_256: case Intrinsic::x86_avx_loadu_ps_256: case Intrinsic::x86_avx_maskload_pd: case Intrinsic::x86_avx_maskload_pd_256: case Intrinsic::x86_avx_maskload_ps: case Intrinsic::x86_avx_maskload_ps_256: case Intrinsic::x86_avx_vbroadcast_sd_256: case Intrinsic::x86_avx_vbroadcastf128_pd_256: case Intrinsic::x86_avx_vbroadcastf128_ps_256: case Intrinsic::x86_avx_vbroadcastss: case Intrinsic::x86_avx_vbroadcastss_256: case Intrinsic::x86_sse3_ldu_dq: case Intrinsic::x86_sse41_movntdqa: AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadOnly); NumAttrs = 1; break; case Intrinsic::annotation: case Intrinsic::convertff: case Intrinsic::convertfsi: case Intrinsic::convertfui: case Intrinsic::convertsif: case Intrinsic::convertss: case Intrinsic::convertsu: case Intrinsic::convertuif: case Intrinsic::convertus: case Intrinsic::convertuu: case Intrinsic::eh_dwarf_cfa: case Intrinsic::eh_return_i32: case Intrinsic::eh_return_i64: case Intrinsic::eh_selector: case Intrinsic::eh_sjlj_dispatch_setup: case Intrinsic::eh_sjlj_functioncontext: case Intrinsic::eh_sjlj_longjmp: case Intrinsic::eh_sjlj_setjmp: case Intrinsic::eh_unwind_init: case Intrinsic::flt_rounds: case Intrinsic::gcroot: case Intrinsic::longjmp: case Intrinsic::pcmarker: case Intrinsic::ptr_annotation: case Intrinsic::readcyclecounter: case Intrinsic::setjmp: case Intrinsic::siglongjmp: case Intrinsic::sigsetjmp: case Intrinsic::stackprotector: case Intrinsic::stackrestore: case Intrinsic::stacksave: case Intrinsic::trap: case Intrinsic::vacopy: case Intrinsic::vaend: case Intrinsic::var_annotation: case Intrinsic::vastart: case Intrinsic::x86_avx_maskstore_pd: case Intrinsic::x86_avx_maskstore_pd_256: case Intrinsic::x86_avx_maskstore_ps: case Intrinsic::x86_avx_maskstore_ps_256: case Intrinsic::x86_avx_movnt_dq_256: case Intrinsic::x86_avx_movnt_pd_256: case Intrinsic::x86_avx_movnt_ps_256: case Intrinsic::x86_avx_storeu_dq_256: case Intrinsic::x86_avx_storeu_pd_256: case Intrinsic::x86_avx_storeu_ps_256: case Intrinsic::x86_avx_vzeroall: case Intrinsic::x86_avx_vzeroupper: case Intrinsic::x86_int: case Intrinsic::x86_mmx_emms: case Intrinsic::x86_mmx_femms: case Intrinsic::x86_mmx_maskmovq: case Intrinsic::x86_mmx_movnt_dq: case Intrinsic::x86_sse2_clflush: case Intrinsic::x86_sse2_lfence: case Intrinsic::x86_sse2_maskmov_dqu: case Intrinsic::x86_sse2_mfence: case Intrinsic::x86_sse2_storel_dq: case Intrinsic::x86_sse2_storeu_dq: case Intrinsic::x86_sse2_storeu_pd: case Intrinsic::x86_sse3_monitor: case Intrinsic::x86_sse3_mwait: case Intrinsic::x86_sse_ldmxcsr: case Intrinsic::x86_sse_sfence: case Intrinsic::x86_sse_stmxcsr: case Intrinsic::x86_sse_storeu_ps: AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind); NumAttrs = 1; break; case Intrinsic::init_trampoline: case Intrinsic::memset: case Intrinsic::prefetch: AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture); AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind); NumAttrs = 2; break; case Intrinsic::memcpy: case Intrinsic::memmove: AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture); AWI[1] = AttributeWithIndex::get(2, Attribute::NoCapture); AWI[2] = AttributeWithIndex::get(~0, Attribute::NoUnwind); NumAttrs = 3; break; case Intrinsic::invariant_start: case Intrinsic::lifetime_end: case Intrinsic::lifetime_start: AWI[0] = AttributeWithIndex::get(2, Attribute::NoCapture); AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind); NumAttrs = 2; break; case Intrinsic::gcwrite: AWI[0] = AttributeWithIndex::get(2, Attribute::NoCapture); AWI[1] = AttributeWithIndex::get(3, Attribute::NoCapture); AWI[2] = AttributeWithIndex::get(~0, Attribute::NoUnwind); NumAttrs = 3; break; case Intrinsic::invariant_end: AWI[0] = AttributeWithIndex::get(3, Attribute::NoCapture); AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind); NumAttrs = 2; break; case Intrinsic::eh_resume: return AttrListPtr(); } return AttrListPtr::get(AWI, NumAttrs); } #endif // GET_INTRINSIC_ATTRIBUTES // Determine intrinsic alias analysis mod/ref behavior. #ifdef GET_INTRINSIC_MODREF_BEHAVIOR switch (iid) { default: return UnknownModRefBehavior; case Intrinsic::adjust_trampoline: return OnlyReadsArgumentPointees; case Intrinsic::bswap: return DoesNotAccessMemory; case Intrinsic::convert_from_fp16: return DoesNotAccessMemory; case Intrinsic::convert_to_fp16: return DoesNotAccessMemory; case Intrinsic::cos: return OnlyReadsMemory; case Intrinsic::ctlz: return DoesNotAccessMemory; case Intrinsic::ctpop: return DoesNotAccessMemory; case Intrinsic::cttz: return DoesNotAccessMemory; case Intrinsic::dbg_declare: return DoesNotAccessMemory; case Intrinsic::dbg_value: return DoesNotAccessMemory; case Intrinsic::eh_exception: return OnlyReadsMemory; case Intrinsic::eh_sjlj_callsite: return DoesNotAccessMemory; case Intrinsic::eh_sjlj_lsda: return DoesNotAccessMemory; case Intrinsic::eh_typeid_for: return DoesNotAccessMemory; case Intrinsic::exp: return OnlyReadsMemory; case Intrinsic::exp2: return OnlyReadsMemory; case Intrinsic::expect: return DoesNotAccessMemory; case Intrinsic::fma: return DoesNotAccessMemory; case Intrinsic::frameaddress: return DoesNotAccessMemory; case Intrinsic::gcread: return OnlyReadsArgumentPointees; case Intrinsic::gcwrite: return OnlyAccessesArgumentPointees; case Intrinsic::init_trampoline: return OnlyAccessesArgumentPointees; case Intrinsic::invariant_end: return OnlyAccessesArgumentPointees; case Intrinsic::invariant_start: return OnlyAccessesArgumentPointees; case Intrinsic::lifetime_end: return OnlyAccessesArgumentPointees; case Intrinsic::lifetime_start: return OnlyAccessesArgumentPointees; case Intrinsic::log: return OnlyReadsMemory; case Intrinsic::log10: return OnlyReadsMemory; case Intrinsic::log2: return OnlyReadsMemory; case Intrinsic::memcpy: return OnlyAccessesArgumentPointees; case Intrinsic::memmove: return OnlyAccessesArgumentPointees; case Intrinsic::memset: return OnlyAccessesArgumentPointees; case Intrinsic::objectsize: return DoesNotAccessMemory; case Intrinsic::pow: return OnlyReadsMemory; case Intrinsic::powi: return OnlyReadsMemory; case Intrinsic::prefetch: return OnlyAccessesArgumentPointees; case Intrinsic::returnaddress: return DoesNotAccessMemory; case Intrinsic::sadd_with_overflow: return DoesNotAccessMemory; case Intrinsic::sin: return OnlyReadsMemory; case Intrinsic::smul_with_overflow: return DoesNotAccessMemory; case Intrinsic::sqrt: return OnlyReadsMemory; case Intrinsic::ssub_with_overflow: return DoesNotAccessMemory; case Intrinsic::uadd_with_overflow: return DoesNotAccessMemory; case Intrinsic::umul_with_overflow: return DoesNotAccessMemory; case Intrinsic::usub_with_overflow: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pavgusb: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pf2id: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfacc: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfadd: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfcmpeq: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfcmpge: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfcmpgt: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfmax: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfmin: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfmul: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfrcp: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfrcpit1: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfrcpit2: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfrsqit1: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfrsqrt: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfsub: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pfsubr: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pi2fd: return DoesNotAccessMemory; case Intrinsic::x86_3dnow_pmulhrw: return DoesNotAccessMemory; case Intrinsic::x86_3dnowa_pf2iw: return DoesNotAccessMemory; case Intrinsic::x86_3dnowa_pfnacc: return DoesNotAccessMemory; case Intrinsic::x86_3dnowa_pfpnacc: return DoesNotAccessMemory; case Intrinsic::x86_3dnowa_pi2fw: return DoesNotAccessMemory; case Intrinsic::x86_3dnowa_pswapd: return DoesNotAccessMemory; case Intrinsic::x86_aesni_aesdec: return DoesNotAccessMemory; case Intrinsic::x86_aesni_aesdeclast: return DoesNotAccessMemory; case Intrinsic::x86_aesni_aesenc: return DoesNotAccessMemory; case Intrinsic::x86_aesni_aesenclast: return DoesNotAccessMemory; case Intrinsic::x86_aesni_aesimc: return DoesNotAccessMemory; case Intrinsic::x86_aesni_aeskeygenassist: return DoesNotAccessMemory; case Intrinsic::x86_avx_addsub_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_addsub_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_blend_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_blend_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_blendv_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_blendv_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_cmp_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_cmp_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_cvt_pd2_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_cvt_pd2dq_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_cvt_ps2_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_cvt_ps2dq_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_cvtdq2_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_cvtdq2_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_cvtt_pd2dq_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_cvtt_ps2dq_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_dp_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_hadd_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_hadd_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_hsub_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_hsub_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_ldu_dq_256: return OnlyReadsMemory; case Intrinsic::x86_avx_loadu_dq_256: return OnlyReadsMemory; case Intrinsic::x86_avx_loadu_pd_256: return OnlyReadsMemory; case Intrinsic::x86_avx_loadu_ps_256: return OnlyReadsMemory; case Intrinsic::x86_avx_maskload_pd: return OnlyReadsMemory; case Intrinsic::x86_avx_maskload_pd_256: return OnlyReadsMemory; case Intrinsic::x86_avx_maskload_ps: return OnlyReadsMemory; case Intrinsic::x86_avx_maskload_ps_256: return OnlyReadsMemory; case Intrinsic::x86_avx_max_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_max_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_min_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_min_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_movmsk_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_movmsk_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_ptestc_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_ptestnzc_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_ptestz_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_rcp_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_round_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_round_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_rsqrt_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_sqrt_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_sqrt_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vbroadcast_sd_256: return OnlyReadsMemory; case Intrinsic::x86_avx_vbroadcastf128_pd_256: return OnlyReadsMemory; case Intrinsic::x86_avx_vbroadcastf128_ps_256: return OnlyReadsMemory; case Intrinsic::x86_avx_vbroadcastss: return OnlyReadsMemory; case Intrinsic::x86_avx_vbroadcastss_256: return OnlyReadsMemory; case Intrinsic::x86_avx_vextractf128_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vextractf128_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vextractf128_si_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vinsertf128_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vinsertf128_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vinsertf128_si_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vperm2f128_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vperm2f128_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vperm2f128_si_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vpermil_pd: return DoesNotAccessMemory; case Intrinsic::x86_avx_vpermil_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vpermil_ps: return DoesNotAccessMemory; case Intrinsic::x86_avx_vpermil_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vpermilvar_pd: return DoesNotAccessMemory; case Intrinsic::x86_avx_vpermilvar_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vpermilvar_ps: return DoesNotAccessMemory; case Intrinsic::x86_avx_vpermilvar_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestc_pd: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestc_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestc_ps: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestc_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestnzc_pd: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestnzc_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestnzc_ps: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestnzc_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestz_pd: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestz_pd_256: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestz_ps: return DoesNotAccessMemory; case Intrinsic::x86_avx_vtestz_ps_256: return DoesNotAccessMemory; case Intrinsic::x86_mmx_packssdw: return DoesNotAccessMemory; case Intrinsic::x86_mmx_packsswb: return DoesNotAccessMemory; case Intrinsic::x86_mmx_packuswb: return DoesNotAccessMemory; case Intrinsic::x86_mmx_padd_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_padd_d: return DoesNotAccessMemory; case Intrinsic::x86_mmx_padd_q: return DoesNotAccessMemory; case Intrinsic::x86_mmx_padd_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_padds_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_padds_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_paddus_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_paddus_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_palignr_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pand: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pandn: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pavg_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pavg_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pcmpeq_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pcmpeq_d: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pcmpeq_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pcmpgt_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pcmpgt_d: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pcmpgt_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pextr_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pinsr_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pmadd_wd: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pmaxs_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pmaxu_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pmins_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pminu_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pmovmskb: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pmulh_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pmulhu_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pmull_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pmulu_dq: return DoesNotAccessMemory; case Intrinsic::x86_mmx_por: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psad_bw: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psll_d: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psll_q: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psll_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pslli_d: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pslli_q: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pslli_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psra_d: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psra_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psrai_d: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psrai_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psrl_d: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psrl_q: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psrl_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psrli_d: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psrli_q: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psrli_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psub_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psub_d: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psub_q: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psub_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psubs_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psubs_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psubus_b: return DoesNotAccessMemory; case Intrinsic::x86_mmx_psubus_w: return DoesNotAccessMemory; case Intrinsic::x86_mmx_punpckhbw: return DoesNotAccessMemory; case Intrinsic::x86_mmx_punpckhdq: return DoesNotAccessMemory; case Intrinsic::x86_mmx_punpckhwd: return DoesNotAccessMemory; case Intrinsic::x86_mmx_punpcklbw: return DoesNotAccessMemory; case Intrinsic::x86_mmx_punpckldq: return DoesNotAccessMemory; case Intrinsic::x86_mmx_punpcklwd: return DoesNotAccessMemory; case Intrinsic::x86_mmx_pxor: return DoesNotAccessMemory; case Intrinsic::x86_sse2_add_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cmp_pd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cmp_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_comieq_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_comige_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_comigt_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_comile_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_comilt_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_comineq_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtdq2pd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtdq2ps: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtpd2dq: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtpd2ps: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtps2dq: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtps2pd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtsd2si: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtsd2si64: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtsd2ss: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtsi2sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtsi642sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvtss2sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvttpd2dq: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvttps2dq: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvttsd2si: return DoesNotAccessMemory; case Intrinsic::x86_sse2_cvttsd2si64: return DoesNotAccessMemory; case Intrinsic::x86_sse2_div_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_max_pd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_max_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_min_pd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_min_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_movmsk_pd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_mul_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_packssdw_128: return DoesNotAccessMemory; case Intrinsic::x86_sse2_packsswb_128: return DoesNotAccessMemory; case Intrinsic::x86_sse2_packuswb_128: return DoesNotAccessMemory; case Intrinsic::x86_sse2_padds_b: return DoesNotAccessMemory; case Intrinsic::x86_sse2_padds_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_paddus_b: return DoesNotAccessMemory; case Intrinsic::x86_sse2_paddus_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pavg_b: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pavg_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pcmpeq_b: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pcmpeq_d: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pcmpeq_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pcmpgt_b: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pcmpgt_d: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pcmpgt_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pmadd_wd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pmaxs_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pmaxu_b: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pmins_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pminu_b: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pmovmskb_128: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pmulh_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pmulhu_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pmulu_dq: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psad_bw: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psll_d: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psll_dq: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psll_dq_bs: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psll_q: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psll_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pslli_d: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pslli_q: return DoesNotAccessMemory; case Intrinsic::x86_sse2_pslli_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psra_d: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psra_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psrai_d: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psrai_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psrl_d: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psrl_dq: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psrl_dq_bs: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psrl_q: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psrl_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psrli_d: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psrli_q: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psrli_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psubs_b: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psubs_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psubus_b: return DoesNotAccessMemory; case Intrinsic::x86_sse2_psubus_w: return DoesNotAccessMemory; case Intrinsic::x86_sse2_sqrt_pd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_sqrt_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_sub_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_ucomieq_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_ucomige_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_ucomigt_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_ucomile_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_ucomilt_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse2_ucomineq_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse3_addsub_pd: return DoesNotAccessMemory; case Intrinsic::x86_sse3_addsub_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse3_hadd_pd: return DoesNotAccessMemory; case Intrinsic::x86_sse3_hadd_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse3_hsub_pd: return DoesNotAccessMemory; case Intrinsic::x86_sse3_hsub_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse3_ldu_dq: return OnlyReadsMemory; case Intrinsic::x86_sse41_blendpd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_blendps: return DoesNotAccessMemory; case Intrinsic::x86_sse41_blendvpd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_blendvps: return DoesNotAccessMemory; case Intrinsic::x86_sse41_dppd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_dpps: return DoesNotAccessMemory; case Intrinsic::x86_sse41_extractps: return DoesNotAccessMemory; case Intrinsic::x86_sse41_insertps: return DoesNotAccessMemory; case Intrinsic::x86_sse41_movntdqa: return OnlyReadsMemory; case Intrinsic::x86_sse41_mpsadbw: return DoesNotAccessMemory; case Intrinsic::x86_sse41_packusdw: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pblendvb: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pblendw: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pcmpeqq: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pextrb: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pextrd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pextrq: return DoesNotAccessMemory; case Intrinsic::x86_sse41_phminposuw: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmaxsb: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmaxsd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmaxud: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmaxuw: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pminsb: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pminsd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pminud: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pminuw: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovsxbd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovsxbq: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovsxbw: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovsxdq: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovsxwd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovsxwq: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovzxbd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovzxbq: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovzxbw: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovzxdq: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovzxwd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmovzxwq: return DoesNotAccessMemory; case Intrinsic::x86_sse41_pmuldq: return DoesNotAccessMemory; case Intrinsic::x86_sse41_ptestc: return DoesNotAccessMemory; case Intrinsic::x86_sse41_ptestnzc: return DoesNotAccessMemory; case Intrinsic::x86_sse41_ptestz: return DoesNotAccessMemory; case Intrinsic::x86_sse41_round_pd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_round_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse41_round_sd: return DoesNotAccessMemory; case Intrinsic::x86_sse41_round_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse42_crc32_32_16: return DoesNotAccessMemory; case Intrinsic::x86_sse42_crc32_32_32: return DoesNotAccessMemory; case Intrinsic::x86_sse42_crc32_32_8: return DoesNotAccessMemory; case Intrinsic::x86_sse42_crc32_64_64: return DoesNotAccessMemory; case Intrinsic::x86_sse42_crc32_64_8: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpestri128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpestria128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpestric128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpestrio128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpestris128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpestriz128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpestrm128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpgtq: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpistri128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpistria128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpistric128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpistrio128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpistris128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpistriz128: return DoesNotAccessMemory; case Intrinsic::x86_sse42_pcmpistrm128: return DoesNotAccessMemory; case Intrinsic::x86_sse_add_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_cmp_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse_cmp_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_comieq_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_comige_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_comigt_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_comile_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_comilt_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_comineq_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvtpd2pi: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvtpi2pd: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvtpi2ps: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvtps2pi: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvtsi2ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvtsi642ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvtss2si: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvtss2si64: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvttpd2pi: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvttps2pi: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvttss2si: return DoesNotAccessMemory; case Intrinsic::x86_sse_cvttss2si64: return DoesNotAccessMemory; case Intrinsic::x86_sse_div_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_max_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse_max_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_min_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse_min_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_movmsk_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse_mul_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_pshuf_w: return DoesNotAccessMemory; case Intrinsic::x86_sse_rcp_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse_rcp_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_rsqrt_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse_rsqrt_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_sqrt_ps: return DoesNotAccessMemory; case Intrinsic::x86_sse_sqrt_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_sub_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_ucomieq_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_ucomige_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_ucomigt_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_ucomile_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_ucomilt_ss: return DoesNotAccessMemory; case Intrinsic::x86_sse_ucomineq_ss: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pabs_b: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pabs_b_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pabs_d: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pabs_d_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pabs_w: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pabs_w_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phadd_d: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phadd_d_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phadd_sw: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phadd_sw_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phadd_w: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phadd_w_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phsub_d: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phsub_d_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phsub_sw: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phsub_sw_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phsub_w: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_phsub_w_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pmadd_ub_sw: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pmadd_ub_sw_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pmul_hr_sw: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pmul_hr_sw_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pshuf_b: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_pshuf_b_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_psign_b: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_psign_b_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_psign_d: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_psign_d_128: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_psign_w: return DoesNotAccessMemory; case Intrinsic::x86_ssse3_psign_w_128: return DoesNotAccessMemory; } #endif // GET_INTRINSIC_MODREF_BEHAVIOR // Get the GCC builtin that corresponds to an LLVM intrinsic. #ifdef GET_GCC_BUILTIN_NAME switch (F->getIntrinsicID()) { default: BuiltinName = ""; break; case Intrinsic::adjust_trampoline: BuiltinName = "__builtin_adjust_trampoline"; break; case Intrinsic::convert_from_fp16: BuiltinName = "__gnu_h2f_ieee"; break; case Intrinsic::convert_to_fp16: BuiltinName = "__gnu_f2h_ieee"; break; case Intrinsic::eh_unwind_init: BuiltinName = "__builtin_unwind_init"; break; case Intrinsic::flt_rounds: BuiltinName = "__builtin_flt_rounds"; break; case Intrinsic::init_trampoline: BuiltinName = "__builtin_init_trampoline"; break; case Intrinsic::objectsize: BuiltinName = "__builtin_object_size"; break; case Intrinsic::stackrestore: BuiltinName = "__builtin_stack_restore"; break; case Intrinsic::stacksave: BuiltinName = "__builtin_stack_save"; break; case Intrinsic::trap: BuiltinName = "__builtin_trap"; break; case Intrinsic::x86_3dnow_pavgusb: BuiltinName = "__builtin_ia32_pavgusb"; break; case Intrinsic::x86_3dnow_pf2id: BuiltinName = "__builtin_ia32_pf2id"; break; case Intrinsic::x86_3dnow_pfacc: BuiltinName = "__builtin_ia32_pfacc"; break; case Intrinsic::x86_3dnow_pfadd: BuiltinName = "__builtin_ia32_pfadd"; break; case Intrinsic::x86_3dnow_pfcmpeq: BuiltinName = "__builtin_ia32_pfcmpeq"; break; case Intrinsic::x86_3dnow_pfcmpge: BuiltinName = "__builtin_ia32_pfcmpge"; break; case Intrinsic::x86_3dnow_pfcmpgt: BuiltinName = "__builtin_ia32_pfcmpgt"; break; case Intrinsic::x86_3dnow_pfmax: BuiltinName = "__builtin_ia32_pfmax"; break; case Intrinsic::x86_3dnow_pfmin: BuiltinName = "__builtin_ia32_pfmin"; break; case Intrinsic::x86_3dnow_pfmul: BuiltinName = "__builtin_ia32_pfmul"; break; case Intrinsic::x86_3dnow_pfrcp: BuiltinName = "__builtin_ia32_pfrcp"; break; case Intrinsic::x86_3dnow_pfrcpit1: BuiltinName = "__builtin_ia32_pfrcpit1"; break; case Intrinsic::x86_3dnow_pfrcpit2: BuiltinName = "__builtin_ia32_pfrcpit2"; break; case Intrinsic::x86_3dnow_pfrsqit1: BuiltinName = "__builtin_ia32_pfrsqit1"; break; case Intrinsic::x86_3dnow_pfrsqrt: BuiltinName = "__builtin_ia32_pfrsqrt"; break; case Intrinsic::x86_3dnow_pfsub: BuiltinName = "__builtin_ia32_pfsub"; break; case Intrinsic::x86_3dnow_pfsubr: BuiltinName = "__builtin_ia32_pfsubr"; break; case Intrinsic::x86_3dnow_pi2fd: BuiltinName = "__builtin_ia32_pi2fd"; break; case Intrinsic::x86_3dnow_pmulhrw: BuiltinName = "__builtin_ia32_pmulhrw"; break; case Intrinsic::x86_3dnowa_pf2iw: BuiltinName = "__builtin_ia32_pf2iw"; break; case Intrinsic::x86_3dnowa_pfnacc: BuiltinName = "__builtin_ia32_pfnacc"; break; case Intrinsic::x86_3dnowa_pfpnacc: BuiltinName = "__builtin_ia32_pfpnacc"; break; case Intrinsic::x86_3dnowa_pi2fw: BuiltinName = "__builtin_ia32_pi2fw"; break; case Intrinsic::x86_aesni_aesdec: BuiltinName = "__builtin_ia32_aesdec128"; break; case Intrinsic::x86_aesni_aesdeclast: BuiltinName = "__builtin_ia32_aesdeclast128"; break; case Intrinsic::x86_aesni_aesenc: BuiltinName = "__builtin_ia32_aesenc128"; break; case Intrinsic::x86_aesni_aesenclast: BuiltinName = "__builtin_ia32_aesenclast128"; break; case Intrinsic::x86_aesni_aesimc: BuiltinName = "__builtin_ia32_aesimc128"; break; case Intrinsic::x86_aesni_aeskeygenassist: BuiltinName = "__builtin_ia32_aeskeygenassist128"; break; case Intrinsic::x86_avx_addsub_pd_256: BuiltinName = "__builtin_ia32_addsubpd256"; break; case Intrinsic::x86_avx_addsub_ps_256: BuiltinName = "__builtin_ia32_addsubps256"; break; case Intrinsic::x86_avx_blend_pd_256: BuiltinName = "__builtin_ia32_blendpd256"; break; case Intrinsic::x86_avx_blend_ps_256: BuiltinName = "__builtin_ia32_blendps256"; break; case Intrinsic::x86_avx_blendv_pd_256: BuiltinName = "__builtin_ia32_blendvpd256"; break; case Intrinsic::x86_avx_blendv_ps_256: BuiltinName = "__builtin_ia32_blendvps256"; break; case Intrinsic::x86_avx_cmp_pd_256: BuiltinName = "__builtin_ia32_cmppd256"; break; case Intrinsic::x86_avx_cmp_ps_256: BuiltinName = "__builtin_ia32_cmpps256"; break; case Intrinsic::x86_avx_cvt_pd2_ps_256: BuiltinName = "__builtin_ia32_cvtpd2ps256"; break; case Intrinsic::x86_avx_cvt_pd2dq_256: BuiltinName = "__builtin_ia32_cvtpd2dq256"; break; case Intrinsic::x86_avx_cvt_ps2_pd_256: BuiltinName = "__builtin_ia32_cvtps2pd256"; break; case Intrinsic::x86_avx_cvt_ps2dq_256: BuiltinName = "__builtin_ia32_cvtps2dq256"; break; case Intrinsic::x86_avx_cvtdq2_pd_256: BuiltinName = "__builtin_ia32_cvtdq2pd256"; break; case Intrinsic::x86_avx_cvtdq2_ps_256: BuiltinName = "__builtin_ia32_cvtdq2ps256"; break; case Intrinsic::x86_avx_cvtt_pd2dq_256: BuiltinName = "__builtin_ia32_cvttpd2dq256"; break; case Intrinsic::x86_avx_cvtt_ps2dq_256: BuiltinName = "__builtin_ia32_cvttps2dq256"; break; case Intrinsic::x86_avx_dp_ps_256: BuiltinName = "__builtin_ia32_dpps256"; break; case Intrinsic::x86_avx_hadd_pd_256: BuiltinName = "__builtin_ia32_haddpd256"; break; case Intrinsic::x86_avx_hadd_ps_256: BuiltinName = "__builtin_ia32_haddps256"; break; case Intrinsic::x86_avx_hsub_pd_256: BuiltinName = "__builtin_ia32_hsubpd256"; break; case Intrinsic::x86_avx_hsub_ps_256: BuiltinName = "__builtin_ia32_hsubps256"; break; case Intrinsic::x86_avx_ldu_dq_256: BuiltinName = "__builtin_ia32_lddqu256"; break; case Intrinsic::x86_avx_loadu_dq_256: BuiltinName = "__builtin_ia32_loaddqu256"; break; case Intrinsic::x86_avx_loadu_pd_256: BuiltinName = "__builtin_ia32_loadupd256"; break; case Intrinsic::x86_avx_loadu_ps_256: BuiltinName = "__builtin_ia32_loadups256"; break; case Intrinsic::x86_avx_maskload_pd: BuiltinName = "__builtin_ia32_maskloadpd"; break; case Intrinsic::x86_avx_maskload_pd_256: BuiltinName = "__builtin_ia32_maskloadpd256"; break; case Intrinsic::x86_avx_maskload_ps: BuiltinName = "__builtin_ia32_maskloadps"; break; case Intrinsic::x86_avx_maskload_ps_256: BuiltinName = "__builtin_ia32_maskloadps256"; break; case Intrinsic::x86_avx_maskstore_pd: BuiltinName = "__builtin_ia32_maskstorepd"; break; case Intrinsic::x86_avx_maskstore_pd_256: BuiltinName = "__builtin_ia32_maskstorepd256"; break; case Intrinsic::x86_avx_maskstore_ps: BuiltinName = "__builtin_ia32_maskstoreps"; break; case Intrinsic::x86_avx_maskstore_ps_256: BuiltinName = "__builtin_ia32_maskstoreps256"; break; case Intrinsic::x86_avx_max_pd_256: BuiltinName = "__builtin_ia32_maxpd256"; break; case Intrinsic::x86_avx_max_ps_256: BuiltinName = "__builtin_ia32_maxps256"; break; case Intrinsic::x86_avx_min_pd_256: BuiltinName = "__builtin_ia32_minpd256"; break; case Intrinsic::x86_avx_min_ps_256: BuiltinName = "__builtin_ia32_minps256"; break; case Intrinsic::x86_avx_movmsk_pd_256: BuiltinName = "__builtin_ia32_movmskpd256"; break; case Intrinsic::x86_avx_movmsk_ps_256: BuiltinName = "__builtin_ia32_movmskps256"; break; case Intrinsic::x86_avx_movnt_dq_256: BuiltinName = "__builtin_ia32_movntdq256"; break; case Intrinsic::x86_avx_movnt_pd_256: BuiltinName = "__builtin_ia32_movntpd256"; break; case Intrinsic::x86_avx_movnt_ps_256: BuiltinName = "__builtin_ia32_movntps256"; break; case Intrinsic::x86_avx_ptestc_256: BuiltinName = "__builtin_ia32_ptestc256"; break; case Intrinsic::x86_avx_ptestnzc_256: BuiltinName = "__builtin_ia32_ptestnzc256"; break; case Intrinsic::x86_avx_ptestz_256: BuiltinName = "__builtin_ia32_ptestz256"; break; case Intrinsic::x86_avx_rcp_ps_256: BuiltinName = "__builtin_ia32_rcpps256"; break; case Intrinsic::x86_avx_round_pd_256: BuiltinName = "__builtin_ia32_roundpd256"; break; case Intrinsic::x86_avx_round_ps_256: BuiltinName = "__builtin_ia32_roundps256"; break; case Intrinsic::x86_avx_rsqrt_ps_256: BuiltinName = "__builtin_ia32_rsqrtps256"; break; case Intrinsic::x86_avx_sqrt_pd_256: BuiltinName = "__builtin_ia32_sqrtpd256"; break; case Intrinsic::x86_avx_sqrt_ps_256: BuiltinName = "__builtin_ia32_sqrtps256"; break; case Intrinsic::x86_avx_storeu_dq_256: BuiltinName = "__builtin_ia32_storedqu256"; break; case Intrinsic::x86_avx_storeu_pd_256: BuiltinName = "__builtin_ia32_storeupd256"; break; case Intrinsic::x86_avx_storeu_ps_256: BuiltinName = "__builtin_ia32_storeups256"; break; case Intrinsic::x86_avx_vbroadcast_sd_256: BuiltinName = "__builtin_ia32_vbroadcastsd256"; break; case Intrinsic::x86_avx_vbroadcastf128_pd_256: BuiltinName = "__builtin_ia32_vbroadcastf128_pd256"; break; case Intrinsic::x86_avx_vbroadcastf128_ps_256: BuiltinName = "__builtin_ia32_vbroadcastf128_ps256"; break; case Intrinsic::x86_avx_vbroadcastss: BuiltinName = "__builtin_ia32_vbroadcastss"; break; case Intrinsic::x86_avx_vbroadcastss_256: BuiltinName = "__builtin_ia32_vbroadcastss256"; break; case Intrinsic::x86_avx_vextractf128_pd_256: BuiltinName = "__builtin_ia32_vextractf128_pd256"; break; case Intrinsic::x86_avx_vextractf128_ps_256: BuiltinName = "__builtin_ia32_vextractf128_ps256"; break; case Intrinsic::x86_avx_vextractf128_si_256: BuiltinName = "__builtin_ia32_vextractf128_si256"; break; case Intrinsic::x86_avx_vinsertf128_pd_256: BuiltinName = "__builtin_ia32_vinsertf128_pd256"; break; case Intrinsic::x86_avx_vinsertf128_ps_256: BuiltinName = "__builtin_ia32_vinsertf128_ps256"; break; case Intrinsic::x86_avx_vinsertf128_si_256: BuiltinName = "__builtin_ia32_vinsertf128_si256"; break; case Intrinsic::x86_avx_vperm2f128_pd_256: BuiltinName = "__builtin_ia32_vperm2f128_pd256"; break; case Intrinsic::x86_avx_vperm2f128_ps_256: BuiltinName = "__builtin_ia32_vperm2f128_ps256"; break; case Intrinsic::x86_avx_vperm2f128_si_256: BuiltinName = "__builtin_ia32_vperm2f128_si256"; break; case Intrinsic::x86_avx_vpermil_pd: BuiltinName = "__builtin_ia32_vpermilpd"; break; case Intrinsic::x86_avx_vpermil_pd_256: BuiltinName = "__builtin_ia32_vpermilpd256"; break; case Intrinsic::x86_avx_vpermil_ps: BuiltinName = "__builtin_ia32_vpermilps"; break; case Intrinsic::x86_avx_vpermil_ps_256: BuiltinName = "__builtin_ia32_vpermilps256"; break; case Intrinsic::x86_avx_vpermilvar_pd: BuiltinName = "__builtin_ia32_vpermilvarpd"; break; case Intrinsic::x86_avx_vpermilvar_pd_256: BuiltinName = "__builtin_ia32_vpermilvarpd256"; break; case Intrinsic::x86_avx_vpermilvar_ps: BuiltinName = "__builtin_ia32_vpermilvarps"; break; case Intrinsic::x86_avx_vpermilvar_ps_256: BuiltinName = "__builtin_ia32_vpermilvarps256"; break; case Intrinsic::x86_avx_vtestc_pd: BuiltinName = "__builtin_ia32_vtestcpd"; break; case Intrinsic::x86_avx_vtestc_pd_256: BuiltinName = "__builtin_ia32_vtestcpd256"; break; case Intrinsic::x86_avx_vtestc_ps: BuiltinName = "__builtin_ia32_vtestcps"; break; case Intrinsic::x86_avx_vtestc_ps_256: BuiltinName = "__builtin_ia32_vtestcps256"; break; case Intrinsic::x86_avx_vtestnzc_pd: BuiltinName = "__builtin_ia32_vtestnzcpd"; break; case Intrinsic::x86_avx_vtestnzc_pd_256: BuiltinName = "__builtin_ia32_vtestnzcpd256"; break; case Intrinsic::x86_avx_vtestnzc_ps: BuiltinName = "__builtin_ia32_vtestnzcps"; break; case Intrinsic::x86_avx_vtestnzc_ps_256: BuiltinName = "__builtin_ia32_vtestnzcps256"; break; case Intrinsic::x86_avx_vtestz_pd: BuiltinName = "__builtin_ia32_vtestzpd"; break; case Intrinsic::x86_avx_vtestz_pd_256: BuiltinName = "__builtin_ia32_vtestzpd256"; break; case Intrinsic::x86_avx_vtestz_ps: BuiltinName = "__builtin_ia32_vtestzps"; break; case Intrinsic::x86_avx_vtestz_ps_256: BuiltinName = "__builtin_ia32_vtestzps256"; break; case Intrinsic::x86_avx_vzeroall: BuiltinName = "__builtin_ia32_vzeroall"; break; case Intrinsic::x86_avx_vzeroupper: BuiltinName = "__builtin_ia32_vzeroupper"; break; case Intrinsic::x86_mmx_emms: BuiltinName = "__builtin_ia32_emms"; break; case Intrinsic::x86_mmx_femms: BuiltinName = "__builtin_ia32_femms"; break; case Intrinsic::x86_mmx_maskmovq: BuiltinName = "__builtin_ia32_maskmovq"; break; case Intrinsic::x86_mmx_movnt_dq: BuiltinName = "__builtin_ia32_movntq"; break; case Intrinsic::x86_mmx_packssdw: BuiltinName = "__builtin_ia32_packssdw"; break; case Intrinsic::x86_mmx_packsswb: BuiltinName = "__builtin_ia32_packsswb"; break; case Intrinsic::x86_mmx_packuswb: BuiltinName = "__builtin_ia32_packuswb"; break; case Intrinsic::x86_mmx_padd_b: BuiltinName = "__builtin_ia32_paddb"; break; case Intrinsic::x86_mmx_padd_d: BuiltinName = "__builtin_ia32_paddd"; break; case Intrinsic::x86_mmx_padd_q: BuiltinName = "__builtin_ia32_paddq"; break; case Intrinsic::x86_mmx_padd_w: BuiltinName = "__builtin_ia32_paddw"; break; case Intrinsic::x86_mmx_padds_b: BuiltinName = "__builtin_ia32_paddsb"; break; case Intrinsic::x86_mmx_padds_w: BuiltinName = "__builtin_ia32_paddsw"; break; case Intrinsic::x86_mmx_paddus_b: BuiltinName = "__builtin_ia32_paddusb"; break; case Intrinsic::x86_mmx_paddus_w: BuiltinName = "__builtin_ia32_paddusw"; break; case Intrinsic::x86_mmx_palignr_b: BuiltinName = "__builtin_ia32_palignr"; break; case Intrinsic::x86_mmx_pand: BuiltinName = "__builtin_ia32_pand"; break; case Intrinsic::x86_mmx_pandn: BuiltinName = "__builtin_ia32_pandn"; break; case Intrinsic::x86_mmx_pavg_b: BuiltinName = "__builtin_ia32_pavgb"; break; case Intrinsic::x86_mmx_pavg_w: BuiltinName = "__builtin_ia32_pavgw"; break; case Intrinsic::x86_mmx_pcmpeq_b: BuiltinName = "__builtin_ia32_pcmpeqb"; break; case Intrinsic::x86_mmx_pcmpeq_d: BuiltinName = "__builtin_ia32_pcmpeqd"; break; case Intrinsic::x86_mmx_pcmpeq_w: BuiltinName = "__builtin_ia32_pcmpeqw"; break; case Intrinsic::x86_mmx_pcmpgt_b: BuiltinName = "__builtin_ia32_pcmpgtb"; break; case Intrinsic::x86_mmx_pcmpgt_d: BuiltinName = "__builtin_ia32_pcmpgtd"; break; case Intrinsic::x86_mmx_pcmpgt_w: BuiltinName = "__builtin_ia32_pcmpgtw"; break; case Intrinsic::x86_mmx_pextr_w: BuiltinName = "__builtin_ia32_vec_ext_v4hi"; break; case Intrinsic::x86_mmx_pinsr_w: BuiltinName = "__builtin_ia32_vec_set_v4hi"; break; case Intrinsic::x86_mmx_pmadd_wd: BuiltinName = "__builtin_ia32_pmaddwd"; break; case Intrinsic::x86_mmx_pmaxs_w: BuiltinName = "__builtin_ia32_pmaxsw"; break; case Intrinsic::x86_mmx_pmaxu_b: BuiltinName = "__builtin_ia32_pmaxub"; break; case Intrinsic::x86_mmx_pmins_w: BuiltinName = "__builtin_ia32_pminsw"; break; case Intrinsic::x86_mmx_pminu_b: BuiltinName = "__builtin_ia32_pminub"; break; case Intrinsic::x86_mmx_pmovmskb: BuiltinName = "__builtin_ia32_pmovmskb"; break; case Intrinsic::x86_mmx_pmulh_w: BuiltinName = "__builtin_ia32_pmulhw"; break; case Intrinsic::x86_mmx_pmulhu_w: BuiltinName = "__builtin_ia32_pmulhuw"; break; case Intrinsic::x86_mmx_pmull_w: BuiltinName = "__builtin_ia32_pmullw"; break; case Intrinsic::x86_mmx_pmulu_dq: BuiltinName = "__builtin_ia32_pmuludq"; break; case Intrinsic::x86_mmx_por: BuiltinName = "__builtin_ia32_por"; break; case Intrinsic::x86_mmx_psad_bw: BuiltinName = "__builtin_ia32_psadbw"; break; case Intrinsic::x86_mmx_psll_d: BuiltinName = "__builtin_ia32_pslld"; break; case Intrinsic::x86_mmx_psll_q: BuiltinName = "__builtin_ia32_psllq"; break; case Intrinsic::x86_mmx_psll_w: BuiltinName = "__builtin_ia32_psllw"; break; case Intrinsic::x86_mmx_pslli_d: BuiltinName = "__builtin_ia32_pslldi"; break; case Intrinsic::x86_mmx_pslli_q: BuiltinName = "__builtin_ia32_psllqi"; break; case Intrinsic::x86_mmx_pslli_w: BuiltinName = "__builtin_ia32_psllwi"; break; case Intrinsic::x86_mmx_psra_d: BuiltinName = "__builtin_ia32_psrad"; break; case Intrinsic::x86_mmx_psra_w: BuiltinName = "__builtin_ia32_psraw"; break; case Intrinsic::x86_mmx_psrai_d: BuiltinName = "__builtin_ia32_psradi"; break; case Intrinsic::x86_mmx_psrai_w: BuiltinName = "__builtin_ia32_psrawi"; break; case Intrinsic::x86_mmx_psrl_d: BuiltinName = "__builtin_ia32_psrld"; break; case Intrinsic::x86_mmx_psrl_q: BuiltinName = "__builtin_ia32_psrlq"; break; case Intrinsic::x86_mmx_psrl_w: BuiltinName = "__builtin_ia32_psrlw"; break; case Intrinsic::x86_mmx_psrli_d: BuiltinName = "__builtin_ia32_psrldi"; break; case Intrinsic::x86_mmx_psrli_q: BuiltinName = "__builtin_ia32_psrlqi"; break; case Intrinsic::x86_mmx_psrli_w: BuiltinName = "__builtin_ia32_psrlwi"; break; case Intrinsic::x86_mmx_psub_b: BuiltinName = "__builtin_ia32_psubb"; break; case Intrinsic::x86_mmx_psub_d: BuiltinName = "__builtin_ia32_psubd"; break; case Intrinsic::x86_mmx_psub_q: BuiltinName = "__builtin_ia32_psubq"; break; case Intrinsic::x86_mmx_psub_w: BuiltinName = "__builtin_ia32_psubw"; break; case Intrinsic::x86_mmx_psubs_b: BuiltinName = "__builtin_ia32_psubsb"; break; case Intrinsic::x86_mmx_psubs_w: BuiltinName = "__builtin_ia32_psubsw"; break; case Intrinsic::x86_mmx_psubus_b: BuiltinName = "__builtin_ia32_psubusb"; break; case Intrinsic::x86_mmx_psubus_w: BuiltinName = "__builtin_ia32_psubusw"; break; case Intrinsic::x86_mmx_punpckhbw: BuiltinName = "__builtin_ia32_punpckhbw"; break; case Intrinsic::x86_mmx_punpckhdq: BuiltinName = "__builtin_ia32_punpckhdq"; break; case Intrinsic::x86_mmx_punpckhwd: BuiltinName = "__builtin_ia32_punpckhwd"; break; case Intrinsic::x86_mmx_punpcklbw: BuiltinName = "__builtin_ia32_punpcklbw"; break; case Intrinsic::x86_mmx_punpckldq: BuiltinName = "__builtin_ia32_punpckldq"; break; case Intrinsic::x86_mmx_punpcklwd: BuiltinName = "__builtin_ia32_punpcklwd"; break; case Intrinsic::x86_mmx_pxor: BuiltinName = "__builtin_ia32_pxor"; break; case Intrinsic::x86_sse2_add_sd: BuiltinName = "__builtin_ia32_addsd"; break; case Intrinsic::x86_sse2_clflush: BuiltinName = "__builtin_ia32_clflush"; break; case Intrinsic::x86_sse2_comieq_sd: BuiltinName = "__builtin_ia32_comisdeq"; break; case Intrinsic::x86_sse2_comige_sd: BuiltinName = "__builtin_ia32_comisdge"; break; case Intrinsic::x86_sse2_comigt_sd: BuiltinName = "__builtin_ia32_comisdgt"; break; case Intrinsic::x86_sse2_comile_sd: BuiltinName = "__builtin_ia32_comisdle"; break; case Intrinsic::x86_sse2_comilt_sd: BuiltinName = "__builtin_ia32_comisdlt"; break; case Intrinsic::x86_sse2_comineq_sd: BuiltinName = "__builtin_ia32_comisdneq"; break; case Intrinsic::x86_sse2_cvtdq2pd: BuiltinName = "__builtin_ia32_cvtdq2pd"; break; case Intrinsic::x86_sse2_cvtdq2ps: BuiltinName = "__builtin_ia32_cvtdq2ps"; break; case Intrinsic::x86_sse2_cvtpd2dq: BuiltinName = "__builtin_ia32_cvtpd2dq"; break; case Intrinsic::x86_sse2_cvtpd2ps: BuiltinName = "__builtin_ia32_cvtpd2ps"; break; case Intrinsic::x86_sse2_cvtps2dq: BuiltinName = "__builtin_ia32_cvtps2dq"; break; case Intrinsic::x86_sse2_cvtps2pd: BuiltinName = "__builtin_ia32_cvtps2pd"; break; case Intrinsic::x86_sse2_cvtsd2si: BuiltinName = "__builtin_ia32_cvtsd2si"; break; case Intrinsic::x86_sse2_cvtsd2si64: BuiltinName = "__builtin_ia32_cvtsd2si64"; break; case Intrinsic::x86_sse2_cvtsd2ss: BuiltinName = "__builtin_ia32_cvtsd2ss"; break; case Intrinsic::x86_sse2_cvtsi2sd: BuiltinName = "__builtin_ia32_cvtsi2sd"; break; case Intrinsic::x86_sse2_cvtsi642sd: BuiltinName = "__builtin_ia32_cvtsi642sd"; break; case Intrinsic::x86_sse2_cvtss2sd: BuiltinName = "__builtin_ia32_cvtss2sd"; break; case Intrinsic::x86_sse2_cvttpd2dq: BuiltinName = "__builtin_ia32_cvttpd2dq"; break; case Intrinsic::x86_sse2_cvttps2dq: BuiltinName = "__builtin_ia32_cvttps2dq"; break; case Intrinsic::x86_sse2_cvttsd2si: BuiltinName = "__builtin_ia32_cvttsd2si"; break; case Intrinsic::x86_sse2_cvttsd2si64: BuiltinName = "__builtin_ia32_cvttsd2si64"; break; case Intrinsic::x86_sse2_div_sd: BuiltinName = "__builtin_ia32_divsd"; break; case Intrinsic::x86_sse2_lfence: BuiltinName = "__builtin_ia32_lfence"; break; case Intrinsic::x86_sse2_maskmov_dqu: BuiltinName = "__builtin_ia32_maskmovdqu"; break; case Intrinsic::x86_sse2_max_pd: BuiltinName = "__builtin_ia32_maxpd"; break; case Intrinsic::x86_sse2_max_sd: BuiltinName = "__builtin_ia32_maxsd"; break; case Intrinsic::x86_sse2_mfence: BuiltinName = "__builtin_ia32_mfence"; break; case Intrinsic::x86_sse2_min_pd: BuiltinName = "__builtin_ia32_minpd"; break; case Intrinsic::x86_sse2_min_sd: BuiltinName = "__builtin_ia32_minsd"; break; case Intrinsic::x86_sse2_movmsk_pd: BuiltinName = "__builtin_ia32_movmskpd"; break; case Intrinsic::x86_sse2_mul_sd: BuiltinName = "__builtin_ia32_mulsd"; break; case Intrinsic::x86_sse2_packssdw_128: BuiltinName = "__builtin_ia32_packssdw128"; break; case Intrinsic::x86_sse2_packsswb_128: BuiltinName = "__builtin_ia32_packsswb128"; break; case Intrinsic::x86_sse2_packuswb_128: BuiltinName = "__builtin_ia32_packuswb128"; break; case Intrinsic::x86_sse2_padds_b: BuiltinName = "__builtin_ia32_paddsb128"; break; case Intrinsic::x86_sse2_padds_w: BuiltinName = "__builtin_ia32_paddsw128"; break; case Intrinsic::x86_sse2_paddus_b: BuiltinName = "__builtin_ia32_paddusb128"; break; case Intrinsic::x86_sse2_paddus_w: BuiltinName = "__builtin_ia32_paddusw128"; break; case Intrinsic::x86_sse2_pavg_b: BuiltinName = "__builtin_ia32_pavgb128"; break; case Intrinsic::x86_sse2_pavg_w: BuiltinName = "__builtin_ia32_pavgw128"; break; case Intrinsic::x86_sse2_pcmpeq_b: BuiltinName = "__builtin_ia32_pcmpeqb128"; break; case Intrinsic::x86_sse2_pcmpeq_d: BuiltinName = "__builtin_ia32_pcmpeqd128"; break; case Intrinsic::x86_sse2_pcmpeq_w: BuiltinName = "__builtin_ia32_pcmpeqw128"; break; case Intrinsic::x86_sse2_pcmpgt_b: BuiltinName = "__builtin_ia32_pcmpgtb128"; break; case Intrinsic::x86_sse2_pcmpgt_d: BuiltinName = "__builtin_ia32_pcmpgtd128"; break; case Intrinsic::x86_sse2_pcmpgt_w: BuiltinName = "__builtin_ia32_pcmpgtw128"; break; case Intrinsic::x86_sse2_pmadd_wd: BuiltinName = "__builtin_ia32_pmaddwd128"; break; case Intrinsic::x86_sse2_pmaxs_w: BuiltinName = "__builtin_ia32_pmaxsw128"; break; case Intrinsic::x86_sse2_pmaxu_b: BuiltinName = "__builtin_ia32_pmaxub128"; break; case Intrinsic::x86_sse2_pmins_w: BuiltinName = "__builtin_ia32_pminsw128"; break; case Intrinsic::x86_sse2_pminu_b: BuiltinName = "__builtin_ia32_pminub128"; break; case Intrinsic::x86_sse2_pmovmskb_128: BuiltinName = "__builtin_ia32_pmovmskb128"; break; case Intrinsic::x86_sse2_pmulh_w: BuiltinName = "__builtin_ia32_pmulhw128"; break; case Intrinsic::x86_sse2_pmulhu_w: BuiltinName = "__builtin_ia32_pmulhuw128"; break; case Intrinsic::x86_sse2_pmulu_dq: BuiltinName = "__builtin_ia32_pmuludq128"; break; case Intrinsic::x86_sse2_psad_bw: BuiltinName = "__builtin_ia32_psadbw128"; break; case Intrinsic::x86_sse2_psll_d: BuiltinName = "__builtin_ia32_pslld128"; break; case Intrinsic::x86_sse2_psll_dq: BuiltinName = "__builtin_ia32_pslldqi128"; break; case Intrinsic::x86_sse2_psll_dq_bs: BuiltinName = "__builtin_ia32_pslldqi128_byteshift"; break; case Intrinsic::x86_sse2_psll_q: BuiltinName = "__builtin_ia32_psllq128"; break; case Intrinsic::x86_sse2_psll_w: BuiltinName = "__builtin_ia32_psllw128"; break; case Intrinsic::x86_sse2_pslli_d: BuiltinName = "__builtin_ia32_pslldi128"; break; case Intrinsic::x86_sse2_pslli_q: BuiltinName = "__builtin_ia32_psllqi128"; break; case Intrinsic::x86_sse2_pslli_w: BuiltinName = "__builtin_ia32_psllwi128"; break; case Intrinsic::x86_sse2_psra_d: BuiltinName = "__builtin_ia32_psrad128"; break; case Intrinsic::x86_sse2_psra_w: BuiltinName = "__builtin_ia32_psraw128"; break; case Intrinsic::x86_sse2_psrai_d: BuiltinName = "__builtin_ia32_psradi128"; break; case Intrinsic::x86_sse2_psrai_w: BuiltinName = "__builtin_ia32_psrawi128"; break; case Intrinsic::x86_sse2_psrl_d: BuiltinName = "__builtin_ia32_psrld128"; break; case Intrinsic::x86_sse2_psrl_dq: BuiltinName = "__builtin_ia32_psrldqi128"; break; case Intrinsic::x86_sse2_psrl_dq_bs: BuiltinName = "__builtin_ia32_psrldqi128_byteshift"; break; case Intrinsic::x86_sse2_psrl_q: BuiltinName = "__builtin_ia32_psrlq128"; break; case Intrinsic::x86_sse2_psrl_w: BuiltinName = "__builtin_ia32_psrlw128"; break; case Intrinsic::x86_sse2_psrli_d: BuiltinName = "__builtin_ia32_psrldi128"; break; case Intrinsic::x86_sse2_psrli_q: BuiltinName = "__builtin_ia32_psrlqi128"; break; case Intrinsic::x86_sse2_psrli_w: BuiltinName = "__builtin_ia32_psrlwi128"; break; case Intrinsic::x86_sse2_psubs_b: BuiltinName = "__builtin_ia32_psubsb128"; break; case Intrinsic::x86_sse2_psubs_w: BuiltinName = "__builtin_ia32_psubsw128"; break; case Intrinsic::x86_sse2_psubus_b: BuiltinName = "__builtin_ia32_psubusb128"; break; case Intrinsic::x86_sse2_psubus_w: BuiltinName = "__builtin_ia32_psubusw128"; break; case Intrinsic::x86_sse2_sqrt_pd: BuiltinName = "__builtin_ia32_sqrtpd"; break; case Intrinsic::x86_sse2_sqrt_sd: BuiltinName = "__builtin_ia32_sqrtsd"; break; case Intrinsic::x86_sse2_storel_dq: BuiltinName = "__builtin_ia32_storelv4si"; break; case Intrinsic::x86_sse2_storeu_dq: BuiltinName = "__builtin_ia32_storedqu"; break; case Intrinsic::x86_sse2_storeu_pd: BuiltinName = "__builtin_ia32_storeupd"; break; case Intrinsic::x86_sse2_sub_sd: BuiltinName = "__builtin_ia32_subsd"; break; case Intrinsic::x86_sse2_ucomieq_sd: BuiltinName = "__builtin_ia32_ucomisdeq"; break; case Intrinsic::x86_sse2_ucomige_sd: BuiltinName = "__builtin_ia32_ucomisdge"; break; case Intrinsic::x86_sse2_ucomigt_sd: BuiltinName = "__builtin_ia32_ucomisdgt"; break; case Intrinsic::x86_sse2_ucomile_sd: BuiltinName = "__builtin_ia32_ucomisdle"; break; case Intrinsic::x86_sse2_ucomilt_sd: BuiltinName = "__builtin_ia32_ucomisdlt"; break; case Intrinsic::x86_sse2_ucomineq_sd: BuiltinName = "__builtin_ia32_ucomisdneq"; break; case Intrinsic::x86_sse3_addsub_pd: BuiltinName = "__builtin_ia32_addsubpd"; break; case Intrinsic::x86_sse3_addsub_ps: BuiltinName = "__builtin_ia32_addsubps"; break; case Intrinsic::x86_sse3_hadd_pd: BuiltinName = "__builtin_ia32_haddpd"; break; case Intrinsic::x86_sse3_hadd_ps: BuiltinName = "__builtin_ia32_haddps"; break; case Intrinsic::x86_sse3_hsub_pd: BuiltinName = "__builtin_ia32_hsubpd"; break; case Intrinsic::x86_sse3_hsub_ps: BuiltinName = "__builtin_ia32_hsubps"; break; case Intrinsic::x86_sse3_ldu_dq: BuiltinName = "__builtin_ia32_lddqu"; break; case Intrinsic::x86_sse3_monitor: BuiltinName = "__builtin_ia32_monitor"; break; case Intrinsic::x86_sse3_mwait: BuiltinName = "__builtin_ia32_mwait"; break; case Intrinsic::x86_sse41_blendpd: BuiltinName = "__builtin_ia32_blendpd"; break; case Intrinsic::x86_sse41_blendps: BuiltinName = "__builtin_ia32_blendps"; break; case Intrinsic::x86_sse41_blendvpd: BuiltinName = "__builtin_ia32_blendvpd"; break; case Intrinsic::x86_sse41_blendvps: BuiltinName = "__builtin_ia32_blendvps"; break; case Intrinsic::x86_sse41_dppd: BuiltinName = "__builtin_ia32_dppd"; break; case Intrinsic::x86_sse41_dpps: BuiltinName = "__builtin_ia32_dpps"; break; case Intrinsic::x86_sse41_extractps: BuiltinName = "__builtin_ia32_extractps128"; break; case Intrinsic::x86_sse41_insertps: BuiltinName = "__builtin_ia32_insertps128"; break; case Intrinsic::x86_sse41_movntdqa: BuiltinName = "__builtin_ia32_movntdqa"; break; case Intrinsic::x86_sse41_mpsadbw: BuiltinName = "__builtin_ia32_mpsadbw128"; break; case Intrinsic::x86_sse41_packusdw: BuiltinName = "__builtin_ia32_packusdw128"; break; case Intrinsic::x86_sse41_pblendvb: BuiltinName = "__builtin_ia32_pblendvb128"; break; case Intrinsic::x86_sse41_pblendw: BuiltinName = "__builtin_ia32_pblendw128"; break; case Intrinsic::x86_sse41_pcmpeqq: BuiltinName = "__builtin_ia32_pcmpeqq"; break; case Intrinsic::x86_sse41_phminposuw: BuiltinName = "__builtin_ia32_phminposuw128"; break; case Intrinsic::x86_sse41_pmaxsb: BuiltinName = "__builtin_ia32_pmaxsb128"; break; case Intrinsic::x86_sse41_pmaxsd: BuiltinName = "__builtin_ia32_pmaxsd128"; break; case Intrinsic::x86_sse41_pmaxud: BuiltinName = "__builtin_ia32_pmaxud128"; break; case Intrinsic::x86_sse41_pmaxuw: BuiltinName = "__builtin_ia32_pmaxuw128"; break; case Intrinsic::x86_sse41_pminsb: BuiltinName = "__builtin_ia32_pminsb128"; break; case Intrinsic::x86_sse41_pminsd: BuiltinName = "__builtin_ia32_pminsd128"; break; case Intrinsic::x86_sse41_pminud: BuiltinName = "__builtin_ia32_pminud128"; break; case Intrinsic::x86_sse41_pminuw: BuiltinName = "__builtin_ia32_pminuw128"; break; case Intrinsic::x86_sse41_pmovsxbd: BuiltinName = "__builtin_ia32_pmovsxbd128"; break; case Intrinsic::x86_sse41_pmovsxbq: BuiltinName = "__builtin_ia32_pmovsxbq128"; break; case Intrinsic::x86_sse41_pmovsxbw: BuiltinName = "__builtin_ia32_pmovsxbw128"; break; case Intrinsic::x86_sse41_pmovsxdq: BuiltinName = "__builtin_ia32_pmovsxdq128"; break; case Intrinsic::x86_sse41_pmovsxwd: BuiltinName = "__builtin_ia32_pmovsxwd128"; break; case Intrinsic::x86_sse41_pmovsxwq: BuiltinName = "__builtin_ia32_pmovsxwq128"; break; case Intrinsic::x86_sse41_pmovzxbd: BuiltinName = "__builtin_ia32_pmovzxbd128"; break; case Intrinsic::x86_sse41_pmovzxbq: BuiltinName = "__builtin_ia32_pmovzxbq128"; break; case Intrinsic::x86_sse41_pmovzxbw: BuiltinName = "__builtin_ia32_pmovzxbw128"; break; case Intrinsic::x86_sse41_pmovzxdq: BuiltinName = "__builtin_ia32_pmovzxdq128"; break; case Intrinsic::x86_sse41_pmovzxwd: BuiltinName = "__builtin_ia32_pmovzxwd128"; break; case Intrinsic::x86_sse41_pmovzxwq: BuiltinName = "__builtin_ia32_pmovzxwq128"; break; case Intrinsic::x86_sse41_pmuldq: BuiltinName = "__builtin_ia32_pmuldq128"; break; case Intrinsic::x86_sse41_ptestc: BuiltinName = "__builtin_ia32_ptestc128"; break; case Intrinsic::x86_sse41_ptestnzc: BuiltinName = "__builtin_ia32_ptestnzc128"; break; case Intrinsic::x86_sse41_ptestz: BuiltinName = "__builtin_ia32_ptestz128"; break; case Intrinsic::x86_sse41_round_pd: BuiltinName = "__builtin_ia32_roundpd"; break; case Intrinsic::x86_sse41_round_ps: BuiltinName = "__builtin_ia32_roundps"; break; case Intrinsic::x86_sse41_round_sd: BuiltinName = "__builtin_ia32_roundsd"; break; case Intrinsic::x86_sse41_round_ss: BuiltinName = "__builtin_ia32_roundss"; break; case Intrinsic::x86_sse42_crc32_32_16: BuiltinName = "__builtin_ia32_crc32hi"; break; case Intrinsic::x86_sse42_crc32_32_32: BuiltinName = "__builtin_ia32_crc32si"; break; case Intrinsic::x86_sse42_crc32_32_8: BuiltinName = "__builtin_ia32_crc32qi"; break; case Intrinsic::x86_sse42_crc32_64_64: BuiltinName = "__builtin_ia32_crc32di"; break; case Intrinsic::x86_sse42_pcmpestri128: BuiltinName = "__builtin_ia32_pcmpestri128"; break; case Intrinsic::x86_sse42_pcmpestria128: BuiltinName = "__builtin_ia32_pcmpestria128"; break; case Intrinsic::x86_sse42_pcmpestric128: BuiltinName = "__builtin_ia32_pcmpestric128"; break; case Intrinsic::x86_sse42_pcmpestrio128: BuiltinName = "__builtin_ia32_pcmpestrio128"; break; case Intrinsic::x86_sse42_pcmpestris128: BuiltinName = "__builtin_ia32_pcmpestris128"; break; case Intrinsic::x86_sse42_pcmpestriz128: BuiltinName = "__builtin_ia32_pcmpestriz128"; break; case Intrinsic::x86_sse42_pcmpestrm128: BuiltinName = "__builtin_ia32_pcmpestrm128"; break; case Intrinsic::x86_sse42_pcmpgtq: BuiltinName = "__builtin_ia32_pcmpgtq"; break; case Intrinsic::x86_sse42_pcmpistri128: BuiltinName = "__builtin_ia32_pcmpistri128"; break; case Intrinsic::x86_sse42_pcmpistria128: BuiltinName = "__builtin_ia32_pcmpistria128"; break; case Intrinsic::x86_sse42_pcmpistric128: BuiltinName = "__builtin_ia32_pcmpistric128"; break; case Intrinsic::x86_sse42_pcmpistrio128: BuiltinName = "__builtin_ia32_pcmpistrio128"; break; case Intrinsic::x86_sse42_pcmpistris128: BuiltinName = "__builtin_ia32_pcmpistris128"; break; case Intrinsic::x86_sse42_pcmpistriz128: BuiltinName = "__builtin_ia32_pcmpistriz128"; break; case Intrinsic::x86_sse42_pcmpistrm128: BuiltinName = "__builtin_ia32_pcmpistrm128"; break; case Intrinsic::x86_sse_add_ss: BuiltinName = "__builtin_ia32_addss"; break; case Intrinsic::x86_sse_comieq_ss: BuiltinName = "__builtin_ia32_comieq"; break; case Intrinsic::x86_sse_comige_ss: BuiltinName = "__builtin_ia32_comige"; break; case Intrinsic::x86_sse_comigt_ss: BuiltinName = "__builtin_ia32_comigt"; break; case Intrinsic::x86_sse_comile_ss: BuiltinName = "__builtin_ia32_comile"; break; case Intrinsic::x86_sse_comilt_ss: BuiltinName = "__builtin_ia32_comilt"; break; case Intrinsic::x86_sse_comineq_ss: BuiltinName = "__builtin_ia32_comineq"; break; case Intrinsic::x86_sse_cvtpd2pi: BuiltinName = "__builtin_ia32_cvtpd2pi"; break; case Intrinsic::x86_sse_cvtpi2pd: BuiltinName = "__builtin_ia32_cvtpi2pd"; break; case Intrinsic::x86_sse_cvtpi2ps: BuiltinName = "__builtin_ia32_cvtpi2ps"; break; case Intrinsic::x86_sse_cvtps2pi: BuiltinName = "__builtin_ia32_cvtps2pi"; break; case Intrinsic::x86_sse_cvtsi2ss: BuiltinName = "__builtin_ia32_cvtsi2ss"; break; case Intrinsic::x86_sse_cvtsi642ss: BuiltinName = "__builtin_ia32_cvtsi642ss"; break; case Intrinsic::x86_sse_cvtss2si: BuiltinName = "__builtin_ia32_cvtss2si"; break; case Intrinsic::x86_sse_cvtss2si64: BuiltinName = "__builtin_ia32_cvtss2si64"; break; case Intrinsic::x86_sse_cvttpd2pi: BuiltinName = "__builtin_ia32_cvttpd2pi"; break; case Intrinsic::x86_sse_cvttps2pi: BuiltinName = "__builtin_ia32_cvttps2pi"; break; case Intrinsic::x86_sse_cvttss2si: BuiltinName = "__builtin_ia32_cvttss2si"; break; case Intrinsic::x86_sse_cvttss2si64: BuiltinName = "__builtin_ia32_cvttss2si64"; break; case Intrinsic::x86_sse_div_ss: BuiltinName = "__builtin_ia32_divss"; break; case Intrinsic::x86_sse_max_ps: BuiltinName = "__builtin_ia32_maxps"; break; case Intrinsic::x86_sse_max_ss: BuiltinName = "__builtin_ia32_maxss"; break; case Intrinsic::x86_sse_min_ps: BuiltinName = "__builtin_ia32_minps"; break; case Intrinsic::x86_sse_min_ss: BuiltinName = "__builtin_ia32_minss"; break; case Intrinsic::x86_sse_movmsk_ps: BuiltinName = "__builtin_ia32_movmskps"; break; case Intrinsic::x86_sse_mul_ss: BuiltinName = "__builtin_ia32_mulss"; break; case Intrinsic::x86_sse_pshuf_w: BuiltinName = "__builtin_ia32_pshufw"; break; case Intrinsic::x86_sse_rcp_ps: BuiltinName = "__builtin_ia32_rcpps"; break; case Intrinsic::x86_sse_rcp_ss: BuiltinName = "__builtin_ia32_rcpss"; break; case Intrinsic::x86_sse_rsqrt_ps: BuiltinName = "__builtin_ia32_rsqrtps"; break; case Intrinsic::x86_sse_rsqrt_ss: BuiltinName = "__builtin_ia32_rsqrtss"; break; case Intrinsic::x86_sse_sfence: BuiltinName = "__builtin_ia32_sfence"; break; case Intrinsic::x86_sse_sqrt_ps: BuiltinName = "__builtin_ia32_sqrtps"; break; case Intrinsic::x86_sse_sqrt_ss: BuiltinName = "__builtin_ia32_sqrtss"; break; case Intrinsic::x86_sse_storeu_ps: BuiltinName = "__builtin_ia32_storeups"; break; case Intrinsic::x86_sse_sub_ss: BuiltinName = "__builtin_ia32_subss"; break; case Intrinsic::x86_sse_ucomieq_ss: BuiltinName = "__builtin_ia32_ucomieq"; break; case Intrinsic::x86_sse_ucomige_ss: BuiltinName = "__builtin_ia32_ucomige"; break; case Intrinsic::x86_sse_ucomigt_ss: BuiltinName = "__builtin_ia32_ucomigt"; break; case Intrinsic::x86_sse_ucomile_ss: BuiltinName = "__builtin_ia32_ucomile"; break; case Intrinsic::x86_sse_ucomilt_ss: BuiltinName = "__builtin_ia32_ucomilt"; break; case Intrinsic::x86_sse_ucomineq_ss: BuiltinName = "__builtin_ia32_ucomineq"; break; case Intrinsic::x86_ssse3_pabs_b: BuiltinName = "__builtin_ia32_pabsb"; break; case Intrinsic::x86_ssse3_pabs_b_128: BuiltinName = "__builtin_ia32_pabsb128"; break; case Intrinsic::x86_ssse3_pabs_d: BuiltinName = "__builtin_ia32_pabsd"; break; case Intrinsic::x86_ssse3_pabs_d_128: BuiltinName = "__builtin_ia32_pabsd128"; break; case Intrinsic::x86_ssse3_pabs_w: BuiltinName = "__builtin_ia32_pabsw"; break; case Intrinsic::x86_ssse3_pabs_w_128: BuiltinName = "__builtin_ia32_pabsw128"; break; case Intrinsic::x86_ssse3_phadd_d: BuiltinName = "__builtin_ia32_phaddd"; break; case Intrinsic::x86_ssse3_phadd_d_128: BuiltinName = "__builtin_ia32_phaddd128"; break; case Intrinsic::x86_ssse3_phadd_sw: BuiltinName = "__builtin_ia32_phaddsw"; break; case Intrinsic::x86_ssse3_phadd_sw_128: BuiltinName = "__builtin_ia32_phaddsw128"; break; case Intrinsic::x86_ssse3_phadd_w: BuiltinName = "__builtin_ia32_phaddw"; break; case Intrinsic::x86_ssse3_phadd_w_128: BuiltinName = "__builtin_ia32_phaddw128"; break; case Intrinsic::x86_ssse3_phsub_d: BuiltinName = "__builtin_ia32_phsubd"; break; case Intrinsic::x86_ssse3_phsub_d_128: BuiltinName = "__builtin_ia32_phsubd128"; break; case Intrinsic::x86_ssse3_phsub_sw: BuiltinName = "__builtin_ia32_phsubsw"; break; case Intrinsic::x86_ssse3_phsub_sw_128: BuiltinName = "__builtin_ia32_phsubsw128"; break; case Intrinsic::x86_ssse3_phsub_w: BuiltinName = "__builtin_ia32_phsubw"; break; case Intrinsic::x86_ssse3_phsub_w_128: BuiltinName = "__builtin_ia32_phsubw128"; break; case Intrinsic::x86_ssse3_pmadd_ub_sw: BuiltinName = "__builtin_ia32_pmaddubsw"; break; case Intrinsic::x86_ssse3_pmadd_ub_sw_128: BuiltinName = "__builtin_ia32_pmaddubsw128"; break; case Intrinsic::x86_ssse3_pmul_hr_sw: BuiltinName = "__builtin_ia32_pmulhrsw"; break; case Intrinsic::x86_ssse3_pmul_hr_sw_128: BuiltinName = "__builtin_ia32_pmulhrsw128"; break; case Intrinsic::x86_ssse3_pshuf_b: BuiltinName = "__builtin_ia32_pshufb"; break; case Intrinsic::x86_ssse3_pshuf_b_128: BuiltinName = "__builtin_ia32_pshufb128"; break; case Intrinsic::x86_ssse3_psign_b: BuiltinName = "__builtin_ia32_psignb"; break; case Intrinsic::x86_ssse3_psign_b_128: BuiltinName = "__builtin_ia32_psignb128"; break; case Intrinsic::x86_ssse3_psign_d: BuiltinName = "__builtin_ia32_psignd"; break; case Intrinsic::x86_ssse3_psign_d_128: BuiltinName = "__builtin_ia32_psignd128"; break; case Intrinsic::x86_ssse3_psign_w: BuiltinName = "__builtin_ia32_psignw"; break; case Intrinsic::x86_ssse3_psign_w_128: BuiltinName = "__builtin_ia32_psignw128"; break; } #endif // Get the LLVM intrinsic that corresponds to a GCC builtin. // This is used by the C front-end. The GCC builtin name is passed // in as BuiltinName, and a target prefix (e.g. 'ppc') is passed // in as TargetPrefix. The result is assigned to 'IntrinsicID'. #ifdef GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN Intrinsic::ID Intrinsic::getIntrinsicForGCCBuiltin(const char *TargetPrefixStr, const char *BuiltinNameStr) { StringRef BuiltinName(BuiltinNameStr); StringRef TargetPrefix(TargetPrefixStr); /* Target Independent Builtins */ { switch (BuiltinName.size()) { default: break; case 14: // 3 strings to match. if (BuiltinName.substr(0, 2) != "__") break; switch (BuiltinName[2]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(3, 11) != "uiltin_trap") break; return Intrinsic::trap; // "__builtin_trap" case 'g': // 2 strings to match. if (BuiltinName.substr(3, 3) != "nu_") break; switch (BuiltinName[6]) { default: break; case 'f': // 1 string to match. if (BuiltinName.substr(7, 7) != "2h_ieee") break; return Intrinsic::convert_to_fp16; // "__gnu_f2h_ieee" case 'h': // 1 string to match. if (BuiltinName.substr(7, 7) != "2f_ieee") break; return Intrinsic::convert_from_fp16; // "__gnu_h2f_ieee" } break; } break; case 20: // 2 strings to match. if (BuiltinName.substr(0, 10) != "__builtin_") break; switch (BuiltinName[10]) { default: break; case 'f': // 1 string to match. if (BuiltinName.substr(11, 9) != "lt_rounds") break; return Intrinsic::flt_rounds; // "__builtin_flt_rounds" case 's': // 1 string to match. if (BuiltinName.substr(11, 9) != "tack_save") break; return Intrinsic::stacksave; // "__builtin_stack_save" } break; case 21: // 2 strings to match. if (BuiltinName.substr(0, 10) != "__builtin_") break; switch (BuiltinName[10]) { default: break; case 'o': // 1 string to match. if (BuiltinName.substr(11, 10) != "bject_size") break; return Intrinsic::objectsize; // "__builtin_object_size" case 'u': // 1 string to match. if (BuiltinName.substr(11, 10) != "nwind_init") break; return Intrinsic::eh_unwind_init; // "__builtin_unwind_init" } break; case 23: // 1 string to match. if (BuiltinName.substr(0, 23) != "__builtin_stack_restore") break; return Intrinsic::stackrestore; // "__builtin_stack_restore" case 25: // 1 string to match. if (BuiltinName.substr(0, 25) != "__builtin_init_trampoline") break; return Intrinsic::init_trampoline; // "__builtin_init_trampoline" case 27: // 1 string to match. if (BuiltinName.substr(0, 27) != "__builtin_adjust_trampoline") break; return Intrinsic::adjust_trampoline; // "__builtin_adjust_trampoline" } } if (TargetPrefix == "x86") { switch (BuiltinName.size()) { default: break; case 18: // 1 string to match. if (BuiltinName.substr(0, 18) != "__builtin_ia32_por") break; return Intrinsic::x86_mmx_por; // "__builtin_ia32_por" case 19: // 5 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'd': // 2 strings to match. if (BuiltinName.substr(16, 2) != "pp") break; switch (BuiltinName[18]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_dppd; // "__builtin_ia32_dppd" case 's': // 1 string to match. return Intrinsic::x86_sse41_dpps; // "__builtin_ia32_dpps" } break; case 'e': // 1 string to match. if (BuiltinName.substr(16, 3) != "mms") break; return Intrinsic::x86_mmx_emms; // "__builtin_ia32_emms" case 'p': // 2 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 1 string to match. if (BuiltinName.substr(17, 2) != "nd") break; return Intrinsic::x86_mmx_pand; // "__builtin_ia32_pand" case 'x': // 1 string to match. if (BuiltinName.substr(17, 2) != "or") break; return Intrinsic::x86_mmx_pxor; // "__builtin_ia32_pxor" } break; } break; case 20: // 54 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(16, 3) != "dds") break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_add_sd; // "__builtin_ia32_addsd" case 's': // 1 string to match. return Intrinsic::x86_sse_add_ss; // "__builtin_ia32_addss" } break; case 'd': // 2 strings to match. if (BuiltinName.substr(16, 3) != "ivs") break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_div_sd; // "__builtin_ia32_divsd" case 's': // 1 string to match. return Intrinsic::x86_sse_div_ss; // "__builtin_ia32_divss" } break; case 'f': // 1 string to match. if (BuiltinName.substr(16, 4) != "emms") break; return Intrinsic::x86_mmx_femms; // "__builtin_ia32_femms" case 'l': // 1 string to match. if (BuiltinName.substr(16, 4) != "ddqu") break; return Intrinsic::x86_sse3_ldu_dq; // "__builtin_ia32_lddqu" case 'm': // 11 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 4 strings to match. if (BuiltinName[17] != 'x') break; switch (BuiltinName[18]) { default: break; case 'p': // 2 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_max_pd; // "__builtin_ia32_maxpd" case 's': // 1 string to match. return Intrinsic::x86_sse_max_ps; // "__builtin_ia32_maxps" } break; case 's': // 2 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_max_sd; // "__builtin_ia32_maxsd" case 's': // 1 string to match. return Intrinsic::x86_sse_max_ss; // "__builtin_ia32_maxss" } break; } break; case 'i': // 4 strings to match. if (BuiltinName[17] != 'n') break; switch (BuiltinName[18]) { default: break; case 'p': // 2 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_min_pd; // "__builtin_ia32_minpd" case 's': // 1 string to match. return Intrinsic::x86_sse_min_ps; // "__builtin_ia32_minps" } break; case 's': // 2 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_min_sd; // "__builtin_ia32_minsd" case 's': // 1 string to match. return Intrinsic::x86_sse_min_ss; // "__builtin_ia32_minss" } break; } break; case 'u': // 2 strings to match. if (BuiltinName.substr(17, 2) != "ls") break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_mul_sd; // "__builtin_ia32_mulsd" case 's': // 1 string to match. return Intrinsic::x86_sse_mul_ss; // "__builtin_ia32_mulss" } break; case 'w': // 1 string to match. if (BuiltinName.substr(17, 3) != "ait") break; return Intrinsic::x86_sse3_mwait; // "__builtin_ia32_mwait" } break; case 'p': // 33 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 10 strings to match. switch (BuiltinName[17]) { default: break; case 'b': // 3 strings to match. if (BuiltinName[18] != 's') break; switch (BuiltinName[19]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_ssse3_pabs_b; // "__builtin_ia32_pabsb" case 'd': // 1 string to match. return Intrinsic::x86_ssse3_pabs_d; // "__builtin_ia32_pabsd" case 'w': // 1 string to match. return Intrinsic::x86_ssse3_pabs_w; // "__builtin_ia32_pabsw" } break; case 'd': // 4 strings to match. if (BuiltinName[18] != 'd') break; switch (BuiltinName[19]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_padd_b; // "__builtin_ia32_paddb" case 'd': // 1 string to match. return Intrinsic::x86_mmx_padd_d; // "__builtin_ia32_paddd" case 'q': // 1 string to match. return Intrinsic::x86_mmx_padd_q; // "__builtin_ia32_paddq" case 'w': // 1 string to match. return Intrinsic::x86_mmx_padd_w; // "__builtin_ia32_paddw" } break; case 'n': // 1 string to match. if (BuiltinName.substr(18, 2) != "dn") break; return Intrinsic::x86_mmx_pandn; // "__builtin_ia32_pandn" case 'v': // 2 strings to match. if (BuiltinName[18] != 'g') break; switch (BuiltinName[19]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_pavg_b; // "__builtin_ia32_pavgb" case 'w': // 1 string to match. return Intrinsic::x86_mmx_pavg_w; // "__builtin_ia32_pavgw" } break; } break; case 'f': // 9 strings to match. switch (BuiltinName[17]) { default: break; case '2': // 2 strings to match. if (BuiltinName[18] != 'i') break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_3dnow_pf2id; // "__builtin_ia32_pf2id" case 'w': // 1 string to match. return Intrinsic::x86_3dnowa_pf2iw; // "__builtin_ia32_pf2iw" } break; case 'a': // 2 strings to match. switch (BuiltinName[18]) { default: break; case 'c': // 1 string to match. if (BuiltinName[19] != 'c') break; return Intrinsic::x86_3dnow_pfacc; // "__builtin_ia32_pfacc" case 'd': // 1 string to match. if (BuiltinName[19] != 'd') break; return Intrinsic::x86_3dnow_pfadd; // "__builtin_ia32_pfadd" } break; case 'm': // 3 strings to match. switch (BuiltinName[18]) { default: break; case 'a': // 1 string to match. if (BuiltinName[19] != 'x') break; return Intrinsic::x86_3dnow_pfmax; // "__builtin_ia32_pfmax" case 'i': // 1 string to match. if (BuiltinName[19] != 'n') break; return Intrinsic::x86_3dnow_pfmin; // "__builtin_ia32_pfmin" case 'u': // 1 string to match. if (BuiltinName[19] != 'l') break; return Intrinsic::x86_3dnow_pfmul; // "__builtin_ia32_pfmul" } break; case 'r': // 1 string to match. if (BuiltinName.substr(18, 2) != "cp") break; return Intrinsic::x86_3dnow_pfrcp; // "__builtin_ia32_pfrcp" case 's': // 1 string to match. if (BuiltinName.substr(18, 2) != "ub") break; return Intrinsic::x86_3dnow_pfsub; // "__builtin_ia32_pfsub" } break; case 'i': // 2 strings to match. if (BuiltinName.substr(17, 2) != "2f") break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_3dnow_pi2fd; // "__builtin_ia32_pi2fd" case 'w': // 1 string to match. return Intrinsic::x86_3dnowa_pi2fw; // "__builtin_ia32_pi2fw" } break; case 's': // 12 strings to match. switch (BuiltinName[17]) { default: break; case 'l': // 3 strings to match. if (BuiltinName[18] != 'l') break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_mmx_psll_d; // "__builtin_ia32_pslld" case 'q': // 1 string to match. return Intrinsic::x86_mmx_psll_q; // "__builtin_ia32_psllq" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psll_w; // "__builtin_ia32_psllw" } break; case 'r': // 5 strings to match. switch (BuiltinName[18]) { default: break; case 'a': // 2 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_mmx_psra_d; // "__builtin_ia32_psrad" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psra_w; // "__builtin_ia32_psraw" } break; case 'l': // 3 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_mmx_psrl_d; // "__builtin_ia32_psrld" case 'q': // 1 string to match. return Intrinsic::x86_mmx_psrl_q; // "__builtin_ia32_psrlq" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psrl_w; // "__builtin_ia32_psrlw" } break; } break; case 'u': // 4 strings to match. if (BuiltinName[18] != 'b') break; switch (BuiltinName[19]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_psub_b; // "__builtin_ia32_psubb" case 'd': // 1 string to match. return Intrinsic::x86_mmx_psub_d; // "__builtin_ia32_psubd" case 'q': // 1 string to match. return Intrinsic::x86_mmx_psub_q; // "__builtin_ia32_psubq" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psub_w; // "__builtin_ia32_psubw" } break; } break; } break; case 'r': // 2 strings to match. if (BuiltinName.substr(16, 2) != "cp") break; switch (BuiltinName[18]) { default: break; case 'p': // 1 string to match. if (BuiltinName[19] != 's') break; return Intrinsic::x86_sse_rcp_ps; // "__builtin_ia32_rcpps" case 's': // 1 string to match. if (BuiltinName[19] != 's') break; return Intrinsic::x86_sse_rcp_ss; // "__builtin_ia32_rcpss" } break; case 's': // 2 strings to match. if (BuiltinName.substr(16, 3) != "ubs") break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_sub_sd; // "__builtin_ia32_subsd" case 's': // 1 string to match. return Intrinsic::x86_sse_sub_ss; // "__builtin_ia32_subss" } break; } break; case 21: // 47 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'c': // 5 strings to match. if (BuiltinName.substr(16, 3) != "omi") break; switch (BuiltinName[19]) { default: break; case 'e': // 1 string to match. if (BuiltinName[20] != 'q') break; return Intrinsic::x86_sse_comieq_ss; // "__builtin_ia32_comieq" case 'g': // 2 strings to match. switch (BuiltinName[20]) { default: break; case 'e': // 1 string to match. return Intrinsic::x86_sse_comige_ss; // "__builtin_ia32_comige" case 't': // 1 string to match. return Intrinsic::x86_sse_comigt_ss; // "__builtin_ia32_comigt" } break; case 'l': // 2 strings to match. switch (BuiltinName[20]) { default: break; case 'e': // 1 string to match. return Intrinsic::x86_sse_comile_ss; // "__builtin_ia32_comile" case 't': // 1 string to match. return Intrinsic::x86_sse_comilt_ss; // "__builtin_ia32_comilt" } break; } break; case 'h': // 4 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(17, 3) != "ddp") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse3_hadd_pd; // "__builtin_ia32_haddpd" case 's': // 1 string to match. return Intrinsic::x86_sse3_hadd_ps; // "__builtin_ia32_haddps" } break; case 's': // 2 strings to match. if (BuiltinName.substr(17, 3) != "ubp") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse3_hsub_pd; // "__builtin_ia32_hsubpd" case 's': // 1 string to match. return Intrinsic::x86_sse3_hsub_ps; // "__builtin_ia32_hsubps" } break; } break; case 'l': // 1 string to match. if (BuiltinName.substr(16, 5) != "fence") break; return Intrinsic::x86_sse2_lfence; // "__builtin_ia32_lfence" case 'm': // 2 strings to match. switch (BuiltinName[16]) { default: break; case 'f': // 1 string to match. if (BuiltinName.substr(17, 4) != "ence") break; return Intrinsic::x86_sse2_mfence; // "__builtin_ia32_mfence" case 'o': // 1 string to match. if (BuiltinName.substr(17, 4) != "vntq") break; return Intrinsic::x86_mmx_movnt_dq; // "__builtin_ia32_movntq" } break; case 'p': // 30 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(17, 3) != "dds") break; switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_padds_b; // "__builtin_ia32_paddsb" case 'w': // 1 string to match. return Intrinsic::x86_mmx_padds_w; // "__builtin_ia32_paddsw" } break; case 'f': // 2 strings to match. switch (BuiltinName[17]) { default: break; case 'n': // 1 string to match. if (BuiltinName.substr(18, 3) != "acc") break; return Intrinsic::x86_3dnowa_pfnacc; // "__builtin_ia32_pfnacc" case 's': // 1 string to match. if (BuiltinName.substr(18, 3) != "ubr") break; return Intrinsic::x86_3dnow_pfsubr; // "__builtin_ia32_pfsubr" } break; case 'h': // 4 strings to match. switch (BuiltinName[17]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(18, 2) != "dd") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_ssse3_phadd_d; // "__builtin_ia32_phaddd" case 'w': // 1 string to match. return Intrinsic::x86_ssse3_phadd_w; // "__builtin_ia32_phaddw" } break; case 's': // 2 strings to match. if (BuiltinName.substr(18, 2) != "ub") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_ssse3_phsub_d; // "__builtin_ia32_phsubd" case 'w': // 1 string to match. return Intrinsic::x86_ssse3_phsub_w; // "__builtin_ia32_phsubw" } break; } break; case 'm': // 6 strings to match. switch (BuiltinName[17]) { default: break; case 'a': // 2 strings to match. if (BuiltinName[18] != 'x') break; switch (BuiltinName[19]) { default: break; case 's': // 1 string to match. if (BuiltinName[20] != 'w') break; return Intrinsic::x86_mmx_pmaxs_w; // "__builtin_ia32_pmaxsw" case 'u': // 1 string to match. if (BuiltinName[20] != 'b') break; return Intrinsic::x86_mmx_pmaxu_b; // "__builtin_ia32_pmaxub" } break; case 'i': // 2 strings to match. if (BuiltinName[18] != 'n') break; switch (BuiltinName[19]) { default: break; case 's': // 1 string to match. if (BuiltinName[20] != 'w') break; return Intrinsic::x86_mmx_pmins_w; // "__builtin_ia32_pminsw" case 'u': // 1 string to match. if (BuiltinName[20] != 'b') break; return Intrinsic::x86_mmx_pminu_b; // "__builtin_ia32_pminub" } break; case 'u': // 2 strings to match. if (BuiltinName[18] != 'l') break; switch (BuiltinName[19]) { default: break; case 'h': // 1 string to match. if (BuiltinName[20] != 'w') break; return Intrinsic::x86_mmx_pmulh_w; // "__builtin_ia32_pmulhw" case 'l': // 1 string to match. if (BuiltinName[20] != 'w') break; return Intrinsic::x86_mmx_pmull_w; // "__builtin_ia32_pmullw" } break; } break; case 's': // 16 strings to match. switch (BuiltinName[17]) { default: break; case 'a': // 1 string to match. if (BuiltinName.substr(18, 3) != "dbw") break; return Intrinsic::x86_mmx_psad_bw; // "__builtin_ia32_psadbw" case 'h': // 2 strings to match. if (BuiltinName.substr(18, 2) != "uf") break; switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_ssse3_pshuf_b; // "__builtin_ia32_pshufb" case 'w': // 1 string to match. return Intrinsic::x86_sse_pshuf_w; // "__builtin_ia32_pshufw" } break; case 'i': // 3 strings to match. if (BuiltinName.substr(18, 2) != "gn") break; switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_ssse3_psign_b; // "__builtin_ia32_psignb" case 'd': // 1 string to match. return Intrinsic::x86_ssse3_psign_d; // "__builtin_ia32_psignd" case 'w': // 1 string to match. return Intrinsic::x86_ssse3_psign_w; // "__builtin_ia32_psignw" } break; case 'l': // 3 strings to match. if (BuiltinName[18] != 'l') break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName[20] != 'i') break; return Intrinsic::x86_mmx_pslli_d; // "__builtin_ia32_pslldi" case 'q': // 1 string to match. if (BuiltinName[20] != 'i') break; return Intrinsic::x86_mmx_pslli_q; // "__builtin_ia32_psllqi" case 'w': // 1 string to match. if (BuiltinName[20] != 'i') break; return Intrinsic::x86_mmx_pslli_w; // "__builtin_ia32_psllwi" } break; case 'r': // 5 strings to match. switch (BuiltinName[18]) { default: break; case 'a': // 2 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName[20] != 'i') break; return Intrinsic::x86_mmx_psrai_d; // "__builtin_ia32_psradi" case 'w': // 1 string to match. if (BuiltinName[20] != 'i') break; return Intrinsic::x86_mmx_psrai_w; // "__builtin_ia32_psrawi" } break; case 'l': // 3 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName[20] != 'i') break; return Intrinsic::x86_mmx_psrli_d; // "__builtin_ia32_psrldi" case 'q': // 1 string to match. if (BuiltinName[20] != 'i') break; return Intrinsic::x86_mmx_psrli_q; // "__builtin_ia32_psrlqi" case 'w': // 1 string to match. if (BuiltinName[20] != 'i') break; return Intrinsic::x86_mmx_psrli_w; // "__builtin_ia32_psrlwi" } break; } break; case 'u': // 2 strings to match. if (BuiltinName.substr(18, 2) != "bs") break; switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_psubs_b; // "__builtin_ia32_psubsb" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psubs_w; // "__builtin_ia32_psubsw" } break; } break; } break; case 's': // 5 strings to match. switch (BuiltinName[16]) { default: break; case 'f': // 1 string to match. if (BuiltinName.substr(17, 4) != "ence") break; return Intrinsic::x86_sse_sfence; // "__builtin_ia32_sfence" case 'q': // 4 strings to match. if (BuiltinName.substr(17, 2) != "rt") break; switch (BuiltinName[19]) { default: break; case 'p': // 2 strings to match. switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_sqrt_pd; // "__builtin_ia32_sqrtpd" case 's': // 1 string to match. return Intrinsic::x86_sse_sqrt_ps; // "__builtin_ia32_sqrtps" } break; case 's': // 2 strings to match. switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_sqrt_sd; // "__builtin_ia32_sqrtsd" case 's': // 1 string to match. return Intrinsic::x86_sse_sqrt_ss; // "__builtin_ia32_sqrtss" } break; } break; } break; } break; case 22: // 46 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'b': // 2 strings to match. if (BuiltinName.substr(16, 5) != "lendp") break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_blendpd; // "__builtin_ia32_blendpd" case 's': // 1 string to match. return Intrinsic::x86_sse41_blendps; // "__builtin_ia32_blendps" } break; case 'c': // 6 strings to match. switch (BuiltinName[16]) { default: break; case 'l': // 1 string to match. if (BuiltinName.substr(17, 5) != "flush") break; return Intrinsic::x86_sse2_clflush; // "__builtin_ia32_clflush" case 'o': // 1 string to match. if (BuiltinName.substr(17, 5) != "mineq") break; return Intrinsic::x86_sse_comineq_ss; // "__builtin_ia32_comineq" case 'r': // 4 strings to match. if (BuiltinName.substr(17, 3) != "c32") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName[21] != 'i') break; return Intrinsic::x86_sse42_crc32_64_64; // "__builtin_ia32_crc32di" case 'h': // 1 string to match. if (BuiltinName[21] != 'i') break; return Intrinsic::x86_sse42_crc32_32_16; // "__builtin_ia32_crc32hi" case 'q': // 1 string to match. if (BuiltinName[21] != 'i') break; return Intrinsic::x86_sse42_crc32_32_8; // "__builtin_ia32_crc32qi" case 's': // 1 string to match. if (BuiltinName[21] != 'i') break; return Intrinsic::x86_sse42_crc32_32_32; // "__builtin_ia32_crc32si" } break; } break; case 'd': // 1 string to match. if (BuiltinName.substr(16, 6) != "pps256") break; return Intrinsic::x86_avx_dp_ps_256; // "__builtin_ia32_dpps256" case 'm': // 1 string to match. if (BuiltinName.substr(16, 6) != "onitor") break; return Intrinsic::x86_sse3_monitor; // "__builtin_ia32_monitor" case 'p': // 25 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 4 strings to match. switch (BuiltinName[17]) { default: break; case 'd': // 2 strings to match. if (BuiltinName.substr(18, 3) != "dus") break; switch (BuiltinName[21]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_paddus_b; // "__builtin_ia32_paddusb" case 'w': // 1 string to match. return Intrinsic::x86_mmx_paddus_w; // "__builtin_ia32_paddusw" } break; case 'l': // 1 string to match. if (BuiltinName.substr(18, 4) != "ignr") break; return Intrinsic::x86_mmx_palignr_b; // "__builtin_ia32_palignr" case 'v': // 1 string to match. if (BuiltinName.substr(18, 4) != "gusb") break; return Intrinsic::x86_3dnow_pavgusb; // "__builtin_ia32_pavgusb" } break; case 'c': // 8 strings to match. if (BuiltinName.substr(17, 2) != "mp") break; switch (BuiltinName[19]) { default: break; case 'e': // 4 strings to match. if (BuiltinName[20] != 'q') break; switch (BuiltinName[21]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_pcmpeq_b; // "__builtin_ia32_pcmpeqb" case 'd': // 1 string to match. return Intrinsic::x86_mmx_pcmpeq_d; // "__builtin_ia32_pcmpeqd" case 'q': // 1 string to match. return Intrinsic::x86_sse41_pcmpeqq; // "__builtin_ia32_pcmpeqq" case 'w': // 1 string to match. return Intrinsic::x86_mmx_pcmpeq_w; // "__builtin_ia32_pcmpeqw" } break; case 'g': // 4 strings to match. if (BuiltinName[20] != 't') break; switch (BuiltinName[21]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_pcmpgt_b; // "__builtin_ia32_pcmpgtb" case 'd': // 1 string to match. return Intrinsic::x86_mmx_pcmpgt_d; // "__builtin_ia32_pcmpgtd" case 'q': // 1 string to match. return Intrinsic::x86_sse42_pcmpgtq; // "__builtin_ia32_pcmpgtq" case 'w': // 1 string to match. return Intrinsic::x86_mmx_pcmpgt_w; // "__builtin_ia32_pcmpgtw" } break; } break; case 'f': // 5 strings to match. switch (BuiltinName[17]) { default: break; case 'c': // 3 strings to match. if (BuiltinName.substr(18, 2) != "mp") break; switch (BuiltinName[20]) { default: break; case 'e': // 1 string to match. if (BuiltinName[21] != 'q') break; return Intrinsic::x86_3dnow_pfcmpeq; // "__builtin_ia32_pfcmpeq" case 'g': // 2 strings to match. switch (BuiltinName[21]) { default: break; case 'e': // 1 string to match. return Intrinsic::x86_3dnow_pfcmpge; // "__builtin_ia32_pfcmpge" case 't': // 1 string to match. return Intrinsic::x86_3dnow_pfcmpgt; // "__builtin_ia32_pfcmpgt" } break; } break; case 'p': // 1 string to match. if (BuiltinName.substr(18, 4) != "nacc") break; return Intrinsic::x86_3dnowa_pfpnacc; // "__builtin_ia32_pfpnacc" case 'r': // 1 string to match. if (BuiltinName.substr(18, 4) != "sqrt") break; return Intrinsic::x86_3dnow_pfrsqrt; // "__builtin_ia32_pfrsqrt" } break; case 'h': // 2 strings to match. switch (BuiltinName[17]) { default: break; case 'a': // 1 string to match. if (BuiltinName.substr(18, 4) != "ddsw") break; return Intrinsic::x86_ssse3_phadd_sw; // "__builtin_ia32_phaddsw" case 's': // 1 string to match. if (BuiltinName.substr(18, 4) != "ubsw") break; return Intrinsic::x86_ssse3_phsub_sw; // "__builtin_ia32_phsubsw" } break; case 'm': // 4 strings to match. switch (BuiltinName[17]) { default: break; case 'a': // 1 string to match. if (BuiltinName.substr(18, 4) != "ddwd") break; return Intrinsic::x86_mmx_pmadd_wd; // "__builtin_ia32_pmaddwd" case 'u': // 3 strings to match. if (BuiltinName[18] != 'l') break; switch (BuiltinName[19]) { default: break; case 'h': // 2 strings to match. switch (BuiltinName[20]) { default: break; case 'r': // 1 string to match. if (BuiltinName[21] != 'w') break; return Intrinsic::x86_3dnow_pmulhrw; // "__builtin_ia32_pmulhrw" case 'u': // 1 string to match. if (BuiltinName[21] != 'w') break; return Intrinsic::x86_mmx_pmulhu_w; // "__builtin_ia32_pmulhuw" } break; case 'u': // 1 string to match. if (BuiltinName.substr(20, 2) != "dq") break; return Intrinsic::x86_mmx_pmulu_dq; // "__builtin_ia32_pmuludq" } break; } break; case 's': // 2 strings to match. if (BuiltinName.substr(17, 4) != "ubus") break; switch (BuiltinName[21]) { default: break; case 'b': // 1 string to match. return Intrinsic::x86_mmx_psubus_b; // "__builtin_ia32_psubusb" case 'w': // 1 string to match. return Intrinsic::x86_mmx_psubus_w; // "__builtin_ia32_psubusw" } break; } break; case 'r': // 6 strings to match. switch (BuiltinName[16]) { default: break; case 'o': // 4 strings to match. if (BuiltinName.substr(17, 3) != "und") break; switch (BuiltinName[20]) { default: break; case 'p': // 2 strings to match. switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_round_pd; // "__builtin_ia32_roundpd" case 's': // 1 string to match. return Intrinsic::x86_sse41_round_ps; // "__builtin_ia32_roundps" } break; case 's': // 2 strings to match. switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_round_sd; // "__builtin_ia32_roundsd" case 's': // 1 string to match. return Intrinsic::x86_sse41_round_ss; // "__builtin_ia32_roundss" } break; } break; case 's': // 2 strings to match. if (BuiltinName.substr(17, 3) != "qrt") break; switch (BuiltinName[20]) { default: break; case 'p': // 1 string to match. if (BuiltinName[21] != 's') break; return Intrinsic::x86_sse_rsqrt_ps; // "__builtin_ia32_rsqrtps" case 's': // 1 string to match. if (BuiltinName[21] != 's') break; return Intrinsic::x86_sse_rsqrt_ss; // "__builtin_ia32_rsqrtss" } break; } break; case 'u': // 5 strings to match. if (BuiltinName.substr(16, 4) != "comi") break; switch (BuiltinName[20]) { default: break; case 'e': // 1 string to match. if (BuiltinName[21] != 'q') break; return Intrinsic::x86_sse_ucomieq_ss; // "__builtin_ia32_ucomieq" case 'g': // 2 strings to match. switch (BuiltinName[21]) { default: break; case 'e': // 1 string to match. return Intrinsic::x86_sse_ucomige_ss; // "__builtin_ia32_ucomige" case 't': // 1 string to match. return Intrinsic::x86_sse_ucomigt_ss; // "__builtin_ia32_ucomigt" } break; case 'l': // 2 strings to match. switch (BuiltinName[21]) { default: break; case 'e': // 1 string to match. return Intrinsic::x86_sse_ucomile_ss; // "__builtin_ia32_ucomile" case 't': // 1 string to match. return Intrinsic::x86_sse_ucomilt_ss; // "__builtin_ia32_ucomilt" } break; } break; } break; case 23: // 67 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(16, 6) != "ddsubp") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse3_addsub_pd; // "__builtin_ia32_addsubpd" case 's': // 1 string to match. return Intrinsic::x86_sse3_addsub_ps; // "__builtin_ia32_addsubps" } break; case 'b': // 2 strings to match. if (BuiltinName.substr(16, 6) != "lendvp") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse41_blendvpd; // "__builtin_ia32_blendvpd" case 's': // 1 string to match. return Intrinsic::x86_sse41_blendvps; // "__builtin_ia32_blendvps" } break; case 'c': // 23 strings to match. switch (BuiltinName[16]) { default: break; case 'm': // 2 strings to match. if (BuiltinName.substr(17, 2) != "pp") break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 3) != "256") break; return Intrinsic::x86_avx_cmp_pd_256; // "__builtin_ia32_cmppd256" case 's': // 1 string to match. if (BuiltinName.substr(20, 3) != "256") break; return Intrinsic::x86_avx_cmp_ps_256; // "__builtin_ia32_cmpps256" } break; case 'o': // 5 strings to match. if (BuiltinName.substr(17, 4) != "misd") break; switch (BuiltinName[21]) { default: break; case 'e': // 1 string to match. if (BuiltinName[22] != 'q') break; return Intrinsic::x86_sse2_comieq_sd; // "__builtin_ia32_comisdeq" case 'g': // 2 strings to match. switch (BuiltinName[22]) { default: break; case 'e': // 1 string to match. return Intrinsic::x86_sse2_comige_sd; // "__builtin_ia32_comisdge" case 't': // 1 string to match. return Intrinsic::x86_sse2_comigt_sd; // "__builtin_ia32_comisdgt" } break; case 'l': // 2 strings to match. switch (BuiltinName[22]) { default: break; case 'e': // 1 string to match. return Intrinsic::x86_sse2_comile_sd; // "__builtin_ia32_comisdle" case 't': // 1 string to match. return Intrinsic::x86_sse2_comilt_sd; // "__builtin_ia32_comisdlt" } break; } break; case 'v': // 16 strings to match. if (BuiltinName[17] != 't') break; switch (BuiltinName[18]) { default: break; case 'd': // 2 strings to match. if (BuiltinName.substr(19, 3) != "q2p") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_cvtdq2pd; // "__builtin_ia32_cvtdq2pd" case 's': // 1 string to match. return Intrinsic::x86_sse2_cvtdq2ps; // "__builtin_ia32_cvtdq2ps" } break; case 'p': // 8 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 3 strings to match. if (BuiltinName[20] != '2') break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName[22] != 'q') break; return Intrinsic::x86_sse2_cvtpd2dq; // "__builtin_ia32_cvtpd2dq" case 'p': // 2 strings to match. switch (BuiltinName[22]) { default: break; case 'i': // 1 string to match. return Intrinsic::x86_sse_cvtpd2pi; // "__builtin_ia32_cvtpd2pi" case 's': // 1 string to match. return Intrinsic::x86_sse2_cvtpd2ps; // "__builtin_ia32_cvtpd2ps" } break; } break; case 'i': // 2 strings to match. if (BuiltinName.substr(20, 2) != "2p") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse_cvtpi2pd; // "__builtin_ia32_cvtpi2pd" case 's': // 1 string to match. return Intrinsic::x86_sse_cvtpi2ps; // "__builtin_ia32_cvtpi2ps" } break; case 's': // 3 strings to match. if (BuiltinName[20] != '2') break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName[22] != 'q') break; return Intrinsic::x86_sse2_cvtps2dq; // "__builtin_ia32_cvtps2dq" case 'p': // 2 strings to match. switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_cvtps2pd; // "__builtin_ia32_cvtps2pd" case 'i': // 1 string to match. return Intrinsic::x86_sse_cvtps2pi; // "__builtin_ia32_cvtps2pi" } break; } break; } break; case 's': // 6 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 2 strings to match. if (BuiltinName.substr(20, 2) != "2s") break; switch (BuiltinName[22]) { default: break; case 'i': // 1 string to match. return Intrinsic::x86_sse2_cvtsd2si; // "__builtin_ia32_cvtsd2si" case 's': // 1 string to match. return Intrinsic::x86_sse2_cvtsd2ss; // "__builtin_ia32_cvtsd2ss" } break; case 'i': // 2 strings to match. if (BuiltinName.substr(20, 2) != "2s") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_cvtsi2sd; // "__builtin_ia32_cvtsi2sd" case 's': // 1 string to match. return Intrinsic::x86_sse_cvtsi2ss; // "__builtin_ia32_cvtsi2ss" } break; case 's': // 2 strings to match. if (BuiltinName.substr(20, 2) != "2s") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_cvtss2sd; // "__builtin_ia32_cvtss2sd" case 'i': // 1 string to match. return Intrinsic::x86_sse_cvtss2si; // "__builtin_ia32_cvtss2si" } break; } break; } break; } break; case 'l': // 1 string to match. if (BuiltinName.substr(16, 7) != "ddqu256") break; return Intrinsic::x86_avx_ldu_dq_256; // "__builtin_ia32_lddqu256" case 'm': // 8 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 3 strings to match. switch (BuiltinName[17]) { default: break; case 's': // 1 string to match. if (BuiltinName.substr(18, 5) != "kmovq") break; return Intrinsic::x86_mmx_maskmovq; // "__builtin_ia32_maskmovq" case 'x': // 2 strings to match. if (BuiltinName[18] != 'p') break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 3) != "256") break; return Intrinsic::x86_avx_max_pd_256; // "__builtin_ia32_maxpd256" case 's': // 1 string to match. if (BuiltinName.substr(20, 3) != "256") break; return Intrinsic::x86_avx_max_ps_256; // "__builtin_ia32_maxps256" } break; } break; case 'i': // 2 strings to match. if (BuiltinName.substr(17, 2) != "np") break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 3) != "256") break; return Intrinsic::x86_avx_min_pd_256; // "__builtin_ia32_minpd256" case 's': // 1 string to match. if (BuiltinName.substr(20, 3) != "256") break; return Intrinsic::x86_avx_min_ps_256; // "__builtin_ia32_minps256" } break; case 'o': // 3 strings to match. if (BuiltinName[17] != 'v') break; switch (BuiltinName[18]) { default: break; case 'm': // 2 strings to match. if (BuiltinName.substr(19, 3) != "skp") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_movmsk_pd; // "__builtin_ia32_movmskpd" case 's': // 1 string to match. return Intrinsic::x86_sse_movmsk_ps; // "__builtin_ia32_movmskps" } break; case 'n': // 1 string to match. if (BuiltinName.substr(19, 4) != "tdqa") break; return Intrinsic::x86_sse41_movntdqa; // "__builtin_ia32_movntdqa" } break; } break; case 'p': // 21 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 8 strings to match. switch (BuiltinName[17]) { default: break; case 'b': // 3 strings to match. if (BuiltinName[18] != 's') break; switch (BuiltinName[19]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_ssse3_pabs_b_128; // "__builtin_ia32_pabsb128" case 'd': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_ssse3_pabs_d_128; // "__builtin_ia32_pabsd128" case 'w': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_ssse3_pabs_w_128; // "__builtin_ia32_pabsw128" } break; case 'c': // 3 strings to match. if (BuiltinName[18] != 'k') break; switch (BuiltinName[19]) { default: break; case 's': // 2 strings to match. if (BuiltinName[20] != 's') break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName[22] != 'w') break; return Intrinsic::x86_mmx_packssdw; // "__builtin_ia32_packssdw" case 'w': // 1 string to match. if (BuiltinName[22] != 'b') break; return Intrinsic::x86_mmx_packsswb; // "__builtin_ia32_packsswb" } break; case 'u': // 1 string to match. if (BuiltinName.substr(20, 3) != "swb") break; return Intrinsic::x86_mmx_packuswb; // "__builtin_ia32_packuswb" } break; case 'v': // 2 strings to match. if (BuiltinName[18] != 'g') break; switch (BuiltinName[19]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_sse2_pavg_b; // "__builtin_ia32_pavgb128" case 'w': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_sse2_pavg_w; // "__builtin_ia32_pavgw128" } break; } break; case 'f': // 3 strings to match. if (BuiltinName[17] != 'r') break; switch (BuiltinName[18]) { default: break; case 'c': // 2 strings to match. if (BuiltinName.substr(19, 3) != "pit") break; switch (BuiltinName[22]) { default: break; case '1': // 1 string to match. return Intrinsic::x86_3dnow_pfrcpit1; // "__builtin_ia32_pfrcpit1" case '2': // 1 string to match. return Intrinsic::x86_3dnow_pfrcpit2; // "__builtin_ia32_pfrcpit2" } break; case 's': // 1 string to match. if (BuiltinName.substr(19, 4) != "qit1") break; return Intrinsic::x86_3dnow_pfrsqit1; // "__builtin_ia32_pfrsqit1" } break; case 'm': // 2 strings to match. switch (BuiltinName[17]) { default: break; case 'o': // 1 string to match. if (BuiltinName.substr(18, 5) != "vmskb") break; return Intrinsic::x86_mmx_pmovmskb; // "__builtin_ia32_pmovmskb" case 'u': // 1 string to match. if (BuiltinName.substr(18, 5) != "lhrsw") break; return Intrinsic::x86_ssse3_pmul_hr_sw; // "__builtin_ia32_pmulhrsw" } break; case 's': // 8 strings to match. switch (BuiltinName[17]) { default: break; case 'l': // 3 strings to match. if (BuiltinName[18] != 'l') break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_sse2_psll_d; // "__builtin_ia32_pslld128" case 'q': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_sse2_psll_q; // "__builtin_ia32_psllq128" case 'w': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_sse2_psll_w; // "__builtin_ia32_psllw128" } break; case 'r': // 5 strings to match. switch (BuiltinName[18]) { default: break; case 'a': // 2 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_sse2_psra_d; // "__builtin_ia32_psrad128" case 'w': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_sse2_psra_w; // "__builtin_ia32_psraw128" } break; case 'l': // 3 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_sse2_psrl_d; // "__builtin_ia32_psrld128" case 'q': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_sse2_psrl_q; // "__builtin_ia32_psrlq128" case 'w': // 1 string to match. if (BuiltinName.substr(20, 3) != "128") break; return Intrinsic::x86_sse2_psrl_w; // "__builtin_ia32_psrlw128" } break; } break; } break; } break; case 'r': // 1 string to match. if (BuiltinName.substr(16, 7) != "cpps256") break; return Intrinsic::x86_avx_rcp_ps_256; // "__builtin_ia32_rcpps256" case 's': // 3 strings to match. if (BuiltinName.substr(16, 4) != "tore") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 2) != "qu") break; return Intrinsic::x86_sse2_storeu_dq; // "__builtin_ia32_storedqu" case 'u': // 2 strings to match. if (BuiltinName[21] != 'p') break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_storeu_pd; // "__builtin_ia32_storeupd" case 's': // 1 string to match. return Intrinsic::x86_sse_storeu_ps; // "__builtin_ia32_storeups" } break; } break; case 'u': // 1 string to match. if (BuiltinName.substr(16, 7) != "comineq") break; return Intrinsic::x86_sse_ucomineq_ss; // "__builtin_ia32_ucomineq" case 'v': // 5 strings to match. switch (BuiltinName[16]) { default: break; case 't': // 4 strings to match. if (BuiltinName.substr(17, 3) != "est") break; switch (BuiltinName[20]) { default: break; case 'c': // 2 strings to match. if (BuiltinName[21] != 'p') break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_vtestc_pd; // "__builtin_ia32_vtestcpd" case 's': // 1 string to match. return Intrinsic::x86_avx_vtestc_ps; // "__builtin_ia32_vtestcps" } break; case 'z': // 2 strings to match. if (BuiltinName[21] != 'p') break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_vtestz_pd; // "__builtin_ia32_vtestzpd" case 's': // 1 string to match. return Intrinsic::x86_avx_vtestz_ps; // "__builtin_ia32_vtestzps" } break; } break; case 'z': // 1 string to match. if (BuiltinName.substr(17, 6) != "eroall") break; return Intrinsic::x86_avx_vzeroall; // "__builtin_ia32_vzeroall" } break; } break; case 24: // 69 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'a': // 3 strings to match. if (BuiltinName.substr(16, 2) != "es") break; switch (BuiltinName[18]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(19, 5) != "ec128") break; return Intrinsic::x86_aesni_aesdec; // "__builtin_ia32_aesdec128" case 'e': // 1 string to match. if (BuiltinName.substr(19, 5) != "nc128") break; return Intrinsic::x86_aesni_aesenc; // "__builtin_ia32_aesenc128" case 'i': // 1 string to match. if (BuiltinName.substr(19, 5) != "mc128") break; return Intrinsic::x86_aesni_aesimc; // "__builtin_ia32_aesimc128" } break; case 'c': // 7 strings to match. switch (BuiltinName[16]) { default: break; case 'o': // 1 string to match. if (BuiltinName.substr(17, 7) != "misdneq") break; return Intrinsic::x86_sse2_comineq_sd; // "__builtin_ia32_comisdneq" case 'v': // 6 strings to match. if (BuiltinName.substr(17, 2) != "tt") break; switch (BuiltinName[19]) { default: break; case 'p': // 4 strings to match. switch (BuiltinName[20]) { default: break; case 'd': // 2 strings to match. if (BuiltinName[21] != '2') break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName[23] != 'q') break; return Intrinsic::x86_sse2_cvttpd2dq; // "__builtin_ia32_cvttpd2dq" case 'p': // 1 string to match. if (BuiltinName[23] != 'i') break; return Intrinsic::x86_sse_cvttpd2pi; // "__builtin_ia32_cvttpd2pi" } break; case 's': // 2 strings to match. if (BuiltinName[21] != '2') break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName[23] != 'q') break; return Intrinsic::x86_sse2_cvttps2dq; // "__builtin_ia32_cvttps2dq" case 'p': // 1 string to match. if (BuiltinName[23] != 'i') break; return Intrinsic::x86_sse_cvttps2pi; // "__builtin_ia32_cvttps2pi" } break; } break; case 's': // 2 strings to match. switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "2si") break; return Intrinsic::x86_sse2_cvttsd2si; // "__builtin_ia32_cvttsd2si" case 's': // 1 string to match. if (BuiltinName.substr(21, 3) != "2si") break; return Intrinsic::x86_sse_cvttss2si; // "__builtin_ia32_cvttss2si" } break; } break; } break; case 'h': // 4 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(17, 3) != "ddp") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "256") break; return Intrinsic::x86_avx_hadd_pd_256; // "__builtin_ia32_haddpd256" case 's': // 1 string to match. if (BuiltinName.substr(21, 3) != "256") break; return Intrinsic::x86_avx_hadd_ps_256; // "__builtin_ia32_haddps256" } break; case 's': // 2 strings to match. if (BuiltinName.substr(17, 3) != "ubp") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "256") break; return Intrinsic::x86_avx_hsub_pd_256; // "__builtin_ia32_hsubpd256" case 's': // 1 string to match. if (BuiltinName.substr(21, 3) != "256") break; return Intrinsic::x86_avx_hsub_ps_256; // "__builtin_ia32_hsubps256" } break; } break; case 'p': // 46 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(17, 3) != "dds") break; switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse2_padds_b; // "__builtin_ia32_paddsb128" case 'w': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse2_padds_w; // "__builtin_ia32_paddsw128" } break; case 'h': // 4 strings to match. switch (BuiltinName[17]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(18, 2) != "dd") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_ssse3_phadd_d_128; // "__builtin_ia32_phaddd128" case 'w': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_ssse3_phadd_w_128; // "__builtin_ia32_phaddw128" } break; case 's': // 2 strings to match. if (BuiltinName.substr(18, 2) != "ub") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_ssse3_phsub_d_128; // "__builtin_ia32_phsubd128" case 'w': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_ssse3_phsub_w_128; // "__builtin_ia32_phsubw128" } break; } break; case 'm': // 15 strings to match. switch (BuiltinName[17]) { default: break; case 'a': // 7 strings to match. switch (BuiltinName[18]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(19, 5) != "dubsw") break; return Intrinsic::x86_ssse3_pmadd_ub_sw; // "__builtin_ia32_pmaddubsw" case 'x': // 6 strings to match. switch (BuiltinName[19]) { default: break; case 's': // 3 strings to match. switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse41_pmaxsb; // "__builtin_ia32_pmaxsb128" case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse41_pmaxsd; // "__builtin_ia32_pmaxsd128" case 'w': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse2_pmaxs_w; // "__builtin_ia32_pmaxsw128" } break; case 'u': // 3 strings to match. switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse2_pmaxu_b; // "__builtin_ia32_pmaxub128" case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse41_pmaxud; // "__builtin_ia32_pmaxud128" case 'w': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse41_pmaxuw; // "__builtin_ia32_pmaxuw128" } break; } break; } break; case 'i': // 6 strings to match. if (BuiltinName[18] != 'n') break; switch (BuiltinName[19]) { default: break; case 's': // 3 strings to match. switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse41_pminsb; // "__builtin_ia32_pminsb128" case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse41_pminsd; // "__builtin_ia32_pminsd128" case 'w': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse2_pmins_w; // "__builtin_ia32_pminsw128" } break; case 'u': // 3 strings to match. switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse2_pminu_b; // "__builtin_ia32_pminub128" case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse41_pminud; // "__builtin_ia32_pminud128" case 'w': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse41_pminuw; // "__builtin_ia32_pminuw128" } break; } break; case 'u': // 2 strings to match. if (BuiltinName[18] != 'l') break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 4) != "q128") break; return Intrinsic::x86_sse41_pmuldq; // "__builtin_ia32_pmuldq128" case 'h': // 1 string to match. if (BuiltinName.substr(20, 4) != "w128") break; return Intrinsic::x86_sse2_pmulh_w; // "__builtin_ia32_pmulhw128" } break; } break; case 's': // 15 strings to match. switch (BuiltinName[17]) { default: break; case 'a': // 1 string to match. if (BuiltinName.substr(18, 6) != "dbw128") break; return Intrinsic::x86_sse2_psad_bw; // "__builtin_ia32_psadbw128" case 'h': // 1 string to match. if (BuiltinName.substr(18, 6) != "ufb128") break; return Intrinsic::x86_ssse3_pshuf_b_128; // "__builtin_ia32_pshufb128" case 'i': // 3 strings to match. if (BuiltinName.substr(18, 2) != "gn") break; switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_ssse3_psign_b_128; // "__builtin_ia32_psignb128" case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_ssse3_psign_d_128; // "__builtin_ia32_psignd128" case 'w': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_ssse3_psign_w_128; // "__builtin_ia32_psignw128" } break; case 'l': // 3 strings to match. if (BuiltinName[18] != 'l') break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 4) != "i128") break; return Intrinsic::x86_sse2_pslli_d; // "__builtin_ia32_pslldi128" case 'q': // 1 string to match. if (BuiltinName.substr(20, 4) != "i128") break; return Intrinsic::x86_sse2_pslli_q; // "__builtin_ia32_psllqi128" case 'w': // 1 string to match. if (BuiltinName.substr(20, 4) != "i128") break; return Intrinsic::x86_sse2_pslli_w; // "__builtin_ia32_psllwi128" } break; case 'r': // 5 strings to match. switch (BuiltinName[18]) { default: break; case 'a': // 2 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 4) != "i128") break; return Intrinsic::x86_sse2_psrai_d; // "__builtin_ia32_psradi128" case 'w': // 1 string to match. if (BuiltinName.substr(20, 4) != "i128") break; return Intrinsic::x86_sse2_psrai_w; // "__builtin_ia32_psrawi128" } break; case 'l': // 3 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 4) != "i128") break; return Intrinsic::x86_sse2_psrli_d; // "__builtin_ia32_psrldi128" case 'q': // 1 string to match. if (BuiltinName.substr(20, 4) != "i128") break; return Intrinsic::x86_sse2_psrli_q; // "__builtin_ia32_psrlqi128" case 'w': // 1 string to match. if (BuiltinName.substr(20, 4) != "i128") break; return Intrinsic::x86_sse2_psrli_w; // "__builtin_ia32_psrlwi128" } break; } break; case 'u': // 2 strings to match. if (BuiltinName.substr(18, 2) != "bs") break; switch (BuiltinName[20]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse2_psubs_b; // "__builtin_ia32_psubsb128" case 'w': // 1 string to match. if (BuiltinName.substr(21, 3) != "128") break; return Intrinsic::x86_sse2_psubs_w; // "__builtin_ia32_psubsw128" } break; } break; case 't': // 4 strings to match. if (BuiltinName.substr(17, 3) != "est") break; switch (BuiltinName[20]) { default: break; case 'c': // 2 strings to match. switch (BuiltinName[21]) { default: break; case '1': // 1 string to match. if (BuiltinName.substr(22, 2) != "28") break; return Intrinsic::x86_sse41_ptestc; // "__builtin_ia32_ptestc128" case '2': // 1 string to match. if (BuiltinName.substr(22, 2) != "56") break; return Intrinsic::x86_avx_ptestc_256; // "__builtin_ia32_ptestc256" } break; case 'z': // 2 strings to match. switch (BuiltinName[21]) { default: break; case '1': // 1 string to match. if (BuiltinName.substr(22, 2) != "28") break; return Intrinsic::x86_sse41_ptestz; // "__builtin_ia32_ptestz128" case '2': // 1 string to match. if (BuiltinName.substr(22, 2) != "56") break; return Intrinsic::x86_avx_ptestz_256; // "__builtin_ia32_ptestz256" } break; } break; case 'u': // 6 strings to match. if (BuiltinName.substr(17, 4) != "npck") break; switch (BuiltinName[21]) { default: break; case 'h': // 3 strings to match. switch (BuiltinName[22]) { default: break; case 'b': // 1 string to match. if (BuiltinName[23] != 'w') break; return Intrinsic::x86_mmx_punpckhbw; // "__builtin_ia32_punpckhbw" case 'd': // 1 string to match. if (BuiltinName[23] != 'q') break; return Intrinsic::x86_mmx_punpckhdq; // "__builtin_ia32_punpckhdq" case 'w': // 1 string to match. if (BuiltinName[23] != 'd') break; return Intrinsic::x86_mmx_punpckhwd; // "__builtin_ia32_punpckhwd" } break; case 'l': // 3 strings to match. switch (BuiltinName[22]) { default: break; case 'b': // 1 string to match. if (BuiltinName[23] != 'w') break; return Intrinsic::x86_mmx_punpcklbw; // "__builtin_ia32_punpcklbw" case 'd': // 1 string to match. if (BuiltinName[23] != 'q') break; return Intrinsic::x86_mmx_punpckldq; // "__builtin_ia32_punpckldq" case 'w': // 1 string to match. if (BuiltinName[23] != 'd') break; return Intrinsic::x86_mmx_punpcklwd; // "__builtin_ia32_punpcklwd" } break; } break; } break; case 's': // 2 strings to match. if (BuiltinName.substr(16, 4) != "qrtp") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 3) != "256") break; return Intrinsic::x86_avx_sqrt_pd_256; // "__builtin_ia32_sqrtpd256" case 's': // 1 string to match. if (BuiltinName.substr(21, 3) != "256") break; return Intrinsic::x86_avx_sqrt_ps_256; // "__builtin_ia32_sqrtps256" } break; case 'u': // 5 strings to match. if (BuiltinName.substr(16, 6) != "comisd") break; switch (BuiltinName[22]) { default: break; case 'e': // 1 string to match. if (BuiltinName[23] != 'q') break; return Intrinsic::x86_sse2_ucomieq_sd; // "__builtin_ia32_ucomisdeq" case 'g': // 2 strings to match. switch (BuiltinName[23]) { default: break; case 'e': // 1 string to match. return Intrinsic::x86_sse2_ucomige_sd; // "__builtin_ia32_ucomisdge" case 't': // 1 string to match. return Intrinsic::x86_sse2_ucomigt_sd; // "__builtin_ia32_ucomisdgt" } break; case 'l': // 2 strings to match. switch (BuiltinName[23]) { default: break; case 'e': // 1 string to match. return Intrinsic::x86_sse2_ucomile_sd; // "__builtin_ia32_ucomisdle" case 't': // 1 string to match. return Intrinsic::x86_sse2_ucomilt_sd; // "__builtin_ia32_ucomisdlt" } break; } break; case 'v': // 2 strings to match. if (BuiltinName.substr(16, 7) != "permilp") break; switch (BuiltinName[23]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_vpermil_pd; // "__builtin_ia32_vpermilpd" case 's': // 1 string to match. return Intrinsic::x86_avx_vpermil_ps; // "__builtin_ia32_vpermilps" } break; } break; case 25: // 42 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'b': // 2 strings to match. if (BuiltinName.substr(16, 5) != "lendp") break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(22, 3) != "256") break; return Intrinsic::x86_avx_blend_pd_256; // "__builtin_ia32_blendpd256" case 's': // 1 string to match. if (BuiltinName.substr(22, 3) != "256") break; return Intrinsic::x86_avx_blend_ps_256; // "__builtin_ia32_blendps256" } break; case 'c': // 4 strings to match. if (BuiltinName.substr(16, 3) != "vts") break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 5) != "2si64") break; return Intrinsic::x86_sse2_cvtsd2si64; // "__builtin_ia32_cvtsd2si64" case 'i': // 2 strings to match. if (BuiltinName.substr(20, 4) != "642s") break; switch (BuiltinName[24]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_sse2_cvtsi642sd; // "__builtin_ia32_cvtsi642sd" case 's': // 1 string to match. return Intrinsic::x86_sse_cvtsi642ss; // "__builtin_ia32_cvtsi642ss" } break; case 's': // 1 string to match. if (BuiltinName.substr(20, 5) != "2si64") break; return Intrinsic::x86_sse_cvtss2si64; // "__builtin_ia32_cvtss2si64" } break; case 'l': // 3 strings to match. if (BuiltinName.substr(16, 3) != "oad") break; switch (BuiltinName[19]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(20, 5) != "qu256") break; return Intrinsic::x86_avx_loadu_dq_256; // "__builtin_ia32_loaddqu256" case 'u': // 2 strings to match. if (BuiltinName[20] != 'p') break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(22, 3) != "256") break; return Intrinsic::x86_avx_loadu_pd_256; // "__builtin_ia32_loadupd256" case 's': // 1 string to match. if (BuiltinName.substr(22, 3) != "256") break; return Intrinsic::x86_avx_loadu_ps_256; // "__builtin_ia32_loadups256" } break; } break; case 'm': // 7 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 3 strings to match. if (BuiltinName.substr(17, 2) != "sk") break; switch (BuiltinName[19]) { default: break; case 'l': // 2 strings to match. if (BuiltinName.substr(20, 4) != "oadp") break; switch (BuiltinName[24]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_maskload_pd; // "__builtin_ia32_maskloadpd" case 's': // 1 string to match. return Intrinsic::x86_avx_maskload_ps; // "__builtin_ia32_maskloadps" } break; case 'm': // 1 string to match. if (BuiltinName.substr(20, 5) != "ovdqu") break; return Intrinsic::x86_sse2_maskmov_dqu; // "__builtin_ia32_maskmovdqu" } break; case 'o': // 3 strings to match. if (BuiltinName.substr(17, 3) != "vnt") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 4) != "q256") break; return Intrinsic::x86_avx_movnt_dq_256; // "__builtin_ia32_movntdq256" case 'p': // 2 strings to match. switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(22, 3) != "256") break; return Intrinsic::x86_avx_movnt_pd_256; // "__builtin_ia32_movntpd256" case 's': // 1 string to match. if (BuiltinName.substr(22, 3) != "256") break; return Intrinsic::x86_avx_movnt_ps_256; // "__builtin_ia32_movntps256" } break; } break; case 'p': // 1 string to match. if (BuiltinName.substr(17, 8) != "sadbw128") break; return Intrinsic::x86_sse41_mpsadbw; // "__builtin_ia32_mpsadbw128" } break; case 'p': // 18 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(17, 4) != "ddus") break; switch (BuiltinName[21]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(22, 3) != "128") break; return Intrinsic::x86_sse2_paddus_b; // "__builtin_ia32_paddusb128" case 'w': // 1 string to match. if (BuiltinName.substr(22, 3) != "128") break; return Intrinsic::x86_sse2_paddus_w; // "__builtin_ia32_paddusw128" } break; case 'b': // 1 string to match. if (BuiltinName.substr(17, 8) != "lendw128") break; return Intrinsic::x86_sse41_pblendw; // "__builtin_ia32_pblendw128" case 'c': // 6 strings to match. if (BuiltinName.substr(17, 2) != "mp") break; switch (BuiltinName[19]) { default: break; case 'e': // 3 strings to match. if (BuiltinName[20] != 'q') break; switch (BuiltinName[21]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(22, 3) != "128") break; return Intrinsic::x86_sse2_pcmpeq_b; // "__builtin_ia32_pcmpeqb128" case 'd': // 1 string to match. if (BuiltinName.substr(22, 3) != "128") break; return Intrinsic::x86_sse2_pcmpeq_d; // "__builtin_ia32_pcmpeqd128" case 'w': // 1 string to match. if (BuiltinName.substr(22, 3) != "128") break; return Intrinsic::x86_sse2_pcmpeq_w; // "__builtin_ia32_pcmpeqw128" } break; case 'g': // 3 strings to match. if (BuiltinName[20] != 't') break; switch (BuiltinName[21]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(22, 3) != "128") break; return Intrinsic::x86_sse2_pcmpgt_b; // "__builtin_ia32_pcmpgtb128" case 'd': // 1 string to match. if (BuiltinName.substr(22, 3) != "128") break; return Intrinsic::x86_sse2_pcmpgt_d; // "__builtin_ia32_pcmpgtd128" case 'w': // 1 string to match. if (BuiltinName.substr(22, 3) != "128") break; return Intrinsic::x86_sse2_pcmpgt_w; // "__builtin_ia32_pcmpgtw128" } break; } break; case 'h': // 2 strings to match. switch (BuiltinName[17]) { default: break; case 'a': // 1 string to match. if (BuiltinName.substr(18, 7) != "ddsw128") break; return Intrinsic::x86_ssse3_phadd_sw_128; // "__builtin_ia32_phaddsw128" case 's': // 1 string to match. if (BuiltinName.substr(18, 7) != "ubsw128") break; return Intrinsic::x86_ssse3_phsub_sw_128; // "__builtin_ia32_phsubsw128" } break; case 'm': // 3 strings to match. switch (BuiltinName[17]) { default: break; case 'a': // 1 string to match. if (BuiltinName.substr(18, 7) != "ddwd128") break; return Intrinsic::x86_sse2_pmadd_wd; // "__builtin_ia32_pmaddwd128" case 'u': // 2 strings to match. if (BuiltinName[18] != 'l') break; switch (BuiltinName[19]) { default: break; case 'h': // 1 string to match. if (BuiltinName.substr(20, 5) != "uw128") break; return Intrinsic::x86_sse2_pmulhu_w; // "__builtin_ia32_pmulhuw128" case 'u': // 1 string to match. if (BuiltinName.substr(20, 5) != "dq128") break; return Intrinsic::x86_sse2_pmulu_dq; // "__builtin_ia32_pmuludq128" } break; } break; case 's': // 4 strings to match. switch (BuiltinName[17]) { default: break; case 'l': // 1 string to match. if (BuiltinName.substr(18, 7) != "ldqi128") break; return Intrinsic::x86_sse2_psll_dq; // "__builtin_ia32_pslldqi128" case 'r': // 1 string to match. if (BuiltinName.substr(18, 7) != "ldqi128") break; return Intrinsic::x86_sse2_psrl_dq; // "__builtin_ia32_psrldqi128" case 'u': // 2 strings to match. if (BuiltinName.substr(18, 3) != "bus") break; switch (BuiltinName[21]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(22, 3) != "128") break; return Intrinsic::x86_sse2_psubus_b; // "__builtin_ia32_psubusb128" case 'w': // 1 string to match. if (BuiltinName.substr(22, 3) != "128") break; return Intrinsic::x86_sse2_psubus_w; // "__builtin_ia32_psubusw128" } break; } break; } break; case 'r': // 3 strings to match. switch (BuiltinName[16]) { default: break; case 'o': // 2 strings to match. if (BuiltinName.substr(17, 4) != "undp") break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(22, 3) != "256") break; return Intrinsic::x86_avx_round_pd_256; // "__builtin_ia32_roundpd256" case 's': // 1 string to match. if (BuiltinName.substr(22, 3) != "256") break; return Intrinsic::x86_avx_round_ps_256; // "__builtin_ia32_roundps256" } break; case 's': // 1 string to match. if (BuiltinName.substr(17, 8) != "qrtps256") break; return Intrinsic::x86_avx_rsqrt_ps_256; // "__builtin_ia32_rsqrtps256" } break; case 's': // 1 string to match. if (BuiltinName.substr(16, 9) != "torelv4si") break; return Intrinsic::x86_sse2_storel_dq; // "__builtin_ia32_storelv4si" case 'u': // 1 string to match. if (BuiltinName.substr(16, 9) != "comisdneq") break; return Intrinsic::x86_sse2_ucomineq_sd; // "__builtin_ia32_ucomisdneq" case 'v': // 3 strings to match. switch (BuiltinName[16]) { default: break; case 't': // 2 strings to match. if (BuiltinName.substr(17, 7) != "estnzcp") break; switch (BuiltinName[24]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_vtestnzc_pd; // "__builtin_ia32_vtestnzcpd" case 's': // 1 string to match. return Intrinsic::x86_avx_vtestnzc_ps; // "__builtin_ia32_vtestnzcps" } break; case 'z': // 1 string to match. if (BuiltinName.substr(17, 8) != "eroupper") break; return Intrinsic::x86_avx_vzeroupper; // "__builtin_ia32_vzeroupper" } break; } break; case 26: // 45 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(16, 6) != "ddsubp") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_addsub_pd_256; // "__builtin_ia32_addsubpd256" case 's': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_addsub_ps_256; // "__builtin_ia32_addsubps256" } break; case 'b': // 2 strings to match. if (BuiltinName.substr(16, 6) != "lendvp") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_blendv_pd_256; // "__builtin_ia32_blendvpd256" case 's': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_blendv_ps_256; // "__builtin_ia32_blendvps256" } break; case 'c': // 8 strings to match. if (BuiltinName.substr(16, 2) != "vt") break; switch (BuiltinName[18]) { default: break; case 'd': // 2 strings to match. if (BuiltinName.substr(19, 3) != "q2p") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_cvtdq2_pd_256; // "__builtin_ia32_cvtdq2pd256" case 's': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_cvtdq2_ps_256; // "__builtin_ia32_cvtdq2ps256" } break; case 'p': // 4 strings to match. switch (BuiltinName[19]) { default: break; case 'd': // 2 strings to match. if (BuiltinName[20] != '2') break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(22, 4) != "q256") break; return Intrinsic::x86_avx_cvt_pd2dq_256; // "__builtin_ia32_cvtpd2dq256" case 'p': // 1 string to match. if (BuiltinName.substr(22, 4) != "s256") break; return Intrinsic::x86_avx_cvt_pd2_ps_256; // "__builtin_ia32_cvtpd2ps256" } break; case 's': // 2 strings to match. if (BuiltinName[20] != '2') break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(22, 4) != "q256") break; return Intrinsic::x86_avx_cvt_ps2dq_256; // "__builtin_ia32_cvtps2dq256" case 'p': // 1 string to match. if (BuiltinName.substr(22, 4) != "d256") break; return Intrinsic::x86_avx_cvt_ps2_pd_256; // "__builtin_ia32_cvtps2pd256" } break; } break; case 't': // 2 strings to match. if (BuiltinName[19] != 's') break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 5) != "2si64") break; return Intrinsic::x86_sse2_cvttsd2si64; // "__builtin_ia32_cvttsd2si64" case 's': // 1 string to match. if (BuiltinName.substr(21, 5) != "2si64") break; return Intrinsic::x86_sse_cvttss2si64; // "__builtin_ia32_cvttss2si64" } break; } break; case 'i': // 1 string to match. if (BuiltinName.substr(16, 10) != "nsertps128") break; return Intrinsic::x86_sse41_insertps; // "__builtin_ia32_insertps128" case 'm': // 4 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(17, 8) != "skstorep") break; switch (BuiltinName[25]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_maskstore_pd; // "__builtin_ia32_maskstorepd" case 's': // 1 string to match. return Intrinsic::x86_avx_maskstore_ps; // "__builtin_ia32_maskstoreps" } break; case 'o': // 2 strings to match. if (BuiltinName.substr(17, 5) != "vmskp") break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_movmsk_pd_256; // "__builtin_ia32_movmskpd256" case 's': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_movmsk_ps_256; // "__builtin_ia32_movmskps256" } break; } break; case 'p': // 21 strings to match. switch (BuiltinName[16]) { default: break; case 'a': // 4 strings to match. if (BuiltinName.substr(17, 2) != "ck") break; switch (BuiltinName[19]) { default: break; case 's': // 2 strings to match. if (BuiltinName[20] != 's') break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(22, 4) != "w128") break; return Intrinsic::x86_sse2_packssdw_128; // "__builtin_ia32_packssdw128" case 'w': // 1 string to match. if (BuiltinName.substr(22, 4) != "b128") break; return Intrinsic::x86_sse2_packsswb_128; // "__builtin_ia32_packsswb128" } break; case 'u': // 2 strings to match. if (BuiltinName[20] != 's') break; switch (BuiltinName[21]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(22, 4) != "w128") break; return Intrinsic::x86_sse41_packusdw; // "__builtin_ia32_packusdw128" case 'w': // 1 string to match. if (BuiltinName.substr(22, 4) != "b128") break; return Intrinsic::x86_sse2_packuswb_128; // "__builtin_ia32_packuswb128" } break; } break; case 'b': // 1 string to match. if (BuiltinName.substr(17, 9) != "lendvb128") break; return Intrinsic::x86_sse41_pblendvb; // "__builtin_ia32_pblendvb128" case 'm': // 14 strings to match. switch (BuiltinName[17]) { default: break; case 'o': // 13 strings to match. if (BuiltinName[18] != 'v') break; switch (BuiltinName[19]) { default: break; case 'm': // 1 string to match. if (BuiltinName.substr(20, 6) != "skb128") break; return Intrinsic::x86_sse2_pmovmskb_128; // "__builtin_ia32_pmovmskb128" case 's': // 6 strings to match. if (BuiltinName[20] != 'x') break; switch (BuiltinName[21]) { default: break; case 'b': // 3 strings to match. switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "128") break; return Intrinsic::x86_sse41_pmovsxbd; // "__builtin_ia32_pmovsxbd128" case 'q': // 1 string to match. if (BuiltinName.substr(23, 3) != "128") break; return Intrinsic::x86_sse41_pmovsxbq; // "__builtin_ia32_pmovsxbq128" case 'w': // 1 string to match. if (BuiltinName.substr(23, 3) != "128") break; return Intrinsic::x86_sse41_pmovsxbw; // "__builtin_ia32_pmovsxbw128" } break; case 'd': // 1 string to match. if (BuiltinName.substr(22, 4) != "q128") break; return Intrinsic::x86_sse41_pmovsxdq; // "__builtin_ia32_pmovsxdq128" case 'w': // 2 strings to match. switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "128") break; return Intrinsic::x86_sse41_pmovsxwd; // "__builtin_ia32_pmovsxwd128" case 'q': // 1 string to match. if (BuiltinName.substr(23, 3) != "128") break; return Intrinsic::x86_sse41_pmovsxwq; // "__builtin_ia32_pmovsxwq128" } break; } break; case 'z': // 6 strings to match. if (BuiltinName[20] != 'x') break; switch (BuiltinName[21]) { default: break; case 'b': // 3 strings to match. switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "128") break; return Intrinsic::x86_sse41_pmovzxbd; // "__builtin_ia32_pmovzxbd128" case 'q': // 1 string to match. if (BuiltinName.substr(23, 3) != "128") break; return Intrinsic::x86_sse41_pmovzxbq; // "__builtin_ia32_pmovzxbq128" case 'w': // 1 string to match. if (BuiltinName.substr(23, 3) != "128") break; return Intrinsic::x86_sse41_pmovzxbw; // "__builtin_ia32_pmovzxbw128" } break; case 'd': // 1 string to match. if (BuiltinName.substr(22, 4) != "q128") break; return Intrinsic::x86_sse41_pmovzxdq; // "__builtin_ia32_pmovzxdq128" case 'w': // 2 strings to match. switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "128") break; return Intrinsic::x86_sse41_pmovzxwd; // "__builtin_ia32_pmovzxwd128" case 'q': // 1 string to match. if (BuiltinName.substr(23, 3) != "128") break; return Intrinsic::x86_sse41_pmovzxwq; // "__builtin_ia32_pmovzxwq128" } break; } break; } break; case 'u': // 1 string to match. if (BuiltinName.substr(18, 8) != "lhrsw128") break; return Intrinsic::x86_ssse3_pmul_hr_sw_128; // "__builtin_ia32_pmulhrsw128" } break; case 't': // 2 strings to match. if (BuiltinName.substr(17, 6) != "estnzc") break; switch (BuiltinName[23]) { default: break; case '1': // 1 string to match. if (BuiltinName.substr(24, 2) != "28") break; return Intrinsic::x86_sse41_ptestnzc; // "__builtin_ia32_ptestnzc128" case '2': // 1 string to match. if (BuiltinName.substr(24, 2) != "56") break; return Intrinsic::x86_avx_ptestnzc_256; // "__builtin_ia32_ptestnzc256" } break; } break; case 's': // 3 strings to match. if (BuiltinName.substr(16, 4) != "tore") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 5) != "qu256") break; return Intrinsic::x86_avx_storeu_dq_256; // "__builtin_ia32_storedqu256" case 'u': // 2 strings to match. if (BuiltinName[21] != 'p') break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_storeu_pd_256; // "__builtin_ia32_storeupd256" case 's': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_storeu_ps_256; // "__builtin_ia32_storeups256" } break; } break; case 'v': // 4 strings to match. if (BuiltinName.substr(16, 4) != "test") break; switch (BuiltinName[20]) { default: break; case 'c': // 2 strings to match. if (BuiltinName[21] != 'p') break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_vtestc_pd_256; // "__builtin_ia32_vtestcpd256" case 's': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_vtestc_ps_256; // "__builtin_ia32_vtestcps256" } break; case 'z': // 2 strings to match. if (BuiltinName[21] != 'p') break; switch (BuiltinName[22]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_vtestz_pd_256; // "__builtin_ia32_vtestzpd256" case 's': // 1 string to match. if (BuiltinName.substr(23, 3) != "256") break; return Intrinsic::x86_avx_vtestz_ps_256; // "__builtin_ia32_vtestzps256" } break; } break; } break; case 27: // 15 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'c': // 2 strings to match. if (BuiltinName.substr(16, 4) != "vttp") break; switch (BuiltinName[20]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(21, 6) != "2dq256") break; return Intrinsic::x86_avx_cvtt_pd2dq_256; // "__builtin_ia32_cvttpd2dq256" case 's': // 1 string to match. if (BuiltinName.substr(21, 6) != "2dq256") break; return Intrinsic::x86_avx_cvtt_ps2dq_256; // "__builtin_ia32_cvttps2dq256" } break; case 'e': // 1 string to match. if (BuiltinName.substr(16, 11) != "xtractps128") break; return Intrinsic::x86_sse41_extractps; // "__builtin_ia32_extractps128" case 'p': // 5 strings to match. switch (BuiltinName[16]) { default: break; case 'c': // 4 strings to match. if (BuiltinName.substr(17, 2) != "mp") break; switch (BuiltinName[19]) { default: break; case 'e': // 2 strings to match. if (BuiltinName.substr(20, 3) != "str") break; switch (BuiltinName[23]) { default: break; case 'i': // 1 string to match. if (BuiltinName.substr(24, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestri128; // "__builtin_ia32_pcmpestri128" case 'm': // 1 string to match. if (BuiltinName.substr(24, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestrm128; // "__builtin_ia32_pcmpestrm128" } break; case 'i': // 2 strings to match. if (BuiltinName.substr(20, 3) != "str") break; switch (BuiltinName[23]) { default: break; case 'i': // 1 string to match. if (BuiltinName.substr(24, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistri128; // "__builtin_ia32_pcmpistri128" case 'm': // 1 string to match. if (BuiltinName.substr(24, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistrm128; // "__builtin_ia32_pcmpistrm128" } break; } break; case 'm': // 1 string to match. if (BuiltinName.substr(17, 10) != "addubsw128") break; return Intrinsic::x86_ssse3_pmadd_ub_sw_128; // "__builtin_ia32_pmaddubsw128" } break; case 'v': // 7 strings to match. switch (BuiltinName[16]) { default: break; case 'b': // 1 string to match. if (BuiltinName.substr(17, 10) != "roadcastss") break; return Intrinsic::x86_avx_vbroadcastss; // "__builtin_ia32_vbroadcastss" case 'e': // 2 strings to match. if (BuiltinName.substr(17, 2) != "c_") break; switch (BuiltinName[19]) { default: break; case 'e': // 1 string to match. if (BuiltinName.substr(20, 7) != "xt_v4hi") break; return Intrinsic::x86_mmx_pextr_w; // "__builtin_ia32_vec_ext_v4hi" case 's': // 1 string to match. if (BuiltinName.substr(20, 7) != "et_v4hi") break; return Intrinsic::x86_mmx_pinsr_w; // "__builtin_ia32_vec_set_v4hi" } break; case 'p': // 4 strings to match. if (BuiltinName.substr(17, 5) != "ermil") break; switch (BuiltinName[22]) { default: break; case 'p': // 2 strings to match. switch (BuiltinName[23]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(24, 3) != "256") break; return Intrinsic::x86_avx_vpermil_pd_256; // "__builtin_ia32_vpermilpd256" case 's': // 1 string to match. if (BuiltinName.substr(24, 3) != "256") break; return Intrinsic::x86_avx_vpermil_ps_256; // "__builtin_ia32_vpermilps256" } break; case 'v': // 2 strings to match. if (BuiltinName.substr(23, 3) != "arp") break; switch (BuiltinName[26]) { default: break; case 'd': // 1 string to match. return Intrinsic::x86_avx_vpermilvar_pd; // "__builtin_ia32_vpermilvarpd" case 's': // 1 string to match. return Intrinsic::x86_avx_vpermilvar_ps; // "__builtin_ia32_vpermilvarps" } break; } break; } break; } break; case 28: // 17 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'a': // 2 strings to match. if (BuiltinName.substr(16, 2) != "es") break; switch (BuiltinName[18]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(19, 9) != "eclast128") break; return Intrinsic::x86_aesni_aesdeclast; // "__builtin_ia32_aesdeclast128" case 'e': // 1 string to match. if (BuiltinName.substr(19, 9) != "nclast128") break; return Intrinsic::x86_aesni_aesenclast; // "__builtin_ia32_aesenclast128" } break; case 'm': // 2 strings to match. if (BuiltinName.substr(16, 8) != "askloadp") break; switch (BuiltinName[24]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(25, 3) != "256") break; return Intrinsic::x86_avx_maskload_pd_256; // "__builtin_ia32_maskloadpd256" case 's': // 1 string to match. if (BuiltinName.substr(25, 3) != "256") break; return Intrinsic::x86_avx_maskload_ps_256; // "__builtin_ia32_maskloadps256" } break; case 'p': // 11 strings to match. switch (BuiltinName[16]) { default: break; case 'c': // 10 strings to match. if (BuiltinName.substr(17, 2) != "mp") break; switch (BuiltinName[19]) { default: break; case 'e': // 5 strings to match. if (BuiltinName.substr(20, 4) != "stri") break; switch (BuiltinName[24]) { default: break; case 'a': // 1 string to match. if (BuiltinName.substr(25, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestria128; // "__builtin_ia32_pcmpestria128" case 'c': // 1 string to match. if (BuiltinName.substr(25, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestric128; // "__builtin_ia32_pcmpestric128" case 'o': // 1 string to match. if (BuiltinName.substr(25, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestrio128; // "__builtin_ia32_pcmpestrio128" case 's': // 1 string to match. if (BuiltinName.substr(25, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestris128; // "__builtin_ia32_pcmpestris128" case 'z': // 1 string to match. if (BuiltinName.substr(25, 3) != "128") break; return Intrinsic::x86_sse42_pcmpestriz128; // "__builtin_ia32_pcmpestriz128" } break; case 'i': // 5 strings to match. if (BuiltinName.substr(20, 4) != "stri") break; switch (BuiltinName[24]) { default: break; case 'a': // 1 string to match. if (BuiltinName.substr(25, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistria128; // "__builtin_ia32_pcmpistria128" case 'c': // 1 string to match. if (BuiltinName.substr(25, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistric128; // "__builtin_ia32_pcmpistric128" case 'o': // 1 string to match. if (BuiltinName.substr(25, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistrio128; // "__builtin_ia32_pcmpistrio128" case 's': // 1 string to match. if (BuiltinName.substr(25, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistris128; // "__builtin_ia32_pcmpistris128" case 'z': // 1 string to match. if (BuiltinName.substr(25, 3) != "128") break; return Intrinsic::x86_sse42_pcmpistriz128; // "__builtin_ia32_pcmpistriz128" } break; } break; case 'h': // 1 string to match. if (BuiltinName.substr(17, 11) != "minposuw128") break; return Intrinsic::x86_sse41_phminposuw; // "__builtin_ia32_phminposuw128" } break; case 'v': // 2 strings to match. if (BuiltinName.substr(16, 8) != "testnzcp") break; switch (BuiltinName[24]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(25, 3) != "256") break; return Intrinsic::x86_avx_vtestnzc_pd_256; // "__builtin_ia32_vtestnzcpd256" case 's': // 1 string to match. if (BuiltinName.substr(25, 3) != "256") break; return Intrinsic::x86_avx_vtestnzc_ps_256; // "__builtin_ia32_vtestnzcps256" } break; } break; case 29: // 2 strings to match. if (BuiltinName.substr(0, 25) != "__builtin_ia32_maskstorep") break; switch (BuiltinName[25]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(26, 3) != "256") break; return Intrinsic::x86_avx_maskstore_pd_256; // "__builtin_ia32_maskstorepd256" case 's': // 1 string to match. if (BuiltinName.substr(26, 3) != "256") break; return Intrinsic::x86_avx_maskstore_ps_256; // "__builtin_ia32_maskstoreps256" } break; case 30: // 4 strings to match. if (BuiltinName.substr(0, 16) != "__builtin_ia32_v") break; switch (BuiltinName[16]) { default: break; case 'b': // 2 strings to match. if (BuiltinName.substr(17, 9) != "roadcasts") break; switch (BuiltinName[26]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(27, 3) != "256") break; return Intrinsic::x86_avx_vbroadcast_sd_256; // "__builtin_ia32_vbroadcastsd256" case 's': // 1 string to match. if (BuiltinName.substr(27, 3) != "256") break; return Intrinsic::x86_avx_vbroadcastss_256; // "__builtin_ia32_vbroadcastss256" } break; case 'p': // 2 strings to match. if (BuiltinName.substr(17, 9) != "ermilvarp") break; switch (BuiltinName[26]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(27, 3) != "256") break; return Intrinsic::x86_avx_vpermilvar_pd_256; // "__builtin_ia32_vpermilvarpd256" case 's': // 1 string to match. if (BuiltinName.substr(27, 3) != "256") break; return Intrinsic::x86_avx_vpermilvar_ps_256; // "__builtin_ia32_vpermilvarps256" } break; } break; case 31: // 3 strings to match. if (BuiltinName.substr(0, 26) != "__builtin_ia32_vperm2f128_") break; switch (BuiltinName[26]) { default: break; case 'p': // 2 strings to match. switch (BuiltinName[27]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(28, 3) != "256") break; return Intrinsic::x86_avx_vperm2f128_pd_256; // "__builtin_ia32_vperm2f128_pd256" case 's': // 1 string to match. if (BuiltinName.substr(28, 3) != "256") break; return Intrinsic::x86_avx_vperm2f128_ps_256; // "__builtin_ia32_vperm2f128_ps256" } break; case 's': // 1 string to match. if (BuiltinName.substr(27, 4) != "i256") break; return Intrinsic::x86_avx_vperm2f128_si_256; // "__builtin_ia32_vperm2f128_si256" } break; case 32: // 3 strings to match. if (BuiltinName.substr(0, 27) != "__builtin_ia32_vinsertf128_") break; switch (BuiltinName[27]) { default: break; case 'p': // 2 strings to match. switch (BuiltinName[28]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(29, 3) != "256") break; return Intrinsic::x86_avx_vinsertf128_pd_256; // "__builtin_ia32_vinsertf128_pd256" case 's': // 1 string to match. if (BuiltinName.substr(29, 3) != "256") break; return Intrinsic::x86_avx_vinsertf128_ps_256; // "__builtin_ia32_vinsertf128_ps256" } break; case 's': // 1 string to match. if (BuiltinName.substr(28, 4) != "i256") break; return Intrinsic::x86_avx_vinsertf128_si_256; // "__builtin_ia32_vinsertf128_si256" } break; case 33: // 4 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'a': // 1 string to match. if (BuiltinName.substr(16, 17) != "eskeygenassist128") break; return Intrinsic::x86_aesni_aeskeygenassist; // "__builtin_ia32_aeskeygenassist128" case 'v': // 3 strings to match. if (BuiltinName.substr(16, 12) != "extractf128_") break; switch (BuiltinName[28]) { default: break; case 'p': // 2 strings to match. switch (BuiltinName[29]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(30, 3) != "256") break; return Intrinsic::x86_avx_vextractf128_pd_256; // "__builtin_ia32_vextractf128_pd256" case 's': // 1 string to match. if (BuiltinName.substr(30, 3) != "256") break; return Intrinsic::x86_avx_vextractf128_ps_256; // "__builtin_ia32_vextractf128_ps256" } break; case 's': // 1 string to match. if (BuiltinName.substr(29, 4) != "i256") break; return Intrinsic::x86_avx_vextractf128_si_256; // "__builtin_ia32_vextractf128_si256" } break; } break; case 35: // 4 strings to match. if (BuiltinName.substr(0, 15) != "__builtin_ia32_") break; switch (BuiltinName[15]) { default: break; case 'p': // 2 strings to match. if (BuiltinName[16] != 's') break; switch (BuiltinName[17]) { default: break; case 'l': // 1 string to match. if (BuiltinName.substr(18, 17) != "ldqi128_byteshift") break; return Intrinsic::x86_sse2_psll_dq_bs; // "__builtin_ia32_pslldqi128_byteshift" case 'r': // 1 string to match. if (BuiltinName.substr(18, 17) != "ldqi128_byteshift") break; return Intrinsic::x86_sse2_psrl_dq_bs; // "__builtin_ia32_psrldqi128_byteshift" } break; case 'v': // 2 strings to match. if (BuiltinName.substr(16, 15) != "broadcastf128_p") break; switch (BuiltinName[31]) { default: break; case 'd': // 1 string to match. if (BuiltinName.substr(32, 3) != "256") break; return Intrinsic::x86_avx_vbroadcastf128_pd_256; // "__builtin_ia32_vbroadcastf128_pd256" case 's': // 1 string to match. if (BuiltinName.substr(32, 3) != "256") break; return Intrinsic::x86_avx_vbroadcastf128_ps_256; // "__builtin_ia32_vbroadcastf128_ps256" } break; } break; } } return Intrinsic::not_intrinsic; } #endif #if defined(_MSC_VER) && defined(setjmp_undefined_for_msvc) // let's return it to _setjmp state # pragma pop_macro("setjmp") # undef setjmp_undefined_for_msvc #endif