//===- 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

