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