/*===- 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
    AMDGPU_div_fixup,                          // llvm.AMDGPU.div.fixup
    AMDGPU_div_fmas,                           // llvm.AMDGPU.div.fmas
    AMDGPU_div_scale,                          // llvm.AMDGPU.div.scale
    AMDGPU_rcp,                                // llvm.AMDGPU.rcp
    AMDGPU_rsq,                                // llvm.AMDGPU.rsq
    AMDGPU_rsq_clamped,                        // llvm.AMDGPU.rsq.clamped
    AMDGPU_trig_preop,                         // llvm.AMDGPU.trig.preop
    aarch64_clrex,                             // llvm.aarch64.clrex
    aarch64_crc32b,                            // llvm.aarch64.crc32b
    aarch64_crc32cb,                           // llvm.aarch64.crc32cb
    aarch64_crc32ch,                           // llvm.aarch64.crc32ch
    aarch64_crc32cw,                           // llvm.aarch64.crc32cw
    aarch64_crc32cx,                           // llvm.aarch64.crc32cx
    aarch64_crc32h,                            // llvm.aarch64.crc32h
    aarch64_crc32w,                            // llvm.aarch64.crc32w
    aarch64_crc32x,                            // llvm.aarch64.crc32x
    aarch64_crypto_aesd,                       // llvm.aarch64.crypto.aesd
    aarch64_crypto_aese,                       // llvm.aarch64.crypto.aese
    aarch64_crypto_aesimc,                     // llvm.aarch64.crypto.aesimc
    aarch64_crypto_aesmc,                      // llvm.aarch64.crypto.aesmc
    aarch64_crypto_sha1c,                      // llvm.aarch64.crypto.sha1c
    aarch64_crypto_sha1h,                      // llvm.aarch64.crypto.sha1h
    aarch64_crypto_sha1m,                      // llvm.aarch64.crypto.sha1m
    aarch64_crypto_sha1p,                      // llvm.aarch64.crypto.sha1p
    aarch64_crypto_sha1su0,                    // llvm.aarch64.crypto.sha1su0
    aarch64_crypto_sha1su1,                    // llvm.aarch64.crypto.sha1su1
    aarch64_crypto_sha256h,                    // llvm.aarch64.crypto.sha256h
    aarch64_crypto_sha256h2,                   // llvm.aarch64.crypto.sha256h2
    aarch64_crypto_sha256su0,                  // llvm.aarch64.crypto.sha256su0
    aarch64_crypto_sha256su1,                  // llvm.aarch64.crypto.sha256su1
    aarch64_dmb,                               // llvm.aarch64.dmb
    aarch64_dsb,                               // llvm.aarch64.dsb
    aarch64_hint,                              // llvm.aarch64.hint
    aarch64_isb,                               // llvm.aarch64.isb
    aarch64_ldaxp,                             // llvm.aarch64.ldaxp
    aarch64_ldaxr,                             // llvm.aarch64.ldaxr
    aarch64_ldxp,                              // llvm.aarch64.ldxp
    aarch64_ldxr,                              // llvm.aarch64.ldxr
    aarch64_neon_abs,                          // llvm.aarch64.neon.abs
    aarch64_neon_addhn,                        // llvm.aarch64.neon.addhn
    aarch64_neon_addp,                         // llvm.aarch64.neon.addp
    aarch64_neon_cls,                          // llvm.aarch64.neon.cls
    aarch64_neon_fabd,                         // llvm.aarch64.neon.fabd
    aarch64_neon_facge,                        // llvm.aarch64.neon.facge
    aarch64_neon_facgt,                        // llvm.aarch64.neon.facgt
    aarch64_neon_faddv,                        // llvm.aarch64.neon.faddv
    aarch64_neon_fcvtas,                       // llvm.aarch64.neon.fcvtas
    aarch64_neon_fcvtau,                       // llvm.aarch64.neon.fcvtau
    aarch64_neon_fcvtms,                       // llvm.aarch64.neon.fcvtms
    aarch64_neon_fcvtmu,                       // llvm.aarch64.neon.fcvtmu
    aarch64_neon_fcvtns,                       // llvm.aarch64.neon.fcvtns
    aarch64_neon_fcvtnu,                       // llvm.aarch64.neon.fcvtnu
    aarch64_neon_fcvtps,                       // llvm.aarch64.neon.fcvtps
    aarch64_neon_fcvtpu,                       // llvm.aarch64.neon.fcvtpu
    aarch64_neon_fcvtxn,                       // llvm.aarch64.neon.fcvtxn
    aarch64_neon_fcvtzs,                       // llvm.aarch64.neon.fcvtzs
    aarch64_neon_fcvtzu,                       // llvm.aarch64.neon.fcvtzu
    aarch64_neon_fmax,                         // llvm.aarch64.neon.fmax
    aarch64_neon_fmaxnm,                       // llvm.aarch64.neon.fmaxnm
    aarch64_neon_fmaxnmp,                      // llvm.aarch64.neon.fmaxnmp
    aarch64_neon_fmaxnmv,                      // llvm.aarch64.neon.fmaxnmv
    aarch64_neon_fmaxp,                        // llvm.aarch64.neon.fmaxp
    aarch64_neon_fmaxv,                        // llvm.aarch64.neon.fmaxv
    aarch64_neon_fmin,                         // llvm.aarch64.neon.fmin
    aarch64_neon_fminnm,                       // llvm.aarch64.neon.fminnm
    aarch64_neon_fminnmp,                      // llvm.aarch64.neon.fminnmp
    aarch64_neon_fminnmv,                      // llvm.aarch64.neon.fminnmv
    aarch64_neon_fminp,                        // llvm.aarch64.neon.fminp
    aarch64_neon_fminv,                        // llvm.aarch64.neon.fminv
    aarch64_neon_fmulx,                        // llvm.aarch64.neon.fmulx
    aarch64_neon_frecpe,                       // llvm.aarch64.neon.frecpe
    aarch64_neon_frecps,                       // llvm.aarch64.neon.frecps
    aarch64_neon_frecpx,                       // llvm.aarch64.neon.frecpx
    aarch64_neon_frintn,                       // llvm.aarch64.neon.frintn
    aarch64_neon_frsqrte,                      // llvm.aarch64.neon.frsqrte
    aarch64_neon_frsqrts,                      // llvm.aarch64.neon.frsqrts
    aarch64_neon_ld1x2,                        // llvm.aarch64.neon.ld1x2
    aarch64_neon_ld1x3,                        // llvm.aarch64.neon.ld1x3
    aarch64_neon_ld1x4,                        // llvm.aarch64.neon.ld1x4
    aarch64_neon_ld2,                          // llvm.aarch64.neon.ld2
    aarch64_neon_ld2lane,                      // llvm.aarch64.neon.ld2lane
    aarch64_neon_ld2r,                         // llvm.aarch64.neon.ld2r
    aarch64_neon_ld3,                          // llvm.aarch64.neon.ld3
    aarch64_neon_ld3lane,                      // llvm.aarch64.neon.ld3lane
    aarch64_neon_ld3r,                         // llvm.aarch64.neon.ld3r
    aarch64_neon_ld4,                          // llvm.aarch64.neon.ld4
    aarch64_neon_ld4lane,                      // llvm.aarch64.neon.ld4lane
    aarch64_neon_ld4r,                         // llvm.aarch64.neon.ld4r
    aarch64_neon_pmul,                         // llvm.aarch64.neon.pmul
    aarch64_neon_pmull,                        // llvm.aarch64.neon.pmull
    aarch64_neon_pmull64,                      // llvm.aarch64.neon.pmull64
    aarch64_neon_raddhn,                       // llvm.aarch64.neon.raddhn
    aarch64_neon_rbit,                         // llvm.aarch64.neon.rbit
    aarch64_neon_rshrn,                        // llvm.aarch64.neon.rshrn
    aarch64_neon_rsubhn,                       // llvm.aarch64.neon.rsubhn
    aarch64_neon_sabd,                         // llvm.aarch64.neon.sabd
    aarch64_neon_saddlp,                       // llvm.aarch64.neon.saddlp
    aarch64_neon_saddlv,                       // llvm.aarch64.neon.saddlv
    aarch64_neon_saddv,                        // llvm.aarch64.neon.saddv
    aarch64_neon_scalar_sqxtn,                 // llvm.aarch64.neon.scalar.sqxtn
    aarch64_neon_scalar_sqxtun,                // llvm.aarch64.neon.scalar.sqxtun
    aarch64_neon_scalar_uqxtn,                 // llvm.aarch64.neon.scalar.uqxtn
    aarch64_neon_shadd,                        // llvm.aarch64.neon.shadd
    aarch64_neon_shll,                         // llvm.aarch64.neon.shll
    aarch64_neon_shsub,                        // llvm.aarch64.neon.shsub
    aarch64_neon_smax,                         // llvm.aarch64.neon.smax
    aarch64_neon_smaxp,                        // llvm.aarch64.neon.smaxp
    aarch64_neon_smaxv,                        // llvm.aarch64.neon.smaxv
    aarch64_neon_smin,                         // llvm.aarch64.neon.smin
    aarch64_neon_sminp,                        // llvm.aarch64.neon.sminp
    aarch64_neon_sminv,                        // llvm.aarch64.neon.sminv
    aarch64_neon_smull,                        // llvm.aarch64.neon.smull
    aarch64_neon_sqabs,                        // llvm.aarch64.neon.sqabs
    aarch64_neon_sqadd,                        // llvm.aarch64.neon.sqadd
    aarch64_neon_sqdmulh,                      // llvm.aarch64.neon.sqdmulh
    aarch64_neon_sqdmull,                      // llvm.aarch64.neon.sqdmull
    aarch64_neon_sqdmulls_scalar,              // llvm.aarch64.neon.sqdmulls.scalar
    aarch64_neon_sqneg,                        // llvm.aarch64.neon.sqneg
    aarch64_neon_sqrdmulh,                     // llvm.aarch64.neon.sqrdmulh
    aarch64_neon_sqrshl,                       // llvm.aarch64.neon.sqrshl
    aarch64_neon_sqrshrn,                      // llvm.aarch64.neon.sqrshrn
    aarch64_neon_sqrshrun,                     // llvm.aarch64.neon.sqrshrun
    aarch64_neon_sqshl,                        // llvm.aarch64.neon.sqshl
    aarch64_neon_sqshlu,                       // llvm.aarch64.neon.sqshlu
    aarch64_neon_sqshrn,                       // llvm.aarch64.neon.sqshrn
    aarch64_neon_sqshrun,                      // llvm.aarch64.neon.sqshrun
    aarch64_neon_sqsub,                        // llvm.aarch64.neon.sqsub
    aarch64_neon_sqxtn,                        // llvm.aarch64.neon.sqxtn
    aarch64_neon_sqxtun,                       // llvm.aarch64.neon.sqxtun
    aarch64_neon_srhadd,                       // llvm.aarch64.neon.srhadd
    aarch64_neon_srshl,                        // llvm.aarch64.neon.srshl
    aarch64_neon_sshl,                         // llvm.aarch64.neon.sshl
    aarch64_neon_sshll,                        // llvm.aarch64.neon.sshll
    aarch64_neon_st1x2,                        // llvm.aarch64.neon.st1x2
    aarch64_neon_st1x3,                        // llvm.aarch64.neon.st1x3
    aarch64_neon_st1x4,                        // llvm.aarch64.neon.st1x4
    aarch64_neon_st2,                          // llvm.aarch64.neon.st2
    aarch64_neon_st2lane,                      // llvm.aarch64.neon.st2lane
    aarch64_neon_st3,                          // llvm.aarch64.neon.st3
    aarch64_neon_st3lane,                      // llvm.aarch64.neon.st3lane
    aarch64_neon_st4,                          // llvm.aarch64.neon.st4
    aarch64_neon_st4lane,                      // llvm.aarch64.neon.st4lane
    aarch64_neon_subhn,                        // llvm.aarch64.neon.subhn
    aarch64_neon_suqadd,                       // llvm.aarch64.neon.suqadd
    aarch64_neon_tbl1,                         // llvm.aarch64.neon.tbl1
    aarch64_neon_tbl2,                         // llvm.aarch64.neon.tbl2
    aarch64_neon_tbl3,                         // llvm.aarch64.neon.tbl3
    aarch64_neon_tbl4,                         // llvm.aarch64.neon.tbl4
    aarch64_neon_tbx1,                         // llvm.aarch64.neon.tbx1
    aarch64_neon_tbx2,                         // llvm.aarch64.neon.tbx2
    aarch64_neon_tbx3,                         // llvm.aarch64.neon.tbx3
    aarch64_neon_tbx4,                         // llvm.aarch64.neon.tbx4
    aarch64_neon_uabd,                         // llvm.aarch64.neon.uabd
    aarch64_neon_uaddlp,                       // llvm.aarch64.neon.uaddlp
    aarch64_neon_uaddlv,                       // llvm.aarch64.neon.uaddlv
    aarch64_neon_uaddv,                        // llvm.aarch64.neon.uaddv
    aarch64_neon_uhadd,                        // llvm.aarch64.neon.uhadd
    aarch64_neon_uhsub,                        // llvm.aarch64.neon.uhsub
    aarch64_neon_umax,                         // llvm.aarch64.neon.umax
    aarch64_neon_umaxp,                        // llvm.aarch64.neon.umaxp
    aarch64_neon_umaxv,                        // llvm.aarch64.neon.umaxv
    aarch64_neon_umin,                         // llvm.aarch64.neon.umin
    aarch64_neon_uminp,                        // llvm.aarch64.neon.uminp
    aarch64_neon_uminv,                        // llvm.aarch64.neon.uminv
    aarch64_neon_umull,                        // llvm.aarch64.neon.umull
    aarch64_neon_uqadd,                        // llvm.aarch64.neon.uqadd
    aarch64_neon_uqrshl,                       // llvm.aarch64.neon.uqrshl
    aarch64_neon_uqrshrn,                      // llvm.aarch64.neon.uqrshrn
    aarch64_neon_uqshl,                        // llvm.aarch64.neon.uqshl
    aarch64_neon_uqshrn,                       // llvm.aarch64.neon.uqshrn
    aarch64_neon_uqsub,                        // llvm.aarch64.neon.uqsub
    aarch64_neon_uqxtn,                        // llvm.aarch64.neon.uqxtn
    aarch64_neon_urecpe,                       // llvm.aarch64.neon.urecpe
    aarch64_neon_urhadd,                       // llvm.aarch64.neon.urhadd
    aarch64_neon_urshl,                        // llvm.aarch64.neon.urshl
    aarch64_neon_ursqrte,                      // llvm.aarch64.neon.ursqrte
    aarch64_neon_ushl,                         // llvm.aarch64.neon.ushl
    aarch64_neon_ushll,                        // llvm.aarch64.neon.ushll
    aarch64_neon_usqadd,                       // llvm.aarch64.neon.usqadd
    aarch64_neon_vcopy_lane,                   // llvm.aarch64.neon.vcopy.lane
    aarch64_neon_vcvtfp2fxs,                   // llvm.aarch64.neon.vcvtfp2fxs
    aarch64_neon_vcvtfp2fxu,                   // llvm.aarch64.neon.vcvtfp2fxu
    aarch64_neon_vcvtfp2hf,                    // llvm.aarch64.neon.vcvtfp2hf
    aarch64_neon_vcvtfxs2fp,                   // llvm.aarch64.neon.vcvtfxs2fp
    aarch64_neon_vcvtfxu2fp,                   // llvm.aarch64.neon.vcvtfxu2fp
    aarch64_neon_vcvthf2fp,                    // llvm.aarch64.neon.vcvthf2fp
    aarch64_neon_vsli,                         // llvm.aarch64.neon.vsli
    aarch64_neon_vsri,                         // llvm.aarch64.neon.vsri
    aarch64_rbit,                              // llvm.aarch64.rbit
    aarch64_sdiv,                              // llvm.aarch64.sdiv
    aarch64_sisd_fabd,                         // llvm.aarch64.sisd.fabd
    aarch64_sisd_fcvtxn,                       // llvm.aarch64.sisd.fcvtxn
    aarch64_stlxp,                             // llvm.aarch64.stlxp
    aarch64_stlxr,                             // llvm.aarch64.stlxr
    aarch64_stxp,                              // llvm.aarch64.stxp
    aarch64_stxr,                              // llvm.aarch64.stxr
    aarch64_udiv,                              // llvm.aarch64.udiv
    adjust_trampoline,                         // llvm.adjust.trampoline
    annotation,                                // llvm.annotation
    arm_cdp,                                   // llvm.arm.cdp
    arm_cdp2,                                  // llvm.arm.cdp2
    arm_clrex,                                 // llvm.arm.clrex
    arm_crc32b,                                // llvm.arm.crc32b
    arm_crc32cb,                               // llvm.arm.crc32cb
    arm_crc32ch,                               // llvm.arm.crc32ch
    arm_crc32cw,                               // llvm.arm.crc32cw
    arm_crc32h,                                // llvm.arm.crc32h
    arm_crc32w,                                // llvm.arm.crc32w
    arm_dmb,                                   // llvm.arm.dmb
    arm_dsb,                                   // llvm.arm.dsb
    arm_get_fpscr,                             // llvm.arm.get.fpscr
    arm_hint,                                  // llvm.arm.hint
    arm_isb,                                   // llvm.arm.isb
    arm_ldaex,                                 // llvm.arm.ldaex
    arm_ldaexd,                                // llvm.arm.ldaexd
    arm_ldrex,                                 // llvm.arm.ldrex
    arm_ldrexd,                                // llvm.arm.ldrexd
    arm_mcr,                                   // llvm.arm.mcr
    arm_mcr2,                                  // llvm.arm.mcr2
    arm_mcrr,                                  // llvm.arm.mcrr
    arm_mcrr2,                                 // llvm.arm.mcrr2
    arm_mrc,                                   // llvm.arm.mrc
    arm_mrc2,                                  // llvm.arm.mrc2
    arm_neon_aesd,                             // llvm.arm.neon.aesd
    arm_neon_aese,                             // llvm.arm.neon.aese
    arm_neon_aesimc,                           // llvm.arm.neon.aesimc
    arm_neon_aesmc,                            // llvm.arm.neon.aesmc
    arm_neon_sha1c,                            // llvm.arm.neon.sha1c
    arm_neon_sha1h,                            // llvm.arm.neon.sha1h
    arm_neon_sha1m,                            // llvm.arm.neon.sha1m
    arm_neon_sha1p,                            // llvm.arm.neon.sha1p
    arm_neon_sha1su0,                          // llvm.arm.neon.sha1su0
    arm_neon_sha1su1,                          // llvm.arm.neon.sha1su1
    arm_neon_sha256h,                          // llvm.arm.neon.sha256h
    arm_neon_sha256h2,                         // llvm.arm.neon.sha256h2
    arm_neon_sha256su0,                        // llvm.arm.neon.sha256su0
    arm_neon_sha256su1,                        // llvm.arm.neon.sha256su1
    arm_neon_vabds,                            // llvm.arm.neon.vabds
    arm_neon_vabdu,                            // llvm.arm.neon.vabdu
    arm_neon_vabs,                             // llvm.arm.neon.vabs
    arm_neon_vacge,                            // llvm.arm.neon.vacge
    arm_neon_vacgt,                            // llvm.arm.neon.vacgt
    arm_neon_vbsl,                             // llvm.arm.neon.vbsl
    arm_neon_vcls,                             // llvm.arm.neon.vcls
    arm_neon_vclz,                             // llvm.arm.neon.vclz
    arm_neon_vcnt,                             // llvm.arm.neon.vcnt
    arm_neon_vcvtas,                           // llvm.arm.neon.vcvtas
    arm_neon_vcvtau,                           // llvm.arm.neon.vcvtau
    arm_neon_vcvtfp2fxs,                       // llvm.arm.neon.vcvtfp2fxs
    arm_neon_vcvtfp2fxu,                       // llvm.arm.neon.vcvtfp2fxu
    arm_neon_vcvtfp2hf,                        // llvm.arm.neon.vcvtfp2hf
    arm_neon_vcvtfxs2fp,                       // llvm.arm.neon.vcvtfxs2fp
    arm_neon_vcvtfxu2fp,                       // llvm.arm.neon.vcvtfxu2fp
    arm_neon_vcvthf2fp,                        // llvm.arm.neon.vcvthf2fp
    arm_neon_vcvtms,                           // llvm.arm.neon.vcvtms
    arm_neon_vcvtmu,                           // llvm.arm.neon.vcvtmu
    arm_neon_vcvtns,                           // llvm.arm.neon.vcvtns
    arm_neon_vcvtnu,                           // llvm.arm.neon.vcvtnu
    arm_neon_vcvtps,                           // llvm.arm.neon.vcvtps
    arm_neon_vcvtpu,                           // llvm.arm.neon.vcvtpu
    arm_neon_vhadds,                           // llvm.arm.neon.vhadds
    arm_neon_vhaddu,                           // llvm.arm.neon.vhaddu
    arm_neon_vhsubs,                           // llvm.arm.neon.vhsubs
    arm_neon_vhsubu,                           // llvm.arm.neon.vhsubu
    arm_neon_vld1,                             // llvm.arm.neon.vld1
    arm_neon_vld2,                             // llvm.arm.neon.vld2
    arm_neon_vld2lane,                         // llvm.arm.neon.vld2lane
    arm_neon_vld3,                             // llvm.arm.neon.vld3
    arm_neon_vld3lane,                         // llvm.arm.neon.vld3lane
    arm_neon_vld4,                             // llvm.arm.neon.vld4
    arm_neon_vld4lane,                         // llvm.arm.neon.vld4lane
    arm_neon_vmaxnm,                           // llvm.arm.neon.vmaxnm
    arm_neon_vmaxs,                            // llvm.arm.neon.vmaxs
    arm_neon_vmaxu,                            // llvm.arm.neon.vmaxu
    arm_neon_vminnm,                           // llvm.arm.neon.vminnm
    arm_neon_vmins,                            // llvm.arm.neon.vmins
    arm_neon_vminu,                            // llvm.arm.neon.vminu
    arm_neon_vmullp,                           // llvm.arm.neon.vmullp
    arm_neon_vmulls,                           // llvm.arm.neon.vmulls
    arm_neon_vmullu,                           // llvm.arm.neon.vmullu
    arm_neon_vmulp,                            // llvm.arm.neon.vmulp
    arm_neon_vpadals,                          // llvm.arm.neon.vpadals
    arm_neon_vpadalu,                          // llvm.arm.neon.vpadalu
    arm_neon_vpadd,                            // llvm.arm.neon.vpadd
    arm_neon_vpaddls,                          // llvm.arm.neon.vpaddls
    arm_neon_vpaddlu,                          // llvm.arm.neon.vpaddlu
    arm_neon_vpmaxs,                           // llvm.arm.neon.vpmaxs
    arm_neon_vpmaxu,                           // llvm.arm.neon.vpmaxu
    arm_neon_vpmins,                           // llvm.arm.neon.vpmins
    arm_neon_vpminu,                           // llvm.arm.neon.vpminu
    arm_neon_vqabs,                            // llvm.arm.neon.vqabs
    arm_neon_vqadds,                           // llvm.arm.neon.vqadds
    arm_neon_vqaddu,                           // llvm.arm.neon.vqaddu
    arm_neon_vqdmulh,                          // llvm.arm.neon.vqdmulh
    arm_neon_vqdmull,                          // llvm.arm.neon.vqdmull
    arm_neon_vqmovns,                          // llvm.arm.neon.vqmovns
    arm_neon_vqmovnsu,                         // llvm.arm.neon.vqmovnsu
    arm_neon_vqmovnu,                          // llvm.arm.neon.vqmovnu
    arm_neon_vqneg,                            // llvm.arm.neon.vqneg
    arm_neon_vqrdmulh,                         // llvm.arm.neon.vqrdmulh
    arm_neon_vqrshiftns,                       // llvm.arm.neon.vqrshiftns
    arm_neon_vqrshiftnsu,                      // llvm.arm.neon.vqrshiftnsu
    arm_neon_vqrshiftnu,                       // llvm.arm.neon.vqrshiftnu
    arm_neon_vqrshifts,                        // llvm.arm.neon.vqrshifts
    arm_neon_vqrshiftu,                        // llvm.arm.neon.vqrshiftu
    arm_neon_vqshiftns,                        // llvm.arm.neon.vqshiftns
    arm_neon_vqshiftnsu,                       // llvm.arm.neon.vqshiftnsu
    arm_neon_vqshiftnu,                        // llvm.arm.neon.vqshiftnu
    arm_neon_vqshifts,                         // llvm.arm.neon.vqshifts
    arm_neon_vqshiftsu,                        // llvm.arm.neon.vqshiftsu
    arm_neon_vqshiftu,                         // llvm.arm.neon.vqshiftu
    arm_neon_vqsubs,                           // llvm.arm.neon.vqsubs
    arm_neon_vqsubu,                           // llvm.arm.neon.vqsubu
    arm_neon_vraddhn,                          // llvm.arm.neon.vraddhn
    arm_neon_vrecpe,                           // llvm.arm.neon.vrecpe
    arm_neon_vrecps,                           // llvm.arm.neon.vrecps
    arm_neon_vrhadds,                          // llvm.arm.neon.vrhadds
    arm_neon_vrhaddu,                          // llvm.arm.neon.vrhaddu
    arm_neon_vrinta,                           // llvm.arm.neon.vrinta
    arm_neon_vrintm,                           // llvm.arm.neon.vrintm
    arm_neon_vrintn,                           // llvm.arm.neon.vrintn
    arm_neon_vrintp,                           // llvm.arm.neon.vrintp
    arm_neon_vrintx,                           // llvm.arm.neon.vrintx
    arm_neon_vrintz,                           // llvm.arm.neon.vrintz
    arm_neon_vrshiftn,                         // llvm.arm.neon.vrshiftn
    arm_neon_vrshifts,                         // llvm.arm.neon.vrshifts
    arm_neon_vrshiftu,                         // llvm.arm.neon.vrshiftu
    arm_neon_vrsqrte,                          // llvm.arm.neon.vrsqrte
    arm_neon_vrsqrts,                          // llvm.arm.neon.vrsqrts
    arm_neon_vrsubhn,                          // llvm.arm.neon.vrsubhn
    arm_neon_vshiftins,                        // llvm.arm.neon.vshiftins
    arm_neon_vshifts,                          // llvm.arm.neon.vshifts
    arm_neon_vshiftu,                          // llvm.arm.neon.vshiftu
    arm_neon_vst1,                             // llvm.arm.neon.vst1
    arm_neon_vst2,                             // llvm.arm.neon.vst2
    arm_neon_vst2lane,                         // llvm.arm.neon.vst2lane
    arm_neon_vst3,                             // llvm.arm.neon.vst3
    arm_neon_vst3lane,                         // llvm.arm.neon.vst3lane
    arm_neon_vst4,                             // llvm.arm.neon.vst4
    arm_neon_vst4lane,                         // llvm.arm.neon.vst4lane
    arm_neon_vtbl1,                            // llvm.arm.neon.vtbl1
    arm_neon_vtbl2,                            // llvm.arm.neon.vtbl2
    arm_neon_vtbl3,                            // llvm.arm.neon.vtbl3
    arm_neon_vtbl4,                            // llvm.arm.neon.vtbl4
    arm_neon_vtbx1,                            // llvm.arm.neon.vtbx1
    arm_neon_vtbx2,                            // llvm.arm.neon.vtbx2
    arm_neon_vtbx3,                            // llvm.arm.neon.vtbx3
    arm_neon_vtbx4,                            // llvm.arm.neon.vtbx4
    arm_qadd,                                  // llvm.arm.qadd
    arm_qsub,                                  // llvm.arm.qsub
    arm_rbit,                                  // llvm.arm.rbit
    arm_set_fpscr,                             // llvm.arm.set.fpscr
    arm_ssat,                                  // llvm.arm.ssat
    arm_stlex,                                 // llvm.arm.stlex
    arm_stlexd,                                // llvm.arm.stlexd
    arm_strex,                                 // llvm.arm.strex
    arm_strexd,                                // llvm.arm.strexd
    arm_thread_pointer,                        // llvm.arm.thread.pointer
    arm_undefined,                             // llvm.arm.undefined
    arm_usat,                                  // llvm.arm.usat
    arm_vcvtr,                                 // llvm.arm.vcvtr
    arm_vcvtru,                                // llvm.arm.vcvtru
    bswap,                                     // llvm.bswap
    ceil,                                      // llvm.ceil
    clear_cache,                               // llvm.clear_cache
    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
    copysign,                                  // llvm.copysign
    cos,                                       // llvm.cos
    ctlz,                                      // llvm.ctlz
    ctpop,                                     // llvm.ctpop
    cttz,                                      // llvm.cttz
    cuda_syncthreads,                          // llvm.cuda.syncthreads
    dbg_declare,                               // llvm.dbg.declare
    dbg_value,                                 // llvm.dbg.value
    debugtrap,                                 // llvm.debugtrap
    donothing,                                 // llvm.donothing
    eh_dwarf_cfa,                              // llvm.eh.dwarf.cfa
    eh_return_i32,                             // llvm.eh.return.i32
    eh_return_i64,                             // llvm.eh.return.i64
    eh_sjlj_callsite,                          // llvm.eh.sjlj.callsite
    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
    experimental_patchpoint_i64,               // llvm.experimental.patchpoint.i64
    experimental_patchpoint_void,              // llvm.experimental.patchpoint.void
    experimental_stackmap,                     // llvm.experimental.stackmap
    fabs,                                      // llvm.fabs
    floor,                                     // llvm.floor
    flt_rounds,                                // llvm.flt.rounds
    fma,                                       // llvm.fma
    fmuladd,                                   // llvm.fmuladd
    frameaddress,                              // llvm.frameaddress
    gcread,                                    // llvm.gcread
    gcroot,                                    // llvm.gcroot
    gcwrite,                                   // llvm.gcwrite
    hexagon_A2_abs,                            // llvm.hexagon.A2.abs
    hexagon_A2_absp,                           // llvm.hexagon.A2.absp
    hexagon_A2_abssat,                         // llvm.hexagon.A2.abssat
    hexagon_A2_add,                            // llvm.hexagon.A2.add
    hexagon_A2_addh_h16_hh,                    // llvm.hexagon.A2.addh.h16.hh
    hexagon_A2_addh_h16_hl,                    // llvm.hexagon.A2.addh.h16.hl
    hexagon_A2_addh_h16_lh,                    // llvm.hexagon.A2.addh.h16.lh
    hexagon_A2_addh_h16_ll,                    // llvm.hexagon.A2.addh.h16.ll
    hexagon_A2_addh_h16_sat_hh,                // llvm.hexagon.A2.addh.h16.sat.hh
    hexagon_A2_addh_h16_sat_hl,                // llvm.hexagon.A2.addh.h16.sat.hl
    hexagon_A2_addh_h16_sat_lh,                // llvm.hexagon.A2.addh.h16.sat.lh
    hexagon_A2_addh_h16_sat_ll,                // llvm.hexagon.A2.addh.h16.sat.ll
    hexagon_A2_addh_l16_hl,                    // llvm.hexagon.A2.addh.l16.hl
    hexagon_A2_addh_l16_ll,                    // llvm.hexagon.A2.addh.l16.ll
    hexagon_A2_addh_l16_sat_hl,                // llvm.hexagon.A2.addh.l16.sat.hl
    hexagon_A2_addh_l16_sat_ll,                // llvm.hexagon.A2.addh.l16.sat.ll
    hexagon_A2_addi,                           // llvm.hexagon.A2.addi
    hexagon_A2_addp,                           // llvm.hexagon.A2.addp
    hexagon_A2_addpsat,                        // llvm.hexagon.A2.addpsat
    hexagon_A2_addsat,                         // llvm.hexagon.A2.addsat
    hexagon_A2_addsp,                          // llvm.hexagon.A2.addsp
    hexagon_A2_and,                            // llvm.hexagon.A2.and
    hexagon_A2_andir,                          // llvm.hexagon.A2.andir
    hexagon_A2_andp,                           // llvm.hexagon.A2.andp
    hexagon_A2_aslh,                           // llvm.hexagon.A2.aslh
    hexagon_A2_asrh,                           // llvm.hexagon.A2.asrh
    hexagon_A2_combine_hh,                     // llvm.hexagon.A2.combine.hh
    hexagon_A2_combine_hl,                     // llvm.hexagon.A2.combine.hl
    hexagon_A2_combine_lh,                     // llvm.hexagon.A2.combine.lh
    hexagon_A2_combine_ll,                     // llvm.hexagon.A2.combine.ll
    hexagon_A2_combineii,                      // llvm.hexagon.A2.combineii
    hexagon_A2_combinew,                       // llvm.hexagon.A2.combinew
    hexagon_A2_max,                            // llvm.hexagon.A2.max
    hexagon_A2_maxp,                           // llvm.hexagon.A2.maxp
    hexagon_A2_maxu,                           // llvm.hexagon.A2.maxu
    hexagon_A2_maxup,                          // llvm.hexagon.A2.maxup
    hexagon_A2_min,                            // llvm.hexagon.A2.min
    hexagon_A2_minp,                           // llvm.hexagon.A2.minp
    hexagon_A2_minu,                           // llvm.hexagon.A2.minu
    hexagon_A2_minup,                          // llvm.hexagon.A2.minup
    hexagon_A2_neg,                            // llvm.hexagon.A2.neg
    hexagon_A2_negp,                           // llvm.hexagon.A2.negp
    hexagon_A2_negsat,                         // llvm.hexagon.A2.negsat
    hexagon_A2_not,                            // llvm.hexagon.A2.not
    hexagon_A2_notp,                           // llvm.hexagon.A2.notp
    hexagon_A2_or,                             // llvm.hexagon.A2.or
    hexagon_A2_orir,                           // llvm.hexagon.A2.orir
    hexagon_A2_orp,                            // llvm.hexagon.A2.orp
    hexagon_A2_roundsat,                       // llvm.hexagon.A2.roundsat
    hexagon_A2_sat,                            // llvm.hexagon.A2.sat
    hexagon_A2_satb,                           // llvm.hexagon.A2.satb
    hexagon_A2_sath,                           // llvm.hexagon.A2.sath
    hexagon_A2_satub,                          // llvm.hexagon.A2.satub
    hexagon_A2_satuh,                          // llvm.hexagon.A2.satuh
    hexagon_A2_sub,                            // llvm.hexagon.A2.sub
    hexagon_A2_subh_h16_hh,                    // llvm.hexagon.A2.subh.h16.hh
    hexagon_A2_subh_h16_hl,                    // llvm.hexagon.A2.subh.h16.hl
    hexagon_A2_subh_h16_lh,                    // llvm.hexagon.A2.subh.h16.lh
    hexagon_A2_subh_h16_ll,                    // llvm.hexagon.A2.subh.h16.ll
    hexagon_A2_subh_h16_sat_hh,                // llvm.hexagon.A2.subh.h16.sat.hh
    hexagon_A2_subh_h16_sat_hl,                // llvm.hexagon.A2.subh.h16.sat.hl
    hexagon_A2_subh_h16_sat_lh,                // llvm.hexagon.A2.subh.h16.sat.lh
    hexagon_A2_subh_h16_sat_ll,                // llvm.hexagon.A2.subh.h16.sat.ll
    hexagon_A2_subh_l16_hl,                    // llvm.hexagon.A2.subh.l16.hl
    hexagon_A2_subh_l16_ll,                    // llvm.hexagon.A2.subh.l16.ll
    hexagon_A2_subh_l16_sat_hl,                // llvm.hexagon.A2.subh.l16.sat.hl
    hexagon_A2_subh_l16_sat_ll,                // llvm.hexagon.A2.subh.l16.sat.ll
    hexagon_A2_subp,                           // llvm.hexagon.A2.subp
    hexagon_A2_subri,                          // llvm.hexagon.A2.subri
    hexagon_A2_subsat,                         // llvm.hexagon.A2.subsat
    hexagon_A2_svaddh,                         // llvm.hexagon.A2.svaddh
    hexagon_A2_svaddhs,                        // llvm.hexagon.A2.svaddhs
    hexagon_A2_svadduhs,                       // llvm.hexagon.A2.svadduhs
    hexagon_A2_svavgh,                         // llvm.hexagon.A2.svavgh
    hexagon_A2_svavghs,                        // llvm.hexagon.A2.svavghs
    hexagon_A2_svnavgh,                        // llvm.hexagon.A2.svnavgh
    hexagon_A2_svsubh,                         // llvm.hexagon.A2.svsubh
    hexagon_A2_svsubhs,                        // llvm.hexagon.A2.svsubhs
    hexagon_A2_svsubuhs,                       // llvm.hexagon.A2.svsubuhs
    hexagon_A2_swiz,                           // llvm.hexagon.A2.swiz
    hexagon_A2_sxtb,                           // llvm.hexagon.A2.sxtb
    hexagon_A2_sxth,                           // llvm.hexagon.A2.sxth
    hexagon_A2_sxtw,                           // llvm.hexagon.A2.sxtw
    hexagon_A2_tfr,                            // llvm.hexagon.A2.tfr
    hexagon_A2_tfrih,                          // llvm.hexagon.A2.tfrih
    hexagon_A2_tfril,                          // llvm.hexagon.A2.tfril
    hexagon_A2_tfrp,                           // llvm.hexagon.A2.tfrp
    hexagon_A2_tfrpi,                          // llvm.hexagon.A2.tfrpi
    hexagon_A2_tfrsi,                          // llvm.hexagon.A2.tfrsi
    hexagon_A2_vabsh,                          // llvm.hexagon.A2.vabsh
    hexagon_A2_vabshsat,                       // llvm.hexagon.A2.vabshsat
    hexagon_A2_vabsw,                          // llvm.hexagon.A2.vabsw
    hexagon_A2_vabswsat,                       // llvm.hexagon.A2.vabswsat
    hexagon_A2_vaddb_map,                      // llvm.hexagon.A2.vaddb.map
    hexagon_A2_vaddh,                          // llvm.hexagon.A2.vaddh
    hexagon_A2_vaddhs,                         // llvm.hexagon.A2.vaddhs
    hexagon_A2_vaddub,                         // llvm.hexagon.A2.vaddub
    hexagon_A2_vaddubs,                        // llvm.hexagon.A2.vaddubs
    hexagon_A2_vadduhs,                        // llvm.hexagon.A2.vadduhs
    hexagon_A2_vaddw,                          // llvm.hexagon.A2.vaddw
    hexagon_A2_vaddws,                         // llvm.hexagon.A2.vaddws
    hexagon_A2_vavgh,                          // llvm.hexagon.A2.vavgh
    hexagon_A2_vavghcr,                        // llvm.hexagon.A2.vavghcr
    hexagon_A2_vavghr,                         // llvm.hexagon.A2.vavghr
    hexagon_A2_vavgub,                         // llvm.hexagon.A2.vavgub
    hexagon_A2_vavgubr,                        // llvm.hexagon.A2.vavgubr
    hexagon_A2_vavguh,                         // llvm.hexagon.A2.vavguh
    hexagon_A2_vavguhr,                        // llvm.hexagon.A2.vavguhr
    hexagon_A2_vavguw,                         // llvm.hexagon.A2.vavguw
    hexagon_A2_vavguwr,                        // llvm.hexagon.A2.vavguwr
    hexagon_A2_vavgw,                          // llvm.hexagon.A2.vavgw
    hexagon_A2_vavgwcr,                        // llvm.hexagon.A2.vavgwcr
    hexagon_A2_vavgwr,                         // llvm.hexagon.A2.vavgwr
    hexagon_A2_vcmpbeq,                        // llvm.hexagon.A2.vcmpbeq
    hexagon_A2_vcmpbgtu,                       // llvm.hexagon.A2.vcmpbgtu
    hexagon_A2_vcmpheq,                        // llvm.hexagon.A2.vcmpheq
    hexagon_A2_vcmphgt,                        // llvm.hexagon.A2.vcmphgt
    hexagon_A2_vcmphgtu,                       // llvm.hexagon.A2.vcmphgtu
    hexagon_A2_vcmpweq,                        // llvm.hexagon.A2.vcmpweq
    hexagon_A2_vcmpwgt,                        // llvm.hexagon.A2.vcmpwgt
    hexagon_A2_vcmpwgtu,                       // llvm.hexagon.A2.vcmpwgtu
    hexagon_A2_vconj,                          // llvm.hexagon.A2.vconj
    hexagon_A2_vmaxb,                          // llvm.hexagon.A2.vmaxb
    hexagon_A2_vmaxh,                          // llvm.hexagon.A2.vmaxh
    hexagon_A2_vmaxub,                         // llvm.hexagon.A2.vmaxub
    hexagon_A2_vmaxuh,                         // llvm.hexagon.A2.vmaxuh
    hexagon_A2_vmaxuw,                         // llvm.hexagon.A2.vmaxuw
    hexagon_A2_vmaxw,                          // llvm.hexagon.A2.vmaxw
    hexagon_A2_vminb,                          // llvm.hexagon.A2.vminb
    hexagon_A2_vminh,                          // llvm.hexagon.A2.vminh
    hexagon_A2_vminub,                         // llvm.hexagon.A2.vminub
    hexagon_A2_vminuh,                         // llvm.hexagon.A2.vminuh
    hexagon_A2_vminuw,                         // llvm.hexagon.A2.vminuw
    hexagon_A2_vminw,                          // llvm.hexagon.A2.vminw
    hexagon_A2_vnavgh,                         // llvm.hexagon.A2.vnavgh
    hexagon_A2_vnavghcr,                       // llvm.hexagon.A2.vnavghcr
    hexagon_A2_vnavghr,                        // llvm.hexagon.A2.vnavghr
    hexagon_A2_vnavgw,                         // llvm.hexagon.A2.vnavgw
    hexagon_A2_vnavgwcr,                       // llvm.hexagon.A2.vnavgwcr
    hexagon_A2_vnavgwr,                        // llvm.hexagon.A2.vnavgwr
    hexagon_A2_vraddub,                        // llvm.hexagon.A2.vraddub
    hexagon_A2_vraddub_acc,                    // llvm.hexagon.A2.vraddub.acc
    hexagon_A2_vrsadub,                        // llvm.hexagon.A2.vrsadub
    hexagon_A2_vrsadub_acc,                    // llvm.hexagon.A2.vrsadub.acc
    hexagon_A2_vsubb_map,                      // llvm.hexagon.A2.vsubb.map
    hexagon_A2_vsubh,                          // llvm.hexagon.A2.vsubh
    hexagon_A2_vsubhs,                         // llvm.hexagon.A2.vsubhs
    hexagon_A2_vsubub,                         // llvm.hexagon.A2.vsubub
    hexagon_A2_vsububs,                        // llvm.hexagon.A2.vsububs
    hexagon_A2_vsubuhs,                        // llvm.hexagon.A2.vsubuhs
    hexagon_A2_vsubw,                          // llvm.hexagon.A2.vsubw
    hexagon_A2_vsubws,                         // llvm.hexagon.A2.vsubws
    hexagon_A2_xor,                            // llvm.hexagon.A2.xor
    hexagon_A2_xorp,                           // llvm.hexagon.A2.xorp
    hexagon_A2_zxtb,                           // llvm.hexagon.A2.zxtb
    hexagon_A2_zxth,                           // llvm.hexagon.A2.zxth
    hexagon_A4_andn,                           // llvm.hexagon.A4.andn
    hexagon_A4_andnp,                          // llvm.hexagon.A4.andnp
    hexagon_A4_bitsplit,                       // llvm.hexagon.A4.bitsplit
    hexagon_A4_bitspliti,                      // llvm.hexagon.A4.bitspliti
    hexagon_A4_boundscheck,                    // llvm.hexagon.A4.boundscheck
    hexagon_A4_cmpbeq,                         // llvm.hexagon.A4.cmpbeq
    hexagon_A4_cmpbeqi,                        // llvm.hexagon.A4.cmpbeqi
    hexagon_A4_cmpbgt,                         // llvm.hexagon.A4.cmpbgt
    hexagon_A4_cmpbgti,                        // llvm.hexagon.A4.cmpbgti
    hexagon_A4_cmpbgtu,                        // llvm.hexagon.A4.cmpbgtu
    hexagon_A4_cmpbgtui,                       // llvm.hexagon.A4.cmpbgtui
    hexagon_A4_cmpheq,                         // llvm.hexagon.A4.cmpheq
    hexagon_A4_cmpheqi,                        // llvm.hexagon.A4.cmpheqi
    hexagon_A4_cmphgt,                         // llvm.hexagon.A4.cmphgt
    hexagon_A4_cmphgti,                        // llvm.hexagon.A4.cmphgti
    hexagon_A4_cmphgtu,                        // llvm.hexagon.A4.cmphgtu
    hexagon_A4_cmphgtui,                       // llvm.hexagon.A4.cmphgtui
    hexagon_A4_combineir,                      // llvm.hexagon.A4.combineir
    hexagon_A4_combineri,                      // llvm.hexagon.A4.combineri
    hexagon_A4_cround_ri,                      // llvm.hexagon.A4.cround.ri
    hexagon_A4_cround_rr,                      // llvm.hexagon.A4.cround.rr
    hexagon_A4_modwrapu,                       // llvm.hexagon.A4.modwrapu
    hexagon_A4_orn,                            // llvm.hexagon.A4.orn
    hexagon_A4_ornp,                           // llvm.hexagon.A4.ornp
    hexagon_A4_rcmpeq,                         // llvm.hexagon.A4.rcmpeq
    hexagon_A4_rcmpeqi,                        // llvm.hexagon.A4.rcmpeqi
    hexagon_A4_rcmpneq,                        // llvm.hexagon.A4.rcmpneq
    hexagon_A4_rcmpneqi,                       // llvm.hexagon.A4.rcmpneqi
    hexagon_A4_round_ri,                       // llvm.hexagon.A4.round.ri
    hexagon_A4_round_ri_sat,                   // llvm.hexagon.A4.round.ri.sat
    hexagon_A4_round_rr,                       // llvm.hexagon.A4.round.rr
    hexagon_A4_round_rr_sat,                   // llvm.hexagon.A4.round.rr.sat
    hexagon_A4_tlbmatch,                       // llvm.hexagon.A4.tlbmatch
    hexagon_A4_vcmpbeq_any,                    // llvm.hexagon.A4.vcmpbeq.any
    hexagon_A4_vcmpbeqi,                       // llvm.hexagon.A4.vcmpbeqi
    hexagon_A4_vcmpbgt,                        // llvm.hexagon.A4.vcmpbgt
    hexagon_A4_vcmpbgti,                       // llvm.hexagon.A4.vcmpbgti
    hexagon_A4_vcmpbgtui,                      // llvm.hexagon.A4.vcmpbgtui
    hexagon_A4_vcmpheqi,                       // llvm.hexagon.A4.vcmpheqi
    hexagon_A4_vcmphgti,                       // llvm.hexagon.A4.vcmphgti
    hexagon_A4_vcmphgtui,                      // llvm.hexagon.A4.vcmphgtui
    hexagon_A4_vcmpweqi,                       // llvm.hexagon.A4.vcmpweqi
    hexagon_A4_vcmpwgti,                       // llvm.hexagon.A4.vcmpwgti
    hexagon_A4_vcmpwgtui,                      // llvm.hexagon.A4.vcmpwgtui
    hexagon_A4_vrmaxh,                         // llvm.hexagon.A4.vrmaxh
    hexagon_A4_vrmaxuh,                        // llvm.hexagon.A4.vrmaxuh
    hexagon_A4_vrmaxuw,                        // llvm.hexagon.A4.vrmaxuw
    hexagon_A4_vrmaxw,                         // llvm.hexagon.A4.vrmaxw
    hexagon_A4_vrminh,                         // llvm.hexagon.A4.vrminh
    hexagon_A4_vrminuh,                        // llvm.hexagon.A4.vrminuh
    hexagon_A4_vrminuw,                        // llvm.hexagon.A4.vrminuw
    hexagon_A4_vrminw,                         // llvm.hexagon.A4.vrminw
    hexagon_A5_vaddhubs,                       // llvm.hexagon.A5.vaddhubs
    hexagon_C2_all8,                           // llvm.hexagon.C2.all8
    hexagon_C2_and,                            // llvm.hexagon.C2.and
    hexagon_C2_andn,                           // llvm.hexagon.C2.andn
    hexagon_C2_any8,                           // llvm.hexagon.C2.any8
    hexagon_C2_bitsclr,                        // llvm.hexagon.C2.bitsclr
    hexagon_C2_bitsclri,                       // llvm.hexagon.C2.bitsclri
    hexagon_C2_bitsset,                        // llvm.hexagon.C2.bitsset
    hexagon_C2_cmpeq,                          // llvm.hexagon.C2.cmpeq
    hexagon_C2_cmpeqi,                         // llvm.hexagon.C2.cmpeqi
    hexagon_C2_cmpeqp,                         // llvm.hexagon.C2.cmpeqp
    hexagon_C2_cmpgei,                         // llvm.hexagon.C2.cmpgei
    hexagon_C2_cmpgeui,                        // llvm.hexagon.C2.cmpgeui
    hexagon_C2_cmpgt,                          // llvm.hexagon.C2.cmpgt
    hexagon_C2_cmpgti,                         // llvm.hexagon.C2.cmpgti
    hexagon_C2_cmpgtp,                         // llvm.hexagon.C2.cmpgtp
    hexagon_C2_cmpgtu,                         // llvm.hexagon.C2.cmpgtu
    hexagon_C2_cmpgtui,                        // llvm.hexagon.C2.cmpgtui
    hexagon_C2_cmpgtup,                        // llvm.hexagon.C2.cmpgtup
    hexagon_C2_cmplt,                          // llvm.hexagon.C2.cmplt
    hexagon_C2_cmpltu,                         // llvm.hexagon.C2.cmpltu
    hexagon_C2_mask,                           // llvm.hexagon.C2.mask
    hexagon_C2_mux,                            // llvm.hexagon.C2.mux
    hexagon_C2_muxii,                          // llvm.hexagon.C2.muxii
    hexagon_C2_muxir,                          // llvm.hexagon.C2.muxir
    hexagon_C2_muxri,                          // llvm.hexagon.C2.muxri
    hexagon_C2_not,                            // llvm.hexagon.C2.not
    hexagon_C2_or,                             // llvm.hexagon.C2.or
    hexagon_C2_orn,                            // llvm.hexagon.C2.orn
    hexagon_C2_pxfer_map,                      // llvm.hexagon.C2.pxfer.map
    hexagon_C2_tfrpr,                          // llvm.hexagon.C2.tfrpr
    hexagon_C2_tfrrp,                          // llvm.hexagon.C2.tfrrp
    hexagon_C2_vitpack,                        // llvm.hexagon.C2.vitpack
    hexagon_C2_vmux,                           // llvm.hexagon.C2.vmux
    hexagon_C2_xor,                            // llvm.hexagon.C2.xor
    hexagon_C4_and_and,                        // llvm.hexagon.C4.and.and
    hexagon_C4_and_andn,                       // llvm.hexagon.C4.and.andn
    hexagon_C4_and_or,                         // llvm.hexagon.C4.and.or
    hexagon_C4_and_orn,                        // llvm.hexagon.C4.and.orn
    hexagon_C4_cmplte,                         // llvm.hexagon.C4.cmplte
    hexagon_C4_cmpltei,                        // llvm.hexagon.C4.cmpltei
    hexagon_C4_cmplteu,                        // llvm.hexagon.C4.cmplteu
    hexagon_C4_cmplteui,                       // llvm.hexagon.C4.cmplteui
    hexagon_C4_cmpneq,                         // llvm.hexagon.C4.cmpneq
    hexagon_C4_cmpneqi,                        // llvm.hexagon.C4.cmpneqi
    hexagon_C4_fastcorner9,                    // llvm.hexagon.C4.fastcorner9
    hexagon_C4_fastcorner9_not,                // llvm.hexagon.C4.fastcorner9.not
    hexagon_C4_nbitsclr,                       // llvm.hexagon.C4.nbitsclr
    hexagon_C4_nbitsclri,                      // llvm.hexagon.C4.nbitsclri
    hexagon_C4_nbitsset,                       // llvm.hexagon.C4.nbitsset
    hexagon_C4_or_and,                         // llvm.hexagon.C4.or.and
    hexagon_C4_or_andn,                        // llvm.hexagon.C4.or.andn
    hexagon_C4_or_or,                          // llvm.hexagon.C4.or.or
    hexagon_C4_or_orn,                         // llvm.hexagon.C4.or.orn
    hexagon_F2_conv_d2df,                      // llvm.hexagon.F2.conv.d2df
    hexagon_F2_conv_d2sf,                      // llvm.hexagon.F2.conv.d2sf
    hexagon_F2_conv_df2d,                      // llvm.hexagon.F2.conv.df2d
    hexagon_F2_conv_df2d_chop,                 // llvm.hexagon.F2.conv.df2d.chop
    hexagon_F2_conv_df2sf,                     // llvm.hexagon.F2.conv.df2sf
    hexagon_F2_conv_df2ud,                     // llvm.hexagon.F2.conv.df2ud
    hexagon_F2_conv_df2ud_chop,                // llvm.hexagon.F2.conv.df2ud.chop
    hexagon_F2_conv_df2uw,                     // llvm.hexagon.F2.conv.df2uw
    hexagon_F2_conv_df2uw_chop,                // llvm.hexagon.F2.conv.df2uw.chop
    hexagon_F2_conv_df2w,                      // llvm.hexagon.F2.conv.df2w
    hexagon_F2_conv_df2w_chop,                 // llvm.hexagon.F2.conv.df2w.chop
    hexagon_F2_conv_sf2d,                      // llvm.hexagon.F2.conv.sf2d
    hexagon_F2_conv_sf2d_chop,                 // llvm.hexagon.F2.conv.sf2d.chop
    hexagon_F2_conv_sf2df,                     // llvm.hexagon.F2.conv.sf2df
    hexagon_F2_conv_sf2ud,                     // llvm.hexagon.F2.conv.sf2ud
    hexagon_F2_conv_sf2ud_chop,                // llvm.hexagon.F2.conv.sf2ud.chop
    hexagon_F2_conv_sf2uw,                     // llvm.hexagon.F2.conv.sf2uw
    hexagon_F2_conv_sf2uw_chop,                // llvm.hexagon.F2.conv.sf2uw.chop
    hexagon_F2_conv_sf2w,                      // llvm.hexagon.F2.conv.sf2w
    hexagon_F2_conv_sf2w_chop,                 // llvm.hexagon.F2.conv.sf2w.chop
    hexagon_F2_conv_ud2df,                     // llvm.hexagon.F2.conv.ud2df
    hexagon_F2_conv_ud2sf,                     // llvm.hexagon.F2.conv.ud2sf
    hexagon_F2_conv_uw2df,                     // llvm.hexagon.F2.conv.uw2df
    hexagon_F2_conv_uw2sf,                     // llvm.hexagon.F2.conv.uw2sf
    hexagon_F2_conv_w2df,                      // llvm.hexagon.F2.conv.w2df
    hexagon_F2_conv_w2sf,                      // llvm.hexagon.F2.conv.w2sf
    hexagon_F2_dfadd,                          // llvm.hexagon.F2.dfadd
    hexagon_F2_dfclass,                        // llvm.hexagon.F2.dfclass
    hexagon_F2_dfcmpeq,                        // llvm.hexagon.F2.dfcmpeq
    hexagon_F2_dfcmpge,                        // llvm.hexagon.F2.dfcmpge
    hexagon_F2_dfcmpgt,                        // llvm.hexagon.F2.dfcmpgt
    hexagon_F2_dfcmpuo,                        // llvm.hexagon.F2.dfcmpuo
    hexagon_F2_dffixupd,                       // llvm.hexagon.F2.dffixupd
    hexagon_F2_dffixupn,                       // llvm.hexagon.F2.dffixupn
    hexagon_F2_dffixupr,                       // llvm.hexagon.F2.dffixupr
    hexagon_F2_dffma,                          // llvm.hexagon.F2.dffma
    hexagon_F2_dffma_lib,                      // llvm.hexagon.F2.dffma.lib
    hexagon_F2_dffma_sc,                       // llvm.hexagon.F2.dffma.sc
    hexagon_F2_dffms,                          // llvm.hexagon.F2.dffms
    hexagon_F2_dffms_lib,                      // llvm.hexagon.F2.dffms.lib
    hexagon_F2_dfimm_n,                        // llvm.hexagon.F2.dfimm.n
    hexagon_F2_dfimm_p,                        // llvm.hexagon.F2.dfimm.p
    hexagon_F2_dfmax,                          // llvm.hexagon.F2.dfmax
    hexagon_F2_dfmin,                          // llvm.hexagon.F2.dfmin
    hexagon_F2_dfmpy,                          // llvm.hexagon.F2.dfmpy
    hexagon_F2_dfsub,                          // llvm.hexagon.F2.dfsub
    hexagon_F2_sfadd,                          // llvm.hexagon.F2.sfadd
    hexagon_F2_sfclass,                        // llvm.hexagon.F2.sfclass
    hexagon_F2_sfcmpeq,                        // llvm.hexagon.F2.sfcmpeq
    hexagon_F2_sfcmpge,                        // llvm.hexagon.F2.sfcmpge
    hexagon_F2_sfcmpgt,                        // llvm.hexagon.F2.sfcmpgt
    hexagon_F2_sfcmpuo,                        // llvm.hexagon.F2.sfcmpuo
    hexagon_F2_sffixupd,                       // llvm.hexagon.F2.sffixupd
    hexagon_F2_sffixupn,                       // llvm.hexagon.F2.sffixupn
    hexagon_F2_sffixupr,                       // llvm.hexagon.F2.sffixupr
    hexagon_F2_sffma,                          // llvm.hexagon.F2.sffma
    hexagon_F2_sffma_lib,                      // llvm.hexagon.F2.sffma.lib
    hexagon_F2_sffma_sc,                       // llvm.hexagon.F2.sffma.sc
    hexagon_F2_sffms,                          // llvm.hexagon.F2.sffms
    hexagon_F2_sffms_lib,                      // llvm.hexagon.F2.sffms.lib
    hexagon_F2_sfimm_n,                        // llvm.hexagon.F2.sfimm.n
    hexagon_F2_sfimm_p,                        // llvm.hexagon.F2.sfimm.p
    hexagon_F2_sfmax,                          // llvm.hexagon.F2.sfmax
    hexagon_F2_sfmin,                          // llvm.hexagon.F2.sfmin
    hexagon_F2_sfmpy,                          // llvm.hexagon.F2.sfmpy
    hexagon_F2_sfsub,                          // llvm.hexagon.F2.sfsub
    hexagon_M2_acci,                           // llvm.hexagon.M2.acci
    hexagon_M2_accii,                          // llvm.hexagon.M2.accii
    hexagon_M2_cmaci_s0,                       // llvm.hexagon.M2.cmaci.s0
    hexagon_M2_cmacr_s0,                       // llvm.hexagon.M2.cmacr.s0
    hexagon_M2_cmacs_s0,                       // llvm.hexagon.M2.cmacs.s0
    hexagon_M2_cmacs_s1,                       // llvm.hexagon.M2.cmacs.s1
    hexagon_M2_cmacsc_s0,                      // llvm.hexagon.M2.cmacsc.s0
    hexagon_M2_cmacsc_s1,                      // llvm.hexagon.M2.cmacsc.s1
    hexagon_M2_cmpyi_s0,                       // llvm.hexagon.M2.cmpyi.s0
    hexagon_M2_cmpyr_s0,                       // llvm.hexagon.M2.cmpyr.s0
    hexagon_M2_cmpyrs_s0,                      // llvm.hexagon.M2.cmpyrs.s0
    hexagon_M2_cmpyrs_s1,                      // llvm.hexagon.M2.cmpyrs.s1
    hexagon_M2_cmpyrsc_s0,                     // llvm.hexagon.M2.cmpyrsc.s0
    hexagon_M2_cmpyrsc_s1,                     // llvm.hexagon.M2.cmpyrsc.s1
    hexagon_M2_cmpys_s0,                       // llvm.hexagon.M2.cmpys.s0
    hexagon_M2_cmpys_s1,                       // llvm.hexagon.M2.cmpys.s1
    hexagon_M2_cmpysc_s0,                      // llvm.hexagon.M2.cmpysc.s0
    hexagon_M2_cmpysc_s1,                      // llvm.hexagon.M2.cmpysc.s1
    hexagon_M2_cnacs_s0,                       // llvm.hexagon.M2.cnacs.s0
    hexagon_M2_cnacs_s1,                       // llvm.hexagon.M2.cnacs.s1
    hexagon_M2_cnacsc_s0,                      // llvm.hexagon.M2.cnacsc.s0
    hexagon_M2_cnacsc_s1,                      // llvm.hexagon.M2.cnacsc.s1
    hexagon_M2_dpmpyss_acc_s0,                 // llvm.hexagon.M2.dpmpyss.acc.s0
    hexagon_M2_dpmpyss_nac_s0,                 // llvm.hexagon.M2.dpmpyss.nac.s0
    hexagon_M2_dpmpyss_rnd_s0,                 // llvm.hexagon.M2.dpmpyss.rnd.s0
    hexagon_M2_dpmpyss_s0,                     // llvm.hexagon.M2.dpmpyss.s0
    hexagon_M2_dpmpyuu_acc_s0,                 // llvm.hexagon.M2.dpmpyuu.acc.s0
    hexagon_M2_dpmpyuu_nac_s0,                 // llvm.hexagon.M2.dpmpyuu.nac.s0
    hexagon_M2_dpmpyuu_s0,                     // llvm.hexagon.M2.dpmpyuu.s0
    hexagon_M2_hmmpyh_rs1,                     // llvm.hexagon.M2.hmmpyh.rs1
    hexagon_M2_hmmpyh_s1,                      // llvm.hexagon.M2.hmmpyh.s1
    hexagon_M2_hmmpyl_rs1,                     // llvm.hexagon.M2.hmmpyl.rs1
    hexagon_M2_hmmpyl_s1,                      // llvm.hexagon.M2.hmmpyl.s1
    hexagon_M2_maci,                           // llvm.hexagon.M2.maci
    hexagon_M2_macsin,                         // llvm.hexagon.M2.macsin
    hexagon_M2_macsip,                         // llvm.hexagon.M2.macsip
    hexagon_M2_mmachs_rs0,                     // llvm.hexagon.M2.mmachs.rs0
    hexagon_M2_mmachs_rs1,                     // llvm.hexagon.M2.mmachs.rs1
    hexagon_M2_mmachs_s0,                      // llvm.hexagon.M2.mmachs.s0
    hexagon_M2_mmachs_s1,                      // llvm.hexagon.M2.mmachs.s1
    hexagon_M2_mmacls_rs0,                     // llvm.hexagon.M2.mmacls.rs0
    hexagon_M2_mmacls_rs1,                     // llvm.hexagon.M2.mmacls.rs1
    hexagon_M2_mmacls_s0,                      // llvm.hexagon.M2.mmacls.s0
    hexagon_M2_mmacls_s1,                      // llvm.hexagon.M2.mmacls.s1
    hexagon_M2_mmacuhs_rs0,                    // llvm.hexagon.M2.mmacuhs.rs0
    hexagon_M2_mmacuhs_rs1,                    // llvm.hexagon.M2.mmacuhs.rs1
    hexagon_M2_mmacuhs_s0,                     // llvm.hexagon.M2.mmacuhs.s0
    hexagon_M2_mmacuhs_s1,                     // llvm.hexagon.M2.mmacuhs.s1
    hexagon_M2_mmaculs_rs0,                    // llvm.hexagon.M2.mmaculs.rs0
    hexagon_M2_mmaculs_rs1,                    // llvm.hexagon.M2.mmaculs.rs1
    hexagon_M2_mmaculs_s0,                     // llvm.hexagon.M2.mmaculs.s0
    hexagon_M2_mmaculs_s1,                     // llvm.hexagon.M2.mmaculs.s1
    hexagon_M2_mmpyh_rs0,                      // llvm.hexagon.M2.mmpyh.rs0
    hexagon_M2_mmpyh_rs1,                      // llvm.hexagon.M2.mmpyh.rs1
    hexagon_M2_mmpyh_s0,                       // llvm.hexagon.M2.mmpyh.s0
    hexagon_M2_mmpyh_s1,                       // llvm.hexagon.M2.mmpyh.s1
    hexagon_M2_mmpyl_rs0,                      // llvm.hexagon.M2.mmpyl.rs0
    hexagon_M2_mmpyl_rs1,                      // llvm.hexagon.M2.mmpyl.rs1
    hexagon_M2_mmpyl_s0,                       // llvm.hexagon.M2.mmpyl.s0
    hexagon_M2_mmpyl_s1,                       // llvm.hexagon.M2.mmpyl.s1
    hexagon_M2_mmpyuh_rs0,                     // llvm.hexagon.M2.mmpyuh.rs0
    hexagon_M2_mmpyuh_rs1,                     // llvm.hexagon.M2.mmpyuh.rs1
    hexagon_M2_mmpyuh_s0,                      // llvm.hexagon.M2.mmpyuh.s0
    hexagon_M2_mmpyuh_s1,                      // llvm.hexagon.M2.mmpyuh.s1
    hexagon_M2_mmpyul_rs0,                     // llvm.hexagon.M2.mmpyul.rs0
    hexagon_M2_mmpyul_rs1,                     // llvm.hexagon.M2.mmpyul.rs1
    hexagon_M2_mmpyul_s0,                      // llvm.hexagon.M2.mmpyul.s0
    hexagon_M2_mmpyul_s1,                      // llvm.hexagon.M2.mmpyul.s1
    hexagon_M2_mpy_acc_hh_s0,                  // llvm.hexagon.M2.mpy.acc.hh.s0
    hexagon_M2_mpy_acc_hh_s1,                  // llvm.hexagon.M2.mpy.acc.hh.s1
    hexagon_M2_mpy_acc_hl_s0,                  // llvm.hexagon.M2.mpy.acc.hl.s0
    hexagon_M2_mpy_acc_hl_s1,                  // llvm.hexagon.M2.mpy.acc.hl.s1
    hexagon_M2_mpy_acc_lh_s0,                  // llvm.hexagon.M2.mpy.acc.lh.s0
    hexagon_M2_mpy_acc_lh_s1,                  // llvm.hexagon.M2.mpy.acc.lh.s1
    hexagon_M2_mpy_acc_ll_s0,                  // llvm.hexagon.M2.mpy.acc.ll.s0
    hexagon_M2_mpy_acc_ll_s1,                  // llvm.hexagon.M2.mpy.acc.ll.s1
    hexagon_M2_mpy_acc_sat_hh_s0,              // llvm.hexagon.M2.mpy.acc.sat.hh.s0
    hexagon_M2_mpy_acc_sat_hh_s1,              // llvm.hexagon.M2.mpy.acc.sat.hh.s1
    hexagon_M2_mpy_acc_sat_hl_s0,              // llvm.hexagon.M2.mpy.acc.sat.hl.s0
    hexagon_M2_mpy_acc_sat_hl_s1,              // llvm.hexagon.M2.mpy.acc.sat.hl.s1
    hexagon_M2_mpy_acc_sat_lh_s0,              // llvm.hexagon.M2.mpy.acc.sat.lh.s0
    hexagon_M2_mpy_acc_sat_lh_s1,              // llvm.hexagon.M2.mpy.acc.sat.lh.s1
    hexagon_M2_mpy_acc_sat_ll_s0,              // llvm.hexagon.M2.mpy.acc.sat.ll.s0
    hexagon_M2_mpy_acc_sat_ll_s1,              // llvm.hexagon.M2.mpy.acc.sat.ll.s1
    hexagon_M2_mpy_hh_s0,                      // llvm.hexagon.M2.mpy.hh.s0
    hexagon_M2_mpy_hh_s1,                      // llvm.hexagon.M2.mpy.hh.s1
    hexagon_M2_mpy_hl_s0,                      // llvm.hexagon.M2.mpy.hl.s0
    hexagon_M2_mpy_hl_s1,                      // llvm.hexagon.M2.mpy.hl.s1
    hexagon_M2_mpy_lh_s0,                      // llvm.hexagon.M2.mpy.lh.s0
    hexagon_M2_mpy_lh_s1,                      // llvm.hexagon.M2.mpy.lh.s1
    hexagon_M2_mpy_ll_s0,                      // llvm.hexagon.M2.mpy.ll.s0
    hexagon_M2_mpy_ll_s1,                      // llvm.hexagon.M2.mpy.ll.s1
    hexagon_M2_mpy_nac_hh_s0,                  // llvm.hexagon.M2.mpy.nac.hh.s0
    hexagon_M2_mpy_nac_hh_s1,                  // llvm.hexagon.M2.mpy.nac.hh.s1
    hexagon_M2_mpy_nac_hl_s0,                  // llvm.hexagon.M2.mpy.nac.hl.s0
    hexagon_M2_mpy_nac_hl_s1,                  // llvm.hexagon.M2.mpy.nac.hl.s1
    hexagon_M2_mpy_nac_lh_s0,                  // llvm.hexagon.M2.mpy.nac.lh.s0
    hexagon_M2_mpy_nac_lh_s1,                  // llvm.hexagon.M2.mpy.nac.lh.s1
    hexagon_M2_mpy_nac_ll_s0,                  // llvm.hexagon.M2.mpy.nac.ll.s0
    hexagon_M2_mpy_nac_ll_s1,                  // llvm.hexagon.M2.mpy.nac.ll.s1
    hexagon_M2_mpy_nac_sat_hh_s0,              // llvm.hexagon.M2.mpy.nac.sat.hh.s0
    hexagon_M2_mpy_nac_sat_hh_s1,              // llvm.hexagon.M2.mpy.nac.sat.hh.s1
    hexagon_M2_mpy_nac_sat_hl_s0,              // llvm.hexagon.M2.mpy.nac.sat.hl.s0
    hexagon_M2_mpy_nac_sat_hl_s1,              // llvm.hexagon.M2.mpy.nac.sat.hl.s1
    hexagon_M2_mpy_nac_sat_lh_s0,              // llvm.hexagon.M2.mpy.nac.sat.lh.s0
    hexagon_M2_mpy_nac_sat_lh_s1,              // llvm.hexagon.M2.mpy.nac.sat.lh.s1
    hexagon_M2_mpy_nac_sat_ll_s0,              // llvm.hexagon.M2.mpy.nac.sat.ll.s0
    hexagon_M2_mpy_nac_sat_ll_s1,              // llvm.hexagon.M2.mpy.nac.sat.ll.s1
    hexagon_M2_mpy_rnd_hh_s0,                  // llvm.hexagon.M2.mpy.rnd.hh.s0
    hexagon_M2_mpy_rnd_hh_s1,                  // llvm.hexagon.M2.mpy.rnd.hh.s1
    hexagon_M2_mpy_rnd_hl_s0,                  // llvm.hexagon.M2.mpy.rnd.hl.s0
    hexagon_M2_mpy_rnd_hl_s1,                  // llvm.hexagon.M2.mpy.rnd.hl.s1
    hexagon_M2_mpy_rnd_lh_s0,                  // llvm.hexagon.M2.mpy.rnd.lh.s0
    hexagon_M2_mpy_rnd_lh_s1,                  // llvm.hexagon.M2.mpy.rnd.lh.s1
    hexagon_M2_mpy_rnd_ll_s0,                  // llvm.hexagon.M2.mpy.rnd.ll.s0
    hexagon_M2_mpy_rnd_ll_s1,                  // llvm.hexagon.M2.mpy.rnd.ll.s1
    hexagon_M2_mpy_sat_hh_s0,                  // llvm.hexagon.M2.mpy.sat.hh.s0
    hexagon_M2_mpy_sat_hh_s1,                  // llvm.hexagon.M2.mpy.sat.hh.s1
    hexagon_M2_mpy_sat_hl_s0,                  // llvm.hexagon.M2.mpy.sat.hl.s0
    hexagon_M2_mpy_sat_hl_s1,                  // llvm.hexagon.M2.mpy.sat.hl.s1
    hexagon_M2_mpy_sat_lh_s0,                  // llvm.hexagon.M2.mpy.sat.lh.s0
    hexagon_M2_mpy_sat_lh_s1,                  // llvm.hexagon.M2.mpy.sat.lh.s1
    hexagon_M2_mpy_sat_ll_s0,                  // llvm.hexagon.M2.mpy.sat.ll.s0
    hexagon_M2_mpy_sat_ll_s1,                  // llvm.hexagon.M2.mpy.sat.ll.s1
    hexagon_M2_mpy_sat_rnd_hh_s0,              // llvm.hexagon.M2.mpy.sat.rnd.hh.s0
    hexagon_M2_mpy_sat_rnd_hh_s1,              // llvm.hexagon.M2.mpy.sat.rnd.hh.s1
    hexagon_M2_mpy_sat_rnd_hl_s0,              // llvm.hexagon.M2.mpy.sat.rnd.hl.s0
    hexagon_M2_mpy_sat_rnd_hl_s1,              // llvm.hexagon.M2.mpy.sat.rnd.hl.s1
    hexagon_M2_mpy_sat_rnd_lh_s0,              // llvm.hexagon.M2.mpy.sat.rnd.lh.s0
    hexagon_M2_mpy_sat_rnd_lh_s1,              // llvm.hexagon.M2.mpy.sat.rnd.lh.s1
    hexagon_M2_mpy_sat_rnd_ll_s0,              // llvm.hexagon.M2.mpy.sat.rnd.ll.s0
    hexagon_M2_mpy_sat_rnd_ll_s1,              // llvm.hexagon.M2.mpy.sat.rnd.ll.s1
    hexagon_M2_mpy_up,                         // llvm.hexagon.M2.mpy.up
    hexagon_M2_mpy_up_s1,                      // llvm.hexagon.M2.mpy.up.s1
    hexagon_M2_mpy_up_s1_sat,                  // llvm.hexagon.M2.mpy.up.s1.sat
    hexagon_M2_mpyd_acc_hh_s0,                 // llvm.hexagon.M2.mpyd.acc.hh.s0
    hexagon_M2_mpyd_acc_hh_s1,                 // llvm.hexagon.M2.mpyd.acc.hh.s1
    hexagon_M2_mpyd_acc_hl_s0,                 // llvm.hexagon.M2.mpyd.acc.hl.s0
    hexagon_M2_mpyd_acc_hl_s1,                 // llvm.hexagon.M2.mpyd.acc.hl.s1
    hexagon_M2_mpyd_acc_lh_s0,                 // llvm.hexagon.M2.mpyd.acc.lh.s0
    hexagon_M2_mpyd_acc_lh_s1,                 // llvm.hexagon.M2.mpyd.acc.lh.s1
    hexagon_M2_mpyd_acc_ll_s0,                 // llvm.hexagon.M2.mpyd.acc.ll.s0
    hexagon_M2_mpyd_acc_ll_s1,                 // llvm.hexagon.M2.mpyd.acc.ll.s1
    hexagon_M2_mpyd_hh_s0,                     // llvm.hexagon.M2.mpyd.hh.s0
    hexagon_M2_mpyd_hh_s1,                     // llvm.hexagon.M2.mpyd.hh.s1
    hexagon_M2_mpyd_hl_s0,                     // llvm.hexagon.M2.mpyd.hl.s0
    hexagon_M2_mpyd_hl_s1,                     // llvm.hexagon.M2.mpyd.hl.s1
    hexagon_M2_mpyd_lh_s0,                     // llvm.hexagon.M2.mpyd.lh.s0
    hexagon_M2_mpyd_lh_s1,                     // llvm.hexagon.M2.mpyd.lh.s1
    hexagon_M2_mpyd_ll_s0,                     // llvm.hexagon.M2.mpyd.ll.s0
    hexagon_M2_mpyd_ll_s1,                     // llvm.hexagon.M2.mpyd.ll.s1
    hexagon_M2_mpyd_nac_hh_s0,                 // llvm.hexagon.M2.mpyd.nac.hh.s0
    hexagon_M2_mpyd_nac_hh_s1,                 // llvm.hexagon.M2.mpyd.nac.hh.s1
    hexagon_M2_mpyd_nac_hl_s0,                 // llvm.hexagon.M2.mpyd.nac.hl.s0
    hexagon_M2_mpyd_nac_hl_s1,                 // llvm.hexagon.M2.mpyd.nac.hl.s1
    hexagon_M2_mpyd_nac_lh_s0,                 // llvm.hexagon.M2.mpyd.nac.lh.s0
    hexagon_M2_mpyd_nac_lh_s1,                 // llvm.hexagon.M2.mpyd.nac.lh.s1
    hexagon_M2_mpyd_nac_ll_s0,                 // llvm.hexagon.M2.mpyd.nac.ll.s0
    hexagon_M2_mpyd_nac_ll_s1,                 // llvm.hexagon.M2.mpyd.nac.ll.s1
    hexagon_M2_mpyd_rnd_hh_s0,                 // llvm.hexagon.M2.mpyd.rnd.hh.s0
    hexagon_M2_mpyd_rnd_hh_s1,                 // llvm.hexagon.M2.mpyd.rnd.hh.s1
    hexagon_M2_mpyd_rnd_hl_s0,                 // llvm.hexagon.M2.mpyd.rnd.hl.s0
    hexagon_M2_mpyd_rnd_hl_s1,                 // llvm.hexagon.M2.mpyd.rnd.hl.s1
    hexagon_M2_mpyd_rnd_lh_s0,                 // llvm.hexagon.M2.mpyd.rnd.lh.s0
    hexagon_M2_mpyd_rnd_lh_s1,                 // llvm.hexagon.M2.mpyd.rnd.lh.s1
    hexagon_M2_mpyd_rnd_ll_s0,                 // llvm.hexagon.M2.mpyd.rnd.ll.s0
    hexagon_M2_mpyd_rnd_ll_s1,                 // llvm.hexagon.M2.mpyd.rnd.ll.s1
    hexagon_M2_mpyi,                           // llvm.hexagon.M2.mpyi
    hexagon_M2_mpysmi,                         // llvm.hexagon.M2.mpysmi
    hexagon_M2_mpysu_up,                       // llvm.hexagon.M2.mpysu.up
    hexagon_M2_mpyu_acc_hh_s0,                 // llvm.hexagon.M2.mpyu.acc.hh.s0
    hexagon_M2_mpyu_acc_hh_s1,                 // llvm.hexagon.M2.mpyu.acc.hh.s1
    hexagon_M2_mpyu_acc_hl_s0,                 // llvm.hexagon.M2.mpyu.acc.hl.s0
    hexagon_M2_mpyu_acc_hl_s1,                 // llvm.hexagon.M2.mpyu.acc.hl.s1
    hexagon_M2_mpyu_acc_lh_s0,                 // llvm.hexagon.M2.mpyu.acc.lh.s0
    hexagon_M2_mpyu_acc_lh_s1,                 // llvm.hexagon.M2.mpyu.acc.lh.s1
    hexagon_M2_mpyu_acc_ll_s0,                 // llvm.hexagon.M2.mpyu.acc.ll.s0
    hexagon_M2_mpyu_acc_ll_s1,                 // llvm.hexagon.M2.mpyu.acc.ll.s1
    hexagon_M2_mpyu_hh_s0,                     // llvm.hexagon.M2.mpyu.hh.s0
    hexagon_M2_mpyu_hh_s1,                     // llvm.hexagon.M2.mpyu.hh.s1
    hexagon_M2_mpyu_hl_s0,                     // llvm.hexagon.M2.mpyu.hl.s0
    hexagon_M2_mpyu_hl_s1,                     // llvm.hexagon.M2.mpyu.hl.s1
    hexagon_M2_mpyu_lh_s0,                     // llvm.hexagon.M2.mpyu.lh.s0
    hexagon_M2_mpyu_lh_s1,                     // llvm.hexagon.M2.mpyu.lh.s1
    hexagon_M2_mpyu_ll_s0,                     // llvm.hexagon.M2.mpyu.ll.s0
    hexagon_M2_mpyu_ll_s1,                     // llvm.hexagon.M2.mpyu.ll.s1
    hexagon_M2_mpyu_nac_hh_s0,                 // llvm.hexagon.M2.mpyu.nac.hh.s0
    hexagon_M2_mpyu_nac_hh_s1,                 // llvm.hexagon.M2.mpyu.nac.hh.s1
    hexagon_M2_mpyu_nac_hl_s0,                 // llvm.hexagon.M2.mpyu.nac.hl.s0
    hexagon_M2_mpyu_nac_hl_s1,                 // llvm.hexagon.M2.mpyu.nac.hl.s1
    hexagon_M2_mpyu_nac_lh_s0,                 // llvm.hexagon.M2.mpyu.nac.lh.s0
    hexagon_M2_mpyu_nac_lh_s1,                 // llvm.hexagon.M2.mpyu.nac.lh.s1
    hexagon_M2_mpyu_nac_ll_s0,                 // llvm.hexagon.M2.mpyu.nac.ll.s0
    hexagon_M2_mpyu_nac_ll_s1,                 // llvm.hexagon.M2.mpyu.nac.ll.s1
    hexagon_M2_mpyu_up,                        // llvm.hexagon.M2.mpyu.up
    hexagon_M2_mpyud_acc_hh_s0,                // llvm.hexagon.M2.mpyud.acc.hh.s0
    hexagon_M2_mpyud_acc_hh_s1,                // llvm.hexagon.M2.mpyud.acc.hh.s1
    hexagon_M2_mpyud_acc_hl_s0,                // llvm.hexagon.M2.mpyud.acc.hl.s0
    hexagon_M2_mpyud_acc_hl_s1,                // llvm.hexagon.M2.mpyud.acc.hl.s1
    hexagon_M2_mpyud_acc_lh_s0,                // llvm.hexagon.M2.mpyud.acc.lh.s0
    hexagon_M2_mpyud_acc_lh_s1,                // llvm.hexagon.M2.mpyud.acc.lh.s1
    hexagon_M2_mpyud_acc_ll_s0,                // llvm.hexagon.M2.mpyud.acc.ll.s0
    hexagon_M2_mpyud_acc_ll_s1,                // llvm.hexagon.M2.mpyud.acc.ll.s1
    hexagon_M2_mpyud_hh_s0,                    // llvm.hexagon.M2.mpyud.hh.s0
    hexagon_M2_mpyud_hh_s1,                    // llvm.hexagon.M2.mpyud.hh.s1
    hexagon_M2_mpyud_hl_s0,                    // llvm.hexagon.M2.mpyud.hl.s0
    hexagon_M2_mpyud_hl_s1,                    // llvm.hexagon.M2.mpyud.hl.s1
    hexagon_M2_mpyud_lh_s0,                    // llvm.hexagon.M2.mpyud.lh.s0
    hexagon_M2_mpyud_lh_s1,                    // llvm.hexagon.M2.mpyud.lh.s1
    hexagon_M2_mpyud_ll_s0,                    // llvm.hexagon.M2.mpyud.ll.s0
    hexagon_M2_mpyud_ll_s1,                    // llvm.hexagon.M2.mpyud.ll.s1
    hexagon_M2_mpyud_nac_hh_s0,                // llvm.hexagon.M2.mpyud.nac.hh.s0
    hexagon_M2_mpyud_nac_hh_s1,                // llvm.hexagon.M2.mpyud.nac.hh.s1
    hexagon_M2_mpyud_nac_hl_s0,                // llvm.hexagon.M2.mpyud.nac.hl.s0
    hexagon_M2_mpyud_nac_hl_s1,                // llvm.hexagon.M2.mpyud.nac.hl.s1
    hexagon_M2_mpyud_nac_lh_s0,                // llvm.hexagon.M2.mpyud.nac.lh.s0
    hexagon_M2_mpyud_nac_lh_s1,                // llvm.hexagon.M2.mpyud.nac.lh.s1
    hexagon_M2_mpyud_nac_ll_s0,                // llvm.hexagon.M2.mpyud.nac.ll.s0
    hexagon_M2_mpyud_nac_ll_s1,                // llvm.hexagon.M2.mpyud.nac.ll.s1
    hexagon_M2_mpyui,                          // llvm.hexagon.M2.mpyui
    hexagon_M2_nacci,                          // llvm.hexagon.M2.nacci
    hexagon_M2_naccii,                         // llvm.hexagon.M2.naccii
    hexagon_M2_subacc,                         // llvm.hexagon.M2.subacc
    hexagon_M2_vabsdiffh,                      // llvm.hexagon.M2.vabsdiffh
    hexagon_M2_vabsdiffw,                      // llvm.hexagon.M2.vabsdiffw
    hexagon_M2_vcmac_s0_sat_i,                 // llvm.hexagon.M2.vcmac.s0.sat.i
    hexagon_M2_vcmac_s0_sat_r,                 // llvm.hexagon.M2.vcmac.s0.sat.r
    hexagon_M2_vcmpy_s0_sat_i,                 // llvm.hexagon.M2.vcmpy.s0.sat.i
    hexagon_M2_vcmpy_s0_sat_r,                 // llvm.hexagon.M2.vcmpy.s0.sat.r
    hexagon_M2_vcmpy_s1_sat_i,                 // llvm.hexagon.M2.vcmpy.s1.sat.i
    hexagon_M2_vcmpy_s1_sat_r,                 // llvm.hexagon.M2.vcmpy.s1.sat.r
    hexagon_M2_vdmacs_s0,                      // llvm.hexagon.M2.vdmacs.s0
    hexagon_M2_vdmacs_s1,                      // llvm.hexagon.M2.vdmacs.s1
    hexagon_M2_vdmpyrs_s0,                     // llvm.hexagon.M2.vdmpyrs.s0
    hexagon_M2_vdmpyrs_s1,                     // llvm.hexagon.M2.vdmpyrs.s1
    hexagon_M2_vdmpys_s0,                      // llvm.hexagon.M2.vdmpys.s0
    hexagon_M2_vdmpys_s1,                      // llvm.hexagon.M2.vdmpys.s1
    hexagon_M2_vmac2,                          // llvm.hexagon.M2.vmac2
    hexagon_M2_vmac2es,                        // llvm.hexagon.M2.vmac2es
    hexagon_M2_vmac2es_s0,                     // llvm.hexagon.M2.vmac2es.s0
    hexagon_M2_vmac2es_s1,                     // llvm.hexagon.M2.vmac2es.s1
    hexagon_M2_vmac2s_s0,                      // llvm.hexagon.M2.vmac2s.s0
    hexagon_M2_vmac2s_s1,                      // llvm.hexagon.M2.vmac2s.s1
    hexagon_M2_vmac2su_s0,                     // llvm.hexagon.M2.vmac2su.s0
    hexagon_M2_vmac2su_s1,                     // llvm.hexagon.M2.vmac2su.s1
    hexagon_M2_vmpy2es_s0,                     // llvm.hexagon.M2.vmpy2es.s0
    hexagon_M2_vmpy2es_s1,                     // llvm.hexagon.M2.vmpy2es.s1
    hexagon_M2_vmpy2s_s0,                      // llvm.hexagon.M2.vmpy2s.s0
    hexagon_M2_vmpy2s_s0pack,                  // llvm.hexagon.M2.vmpy2s.s0pack
    hexagon_M2_vmpy2s_s1,                      // llvm.hexagon.M2.vmpy2s.s1
    hexagon_M2_vmpy2s_s1pack,                  // llvm.hexagon.M2.vmpy2s.s1pack
    hexagon_M2_vmpy2su_s0,                     // llvm.hexagon.M2.vmpy2su.s0
    hexagon_M2_vmpy2su_s1,                     // llvm.hexagon.M2.vmpy2su.s1
    hexagon_M2_vraddh,                         // llvm.hexagon.M2.vraddh
    hexagon_M2_vradduh,                        // llvm.hexagon.M2.vradduh
    hexagon_M2_vrcmaci_s0,                     // llvm.hexagon.M2.vrcmaci.s0
    hexagon_M2_vrcmaci_s0c,                    // llvm.hexagon.M2.vrcmaci.s0c
    hexagon_M2_vrcmacr_s0,                     // llvm.hexagon.M2.vrcmacr.s0
    hexagon_M2_vrcmacr_s0c,                    // llvm.hexagon.M2.vrcmacr.s0c
    hexagon_M2_vrcmpyi_s0,                     // llvm.hexagon.M2.vrcmpyi.s0
    hexagon_M2_vrcmpyi_s0c,                    // llvm.hexagon.M2.vrcmpyi.s0c
    hexagon_M2_vrcmpyr_s0,                     // llvm.hexagon.M2.vrcmpyr.s0
    hexagon_M2_vrcmpyr_s0c,                    // llvm.hexagon.M2.vrcmpyr.s0c
    hexagon_M2_vrcmpys_acc_s1,                 // llvm.hexagon.M2.vrcmpys.acc.s1
    hexagon_M2_vrcmpys_s1,                     // llvm.hexagon.M2.vrcmpys.s1
    hexagon_M2_vrcmpys_s1rp,                   // llvm.hexagon.M2.vrcmpys.s1rp
    hexagon_M2_vrmac_s0,                       // llvm.hexagon.M2.vrmac.s0
    hexagon_M2_vrmpy_s0,                       // llvm.hexagon.M2.vrmpy.s0
    hexagon_M2_xor_xacc,                       // llvm.hexagon.M2.xor.xacc
    hexagon_M4_and_and,                        // llvm.hexagon.M4.and.and
    hexagon_M4_and_andn,                       // llvm.hexagon.M4.and.andn
    hexagon_M4_and_or,                         // llvm.hexagon.M4.and.or
    hexagon_M4_and_xor,                        // llvm.hexagon.M4.and.xor
    hexagon_M4_cmpyi_wh,                       // llvm.hexagon.M4.cmpyi.wh
    hexagon_M4_cmpyi_whc,                      // llvm.hexagon.M4.cmpyi.whc
    hexagon_M4_cmpyr_wh,                       // llvm.hexagon.M4.cmpyr.wh
    hexagon_M4_cmpyr_whc,                      // llvm.hexagon.M4.cmpyr.whc
    hexagon_M4_mac_up_s1_sat,                  // llvm.hexagon.M4.mac.up.s1.sat
    hexagon_M4_mpyri_addi,                     // llvm.hexagon.M4.mpyri.addi
    hexagon_M4_mpyri_addr,                     // llvm.hexagon.M4.mpyri.addr
    hexagon_M4_mpyri_addr_u2,                  // llvm.hexagon.M4.mpyri.addr.u2
    hexagon_M4_mpyrr_addi,                     // llvm.hexagon.M4.mpyrr.addi
    hexagon_M4_mpyrr_addr,                     // llvm.hexagon.M4.mpyrr.addr
    hexagon_M4_nac_up_s1_sat,                  // llvm.hexagon.M4.nac.up.s1.sat
    hexagon_M4_or_and,                         // llvm.hexagon.M4.or.and
    hexagon_M4_or_andn,                        // llvm.hexagon.M4.or.andn
    hexagon_M4_or_or,                          // llvm.hexagon.M4.or.or
    hexagon_M4_or_xor,                         // llvm.hexagon.M4.or.xor
    hexagon_M4_pmpyw,                          // llvm.hexagon.M4.pmpyw
    hexagon_M4_pmpyw_acc,                      // llvm.hexagon.M4.pmpyw.acc
    hexagon_M4_vpmpyh,                         // llvm.hexagon.M4.vpmpyh
    hexagon_M4_vpmpyh_acc,                     // llvm.hexagon.M4.vpmpyh.acc
    hexagon_M4_vrmpyeh_acc_s0,                 // llvm.hexagon.M4.vrmpyeh.acc.s0
    hexagon_M4_vrmpyeh_acc_s1,                 // llvm.hexagon.M4.vrmpyeh.acc.s1
    hexagon_M4_vrmpyeh_s0,                     // llvm.hexagon.M4.vrmpyeh.s0
    hexagon_M4_vrmpyeh_s1,                     // llvm.hexagon.M4.vrmpyeh.s1
    hexagon_M4_vrmpyoh_acc_s0,                 // llvm.hexagon.M4.vrmpyoh.acc.s0
    hexagon_M4_vrmpyoh_acc_s1,                 // llvm.hexagon.M4.vrmpyoh.acc.s1
    hexagon_M4_vrmpyoh_s0,                     // llvm.hexagon.M4.vrmpyoh.s0
    hexagon_M4_vrmpyoh_s1,                     // llvm.hexagon.M4.vrmpyoh.s1
    hexagon_M4_xor_and,                        // llvm.hexagon.M4.xor.and
    hexagon_M4_xor_andn,                       // llvm.hexagon.M4.xor.andn
    hexagon_M4_xor_or,                         // llvm.hexagon.M4.xor.or
    hexagon_M4_xor_xacc,                       // llvm.hexagon.M4.xor.xacc
    hexagon_M5_vdmacbsu,                       // llvm.hexagon.M5.vdmacbsu
    hexagon_M5_vdmpybsu,                       // llvm.hexagon.M5.vdmpybsu
    hexagon_M5_vmacbsu,                        // llvm.hexagon.M5.vmacbsu
    hexagon_M5_vmacbuu,                        // llvm.hexagon.M5.vmacbuu
    hexagon_M5_vmpybsu,                        // llvm.hexagon.M5.vmpybsu
    hexagon_M5_vmpybuu,                        // llvm.hexagon.M5.vmpybuu
    hexagon_M5_vrmacbsu,                       // llvm.hexagon.M5.vrmacbsu
    hexagon_M5_vrmacbuu,                       // llvm.hexagon.M5.vrmacbuu
    hexagon_M5_vrmpybsu,                       // llvm.hexagon.M5.vrmpybsu
    hexagon_M5_vrmpybuu,                       // llvm.hexagon.M5.vrmpybuu
    hexagon_S2_addasl_rrri,                    // llvm.hexagon.S2.addasl.rrri
    hexagon_S2_asl_i_p,                        // llvm.hexagon.S2.asl.i.p
    hexagon_S2_asl_i_p_acc,                    // llvm.hexagon.S2.asl.i.p.acc
    hexagon_S2_asl_i_p_and,                    // llvm.hexagon.S2.asl.i.p.and
    hexagon_S2_asl_i_p_nac,                    // llvm.hexagon.S2.asl.i.p.nac
    hexagon_S2_asl_i_p_or,                     // llvm.hexagon.S2.asl.i.p.or
    hexagon_S2_asl_i_p_xacc,                   // llvm.hexagon.S2.asl.i.p.xacc
    hexagon_S2_asl_i_r,                        // llvm.hexagon.S2.asl.i.r
    hexagon_S2_asl_i_r_acc,                    // llvm.hexagon.S2.asl.i.r.acc
    hexagon_S2_asl_i_r_and,                    // llvm.hexagon.S2.asl.i.r.and
    hexagon_S2_asl_i_r_nac,                    // llvm.hexagon.S2.asl.i.r.nac
    hexagon_S2_asl_i_r_or,                     // llvm.hexagon.S2.asl.i.r.or
    hexagon_S2_asl_i_r_sat,                    // llvm.hexagon.S2.asl.i.r.sat
    hexagon_S2_asl_i_r_xacc,                   // llvm.hexagon.S2.asl.i.r.xacc
    hexagon_S2_asl_i_vh,                       // llvm.hexagon.S2.asl.i.vh
    hexagon_S2_asl_i_vw,                       // llvm.hexagon.S2.asl.i.vw
    hexagon_S2_asl_r_p,                        // llvm.hexagon.S2.asl.r.p
    hexagon_S2_asl_r_p_acc,                    // llvm.hexagon.S2.asl.r.p.acc
    hexagon_S2_asl_r_p_and,                    // llvm.hexagon.S2.asl.r.p.and
    hexagon_S2_asl_r_p_nac,                    // llvm.hexagon.S2.asl.r.p.nac
    hexagon_S2_asl_r_p_or,                     // llvm.hexagon.S2.asl.r.p.or
    hexagon_S2_asl_r_p_xor,                    // llvm.hexagon.S2.asl.r.p.xor
    hexagon_S2_asl_r_r,                        // llvm.hexagon.S2.asl.r.r
    hexagon_S2_asl_r_r_acc,                    // llvm.hexagon.S2.asl.r.r.acc
    hexagon_S2_asl_r_r_and,                    // llvm.hexagon.S2.asl.r.r.and
    hexagon_S2_asl_r_r_nac,                    // llvm.hexagon.S2.asl.r.r.nac
    hexagon_S2_asl_r_r_or,                     // llvm.hexagon.S2.asl.r.r.or
    hexagon_S2_asl_r_r_sat,                    // llvm.hexagon.S2.asl.r.r.sat
    hexagon_S2_asl_r_vh,                       // llvm.hexagon.S2.asl.r.vh
    hexagon_S2_asl_r_vw,                       // llvm.hexagon.S2.asl.r.vw
    hexagon_S2_asr_i_p,                        // llvm.hexagon.S2.asr.i.p
    hexagon_S2_asr_i_p_acc,                    // llvm.hexagon.S2.asr.i.p.acc
    hexagon_S2_asr_i_p_and,                    // llvm.hexagon.S2.asr.i.p.and
    hexagon_S2_asr_i_p_nac,                    // llvm.hexagon.S2.asr.i.p.nac
    hexagon_S2_asr_i_p_or,                     // llvm.hexagon.S2.asr.i.p.or
    hexagon_S2_asr_i_p_rnd,                    // llvm.hexagon.S2.asr.i.p.rnd
    hexagon_S2_asr_i_p_rnd_goodsyntax,         // llvm.hexagon.S2.asr.i.p.rnd.goodsyntax
    hexagon_S2_asr_i_r,                        // llvm.hexagon.S2.asr.i.r
    hexagon_S2_asr_i_r_acc,                    // llvm.hexagon.S2.asr.i.r.acc
    hexagon_S2_asr_i_r_and,                    // llvm.hexagon.S2.asr.i.r.and
    hexagon_S2_asr_i_r_nac,                    // llvm.hexagon.S2.asr.i.r.nac
    hexagon_S2_asr_i_r_or,                     // llvm.hexagon.S2.asr.i.r.or
    hexagon_S2_asr_i_r_rnd,                    // llvm.hexagon.S2.asr.i.r.rnd
    hexagon_S2_asr_i_r_rnd_goodsyntax,         // llvm.hexagon.S2.asr.i.r.rnd.goodsyntax
    hexagon_S2_asr_i_svw_trun,                 // llvm.hexagon.S2.asr.i.svw.trun
    hexagon_S2_asr_i_vh,                       // llvm.hexagon.S2.asr.i.vh
    hexagon_S2_asr_i_vw,                       // llvm.hexagon.S2.asr.i.vw
    hexagon_S2_asr_r_p,                        // llvm.hexagon.S2.asr.r.p
    hexagon_S2_asr_r_p_acc,                    // llvm.hexagon.S2.asr.r.p.acc
    hexagon_S2_asr_r_p_and,                    // llvm.hexagon.S2.asr.r.p.and
    hexagon_S2_asr_r_p_nac,                    // llvm.hexagon.S2.asr.r.p.nac
    hexagon_S2_asr_r_p_or,                     // llvm.hexagon.S2.asr.r.p.or
    hexagon_S2_asr_r_p_xor,                    // llvm.hexagon.S2.asr.r.p.xor
    hexagon_S2_asr_r_r,                        // llvm.hexagon.S2.asr.r.r
    hexagon_S2_asr_r_r_acc,                    // llvm.hexagon.S2.asr.r.r.acc
    hexagon_S2_asr_r_r_and,                    // llvm.hexagon.S2.asr.r.r.and
    hexagon_S2_asr_r_r_nac,                    // llvm.hexagon.S2.asr.r.r.nac
    hexagon_S2_asr_r_r_or,                     // llvm.hexagon.S2.asr.r.r.or
    hexagon_S2_asr_r_r_sat,                    // llvm.hexagon.S2.asr.r.r.sat
    hexagon_S2_asr_r_svw_trun,                 // llvm.hexagon.S2.asr.r.svw.trun
    hexagon_S2_asr_r_vh,                       // llvm.hexagon.S2.asr.r.vh
    hexagon_S2_asr_r_vw,                       // llvm.hexagon.S2.asr.r.vw
    hexagon_S2_brev,                           // llvm.hexagon.S2.brev
    hexagon_S2_brevp,                          // llvm.hexagon.S2.brevp
    hexagon_S2_cl0,                            // llvm.hexagon.S2.cl0
    hexagon_S2_cl0p,                           // llvm.hexagon.S2.cl0p
    hexagon_S2_cl1,                            // llvm.hexagon.S2.cl1
    hexagon_S2_cl1p,                           // llvm.hexagon.S2.cl1p
    hexagon_S2_clb,                            // llvm.hexagon.S2.clb
    hexagon_S2_clbnorm,                        // llvm.hexagon.S2.clbnorm
    hexagon_S2_clbp,                           // llvm.hexagon.S2.clbp
    hexagon_S2_clrbit_i,                       // llvm.hexagon.S2.clrbit.i
    hexagon_S2_clrbit_r,                       // llvm.hexagon.S2.clrbit.r
    hexagon_S2_ct0,                            // llvm.hexagon.S2.ct0
    hexagon_S2_ct0p,                           // llvm.hexagon.S2.ct0p
    hexagon_S2_ct1,                            // llvm.hexagon.S2.ct1
    hexagon_S2_ct1p,                           // llvm.hexagon.S2.ct1p
    hexagon_S2_deinterleave,                   // llvm.hexagon.S2.deinterleave
    hexagon_S2_extractu,                       // llvm.hexagon.S2.extractu
    hexagon_S2_extractu_rp,                    // llvm.hexagon.S2.extractu.rp
    hexagon_S2_extractup,                      // llvm.hexagon.S2.extractup
    hexagon_S2_extractup_rp,                   // llvm.hexagon.S2.extractup.rp
    hexagon_S2_insert,                         // llvm.hexagon.S2.insert
    hexagon_S2_insert_rp,                      // llvm.hexagon.S2.insert.rp
    hexagon_S2_insertp,                        // llvm.hexagon.S2.insertp
    hexagon_S2_insertp_rp,                     // llvm.hexagon.S2.insertp.rp
    hexagon_S2_interleave,                     // llvm.hexagon.S2.interleave
    hexagon_S2_lfsp,                           // llvm.hexagon.S2.lfsp
    hexagon_S2_lsl_r_p,                        // llvm.hexagon.S2.lsl.r.p
    hexagon_S2_lsl_r_p_acc,                    // llvm.hexagon.S2.lsl.r.p.acc
    hexagon_S2_lsl_r_p_and,                    // llvm.hexagon.S2.lsl.r.p.and
    hexagon_S2_lsl_r_p_nac,                    // llvm.hexagon.S2.lsl.r.p.nac
    hexagon_S2_lsl_r_p_or,                     // llvm.hexagon.S2.lsl.r.p.or
    hexagon_S2_lsl_r_p_xor,                    // llvm.hexagon.S2.lsl.r.p.xor
    hexagon_S2_lsl_r_r,                        // llvm.hexagon.S2.lsl.r.r
    hexagon_S2_lsl_r_r_acc,                    // llvm.hexagon.S2.lsl.r.r.acc
    hexagon_S2_lsl_r_r_and,                    // llvm.hexagon.S2.lsl.r.r.and
    hexagon_S2_lsl_r_r_nac,                    // llvm.hexagon.S2.lsl.r.r.nac
    hexagon_S2_lsl_r_r_or,                     // llvm.hexagon.S2.lsl.r.r.or
    hexagon_S2_lsl_r_vh,                       // llvm.hexagon.S2.lsl.r.vh
    hexagon_S2_lsl_r_vw,                       // llvm.hexagon.S2.lsl.r.vw
    hexagon_S2_lsr_i_p,                        // llvm.hexagon.S2.lsr.i.p
    hexagon_S2_lsr_i_p_acc,                    // llvm.hexagon.S2.lsr.i.p.acc
    hexagon_S2_lsr_i_p_and,                    // llvm.hexagon.S2.lsr.i.p.and
    hexagon_S2_lsr_i_p_nac,                    // llvm.hexagon.S2.lsr.i.p.nac
    hexagon_S2_lsr_i_p_or,                     // llvm.hexagon.S2.lsr.i.p.or
    hexagon_S2_lsr_i_p_xacc,                   // llvm.hexagon.S2.lsr.i.p.xacc
    hexagon_S2_lsr_i_r,                        // llvm.hexagon.S2.lsr.i.r
    hexagon_S2_lsr_i_r_acc,                    // llvm.hexagon.S2.lsr.i.r.acc
    hexagon_S2_lsr_i_r_and,                    // llvm.hexagon.S2.lsr.i.r.and
    hexagon_S2_lsr_i_r_nac,                    // llvm.hexagon.S2.lsr.i.r.nac
    hexagon_S2_lsr_i_r_or,                     // llvm.hexagon.S2.lsr.i.r.or
    hexagon_S2_lsr_i_r_xacc,                   // llvm.hexagon.S2.lsr.i.r.xacc
    hexagon_S2_lsr_i_vh,                       // llvm.hexagon.S2.lsr.i.vh
    hexagon_S2_lsr_i_vw,                       // llvm.hexagon.S2.lsr.i.vw
    hexagon_S2_lsr_r_p,                        // llvm.hexagon.S2.lsr.r.p
    hexagon_S2_lsr_r_p_acc,                    // llvm.hexagon.S2.lsr.r.p.acc
    hexagon_S2_lsr_r_p_and,                    // llvm.hexagon.S2.lsr.r.p.and
    hexagon_S2_lsr_r_p_nac,                    // llvm.hexagon.S2.lsr.r.p.nac
    hexagon_S2_lsr_r_p_or,                     // llvm.hexagon.S2.lsr.r.p.or
    hexagon_S2_lsr_r_p_xor,                    // llvm.hexagon.S2.lsr.r.p.xor
    hexagon_S2_lsr_r_r,                        // llvm.hexagon.S2.lsr.r.r
    hexagon_S2_lsr_r_r_acc,                    // llvm.hexagon.S2.lsr.r.r.acc
    hexagon_S2_lsr_r_r_and,                    // llvm.hexagon.S2.lsr.r.r.and
    hexagon_S2_lsr_r_r_nac,                    // llvm.hexagon.S2.lsr.r.r.nac
    hexagon_S2_lsr_r_r_or,                     // llvm.hexagon.S2.lsr.r.r.or
    hexagon_S2_lsr_r_vh,                       // llvm.hexagon.S2.lsr.r.vh
    hexagon_S2_lsr_r_vw,                       // llvm.hexagon.S2.lsr.r.vw
    hexagon_S2_packhl,                         // llvm.hexagon.S2.packhl
    hexagon_S2_parityp,                        // llvm.hexagon.S2.parityp
    hexagon_S2_setbit_i,                       // llvm.hexagon.S2.setbit.i
    hexagon_S2_setbit_r,                       // llvm.hexagon.S2.setbit.r
    hexagon_S2_shuffeb,                        // llvm.hexagon.S2.shuffeb
    hexagon_S2_shuffeh,                        // llvm.hexagon.S2.shuffeh
    hexagon_S2_shuffob,                        // llvm.hexagon.S2.shuffob
    hexagon_S2_shuffoh,                        // llvm.hexagon.S2.shuffoh
    hexagon_S2_svsathb,                        // llvm.hexagon.S2.svsathb
    hexagon_S2_svsathub,                       // llvm.hexagon.S2.svsathub
    hexagon_S2_tableidxb_goodsyntax,           // llvm.hexagon.S2.tableidxb.goodsyntax
    hexagon_S2_tableidxd_goodsyntax,           // llvm.hexagon.S2.tableidxd.goodsyntax
    hexagon_S2_tableidxh_goodsyntax,           // llvm.hexagon.S2.tableidxh.goodsyntax
    hexagon_S2_tableidxw_goodsyntax,           // llvm.hexagon.S2.tableidxw.goodsyntax
    hexagon_S2_togglebit_i,                    // llvm.hexagon.S2.togglebit.i
    hexagon_S2_togglebit_r,                    // llvm.hexagon.S2.togglebit.r
    hexagon_S2_tstbit_i,                       // llvm.hexagon.S2.tstbit.i
    hexagon_S2_tstbit_r,                       // llvm.hexagon.S2.tstbit.r
    hexagon_S2_valignib,                       // llvm.hexagon.S2.valignib
    hexagon_S2_valignrb,                       // llvm.hexagon.S2.valignrb
    hexagon_S2_vcnegh,                         // llvm.hexagon.S2.vcnegh
    hexagon_S2_vcrotate,                       // llvm.hexagon.S2.vcrotate
    hexagon_S2_vrcnegh,                        // llvm.hexagon.S2.vrcnegh
    hexagon_S2_vrndpackwh,                     // llvm.hexagon.S2.vrndpackwh
    hexagon_S2_vrndpackwhs,                    // llvm.hexagon.S2.vrndpackwhs
    hexagon_S2_vsathb,                         // llvm.hexagon.S2.vsathb
    hexagon_S2_vsathb_nopack,                  // llvm.hexagon.S2.vsathb.nopack
    hexagon_S2_vsathub,                        // llvm.hexagon.S2.vsathub
    hexagon_S2_vsathub_nopack,                 // llvm.hexagon.S2.vsathub.nopack
    hexagon_S2_vsatwh,                         // llvm.hexagon.S2.vsatwh
    hexagon_S2_vsatwh_nopack,                  // llvm.hexagon.S2.vsatwh.nopack
    hexagon_S2_vsatwuh,                        // llvm.hexagon.S2.vsatwuh
    hexagon_S2_vsatwuh_nopack,                 // llvm.hexagon.S2.vsatwuh.nopack
    hexagon_S2_vsplatrb,                       // llvm.hexagon.S2.vsplatrb
    hexagon_S2_vsplatrh,                       // llvm.hexagon.S2.vsplatrh
    hexagon_S2_vspliceib,                      // llvm.hexagon.S2.vspliceib
    hexagon_S2_vsplicerb,                      // llvm.hexagon.S2.vsplicerb
    hexagon_S2_vsxtbh,                         // llvm.hexagon.S2.vsxtbh
    hexagon_S2_vsxthw,                         // llvm.hexagon.S2.vsxthw
    hexagon_S2_vtrunehb,                       // llvm.hexagon.S2.vtrunehb
    hexagon_S2_vtrunewh,                       // llvm.hexagon.S2.vtrunewh
    hexagon_S2_vtrunohb,                       // llvm.hexagon.S2.vtrunohb
    hexagon_S2_vtrunowh,                       // llvm.hexagon.S2.vtrunowh
    hexagon_S2_vzxtbh,                         // llvm.hexagon.S2.vzxtbh
    hexagon_S2_vzxthw,                         // llvm.hexagon.S2.vzxthw
    hexagon_S4_addaddi,                        // llvm.hexagon.S4.addaddi
    hexagon_S4_addi_asl_ri,                    // llvm.hexagon.S4.addi.asl.ri
    hexagon_S4_addi_lsr_ri,                    // llvm.hexagon.S4.addi.lsr.ri
    hexagon_S4_andi_asl_ri,                    // llvm.hexagon.S4.andi.asl.ri
    hexagon_S4_andi_lsr_ri,                    // llvm.hexagon.S4.andi.lsr.ri
    hexagon_S4_clbaddi,                        // llvm.hexagon.S4.clbaddi
    hexagon_S4_clbpaddi,                       // llvm.hexagon.S4.clbpaddi
    hexagon_S4_clbpnorm,                       // llvm.hexagon.S4.clbpnorm
    hexagon_S4_extract,                        // llvm.hexagon.S4.extract
    hexagon_S4_extract_rp,                     // llvm.hexagon.S4.extract.rp
    hexagon_S4_extractp,                       // llvm.hexagon.S4.extractp
    hexagon_S4_extractp_rp,                    // llvm.hexagon.S4.extractp.rp
    hexagon_S4_lsli,                           // llvm.hexagon.S4.lsli
    hexagon_S4_ntstbit_i,                      // llvm.hexagon.S4.ntstbit.i
    hexagon_S4_ntstbit_r,                      // llvm.hexagon.S4.ntstbit.r
    hexagon_S4_or_andi,                        // llvm.hexagon.S4.or.andi
    hexagon_S4_or_andix,                       // llvm.hexagon.S4.or.andix
    hexagon_S4_or_ori,                         // llvm.hexagon.S4.or.ori
    hexagon_S4_ori_asl_ri,                     // llvm.hexagon.S4.ori.asl.ri
    hexagon_S4_ori_lsr_ri,                     // llvm.hexagon.S4.ori.lsr.ri
    hexagon_S4_parity,                         // llvm.hexagon.S4.parity
    hexagon_S4_subaddi,                        // llvm.hexagon.S4.subaddi
    hexagon_S4_subi_asl_ri,                    // llvm.hexagon.S4.subi.asl.ri
    hexagon_S4_subi_lsr_ri,                    // llvm.hexagon.S4.subi.lsr.ri
    hexagon_S4_vrcrotate,                      // llvm.hexagon.S4.vrcrotate
    hexagon_S4_vrcrotate_acc,                  // llvm.hexagon.S4.vrcrotate.acc
    hexagon_S4_vxaddsubh,                      // llvm.hexagon.S4.vxaddsubh
    hexagon_S4_vxaddsubhr,                     // llvm.hexagon.S4.vxaddsubhr
    hexagon_S4_vxaddsubw,                      // llvm.hexagon.S4.vxaddsubw
    hexagon_S4_vxsubaddh,                      // llvm.hexagon.S4.vxsubaddh
    hexagon_S4_vxsubaddhr,                     // llvm.hexagon.S4.vxsubaddhr
    hexagon_S4_vxsubaddw,                      // llvm.hexagon.S4.vxsubaddw
    hexagon_S5_asrhub_rnd_sat_goodsyntax,      // llvm.hexagon.S5.asrhub.rnd.sat.goodsyntax
    hexagon_S5_asrhub_sat,                     // llvm.hexagon.S5.asrhub.sat
    hexagon_S5_popcountp,                      // llvm.hexagon.S5.popcountp
    hexagon_S5_vasrhrnd_goodsyntax,            // llvm.hexagon.S5.vasrhrnd.goodsyntax
    hexagon_SI_to_SXTHI_asrh,                  // llvm.hexagon.SI.to.SXTHI.asrh
    hexagon_circ_ldd,                          // llvm.hexagon.circ.ldd
    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
    mips_absq_s_ph,                            // llvm.mips.absq.s.ph
    mips_absq_s_qb,                            // llvm.mips.absq.s.qb
    mips_absq_s_w,                             // llvm.mips.absq.s.w
    mips_add_a_b,                              // llvm.mips.add.a.b
    mips_add_a_d,                              // llvm.mips.add.a.d
    mips_add_a_h,                              // llvm.mips.add.a.h
    mips_add_a_w,                              // llvm.mips.add.a.w
    mips_addq_ph,                              // llvm.mips.addq.ph
    mips_addq_s_ph,                            // llvm.mips.addq.s.ph
    mips_addq_s_w,                             // llvm.mips.addq.s.w
    mips_addqh_ph,                             // llvm.mips.addqh.ph
    mips_addqh_r_ph,                           // llvm.mips.addqh.r.ph
    mips_addqh_r_w,                            // llvm.mips.addqh.r.w
    mips_addqh_w,                              // llvm.mips.addqh.w
    mips_adds_a_b,                             // llvm.mips.adds.a.b
    mips_adds_a_d,                             // llvm.mips.adds.a.d
    mips_adds_a_h,                             // llvm.mips.adds.a.h
    mips_adds_a_w,                             // llvm.mips.adds.a.w
    mips_adds_s_b,                             // llvm.mips.adds.s.b
    mips_adds_s_d,                             // llvm.mips.adds.s.d
    mips_adds_s_h,                             // llvm.mips.adds.s.h
    mips_adds_s_w,                             // llvm.mips.adds.s.w
    mips_adds_u_b,                             // llvm.mips.adds.u.b
    mips_adds_u_d,                             // llvm.mips.adds.u.d
    mips_adds_u_h,                             // llvm.mips.adds.u.h
    mips_adds_u_w,                             // llvm.mips.adds.u.w
    mips_addsc,                                // llvm.mips.addsc
    mips_addu_ph,                              // llvm.mips.addu.ph
    mips_addu_qb,                              // llvm.mips.addu.qb
    mips_addu_s_ph,                            // llvm.mips.addu.s.ph
    mips_addu_s_qb,                            // llvm.mips.addu.s.qb
    mips_adduh_qb,                             // llvm.mips.adduh.qb
    mips_adduh_r_qb,                           // llvm.mips.adduh.r.qb
    mips_addv_b,                               // llvm.mips.addv.b
    mips_addv_d,                               // llvm.mips.addv.d
    mips_addv_h,                               // llvm.mips.addv.h
    mips_addv_w,                               // llvm.mips.addv.w
    mips_addvi_b,                              // llvm.mips.addvi.b
    mips_addvi_d,                              // llvm.mips.addvi.d
    mips_addvi_h,                              // llvm.mips.addvi.h
    mips_addvi_w,                              // llvm.mips.addvi.w
    mips_addwc,                                // llvm.mips.addwc
    mips_and_v,                                // llvm.mips.and.v
    mips_andi_b,                               // llvm.mips.andi.b
    mips_append,                               // llvm.mips.append
    mips_asub_s_b,                             // llvm.mips.asub.s.b
    mips_asub_s_d,                             // llvm.mips.asub.s.d
    mips_asub_s_h,                             // llvm.mips.asub.s.h
    mips_asub_s_w,                             // llvm.mips.asub.s.w
    mips_asub_u_b,                             // llvm.mips.asub.u.b
    mips_asub_u_d,                             // llvm.mips.asub.u.d
    mips_asub_u_h,                             // llvm.mips.asub.u.h
    mips_asub_u_w,                             // llvm.mips.asub.u.w
    mips_ave_s_b,                              // llvm.mips.ave.s.b
    mips_ave_s_d,                              // llvm.mips.ave.s.d
    mips_ave_s_h,                              // llvm.mips.ave.s.h
    mips_ave_s_w,                              // llvm.mips.ave.s.w
    mips_ave_u_b,                              // llvm.mips.ave.u.b
    mips_ave_u_d,                              // llvm.mips.ave.u.d
    mips_ave_u_h,                              // llvm.mips.ave.u.h
    mips_ave_u_w,                              // llvm.mips.ave.u.w
    mips_aver_s_b,                             // llvm.mips.aver.s.b
    mips_aver_s_d,                             // llvm.mips.aver.s.d
    mips_aver_s_h,                             // llvm.mips.aver.s.h
    mips_aver_s_w,                             // llvm.mips.aver.s.w
    mips_aver_u_b,                             // llvm.mips.aver.u.b
    mips_aver_u_d,                             // llvm.mips.aver.u.d
    mips_aver_u_h,                             // llvm.mips.aver.u.h
    mips_aver_u_w,                             // llvm.mips.aver.u.w
    mips_balign,                               // llvm.mips.balign
    mips_bclr_b,                               // llvm.mips.bclr.b
    mips_bclr_d,                               // llvm.mips.bclr.d
    mips_bclr_h,                               // llvm.mips.bclr.h
    mips_bclr_w,                               // llvm.mips.bclr.w
    mips_bclri_b,                              // llvm.mips.bclri.b
    mips_bclri_d,                              // llvm.mips.bclri.d
    mips_bclri_h,                              // llvm.mips.bclri.h
    mips_bclri_w,                              // llvm.mips.bclri.w
    mips_binsl_b,                              // llvm.mips.binsl.b
    mips_binsl_d,                              // llvm.mips.binsl.d
    mips_binsl_h,                              // llvm.mips.binsl.h
    mips_binsl_w,                              // llvm.mips.binsl.w
    mips_binsli_b,                             // llvm.mips.binsli.b
    mips_binsli_d,                             // llvm.mips.binsli.d
    mips_binsli_h,                             // llvm.mips.binsli.h
    mips_binsli_w,                             // llvm.mips.binsli.w
    mips_binsr_b,                              // llvm.mips.binsr.b
    mips_binsr_d,                              // llvm.mips.binsr.d
    mips_binsr_h,                              // llvm.mips.binsr.h
    mips_binsr_w,                              // llvm.mips.binsr.w
    mips_binsri_b,                             // llvm.mips.binsri.b
    mips_binsri_d,                             // llvm.mips.binsri.d
    mips_binsri_h,                             // llvm.mips.binsri.h
    mips_binsri_w,                             // llvm.mips.binsri.w
    mips_bitrev,                               // llvm.mips.bitrev
    mips_bmnz_v,                               // llvm.mips.bmnz.v
    mips_bmnzi_b,                              // llvm.mips.bmnzi.b
    mips_bmz_v,                                // llvm.mips.bmz.v
    mips_bmzi_b,                               // llvm.mips.bmzi.b
    mips_bneg_b,                               // llvm.mips.bneg.b
    mips_bneg_d,                               // llvm.mips.bneg.d
    mips_bneg_h,                               // llvm.mips.bneg.h
    mips_bneg_w,                               // llvm.mips.bneg.w
    mips_bnegi_b,                              // llvm.mips.bnegi.b
    mips_bnegi_d,                              // llvm.mips.bnegi.d
    mips_bnegi_h,                              // llvm.mips.bnegi.h
    mips_bnegi_w,                              // llvm.mips.bnegi.w
    mips_bnz_b,                                // llvm.mips.bnz.b
    mips_bnz_d,                                // llvm.mips.bnz.d
    mips_bnz_h,                                // llvm.mips.bnz.h
    mips_bnz_v,                                // llvm.mips.bnz.v
    mips_bnz_w,                                // llvm.mips.bnz.w
    mips_bposge32,                             // llvm.mips.bposge32
    mips_bsel_v,                               // llvm.mips.bsel.v
    mips_bseli_b,                              // llvm.mips.bseli.b
    mips_bset_b,                               // llvm.mips.bset.b
    mips_bset_d,                               // llvm.mips.bset.d
    mips_bset_h,                               // llvm.mips.bset.h
    mips_bset_w,                               // llvm.mips.bset.w
    mips_bseti_b,                              // llvm.mips.bseti.b
    mips_bseti_d,                              // llvm.mips.bseti.d
    mips_bseti_h,                              // llvm.mips.bseti.h
    mips_bseti_w,                              // llvm.mips.bseti.w
    mips_bz_b,                                 // llvm.mips.bz.b
    mips_bz_d,                                 // llvm.mips.bz.d
    mips_bz_h,                                 // llvm.mips.bz.h
    mips_bz_v,                                 // llvm.mips.bz.v
    mips_bz_w,                                 // llvm.mips.bz.w
    mips_ceq_b,                                // llvm.mips.ceq.b
    mips_ceq_d,                                // llvm.mips.ceq.d
    mips_ceq_h,                                // llvm.mips.ceq.h
    mips_ceq_w,                                // llvm.mips.ceq.w
    mips_ceqi_b,                               // llvm.mips.ceqi.b
    mips_ceqi_d,                               // llvm.mips.ceqi.d
    mips_ceqi_h,                               // llvm.mips.ceqi.h
    mips_ceqi_w,                               // llvm.mips.ceqi.w
    mips_cfcmsa,                               // llvm.mips.cfcmsa
    mips_cle_s_b,                              // llvm.mips.cle.s.b
    mips_cle_s_d,                              // llvm.mips.cle.s.d
    mips_cle_s_h,                              // llvm.mips.cle.s.h
    mips_cle_s_w,                              // llvm.mips.cle.s.w
    mips_cle_u_b,                              // llvm.mips.cle.u.b
    mips_cle_u_d,                              // llvm.mips.cle.u.d
    mips_cle_u_h,                              // llvm.mips.cle.u.h
    mips_cle_u_w,                              // llvm.mips.cle.u.w
    mips_clei_s_b,                             // llvm.mips.clei.s.b
    mips_clei_s_d,                             // llvm.mips.clei.s.d
    mips_clei_s_h,                             // llvm.mips.clei.s.h
    mips_clei_s_w,                             // llvm.mips.clei.s.w
    mips_clei_u_b,                             // llvm.mips.clei.u.b
    mips_clei_u_d,                             // llvm.mips.clei.u.d
    mips_clei_u_h,                             // llvm.mips.clei.u.h
    mips_clei_u_w,                             // llvm.mips.clei.u.w
    mips_clt_s_b,                              // llvm.mips.clt.s.b
    mips_clt_s_d,                              // llvm.mips.clt.s.d
    mips_clt_s_h,                              // llvm.mips.clt.s.h
    mips_clt_s_w,                              // llvm.mips.clt.s.w
    mips_clt_u_b,                              // llvm.mips.clt.u.b
    mips_clt_u_d,                              // llvm.mips.clt.u.d
    mips_clt_u_h,                              // llvm.mips.clt.u.h
    mips_clt_u_w,                              // llvm.mips.clt.u.w
    mips_clti_s_b,                             // llvm.mips.clti.s.b
    mips_clti_s_d,                             // llvm.mips.clti.s.d
    mips_clti_s_h,                             // llvm.mips.clti.s.h
    mips_clti_s_w,                             // llvm.mips.clti.s.w
    mips_clti_u_b,                             // llvm.mips.clti.u.b
    mips_clti_u_d,                             // llvm.mips.clti.u.d
    mips_clti_u_h,                             // llvm.mips.clti.u.h
    mips_clti_u_w,                             // llvm.mips.clti.u.w
    mips_cmp_eq_ph,                            // llvm.mips.cmp.eq.ph
    mips_cmp_le_ph,                            // llvm.mips.cmp.le.ph
    mips_cmp_lt_ph,                            // llvm.mips.cmp.lt.ph
    mips_cmpgdu_eq_qb,                         // llvm.mips.cmpgdu.eq.qb
    mips_cmpgdu_le_qb,                         // llvm.mips.cmpgdu.le.qb
    mips_cmpgdu_lt_qb,                         // llvm.mips.cmpgdu.lt.qb
    mips_cmpgu_eq_qb,                          // llvm.mips.cmpgu.eq.qb
    mips_cmpgu_le_qb,                          // llvm.mips.cmpgu.le.qb
    mips_cmpgu_lt_qb,                          // llvm.mips.cmpgu.lt.qb
    mips_cmpu_eq_qb,                           // llvm.mips.cmpu.eq.qb
    mips_cmpu_le_qb,                           // llvm.mips.cmpu.le.qb
    mips_cmpu_lt_qb,                           // llvm.mips.cmpu.lt.qb
    mips_copy_s_b,                             // llvm.mips.copy.s.b
    mips_copy_s_d,                             // llvm.mips.copy.s.d
    mips_copy_s_h,                             // llvm.mips.copy.s.h
    mips_copy_s_w,                             // llvm.mips.copy.s.w
    mips_copy_u_b,                             // llvm.mips.copy.u.b
    mips_copy_u_d,                             // llvm.mips.copy.u.d
    mips_copy_u_h,                             // llvm.mips.copy.u.h
    mips_copy_u_w,                             // llvm.mips.copy.u.w
    mips_ctcmsa,                               // llvm.mips.ctcmsa
    mips_div_s_b,                              // llvm.mips.div.s.b
    mips_div_s_d,                              // llvm.mips.div.s.d
    mips_div_s_h,                              // llvm.mips.div.s.h
    mips_div_s_w,                              // llvm.mips.div.s.w
    mips_div_u_b,                              // llvm.mips.div.u.b
    mips_div_u_d,                              // llvm.mips.div.u.d
    mips_div_u_h,                              // llvm.mips.div.u.h
    mips_div_u_w,                              // llvm.mips.div.u.w
    mips_dlsa,                                 // llvm.mips.dlsa
    mips_dotp_s_d,                             // llvm.mips.dotp.s.d
    mips_dotp_s_h,                             // llvm.mips.dotp.s.h
    mips_dotp_s_w,                             // llvm.mips.dotp.s.w
    mips_dotp_u_d,                             // llvm.mips.dotp.u.d
    mips_dotp_u_h,                             // llvm.mips.dotp.u.h
    mips_dotp_u_w,                             // llvm.mips.dotp.u.w
    mips_dpa_w_ph,                             // llvm.mips.dpa.w.ph
    mips_dpadd_s_d,                            // llvm.mips.dpadd.s.d
    mips_dpadd_s_h,                            // llvm.mips.dpadd.s.h
    mips_dpadd_s_w,                            // llvm.mips.dpadd.s.w
    mips_dpadd_u_d,                            // llvm.mips.dpadd.u.d
    mips_dpadd_u_h,                            // llvm.mips.dpadd.u.h
    mips_dpadd_u_w,                            // llvm.mips.dpadd.u.w
    mips_dpaq_s_w_ph,                          // llvm.mips.dpaq.s.w.ph
    mips_dpaq_sa_l_w,                          // llvm.mips.dpaq.sa.l.w
    mips_dpaqx_s_w_ph,                         // llvm.mips.dpaqx.s.w.ph
    mips_dpaqx_sa_w_ph,                        // llvm.mips.dpaqx.sa.w.ph
    mips_dpau_h_qbl,                           // llvm.mips.dpau.h.qbl
    mips_dpau_h_qbr,                           // llvm.mips.dpau.h.qbr
    mips_dpax_w_ph,                            // llvm.mips.dpax.w.ph
    mips_dps_w_ph,                             // llvm.mips.dps.w.ph
    mips_dpsq_s_w_ph,                          // llvm.mips.dpsq.s.w.ph
    mips_dpsq_sa_l_w,                          // llvm.mips.dpsq.sa.l.w
    mips_dpsqx_s_w_ph,                         // llvm.mips.dpsqx.s.w.ph
    mips_dpsqx_sa_w_ph,                        // llvm.mips.dpsqx.sa.w.ph
    mips_dpsu_h_qbl,                           // llvm.mips.dpsu.h.qbl
    mips_dpsu_h_qbr,                           // llvm.mips.dpsu.h.qbr
    mips_dpsub_s_d,                            // llvm.mips.dpsub.s.d
    mips_dpsub_s_h,                            // llvm.mips.dpsub.s.h
    mips_dpsub_s_w,                            // llvm.mips.dpsub.s.w
    mips_dpsub_u_d,                            // llvm.mips.dpsub.u.d
    mips_dpsub_u_h,                            // llvm.mips.dpsub.u.h
    mips_dpsub_u_w,                            // llvm.mips.dpsub.u.w
    mips_dpsx_w_ph,                            // llvm.mips.dpsx.w.ph
    mips_extp,                                 // llvm.mips.extp
    mips_extpdp,                               // llvm.mips.extpdp
    mips_extr_r_w,                             // llvm.mips.extr.r.w
    mips_extr_rs_w,                            // llvm.mips.extr.rs.w
    mips_extr_s_h,                             // llvm.mips.extr.s.h
    mips_extr_w,                               // llvm.mips.extr.w
    mips_fadd_d,                               // llvm.mips.fadd.d
    mips_fadd_w,                               // llvm.mips.fadd.w
    mips_fcaf_d,                               // llvm.mips.fcaf.d
    mips_fcaf_w,                               // llvm.mips.fcaf.w
    mips_fceq_d,                               // llvm.mips.fceq.d
    mips_fceq_w,                               // llvm.mips.fceq.w
    mips_fclass_d,                             // llvm.mips.fclass.d
    mips_fclass_w,                             // llvm.mips.fclass.w
    mips_fcle_d,                               // llvm.mips.fcle.d
    mips_fcle_w,                               // llvm.mips.fcle.w
    mips_fclt_d,                               // llvm.mips.fclt.d
    mips_fclt_w,                               // llvm.mips.fclt.w
    mips_fcne_d,                               // llvm.mips.fcne.d
    mips_fcne_w,                               // llvm.mips.fcne.w
    mips_fcor_d,                               // llvm.mips.fcor.d
    mips_fcor_w,                               // llvm.mips.fcor.w
    mips_fcueq_d,                              // llvm.mips.fcueq.d
    mips_fcueq_w,                              // llvm.mips.fcueq.w
    mips_fcule_d,                              // llvm.mips.fcule.d
    mips_fcule_w,                              // llvm.mips.fcule.w
    mips_fcult_d,                              // llvm.mips.fcult.d
    mips_fcult_w,                              // llvm.mips.fcult.w
    mips_fcun_d,                               // llvm.mips.fcun.d
    mips_fcun_w,                               // llvm.mips.fcun.w
    mips_fcune_d,                              // llvm.mips.fcune.d
    mips_fcune_w,                              // llvm.mips.fcune.w
    mips_fdiv_d,                               // llvm.mips.fdiv.d
    mips_fdiv_w,                               // llvm.mips.fdiv.w
    mips_fexdo_h,                              // llvm.mips.fexdo.h
    mips_fexdo_w,                              // llvm.mips.fexdo.w
    mips_fexp2_d,                              // llvm.mips.fexp2.d
    mips_fexp2_w,                              // llvm.mips.fexp2.w
    mips_fexupl_d,                             // llvm.mips.fexupl.d
    mips_fexupl_w,                             // llvm.mips.fexupl.w
    mips_fexupr_d,                             // llvm.mips.fexupr.d
    mips_fexupr_w,                             // llvm.mips.fexupr.w
    mips_ffint_s_d,                            // llvm.mips.ffint.s.d
    mips_ffint_s_w,                            // llvm.mips.ffint.s.w
    mips_ffint_u_d,                            // llvm.mips.ffint.u.d
    mips_ffint_u_w,                            // llvm.mips.ffint.u.w
    mips_ffql_d,                               // llvm.mips.ffql.d
    mips_ffql_w,                               // llvm.mips.ffql.w
    mips_ffqr_d,                               // llvm.mips.ffqr.d
    mips_ffqr_w,                               // llvm.mips.ffqr.w
    mips_fill_b,                               // llvm.mips.fill.b
    mips_fill_d,                               // llvm.mips.fill.d
    mips_fill_h,                               // llvm.mips.fill.h
    mips_fill_w,                               // llvm.mips.fill.w
    mips_flog2_d,                              // llvm.mips.flog2.d
    mips_flog2_w,                              // llvm.mips.flog2.w
    mips_fmadd_d,                              // llvm.mips.fmadd.d
    mips_fmadd_w,                              // llvm.mips.fmadd.w
    mips_fmax_a_d,                             // llvm.mips.fmax.a.d
    mips_fmax_a_w,                             // llvm.mips.fmax.a.w
    mips_fmax_d,                               // llvm.mips.fmax.d
    mips_fmax_w,                               // llvm.mips.fmax.w
    mips_fmin_a_d,                             // llvm.mips.fmin.a.d
    mips_fmin_a_w,                             // llvm.mips.fmin.a.w
    mips_fmin_d,                               // llvm.mips.fmin.d
    mips_fmin_w,                               // llvm.mips.fmin.w
    mips_fmsub_d,                              // llvm.mips.fmsub.d
    mips_fmsub_w,                              // llvm.mips.fmsub.w
    mips_fmul_d,                               // llvm.mips.fmul.d
    mips_fmul_w,                               // llvm.mips.fmul.w
    mips_frcp_d,                               // llvm.mips.frcp.d
    mips_frcp_w,                               // llvm.mips.frcp.w
    mips_frint_d,                              // llvm.mips.frint.d
    mips_frint_w,                              // llvm.mips.frint.w
    mips_frsqrt_d,                             // llvm.mips.frsqrt.d
    mips_frsqrt_w,                             // llvm.mips.frsqrt.w
    mips_fsaf_d,                               // llvm.mips.fsaf.d
    mips_fsaf_w,                               // llvm.mips.fsaf.w
    mips_fseq_d,                               // llvm.mips.fseq.d
    mips_fseq_w,                               // llvm.mips.fseq.w
    mips_fsle_d,                               // llvm.mips.fsle.d
    mips_fsle_w,                               // llvm.mips.fsle.w
    mips_fslt_d,                               // llvm.mips.fslt.d
    mips_fslt_w,                               // llvm.mips.fslt.w
    mips_fsne_d,                               // llvm.mips.fsne.d
    mips_fsne_w,                               // llvm.mips.fsne.w
    mips_fsor_d,                               // llvm.mips.fsor.d
    mips_fsor_w,                               // llvm.mips.fsor.w
    mips_fsqrt_d,                              // llvm.mips.fsqrt.d
    mips_fsqrt_w,                              // llvm.mips.fsqrt.w
    mips_fsub_d,                               // llvm.mips.fsub.d
    mips_fsub_w,                               // llvm.mips.fsub.w
    mips_fsueq_d,                              // llvm.mips.fsueq.d
    mips_fsueq_w,                              // llvm.mips.fsueq.w
    mips_fsule_d,                              // llvm.mips.fsule.d
    mips_fsule_w,                              // llvm.mips.fsule.w
    mips_fsult_d,                              // llvm.mips.fsult.d
    mips_fsult_w,                              // llvm.mips.fsult.w
    mips_fsun_d,                               // llvm.mips.fsun.d
    mips_fsun_w,                               // llvm.mips.fsun.w
    mips_fsune_d,                              // llvm.mips.fsune.d
    mips_fsune_w,                              // llvm.mips.fsune.w
    mips_ftint_s_d,                            // llvm.mips.ftint.s.d
    mips_ftint_s_w,                            // llvm.mips.ftint.s.w
    mips_ftint_u_d,                            // llvm.mips.ftint.u.d
    mips_ftint_u_w,                            // llvm.mips.ftint.u.w
    mips_ftq_h,                                // llvm.mips.ftq.h
    mips_ftq_w,                                // llvm.mips.ftq.w
    mips_ftrunc_s_d,                           // llvm.mips.ftrunc.s.d
    mips_ftrunc_s_w,                           // llvm.mips.ftrunc.s.w
    mips_ftrunc_u_d,                           // llvm.mips.ftrunc.u.d
    mips_ftrunc_u_w,                           // llvm.mips.ftrunc.u.w
    mips_hadd_s_d,                             // llvm.mips.hadd.s.d
    mips_hadd_s_h,                             // llvm.mips.hadd.s.h
    mips_hadd_s_w,                             // llvm.mips.hadd.s.w
    mips_hadd_u_d,                             // llvm.mips.hadd.u.d
    mips_hadd_u_h,                             // llvm.mips.hadd.u.h
    mips_hadd_u_w,                             // llvm.mips.hadd.u.w
    mips_hsub_s_d,                             // llvm.mips.hsub.s.d
    mips_hsub_s_h,                             // llvm.mips.hsub.s.h
    mips_hsub_s_w,                             // llvm.mips.hsub.s.w
    mips_hsub_u_d,                             // llvm.mips.hsub.u.d
    mips_hsub_u_h,                             // llvm.mips.hsub.u.h
    mips_hsub_u_w,                             // llvm.mips.hsub.u.w
    mips_ilvev_b,                              // llvm.mips.ilvev.b
    mips_ilvev_d,                              // llvm.mips.ilvev.d
    mips_ilvev_h,                              // llvm.mips.ilvev.h
    mips_ilvev_w,                              // llvm.mips.ilvev.w
    mips_ilvl_b,                               // llvm.mips.ilvl.b
    mips_ilvl_d,                               // llvm.mips.ilvl.d
    mips_ilvl_h,                               // llvm.mips.ilvl.h
    mips_ilvl_w,                               // llvm.mips.ilvl.w
    mips_ilvod_b,                              // llvm.mips.ilvod.b
    mips_ilvod_d,                              // llvm.mips.ilvod.d
    mips_ilvod_h,                              // llvm.mips.ilvod.h
    mips_ilvod_w,                              // llvm.mips.ilvod.w
    mips_ilvr_b,                               // llvm.mips.ilvr.b
    mips_ilvr_d,                               // llvm.mips.ilvr.d
    mips_ilvr_h,                               // llvm.mips.ilvr.h
    mips_ilvr_w,                               // llvm.mips.ilvr.w
    mips_insert_b,                             // llvm.mips.insert.b
    mips_insert_d,                             // llvm.mips.insert.d
    mips_insert_h,                             // llvm.mips.insert.h
    mips_insert_w,                             // llvm.mips.insert.w
    mips_insv,                                 // llvm.mips.insv
    mips_insve_b,                              // llvm.mips.insve.b
    mips_insve_d,                              // llvm.mips.insve.d
    mips_insve_h,                              // llvm.mips.insve.h
    mips_insve_w,                              // llvm.mips.insve.w
    mips_lbux,                                 // llvm.mips.lbux
    mips_ld_b,                                 // llvm.mips.ld.b
    mips_ld_d,                                 // llvm.mips.ld.d
    mips_ld_h,                                 // llvm.mips.ld.h
    mips_ld_w,                                 // llvm.mips.ld.w
    mips_ldi_b,                                // llvm.mips.ldi.b
    mips_ldi_d,                                // llvm.mips.ldi.d
    mips_ldi_h,                                // llvm.mips.ldi.h
    mips_ldi_w,                                // llvm.mips.ldi.w
    mips_lhx,                                  // llvm.mips.lhx
    mips_lsa,                                  // llvm.mips.lsa
    mips_lwx,                                  // llvm.mips.lwx
    mips_madd,                                 // llvm.mips.madd
    mips_madd_q_h,                             // llvm.mips.madd.q.h
    mips_madd_q_w,                             // llvm.mips.madd.q.w
    mips_maddr_q_h,                            // llvm.mips.maddr.q.h
    mips_maddr_q_w,                            // llvm.mips.maddr.q.w
    mips_maddu,                                // llvm.mips.maddu
    mips_maddv_b,                              // llvm.mips.maddv.b
    mips_maddv_d,                              // llvm.mips.maddv.d
    mips_maddv_h,                              // llvm.mips.maddv.h
    mips_maddv_w,                              // llvm.mips.maddv.w
    mips_maq_s_w_phl,                          // llvm.mips.maq.s.w.phl
    mips_maq_s_w_phr,                          // llvm.mips.maq.s.w.phr
    mips_maq_sa_w_phl,                         // llvm.mips.maq.sa.w.phl
    mips_maq_sa_w_phr,                         // llvm.mips.maq.sa.w.phr
    mips_max_a_b,                              // llvm.mips.max.a.b
    mips_max_a_d,                              // llvm.mips.max.a.d
    mips_max_a_h,                              // llvm.mips.max.a.h
    mips_max_a_w,                              // llvm.mips.max.a.w
    mips_max_s_b,                              // llvm.mips.max.s.b
    mips_max_s_d,                              // llvm.mips.max.s.d
    mips_max_s_h,                              // llvm.mips.max.s.h
    mips_max_s_w,                              // llvm.mips.max.s.w
    mips_max_u_b,                              // llvm.mips.max.u.b
    mips_max_u_d,                              // llvm.mips.max.u.d
    mips_max_u_h,                              // llvm.mips.max.u.h
    mips_max_u_w,                              // llvm.mips.max.u.w
    mips_maxi_s_b,                             // llvm.mips.maxi.s.b
    mips_maxi_s_d,                             // llvm.mips.maxi.s.d
    mips_maxi_s_h,                             // llvm.mips.maxi.s.h
    mips_maxi_s_w,                             // llvm.mips.maxi.s.w
    mips_maxi_u_b,                             // llvm.mips.maxi.u.b
    mips_maxi_u_d,                             // llvm.mips.maxi.u.d
    mips_maxi_u_h,                             // llvm.mips.maxi.u.h
    mips_maxi_u_w,                             // llvm.mips.maxi.u.w
    mips_min_a_b,                              // llvm.mips.min.a.b
    mips_min_a_d,                              // llvm.mips.min.a.d
    mips_min_a_h,                              // llvm.mips.min.a.h
    mips_min_a_w,                              // llvm.mips.min.a.w
    mips_min_s_b,                              // llvm.mips.min.s.b
    mips_min_s_d,                              // llvm.mips.min.s.d
    mips_min_s_h,                              // llvm.mips.min.s.h
    mips_min_s_w,                              // llvm.mips.min.s.w
    mips_min_u_b,                              // llvm.mips.min.u.b
    mips_min_u_d,                              // llvm.mips.min.u.d
    mips_min_u_h,                              // llvm.mips.min.u.h
    mips_min_u_w,                              // llvm.mips.min.u.w
    mips_mini_s_b,                             // llvm.mips.mini.s.b
    mips_mini_s_d,                             // llvm.mips.mini.s.d
    mips_mini_s_h,                             // llvm.mips.mini.s.h
    mips_mini_s_w,                             // llvm.mips.mini.s.w
    mips_mini_u_b,                             // llvm.mips.mini.u.b
    mips_mini_u_d,                             // llvm.mips.mini.u.d
    mips_mini_u_h,                             // llvm.mips.mini.u.h
    mips_mini_u_w,                             // llvm.mips.mini.u.w
    mips_mod_s_b,                              // llvm.mips.mod.s.b
    mips_mod_s_d,                              // llvm.mips.mod.s.d
    mips_mod_s_h,                              // llvm.mips.mod.s.h
    mips_mod_s_w,                              // llvm.mips.mod.s.w
    mips_mod_u_b,                              // llvm.mips.mod.u.b
    mips_mod_u_d,                              // llvm.mips.mod.u.d
    mips_mod_u_h,                              // llvm.mips.mod.u.h
    mips_mod_u_w,                              // llvm.mips.mod.u.w
    mips_modsub,                               // llvm.mips.modsub
    mips_move_v,                               // llvm.mips.move.v
    mips_msub,                                 // llvm.mips.msub
    mips_msub_q_h,                             // llvm.mips.msub.q.h
    mips_msub_q_w,                             // llvm.mips.msub.q.w
    mips_msubr_q_h,                            // llvm.mips.msubr.q.h
    mips_msubr_q_w,                            // llvm.mips.msubr.q.w
    mips_msubu,                                // llvm.mips.msubu
    mips_msubv_b,                              // llvm.mips.msubv.b
    mips_msubv_d,                              // llvm.mips.msubv.d
    mips_msubv_h,                              // llvm.mips.msubv.h
    mips_msubv_w,                              // llvm.mips.msubv.w
    mips_mthlip,                               // llvm.mips.mthlip
    mips_mul_ph,                               // llvm.mips.mul.ph
    mips_mul_q_h,                              // llvm.mips.mul.q.h
    mips_mul_q_w,                              // llvm.mips.mul.q.w
    mips_mul_s_ph,                             // llvm.mips.mul.s.ph
    mips_muleq_s_w_phl,                        // llvm.mips.muleq.s.w.phl
    mips_muleq_s_w_phr,                        // llvm.mips.muleq.s.w.phr
    mips_muleu_s_ph_qbl,                       // llvm.mips.muleu.s.ph.qbl
    mips_muleu_s_ph_qbr,                       // llvm.mips.muleu.s.ph.qbr
    mips_mulq_rs_ph,                           // llvm.mips.mulq.rs.ph
    mips_mulq_rs_w,                            // llvm.mips.mulq.rs.w
    mips_mulq_s_ph,                            // llvm.mips.mulq.s.ph
    mips_mulq_s_w,                             // llvm.mips.mulq.s.w
    mips_mulr_q_h,                             // llvm.mips.mulr.q.h
    mips_mulr_q_w,                             // llvm.mips.mulr.q.w
    mips_mulsa_w_ph,                           // llvm.mips.mulsa.w.ph
    mips_mulsaq_s_w_ph,                        // llvm.mips.mulsaq.s.w.ph
    mips_mult,                                 // llvm.mips.mult
    mips_multu,                                // llvm.mips.multu
    mips_mulv_b,                               // llvm.mips.mulv.b
    mips_mulv_d,                               // llvm.mips.mulv.d
    mips_mulv_h,                               // llvm.mips.mulv.h
    mips_mulv_w,                               // llvm.mips.mulv.w
    mips_nloc_b,                               // llvm.mips.nloc.b
    mips_nloc_d,                               // llvm.mips.nloc.d
    mips_nloc_h,                               // llvm.mips.nloc.h
    mips_nloc_w,                               // llvm.mips.nloc.w
    mips_nlzc_b,                               // llvm.mips.nlzc.b
    mips_nlzc_d,                               // llvm.mips.nlzc.d
    mips_nlzc_h,                               // llvm.mips.nlzc.h
    mips_nlzc_w,                               // llvm.mips.nlzc.w
    mips_nor_v,                                // llvm.mips.nor.v
    mips_nori_b,                               // llvm.mips.nori.b
    mips_or_v,                                 // llvm.mips.or.v
    mips_ori_b,                                // llvm.mips.ori.b
    mips_packrl_ph,                            // llvm.mips.packrl.ph
    mips_pckev_b,                              // llvm.mips.pckev.b
    mips_pckev_d,                              // llvm.mips.pckev.d
    mips_pckev_h,                              // llvm.mips.pckev.h
    mips_pckev_w,                              // llvm.mips.pckev.w
    mips_pckod_b,                              // llvm.mips.pckod.b
    mips_pckod_d,                              // llvm.mips.pckod.d
    mips_pckod_h,                              // llvm.mips.pckod.h
    mips_pckod_w,                              // llvm.mips.pckod.w
    mips_pcnt_b,                               // llvm.mips.pcnt.b
    mips_pcnt_d,                               // llvm.mips.pcnt.d
    mips_pcnt_h,                               // llvm.mips.pcnt.h
    mips_pcnt_w,                               // llvm.mips.pcnt.w
    mips_pick_ph,                              // llvm.mips.pick.ph
    mips_pick_qb,                              // llvm.mips.pick.qb
    mips_preceq_w_phl,                         // llvm.mips.preceq.w.phl
    mips_preceq_w_phr,                         // llvm.mips.preceq.w.phr
    mips_precequ_ph_qbl,                       // llvm.mips.precequ.ph.qbl
    mips_precequ_ph_qbla,                      // llvm.mips.precequ.ph.qbla
    mips_precequ_ph_qbr,                       // llvm.mips.precequ.ph.qbr
    mips_precequ_ph_qbra,                      // llvm.mips.precequ.ph.qbra
    mips_preceu_ph_qbl,                        // llvm.mips.preceu.ph.qbl
    mips_preceu_ph_qbla,                       // llvm.mips.preceu.ph.qbla
    mips_preceu_ph_qbr,                        // llvm.mips.preceu.ph.qbr
    mips_preceu_ph_qbra,                       // llvm.mips.preceu.ph.qbra
    mips_precr_qb_ph,                          // llvm.mips.precr.qb.ph
    mips_precr_sra_ph_w,                       // llvm.mips.precr.sra.ph.w
    mips_precr_sra_r_ph_w,                     // llvm.mips.precr.sra.r.ph.w
    mips_precrq_ph_w,                          // llvm.mips.precrq.ph.w
    mips_precrq_qb_ph,                         // llvm.mips.precrq.qb.ph
    mips_precrq_rs_ph_w,                       // llvm.mips.precrq.rs.ph.w
    mips_precrqu_s_qb_ph,                      // llvm.mips.precrqu.s.qb.ph
    mips_prepend,                              // llvm.mips.prepend
    mips_raddu_w_qb,                           // llvm.mips.raddu.w.qb
    mips_rddsp,                                // llvm.mips.rddsp
    mips_repl_ph,                              // llvm.mips.repl.ph
    mips_repl_qb,                              // llvm.mips.repl.qb
    mips_sat_s_b,                              // llvm.mips.sat.s.b
    mips_sat_s_d,                              // llvm.mips.sat.s.d
    mips_sat_s_h,                              // llvm.mips.sat.s.h
    mips_sat_s_w,                              // llvm.mips.sat.s.w
    mips_sat_u_b,                              // llvm.mips.sat.u.b
    mips_sat_u_d,                              // llvm.mips.sat.u.d
    mips_sat_u_h,                              // llvm.mips.sat.u.h
    mips_sat_u_w,                              // llvm.mips.sat.u.w
    mips_shf_b,                                // llvm.mips.shf.b
    mips_shf_h,                                // llvm.mips.shf.h
    mips_shf_w,                                // llvm.mips.shf.w
    mips_shilo,                                // llvm.mips.shilo
    mips_shll_ph,                              // llvm.mips.shll.ph
    mips_shll_qb,                              // llvm.mips.shll.qb
    mips_shll_s_ph,                            // llvm.mips.shll.s.ph
    mips_shll_s_w,                             // llvm.mips.shll.s.w
    mips_shra_ph,                              // llvm.mips.shra.ph
    mips_shra_qb,                              // llvm.mips.shra.qb
    mips_shra_r_ph,                            // llvm.mips.shra.r.ph
    mips_shra_r_qb,                            // llvm.mips.shra.r.qb
    mips_shra_r_w,                             // llvm.mips.shra.r.w
    mips_shrl_ph,                              // llvm.mips.shrl.ph
    mips_shrl_qb,                              // llvm.mips.shrl.qb
    mips_sld_b,                                // llvm.mips.sld.b
    mips_sld_d,                                // llvm.mips.sld.d
    mips_sld_h,                                // llvm.mips.sld.h
    mips_sld_w,                                // llvm.mips.sld.w
    mips_sldi_b,                               // llvm.mips.sldi.b
    mips_sldi_d,                               // llvm.mips.sldi.d
    mips_sldi_h,                               // llvm.mips.sldi.h
    mips_sldi_w,                               // llvm.mips.sldi.w
    mips_sll_b,                                // llvm.mips.sll.b
    mips_sll_d,                                // llvm.mips.sll.d
    mips_sll_h,                                // llvm.mips.sll.h
    mips_sll_w,                                // llvm.mips.sll.w
    mips_slli_b,                               // llvm.mips.slli.b
    mips_slli_d,                               // llvm.mips.slli.d
    mips_slli_h,                               // llvm.mips.slli.h
    mips_slli_w,                               // llvm.mips.slli.w
    mips_splat_b,                              // llvm.mips.splat.b
    mips_splat_d,                              // llvm.mips.splat.d
    mips_splat_h,                              // llvm.mips.splat.h
    mips_splat_w,                              // llvm.mips.splat.w
    mips_splati_b,                             // llvm.mips.splati.b
    mips_splati_d,                             // llvm.mips.splati.d
    mips_splati_h,                             // llvm.mips.splati.h
    mips_splati_w,                             // llvm.mips.splati.w
    mips_sra_b,                                // llvm.mips.sra.b
    mips_sra_d,                                // llvm.mips.sra.d
    mips_sra_h,                                // llvm.mips.sra.h
    mips_sra_w,                                // llvm.mips.sra.w
    mips_srai_b,                               // llvm.mips.srai.b
    mips_srai_d,                               // llvm.mips.srai.d
    mips_srai_h,                               // llvm.mips.srai.h
    mips_srai_w,                               // llvm.mips.srai.w
    mips_srar_b,                               // llvm.mips.srar.b
    mips_srar_d,                               // llvm.mips.srar.d
    mips_srar_h,                               // llvm.mips.srar.h
    mips_srar_w,                               // llvm.mips.srar.w
    mips_srari_b,                              // llvm.mips.srari.b
    mips_srari_d,                              // llvm.mips.srari.d
    mips_srari_h,                              // llvm.mips.srari.h
    mips_srari_w,                              // llvm.mips.srari.w
    mips_srl_b,                                // llvm.mips.srl.b
    mips_srl_d,                                // llvm.mips.srl.d
    mips_srl_h,                                // llvm.mips.srl.h
    mips_srl_w,                                // llvm.mips.srl.w
    mips_srli_b,                               // llvm.mips.srli.b
    mips_srli_d,                               // llvm.mips.srli.d
    mips_srli_h,                               // llvm.mips.srli.h
    mips_srli_w,                               // llvm.mips.srli.w
    mips_srlr_b,                               // llvm.mips.srlr.b
    mips_srlr_d,                               // llvm.mips.srlr.d
    mips_srlr_h,                               // llvm.mips.srlr.h
    mips_srlr_w,                               // llvm.mips.srlr.w
    mips_srlri_b,                              // llvm.mips.srlri.b
    mips_srlri_d,                              // llvm.mips.srlri.d
    mips_srlri_h,                              // llvm.mips.srlri.h
    mips_srlri_w,                              // llvm.mips.srlri.w
    mips_st_b,                                 // llvm.mips.st.b
    mips_st_d,                                 // llvm.mips.st.d
    mips_st_h,                                 // llvm.mips.st.h
    mips_st_w,                                 // llvm.mips.st.w
    mips_subq_ph,                              // llvm.mips.subq.ph
    mips_subq_s_ph,                            // llvm.mips.subq.s.ph
    mips_subq_s_w,                             // llvm.mips.subq.s.w
    mips_subqh_ph,                             // llvm.mips.subqh.ph
    mips_subqh_r_ph,                           // llvm.mips.subqh.r.ph
    mips_subqh_r_w,                            // llvm.mips.subqh.r.w
    mips_subqh_w,                              // llvm.mips.subqh.w
    mips_subs_s_b,                             // llvm.mips.subs.s.b
    mips_subs_s_d,                             // llvm.mips.subs.s.d
    mips_subs_s_h,                             // llvm.mips.subs.s.h
    mips_subs_s_w,                             // llvm.mips.subs.s.w
    mips_subs_u_b,                             // llvm.mips.subs.u.b
    mips_subs_u_d,                             // llvm.mips.subs.u.d
    mips_subs_u_h,                             // llvm.mips.subs.u.h
    mips_subs_u_w,                             // llvm.mips.subs.u.w
    mips_subsus_u_b,                           // llvm.mips.subsus.u.b
    mips_subsus_u_d,                           // llvm.mips.subsus.u.d
    mips_subsus_u_h,                           // llvm.mips.subsus.u.h
    mips_subsus_u_w,                           // llvm.mips.subsus.u.w
    mips_subsuu_s_b,                           // llvm.mips.subsuu.s.b
    mips_subsuu_s_d,                           // llvm.mips.subsuu.s.d
    mips_subsuu_s_h,                           // llvm.mips.subsuu.s.h
    mips_subsuu_s_w,                           // llvm.mips.subsuu.s.w
    mips_subu_ph,                              // llvm.mips.subu.ph
    mips_subu_qb,                              // llvm.mips.subu.qb
    mips_subu_s_ph,                            // llvm.mips.subu.s.ph
    mips_subu_s_qb,                            // llvm.mips.subu.s.qb
    mips_subuh_qb,                             // llvm.mips.subuh.qb
    mips_subuh_r_qb,                           // llvm.mips.subuh.r.qb
    mips_subv_b,                               // llvm.mips.subv.b
    mips_subv_d,                               // llvm.mips.subv.d
    mips_subv_h,                               // llvm.mips.subv.h
    mips_subv_w,                               // llvm.mips.subv.w
    mips_subvi_b,                              // llvm.mips.subvi.b
    mips_subvi_d,                              // llvm.mips.subvi.d
    mips_subvi_h,                              // llvm.mips.subvi.h
    mips_subvi_w,                              // llvm.mips.subvi.w
    mips_vshf_b,                               // llvm.mips.vshf.b
    mips_vshf_d,                               // llvm.mips.vshf.d
    mips_vshf_h,                               // llvm.mips.vshf.h
    mips_vshf_w,                               // llvm.mips.vshf.w
    mips_wrdsp,                                // llvm.mips.wrdsp
    mips_xor_v,                                // llvm.mips.xor.v
    mips_xori_b,                               // llvm.mips.xori.b
    nearbyint,                                 // llvm.nearbyint
    nvvm_abs_i,                                // llvm.nvvm.abs.i
    nvvm_abs_ll,                               // llvm.nvvm.abs.ll
    nvvm_add_rm_d,                             // llvm.nvvm.add.rm.d
    nvvm_add_rm_f,                             // llvm.nvvm.add.rm.f
    nvvm_add_rm_ftz_f,                         // llvm.nvvm.add.rm.ftz.f
    nvvm_add_rn_d,                             // llvm.nvvm.add.rn.d
    nvvm_add_rn_f,                             // llvm.nvvm.add.rn.f
    nvvm_add_rn_ftz_f,                         // llvm.nvvm.add.rn.ftz.f
    nvvm_add_rp_d,                             // llvm.nvvm.add.rp.d
    nvvm_add_rp_f,                             // llvm.nvvm.add.rp.f
    nvvm_add_rp_ftz_f,                         // llvm.nvvm.add.rp.ftz.f
    nvvm_add_rz_d,                             // llvm.nvvm.add.rz.d
    nvvm_add_rz_f,                             // llvm.nvvm.add.rz.f
    nvvm_add_rz_ftz_f,                         // llvm.nvvm.add.rz.ftz.f
    nvvm_atomic_load_add_f32,                  // llvm.nvvm.atomic.load.add.f32
    nvvm_atomic_load_dec_32,                   // llvm.nvvm.atomic.load.dec.32
    nvvm_atomic_load_inc_32,                   // llvm.nvvm.atomic.load.inc.32
    nvvm_barrier0,                             // llvm.nvvm.barrier0
    nvvm_barrier0_and,                         // llvm.nvvm.barrier0.and
    nvvm_barrier0_or,                          // llvm.nvvm.barrier0.or
    nvvm_barrier0_popc,                        // llvm.nvvm.barrier0.popc
    nvvm_bitcast_d2ll,                         // llvm.nvvm.bitcast.d2ll
    nvvm_bitcast_f2i,                          // llvm.nvvm.bitcast.f2i
    nvvm_bitcast_i2f,                          // llvm.nvvm.bitcast.i2f
    nvvm_bitcast_ll2d,                         // llvm.nvvm.bitcast.ll2d
    nvvm_brev32,                               // llvm.nvvm.brev32
    nvvm_brev64,                               // llvm.nvvm.brev64
    nvvm_ceil_d,                               // llvm.nvvm.ceil.d
    nvvm_ceil_f,                               // llvm.nvvm.ceil.f
    nvvm_ceil_ftz_f,                           // llvm.nvvm.ceil.ftz.f
    nvvm_clz_i,                                // llvm.nvvm.clz.i
    nvvm_clz_ll,                               // llvm.nvvm.clz.ll
    nvvm_compiler_error,                       // llvm.nvvm.compiler.error
    nvvm_compiler_warn,                        // llvm.nvvm.compiler.warn
    nvvm_cos_approx_f,                         // llvm.nvvm.cos.approx.f
    nvvm_cos_approx_ftz_f,                     // llvm.nvvm.cos.approx.ftz.f
    nvvm_d2f_rm,                               // llvm.nvvm.d2f.rm
    nvvm_d2f_rm_ftz,                           // llvm.nvvm.d2f.rm.ftz
    nvvm_d2f_rn,                               // llvm.nvvm.d2f.rn
    nvvm_d2f_rn_ftz,                           // llvm.nvvm.d2f.rn.ftz
    nvvm_d2f_rp,                               // llvm.nvvm.d2f.rp
    nvvm_d2f_rp_ftz,                           // llvm.nvvm.d2f.rp.ftz
    nvvm_d2f_rz,                               // llvm.nvvm.d2f.rz
    nvvm_d2f_rz_ftz,                           // llvm.nvvm.d2f.rz.ftz
    nvvm_d2i_hi,                               // llvm.nvvm.d2i.hi
    nvvm_d2i_lo,                               // llvm.nvvm.d2i.lo
    nvvm_d2i_rm,                               // llvm.nvvm.d2i.rm
    nvvm_d2i_rn,                               // llvm.nvvm.d2i.rn
    nvvm_d2i_rp,                               // llvm.nvvm.d2i.rp
    nvvm_d2i_rz,                               // llvm.nvvm.d2i.rz
    nvvm_d2ll_rm,                              // llvm.nvvm.d2ll.rm
    nvvm_d2ll_rn,                              // llvm.nvvm.d2ll.rn
    nvvm_d2ll_rp,                              // llvm.nvvm.d2ll.rp
    nvvm_d2ll_rz,                              // llvm.nvvm.d2ll.rz
    nvvm_d2ui_rm,                              // llvm.nvvm.d2ui.rm
    nvvm_d2ui_rn,                              // llvm.nvvm.d2ui.rn
    nvvm_d2ui_rp,                              // llvm.nvvm.d2ui.rp
    nvvm_d2ui_rz,                              // llvm.nvvm.d2ui.rz
    nvvm_d2ull_rm,                             // llvm.nvvm.d2ull.rm
    nvvm_d2ull_rn,                             // llvm.nvvm.d2ull.rn
    nvvm_d2ull_rp,                             // llvm.nvvm.d2ull.rp
    nvvm_d2ull_rz,                             // llvm.nvvm.d2ull.rz
    nvvm_div_approx_f,                         // llvm.nvvm.div.approx.f
    nvvm_div_approx_ftz_f,                     // llvm.nvvm.div.approx.ftz.f
    nvvm_div_rm_d,                             // llvm.nvvm.div.rm.d
    nvvm_div_rm_f,                             // llvm.nvvm.div.rm.f
    nvvm_div_rm_ftz_f,                         // llvm.nvvm.div.rm.ftz.f
    nvvm_div_rn_d,                             // llvm.nvvm.div.rn.d
    nvvm_div_rn_f,                             // llvm.nvvm.div.rn.f
    nvvm_div_rn_ftz_f,                         // llvm.nvvm.div.rn.ftz.f
    nvvm_div_rp_d,                             // llvm.nvvm.div.rp.d
    nvvm_div_rp_f,                             // llvm.nvvm.div.rp.f
    nvvm_div_rp_ftz_f,                         // llvm.nvvm.div.rp.ftz.f
    nvvm_div_rz_d,                             // llvm.nvvm.div.rz.d
    nvvm_div_rz_f,                             // llvm.nvvm.div.rz.f
    nvvm_div_rz_ftz_f,                         // llvm.nvvm.div.rz.ftz.f
    nvvm_ex2_approx_d,                         // llvm.nvvm.ex2.approx.d
    nvvm_ex2_approx_f,                         // llvm.nvvm.ex2.approx.f
    nvvm_ex2_approx_ftz_f,                     // llvm.nvvm.ex2.approx.ftz.f
    nvvm_f2h_rn,                               // llvm.nvvm.f2h.rn
    nvvm_f2h_rn_ftz,                           // llvm.nvvm.f2h.rn.ftz
    nvvm_f2i_rm,                               // llvm.nvvm.f2i.rm
    nvvm_f2i_rm_ftz,                           // llvm.nvvm.f2i.rm.ftz
    nvvm_f2i_rn,                               // llvm.nvvm.f2i.rn
    nvvm_f2i_rn_ftz,                           // llvm.nvvm.f2i.rn.ftz
    nvvm_f2i_rp,                               // llvm.nvvm.f2i.rp
    nvvm_f2i_rp_ftz,                           // llvm.nvvm.f2i.rp.ftz
    nvvm_f2i_rz,                               // llvm.nvvm.f2i.rz
    nvvm_f2i_rz_ftz,                           // llvm.nvvm.f2i.rz.ftz
    nvvm_f2ll_rm,                              // llvm.nvvm.f2ll.rm
    nvvm_f2ll_rm_ftz,                          // llvm.nvvm.f2ll.rm.ftz
    nvvm_f2ll_rn,                              // llvm.nvvm.f2ll.rn
    nvvm_f2ll_rn_ftz,                          // llvm.nvvm.f2ll.rn.ftz
    nvvm_f2ll_rp,                              // llvm.nvvm.f2ll.rp
    nvvm_f2ll_rp_ftz,                          // llvm.nvvm.f2ll.rp.ftz
    nvvm_f2ll_rz,                              // llvm.nvvm.f2ll.rz
    nvvm_f2ll_rz_ftz,                          // llvm.nvvm.f2ll.rz.ftz
    nvvm_f2ui_rm,                              // llvm.nvvm.f2ui.rm
    nvvm_f2ui_rm_ftz,                          // llvm.nvvm.f2ui.rm.ftz
    nvvm_f2ui_rn,                              // llvm.nvvm.f2ui.rn
    nvvm_f2ui_rn_ftz,                          // llvm.nvvm.f2ui.rn.ftz
    nvvm_f2ui_rp,                              // llvm.nvvm.f2ui.rp
    nvvm_f2ui_rp_ftz,                          // llvm.nvvm.f2ui.rp.ftz
    nvvm_f2ui_rz,                              // llvm.nvvm.f2ui.rz
    nvvm_f2ui_rz_ftz,                          // llvm.nvvm.f2ui.rz.ftz
    nvvm_f2ull_rm,                             // llvm.nvvm.f2ull.rm
    nvvm_f2ull_rm_ftz,                         // llvm.nvvm.f2ull.rm.ftz
    nvvm_f2ull_rn,                             // llvm.nvvm.f2ull.rn
    nvvm_f2ull_rn_ftz,                         // llvm.nvvm.f2ull.rn.ftz
    nvvm_f2ull_rp,                             // llvm.nvvm.f2ull.rp
    nvvm_f2ull_rp_ftz,                         // llvm.nvvm.f2ull.rp.ftz
    nvvm_f2ull_rz,                             // llvm.nvvm.f2ull.rz
    nvvm_f2ull_rz_ftz,                         // llvm.nvvm.f2ull.rz.ftz
    nvvm_fabs_d,                               // llvm.nvvm.fabs.d
    nvvm_fabs_f,                               // llvm.nvvm.fabs.f
    nvvm_fabs_ftz_f,                           // llvm.nvvm.fabs.ftz.f
    nvvm_floor_d,                              // llvm.nvvm.floor.d
    nvvm_floor_f,                              // llvm.nvvm.floor.f
    nvvm_floor_ftz_f,                          // llvm.nvvm.floor.ftz.f
    nvvm_fma_rm_d,                             // llvm.nvvm.fma.rm.d
    nvvm_fma_rm_f,                             // llvm.nvvm.fma.rm.f
    nvvm_fma_rm_ftz_f,                         // llvm.nvvm.fma.rm.ftz.f
    nvvm_fma_rn_d,                             // llvm.nvvm.fma.rn.d
    nvvm_fma_rn_f,                             // llvm.nvvm.fma.rn.f
    nvvm_fma_rn_ftz_f,                         // llvm.nvvm.fma.rn.ftz.f
    nvvm_fma_rp_d,                             // llvm.nvvm.fma.rp.d
    nvvm_fma_rp_f,                             // llvm.nvvm.fma.rp.f
    nvvm_fma_rp_ftz_f,                         // llvm.nvvm.fma.rp.ftz.f
    nvvm_fma_rz_d,                             // llvm.nvvm.fma.rz.d
    nvvm_fma_rz_f,                             // llvm.nvvm.fma.rz.f
    nvvm_fma_rz_ftz_f,                         // llvm.nvvm.fma.rz.ftz.f
    nvvm_fmax_d,                               // llvm.nvvm.fmax.d
    nvvm_fmax_f,                               // llvm.nvvm.fmax.f
    nvvm_fmax_ftz_f,                           // llvm.nvvm.fmax.ftz.f
    nvvm_fmin_d,                               // llvm.nvvm.fmin.d
    nvvm_fmin_f,                               // llvm.nvvm.fmin.f
    nvvm_fmin_ftz_f,                           // llvm.nvvm.fmin.ftz.f
    nvvm_h2f,                                  // llvm.nvvm.h2f
    nvvm_i2d_rm,                               // llvm.nvvm.i2d.rm
    nvvm_i2d_rn,                               // llvm.nvvm.i2d.rn
    nvvm_i2d_rp,                               // llvm.nvvm.i2d.rp
    nvvm_i2d_rz,                               // llvm.nvvm.i2d.rz
    nvvm_i2f_rm,                               // llvm.nvvm.i2f.rm
    nvvm_i2f_rn,                               // llvm.nvvm.i2f.rn
    nvvm_i2f_rp,                               // llvm.nvvm.i2f.rp
    nvvm_i2f_rz,                               // llvm.nvvm.i2f.rz
    nvvm_isspacep_const,                       // llvm.nvvm.isspacep.const
    nvvm_isspacep_global,                      // llvm.nvvm.isspacep.global
    nvvm_isspacep_local,                       // llvm.nvvm.isspacep.local
    nvvm_isspacep_shared,                      // llvm.nvvm.isspacep.shared
    nvvm_istypep_sampler,                      // llvm.nvvm.istypep.sampler
    nvvm_istypep_surface,                      // llvm.nvvm.istypep.surface
    nvvm_istypep_texture,                      // llvm.nvvm.istypep.texture
    nvvm_ldg_global_f,                         // llvm.nvvm.ldg.global.f
    nvvm_ldg_global_i,                         // llvm.nvvm.ldg.global.i
    nvvm_ldg_global_p,                         // llvm.nvvm.ldg.global.p
    nvvm_ldu_global_f,                         // llvm.nvvm.ldu.global.f
    nvvm_ldu_global_i,                         // llvm.nvvm.ldu.global.i
    nvvm_ldu_global_p,                         // llvm.nvvm.ldu.global.p
    nvvm_lg2_approx_d,                         // llvm.nvvm.lg2.approx.d
    nvvm_lg2_approx_f,                         // llvm.nvvm.lg2.approx.f
    nvvm_lg2_approx_ftz_f,                     // llvm.nvvm.lg2.approx.ftz.f
    nvvm_ll2d_rm,                              // llvm.nvvm.ll2d.rm
    nvvm_ll2d_rn,                              // llvm.nvvm.ll2d.rn
    nvvm_ll2d_rp,                              // llvm.nvvm.ll2d.rp
    nvvm_ll2d_rz,                              // llvm.nvvm.ll2d.rz
    nvvm_ll2f_rm,                              // llvm.nvvm.ll2f.rm
    nvvm_ll2f_rn,                              // llvm.nvvm.ll2f.rn
    nvvm_ll2f_rp,                              // llvm.nvvm.ll2f.rp
    nvvm_ll2f_rz,                              // llvm.nvvm.ll2f.rz
    nvvm_lohi_i2d,                             // llvm.nvvm.lohi.i2d
    nvvm_max_i,                                // llvm.nvvm.max.i
    nvvm_max_ll,                               // llvm.nvvm.max.ll
    nvvm_max_ui,                               // llvm.nvvm.max.ui
    nvvm_max_ull,                              // llvm.nvvm.max.ull
    nvvm_membar_cta,                           // llvm.nvvm.membar.cta
    nvvm_membar_gl,                            // llvm.nvvm.membar.gl
    nvvm_membar_sys,                           // llvm.nvvm.membar.sys
    nvvm_min_i,                                // llvm.nvvm.min.i
    nvvm_min_ll,                               // llvm.nvvm.min.ll
    nvvm_min_ui,                               // llvm.nvvm.min.ui
    nvvm_min_ull,                              // llvm.nvvm.min.ull
    nvvm_move_double,                          // llvm.nvvm.move.double
    nvvm_move_float,                           // llvm.nvvm.move.float
    nvvm_move_i16,                             // llvm.nvvm.move.i16
    nvvm_move_i32,                             // llvm.nvvm.move.i32
    nvvm_move_i64,                             // llvm.nvvm.move.i64
    nvvm_move_ptr,                             // llvm.nvvm.move.ptr
    nvvm_mul24_i,                              // llvm.nvvm.mul24.i
    nvvm_mul24_ui,                             // llvm.nvvm.mul24.ui
    nvvm_mul_rm_d,                             // llvm.nvvm.mul.rm.d
    nvvm_mul_rm_f,                             // llvm.nvvm.mul.rm.f
    nvvm_mul_rm_ftz_f,                         // llvm.nvvm.mul.rm.ftz.f
    nvvm_mul_rn_d,                             // llvm.nvvm.mul.rn.d
    nvvm_mul_rn_f,                             // llvm.nvvm.mul.rn.f
    nvvm_mul_rn_ftz_f,                         // llvm.nvvm.mul.rn.ftz.f
    nvvm_mul_rp_d,                             // llvm.nvvm.mul.rp.d
    nvvm_mul_rp_f,                             // llvm.nvvm.mul.rp.f
    nvvm_mul_rp_ftz_f,                         // llvm.nvvm.mul.rp.ftz.f
    nvvm_mul_rz_d,                             // llvm.nvvm.mul.rz.d
    nvvm_mul_rz_f,                             // llvm.nvvm.mul.rz.f
    nvvm_mul_rz_ftz_f,                         // llvm.nvvm.mul.rz.ftz.f
    nvvm_mulhi_i,                              // llvm.nvvm.mulhi.i
    nvvm_mulhi_ll,                             // llvm.nvvm.mulhi.ll
    nvvm_mulhi_ui,                             // llvm.nvvm.mulhi.ui
    nvvm_mulhi_ull,                            // llvm.nvvm.mulhi.ull
    nvvm_popc_i,                               // llvm.nvvm.popc.i
    nvvm_popc_ll,                              // llvm.nvvm.popc.ll
    nvvm_prmt,                                 // llvm.nvvm.prmt
    nvvm_ptr_constant_to_gen,                  // llvm.nvvm.ptr.constant.to.gen
    nvvm_ptr_gen_to_constant,                  // llvm.nvvm.ptr.gen.to.constant
    nvvm_ptr_gen_to_global,                    // llvm.nvvm.ptr.gen.to.global
    nvvm_ptr_gen_to_local,                     // llvm.nvvm.ptr.gen.to.local
    nvvm_ptr_gen_to_param,                     // llvm.nvvm.ptr.gen.to.param
    nvvm_ptr_gen_to_shared,                    // llvm.nvvm.ptr.gen.to.shared
    nvvm_ptr_global_to_gen,                    // llvm.nvvm.ptr.global.to.gen
    nvvm_ptr_local_to_gen,                     // llvm.nvvm.ptr.local.to.gen
    nvvm_ptr_shared_to_gen,                    // llvm.nvvm.ptr.shared.to.gen
    nvvm_rcp_approx_ftz_d,                     // llvm.nvvm.rcp.approx.ftz.d
    nvvm_rcp_rm_d,                             // llvm.nvvm.rcp.rm.d
    nvvm_rcp_rm_f,                             // llvm.nvvm.rcp.rm.f
    nvvm_rcp_rm_ftz_f,                         // llvm.nvvm.rcp.rm.ftz.f
    nvvm_rcp_rn_d,                             // llvm.nvvm.rcp.rn.d
    nvvm_rcp_rn_f,                             // llvm.nvvm.rcp.rn.f
    nvvm_rcp_rn_ftz_f,                         // llvm.nvvm.rcp.rn.ftz.f
    nvvm_rcp_rp_d,                             // llvm.nvvm.rcp.rp.d
    nvvm_rcp_rp_f,                             // llvm.nvvm.rcp.rp.f
    nvvm_rcp_rp_ftz_f,                         // llvm.nvvm.rcp.rp.ftz.f
    nvvm_rcp_rz_d,                             // llvm.nvvm.rcp.rz.d
    nvvm_rcp_rz_f,                             // llvm.nvvm.rcp.rz.f
    nvvm_rcp_rz_ftz_f,                         // llvm.nvvm.rcp.rz.ftz.f
    nvvm_read_ptx_sreg_ctaid_x,                // llvm.nvvm.read.ptx.sreg.ctaid.x
    nvvm_read_ptx_sreg_ctaid_y,                // llvm.nvvm.read.ptx.sreg.ctaid.y
    nvvm_read_ptx_sreg_ctaid_z,                // llvm.nvvm.read.ptx.sreg.ctaid.z
    nvvm_read_ptx_sreg_envreg0,                // llvm.nvvm.read.ptx.sreg.envreg0
    nvvm_read_ptx_sreg_envreg1,                // llvm.nvvm.read.ptx.sreg.envreg1
    nvvm_read_ptx_sreg_envreg10,               // llvm.nvvm.read.ptx.sreg.envreg10
    nvvm_read_ptx_sreg_envreg11,               // llvm.nvvm.read.ptx.sreg.envreg11
    nvvm_read_ptx_sreg_envreg12,               // llvm.nvvm.read.ptx.sreg.envreg12
    nvvm_read_ptx_sreg_envreg13,               // llvm.nvvm.read.ptx.sreg.envreg13
    nvvm_read_ptx_sreg_envreg14,               // llvm.nvvm.read.ptx.sreg.envreg14
    nvvm_read_ptx_sreg_envreg15,               // llvm.nvvm.read.ptx.sreg.envreg15
    nvvm_read_ptx_sreg_envreg16,               // llvm.nvvm.read.ptx.sreg.envreg16
    nvvm_read_ptx_sreg_envreg17,               // llvm.nvvm.read.ptx.sreg.envreg17
    nvvm_read_ptx_sreg_envreg18,               // llvm.nvvm.read.ptx.sreg.envreg18
    nvvm_read_ptx_sreg_envreg19,               // llvm.nvvm.read.ptx.sreg.envreg19
    nvvm_read_ptx_sreg_envreg2,                // llvm.nvvm.read.ptx.sreg.envreg2
    nvvm_read_ptx_sreg_envreg20,               // llvm.nvvm.read.ptx.sreg.envreg20
    nvvm_read_ptx_sreg_envreg21,               // llvm.nvvm.read.ptx.sreg.envreg21
    nvvm_read_ptx_sreg_envreg22,               // llvm.nvvm.read.ptx.sreg.envreg22
    nvvm_read_ptx_sreg_envreg23,               // llvm.nvvm.read.ptx.sreg.envreg23
    nvvm_read_ptx_sreg_envreg24,               // llvm.nvvm.read.ptx.sreg.envreg24
    nvvm_read_ptx_sreg_envreg25,               // llvm.nvvm.read.ptx.sreg.envreg25
    nvvm_read_ptx_sreg_envreg26,               // llvm.nvvm.read.ptx.sreg.envreg26
    nvvm_read_ptx_sreg_envreg27,               // llvm.nvvm.read.ptx.sreg.envreg27
    nvvm_read_ptx_sreg_envreg28,               // llvm.nvvm.read.ptx.sreg.envreg28
    nvvm_read_ptx_sreg_envreg29,               // llvm.nvvm.read.ptx.sreg.envreg29
    nvvm_read_ptx_sreg_envreg3,                // llvm.nvvm.read.ptx.sreg.envreg3
    nvvm_read_ptx_sreg_envreg30,               // llvm.nvvm.read.ptx.sreg.envreg30
    nvvm_read_ptx_sreg_envreg31,               // llvm.nvvm.read.ptx.sreg.envreg31
    nvvm_read_ptx_sreg_envreg4,                // llvm.nvvm.read.ptx.sreg.envreg4
    nvvm_read_ptx_sreg_envreg5,                // llvm.nvvm.read.ptx.sreg.envreg5
    nvvm_read_ptx_sreg_envreg6,                // llvm.nvvm.read.ptx.sreg.envreg6
    nvvm_read_ptx_sreg_envreg7,                // llvm.nvvm.read.ptx.sreg.envreg7
    nvvm_read_ptx_sreg_envreg8,                // llvm.nvvm.read.ptx.sreg.envreg8
    nvvm_read_ptx_sreg_envreg9,                // llvm.nvvm.read.ptx.sreg.envreg9
    nvvm_read_ptx_sreg_nctaid_x,               // llvm.nvvm.read.ptx.sreg.nctaid.x
    nvvm_read_ptx_sreg_nctaid_y,               // llvm.nvvm.read.ptx.sreg.nctaid.y
    nvvm_read_ptx_sreg_nctaid_z,               // llvm.nvvm.read.ptx.sreg.nctaid.z
    nvvm_read_ptx_sreg_ntid_x,                 // llvm.nvvm.read.ptx.sreg.ntid.x
    nvvm_read_ptx_sreg_ntid_y,                 // llvm.nvvm.read.ptx.sreg.ntid.y
    nvvm_read_ptx_sreg_ntid_z,                 // llvm.nvvm.read.ptx.sreg.ntid.z
    nvvm_read_ptx_sreg_tid_x,                  // llvm.nvvm.read.ptx.sreg.tid.x
    nvvm_read_ptx_sreg_tid_y,                  // llvm.nvvm.read.ptx.sreg.tid.y
    nvvm_read_ptx_sreg_tid_z,                  // llvm.nvvm.read.ptx.sreg.tid.z
    nvvm_read_ptx_sreg_warpsize,               // llvm.nvvm.read.ptx.sreg.warpsize
    nvvm_reflect,                              // llvm.nvvm.reflect
    nvvm_rotate_b32,                           // llvm.nvvm.rotate.b32
    nvvm_rotate_b64,                           // llvm.nvvm.rotate.b64
    nvvm_rotate_right_b64,                     // llvm.nvvm.rotate.right.b64
    nvvm_round_d,                              // llvm.nvvm.round.d
    nvvm_round_f,                              // llvm.nvvm.round.f
    nvvm_round_ftz_f,                          // llvm.nvvm.round.ftz.f
    nvvm_rsqrt_approx_d,                       // llvm.nvvm.rsqrt.approx.d
    nvvm_rsqrt_approx_f,                       // llvm.nvvm.rsqrt.approx.f
    nvvm_rsqrt_approx_ftz_f,                   // llvm.nvvm.rsqrt.approx.ftz.f
    nvvm_sad_i,                                // llvm.nvvm.sad.i
    nvvm_sad_ui,                               // llvm.nvvm.sad.ui
    nvvm_saturate_d,                           // llvm.nvvm.saturate.d
    nvvm_saturate_f,                           // llvm.nvvm.saturate.f
    nvvm_saturate_ftz_f,                       // llvm.nvvm.saturate.ftz.f
    nvvm_sin_approx_f,                         // llvm.nvvm.sin.approx.f
    nvvm_sin_approx_ftz_f,                     // llvm.nvvm.sin.approx.ftz.f
    nvvm_sqrt_approx_f,                        // llvm.nvvm.sqrt.approx.f
    nvvm_sqrt_approx_ftz_f,                    // llvm.nvvm.sqrt.approx.ftz.f
    nvvm_sqrt_f,                               // llvm.nvvm.sqrt.f
    nvvm_sqrt_rm_d,                            // llvm.nvvm.sqrt.rm.d
    nvvm_sqrt_rm_f,                            // llvm.nvvm.sqrt.rm.f
    nvvm_sqrt_rm_ftz_f,                        // llvm.nvvm.sqrt.rm.ftz.f
    nvvm_sqrt_rn_d,                            // llvm.nvvm.sqrt.rn.d
    nvvm_sqrt_rn_f,                            // llvm.nvvm.sqrt.rn.f
    nvvm_sqrt_rn_ftz_f,                        // llvm.nvvm.sqrt.rn.ftz.f
    nvvm_sqrt_rp_d,                            // llvm.nvvm.sqrt.rp.d
    nvvm_sqrt_rp_f,                            // llvm.nvvm.sqrt.rp.f
    nvvm_sqrt_rp_ftz_f,                        // llvm.nvvm.sqrt.rp.ftz.f
    nvvm_sqrt_rz_d,                            // llvm.nvvm.sqrt.rz.d
    nvvm_sqrt_rz_f,                            // llvm.nvvm.sqrt.rz.f
    nvvm_sqrt_rz_ftz_f,                        // llvm.nvvm.sqrt.rz.ftz.f
    nvvm_suld_1d_array_i16_clamp,              // llvm.nvvm.suld.1d.array.i16.clamp
    nvvm_suld_1d_array_i16_trap,               // llvm.nvvm.suld.1d.array.i16.trap
    nvvm_suld_1d_array_i16_zero,               // llvm.nvvm.suld.1d.array.i16.zero
    nvvm_suld_1d_array_i32_clamp,              // llvm.nvvm.suld.1d.array.i32.clamp
    nvvm_suld_1d_array_i32_trap,               // llvm.nvvm.suld.1d.array.i32.trap
    nvvm_suld_1d_array_i32_zero,               // llvm.nvvm.suld.1d.array.i32.zero
    nvvm_suld_1d_array_i64_clamp,              // llvm.nvvm.suld.1d.array.i64.clamp
    nvvm_suld_1d_array_i64_trap,               // llvm.nvvm.suld.1d.array.i64.trap
    nvvm_suld_1d_array_i64_zero,               // llvm.nvvm.suld.1d.array.i64.zero
    nvvm_suld_1d_array_i8_clamp,               // llvm.nvvm.suld.1d.array.i8.clamp
    nvvm_suld_1d_array_i8_trap,                // llvm.nvvm.suld.1d.array.i8.trap
    nvvm_suld_1d_array_i8_zero,                // llvm.nvvm.suld.1d.array.i8.zero
    nvvm_suld_1d_array_v2i16_clamp,            // llvm.nvvm.suld.1d.array.v2i16.clamp
    nvvm_suld_1d_array_v2i16_trap,             // llvm.nvvm.suld.1d.array.v2i16.trap
    nvvm_suld_1d_array_v2i16_zero,             // llvm.nvvm.suld.1d.array.v2i16.zero
    nvvm_suld_1d_array_v2i32_clamp,            // llvm.nvvm.suld.1d.array.v2i32.clamp
    nvvm_suld_1d_array_v2i32_trap,             // llvm.nvvm.suld.1d.array.v2i32.trap
    nvvm_suld_1d_array_v2i32_zero,             // llvm.nvvm.suld.1d.array.v2i32.zero
    nvvm_suld_1d_array_v2i64_clamp,            // llvm.nvvm.suld.1d.array.v2i64.clamp
    nvvm_suld_1d_array_v2i64_trap,             // llvm.nvvm.suld.1d.array.v2i64.trap
    nvvm_suld_1d_array_v2i64_zero,             // llvm.nvvm.suld.1d.array.v2i64.zero
    nvvm_suld_1d_array_v2i8_clamp,             // llvm.nvvm.suld.1d.array.v2i8.clamp
    nvvm_suld_1d_array_v2i8_trap,              // llvm.nvvm.suld.1d.array.v2i8.trap
    nvvm_suld_1d_array_v2i8_zero,              // llvm.nvvm.suld.1d.array.v2i8.zero
    nvvm_suld_1d_array_v4i16_clamp,            // llvm.nvvm.suld.1d.array.v4i16.clamp
    nvvm_suld_1d_array_v4i16_trap,             // llvm.nvvm.suld.1d.array.v4i16.trap
    nvvm_suld_1d_array_v4i16_zero,             // llvm.nvvm.suld.1d.array.v4i16.zero
    nvvm_suld_1d_array_v4i32_clamp,            // llvm.nvvm.suld.1d.array.v4i32.clamp
    nvvm_suld_1d_array_v4i32_trap,             // llvm.nvvm.suld.1d.array.v4i32.trap
    nvvm_suld_1d_array_v4i32_zero,             // llvm.nvvm.suld.1d.array.v4i32.zero
    nvvm_suld_1d_array_v4i8_clamp,             // llvm.nvvm.suld.1d.array.v4i8.clamp
    nvvm_suld_1d_array_v4i8_trap,              // llvm.nvvm.suld.1d.array.v4i8.trap
    nvvm_suld_1d_array_v4i8_zero,              // llvm.nvvm.suld.1d.array.v4i8.zero
    nvvm_suld_1d_i16_clamp,                    // llvm.nvvm.suld.1d.i16.clamp
    nvvm_suld_1d_i16_trap,                     // llvm.nvvm.suld.1d.i16.trap
    nvvm_suld_1d_i16_zero,                     // llvm.nvvm.suld.1d.i16.zero
    nvvm_suld_1d_i32_clamp,                    // llvm.nvvm.suld.1d.i32.clamp
    nvvm_suld_1d_i32_trap,                     // llvm.nvvm.suld.1d.i32.trap
    nvvm_suld_1d_i32_zero,                     // llvm.nvvm.suld.1d.i32.zero
    nvvm_suld_1d_i64_clamp,                    // llvm.nvvm.suld.1d.i64.clamp
    nvvm_suld_1d_i64_trap,                     // llvm.nvvm.suld.1d.i64.trap
    nvvm_suld_1d_i64_zero,                     // llvm.nvvm.suld.1d.i64.zero
    nvvm_suld_1d_i8_clamp,                     // llvm.nvvm.suld.1d.i8.clamp
    nvvm_suld_1d_i8_trap,                      // llvm.nvvm.suld.1d.i8.trap
    nvvm_suld_1d_i8_zero,                      // llvm.nvvm.suld.1d.i8.zero
    nvvm_suld_1d_v2i16_clamp,                  // llvm.nvvm.suld.1d.v2i16.clamp
    nvvm_suld_1d_v2i16_trap,                   // llvm.nvvm.suld.1d.v2i16.trap
    nvvm_suld_1d_v2i16_zero,                   // llvm.nvvm.suld.1d.v2i16.zero
    nvvm_suld_1d_v2i32_clamp,                  // llvm.nvvm.suld.1d.v2i32.clamp
    nvvm_suld_1d_v2i32_trap,                   // llvm.nvvm.suld.1d.v2i32.trap
    nvvm_suld_1d_v2i32_zero,                   // llvm.nvvm.suld.1d.v2i32.zero
    nvvm_suld_1d_v2i64_clamp,                  // llvm.nvvm.suld.1d.v2i64.clamp
    nvvm_suld_1d_v2i64_trap,                   // llvm.nvvm.suld.1d.v2i64.trap
    nvvm_suld_1d_v2i64_zero,                   // llvm.nvvm.suld.1d.v2i64.zero
    nvvm_suld_1d_v2i8_clamp,                   // llvm.nvvm.suld.1d.v2i8.clamp
    nvvm_suld_1d_v2i8_trap,                    // llvm.nvvm.suld.1d.v2i8.trap
    nvvm_suld_1d_v2i8_zero,                    // llvm.nvvm.suld.1d.v2i8.zero
    nvvm_suld_1d_v4i16_clamp,                  // llvm.nvvm.suld.1d.v4i16.clamp
    nvvm_suld_1d_v4i16_trap,                   // llvm.nvvm.suld.1d.v4i16.trap
    nvvm_suld_1d_v4i16_zero,                   // llvm.nvvm.suld.1d.v4i16.zero
    nvvm_suld_1d_v4i32_clamp,                  // llvm.nvvm.suld.1d.v4i32.clamp
    nvvm_suld_1d_v4i32_trap,                   // llvm.nvvm.suld.1d.v4i32.trap
    nvvm_suld_1d_v4i32_zero,                   // llvm.nvvm.suld.1d.v4i32.zero
    nvvm_suld_1d_v4i8_clamp,                   // llvm.nvvm.suld.1d.v4i8.clamp
    nvvm_suld_1d_v4i8_trap,                    // llvm.nvvm.suld.1d.v4i8.trap
    nvvm_suld_1d_v4i8_zero,                    // llvm.nvvm.suld.1d.v4i8.zero
    nvvm_suld_2d_array_i16_clamp,              // llvm.nvvm.suld.2d.array.i16.clamp
    nvvm_suld_2d_array_i16_trap,               // llvm.nvvm.suld.2d.array.i16.trap
    nvvm_suld_2d_array_i16_zero,               // llvm.nvvm.suld.2d.array.i16.zero
    nvvm_suld_2d_array_i32_clamp,              // llvm.nvvm.suld.2d.array.i32.clamp
    nvvm_suld_2d_array_i32_trap,               // llvm.nvvm.suld.2d.array.i32.trap
    nvvm_suld_2d_array_i32_zero,               // llvm.nvvm.suld.2d.array.i32.zero
    nvvm_suld_2d_array_i64_clamp,              // llvm.nvvm.suld.2d.array.i64.clamp
    nvvm_suld_2d_array_i64_trap,               // llvm.nvvm.suld.2d.array.i64.trap
    nvvm_suld_2d_array_i64_zero,               // llvm.nvvm.suld.2d.array.i64.zero
    nvvm_suld_2d_array_i8_clamp,               // llvm.nvvm.suld.2d.array.i8.clamp
    nvvm_suld_2d_array_i8_trap,                // llvm.nvvm.suld.2d.array.i8.trap
    nvvm_suld_2d_array_i8_zero,                // llvm.nvvm.suld.2d.array.i8.zero
    nvvm_suld_2d_array_v2i16_clamp,            // llvm.nvvm.suld.2d.array.v2i16.clamp
    nvvm_suld_2d_array_v2i16_trap,             // llvm.nvvm.suld.2d.array.v2i16.trap
    nvvm_suld_2d_array_v2i16_zero,             // llvm.nvvm.suld.2d.array.v2i16.zero
    nvvm_suld_2d_array_v2i32_clamp,            // llvm.nvvm.suld.2d.array.v2i32.clamp
    nvvm_suld_2d_array_v2i32_trap,             // llvm.nvvm.suld.2d.array.v2i32.trap
    nvvm_suld_2d_array_v2i32_zero,             // llvm.nvvm.suld.2d.array.v2i32.zero
    nvvm_suld_2d_array_v2i64_clamp,            // llvm.nvvm.suld.2d.array.v2i64.clamp
    nvvm_suld_2d_array_v2i64_trap,             // llvm.nvvm.suld.2d.array.v2i64.trap
    nvvm_suld_2d_array_v2i64_zero,             // llvm.nvvm.suld.2d.array.v2i64.zero
    nvvm_suld_2d_array_v2i8_clamp,             // llvm.nvvm.suld.2d.array.v2i8.clamp
    nvvm_suld_2d_array_v2i8_trap,              // llvm.nvvm.suld.2d.array.v2i8.trap
    nvvm_suld_2d_array_v2i8_zero,              // llvm.nvvm.suld.2d.array.v2i8.zero
    nvvm_suld_2d_array_v4i16_clamp,            // llvm.nvvm.suld.2d.array.v4i16.clamp
    nvvm_suld_2d_array_v4i16_trap,             // llvm.nvvm.suld.2d.array.v4i16.trap
    nvvm_suld_2d_array_v4i16_zero,             // llvm.nvvm.suld.2d.array.v4i16.zero
    nvvm_suld_2d_array_v4i32_clamp,            // llvm.nvvm.suld.2d.array.v4i32.clamp
    nvvm_suld_2d_array_v4i32_trap,             // llvm.nvvm.suld.2d.array.v4i32.trap
    nvvm_suld_2d_array_v4i32_zero,             // llvm.nvvm.suld.2d.array.v4i32.zero
    nvvm_suld_2d_array_v4i8_clamp,             // llvm.nvvm.suld.2d.array.v4i8.clamp
    nvvm_suld_2d_array_v4i8_trap,              // llvm.nvvm.suld.2d.array.v4i8.trap
    nvvm_suld_2d_array_v4i8_zero,              // llvm.nvvm.suld.2d.array.v4i8.zero
    nvvm_suld_2d_i16_clamp,                    // llvm.nvvm.suld.2d.i16.clamp
    nvvm_suld_2d_i16_trap,                     // llvm.nvvm.suld.2d.i16.trap
    nvvm_suld_2d_i16_zero,                     // llvm.nvvm.suld.2d.i16.zero
    nvvm_suld_2d_i32_clamp,                    // llvm.nvvm.suld.2d.i32.clamp
    nvvm_suld_2d_i32_trap,                     // llvm.nvvm.suld.2d.i32.trap
    nvvm_suld_2d_i32_zero,                     // llvm.nvvm.suld.2d.i32.zero
    nvvm_suld_2d_i64_clamp,                    // llvm.nvvm.suld.2d.i64.clamp
    nvvm_suld_2d_i64_trap,                     // llvm.nvvm.suld.2d.i64.trap
    nvvm_suld_2d_i64_zero,                     // llvm.nvvm.suld.2d.i64.zero
    nvvm_suld_2d_i8_clamp,                     // llvm.nvvm.suld.2d.i8.clamp
    nvvm_suld_2d_i8_trap,                      // llvm.nvvm.suld.2d.i8.trap
    nvvm_suld_2d_i8_zero,                      // llvm.nvvm.suld.2d.i8.zero
    nvvm_suld_2d_v2i16_clamp,                  // llvm.nvvm.suld.2d.v2i16.clamp
    nvvm_suld_2d_v2i16_trap,                   // llvm.nvvm.suld.2d.v2i16.trap
    nvvm_suld_2d_v2i16_zero,                   // llvm.nvvm.suld.2d.v2i16.zero
    nvvm_suld_2d_v2i32_clamp,                  // llvm.nvvm.suld.2d.v2i32.clamp
    nvvm_suld_2d_v2i32_trap,                   // llvm.nvvm.suld.2d.v2i32.trap
    nvvm_suld_2d_v2i32_zero,                   // llvm.nvvm.suld.2d.v2i32.zero
    nvvm_suld_2d_v2i64_clamp,                  // llvm.nvvm.suld.2d.v2i64.clamp
    nvvm_suld_2d_v2i64_trap,                   // llvm.nvvm.suld.2d.v2i64.trap
    nvvm_suld_2d_v2i64_zero,                   // llvm.nvvm.suld.2d.v2i64.zero
    nvvm_suld_2d_v2i8_clamp,                   // llvm.nvvm.suld.2d.v2i8.clamp
    nvvm_suld_2d_v2i8_trap,                    // llvm.nvvm.suld.2d.v2i8.trap
    nvvm_suld_2d_v2i8_zero,                    // llvm.nvvm.suld.2d.v2i8.zero
    nvvm_suld_2d_v4i16_clamp,                  // llvm.nvvm.suld.2d.v4i16.clamp
    nvvm_suld_2d_v4i16_trap,                   // llvm.nvvm.suld.2d.v4i16.trap
    nvvm_suld_2d_v4i16_zero,                   // llvm.nvvm.suld.2d.v4i16.zero
    nvvm_suld_2d_v4i32_clamp,                  // llvm.nvvm.suld.2d.v4i32.clamp
    nvvm_suld_2d_v4i32_trap,                   // llvm.nvvm.suld.2d.v4i32.trap
    nvvm_suld_2d_v4i32_zero,                   // llvm.nvvm.suld.2d.v4i32.zero
    nvvm_suld_2d_v4i8_clamp,                   // llvm.nvvm.suld.2d.v4i8.clamp
    nvvm_suld_2d_v4i8_trap,                    // llvm.nvvm.suld.2d.v4i8.trap
    nvvm_suld_2d_v4i8_zero,                    // llvm.nvvm.suld.2d.v4i8.zero
    nvvm_suld_3d_i16_clamp,                    // llvm.nvvm.suld.3d.i16.clamp
    nvvm_suld_3d_i16_trap,                     // llvm.nvvm.suld.3d.i16.trap
    nvvm_suld_3d_i16_zero,                     // llvm.nvvm.suld.3d.i16.zero
    nvvm_suld_3d_i32_clamp,                    // llvm.nvvm.suld.3d.i32.clamp
    nvvm_suld_3d_i32_trap,                     // llvm.nvvm.suld.3d.i32.trap
    nvvm_suld_3d_i32_zero,                     // llvm.nvvm.suld.3d.i32.zero
    nvvm_suld_3d_i64_clamp,                    // llvm.nvvm.suld.3d.i64.clamp
    nvvm_suld_3d_i64_trap,                     // llvm.nvvm.suld.3d.i64.trap
    nvvm_suld_3d_i64_zero,                     // llvm.nvvm.suld.3d.i64.zero
    nvvm_suld_3d_i8_clamp,                     // llvm.nvvm.suld.3d.i8.clamp
    nvvm_suld_3d_i8_trap,                      // llvm.nvvm.suld.3d.i8.trap
    nvvm_suld_3d_i8_zero,                      // llvm.nvvm.suld.3d.i8.zero
    nvvm_suld_3d_v2i16_clamp,                  // llvm.nvvm.suld.3d.v2i16.clamp
    nvvm_suld_3d_v2i16_trap,                   // llvm.nvvm.suld.3d.v2i16.trap
    nvvm_suld_3d_v2i16_zero,                   // llvm.nvvm.suld.3d.v2i16.zero
    nvvm_suld_3d_v2i32_clamp,                  // llvm.nvvm.suld.3d.v2i32.clamp
    nvvm_suld_3d_v2i32_trap,                   // llvm.nvvm.suld.3d.v2i32.trap
    nvvm_suld_3d_v2i32_zero,                   // llvm.nvvm.suld.3d.v2i32.zero
    nvvm_suld_3d_v2i64_clamp,                  // llvm.nvvm.suld.3d.v2i64.clamp
    nvvm_suld_3d_v2i64_trap,                   // llvm.nvvm.suld.3d.v2i64.trap
    nvvm_suld_3d_v2i64_zero,                   // llvm.nvvm.suld.3d.v2i64.zero
    nvvm_suld_3d_v2i8_clamp,                   // llvm.nvvm.suld.3d.v2i8.clamp
    nvvm_suld_3d_v2i8_trap,                    // llvm.nvvm.suld.3d.v2i8.trap
    nvvm_suld_3d_v2i8_zero,                    // llvm.nvvm.suld.3d.v2i8.zero
    nvvm_suld_3d_v4i16_clamp,                  // llvm.nvvm.suld.3d.v4i16.clamp
    nvvm_suld_3d_v4i16_trap,                   // llvm.nvvm.suld.3d.v4i16.trap
    nvvm_suld_3d_v4i16_zero,                   // llvm.nvvm.suld.3d.v4i16.zero
    nvvm_suld_3d_v4i32_clamp,                  // llvm.nvvm.suld.3d.v4i32.clamp
    nvvm_suld_3d_v4i32_trap,                   // llvm.nvvm.suld.3d.v4i32.trap
    nvvm_suld_3d_v4i32_zero,                   // llvm.nvvm.suld.3d.v4i32.zero
    nvvm_suld_3d_v4i8_clamp,                   // llvm.nvvm.suld.3d.v4i8.clamp
    nvvm_suld_3d_v4i8_trap,                    // llvm.nvvm.suld.3d.v4i8.trap
    nvvm_suld_3d_v4i8_zero,                    // llvm.nvvm.suld.3d.v4i8.zero
    nvvm_suq_array_size,                       // llvm.nvvm.suq.array.size
    nvvm_suq_channel_data_type,                // llvm.nvvm.suq.channel.data.type
    nvvm_suq_channel_order,                    // llvm.nvvm.suq.channel.order
    nvvm_suq_depth,                            // llvm.nvvm.suq.depth
    nvvm_suq_height,                           // llvm.nvvm.suq.height
    nvvm_suq_width,                            // llvm.nvvm.suq.width
    nvvm_sust_b_1d_array_i16_clamp,            // llvm.nvvm.sust.b.1d.array.i16.clamp
    nvvm_sust_b_1d_array_i16_trap,             // llvm.nvvm.sust.b.1d.array.i16.trap
    nvvm_sust_b_1d_array_i16_zero,             // llvm.nvvm.sust.b.1d.array.i16.zero
    nvvm_sust_b_1d_array_i32_clamp,            // llvm.nvvm.sust.b.1d.array.i32.clamp
    nvvm_sust_b_1d_array_i32_trap,             // llvm.nvvm.sust.b.1d.array.i32.trap
    nvvm_sust_b_1d_array_i32_zero,             // llvm.nvvm.sust.b.1d.array.i32.zero
    nvvm_sust_b_1d_array_i64_clamp,            // llvm.nvvm.sust.b.1d.array.i64.clamp
    nvvm_sust_b_1d_array_i64_trap,             // llvm.nvvm.sust.b.1d.array.i64.trap
    nvvm_sust_b_1d_array_i64_zero,             // llvm.nvvm.sust.b.1d.array.i64.zero
    nvvm_sust_b_1d_array_i8_clamp,             // llvm.nvvm.sust.b.1d.array.i8.clamp
    nvvm_sust_b_1d_array_i8_trap,              // llvm.nvvm.sust.b.1d.array.i8.trap
    nvvm_sust_b_1d_array_i8_zero,              // llvm.nvvm.sust.b.1d.array.i8.zero
    nvvm_sust_b_1d_array_v2i16_clamp,          // llvm.nvvm.sust.b.1d.array.v2i16.clamp
    nvvm_sust_b_1d_array_v2i16_trap,           // llvm.nvvm.sust.b.1d.array.v2i16.trap
    nvvm_sust_b_1d_array_v2i16_zero,           // llvm.nvvm.sust.b.1d.array.v2i16.zero
    nvvm_sust_b_1d_array_v2i32_clamp,          // llvm.nvvm.sust.b.1d.array.v2i32.clamp
    nvvm_sust_b_1d_array_v2i32_trap,           // llvm.nvvm.sust.b.1d.array.v2i32.trap
    nvvm_sust_b_1d_array_v2i32_zero,           // llvm.nvvm.sust.b.1d.array.v2i32.zero
    nvvm_sust_b_1d_array_v2i64_clamp,          // llvm.nvvm.sust.b.1d.array.v2i64.clamp
    nvvm_sust_b_1d_array_v2i64_trap,           // llvm.nvvm.sust.b.1d.array.v2i64.trap
    nvvm_sust_b_1d_array_v2i64_zero,           // llvm.nvvm.sust.b.1d.array.v2i64.zero
    nvvm_sust_b_1d_array_v2i8_clamp,           // llvm.nvvm.sust.b.1d.array.v2i8.clamp
    nvvm_sust_b_1d_array_v2i8_trap,            // llvm.nvvm.sust.b.1d.array.v2i8.trap
    nvvm_sust_b_1d_array_v2i8_zero,            // llvm.nvvm.sust.b.1d.array.v2i8.zero
    nvvm_sust_b_1d_array_v4i16_clamp,          // llvm.nvvm.sust.b.1d.array.v4i16.clamp
    nvvm_sust_b_1d_array_v4i16_trap,           // llvm.nvvm.sust.b.1d.array.v4i16.trap
    nvvm_sust_b_1d_array_v4i16_zero,           // llvm.nvvm.sust.b.1d.array.v4i16.zero
    nvvm_sust_b_1d_array_v4i32_clamp,          // llvm.nvvm.sust.b.1d.array.v4i32.clamp
    nvvm_sust_b_1d_array_v4i32_trap,           // llvm.nvvm.sust.b.1d.array.v4i32.trap
    nvvm_sust_b_1d_array_v4i32_zero,           // llvm.nvvm.sust.b.1d.array.v4i32.zero
    nvvm_sust_b_1d_array_v4i8_clamp,           // llvm.nvvm.sust.b.1d.array.v4i8.clamp
    nvvm_sust_b_1d_array_v4i8_trap,            // llvm.nvvm.sust.b.1d.array.v4i8.trap
    nvvm_sust_b_1d_array_v4i8_zero,            // llvm.nvvm.sust.b.1d.array.v4i8.zero
    nvvm_sust_b_1d_i16_clamp,                  // llvm.nvvm.sust.b.1d.i16.clamp
    nvvm_sust_b_1d_i16_trap,                   // llvm.nvvm.sust.b.1d.i16.trap
    nvvm_sust_b_1d_i16_zero,                   // llvm.nvvm.sust.b.1d.i16.zero
    nvvm_sust_b_1d_i32_clamp,                  // llvm.nvvm.sust.b.1d.i32.clamp
    nvvm_sust_b_1d_i32_trap,                   // llvm.nvvm.sust.b.1d.i32.trap
    nvvm_sust_b_1d_i32_zero,                   // llvm.nvvm.sust.b.1d.i32.zero
    nvvm_sust_b_1d_i64_clamp,                  // llvm.nvvm.sust.b.1d.i64.clamp
    nvvm_sust_b_1d_i64_trap,                   // llvm.nvvm.sust.b.1d.i64.trap
    nvvm_sust_b_1d_i64_zero,                   // llvm.nvvm.sust.b.1d.i64.zero
    nvvm_sust_b_1d_i8_clamp,                   // llvm.nvvm.sust.b.1d.i8.clamp
    nvvm_sust_b_1d_i8_trap,                    // llvm.nvvm.sust.b.1d.i8.trap
    nvvm_sust_b_1d_i8_zero,                    // llvm.nvvm.sust.b.1d.i8.zero
    nvvm_sust_b_1d_v2i16_clamp,                // llvm.nvvm.sust.b.1d.v2i16.clamp
    nvvm_sust_b_1d_v2i16_trap,                 // llvm.nvvm.sust.b.1d.v2i16.trap
    nvvm_sust_b_1d_v2i16_zero,                 // llvm.nvvm.sust.b.1d.v2i16.zero
    nvvm_sust_b_1d_v2i32_clamp,                // llvm.nvvm.sust.b.1d.v2i32.clamp
    nvvm_sust_b_1d_v2i32_trap,                 // llvm.nvvm.sust.b.1d.v2i32.trap
    nvvm_sust_b_1d_v2i32_zero,                 // llvm.nvvm.sust.b.1d.v2i32.zero
    nvvm_sust_b_1d_v2i64_clamp,                // llvm.nvvm.sust.b.1d.v2i64.clamp
    nvvm_sust_b_1d_v2i64_trap,                 // llvm.nvvm.sust.b.1d.v2i64.trap
    nvvm_sust_b_1d_v2i64_zero,                 // llvm.nvvm.sust.b.1d.v2i64.zero
    nvvm_sust_b_1d_v2i8_clamp,                 // llvm.nvvm.sust.b.1d.v2i8.clamp
    nvvm_sust_b_1d_v2i8_trap,                  // llvm.nvvm.sust.b.1d.v2i8.trap
    nvvm_sust_b_1d_v2i8_zero,                  // llvm.nvvm.sust.b.1d.v2i8.zero
    nvvm_sust_b_1d_v4i16_clamp,                // llvm.nvvm.sust.b.1d.v4i16.clamp
    nvvm_sust_b_1d_v4i16_trap,                 // llvm.nvvm.sust.b.1d.v4i16.trap
    nvvm_sust_b_1d_v4i16_zero,                 // llvm.nvvm.sust.b.1d.v4i16.zero
    nvvm_sust_b_1d_v4i32_clamp,                // llvm.nvvm.sust.b.1d.v4i32.clamp
    nvvm_sust_b_1d_v4i32_trap,                 // llvm.nvvm.sust.b.1d.v4i32.trap
    nvvm_sust_b_1d_v4i32_zero,                 // llvm.nvvm.sust.b.1d.v4i32.zero
    nvvm_sust_b_1d_v4i8_clamp,                 // llvm.nvvm.sust.b.1d.v4i8.clamp
    nvvm_sust_b_1d_v4i8_trap,                  // llvm.nvvm.sust.b.1d.v4i8.trap
    nvvm_sust_b_1d_v4i8_zero,                  // llvm.nvvm.sust.b.1d.v4i8.zero
    nvvm_sust_b_2d_array_i16_clamp,            // llvm.nvvm.sust.b.2d.array.i16.clamp
    nvvm_sust_b_2d_array_i16_trap,             // llvm.nvvm.sust.b.2d.array.i16.trap
    nvvm_sust_b_2d_array_i16_zero,             // llvm.nvvm.sust.b.2d.array.i16.zero
    nvvm_sust_b_2d_array_i32_clamp,            // llvm.nvvm.sust.b.2d.array.i32.clamp
    nvvm_sust_b_2d_array_i32_trap,             // llvm.nvvm.sust.b.2d.array.i32.trap
    nvvm_sust_b_2d_array_i32_zero,             // llvm.nvvm.sust.b.2d.array.i32.zero
    nvvm_sust_b_2d_array_i64_clamp,            // llvm.nvvm.sust.b.2d.array.i64.clamp
    nvvm_sust_b_2d_array_i64_trap,             // llvm.nvvm.sust.b.2d.array.i64.trap
    nvvm_sust_b_2d_array_i64_zero,             // llvm.nvvm.sust.b.2d.array.i64.zero
    nvvm_sust_b_2d_array_i8_clamp,             // llvm.nvvm.sust.b.2d.array.i8.clamp
    nvvm_sust_b_2d_array_i8_trap,              // llvm.nvvm.sust.b.2d.array.i8.trap
    nvvm_sust_b_2d_array_i8_zero,              // llvm.nvvm.sust.b.2d.array.i8.zero
    nvvm_sust_b_2d_array_v2i16_clamp,          // llvm.nvvm.sust.b.2d.array.v2i16.clamp
    nvvm_sust_b_2d_array_v2i16_trap,           // llvm.nvvm.sust.b.2d.array.v2i16.trap
    nvvm_sust_b_2d_array_v2i16_zero,           // llvm.nvvm.sust.b.2d.array.v2i16.zero
    nvvm_sust_b_2d_array_v2i32_clamp,          // llvm.nvvm.sust.b.2d.array.v2i32.clamp
    nvvm_sust_b_2d_array_v2i32_trap,           // llvm.nvvm.sust.b.2d.array.v2i32.trap
    nvvm_sust_b_2d_array_v2i32_zero,           // llvm.nvvm.sust.b.2d.array.v2i32.zero
    nvvm_sust_b_2d_array_v2i64_clamp,          // llvm.nvvm.sust.b.2d.array.v2i64.clamp
    nvvm_sust_b_2d_array_v2i64_trap,           // llvm.nvvm.sust.b.2d.array.v2i64.trap
    nvvm_sust_b_2d_array_v2i64_zero,           // llvm.nvvm.sust.b.2d.array.v2i64.zero
    nvvm_sust_b_2d_array_v2i8_clamp,           // llvm.nvvm.sust.b.2d.array.v2i8.clamp
    nvvm_sust_b_2d_array_v2i8_trap,            // llvm.nvvm.sust.b.2d.array.v2i8.trap
    nvvm_sust_b_2d_array_v2i8_zero,            // llvm.nvvm.sust.b.2d.array.v2i8.zero
    nvvm_sust_b_2d_array_v4i16_clamp,          // llvm.nvvm.sust.b.2d.array.v4i16.clamp
    nvvm_sust_b_2d_array_v4i16_trap,           // llvm.nvvm.sust.b.2d.array.v4i16.trap
    nvvm_sust_b_2d_array_v4i16_zero,           // llvm.nvvm.sust.b.2d.array.v4i16.zero
    nvvm_sust_b_2d_array_v4i32_clamp,          // llvm.nvvm.sust.b.2d.array.v4i32.clamp
    nvvm_sust_b_2d_array_v4i32_trap,           // llvm.nvvm.sust.b.2d.array.v4i32.trap
    nvvm_sust_b_2d_array_v4i32_zero,           // llvm.nvvm.sust.b.2d.array.v4i32.zero
    nvvm_sust_b_2d_array_v4i8_clamp,           // llvm.nvvm.sust.b.2d.array.v4i8.clamp
    nvvm_sust_b_2d_array_v4i8_trap,            // llvm.nvvm.sust.b.2d.array.v4i8.trap
    nvvm_sust_b_2d_array_v4i8_zero,            // llvm.nvvm.sust.b.2d.array.v4i8.zero
    nvvm_sust_b_2d_i16_clamp,                  // llvm.nvvm.sust.b.2d.i16.clamp
    nvvm_sust_b_2d_i16_trap,                   // llvm.nvvm.sust.b.2d.i16.trap
    nvvm_sust_b_2d_i16_zero,                   // llvm.nvvm.sust.b.2d.i16.zero
    nvvm_sust_b_2d_i32_clamp,                  // llvm.nvvm.sust.b.2d.i32.clamp
    nvvm_sust_b_2d_i32_trap,                   // llvm.nvvm.sust.b.2d.i32.trap
    nvvm_sust_b_2d_i32_zero,                   // llvm.nvvm.sust.b.2d.i32.zero
    nvvm_sust_b_2d_i64_clamp,                  // llvm.nvvm.sust.b.2d.i64.clamp
    nvvm_sust_b_2d_i64_trap,                   // llvm.nvvm.sust.b.2d.i64.trap
    nvvm_sust_b_2d_i64_zero,                   // llvm.nvvm.sust.b.2d.i64.zero
    nvvm_sust_b_2d_i8_clamp,                   // llvm.nvvm.sust.b.2d.i8.clamp
    nvvm_sust_b_2d_i8_trap,                    // llvm.nvvm.sust.b.2d.i8.trap
    nvvm_sust_b_2d_i8_zero,                    // llvm.nvvm.sust.b.2d.i8.zero
    nvvm_sust_b_2d_v2i16_clamp,                // llvm.nvvm.sust.b.2d.v2i16.clamp
    nvvm_sust_b_2d_v2i16_trap,                 // llvm.nvvm.sust.b.2d.v2i16.trap
    nvvm_sust_b_2d_v2i16_zero,                 // llvm.nvvm.sust.b.2d.v2i16.zero
    nvvm_sust_b_2d_v2i32_clamp,                // llvm.nvvm.sust.b.2d.v2i32.clamp
    nvvm_sust_b_2d_v2i32_trap,                 // llvm.nvvm.sust.b.2d.v2i32.trap
    nvvm_sust_b_2d_v2i32_zero,                 // llvm.nvvm.sust.b.2d.v2i32.zero
    nvvm_sust_b_2d_v2i64_clamp,                // llvm.nvvm.sust.b.2d.v2i64.clamp
    nvvm_sust_b_2d_v2i64_trap,                 // llvm.nvvm.sust.b.2d.v2i64.trap
    nvvm_sust_b_2d_v2i64_zero,                 // llvm.nvvm.sust.b.2d.v2i64.zero
    nvvm_sust_b_2d_v2i8_clamp,                 // llvm.nvvm.sust.b.2d.v2i8.clamp
    nvvm_sust_b_2d_v2i8_trap,                  // llvm.nvvm.sust.b.2d.v2i8.trap
    nvvm_sust_b_2d_v2i8_zero,                  // llvm.nvvm.sust.b.2d.v2i8.zero
    nvvm_sust_b_2d_v4i16_clamp,                // llvm.nvvm.sust.b.2d.v4i16.clamp
    nvvm_sust_b_2d_v4i16_trap,                 // llvm.nvvm.sust.b.2d.v4i16.trap
    nvvm_sust_b_2d_v4i16_zero,                 // llvm.nvvm.sust.b.2d.v4i16.zero
    nvvm_sust_b_2d_v4i32_clamp,                // llvm.nvvm.sust.b.2d.v4i32.clamp
    nvvm_sust_b_2d_v4i32_trap,                 // llvm.nvvm.sust.b.2d.v4i32.trap
    nvvm_sust_b_2d_v4i32_zero,                 // llvm.nvvm.sust.b.2d.v4i32.zero
    nvvm_sust_b_2d_v4i8_clamp,                 // llvm.nvvm.sust.b.2d.v4i8.clamp
    nvvm_sust_b_2d_v4i8_trap,                  // llvm.nvvm.sust.b.2d.v4i8.trap
    nvvm_sust_b_2d_v4i8_zero,                  // llvm.nvvm.sust.b.2d.v4i8.zero
    nvvm_sust_b_3d_i16_clamp,                  // llvm.nvvm.sust.b.3d.i16.clamp
    nvvm_sust_b_3d_i16_trap,                   // llvm.nvvm.sust.b.3d.i16.trap
    nvvm_sust_b_3d_i16_zero,                   // llvm.nvvm.sust.b.3d.i16.zero
    nvvm_sust_b_3d_i32_clamp,                  // llvm.nvvm.sust.b.3d.i32.clamp
    nvvm_sust_b_3d_i32_trap,                   // llvm.nvvm.sust.b.3d.i32.trap
    nvvm_sust_b_3d_i32_zero,                   // llvm.nvvm.sust.b.3d.i32.zero
    nvvm_sust_b_3d_i64_clamp,                  // llvm.nvvm.sust.b.3d.i64.clamp
    nvvm_sust_b_3d_i64_trap,                   // llvm.nvvm.sust.b.3d.i64.trap
    nvvm_sust_b_3d_i64_zero,                   // llvm.nvvm.sust.b.3d.i64.zero
    nvvm_sust_b_3d_i8_clamp,                   // llvm.nvvm.sust.b.3d.i8.clamp
    nvvm_sust_b_3d_i8_trap,                    // llvm.nvvm.sust.b.3d.i8.trap
    nvvm_sust_b_3d_i8_zero,                    // llvm.nvvm.sust.b.3d.i8.zero
    nvvm_sust_b_3d_v2i16_clamp,                // llvm.nvvm.sust.b.3d.v2i16.clamp
    nvvm_sust_b_3d_v2i16_trap,                 // llvm.nvvm.sust.b.3d.v2i16.trap
    nvvm_sust_b_3d_v2i16_zero,                 // llvm.nvvm.sust.b.3d.v2i16.zero
    nvvm_sust_b_3d_v2i32_clamp,                // llvm.nvvm.sust.b.3d.v2i32.clamp
    nvvm_sust_b_3d_v2i32_trap,                 // llvm.nvvm.sust.b.3d.v2i32.trap
    nvvm_sust_b_3d_v2i32_zero,                 // llvm.nvvm.sust.b.3d.v2i32.zero
    nvvm_sust_b_3d_v2i64_clamp,                // llvm.nvvm.sust.b.3d.v2i64.clamp
    nvvm_sust_b_3d_v2i64_trap,                 // llvm.nvvm.sust.b.3d.v2i64.trap
    nvvm_sust_b_3d_v2i64_zero,                 // llvm.nvvm.sust.b.3d.v2i64.zero
    nvvm_sust_b_3d_v2i8_clamp,                 // llvm.nvvm.sust.b.3d.v2i8.clamp
    nvvm_sust_b_3d_v2i8_trap,                  // llvm.nvvm.sust.b.3d.v2i8.trap
    nvvm_sust_b_3d_v2i8_zero,                  // llvm.nvvm.sust.b.3d.v2i8.zero
    nvvm_sust_b_3d_v4i16_clamp,                // llvm.nvvm.sust.b.3d.v4i16.clamp
    nvvm_sust_b_3d_v4i16_trap,                 // llvm.nvvm.sust.b.3d.v4i16.trap
    nvvm_sust_b_3d_v4i16_zero,                 // llvm.nvvm.sust.b.3d.v4i16.zero
    nvvm_sust_b_3d_v4i32_clamp,                // llvm.nvvm.sust.b.3d.v4i32.clamp
    nvvm_sust_b_3d_v4i32_trap,                 // llvm.nvvm.sust.b.3d.v4i32.trap
    nvvm_sust_b_3d_v4i32_zero,                 // llvm.nvvm.sust.b.3d.v4i32.zero
    nvvm_sust_b_3d_v4i8_clamp,                 // llvm.nvvm.sust.b.3d.v4i8.clamp
    nvvm_sust_b_3d_v4i8_trap,                  // llvm.nvvm.sust.b.3d.v4i8.trap
    nvvm_sust_b_3d_v4i8_zero,                  // llvm.nvvm.sust.b.3d.v4i8.zero
    nvvm_sust_p_1d_array_i16_trap,             // llvm.nvvm.sust.p.1d.array.i16.trap
    nvvm_sust_p_1d_array_i32_trap,             // llvm.nvvm.sust.p.1d.array.i32.trap
    nvvm_sust_p_1d_array_i8_trap,              // llvm.nvvm.sust.p.1d.array.i8.trap
    nvvm_sust_p_1d_array_v2i16_trap,           // llvm.nvvm.sust.p.1d.array.v2i16.trap
    nvvm_sust_p_1d_array_v2i32_trap,           // llvm.nvvm.sust.p.1d.array.v2i32.trap
    nvvm_sust_p_1d_array_v2i8_trap,            // llvm.nvvm.sust.p.1d.array.v2i8.trap
    nvvm_sust_p_1d_array_v4i16_trap,           // llvm.nvvm.sust.p.1d.array.v4i16.trap
    nvvm_sust_p_1d_array_v4i32_trap,           // llvm.nvvm.sust.p.1d.array.v4i32.trap
    nvvm_sust_p_1d_array_v4i8_trap,            // llvm.nvvm.sust.p.1d.array.v4i8.trap
    nvvm_sust_p_1d_i16_trap,                   // llvm.nvvm.sust.p.1d.i16.trap
    nvvm_sust_p_1d_i32_trap,                   // llvm.nvvm.sust.p.1d.i32.trap
    nvvm_sust_p_1d_i8_trap,                    // llvm.nvvm.sust.p.1d.i8.trap
    nvvm_sust_p_1d_v2i16_trap,                 // llvm.nvvm.sust.p.1d.v2i16.trap
    nvvm_sust_p_1d_v2i32_trap,                 // llvm.nvvm.sust.p.1d.v2i32.trap
    nvvm_sust_p_1d_v2i8_trap,                  // llvm.nvvm.sust.p.1d.v2i8.trap
    nvvm_sust_p_1d_v4i16_trap,                 // llvm.nvvm.sust.p.1d.v4i16.trap
    nvvm_sust_p_1d_v4i32_trap,                 // llvm.nvvm.sust.p.1d.v4i32.trap
    nvvm_sust_p_1d_v4i8_trap,                  // llvm.nvvm.sust.p.1d.v4i8.trap
    nvvm_sust_p_2d_array_i16_trap,             // llvm.nvvm.sust.p.2d.array.i16.trap
    nvvm_sust_p_2d_array_i32_trap,             // llvm.nvvm.sust.p.2d.array.i32.trap
    nvvm_sust_p_2d_array_i8_trap,              // llvm.nvvm.sust.p.2d.array.i8.trap
    nvvm_sust_p_2d_array_v2i16_trap,           // llvm.nvvm.sust.p.2d.array.v2i16.trap
    nvvm_sust_p_2d_array_v2i32_trap,           // llvm.nvvm.sust.p.2d.array.v2i32.trap
    nvvm_sust_p_2d_array_v2i8_trap,            // llvm.nvvm.sust.p.2d.array.v2i8.trap
    nvvm_sust_p_2d_array_v4i16_trap,           // llvm.nvvm.sust.p.2d.array.v4i16.trap
    nvvm_sust_p_2d_array_v4i32_trap,           // llvm.nvvm.sust.p.2d.array.v4i32.trap
    nvvm_sust_p_2d_array_v4i8_trap,            // llvm.nvvm.sust.p.2d.array.v4i8.trap
    nvvm_sust_p_2d_i16_trap,                   // llvm.nvvm.sust.p.2d.i16.trap
    nvvm_sust_p_2d_i32_trap,                   // llvm.nvvm.sust.p.2d.i32.trap
    nvvm_sust_p_2d_i8_trap,                    // llvm.nvvm.sust.p.2d.i8.trap
    nvvm_sust_p_2d_v2i16_trap,                 // llvm.nvvm.sust.p.2d.v2i16.trap
    nvvm_sust_p_2d_v2i32_trap,                 // llvm.nvvm.sust.p.2d.v2i32.trap
    nvvm_sust_p_2d_v2i8_trap,                  // llvm.nvvm.sust.p.2d.v2i8.trap
    nvvm_sust_p_2d_v4i16_trap,                 // llvm.nvvm.sust.p.2d.v4i16.trap
    nvvm_sust_p_2d_v4i32_trap,                 // llvm.nvvm.sust.p.2d.v4i32.trap
    nvvm_sust_p_2d_v4i8_trap,                  // llvm.nvvm.sust.p.2d.v4i8.trap
    nvvm_sust_p_3d_i16_trap,                   // llvm.nvvm.sust.p.3d.i16.trap
    nvvm_sust_p_3d_i32_trap,                   // llvm.nvvm.sust.p.3d.i32.trap
    nvvm_sust_p_3d_i8_trap,                    // llvm.nvvm.sust.p.3d.i8.trap
    nvvm_sust_p_3d_v2i16_trap,                 // llvm.nvvm.sust.p.3d.v2i16.trap
    nvvm_sust_p_3d_v2i32_trap,                 // llvm.nvvm.sust.p.3d.v2i32.trap
    nvvm_sust_p_3d_v2i8_trap,                  // llvm.nvvm.sust.p.3d.v2i8.trap
    nvvm_sust_p_3d_v4i16_trap,                 // llvm.nvvm.sust.p.3d.v4i16.trap
    nvvm_sust_p_3d_v4i32_trap,                 // llvm.nvvm.sust.p.3d.v4i32.trap
    nvvm_sust_p_3d_v4i8_trap,                  // llvm.nvvm.sust.p.3d.v4i8.trap
    nvvm_swap_lo_hi_b64,                       // llvm.nvvm.swap.lo.hi.b64
    nvvm_tex_1d_array_grad_v4f32_f32,          // llvm.nvvm.tex.1d.array.grad.v4f32.f32
    nvvm_tex_1d_array_grad_v4s32_f32,          // llvm.nvvm.tex.1d.array.grad.v4s32.f32
    nvvm_tex_1d_array_grad_v4u32_f32,          // llvm.nvvm.tex.1d.array.grad.v4u32.f32
    nvvm_tex_1d_array_level_v4f32_f32,         // llvm.nvvm.tex.1d.array.level.v4f32.f32
    nvvm_tex_1d_array_level_v4s32_f32,         // llvm.nvvm.tex.1d.array.level.v4s32.f32
    nvvm_tex_1d_array_level_v4u32_f32,         // llvm.nvvm.tex.1d.array.level.v4u32.f32
    nvvm_tex_1d_array_v4f32_f32,               // llvm.nvvm.tex.1d.array.v4f32.f32
    nvvm_tex_1d_array_v4f32_s32,               // llvm.nvvm.tex.1d.array.v4f32.s32
    nvvm_tex_1d_array_v4s32_f32,               // llvm.nvvm.tex.1d.array.v4s32.f32
    nvvm_tex_1d_array_v4s32_s32,               // llvm.nvvm.tex.1d.array.v4s32.s32
    nvvm_tex_1d_array_v4u32_f32,               // llvm.nvvm.tex.1d.array.v4u32.f32
    nvvm_tex_1d_array_v4u32_s32,               // llvm.nvvm.tex.1d.array.v4u32.s32
    nvvm_tex_1d_grad_v4f32_f32,                // llvm.nvvm.tex.1d.grad.v4f32.f32
    nvvm_tex_1d_grad_v4s32_f32,                // llvm.nvvm.tex.1d.grad.v4s32.f32
    nvvm_tex_1d_grad_v4u32_f32,                // llvm.nvvm.tex.1d.grad.v4u32.f32
    nvvm_tex_1d_level_v4f32_f32,               // llvm.nvvm.tex.1d.level.v4f32.f32
    nvvm_tex_1d_level_v4s32_f32,               // llvm.nvvm.tex.1d.level.v4s32.f32
    nvvm_tex_1d_level_v4u32_f32,               // llvm.nvvm.tex.1d.level.v4u32.f32
    nvvm_tex_1d_v4f32_f32,                     // llvm.nvvm.tex.1d.v4f32.f32
    nvvm_tex_1d_v4f32_s32,                     // llvm.nvvm.tex.1d.v4f32.s32
    nvvm_tex_1d_v4s32_f32,                     // llvm.nvvm.tex.1d.v4s32.f32
    nvvm_tex_1d_v4s32_s32,                     // llvm.nvvm.tex.1d.v4s32.s32
    nvvm_tex_1d_v4u32_f32,                     // llvm.nvvm.tex.1d.v4u32.f32
    nvvm_tex_1d_v4u32_s32,                     // llvm.nvvm.tex.1d.v4u32.s32
    nvvm_tex_2d_array_grad_v4f32_f32,          // llvm.nvvm.tex.2d.array.grad.v4f32.f32
    nvvm_tex_2d_array_grad_v4s32_f32,          // llvm.nvvm.tex.2d.array.grad.v4s32.f32
    nvvm_tex_2d_array_grad_v4u32_f32,          // llvm.nvvm.tex.2d.array.grad.v4u32.f32
    nvvm_tex_2d_array_level_v4f32_f32,         // llvm.nvvm.tex.2d.array.level.v4f32.f32
    nvvm_tex_2d_array_level_v4s32_f32,         // llvm.nvvm.tex.2d.array.level.v4s32.f32
    nvvm_tex_2d_array_level_v4u32_f32,         // llvm.nvvm.tex.2d.array.level.v4u32.f32
    nvvm_tex_2d_array_v4f32_f32,               // llvm.nvvm.tex.2d.array.v4f32.f32
    nvvm_tex_2d_array_v4f32_s32,               // llvm.nvvm.tex.2d.array.v4f32.s32
    nvvm_tex_2d_array_v4s32_f32,               // llvm.nvvm.tex.2d.array.v4s32.f32
    nvvm_tex_2d_array_v4s32_s32,               // llvm.nvvm.tex.2d.array.v4s32.s32
    nvvm_tex_2d_array_v4u32_f32,               // llvm.nvvm.tex.2d.array.v4u32.f32
    nvvm_tex_2d_array_v4u32_s32,               // llvm.nvvm.tex.2d.array.v4u32.s32
    nvvm_tex_2d_grad_v4f32_f32,                // llvm.nvvm.tex.2d.grad.v4f32.f32
    nvvm_tex_2d_grad_v4s32_f32,                // llvm.nvvm.tex.2d.grad.v4s32.f32
    nvvm_tex_2d_grad_v4u32_f32,                // llvm.nvvm.tex.2d.grad.v4u32.f32
    nvvm_tex_2d_level_v4f32_f32,               // llvm.nvvm.tex.2d.level.v4f32.f32
    nvvm_tex_2d_level_v4s32_f32,               // llvm.nvvm.tex.2d.level.v4s32.f32
    nvvm_tex_2d_level_v4u32_f32,               // llvm.nvvm.tex.2d.level.v4u32.f32
    nvvm_tex_2d_v4f32_f32,                     // llvm.nvvm.tex.2d.v4f32.f32
    nvvm_tex_2d_v4f32_s32,                     // llvm.nvvm.tex.2d.v4f32.s32
    nvvm_tex_2d_v4s32_f32,                     // llvm.nvvm.tex.2d.v4s32.f32
    nvvm_tex_2d_v4s32_s32,                     // llvm.nvvm.tex.2d.v4s32.s32
    nvvm_tex_2d_v4u32_f32,                     // llvm.nvvm.tex.2d.v4u32.f32
    nvvm_tex_2d_v4u32_s32,                     // llvm.nvvm.tex.2d.v4u32.s32
    nvvm_tex_3d_grad_v4f32_f32,                // llvm.nvvm.tex.3d.grad.v4f32.f32
    nvvm_tex_3d_grad_v4s32_f32,                // llvm.nvvm.tex.3d.grad.v4s32.f32
    nvvm_tex_3d_grad_v4u32_f32,                // llvm.nvvm.tex.3d.grad.v4u32.f32
    nvvm_tex_3d_level_v4f32_f32,               // llvm.nvvm.tex.3d.level.v4f32.f32
    nvvm_tex_3d_level_v4s32_f32,               // llvm.nvvm.tex.3d.level.v4s32.f32
    nvvm_tex_3d_level_v4u32_f32,               // llvm.nvvm.tex.3d.level.v4u32.f32
    nvvm_tex_3d_v4f32_f32,                     // llvm.nvvm.tex.3d.v4f32.f32
    nvvm_tex_3d_v4f32_s32,                     // llvm.nvvm.tex.3d.v4f32.s32
    nvvm_tex_3d_v4s32_f32,                     // llvm.nvvm.tex.3d.v4s32.f32
    nvvm_tex_3d_v4s32_s32,                     // llvm.nvvm.tex.3d.v4s32.s32
    nvvm_tex_3d_v4u32_f32,                     // llvm.nvvm.tex.3d.v4u32.f32
    nvvm_tex_3d_v4u32_s32,                     // llvm.nvvm.tex.3d.v4u32.s32
    nvvm_tex_cube_array_level_v4f32_f32,       // llvm.nvvm.tex.cube.array.level.v4f32.f32
    nvvm_tex_cube_array_level_v4s32_f32,       // llvm.nvvm.tex.cube.array.level.v4s32.f32
    nvvm_tex_cube_array_level_v4u32_f32,       // llvm.nvvm.tex.cube.array.level.v4u32.f32
    nvvm_tex_cube_array_v4f32_f32,             // llvm.nvvm.tex.cube.array.v4f32.f32
    nvvm_tex_cube_array_v4s32_f32,             // llvm.nvvm.tex.cube.array.v4s32.f32
    nvvm_tex_cube_array_v4u32_f32,             // llvm.nvvm.tex.cube.array.v4u32.f32
    nvvm_tex_cube_level_v4f32_f32,             // llvm.nvvm.tex.cube.level.v4f32.f32
    nvvm_tex_cube_level_v4s32_f32,             // llvm.nvvm.tex.cube.level.v4s32.f32
    nvvm_tex_cube_level_v4u32_f32,             // llvm.nvvm.tex.cube.level.v4u32.f32
    nvvm_tex_cube_v4f32_f32,                   // llvm.nvvm.tex.cube.v4f32.f32
    nvvm_tex_cube_v4s32_f32,                   // llvm.nvvm.tex.cube.v4s32.f32
    nvvm_tex_cube_v4u32_f32,                   // llvm.nvvm.tex.cube.v4u32.f32
    nvvm_tex_unified_1d_array_grad_v4f32_f32,  // llvm.nvvm.tex.unified.1d.array.grad.v4f32.f32
    nvvm_tex_unified_1d_array_grad_v4s32_f32,  // llvm.nvvm.tex.unified.1d.array.grad.v4s32.f32
    nvvm_tex_unified_1d_array_grad_v4u32_f32,  // llvm.nvvm.tex.unified.1d.array.grad.v4u32.f32
    nvvm_tex_unified_1d_array_level_v4f32_f32,  // llvm.nvvm.tex.unified.1d.array.level.v4f32.f32
    nvvm_tex_unified_1d_array_level_v4s32_f32,  // llvm.nvvm.tex.unified.1d.array.level.v4s32.f32
    nvvm_tex_unified_1d_array_level_v4u32_f32,  // llvm.nvvm.tex.unified.1d.array.level.v4u32.f32
    nvvm_tex_unified_1d_array_v4f32_f32,       // llvm.nvvm.tex.unified.1d.array.v4f32.f32
    nvvm_tex_unified_1d_array_v4f32_s32,       // llvm.nvvm.tex.unified.1d.array.v4f32.s32
    nvvm_tex_unified_1d_array_v4s32_f32,       // llvm.nvvm.tex.unified.1d.array.v4s32.f32
    nvvm_tex_unified_1d_array_v4s32_s32,       // llvm.nvvm.tex.unified.1d.array.v4s32.s32
    nvvm_tex_unified_1d_array_v4u32_f32,       // llvm.nvvm.tex.unified.1d.array.v4u32.f32
    nvvm_tex_unified_1d_array_v4u32_s32,       // llvm.nvvm.tex.unified.1d.array.v4u32.s32
    nvvm_tex_unified_1d_grad_v4f32_f32,        // llvm.nvvm.tex.unified.1d.grad.v4f32.f32
    nvvm_tex_unified_1d_grad_v4s32_f32,        // llvm.nvvm.tex.unified.1d.grad.v4s32.f32
    nvvm_tex_unified_1d_grad_v4u32_f32,        // llvm.nvvm.tex.unified.1d.grad.v4u32.f32
    nvvm_tex_unified_1d_level_v4f32_f32,       // llvm.nvvm.tex.unified.1d.level.v4f32.f32
    nvvm_tex_unified_1d_level_v4s32_f32,       // llvm.nvvm.tex.unified.1d.level.v4s32.f32
    nvvm_tex_unified_1d_level_v4u32_f32,       // llvm.nvvm.tex.unified.1d.level.v4u32.f32
    nvvm_tex_unified_1d_v4f32_f32,             // llvm.nvvm.tex.unified.1d.v4f32.f32
    nvvm_tex_unified_1d_v4f32_s32,             // llvm.nvvm.tex.unified.1d.v4f32.s32
    nvvm_tex_unified_1d_v4s32_f32,             // llvm.nvvm.tex.unified.1d.v4s32.f32
    nvvm_tex_unified_1d_v4s32_s32,             // llvm.nvvm.tex.unified.1d.v4s32.s32
    nvvm_tex_unified_1d_v4u32_f32,             // llvm.nvvm.tex.unified.1d.v4u32.f32
    nvvm_tex_unified_1d_v4u32_s32,             // llvm.nvvm.tex.unified.1d.v4u32.s32
    nvvm_tex_unified_2d_array_grad_v4f32_f32,  // llvm.nvvm.tex.unified.2d.array.grad.v4f32.f32
    nvvm_tex_unified_2d_array_grad_v4s32_f32,  // llvm.nvvm.tex.unified.2d.array.grad.v4s32.f32
    nvvm_tex_unified_2d_array_grad_v4u32_f32,  // llvm.nvvm.tex.unified.2d.array.grad.v4u32.f32
    nvvm_tex_unified_2d_array_level_v4f32_f32,  // llvm.nvvm.tex.unified.2d.array.level.v4f32.f32
    nvvm_tex_unified_2d_array_level_v4s32_f32,  // llvm.nvvm.tex.unified.2d.array.level.v4s32.f32
    nvvm_tex_unified_2d_array_level_v4u32_f32,  // llvm.nvvm.tex.unified.2d.array.level.v4u32.f32
    nvvm_tex_unified_2d_array_v4f32_f32,       // llvm.nvvm.tex.unified.2d.array.v4f32.f32
    nvvm_tex_unified_2d_array_v4f32_s32,       // llvm.nvvm.tex.unified.2d.array.v4f32.s32
    nvvm_tex_unified_2d_array_v4s32_f32,       // llvm.nvvm.tex.unified.2d.array.v4s32.f32
    nvvm_tex_unified_2d_array_v4s32_s32,       // llvm.nvvm.tex.unified.2d.array.v4s32.s32
    nvvm_tex_unified_2d_array_v4u32_f32,       // llvm.nvvm.tex.unified.2d.array.v4u32.f32
    nvvm_tex_unified_2d_array_v4u32_s32,       // llvm.nvvm.tex.unified.2d.array.v4u32.s32
    nvvm_tex_unified_2d_grad_v4f32_f32,        // llvm.nvvm.tex.unified.2d.grad.v4f32.f32
    nvvm_tex_unified_2d_grad_v4s32_f32,        // llvm.nvvm.tex.unified.2d.grad.v4s32.f32
    nvvm_tex_unified_2d_grad_v4u32_f32,        // llvm.nvvm.tex.unified.2d.grad.v4u32.f32
    nvvm_tex_unified_2d_level_v4f32_f32,       // llvm.nvvm.tex.unified.2d.level.v4f32.f32
    nvvm_tex_unified_2d_level_v4s32_f32,       // llvm.nvvm.tex.unified.2d.level.v4s32.f32
    nvvm_tex_unified_2d_level_v4u32_f32,       // llvm.nvvm.tex.unified.2d.level.v4u32.f32
    nvvm_tex_unified_2d_v4f32_f32,             // llvm.nvvm.tex.unified.2d.v4f32.f32
    nvvm_tex_unified_2d_v4f32_s32,             // llvm.nvvm.tex.unified.2d.v4f32.s32
    nvvm_tex_unified_2d_v4s32_f32,             // llvm.nvvm.tex.unified.2d.v4s32.f32
    nvvm_tex_unified_2d_v4s32_s32,             // llvm.nvvm.tex.unified.2d.v4s32.s32
    nvvm_tex_unified_2d_v4u32_f32,             // llvm.nvvm.tex.unified.2d.v4u32.f32
    nvvm_tex_unified_2d_v4u32_s32,             // llvm.nvvm.tex.unified.2d.v4u32.s32
    nvvm_tex_unified_3d_grad_v4f32_f32,        // llvm.nvvm.tex.unified.3d.grad.v4f32.f32
    nvvm_tex_unified_3d_grad_v4s32_f32,        // llvm.nvvm.tex.unified.3d.grad.v4s32.f32
    nvvm_tex_unified_3d_grad_v4u32_f32,        // llvm.nvvm.tex.unified.3d.grad.v4u32.f32
    nvvm_tex_unified_3d_level_v4f32_f32,       // llvm.nvvm.tex.unified.3d.level.v4f32.f32
    nvvm_tex_unified_3d_level_v4s32_f32,       // llvm.nvvm.tex.unified.3d.level.v4s32.f32
    nvvm_tex_unified_3d_level_v4u32_f32,       // llvm.nvvm.tex.unified.3d.level.v4u32.f32
    nvvm_tex_unified_3d_v4f32_f32,             // llvm.nvvm.tex.unified.3d.v4f32.f32
    nvvm_tex_unified_3d_v4f32_s32,             // llvm.nvvm.tex.unified.3d.v4f32.s32
    nvvm_tex_unified_3d_v4s32_f32,             // llvm.nvvm.tex.unified.3d.v4s32.f32
    nvvm_tex_unified_3d_v4s32_s32,             // llvm.nvvm.tex.unified.3d.v4s32.s32
    nvvm_tex_unified_3d_v4u32_f32,             // llvm.nvvm.tex.unified.3d.v4u32.f32
    nvvm_tex_unified_3d_v4u32_s32,             // llvm.nvvm.tex.unified.3d.v4u32.s32
    nvvm_tex_unified_cube_array_level_v4f32_f32,  // llvm.nvvm.tex.unified.cube.array.level.v4f32.f32
    nvvm_tex_unified_cube_array_level_v4s32_f32,  // llvm.nvvm.tex.unified.cube.array.level.v4s32.f32
    nvvm_tex_unified_cube_array_level_v4u32_f32,  // llvm.nvvm.tex.unified.cube.array.level.v4u32.f32
    nvvm_tex_unified_cube_array_v4f32_f32,     // llvm.nvvm.tex.unified.cube.array.v4f32.f32
    nvvm_tex_unified_cube_array_v4s32_f32,     // llvm.nvvm.tex.unified.cube.array.v4s32.f32
    nvvm_tex_unified_cube_array_v4u32_f32,     // llvm.nvvm.tex.unified.cube.array.v4u32.f32
    nvvm_tex_unified_cube_level_v4f32_f32,     // llvm.nvvm.tex.unified.cube.level.v4f32.f32
    nvvm_tex_unified_cube_level_v4s32_f32,     // llvm.nvvm.tex.unified.cube.level.v4s32.f32
    nvvm_tex_unified_cube_level_v4u32_f32,     // llvm.nvvm.tex.unified.cube.level.v4u32.f32
    nvvm_tex_unified_cube_v4f32_f32,           // llvm.nvvm.tex.unified.cube.v4f32.f32
    nvvm_tex_unified_cube_v4s32_f32,           // llvm.nvvm.tex.unified.cube.v4s32.f32
    nvvm_tex_unified_cube_v4u32_f32,           // llvm.nvvm.tex.unified.cube.v4u32.f32
    nvvm_texsurf_handle,                       // llvm.nvvm.texsurf.handle
    nvvm_texsurf_handle_internal,              // llvm.nvvm.texsurf.handle.internal
    nvvm_tld4_a_2d_v4f32_f32,                  // llvm.nvvm.tld4.a.2d.v4f32.f32
    nvvm_tld4_a_2d_v4s32_f32,                  // llvm.nvvm.tld4.a.2d.v4s32.f32
    nvvm_tld4_a_2d_v4u32_f32,                  // llvm.nvvm.tld4.a.2d.v4u32.f32
    nvvm_tld4_b_2d_v4f32_f32,                  // llvm.nvvm.tld4.b.2d.v4f32.f32
    nvvm_tld4_b_2d_v4s32_f32,                  // llvm.nvvm.tld4.b.2d.v4s32.f32
    nvvm_tld4_b_2d_v4u32_f32,                  // llvm.nvvm.tld4.b.2d.v4u32.f32
    nvvm_tld4_g_2d_v4f32_f32,                  // llvm.nvvm.tld4.g.2d.v4f32.f32
    nvvm_tld4_g_2d_v4s32_f32,                  // llvm.nvvm.tld4.g.2d.v4s32.f32
    nvvm_tld4_g_2d_v4u32_f32,                  // llvm.nvvm.tld4.g.2d.v4u32.f32
    nvvm_tld4_r_2d_v4f32_f32,                  // llvm.nvvm.tld4.r.2d.v4f32.f32
    nvvm_tld4_r_2d_v4s32_f32,                  // llvm.nvvm.tld4.r.2d.v4s32.f32
    nvvm_tld4_r_2d_v4u32_f32,                  // llvm.nvvm.tld4.r.2d.v4u32.f32
    nvvm_tld4_unified_a_2d_v4f32_f32,          // llvm.nvvm.tld4.unified.a.2d.v4f32.f32
    nvvm_tld4_unified_a_2d_v4s32_f32,          // llvm.nvvm.tld4.unified.a.2d.v4s32.f32
    nvvm_tld4_unified_a_2d_v4u32_f32,          // llvm.nvvm.tld4.unified.a.2d.v4u32.f32
    nvvm_tld4_unified_b_2d_v4f32_f32,          // llvm.nvvm.tld4.unified.b.2d.v4f32.f32
    nvvm_tld4_unified_b_2d_v4s32_f32,          // llvm.nvvm.tld4.unified.b.2d.v4s32.f32
    nvvm_tld4_unified_b_2d_v4u32_f32,          // llvm.nvvm.tld4.unified.b.2d.v4u32.f32
    nvvm_tld4_unified_g_2d_v4f32_f32,          // llvm.nvvm.tld4.unified.g.2d.v4f32.f32
    nvvm_tld4_unified_g_2d_v4s32_f32,          // llvm.nvvm.tld4.unified.g.2d.v4s32.f32
    nvvm_tld4_unified_g_2d_v4u32_f32,          // llvm.nvvm.tld4.unified.g.2d.v4u32.f32
    nvvm_tld4_unified_r_2d_v4f32_f32,          // llvm.nvvm.tld4.unified.r.2d.v4f32.f32
    nvvm_tld4_unified_r_2d_v4s32_f32,          // llvm.nvvm.tld4.unified.r.2d.v4s32.f32
    nvvm_tld4_unified_r_2d_v4u32_f32,          // llvm.nvvm.tld4.unified.r.2d.v4u32.f32
    nvvm_trunc_d,                              // llvm.nvvm.trunc.d
    nvvm_trunc_f,                              // llvm.nvvm.trunc.f
    nvvm_trunc_ftz_f,                          // llvm.nvvm.trunc.ftz.f
    nvvm_txq_array_size,                       // llvm.nvvm.txq.array.size
    nvvm_txq_channel_data_type,                // llvm.nvvm.txq.channel.data.type
    nvvm_txq_channel_order,                    // llvm.nvvm.txq.channel.order
    nvvm_txq_depth,                            // llvm.nvvm.txq.depth
    nvvm_txq_height,                           // llvm.nvvm.txq.height
    nvvm_txq_num_mipmap_levels,                // llvm.nvvm.txq.num.mipmap.levels
    nvvm_txq_num_samples,                      // llvm.nvvm.txq.num.samples
    nvvm_txq_width,                            // llvm.nvvm.txq.width
    nvvm_ui2d_rm,                              // llvm.nvvm.ui2d.rm
    nvvm_ui2d_rn,                              // llvm.nvvm.ui2d.rn
    nvvm_ui2d_rp,                              // llvm.nvvm.ui2d.rp
    nvvm_ui2d_rz,                              // llvm.nvvm.ui2d.rz
    nvvm_ui2f_rm,                              // llvm.nvvm.ui2f.rm
    nvvm_ui2f_rn,                              // llvm.nvvm.ui2f.rn
    nvvm_ui2f_rp,                              // llvm.nvvm.ui2f.rp
    nvvm_ui2f_rz,                              // llvm.nvvm.ui2f.rz
    nvvm_ull2d_rm,                             // llvm.nvvm.ull2d.rm
    nvvm_ull2d_rn,                             // llvm.nvvm.ull2d.rn
    nvvm_ull2d_rp,                             // llvm.nvvm.ull2d.rp
    nvvm_ull2d_rz,                             // llvm.nvvm.ull2d.rz
    nvvm_ull2f_rm,                             // llvm.nvvm.ull2f.rm
    nvvm_ull2f_rn,                             // llvm.nvvm.ull2f.rn
    nvvm_ull2f_rp,                             // llvm.nvvm.ull2f.rp
    nvvm_ull2f_rz,                             // llvm.nvvm.ull2f.rz
    objectsize,                                // llvm.objectsize
    pcmarker,                                  // llvm.pcmarker
    pow,                                       // llvm.pow
    powi,                                      // llvm.powi
    ppc_altivec_dss,                           // llvm.ppc.altivec.dss
    ppc_altivec_dssall,                        // llvm.ppc.altivec.dssall
    ppc_altivec_dst,                           // llvm.ppc.altivec.dst
    ppc_altivec_dstst,                         // llvm.ppc.altivec.dstst
    ppc_altivec_dststt,                        // llvm.ppc.altivec.dststt
    ppc_altivec_dstt,                          // llvm.ppc.altivec.dstt
    ppc_altivec_lvebx,                         // llvm.ppc.altivec.lvebx
    ppc_altivec_lvehx,                         // llvm.ppc.altivec.lvehx
    ppc_altivec_lvewx,                         // llvm.ppc.altivec.lvewx
    ppc_altivec_lvsl,                          // llvm.ppc.altivec.lvsl
    ppc_altivec_lvsr,                          // llvm.ppc.altivec.lvsr
    ppc_altivec_lvx,                           // llvm.ppc.altivec.lvx
    ppc_altivec_lvxl,                          // llvm.ppc.altivec.lvxl
    ppc_altivec_mfvscr,                        // llvm.ppc.altivec.mfvscr
    ppc_altivec_mtvscr,                        // llvm.ppc.altivec.mtvscr
    ppc_altivec_stvebx,                        // llvm.ppc.altivec.stvebx
    ppc_altivec_stvehx,                        // llvm.ppc.altivec.stvehx
    ppc_altivec_stvewx,                        // llvm.ppc.altivec.stvewx
    ppc_altivec_stvx,                          // llvm.ppc.altivec.stvx
    ppc_altivec_stvxl,                         // llvm.ppc.altivec.stvxl
    ppc_altivec_vaddcuw,                       // llvm.ppc.altivec.vaddcuw
    ppc_altivec_vaddsbs,                       // llvm.ppc.altivec.vaddsbs
    ppc_altivec_vaddshs,                       // llvm.ppc.altivec.vaddshs
    ppc_altivec_vaddsws,                       // llvm.ppc.altivec.vaddsws
    ppc_altivec_vaddubs,                       // llvm.ppc.altivec.vaddubs
    ppc_altivec_vadduhs,                       // llvm.ppc.altivec.vadduhs
    ppc_altivec_vadduws,                       // llvm.ppc.altivec.vadduws
    ppc_altivec_vavgsb,                        // llvm.ppc.altivec.vavgsb
    ppc_altivec_vavgsh,                        // llvm.ppc.altivec.vavgsh
    ppc_altivec_vavgsw,                        // llvm.ppc.altivec.vavgsw
    ppc_altivec_vavgub,                        // llvm.ppc.altivec.vavgub
    ppc_altivec_vavguh,                        // llvm.ppc.altivec.vavguh
    ppc_altivec_vavguw,                        // llvm.ppc.altivec.vavguw
    ppc_altivec_vcfsx,                         // llvm.ppc.altivec.vcfsx
    ppc_altivec_vcfux,                         // llvm.ppc.altivec.vcfux
    ppc_altivec_vcmpbfp,                       // llvm.ppc.altivec.vcmpbfp
    ppc_altivec_vcmpbfp_p,                     // llvm.ppc.altivec.vcmpbfp.p
    ppc_altivec_vcmpeqfp,                      // llvm.ppc.altivec.vcmpeqfp
    ppc_altivec_vcmpeqfp_p,                    // llvm.ppc.altivec.vcmpeqfp.p
    ppc_altivec_vcmpequb,                      // llvm.ppc.altivec.vcmpequb
    ppc_altivec_vcmpequb_p,                    // llvm.ppc.altivec.vcmpequb.p
    ppc_altivec_vcmpequh,                      // llvm.ppc.altivec.vcmpequh
    ppc_altivec_vcmpequh_p,                    // llvm.ppc.altivec.vcmpequh.p
    ppc_altivec_vcmpequw,                      // llvm.ppc.altivec.vcmpequw
    ppc_altivec_vcmpequw_p,                    // llvm.ppc.altivec.vcmpequw.p
    ppc_altivec_vcmpgefp,                      // llvm.ppc.altivec.vcmpgefp
    ppc_altivec_vcmpgefp_p,                    // llvm.ppc.altivec.vcmpgefp.p
    ppc_altivec_vcmpgtfp,                      // llvm.ppc.altivec.vcmpgtfp
    ppc_altivec_vcmpgtfp_p,                    // llvm.ppc.altivec.vcmpgtfp.p
    ppc_altivec_vcmpgtsb,                      // llvm.ppc.altivec.vcmpgtsb
    ppc_altivec_vcmpgtsb_p,                    // llvm.ppc.altivec.vcmpgtsb.p
    ppc_altivec_vcmpgtsh,                      // llvm.ppc.altivec.vcmpgtsh
    ppc_altivec_vcmpgtsh_p,                    // llvm.ppc.altivec.vcmpgtsh.p
    ppc_altivec_vcmpgtsw,                      // llvm.ppc.altivec.vcmpgtsw
    ppc_altivec_vcmpgtsw_p,                    // llvm.ppc.altivec.vcmpgtsw.p
    ppc_altivec_vcmpgtub,                      // llvm.ppc.altivec.vcmpgtub
    ppc_altivec_vcmpgtub_p,                    // llvm.ppc.altivec.vcmpgtub.p
    ppc_altivec_vcmpgtuh,                      // llvm.ppc.altivec.vcmpgtuh
    ppc_altivec_vcmpgtuh_p,                    // llvm.ppc.altivec.vcmpgtuh.p
    ppc_altivec_vcmpgtuw,                      // llvm.ppc.altivec.vcmpgtuw
    ppc_altivec_vcmpgtuw_p,                    // llvm.ppc.altivec.vcmpgtuw.p
    ppc_altivec_vctsxs,                        // llvm.ppc.altivec.vctsxs
    ppc_altivec_vctuxs,                        // llvm.ppc.altivec.vctuxs
    ppc_altivec_vexptefp,                      // llvm.ppc.altivec.vexptefp
    ppc_altivec_vlogefp,                       // llvm.ppc.altivec.vlogefp
    ppc_altivec_vmaddfp,                       // llvm.ppc.altivec.vmaddfp
    ppc_altivec_vmaxfp,                        // llvm.ppc.altivec.vmaxfp
    ppc_altivec_vmaxsb,                        // llvm.ppc.altivec.vmaxsb
    ppc_altivec_vmaxsh,                        // llvm.ppc.altivec.vmaxsh
    ppc_altivec_vmaxsw,                        // llvm.ppc.altivec.vmaxsw
    ppc_altivec_vmaxub,                        // llvm.ppc.altivec.vmaxub
    ppc_altivec_vmaxuh,                        // llvm.ppc.altivec.vmaxuh
    ppc_altivec_vmaxuw,                        // llvm.ppc.altivec.vmaxuw
    ppc_altivec_vmhaddshs,                     // llvm.ppc.altivec.vmhaddshs
    ppc_altivec_vmhraddshs,                    // llvm.ppc.altivec.vmhraddshs
    ppc_altivec_vminfp,                        // llvm.ppc.altivec.vminfp
    ppc_altivec_vminsb,                        // llvm.ppc.altivec.vminsb
    ppc_altivec_vminsh,                        // llvm.ppc.altivec.vminsh
    ppc_altivec_vminsw,                        // llvm.ppc.altivec.vminsw
    ppc_altivec_vminub,                        // llvm.ppc.altivec.vminub
    ppc_altivec_vminuh,                        // llvm.ppc.altivec.vminuh
    ppc_altivec_vminuw,                        // llvm.ppc.altivec.vminuw
    ppc_altivec_vmladduhm,                     // llvm.ppc.altivec.vmladduhm
    ppc_altivec_vmsummbm,                      // llvm.ppc.altivec.vmsummbm
    ppc_altivec_vmsumshm,                      // llvm.ppc.altivec.vmsumshm
    ppc_altivec_vmsumshs,                      // llvm.ppc.altivec.vmsumshs
    ppc_altivec_vmsumubm,                      // llvm.ppc.altivec.vmsumubm
    ppc_altivec_vmsumuhm,                      // llvm.ppc.altivec.vmsumuhm
    ppc_altivec_vmsumuhs,                      // llvm.ppc.altivec.vmsumuhs
    ppc_altivec_vmulesb,                       // llvm.ppc.altivec.vmulesb
    ppc_altivec_vmulesh,                       // llvm.ppc.altivec.vmulesh
    ppc_altivec_vmuleub,                       // llvm.ppc.altivec.vmuleub
    ppc_altivec_vmuleuh,                       // llvm.ppc.altivec.vmuleuh
    ppc_altivec_vmulosb,                       // llvm.ppc.altivec.vmulosb
    ppc_altivec_vmulosh,                       // llvm.ppc.altivec.vmulosh
    ppc_altivec_vmuloub,                       // llvm.ppc.altivec.vmuloub
    ppc_altivec_vmulouh,                       // llvm.ppc.altivec.vmulouh
    ppc_altivec_vnmsubfp,                      // llvm.ppc.altivec.vnmsubfp
    ppc_altivec_vperm,                         // llvm.ppc.altivec.vperm
    ppc_altivec_vpkpx,                         // llvm.ppc.altivec.vpkpx
    ppc_altivec_vpkshss,                       // llvm.ppc.altivec.vpkshss
    ppc_altivec_vpkshus,                       // llvm.ppc.altivec.vpkshus
    ppc_altivec_vpkswss,                       // llvm.ppc.altivec.vpkswss
    ppc_altivec_vpkswus,                       // llvm.ppc.altivec.vpkswus
    ppc_altivec_vpkuhus,                       // llvm.ppc.altivec.vpkuhus
    ppc_altivec_vpkuwus,                       // llvm.ppc.altivec.vpkuwus
    ppc_altivec_vrefp,                         // llvm.ppc.altivec.vrefp
    ppc_altivec_vrfim,                         // llvm.ppc.altivec.vrfim
    ppc_altivec_vrfin,                         // llvm.ppc.altivec.vrfin
    ppc_altivec_vrfip,                         // llvm.ppc.altivec.vrfip
    ppc_altivec_vrfiz,                         // llvm.ppc.altivec.vrfiz
    ppc_altivec_vrlb,                          // llvm.ppc.altivec.vrlb
    ppc_altivec_vrlh,                          // llvm.ppc.altivec.vrlh
    ppc_altivec_vrlw,                          // llvm.ppc.altivec.vrlw
    ppc_altivec_vrsqrtefp,                     // llvm.ppc.altivec.vrsqrtefp
    ppc_altivec_vsel,                          // llvm.ppc.altivec.vsel
    ppc_altivec_vsl,                           // llvm.ppc.altivec.vsl
    ppc_altivec_vslb,                          // llvm.ppc.altivec.vslb
    ppc_altivec_vslh,                          // llvm.ppc.altivec.vslh
    ppc_altivec_vslo,                          // llvm.ppc.altivec.vslo
    ppc_altivec_vslw,                          // llvm.ppc.altivec.vslw
    ppc_altivec_vsr,                           // llvm.ppc.altivec.vsr
    ppc_altivec_vsrab,                         // llvm.ppc.altivec.vsrab
    ppc_altivec_vsrah,                         // llvm.ppc.altivec.vsrah
    ppc_altivec_vsraw,                         // llvm.ppc.altivec.vsraw
    ppc_altivec_vsrb,                          // llvm.ppc.altivec.vsrb
    ppc_altivec_vsrh,                          // llvm.ppc.altivec.vsrh
    ppc_altivec_vsro,                          // llvm.ppc.altivec.vsro
    ppc_altivec_vsrw,                          // llvm.ppc.altivec.vsrw
    ppc_altivec_vsubcuw,                       // llvm.ppc.altivec.vsubcuw
    ppc_altivec_vsubsbs,                       // llvm.ppc.altivec.vsubsbs
    ppc_altivec_vsubshs,                       // llvm.ppc.altivec.vsubshs
    ppc_altivec_vsubsws,                       // llvm.ppc.altivec.vsubsws
    ppc_altivec_vsububs,                       // llvm.ppc.altivec.vsububs
    ppc_altivec_vsubuhs,                       // llvm.ppc.altivec.vsubuhs
    ppc_altivec_vsubuws,                       // llvm.ppc.altivec.vsubuws
    ppc_altivec_vsum2sws,                      // llvm.ppc.altivec.vsum2sws
    ppc_altivec_vsum4sbs,                      // llvm.ppc.altivec.vsum4sbs
    ppc_altivec_vsum4shs,                      // llvm.ppc.altivec.vsum4shs
    ppc_altivec_vsum4ubs,                      // llvm.ppc.altivec.vsum4ubs
    ppc_altivec_vsumsws,                       // llvm.ppc.altivec.vsumsws
    ppc_altivec_vupkhpx,                       // llvm.ppc.altivec.vupkhpx
    ppc_altivec_vupkhsb,                       // llvm.ppc.altivec.vupkhsb
    ppc_altivec_vupkhsh,                       // llvm.ppc.altivec.vupkhsh
    ppc_altivec_vupklpx,                       // llvm.ppc.altivec.vupklpx
    ppc_altivec_vupklsb,                       // llvm.ppc.altivec.vupklsb
    ppc_altivec_vupklsh,                       // llvm.ppc.altivec.vupklsh
    ppc_dcba,                                  // llvm.ppc.dcba
    ppc_dcbf,                                  // llvm.ppc.dcbf
    ppc_dcbi,                                  // llvm.ppc.dcbi
    ppc_dcbst,                                 // llvm.ppc.dcbst
    ppc_dcbt,                                  // llvm.ppc.dcbt
    ppc_dcbtst,                                // llvm.ppc.dcbtst
    ppc_dcbz,                                  // llvm.ppc.dcbz
    ppc_dcbzl,                                 // llvm.ppc.dcbzl
    ppc_is_decremented_ctr_nonzero,            // llvm.ppc.is.decremented.ctr.nonzero
    ppc_mtctr,                                 // llvm.ppc.mtctr
    ppc_sync,                                  // llvm.ppc.sync
    prefetch,                                  // llvm.prefetch
    ptr_annotation,                            // llvm.ptr.annotation
    ptx_bar_sync,                              // llvm.ptx.bar.sync
    ptx_read_clock,                            // llvm.ptx.read.clock
    ptx_read_clock64,                          // llvm.ptx.read.clock64
    ptx_read_ctaid_w,                          // llvm.ptx.read.ctaid.w
    ptx_read_ctaid_x,                          // llvm.ptx.read.ctaid.x
    ptx_read_ctaid_y,                          // llvm.ptx.read.ctaid.y
    ptx_read_ctaid_z,                          // llvm.ptx.read.ctaid.z
    ptx_read_gridid,                           // llvm.ptx.read.gridid
    ptx_read_laneid,                           // llvm.ptx.read.laneid
    ptx_read_lanemask_eq,                      // llvm.ptx.read.lanemask.eq
    ptx_read_lanemask_ge,                      // llvm.ptx.read.lanemask.ge
    ptx_read_lanemask_gt,                      // llvm.ptx.read.lanemask.gt
    ptx_read_lanemask_le,                      // llvm.ptx.read.lanemask.le
    ptx_read_lanemask_lt,                      // llvm.ptx.read.lanemask.lt
    ptx_read_nctaid_w,                         // llvm.ptx.read.nctaid.w
    ptx_read_nctaid_x,                         // llvm.ptx.read.nctaid.x
    ptx_read_nctaid_y,                         // llvm.ptx.read.nctaid.y
    ptx_read_nctaid_z,                         // llvm.ptx.read.nctaid.z
    ptx_read_nsmid,                            // llvm.ptx.read.nsmid
    ptx_read_ntid_w,                           // llvm.ptx.read.ntid.w
    ptx_read_ntid_x,                           // llvm.ptx.read.ntid.x
    ptx_read_ntid_y,                           // llvm.ptx.read.ntid.y
    ptx_read_ntid_z,                           // llvm.ptx.read.ntid.z
    ptx_read_nwarpid,                          // llvm.ptx.read.nwarpid
    ptx_read_pm0,                              // llvm.ptx.read.pm0
    ptx_read_pm1,                              // llvm.ptx.read.pm1
    ptx_read_pm2,                              // llvm.ptx.read.pm2
    ptx_read_pm3,                              // llvm.ptx.read.pm3
    ptx_read_smid,                             // llvm.ptx.read.smid
    ptx_read_tid_w,                            // llvm.ptx.read.tid.w
    ptx_read_tid_x,                            // llvm.ptx.read.tid.x
    ptx_read_tid_y,                            // llvm.ptx.read.tid.y
    ptx_read_tid_z,                            // llvm.ptx.read.tid.z
    ptx_read_warpid,                           // llvm.ptx.read.warpid
    r600_read_global_size_x,                   // llvm.r600.read.global.size.x
    r600_read_global_size_y,                   // llvm.r600.read.global.size.y
    r600_read_global_size_z,                   // llvm.r600.read.global.size.z
    r600_read_local_size_x,                    // llvm.r600.read.local.size.x
    r600_read_local_size_y,                    // llvm.r600.read.local.size.y
    r600_read_local_size_z,                    // llvm.r600.read.local.size.z
    r600_read_ngroups_x,                       // llvm.r600.read.ngroups.x
    r600_read_ngroups_y,                       // llvm.r600.read.ngroups.y
    r600_read_ngroups_z,                       // llvm.r600.read.ngroups.z
    r600_read_tgid_x,                          // llvm.r600.read.tgid.x
    r600_read_tgid_y,                          // llvm.r600.read.tgid.y
    r600_read_tgid_z,                          // llvm.r600.read.tgid.z
    r600_read_tidig_x,                         // llvm.r600.read.tidig.x
    r600_read_tidig_y,                         // llvm.r600.read.tidig.y
    r600_read_tidig_z,                         // llvm.r600.read.tidig.z
    read_register,                             // llvm.read_register
    readcyclecounter,                          // llvm.readcyclecounter
    returnaddress,                             // llvm.returnaddress
    rint,                                      // llvm.rint
    round,                                     // llvm.round
    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
    stackprotectorcheck,                       // llvm.stackprotectorcheck
    stackrestore,                              // llvm.stackrestore
    stacksave,                                 // llvm.stacksave
    trap,                                      // llvm.trap
    trunc,                                     // llvm.trunc
    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
    write_register,                            // llvm.write_register
    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_avx2_gather_d_d,                       // llvm.x86.avx2.gather.d.d
    x86_avx2_gather_d_d_256,                   // llvm.x86.avx2.gather.d.d.256
    x86_avx2_gather_d_pd,                      // llvm.x86.avx2.gather.d.pd
    x86_avx2_gather_d_pd_256,                  // llvm.x86.avx2.gather.d.pd.256
    x86_avx2_gather_d_ps,                      // llvm.x86.avx2.gather.d.ps
    x86_avx2_gather_d_ps_256,                  // llvm.x86.avx2.gather.d.ps.256
    x86_avx2_gather_d_q,                       // llvm.x86.avx2.gather.d.q
    x86_avx2_gather_d_q_256,                   // llvm.x86.avx2.gather.d.q.256
    x86_avx2_gather_q_d,                       // llvm.x86.avx2.gather.q.d
    x86_avx2_gather_q_d_256,                   // llvm.x86.avx2.gather.q.d.256
    x86_avx2_gather_q_pd,                      // llvm.x86.avx2.gather.q.pd
    x86_avx2_gather_q_pd_256,                  // llvm.x86.avx2.gather.q.pd.256
    x86_avx2_gather_q_ps,                      // llvm.x86.avx2.gather.q.ps
    x86_avx2_gather_q_ps_256,                  // llvm.x86.avx2.gather.q.ps.256
    x86_avx2_gather_q_q,                       // llvm.x86.avx2.gather.q.q
    x86_avx2_gather_q_q_256,                   // llvm.x86.avx2.gather.q.q.256
    x86_avx2_maskload_d,                       // llvm.x86.avx2.maskload.d
    x86_avx2_maskload_d_256,                   // llvm.x86.avx2.maskload.d.256
    x86_avx2_maskload_q,                       // llvm.x86.avx2.maskload.q
    x86_avx2_maskload_q_256,                   // llvm.x86.avx2.maskload.q.256
    x86_avx2_maskstore_d,                      // llvm.x86.avx2.maskstore.d
    x86_avx2_maskstore_d_256,                  // llvm.x86.avx2.maskstore.d.256
    x86_avx2_maskstore_q,                      // llvm.x86.avx2.maskstore.q
    x86_avx2_maskstore_q_256,                  // llvm.x86.avx2.maskstore.q.256
    x86_avx2_movntdqa,                         // llvm.x86.avx2.movntdqa
    x86_avx2_mpsadbw,                          // llvm.x86.avx2.mpsadbw
    x86_avx2_pabs_b,                           // llvm.x86.avx2.pabs.b
    x86_avx2_pabs_d,                           // llvm.x86.avx2.pabs.d
    x86_avx2_pabs_w,                           // llvm.x86.avx2.pabs.w
    x86_avx2_packssdw,                         // llvm.x86.avx2.packssdw
    x86_avx2_packsswb,                         // llvm.x86.avx2.packsswb
    x86_avx2_packusdw,                         // llvm.x86.avx2.packusdw
    x86_avx2_packuswb,                         // llvm.x86.avx2.packuswb
    x86_avx2_padds_b,                          // llvm.x86.avx2.padds.b
    x86_avx2_padds_w,                          // llvm.x86.avx2.padds.w
    x86_avx2_paddus_b,                         // llvm.x86.avx2.paddus.b
    x86_avx2_paddus_w,                         // llvm.x86.avx2.paddus.w
    x86_avx2_pavg_b,                           // llvm.x86.avx2.pavg.b
    x86_avx2_pavg_w,                           // llvm.x86.avx2.pavg.w
    x86_avx2_pblendd_128,                      // llvm.x86.avx2.pblendd.128
    x86_avx2_pblendd_256,                      // llvm.x86.avx2.pblendd.256
    x86_avx2_pblendvb,                         // llvm.x86.avx2.pblendvb
    x86_avx2_pblendw,                          // llvm.x86.avx2.pblendw
    x86_avx2_pbroadcastb_128,                  // llvm.x86.avx2.pbroadcastb.128
    x86_avx2_pbroadcastb_256,                  // llvm.x86.avx2.pbroadcastb.256
    x86_avx2_pbroadcastd_128,                  // llvm.x86.avx2.pbroadcastd.128
    x86_avx2_pbroadcastd_256,                  // llvm.x86.avx2.pbroadcastd.256
    x86_avx2_pbroadcastq_128,                  // llvm.x86.avx2.pbroadcastq.128
    x86_avx2_pbroadcastq_256,                  // llvm.x86.avx2.pbroadcastq.256
    x86_avx2_pbroadcastw_128,                  // llvm.x86.avx2.pbroadcastw.128
    x86_avx2_pbroadcastw_256,                  // llvm.x86.avx2.pbroadcastw.256
    x86_avx2_permd,                            // llvm.x86.avx2.permd
    x86_avx2_permps,                           // llvm.x86.avx2.permps
    x86_avx2_phadd_d,                          // llvm.x86.avx2.phadd.d
    x86_avx2_phadd_sw,                         // llvm.x86.avx2.phadd.sw
    x86_avx2_phadd_w,                          // llvm.x86.avx2.phadd.w
    x86_avx2_phsub_d,                          // llvm.x86.avx2.phsub.d
    x86_avx2_phsub_sw,                         // llvm.x86.avx2.phsub.sw
    x86_avx2_phsub_w,                          // llvm.x86.avx2.phsub.w
    x86_avx2_pmadd_ub_sw,                      // llvm.x86.avx2.pmadd.ub.sw
    x86_avx2_pmadd_wd,                         // llvm.x86.avx2.pmadd.wd
    x86_avx2_pmaxs_b,                          // llvm.x86.avx2.pmaxs.b
    x86_avx2_pmaxs_d,                          // llvm.x86.avx2.pmaxs.d
    x86_avx2_pmaxs_w,                          // llvm.x86.avx2.pmaxs.w
    x86_avx2_pmaxu_b,                          // llvm.x86.avx2.pmaxu.b
    x86_avx2_pmaxu_d,                          // llvm.x86.avx2.pmaxu.d
    x86_avx2_pmaxu_w,                          // llvm.x86.avx2.pmaxu.w
    x86_avx2_pmins_b,                          // llvm.x86.avx2.pmins.b
    x86_avx2_pmins_d,                          // llvm.x86.avx2.pmins.d
    x86_avx2_pmins_w,                          // llvm.x86.avx2.pmins.w
    x86_avx2_pminu_b,                          // llvm.x86.avx2.pminu.b
    x86_avx2_pminu_d,                          // llvm.x86.avx2.pminu.d
    x86_avx2_pminu_w,                          // llvm.x86.avx2.pminu.w
    x86_avx2_pmovmskb,                         // llvm.x86.avx2.pmovmskb
    x86_avx2_pmovsxbd,                         // llvm.x86.avx2.pmovsxbd
    x86_avx2_pmovsxbq,                         // llvm.x86.avx2.pmovsxbq
    x86_avx2_pmovsxbw,                         // llvm.x86.avx2.pmovsxbw
    x86_avx2_pmovsxdq,                         // llvm.x86.avx2.pmovsxdq
    x86_avx2_pmovsxwd,                         // llvm.x86.avx2.pmovsxwd
    x86_avx2_pmovsxwq,                         // llvm.x86.avx2.pmovsxwq
    x86_avx2_pmovzxbd,                         // llvm.x86.avx2.pmovzxbd
    x86_avx2_pmovzxbq,                         // llvm.x86.avx2.pmovzxbq
    x86_avx2_pmovzxbw,                         // llvm.x86.avx2.pmovzxbw
    x86_avx2_pmovzxdq,                         // llvm.x86.avx2.pmovzxdq
    x86_avx2_pmovzxwd,                         // llvm.x86.avx2.pmovzxwd
    x86_avx2_pmovzxwq,                         // llvm.x86.avx2.pmovzxwq
    x86_avx2_pmul_dq,                          // llvm.x86.avx2.pmul.dq
    x86_avx2_pmul_hr_sw,                       // llvm.x86.avx2.pmul.hr.sw
    x86_avx2_pmulh_w,                          // llvm.x86.avx2.pmulh.w
    x86_avx2_pmulhu_w,                         // llvm.x86.avx2.pmulhu.w
    x86_avx2_pmulu_dq,                         // llvm.x86.avx2.pmulu.dq
    x86_avx2_psad_bw,                          // llvm.x86.avx2.psad.bw
    x86_avx2_pshuf_b,                          // llvm.x86.avx2.pshuf.b
    x86_avx2_psign_b,                          // llvm.x86.avx2.psign.b
    x86_avx2_psign_d,                          // llvm.x86.avx2.psign.d
    x86_avx2_psign_w,                          // llvm.x86.avx2.psign.w
    x86_avx2_psll_d,                           // llvm.x86.avx2.psll.d
    x86_avx2_psll_dq,                          // llvm.x86.avx2.psll.dq
    x86_avx2_psll_dq_bs,                       // llvm.x86.avx2.psll.dq.bs
    x86_avx2_psll_q,                           // llvm.x86.avx2.psll.q
    x86_avx2_psll_w,                           // llvm.x86.avx2.psll.w
    x86_avx2_pslli_d,                          // llvm.x86.avx2.pslli.d
    x86_avx2_pslli_q,                          // llvm.x86.avx2.pslli.q
    x86_avx2_pslli_w,                          // llvm.x86.avx2.pslli.w
    x86_avx2_psllv_d,                          // llvm.x86.avx2.psllv.d
    x86_avx2_psllv_d_256,                      // llvm.x86.avx2.psllv.d.256
    x86_avx2_psllv_q,                          // llvm.x86.avx2.psllv.q
    x86_avx2_psllv_q_256,                      // llvm.x86.avx2.psllv.q.256
    x86_avx2_psra_d,                           // llvm.x86.avx2.psra.d
    x86_avx2_psra_w,                           // llvm.x86.avx2.psra.w
    x86_avx2_psrai_d,                          // llvm.x86.avx2.psrai.d
    x86_avx2_psrai_w,                          // llvm.x86.avx2.psrai.w
    x86_avx2_psrav_d,                          // llvm.x86.avx2.psrav.d
    x86_avx2_psrav_d_256,                      // llvm.x86.avx2.psrav.d.256
    x86_avx2_psrl_d,                           // llvm.x86.avx2.psrl.d
    x86_avx2_psrl_dq,                          // llvm.x86.avx2.psrl.dq
    x86_avx2_psrl_dq_bs,                       // llvm.x86.avx2.psrl.dq.bs
    x86_avx2_psrl_q,                           // llvm.x86.avx2.psrl.q
    x86_avx2_psrl_w,                           // llvm.x86.avx2.psrl.w
    x86_avx2_psrli_d,                          // llvm.x86.avx2.psrli.d
    x86_avx2_psrli_q,                          // llvm.x86.avx2.psrli.q
    x86_avx2_psrli_w,                          // llvm.x86.avx2.psrli.w
    x86_avx2_psrlv_d,                          // llvm.x86.avx2.psrlv.d
    x86_avx2_psrlv_d_256,                      // llvm.x86.avx2.psrlv.d.256
    x86_avx2_psrlv_q,                          // llvm.x86.avx2.psrlv.q
    x86_avx2_psrlv_q_256,                      // llvm.x86.avx2.psrlv.q.256
    x86_avx2_psubs_b,                          // llvm.x86.avx2.psubs.b
    x86_avx2_psubs_w,                          // llvm.x86.avx2.psubs.w
    x86_avx2_psubus_b,                         // llvm.x86.avx2.psubus.b
    x86_avx2_psubus_w,                         // llvm.x86.avx2.psubus.w
    x86_avx2_vbroadcast_sd_pd_256,             // llvm.x86.avx2.vbroadcast.sd.pd.256
    x86_avx2_vbroadcast_ss_ps,                 // llvm.x86.avx2.vbroadcast.ss.ps
    x86_avx2_vbroadcast_ss_ps_256,             // llvm.x86.avx2.vbroadcast.ss.ps.256
    x86_avx2_vbroadcasti128,                   // llvm.x86.avx2.vbroadcasti128
    x86_avx2_vextracti128,                     // llvm.x86.avx2.vextracti128
    x86_avx2_vinserti128,                      // llvm.x86.avx2.vinserti128
    x86_avx2_vperm2i128,                       // llvm.x86.avx2.vperm2i128
    x86_avx512_cvtsd2usi,                      // llvm.x86.avx512.cvtsd2usi
    x86_avx512_cvtsd2usi64,                    // llvm.x86.avx512.cvtsd2usi64
    x86_avx512_cvtss2usi,                      // llvm.x86.avx512.cvtss2usi
    x86_avx512_cvtss2usi64,                    // llvm.x86.avx512.cvtss2usi64
    x86_avx512_cvttsd2usi,                     // llvm.x86.avx512.cvttsd2usi
    x86_avx512_cvttsd2usi64,                   // llvm.x86.avx512.cvttsd2usi64
    x86_avx512_cvttss2usi,                     // llvm.x86.avx512.cvttss2usi
    x86_avx512_cvttss2usi64,                   // llvm.x86.avx512.cvttss2usi64
    x86_avx512_cvtusi2sd,                      // llvm.x86.avx512.cvtusi2sd
    x86_avx512_cvtusi2ss,                      // llvm.x86.avx512.cvtusi2ss
    x86_avx512_cvtusi642sd,                    // llvm.x86.avx512.cvtusi642sd
    x86_avx512_cvtusi642ss,                    // llvm.x86.avx512.cvtusi642ss
    x86_avx512_gather_dpd_512,                 // llvm.x86.avx512.gather.dpd.512
    x86_avx512_gather_dpi_512,                 // llvm.x86.avx512.gather.dpi.512
    x86_avx512_gather_dpq_512,                 // llvm.x86.avx512.gather.dpq.512
    x86_avx512_gather_dps_512,                 // llvm.x86.avx512.gather.dps.512
    x86_avx512_gather_qpd_512,                 // llvm.x86.avx512.gather.qpd.512
    x86_avx512_gather_qpi_512,                 // llvm.x86.avx512.gather.qpi.512
    x86_avx512_gather_qpq_512,                 // llvm.x86.avx512.gather.qpq.512
    x86_avx512_gather_qps_512,                 // llvm.x86.avx512.gather.qps.512
    x86_avx512_gatherpf_dpd_512,               // llvm.x86.avx512.gatherpf.dpd.512
    x86_avx512_gatherpf_dps_512,               // llvm.x86.avx512.gatherpf.dps.512
    x86_avx512_gatherpf_qpd_512,               // llvm.x86.avx512.gatherpf.qpd.512
    x86_avx512_gatherpf_qps_512,               // llvm.x86.avx512.gatherpf.qps.512
    x86_avx512_kand_w,                         // llvm.x86.avx512.kand.w
    x86_avx512_kandn_w,                        // llvm.x86.avx512.kandn.w
    x86_avx512_knot_w,                         // llvm.x86.avx512.knot.w
    x86_avx512_kor_w,                          // llvm.x86.avx512.kor.w
    x86_avx512_kortestc_w,                     // llvm.x86.avx512.kortestc.w
    x86_avx512_kortestz_w,                     // llvm.x86.avx512.kortestz.w
    x86_avx512_kunpck_bw,                      // llvm.x86.avx512.kunpck.bw
    x86_avx512_kxnor_w,                        // llvm.x86.avx512.kxnor.w
    x86_avx512_kxor_w,                         // llvm.x86.avx512.kxor.w
    x86_avx512_mask_blend_d_512,               // llvm.x86.avx512.mask.blend.d.512
    x86_avx512_mask_blend_pd_512,              // llvm.x86.avx512.mask.blend.pd.512
    x86_avx512_mask_blend_ps_512,              // llvm.x86.avx512.mask.blend.ps.512
    x86_avx512_mask_blend_q_512,               // llvm.x86.avx512.mask.blend.q.512
    x86_avx512_mask_cmp_pd_512,                // llvm.x86.avx512.mask.cmp.pd.512
    x86_avx512_mask_cmp_ps_512,                // llvm.x86.avx512.mask.cmp.ps.512
    x86_avx512_mask_conflict_d_512,            // llvm.x86.avx512.mask.conflict.d.512
    x86_avx512_mask_conflict_q_512,            // llvm.x86.avx512.mask.conflict.q.512
    x86_avx512_mask_cvtdq2pd_512,              // llvm.x86.avx512.mask.cvtdq2pd.512
    x86_avx512_mask_cvtdq2ps_512,              // llvm.x86.avx512.mask.cvtdq2ps.512
    x86_avx512_mask_cvtpd2dq_512,              // llvm.x86.avx512.mask.cvtpd2dq.512
    x86_avx512_mask_cvtpd2ps_512,              // llvm.x86.avx512.mask.cvtpd2ps.512
    x86_avx512_mask_cvtpd2udq_512,             // llvm.x86.avx512.mask.cvtpd2udq.512
    x86_avx512_mask_cvtps2dq_512,              // llvm.x86.avx512.mask.cvtps2dq.512
    x86_avx512_mask_cvtps2udq_512,             // llvm.x86.avx512.mask.cvtps2udq.512
    x86_avx512_mask_cvttpd2dq_512,             // llvm.x86.avx512.mask.cvttpd2dq.512
    x86_avx512_mask_cvttpd2udq_512,            // llvm.x86.avx512.mask.cvttpd2udq.512
    x86_avx512_mask_cvttps2dq_512,             // llvm.x86.avx512.mask.cvttps2dq.512
    x86_avx512_mask_cvttps2udq_512,            // llvm.x86.avx512.mask.cvttps2udq.512
    x86_avx512_mask_cvtudq2pd_512,             // llvm.x86.avx512.mask.cvtudq2pd.512
    x86_avx512_mask_cvtudq2ps_512,             // llvm.x86.avx512.mask.cvtudq2ps.512
    x86_avx512_mask_loadu_d_512,               // llvm.x86.avx512.mask.loadu.d.512
    x86_avx512_mask_loadu_pd_512,              // llvm.x86.avx512.mask.loadu.pd.512
    x86_avx512_mask_loadu_ps_512,              // llvm.x86.avx512.mask.loadu.ps.512
    x86_avx512_mask_loadu_q_512,               // llvm.x86.avx512.mask.loadu.q.512
    x86_avx512_mask_lzcnt_d_512,               // llvm.x86.avx512.mask.lzcnt.d.512
    x86_avx512_mask_lzcnt_q_512,               // llvm.x86.avx512.mask.lzcnt.q.512
    x86_avx512_mask_max_pd_512,                // llvm.x86.avx512.mask.max.pd.512
    x86_avx512_mask_max_ps_512,                // llvm.x86.avx512.mask.max.ps.512
    x86_avx512_mask_min_pd_512,                // llvm.x86.avx512.mask.min.pd.512
    x86_avx512_mask_min_ps_512,                // llvm.x86.avx512.mask.min.ps.512
    x86_avx512_mask_pabs_d_512,                // llvm.x86.avx512.mask.pabs.d.512
    x86_avx512_mask_pabs_q_512,                // llvm.x86.avx512.mask.pabs.q.512
    x86_avx512_mask_pand_d_512,                // llvm.x86.avx512.mask.pand.d.512
    x86_avx512_mask_pand_q_512,                // llvm.x86.avx512.mask.pand.q.512
    x86_avx512_mask_pbroadcast_d_gpr_512,      // llvm.x86.avx512.mask.pbroadcast.d.gpr.512
    x86_avx512_mask_pbroadcast_q_gpr_512,      // llvm.x86.avx512.mask.pbroadcast.q.gpr.512
    x86_avx512_mask_pbroadcast_q_mem_512,      // llvm.x86.avx512.mask.pbroadcast.q.mem.512
    x86_avx512_mask_pcmpeq_d_512,              // llvm.x86.avx512.mask.pcmpeq.d.512
    x86_avx512_mask_pcmpeq_q_512,              // llvm.x86.avx512.mask.pcmpeq.q.512
    x86_avx512_mask_pmaxs_d_512,               // llvm.x86.avx512.mask.pmaxs.d.512
    x86_avx512_mask_pmaxs_q_512,               // llvm.x86.avx512.mask.pmaxs.q.512
    x86_avx512_mask_pmaxu_d_512,               // llvm.x86.avx512.mask.pmaxu.d.512
    x86_avx512_mask_pmaxu_q_512,               // llvm.x86.avx512.mask.pmaxu.q.512
    x86_avx512_mask_pmins_d_512,               // llvm.x86.avx512.mask.pmins.d.512
    x86_avx512_mask_pmins_q_512,               // llvm.x86.avx512.mask.pmins.q.512
    x86_avx512_mask_pminu_d_512,               // llvm.x86.avx512.mask.pminu.d.512
    x86_avx512_mask_pminu_q_512,               // llvm.x86.avx512.mask.pminu.q.512
    x86_avx512_mask_pmul_dq_512,               // llvm.x86.avx512.mask.pmul.dq.512
    x86_avx512_mask_pmulu_dq_512,              // llvm.x86.avx512.mask.pmulu.dq.512
    x86_avx512_mask_ptestm_d_512,              // llvm.x86.avx512.mask.ptestm.d.512
    x86_avx512_mask_ptestm_q_512,              // llvm.x86.avx512.mask.ptestm.q.512
    x86_avx512_mask_rndscale_pd_512,           // llvm.x86.avx512.mask.rndscale.pd.512
    x86_avx512_mask_rndscale_ps_512,           // llvm.x86.avx512.mask.rndscale.ps.512
    x86_avx512_mask_storeu_d_512,              // llvm.x86.avx512.mask.storeu.d.512
    x86_avx512_mask_storeu_pd_512,             // llvm.x86.avx512.mask.storeu.pd.512
    x86_avx512_mask_storeu_ps_512,             // llvm.x86.avx512.mask.storeu.ps.512
    x86_avx512_mask_storeu_q_512,              // llvm.x86.avx512.mask.storeu.q.512
    x86_avx512_mask_vcvtph2ps_512,             // llvm.x86.avx512.mask.vcvtph2ps.512
    x86_avx512_mask_vcvtps2ph_512,             // llvm.x86.avx512.mask.vcvtps2ph.512
    x86_avx512_mask_vpermt_d_512,              // llvm.x86.avx512.mask.vpermt.d.512
    x86_avx512_mask_vpermt_pd_512,             // llvm.x86.avx512.mask.vpermt.pd.512
    x86_avx512_mask_vpermt_ps_512,             // llvm.x86.avx512.mask.vpermt.ps.512
    x86_avx512_mask_vpermt_q_512,              // llvm.x86.avx512.mask.vpermt.q.512
    x86_avx512_movntdqa,                       // llvm.x86.avx512.movntdqa
    x86_avx512_pbroadcastd_512,                // llvm.x86.avx512.pbroadcastd.512
    x86_avx512_pbroadcastd_i32_512,            // llvm.x86.avx512.pbroadcastd.i32.512
    x86_avx512_pbroadcastq_512,                // llvm.x86.avx512.pbroadcastq.512
    x86_avx512_pbroadcastq_i64_512,            // llvm.x86.avx512.pbroadcastq.i64.512
    x86_avx512_pmovzxbd,                       // llvm.x86.avx512.pmovzxbd
    x86_avx512_pmovzxbq,                       // llvm.x86.avx512.pmovzxbq
    x86_avx512_pmovzxdq,                       // llvm.x86.avx512.pmovzxdq
    x86_avx512_pmovzxwd,                       // llvm.x86.avx512.pmovzxwd
    x86_avx512_pmovzxwq,                       // llvm.x86.avx512.pmovzxwq
    x86_avx512_psll_dq,                        // llvm.x86.avx512.psll.dq
    x86_avx512_psll_dq_bs,                     // llvm.x86.avx512.psll.dq.bs
    x86_avx512_psrl_dq,                        // llvm.x86.avx512.psrl.dq
    x86_avx512_psrl_dq_bs,                     // llvm.x86.avx512.psrl.dq.bs
    x86_avx512_rcp14_pd_512,                   // llvm.x86.avx512.rcp14.pd.512
    x86_avx512_rcp14_ps_512,                   // llvm.x86.avx512.rcp14.ps.512
    x86_avx512_rcp14_sd,                       // llvm.x86.avx512.rcp14.sd
    x86_avx512_rcp14_ss,                       // llvm.x86.avx512.rcp14.ss
    x86_avx512_rcp28_pd,                       // llvm.x86.avx512.rcp28.pd
    x86_avx512_rcp28_ps,                       // llvm.x86.avx512.rcp28.ps
    x86_avx512_rcp28_sd,                       // llvm.x86.avx512.rcp28.sd
    x86_avx512_rcp28_ss,                       // llvm.x86.avx512.rcp28.ss
    x86_avx512_rndscale_sd,                    // llvm.x86.avx512.rndscale.sd
    x86_avx512_rndscale_ss,                    // llvm.x86.avx512.rndscale.ss
    x86_avx512_rsqrt14_pd_512,                 // llvm.x86.avx512.rsqrt14.pd.512
    x86_avx512_rsqrt14_ps_512,                 // llvm.x86.avx512.rsqrt14.ps.512
    x86_avx512_rsqrt14_sd,                     // llvm.x86.avx512.rsqrt14.sd
    x86_avx512_rsqrt14_ss,                     // llvm.x86.avx512.rsqrt14.ss
    x86_avx512_rsqrt28_pd,                     // llvm.x86.avx512.rsqrt28.pd
    x86_avx512_rsqrt28_ps,                     // llvm.x86.avx512.rsqrt28.ps
    x86_avx512_rsqrt28_sd,                     // llvm.x86.avx512.rsqrt28.sd
    x86_avx512_rsqrt28_ss,                     // llvm.x86.avx512.rsqrt28.ss
    x86_avx512_scatter_dpd_512,                // llvm.x86.avx512.scatter.dpd.512
    x86_avx512_scatter_dpi_512,                // llvm.x86.avx512.scatter.dpi.512
    x86_avx512_scatter_dpq_512,                // llvm.x86.avx512.scatter.dpq.512
    x86_avx512_scatter_dps_512,                // llvm.x86.avx512.scatter.dps.512
    x86_avx512_scatter_qpd_512,                // llvm.x86.avx512.scatter.qpd.512
    x86_avx512_scatter_qpi_512,                // llvm.x86.avx512.scatter.qpi.512
    x86_avx512_scatter_qpq_512,                // llvm.x86.avx512.scatter.qpq.512
    x86_avx512_scatter_qps_512,                // llvm.x86.avx512.scatter.qps.512
    x86_avx512_scatterpf_dpd_512,              // llvm.x86.avx512.scatterpf.dpd.512
    x86_avx512_scatterpf_dps_512,              // llvm.x86.avx512.scatterpf.dps.512
    x86_avx512_scatterpf_qpd_512,              // llvm.x86.avx512.scatterpf.qpd.512
    x86_avx512_scatterpf_qps_512,              // llvm.x86.avx512.scatterpf.qps.512
    x86_avx512_sqrt_pd_512,                    // llvm.x86.avx512.sqrt.pd.512
    x86_avx512_sqrt_ps_512,                    // llvm.x86.avx512.sqrt.ps.512
    x86_avx512_sqrt_sd,                        // llvm.x86.avx512.sqrt.sd
    x86_avx512_sqrt_ss,                        // llvm.x86.avx512.sqrt.ss
    x86_avx512_vbroadcast_sd_512,              // llvm.x86.avx512.vbroadcast.sd.512
    x86_avx512_vbroadcast_sd_pd_512,           // llvm.x86.avx512.vbroadcast.sd.pd.512
    x86_avx512_vbroadcast_ss_512,              // llvm.x86.avx512.vbroadcast.ss.512
    x86_avx512_vbroadcast_ss_ps_512,           // llvm.x86.avx512.vbroadcast.ss.ps.512
    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_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_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_vbroadcastf128_pd_256,             // llvm.x86.avx.vbroadcastf128.pd.256
    x86_avx_vbroadcastf128_ps_256,             // llvm.x86.avx.vbroadcastf128.ps.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_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_bmi_bextr_32,                          // llvm.x86.bmi.bextr.32
    x86_bmi_bextr_64,                          // llvm.x86.bmi.bextr.64
    x86_bmi_bzhi_32,                           // llvm.x86.bmi.bzhi.32
    x86_bmi_bzhi_64,                           // llvm.x86.bmi.bzhi.64
    x86_bmi_pdep_32,                           // llvm.x86.bmi.pdep.32
    x86_bmi_pdep_64,                           // llvm.x86.bmi.pdep.64
    x86_bmi_pext_32,                           // llvm.x86.bmi.pext.32
    x86_bmi_pext_64,                           // llvm.x86.bmi.pext.64
    x86_fma_vfmadd_pd,                         // llvm.x86.fma.vfmadd.pd
    x86_fma_vfmadd_pd_256,                     // llvm.x86.fma.vfmadd.pd.256
    x86_fma_vfmadd_pd_512,                     // llvm.x86.fma.vfmadd.pd.512
    x86_fma_vfmadd_ps,                         // llvm.x86.fma.vfmadd.ps
    x86_fma_vfmadd_ps_256,                     // llvm.x86.fma.vfmadd.ps.256
    x86_fma_vfmadd_ps_512,                     // llvm.x86.fma.vfmadd.ps.512
    x86_fma_vfmadd_sd,                         // llvm.x86.fma.vfmadd.sd
    x86_fma_vfmadd_ss,                         // llvm.x86.fma.vfmadd.ss
    x86_fma_vfmaddsub_pd,                      // llvm.x86.fma.vfmaddsub.pd
    x86_fma_vfmaddsub_pd_256,                  // llvm.x86.fma.vfmaddsub.pd.256
    x86_fma_vfmaddsub_pd_512,                  // llvm.x86.fma.vfmaddsub.pd.512
    x86_fma_vfmaddsub_ps,                      // llvm.x86.fma.vfmaddsub.ps
    x86_fma_vfmaddsub_ps_256,                  // llvm.x86.fma.vfmaddsub.ps.256
    x86_fma_vfmaddsub_ps_512,                  // llvm.x86.fma.vfmaddsub.ps.512
    x86_fma_vfmsub_pd,                         // llvm.x86.fma.vfmsub.pd
    x86_fma_vfmsub_pd_256,                     // llvm.x86.fma.vfmsub.pd.256
    x86_fma_vfmsub_pd_512,                     // llvm.x86.fma.vfmsub.pd.512
    x86_fma_vfmsub_ps,                         // llvm.x86.fma.vfmsub.ps
    x86_fma_vfmsub_ps_256,                     // llvm.x86.fma.vfmsub.ps.256
    x86_fma_vfmsub_ps_512,                     // llvm.x86.fma.vfmsub.ps.512
    x86_fma_vfmsub_sd,                         // llvm.x86.fma.vfmsub.sd
    x86_fma_vfmsub_ss,                         // llvm.x86.fma.vfmsub.ss
    x86_fma_vfmsubadd_pd,                      // llvm.x86.fma.vfmsubadd.pd
    x86_fma_vfmsubadd_pd_256,                  // llvm.x86.fma.vfmsubadd.pd.256
    x86_fma_vfmsubadd_pd_512,                  // llvm.x86.fma.vfmsubadd.pd.512
    x86_fma_vfmsubadd_ps,                      // llvm.x86.fma.vfmsubadd.ps
    x86_fma_vfmsubadd_ps_256,                  // llvm.x86.fma.vfmsubadd.ps.256
    x86_fma_vfmsubadd_ps_512,                  // llvm.x86.fma.vfmsubadd.ps.512
    x86_fma_vfnmadd_pd,                        // llvm.x86.fma.vfnmadd.pd
    x86_fma_vfnmadd_pd_256,                    // llvm.x86.fma.vfnmadd.pd.256
    x86_fma_vfnmadd_pd_512,                    // llvm.x86.fma.vfnmadd.pd.512
    x86_fma_vfnmadd_ps,                        // llvm.x86.fma.vfnmadd.ps
    x86_fma_vfnmadd_ps_256,                    // llvm.x86.fma.vfnmadd.ps.256
    x86_fma_vfnmadd_ps_512,                    // llvm.x86.fma.vfnmadd.ps.512
    x86_fma_vfnmadd_sd,                        // llvm.x86.fma.vfnmadd.sd
    x86_fma_vfnmadd_ss,                        // llvm.x86.fma.vfnmadd.ss
    x86_fma_vfnmsub_pd,                        // llvm.x86.fma.vfnmsub.pd
    x86_fma_vfnmsub_pd_256,                    // llvm.x86.fma.vfnmsub.pd.256
    x86_fma_vfnmsub_pd_512,                    // llvm.x86.fma.vfnmsub.pd.512
    x86_fma_vfnmsub_ps,                        // llvm.x86.fma.vfnmsub.ps
    x86_fma_vfnmsub_ps_256,                    // llvm.x86.fma.vfnmsub.ps.256
    x86_fma_vfnmsub_ps_512,                    // llvm.x86.fma.vfnmsub.ps.512
    x86_fma_vfnmsub_sd,                        // llvm.x86.fma.vfnmsub.sd
    x86_fma_vfnmsub_ss,                        // llvm.x86.fma.vfnmsub.ss
    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_pclmulqdq,                             // llvm.x86.pclmulqdq
    x86_rdfsbase_32,                           // llvm.x86.rdfsbase.32
    x86_rdfsbase_64,                           // llvm.x86.rdfsbase.64
    x86_rdgsbase_32,                           // llvm.x86.rdgsbase.32
    x86_rdgsbase_64,                           // llvm.x86.rdgsbase.64
    x86_rdpmc,                                 // llvm.x86.rdpmc
    x86_rdrand_16,                             // llvm.x86.rdrand.16
    x86_rdrand_32,                             // llvm.x86.rdrand.32
    x86_rdrand_64,                             // llvm.x86.rdrand.64
    x86_rdseed_16,                             // llvm.x86.rdseed.16
    x86_rdseed_32,                             // llvm.x86.rdseed.32
    x86_rdseed_64,                             // llvm.x86.rdseed.64
    x86_rdtsc,                                 // llvm.x86.rdtsc
    x86_rdtscp,                                // llvm.x86.rdtscp
    x86_sha1msg1,                              // llvm.x86.sha1msg1
    x86_sha1msg2,                              // llvm.x86.sha1msg2
    x86_sha1nexte,                             // llvm.x86.sha1nexte
    x86_sha1rnds4,                             // llvm.x86.sha1rnds4
    x86_sha256msg1,                            // llvm.x86.sha256msg1
    x86_sha256msg2,                            // llvm.x86.sha256msg2
    x86_sha256rnds2,                           // llvm.x86.sha256rnds2
    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_pause,                            // llvm.x86.sse2.pause
    x86_sse2_pavg_b,                           // llvm.x86.sse2.pavg.b
    x86_sse2_pavg_w,                           // llvm.x86.sse2.pavg.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_pshuf_d,                          // llvm.x86.sse2.pshuf.d
    x86_sse2_pshufh_w,                         // llvm.x86.sse2.pshufh.w
    x86_sse2_pshufl_w,                         // llvm.x86.sse2.pshufl.w
    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_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_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_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_sse4a_extrq,                           // llvm.x86.sse4a.extrq
    x86_sse4a_extrqi,                          // llvm.x86.sse4a.extrqi
    x86_sse4a_insertq,                         // llvm.x86.sse4a.insertq
    x86_sse4a_insertqi,                        // llvm.x86.sse4a.insertqi
    x86_sse4a_movnt_sd,                        // llvm.x86.sse4a.movnt.sd
    x86_sse4a_movnt_ss,                        // llvm.x86.sse4a.movnt.ss
    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
    x86_tbm_bextri_u32,                        // llvm.x86.tbm.bextri.u32
    x86_tbm_bextri_u64,                        // llvm.x86.tbm.bextri.u64
    x86_vcvtph2ps_128,                         // llvm.x86.vcvtph2ps.128
    x86_vcvtph2ps_256,                         // llvm.x86.vcvtph2ps.256
    x86_vcvtps2ph_128,                         // llvm.x86.vcvtps2ph.128
    x86_vcvtps2ph_256,                         // llvm.x86.vcvtps2ph.256
    x86_wrfsbase_32,                           // llvm.x86.wrfsbase.32
    x86_wrfsbase_64,                           // llvm.x86.wrfsbase.64
    x86_wrgsbase_32,                           // llvm.x86.wrgsbase.32
    x86_wrgsbase_64,                           // llvm.x86.wrgsbase.64
    x86_xabort,                                // llvm.x86.xabort
    x86_xbegin,                                // llvm.x86.xbegin
    x86_xend,                                  // llvm.x86.xend
    x86_xop_vfrcz_pd,                          // llvm.x86.xop.vfrcz.pd
    x86_xop_vfrcz_pd_256,                      // llvm.x86.xop.vfrcz.pd.256
    x86_xop_vfrcz_ps,                          // llvm.x86.xop.vfrcz.ps
    x86_xop_vfrcz_ps_256,                      // llvm.x86.xop.vfrcz.ps.256
    x86_xop_vfrcz_sd,                          // llvm.x86.xop.vfrcz.sd
    x86_xop_vfrcz_ss,                          // llvm.x86.xop.vfrcz.ss
    x86_xop_vpcmov,                            // llvm.x86.xop.vpcmov
    x86_xop_vpcmov_256,                        // llvm.x86.xop.vpcmov.256
    x86_xop_vpcomb,                            // llvm.x86.xop.vpcomb
    x86_xop_vpcomd,                            // llvm.x86.xop.vpcomd
    x86_xop_vpcomq,                            // llvm.x86.xop.vpcomq
    x86_xop_vpcomub,                           // llvm.x86.xop.vpcomub
    x86_xop_vpcomud,                           // llvm.x86.xop.vpcomud
    x86_xop_vpcomuq,                           // llvm.x86.xop.vpcomuq
    x86_xop_vpcomuw,                           // llvm.x86.xop.vpcomuw
    x86_xop_vpcomw,                            // llvm.x86.xop.vpcomw
    x86_xop_vpermil2pd,                        // llvm.x86.xop.vpermil2pd
    x86_xop_vpermil2pd_256,                    // llvm.x86.xop.vpermil2pd.256
    x86_xop_vpermil2ps,                        // llvm.x86.xop.vpermil2ps
    x86_xop_vpermil2ps_256,                    // llvm.x86.xop.vpermil2ps.256
    x86_xop_vphaddbd,                          // llvm.x86.xop.vphaddbd
    x86_xop_vphaddbq,                          // llvm.x86.xop.vphaddbq
    x86_xop_vphaddbw,                          // llvm.x86.xop.vphaddbw
    x86_xop_vphadddq,                          // llvm.x86.xop.vphadddq
    x86_xop_vphaddubd,                         // llvm.x86.xop.vphaddubd
    x86_xop_vphaddubq,                         // llvm.x86.xop.vphaddubq
    x86_xop_vphaddubw,                         // llvm.x86.xop.vphaddubw
    x86_xop_vphaddudq,                         // llvm.x86.xop.vphaddudq
    x86_xop_vphadduwd,                         // llvm.x86.xop.vphadduwd
    x86_xop_vphadduwq,                         // llvm.x86.xop.vphadduwq
    x86_xop_vphaddwd,                          // llvm.x86.xop.vphaddwd
    x86_xop_vphaddwq,                          // llvm.x86.xop.vphaddwq
    x86_xop_vphsubbw,                          // llvm.x86.xop.vphsubbw
    x86_xop_vphsubdq,                          // llvm.x86.xop.vphsubdq
    x86_xop_vphsubwd,                          // llvm.x86.xop.vphsubwd
    x86_xop_vpmacsdd,                          // llvm.x86.xop.vpmacsdd
    x86_xop_vpmacsdqh,                         // llvm.x86.xop.vpmacsdqh
    x86_xop_vpmacsdql,                         // llvm.x86.xop.vpmacsdql
    x86_xop_vpmacssdd,                         // llvm.x86.xop.vpmacssdd
    x86_xop_vpmacssdqh,                        // llvm.x86.xop.vpmacssdqh
    x86_xop_vpmacssdql,                        // llvm.x86.xop.vpmacssdql
    x86_xop_vpmacsswd,                         // llvm.x86.xop.vpmacsswd
    x86_xop_vpmacssww,                         // llvm.x86.xop.vpmacssww
    x86_xop_vpmacswd,                          // llvm.x86.xop.vpmacswd
    x86_xop_vpmacsww,                          // llvm.x86.xop.vpmacsww
    x86_xop_vpmadcsswd,                        // llvm.x86.xop.vpmadcsswd
    x86_xop_vpmadcswd,                         // llvm.x86.xop.vpmadcswd
    x86_xop_vpperm,                            // llvm.x86.xop.vpperm
    x86_xop_vprotb,                            // llvm.x86.xop.vprotb
    x86_xop_vprotbi,                           // llvm.x86.xop.vprotbi
    x86_xop_vprotd,                            // llvm.x86.xop.vprotd
    x86_xop_vprotdi,                           // llvm.x86.xop.vprotdi
    x86_xop_vprotq,                            // llvm.x86.xop.vprotq
    x86_xop_vprotqi,                           // llvm.x86.xop.vprotqi
    x86_xop_vprotw,                            // llvm.x86.xop.vprotw
    x86_xop_vprotwi,                           // llvm.x86.xop.vprotwi
    x86_xop_vpshab,                            // llvm.x86.xop.vpshab
    x86_xop_vpshad,                            // llvm.x86.xop.vpshad
    x86_xop_vpshaq,                            // llvm.x86.xop.vpshaq
    x86_xop_vpshaw,                            // llvm.x86.xop.vpshaw
    x86_xop_vpshlb,                            // llvm.x86.xop.vpshlb
    x86_xop_vpshld,                            // llvm.x86.xop.vpshld
    x86_xop_vpshlq,                            // llvm.x86.xop.vpshlq
    x86_xop_vpshlw,                            // llvm.x86.xop.vpshlw
    x86_xtest,                                 // llvm.x86.xtest
    xcore_bitrev,                              // llvm.xcore.bitrev
    xcore_checkevent,                          // llvm.xcore.checkevent
    xcore_chkct,                               // llvm.xcore.chkct
    xcore_clre,                                // llvm.xcore.clre
    xcore_clrpt,                               // llvm.xcore.clrpt
    xcore_clrsr,                               // llvm.xcore.clrsr
    xcore_crc32,                               // llvm.xcore.crc32
    xcore_crc8,                                // llvm.xcore.crc8
    xcore_edu,                                 // llvm.xcore.edu
    xcore_eeu,                                 // llvm.xcore.eeu
    xcore_endin,                               // llvm.xcore.endin
    xcore_freer,                               // llvm.xcore.freer
    xcore_geted,                               // llvm.xcore.geted
    xcore_getet,                               // llvm.xcore.getet
    xcore_getid,                               // llvm.xcore.getid
    xcore_getps,                               // llvm.xcore.getps
    xcore_getr,                                // llvm.xcore.getr
    xcore_getst,                               // llvm.xcore.getst
    xcore_getts,                               // llvm.xcore.getts
    xcore_in,                                  // llvm.xcore.in
    xcore_inct,                                // llvm.xcore.inct
    xcore_initcp,                              // llvm.xcore.initcp
    xcore_initdp,                              // llvm.xcore.initdp
    xcore_initlr,                              // llvm.xcore.initlr
    xcore_initpc,                              // llvm.xcore.initpc
    xcore_initsp,                              // llvm.xcore.initsp
    xcore_inshr,                               // llvm.xcore.inshr
    xcore_int,                                 // llvm.xcore.int
    xcore_mjoin,                               // llvm.xcore.mjoin
    xcore_msync,                               // llvm.xcore.msync
    xcore_out,                                 // llvm.xcore.out
    xcore_outct,                               // llvm.xcore.outct
    xcore_outshr,                              // llvm.xcore.outshr
    xcore_outt,                                // llvm.xcore.outt
    xcore_peek,                                // llvm.xcore.peek
    xcore_setc,                                // llvm.xcore.setc
    xcore_setclk,                              // llvm.xcore.setclk
    xcore_setd,                                // llvm.xcore.setd
    xcore_setev,                               // llvm.xcore.setev
    xcore_setps,                               // llvm.xcore.setps
    xcore_setpsc,                              // llvm.xcore.setpsc
    xcore_setpt,                               // llvm.xcore.setpt
    xcore_setrdy,                              // llvm.xcore.setrdy
    xcore_setsr,                               // llvm.xcore.setsr
    xcore_settw,                               // llvm.xcore.settw
    xcore_setv,                                // llvm.xcore.setv
    xcore_sext,                                // llvm.xcore.sext
    xcore_ssync,                               // llvm.xcore.ssync
    xcore_syncr,                               // llvm.xcore.syncr
    xcore_testct,                              // llvm.xcore.testct
    xcore_testwct,                             // llvm.xcore.testwct
    xcore_waitevent,                           // llvm.xcore.waitevent
    xcore_zext                                 // llvm.xcore.zext
#endif

// Intrinsic ID to name table
#ifdef GET_INTRINSIC_NAME_TABLE
  // Note that entry #0 is the invalid intrinsic!
  "llvm.AMDGPU.div.fixup",
  "llvm.AMDGPU.div.fmas",
  "llvm.AMDGPU.div.scale",
  "llvm.AMDGPU.rcp",
  "llvm.AMDGPU.rsq",
  "llvm.AMDGPU.rsq.clamped",
  "llvm.AMDGPU.trig.preop",
  "llvm.aarch64.clrex",
  "llvm.aarch64.crc32b",
  "llvm.aarch64.crc32cb",
  "llvm.aarch64.crc32ch",
  "llvm.aarch64.crc32cw",
  "llvm.aarch64.crc32cx",
  "llvm.aarch64.crc32h",
  "llvm.aarch64.crc32w",
  "llvm.aarch64.crc32x",
  "llvm.aarch64.crypto.aesd",
  "llvm.aarch64.crypto.aese",
  "llvm.aarch64.crypto.aesimc",
  "llvm.aarch64.crypto.aesmc",
  "llvm.aarch64.crypto.sha1c",
  "llvm.aarch64.crypto.sha1h",
  "llvm.aarch64.crypto.sha1m",
  "llvm.aarch64.crypto.sha1p",
  "llvm.aarch64.crypto.sha1su0",
  "llvm.aarch64.crypto.sha1su1",
  "llvm.aarch64.crypto.sha256h",
  "llvm.aarch64.crypto.sha256h2",
  "llvm.aarch64.crypto.sha256su0",
  "llvm.aarch64.crypto.sha256su1",
  "llvm.aarch64.dmb",
  "llvm.aarch64.dsb",
  "llvm.aarch64.hint",
  "llvm.aarch64.isb",
  "llvm.aarch64.ldaxp",
  "llvm.aarch64.ldaxr",
  "llvm.aarch64.ldxp",
  "llvm.aarch64.ldxr",
  "llvm.aarch64.neon.abs",
  "llvm.aarch64.neon.addhn",
  "llvm.aarch64.neon.addp",
  "llvm.aarch64.neon.cls",
  "llvm.aarch64.neon.fabd",
  "llvm.aarch64.neon.facge",
  "llvm.aarch64.neon.facgt",
  "llvm.aarch64.neon.faddv",
  "llvm.aarch64.neon.fcvtas",
  "llvm.aarch64.neon.fcvtau",
  "llvm.aarch64.neon.fcvtms",
  "llvm.aarch64.neon.fcvtmu",
  "llvm.aarch64.neon.fcvtns",
  "llvm.aarch64.neon.fcvtnu",
  "llvm.aarch64.neon.fcvtps",
  "llvm.aarch64.neon.fcvtpu",
  "llvm.aarch64.neon.fcvtxn",
  "llvm.aarch64.neon.fcvtzs",
  "llvm.aarch64.neon.fcvtzu",
  "llvm.aarch64.neon.fmax",
  "llvm.aarch64.neon.fmaxnm",
  "llvm.aarch64.neon.fmaxnmp",
  "llvm.aarch64.neon.fmaxnmv",
  "llvm.aarch64.neon.fmaxp",
  "llvm.aarch64.neon.fmaxv",
  "llvm.aarch64.neon.fmin",
  "llvm.aarch64.neon.fminnm",
  "llvm.aarch64.neon.fminnmp",
  "llvm.aarch64.neon.fminnmv",
  "llvm.aarch64.neon.fminp",
  "llvm.aarch64.neon.fminv",
  "llvm.aarch64.neon.fmulx",
  "llvm.aarch64.neon.frecpe",
  "llvm.aarch64.neon.frecps",
  "llvm.aarch64.neon.frecpx",
  "llvm.aarch64.neon.frintn",
  "llvm.aarch64.neon.frsqrte",
  "llvm.aarch64.neon.frsqrts",
  "llvm.aarch64.neon.ld1x2",
  "llvm.aarch64.neon.ld1x3",
  "llvm.aarch64.neon.ld1x4",
  "llvm.aarch64.neon.ld2",
  "llvm.aarch64.neon.ld2lane",
  "llvm.aarch64.neon.ld2r",
  "llvm.aarch64.neon.ld3",
  "llvm.aarch64.neon.ld3lane",
  "llvm.aarch64.neon.ld3r",
  "llvm.aarch64.neon.ld4",
  "llvm.aarch64.neon.ld4lane",
  "llvm.aarch64.neon.ld4r",
  "llvm.aarch64.neon.pmul",
  "llvm.aarch64.neon.pmull",
  "llvm.aarch64.neon.pmull64",
  "llvm.aarch64.neon.raddhn",
  "llvm.aarch64.neon.rbit",
  "llvm.aarch64.neon.rshrn",
  "llvm.aarch64.neon.rsubhn",
  "llvm.aarch64.neon.sabd",
  "llvm.aarch64.neon.saddlp",
  "llvm.aarch64.neon.saddlv",
  "llvm.aarch64.neon.saddv",
  "llvm.aarch64.neon.scalar.sqxtn",
  "llvm.aarch64.neon.scalar.sqxtun",
  "llvm.aarch64.neon.scalar.uqxtn",
  "llvm.aarch64.neon.shadd",
  "llvm.aarch64.neon.shll",
  "llvm.aarch64.neon.shsub",
  "llvm.aarch64.neon.smax",
  "llvm.aarch64.neon.smaxp",
  "llvm.aarch64.neon.smaxv",
  "llvm.aarch64.neon.smin",
  "llvm.aarch64.neon.sminp",
  "llvm.aarch64.neon.sminv",
  "llvm.aarch64.neon.smull",
  "llvm.aarch64.neon.sqabs",
  "llvm.aarch64.neon.sqadd",
  "llvm.aarch64.neon.sqdmulh",
  "llvm.aarch64.neon.sqdmull",
  "llvm.aarch64.neon.sqdmulls.scalar",
  "llvm.aarch64.neon.sqneg",
  "llvm.aarch64.neon.sqrdmulh",
  "llvm.aarch64.neon.sqrshl",
  "llvm.aarch64.neon.sqrshrn",
  "llvm.aarch64.neon.sqrshrun",
  "llvm.aarch64.neon.sqshl",
  "llvm.aarch64.neon.sqshlu",
  "llvm.aarch64.neon.sqshrn",
  "llvm.aarch64.neon.sqshrun",
  "llvm.aarch64.neon.sqsub",
  "llvm.aarch64.neon.sqxtn",
  "llvm.aarch64.neon.sqxtun",
  "llvm.aarch64.neon.srhadd",
  "llvm.aarch64.neon.srshl",
  "llvm.aarch64.neon.sshl",
  "llvm.aarch64.neon.sshll",
  "llvm.aarch64.neon.st1x2",
  "llvm.aarch64.neon.st1x3",
  "llvm.aarch64.neon.st1x4",
  "llvm.aarch64.neon.st2",
  "llvm.aarch64.neon.st2lane",
  "llvm.aarch64.neon.st3",
  "llvm.aarch64.neon.st3lane",
  "llvm.aarch64.neon.st4",
  "llvm.aarch64.neon.st4lane",
  "llvm.aarch64.neon.subhn",
  "llvm.aarch64.neon.suqadd",
  "llvm.aarch64.neon.tbl1",
  "llvm.aarch64.neon.tbl2",
  "llvm.aarch64.neon.tbl3",
  "llvm.aarch64.neon.tbl4",
  "llvm.aarch64.neon.tbx1",
  "llvm.aarch64.neon.tbx2",
  "llvm.aarch64.neon.tbx3",
  "llvm.aarch64.neon.tbx4",
  "llvm.aarch64.neon.uabd",
  "llvm.aarch64.neon.uaddlp",
  "llvm.aarch64.neon.uaddlv",
  "llvm.aarch64.neon.uaddv",
  "llvm.aarch64.neon.uhadd",
  "llvm.aarch64.neon.uhsub",
  "llvm.aarch64.neon.umax",
  "llvm.aarch64.neon.umaxp",
  "llvm.aarch64.neon.umaxv",
  "llvm.aarch64.neon.umin",
  "llvm.aarch64.neon.uminp",
  "llvm.aarch64.neon.uminv",
  "llvm.aarch64.neon.umull",
  "llvm.aarch64.neon.uqadd",
  "llvm.aarch64.neon.uqrshl",
  "llvm.aarch64.neon.uqrshrn",
  "llvm.aarch64.neon.uqshl",
  "llvm.aarch64.neon.uqshrn",
  "llvm.aarch64.neon.uqsub",
  "llvm.aarch64.neon.uqxtn",
  "llvm.aarch64.neon.urecpe",
  "llvm.aarch64.neon.urhadd",
  "llvm.aarch64.neon.urshl",
  "llvm.aarch64.neon.ursqrte",
  "llvm.aarch64.neon.ushl",
  "llvm.aarch64.neon.ushll",
  "llvm.aarch64.neon.usqadd",
  "llvm.aarch64.neon.vcopy.lane",
  "llvm.aarch64.neon.vcvtfp2fxs",
  "llvm.aarch64.neon.vcvtfp2fxu",
  "llvm.aarch64.neon.vcvtfp2hf",
  "llvm.aarch64.neon.vcvtfxs2fp",
  "llvm.aarch64.neon.vcvtfxu2fp",
  "llvm.aarch64.neon.vcvthf2fp",
  "llvm.aarch64.neon.vsli",
  "llvm.aarch64.neon.vsri",
  "llvm.aarch64.rbit",
  "llvm.aarch64.sdiv",
  "llvm.aarch64.sisd.fabd",
  "llvm.aarch64.sisd.fcvtxn",
  "llvm.aarch64.stlxp",
  "llvm.aarch64.stlxr",
  "llvm.aarch64.stxp",
  "llvm.aarch64.stxr",
  "llvm.aarch64.udiv",
  "llvm.adjust.trampoline",
  "llvm.annotation",
  "llvm.arm.cdp",
  "llvm.arm.cdp2",
  "llvm.arm.clrex",
  "llvm.arm.crc32b",
  "llvm.arm.crc32cb",
  "llvm.arm.crc32ch",
  "llvm.arm.crc32cw",
  "llvm.arm.crc32h",
  "llvm.arm.crc32w",
  "llvm.arm.dmb",
  "llvm.arm.dsb",
  "llvm.arm.get.fpscr",
  "llvm.arm.hint",
  "llvm.arm.isb",
  "llvm.arm.ldaex",
  "llvm.arm.ldaexd",
  "llvm.arm.ldrex",
  "llvm.arm.ldrexd",
  "llvm.arm.mcr",
  "llvm.arm.mcr2",
  "llvm.arm.mcrr",
  "llvm.arm.mcrr2",
  "llvm.arm.mrc",
  "llvm.arm.mrc2",
  "llvm.arm.neon.aesd",
  "llvm.arm.neon.aese",
  "llvm.arm.neon.aesimc",
  "llvm.arm.neon.aesmc",
  "llvm.arm.neon.sha1c",
  "llvm.arm.neon.sha1h",
  "llvm.arm.neon.sha1m",
  "llvm.arm.neon.sha1p",
  "llvm.arm.neon.sha1su0",
  "llvm.arm.neon.sha1su1",
  "llvm.arm.neon.sha256h",
  "llvm.arm.neon.sha256h2",
  "llvm.arm.neon.sha256su0",
  "llvm.arm.neon.sha256su1",
  "llvm.arm.neon.vabds",
  "llvm.arm.neon.vabdu",
  "llvm.arm.neon.vabs",
  "llvm.arm.neon.vacge",
  "llvm.arm.neon.vacgt",
  "llvm.arm.neon.vbsl",
  "llvm.arm.neon.vcls",
  "llvm.arm.neon.vclz",
  "llvm.arm.neon.vcnt",
  "llvm.arm.neon.vcvtas",
  "llvm.arm.neon.vcvtau",
  "llvm.arm.neon.vcvtfp2fxs",
  "llvm.arm.neon.vcvtfp2fxu",
  "llvm.arm.neon.vcvtfp2hf",
  "llvm.arm.neon.vcvtfxs2fp",
  "llvm.arm.neon.vcvtfxu2fp",
  "llvm.arm.neon.vcvthf2fp",
  "llvm.arm.neon.vcvtms",
  "llvm.arm.neon.vcvtmu",
  "llvm.arm.neon.vcvtns",
  "llvm.arm.neon.vcvtnu",
  "llvm.arm.neon.vcvtps",
  "llvm.arm.neon.vcvtpu",
  "llvm.arm.neon.vhadds",
  "llvm.arm.neon.vhaddu",
  "llvm.arm.neon.vhsubs",
  "llvm.arm.neon.vhsubu",
  "llvm.arm.neon.vld1",
  "llvm.arm.neon.vld2",
  "llvm.arm.neon.vld2lane",
  "llvm.arm.neon.vld3",
  "llvm.arm.neon.vld3lane",
  "llvm.arm.neon.vld4",
  "llvm.arm.neon.vld4lane",
  "llvm.arm.neon.vmaxnm",
  "llvm.arm.neon.vmaxs",
  "llvm.arm.neon.vmaxu",
  "llvm.arm.neon.vminnm",
  "llvm.arm.neon.vmins",
  "llvm.arm.neon.vminu",
  "llvm.arm.neon.vmullp",
  "llvm.arm.neon.vmulls",
  "llvm.arm.neon.vmullu",
  "llvm.arm.neon.vmulp",
  "llvm.arm.neon.vpadals",
  "llvm.arm.neon.vpadalu",
  "llvm.arm.neon.vpadd",
  "llvm.arm.neon.vpaddls",
  "llvm.arm.neon.vpaddlu",
  "llvm.arm.neon.vpmaxs",
  "llvm.arm.neon.vpmaxu",
  "llvm.arm.neon.vpmins",
  "llvm.arm.neon.vpminu",
  "llvm.arm.neon.vqabs",
  "llvm.arm.neon.vqadds",
  "llvm.arm.neon.vqaddu",
  "llvm.arm.neon.vqdmulh",
  "llvm.arm.neon.vqdmull",
  "llvm.arm.neon.vqmovns",
  "llvm.arm.neon.vqmovnsu",
  "llvm.arm.neon.vqmovnu",
  "llvm.arm.neon.vqneg",
  "llvm.arm.neon.vqrdmulh",
  "llvm.arm.neon.vqrshiftns",
  "llvm.arm.neon.vqrshiftnsu",
  "llvm.arm.neon.vqrshiftnu",
  "llvm.arm.neon.vqrshifts",
  "llvm.arm.neon.vqrshiftu",
  "llvm.arm.neon.vqshiftns",
  "llvm.arm.neon.vqshiftnsu",
  "llvm.arm.neon.vqshiftnu",
  "llvm.arm.neon.vqshifts",
  "llvm.arm.neon.vqshiftsu",
  "llvm.arm.neon.vqshiftu",
  "llvm.arm.neon.vqsubs",
  "llvm.arm.neon.vqsubu",
  "llvm.arm.neon.vraddhn",
  "llvm.arm.neon.vrecpe",
  "llvm.arm.neon.vrecps",
  "llvm.arm.neon.vrhadds",
  "llvm.arm.neon.vrhaddu",
  "llvm.arm.neon.vrinta",
  "llvm.arm.neon.vrintm",
  "llvm.arm.neon.vrintn",
  "llvm.arm.neon.vrintp",
  "llvm.arm.neon.vrintx",
  "llvm.arm.neon.vrintz",
  "llvm.arm.neon.vrshiftn",
  "llvm.arm.neon.vrshifts",
  "llvm.arm.neon.vrshiftu",
  "llvm.arm.neon.vrsqrte",
  "llvm.arm.neon.vrsqrts",
  "llvm.arm.neon.vrsubhn",
  "llvm.arm.neon.vshiftins",
  "llvm.arm.neon.vshifts",
  "llvm.arm.neon.vshiftu",
  "llvm.arm.neon.vst1",
  "llvm.arm.neon.vst2",
  "llvm.arm.neon.vst2lane",
  "llvm.arm.neon.vst3",
  "llvm.arm.neon.vst3lane",
  "llvm.arm.neon.vst4",
  "llvm.arm.neon.vst4lane",
  "llvm.arm.neon.vtbl1",
  "llvm.arm.neon.vtbl2",
  "llvm.arm.neon.vtbl3",
  "llvm.arm.neon.vtbl4",
  "llvm.arm.neon.vtbx1",
  "llvm.arm.neon.vtbx2",
  "llvm.arm.neon.vtbx3",
  "llvm.arm.neon.vtbx4",
  "llvm.arm.qadd",
  "llvm.arm.qsub",
  "llvm.arm.rbit",
  "llvm.arm.set.fpscr",
  "llvm.arm.ssat",
  "llvm.arm.stlex",
  "llvm.arm.stlexd",
  "llvm.arm.strex",
  "llvm.arm.strexd",
  "llvm.arm.thread.pointer",
  "llvm.arm.undefined",
  "llvm.arm.usat",
  "llvm.arm.vcvtr",
  "llvm.arm.vcvtru",
  "llvm.bswap",
  "llvm.ceil",
  "llvm.clear_cache",
  "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.copysign",
  "llvm.cos",
  "llvm.ctlz",
  "llvm.ctpop",
  "llvm.cttz",
  "llvm.cuda.syncthreads",
  "llvm.dbg.declare",
  "llvm.dbg.value",
  "llvm.debugtrap",
  "llvm.donothing",
  "llvm.eh.dwarf.cfa",
  "llvm.eh.return.i32",
  "llvm.eh.return.i64",
  "llvm.eh.sjlj.callsite",
  "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.experimental.patchpoint.i64",
  "llvm.experimental.patchpoint.void",
  "llvm.experimental.stackmap",
  "llvm.fabs",
  "llvm.floor",
  "llvm.flt.rounds",
  "llvm.fma",
  "llvm.fmuladd",
  "llvm.frameaddress",
  "llvm.gcread",
  "llvm.gcroot",
  "llvm.gcwrite",
  "llvm.hexagon.A2.abs",
  "llvm.hexagon.A2.absp",
  "llvm.hexagon.A2.abssat",
  "llvm.hexagon.A2.add",
  "llvm.hexagon.A2.addh.h16.hh",
  "llvm.hexagon.A2.addh.h16.hl",
  "llvm.hexagon.A2.addh.h16.lh",
  "llvm.hexagon.A2.addh.h16.ll",
  "llvm.hexagon.A2.addh.h16.sat.hh",
  "llvm.hexagon.A2.addh.h16.sat.hl",
  "llvm.hexagon.A2.addh.h16.sat.lh",
  "llvm.hexagon.A2.addh.h16.sat.ll",
  "llvm.hexagon.A2.addh.l16.hl",
  "llvm.hexagon.A2.addh.l16.ll",
  "llvm.hexagon.A2.addh.l16.sat.hl",
  "llvm.hexagon.A2.addh.l16.sat.ll",
  "llvm.hexagon.A2.addi",
  "llvm.hexagon.A2.addp",
  "llvm.hexagon.A2.addpsat",
  "llvm.hexagon.A2.addsat",
  "llvm.hexagon.A2.addsp",
  "llvm.hexagon.A2.and",
  "llvm.hexagon.A2.andir",
  "llvm.hexagon.A2.andp",
  "llvm.hexagon.A2.aslh",
  "llvm.hexagon.A2.asrh",
  "llvm.hexagon.A2.combine.hh",
  "llvm.hexagon.A2.combine.hl",
  "llvm.hexagon.A2.combine.lh",
  "llvm.hexagon.A2.combine.ll",
  "llvm.hexagon.A2.combineii",
  "llvm.hexagon.A2.combinew",
  "llvm.hexagon.A2.max",
  "llvm.hexagon.A2.maxp",
  "llvm.hexagon.A2.maxu",
  "llvm.hexagon.A2.maxup",
  "llvm.hexagon.A2.min",
  "llvm.hexagon.A2.minp",
  "llvm.hexagon.A2.minu",
  "llvm.hexagon.A2.minup",
  "llvm.hexagon.A2.neg",
  "llvm.hexagon.A2.negp",
  "llvm.hexagon.A2.negsat",
  "llvm.hexagon.A2.not",
  "llvm.hexagon.A2.notp",
  "llvm.hexagon.A2.or",
  "llvm.hexagon.A2.orir",
  "llvm.hexagon.A2.orp",
  "llvm.hexagon.A2.roundsat",
  "llvm.hexagon.A2.sat",
  "llvm.hexagon.A2.satb",
  "llvm.hexagon.A2.sath",
  "llvm.hexagon.A2.satub",
  "llvm.hexagon.A2.satuh",
  "llvm.hexagon.A2.sub",
  "llvm.hexagon.A2.subh.h16.hh",
  "llvm.hexagon.A2.subh.h16.hl",
  "llvm.hexagon.A2.subh.h16.lh",
  "llvm.hexagon.A2.subh.h16.ll",
  "llvm.hexagon.A2.subh.h16.sat.hh",
  "llvm.hexagon.A2.subh.h16.sat.hl",
  "llvm.hexagon.A2.subh.h16.sat.lh",
  "llvm.hexagon.A2.subh.h16.sat.ll",
  "llvm.hexagon.A2.subh.l16.hl",
  "llvm.hexagon.A2.subh.l16.ll",
  "llvm.hexagon.A2.subh.l16.sat.hl",
  "llvm.hexagon.A2.subh.l16.sat.ll",
  "llvm.hexagon.A2.subp",
  "llvm.hexagon.A2.subri",
  "llvm.hexagon.A2.subsat",
  "llvm.hexagon.A2.svaddh",
  "llvm.hexagon.A2.svaddhs",
  "llvm.hexagon.A2.svadduhs",
  "llvm.hexagon.A2.svavgh",
  "llvm.hexagon.A2.svavghs",
  "llvm.hexagon.A2.svnavgh",
  "llvm.hexagon.A2.svsubh",
  "llvm.hexagon.A2.svsubhs",
  "llvm.hexagon.A2.svsubuhs",
  "llvm.hexagon.A2.swiz",
  "llvm.hexagon.A2.sxtb",
  "llvm.hexagon.A2.sxth",
  "llvm.hexagon.A2.sxtw",
  "llvm.hexagon.A2.tfr",
  "llvm.hexagon.A2.tfrih",
  "llvm.hexagon.A2.tfril",
  "llvm.hexagon.A2.tfrp",
  "llvm.hexagon.A2.tfrpi",
  "llvm.hexagon.A2.tfrsi",
  "llvm.hexagon.A2.vabsh",
  "llvm.hexagon.A2.vabshsat",
  "llvm.hexagon.A2.vabsw",
  "llvm.hexagon.A2.vabswsat",
  "llvm.hexagon.A2.vaddb.map",
  "llvm.hexagon.A2.vaddh",
  "llvm.hexagon.A2.vaddhs",
  "llvm.hexagon.A2.vaddub",
  "llvm.hexagon.A2.vaddubs",
  "llvm.hexagon.A2.vadduhs",
  "llvm.hexagon.A2.vaddw",
  "llvm.hexagon.A2.vaddws",
  "llvm.hexagon.A2.vavgh",
  "llvm.hexagon.A2.vavghcr",
  "llvm.hexagon.A2.vavghr",
  "llvm.hexagon.A2.vavgub",
  "llvm.hexagon.A2.vavgubr",
  "llvm.hexagon.A2.vavguh",
  "llvm.hexagon.A2.vavguhr",
  "llvm.hexagon.A2.vavguw",
  "llvm.hexagon.A2.vavguwr",
  "llvm.hexagon.A2.vavgw",
  "llvm.hexagon.A2.vavgwcr",
  "llvm.hexagon.A2.vavgwr",
  "llvm.hexagon.A2.vcmpbeq",
  "llvm.hexagon.A2.vcmpbgtu",
  "llvm.hexagon.A2.vcmpheq",
  "llvm.hexagon.A2.vcmphgt",
  "llvm.hexagon.A2.vcmphgtu",
  "llvm.hexagon.A2.vcmpweq",
  "llvm.hexagon.A2.vcmpwgt",
  "llvm.hexagon.A2.vcmpwgtu",
  "llvm.hexagon.A2.vconj",
  "llvm.hexagon.A2.vmaxb",
  "llvm.hexagon.A2.vmaxh",
  "llvm.hexagon.A2.vmaxub",
  "llvm.hexagon.A2.vmaxuh",
  "llvm.hexagon.A2.vmaxuw",
  "llvm.hexagon.A2.vmaxw",
  "llvm.hexagon.A2.vminb",
  "llvm.hexagon.A2.vminh",
  "llvm.hexagon.A2.vminub",
  "llvm.hexagon.A2.vminuh",
  "llvm.hexagon.A2.vminuw",
  "llvm.hexagon.A2.vminw",
  "llvm.hexagon.A2.vnavgh",
  "llvm.hexagon.A2.vnavghcr",
  "llvm.hexagon.A2.vnavghr",
  "llvm.hexagon.A2.vnavgw",
  "llvm.hexagon.A2.vnavgwcr",
  "llvm.hexagon.A2.vnavgwr",
  "llvm.hexagon.A2.vraddub",
  "llvm.hexagon.A2.vraddub.acc",
  "llvm.hexagon.A2.vrsadub",
  "llvm.hexagon.A2.vrsadub.acc",
  "llvm.hexagon.A2.vsubb.map",
  "llvm.hexagon.A2.vsubh",
  "llvm.hexagon.A2.vsubhs",
  "llvm.hexagon.A2.vsubub",
  "llvm.hexagon.A2.vsububs",
  "llvm.hexagon.A2.vsubuhs",
  "llvm.hexagon.A2.vsubw",
  "llvm.hexagon.A2.vsubws",
  "llvm.hexagon.A2.xor",
  "llvm.hexagon.A2.xorp",
  "llvm.hexagon.A2.zxtb",
  "llvm.hexagon.A2.zxth",
  "llvm.hexagon.A4.andn",
  "llvm.hexagon.A4.andnp",
  "llvm.hexagon.A4.bitsplit",
  "llvm.hexagon.A4.bitspliti",
  "llvm.hexagon.A4.boundscheck",
  "llvm.hexagon.A4.cmpbeq",
  "llvm.hexagon.A4.cmpbeqi",
  "llvm.hexagon.A4.cmpbgt",
  "llvm.hexagon.A4.cmpbgti",
  "llvm.hexagon.A4.cmpbgtu",
  "llvm.hexagon.A4.cmpbgtui",
  "llvm.hexagon.A4.cmpheq",
  "llvm.hexagon.A4.cmpheqi",
  "llvm.hexagon.A4.cmphgt",
  "llvm.hexagon.A4.cmphgti",
  "llvm.hexagon.A4.cmphgtu",
  "llvm.hexagon.A4.cmphgtui",
  "llvm.hexagon.A4.combineir",
  "llvm.hexagon.A4.combineri",
  "llvm.hexagon.A4.cround.ri",
  "llvm.hexagon.A4.cround.rr",
  "llvm.hexagon.A4.modwrapu",
  "llvm.hexagon.A4.orn",
  "llvm.hexagon.A4.ornp",
  "llvm.hexagon.A4.rcmpeq",
  "llvm.hexagon.A4.rcmpeqi",
  "llvm.hexagon.A4.rcmpneq",
  "llvm.hexagon.A4.rcmpneqi",
  "llvm.hexagon.A4.round.ri",
  "llvm.hexagon.A4.round.ri.sat",
  "llvm.hexagon.A4.round.rr",
  "llvm.hexagon.A4.round.rr.sat",
  "llvm.hexagon.A4.tlbmatch",
  "llvm.hexagon.A4.vcmpbeq.any",
  "llvm.hexagon.A4.vcmpbeqi",
  "llvm.hexagon.A4.vcmpbgt",
  "llvm.hexagon.A4.vcmpbgti",
  "llvm.hexagon.A4.vcmpbgtui",
  "llvm.hexagon.A4.vcmpheqi",
  "llvm.hexagon.A4.vcmphgti",
  "llvm.hexagon.A4.vcmphgtui",
  "llvm.hexagon.A4.vcmpweqi",
  "llvm.hexagon.A4.vcmpwgti",
  "llvm.hexagon.A4.vcmpwgtui",
  "llvm.hexagon.A4.vrmaxh",
  "llvm.hexagon.A4.vrmaxuh",
  "llvm.hexagon.A4.vrmaxuw",
  "llvm.hexagon.A4.vrmaxw",
  "llvm.hexagon.A4.vrminh",
  "llvm.hexagon.A4.vrminuh",
  "llvm.hexagon.A4.vrminuw",
  "llvm.hexagon.A4.vrminw",
  "llvm.hexagon.A5.vaddhubs",
  "llvm.hexagon.C2.all8",
  "llvm.hexagon.C2.and",
  "llvm.hexagon.C2.andn",
  "llvm.hexagon.C2.any8",
  "llvm.hexagon.C2.bitsclr",
  "llvm.hexagon.C2.bitsclri",
  "llvm.hexagon.C2.bitsset",
  "llvm.hexagon.C2.cmpeq",
  "llvm.hexagon.C2.cmpeqi",
  "llvm.hexagon.C2.cmpeqp",
  "llvm.hexagon.C2.cmpgei",
  "llvm.hexagon.C2.cmpgeui",
  "llvm.hexagon.C2.cmpgt",
  "llvm.hexagon.C2.cmpgti",
  "llvm.hexagon.C2.cmpgtp",
  "llvm.hexagon.C2.cmpgtu",
  "llvm.hexagon.C2.cmpgtui",
  "llvm.hexagon.C2.cmpgtup",
  "llvm.hexagon.C2.cmplt",
  "llvm.hexagon.C2.cmpltu",
  "llvm.hexagon.C2.mask",
  "llvm.hexagon.C2.mux",
  "llvm.hexagon.C2.muxii",
  "llvm.hexagon.C2.muxir",
  "llvm.hexagon.C2.muxri",
  "llvm.hexagon.C2.not",
  "llvm.hexagon.C2.or",
  "llvm.hexagon.C2.orn",
  "llvm.hexagon.C2.pxfer.map",
  "llvm.hexagon.C2.tfrpr",
  "llvm.hexagon.C2.tfrrp",
  "llvm.hexagon.C2.vitpack",
  "llvm.hexagon.C2.vmux",
  "llvm.hexagon.C2.xor",
  "llvm.hexagon.C4.and.and",
  "llvm.hexagon.C4.and.andn",
  "llvm.hexagon.C4.and.or",
  "llvm.hexagon.C4.and.orn",
  "llvm.hexagon.C4.cmplte",
  "llvm.hexagon.C4.cmpltei",
  "llvm.hexagon.C4.cmplteu",
  "llvm.hexagon.C4.cmplteui",
  "llvm.hexagon.C4.cmpneq",
  "llvm.hexagon.C4.cmpneqi",
  "llvm.hexagon.C4.fastcorner9",
  "llvm.hexagon.C4.fastcorner9.not",
  "llvm.hexagon.C4.nbitsclr",
  "llvm.hexagon.C4.nbitsclri",
  "llvm.hexagon.C4.nbitsset",
  "llvm.hexagon.C4.or.and",
  "llvm.hexagon.C4.or.andn",
  "llvm.hexagon.C4.or.or",
  "llvm.hexagon.C4.or.orn",
  "llvm.hexagon.F2.conv.d2df",
  "llvm.hexagon.F2.conv.d2sf",
  "llvm.hexagon.F2.conv.df2d",
  "llvm.hexagon.F2.conv.df2d.chop",
  "llvm.hexagon.F2.conv.df2sf",
  "llvm.hexagon.F2.conv.df2ud",
  "llvm.hexagon.F2.conv.df2ud.chop",
  "llvm.hexagon.F2.conv.df2uw",
  "llvm.hexagon.F2.conv.df2uw.chop",
  "llvm.hexagon.F2.conv.df2w",
  "llvm.hexagon.F2.conv.df2w.chop",
  "llvm.hexagon.F2.conv.sf2d",
  "llvm.hexagon.F2.conv.sf2d.chop",
  "llvm.hexagon.F2.conv.sf2df",
  "llvm.hexagon.F2.conv.sf2ud",
  "llvm.hexagon.F2.conv.sf2ud.chop",
  "llvm.hexagon.F2.conv.sf2uw",
  "llvm.hexagon.F2.conv.sf2uw.chop",
  "llvm.hexagon.F2.conv.sf2w",
  "llvm.hexagon.F2.conv.sf2w.chop",
  "llvm.hexagon.F2.conv.ud2df",
  "llvm.hexagon.F2.conv.ud2sf",
  "llvm.hexagon.F2.conv.uw2df",
  "llvm.hexagon.F2.conv.uw2sf",
  "llvm.hexagon.F2.conv.w2df",
  "llvm.hexagon.F2.conv.w2sf",
  "llvm.hexagon.F2.dfadd",
  "llvm.hexagon.F2.dfclass",
  "llvm.hexagon.F2.dfcmpeq",
  "llvm.hexagon.F2.dfcmpge",
  "llvm.hexagon.F2.dfcmpgt",
  "llvm.hexagon.F2.dfcmpuo",
  "llvm.hexagon.F2.dffixupd",
  "llvm.hexagon.F2.dffixupn",
  "llvm.hexagon.F2.dffixupr",
  "llvm.hexagon.F2.dffma",
  "llvm.hexagon.F2.dffma.lib",
  "llvm.hexagon.F2.dffma.sc",
  "llvm.hexagon.F2.dffms",
  "llvm.hexagon.F2.dffms.lib",
  "llvm.hexagon.F2.dfimm.n",
  "llvm.hexagon.F2.dfimm.p",
  "llvm.hexagon.F2.dfmax",
  "llvm.hexagon.F2.dfmin",
  "llvm.hexagon.F2.dfmpy",
  "llvm.hexagon.F2.dfsub",
  "llvm.hexagon.F2.sfadd",
  "llvm.hexagon.F2.sfclass",
  "llvm.hexagon.F2.sfcmpeq",
  "llvm.hexagon.F2.sfcmpge",
  "llvm.hexagon.F2.sfcmpgt",
  "llvm.hexagon.F2.sfcmpuo",
  "llvm.hexagon.F2.sffixupd",
  "llvm.hexagon.F2.sffixupn",
  "llvm.hexagon.F2.sffixupr",
  "llvm.hexagon.F2.sffma",
  "llvm.hexagon.F2.sffma.lib",
  "llvm.hexagon.F2.sffma.sc",
  "llvm.hexagon.F2.sffms",
  "llvm.hexagon.F2.sffms.lib",
  "llvm.hexagon.F2.sfimm.n",
  "llvm.hexagon.F2.sfimm.p",
  "llvm.hexagon.F2.sfmax",
  "llvm.hexagon.F2.sfmin",
  "llvm.hexagon.F2.sfmpy",
  "llvm.hexagon.F2.sfsub",
  "llvm.hexagon.M2.acci",
  "llvm.hexagon.M2.accii",
  "llvm.hexagon.M2.cmaci.s0",
  "llvm.hexagon.M2.cmacr.s0",
  "llvm.hexagon.M2.cmacs.s0",
  "llvm.hexagon.M2.cmacs.s1",
  "llvm.hexagon.M2.cmacsc.s0",
  "llvm.hexagon.M2.cmacsc.s1",
  "llvm.hexagon.M2.cmpyi.s0",
  "llvm.hexagon.M2.cmpyr.s0",
  "llvm.hexagon.M2.cmpyrs.s0",
  "llvm.hexagon.M2.cmpyrs.s1",
  "llvm.hexagon.M2.cmpyrsc.s0",
  "llvm.hexagon.M2.cmpyrsc.s1",
  "llvm.hexagon.M2.cmpys.s0",
  "llvm.hexagon.M2.cmpys.s1",
  "llvm.hexagon.M2.cmpysc.s0",
  "llvm.hexagon.M2.cmpysc.s1",
  "llvm.hexagon.M2.cnacs.s0",
  "llvm.hexagon.M2.cnacs.s1",
  "llvm.hexagon.M2.cnacsc.s0",
  "llvm.hexagon.M2.cnacsc.s1",
  "llvm.hexagon.M2.dpmpyss.acc.s0",
  "llvm.hexagon.M2.dpmpyss.nac.s0",
  "llvm.hexagon.M2.dpmpyss.rnd.s0",
  "llvm.hexagon.M2.dpmpyss.s0",
  "llvm.hexagon.M2.dpmpyuu.acc.s0",
  "llvm.hexagon.M2.dpmpyuu.nac.s0",
  "llvm.hexagon.M2.dpmpyuu.s0",
  "llvm.hexagon.M2.hmmpyh.rs1",
  "llvm.hexagon.M2.hmmpyh.s1",
  "llvm.hexagon.M2.hmmpyl.rs1",
  "llvm.hexagon.M2.hmmpyl.s1",
  "llvm.hexagon.M2.maci",
  "llvm.hexagon.M2.macsin",
  "llvm.hexagon.M2.macsip",
  "llvm.hexagon.M2.mmachs.rs0",
  "llvm.hexagon.M2.mmachs.rs1",
  "llvm.hexagon.M2.mmachs.s0",
  "llvm.hexagon.M2.mmachs.s1",
  "llvm.hexagon.M2.mmacls.rs0",
  "llvm.hexagon.M2.mmacls.rs1",
  "llvm.hexagon.M2.mmacls.s0",
  "llvm.hexagon.M2.mmacls.s1",
  "llvm.hexagon.M2.mmacuhs.rs0",
  "llvm.hexagon.M2.mmacuhs.rs1",
  "llvm.hexagon.M2.mmacuhs.s0",
  "llvm.hexagon.M2.mmacuhs.s1",
  "llvm.hexagon.M2.mmaculs.rs0",
  "llvm.hexagon.M2.mmaculs.rs1",
  "llvm.hexagon.M2.mmaculs.s0",
  "llvm.hexagon.M2.mmaculs.s1",
  "llvm.hexagon.M2.mmpyh.rs0",
  "llvm.hexagon.M2.mmpyh.rs1",
  "llvm.hexagon.M2.mmpyh.s0",
  "llvm.hexagon.M2.mmpyh.s1",
  "llvm.hexagon.M2.mmpyl.rs0",
  "llvm.hexagon.M2.mmpyl.rs1",
  "llvm.hexagon.M2.mmpyl.s0",
  "llvm.hexagon.M2.mmpyl.s1",
  "llvm.hexagon.M2.mmpyuh.rs0",
  "llvm.hexagon.M2.mmpyuh.rs1",
  "llvm.hexagon.M2.mmpyuh.s0",
  "llvm.hexagon.M2.mmpyuh.s1",
  "llvm.hexagon.M2.mmpyul.rs0",
  "llvm.hexagon.M2.mmpyul.rs1",
  "llvm.hexagon.M2.mmpyul.s0",
  "llvm.hexagon.M2.mmpyul.s1",
  "llvm.hexagon.M2.mpy.acc.hh.s0",
  "llvm.hexagon.M2.mpy.acc.hh.s1",
  "llvm.hexagon.M2.mpy.acc.hl.s0",
  "llvm.hexagon.M2.mpy.acc.hl.s1",
  "llvm.hexagon.M2.mpy.acc.lh.s0",
  "llvm.hexagon.M2.mpy.acc.lh.s1",
  "llvm.hexagon.M2.mpy.acc.ll.s0",
  "llvm.hexagon.M2.mpy.acc.ll.s1",
  "llvm.hexagon.M2.mpy.acc.sat.hh.s0",
  "llvm.hexagon.M2.mpy.acc.sat.hh.s1",
  "llvm.hexagon.M2.mpy.acc.sat.hl.s0",
  "llvm.hexagon.M2.mpy.acc.sat.hl.s1",
  "llvm.hexagon.M2.mpy.acc.sat.lh.s0",
  "llvm.hexagon.M2.mpy.acc.sat.lh.s1",
  "llvm.hexagon.M2.mpy.acc.sat.ll.s0",
  "llvm.hexagon.M2.mpy.acc.sat.ll.s1",
  "llvm.hexagon.M2.mpy.hh.s0",
  "llvm.hexagon.M2.mpy.hh.s1",
  "llvm.hexagon.M2.mpy.hl.s0",
  "llvm.hexagon.M2.mpy.hl.s1",
  "llvm.hexagon.M2.mpy.lh.s0",
  "llvm.hexagon.M2.mpy.lh.s1",
  "llvm.hexagon.M2.mpy.ll.s0",
  "llvm.hexagon.M2.mpy.ll.s1",
  "llvm.hexagon.M2.mpy.nac.hh.s0",
  "llvm.hexagon.M2.mpy.nac.hh.s1",
  "llvm.hexagon.M2.mpy.nac.hl.s0",
  "llvm.hexagon.M2.mpy.nac.hl.s1",
  "llvm.hexagon.M2.mpy.nac.lh.s0",
  "llvm.hexagon.M2.mpy.nac.lh.s1",
  "llvm.hexagon.M2.mpy.nac.ll.s0",
  "llvm.hexagon.M2.mpy.nac.ll.s1",
  "llvm.hexagon.M2.mpy.nac.sat.hh.s0",
  "llvm.hexagon.M2.mpy.nac.sat.hh.s1",
  "llvm.hexagon.M2.mpy.nac.sat.hl.s0",
  "llvm.hexagon.M2.mpy.nac.sat.hl.s1",
  "llvm.hexagon.M2.mpy.nac.sat.lh.s0",
  "llvm.hexagon.M2.mpy.nac.sat.lh.s1",
  "llvm.hexagon.M2.mpy.nac.sat.ll.s0",
  "llvm.hexagon.M2.mpy.nac.sat.ll.s1",
  "llvm.hexagon.M2.mpy.rnd.hh.s0",
  "llvm.hexagon.M2.mpy.rnd.hh.s1",
  "llvm.hexagon.M2.mpy.rnd.hl.s0",
  "llvm.hexagon.M2.mpy.rnd.hl.s1",
  "llvm.hexagon.M2.mpy.rnd.lh.s0",
  "llvm.hexagon.M2.mpy.rnd.lh.s1",
  "llvm.hexagon.M2.mpy.rnd.ll.s0",
  "llvm.hexagon.M2.mpy.rnd.ll.s1",
  "llvm.hexagon.M2.mpy.sat.hh.s0",
  "llvm.hexagon.M2.mpy.sat.hh.s1",
  "llvm.hexagon.M2.mpy.sat.hl.s0",
  "llvm.hexagon.M2.mpy.sat.hl.s1",
  "llvm.hexagon.M2.mpy.sat.lh.s0",
  "llvm.hexagon.M2.mpy.sat.lh.s1",
  "llvm.hexagon.M2.mpy.sat.ll.s0",
  "llvm.hexagon.M2.mpy.sat.ll.s1",
  "llvm.hexagon.M2.mpy.sat.rnd.hh.s0",
  "llvm.hexagon.M2.mpy.sat.rnd.hh.s1",
  "llvm.hexagon.M2.mpy.sat.rnd.hl.s0",
  "llvm.hexagon.M2.mpy.sat.rnd.hl.s1",
  "llvm.hexagon.M2.mpy.sat.rnd.lh.s0",
  "llvm.hexagon.M2.mpy.sat.rnd.lh.s1",
  "llvm.hexagon.M2.mpy.sat.rnd.ll.s0",
  "llvm.hexagon.M2.mpy.sat.rnd.ll.s1",
  "llvm.hexagon.M2.mpy.up",
  "llvm.hexagon.M2.mpy.up.s1",
  "llvm.hexagon.M2.mpy.up.s1.sat",
  "llvm.hexagon.M2.mpyd.acc.hh.s0",
  "llvm.hexagon.M2.mpyd.acc.hh.s1",
  "llvm.hexagon.M2.mpyd.acc.hl.s0",
  "llvm.hexagon.M2.mpyd.acc.hl.s1",
  "llvm.hexagon.M2.mpyd.acc.lh.s0",
  "llvm.hexagon.M2.mpyd.acc.lh.s1",
  "llvm.hexagon.M2.mpyd.acc.ll.s0",
  "llvm.hexagon.M2.mpyd.acc.ll.s1",
  "llvm.hexagon.M2.mpyd.hh.s0",
  "llvm.hexagon.M2.mpyd.hh.s1",
  "llvm.hexagon.M2.mpyd.hl.s0",
  "llvm.hexagon.M2.mpyd.hl.s1",
  "llvm.hexagon.M2.mpyd.lh.s0",
  "llvm.hexagon.M2.mpyd.lh.s1",
  "llvm.hexagon.M2.mpyd.ll.s0",
  "llvm.hexagon.M2.mpyd.ll.s1",
  "llvm.hexagon.M2.mpyd.nac.hh.s0",
  "llvm.hexagon.M2.mpyd.nac.hh.s1",
  "llvm.hexagon.M2.mpyd.nac.hl.s0",
  "llvm.hexagon.M2.mpyd.nac.hl.s1",
  "llvm.hexagon.M2.mpyd.nac.lh.s0",
  "llvm.hexagon.M2.mpyd.nac.lh.s1",
  "llvm.hexagon.M2.mpyd.nac.ll.s0",
  "llvm.hexagon.M2.mpyd.nac.ll.s1",
  "llvm.hexagon.M2.mpyd.rnd.hh.s0",
  "llvm.hexagon.M2.mpyd.rnd.hh.s1",
  "llvm.hexagon.M2.mpyd.rnd.hl.s0",
  "llvm.hexagon.M2.mpyd.rnd.hl.s1",
  "llvm.hexagon.M2.mpyd.rnd.lh.s0",
  "llvm.hexagon.M2.mpyd.rnd.lh.s1",
  "llvm.hexagon.M2.mpyd.rnd.ll.s0",
  "llvm.hexagon.M2.mpyd.rnd.ll.s1",
  "llvm.hexagon.M2.mpyi",
  "llvm.hexagon.M2.mpysmi",
  "llvm.hexagon.M2.mpysu.up",
  "llvm.hexagon.M2.mpyu.acc.hh.s0",
  "llvm.hexagon.M2.mpyu.acc.hh.s1",
  "llvm.hexagon.M2.mpyu.acc.hl.s0",
  "llvm.hexagon.M2.mpyu.acc.hl.s1",
  "llvm.hexagon.M2.mpyu.acc.lh.s0",
  "llvm.hexagon.M2.mpyu.acc.lh.s1",
  "llvm.hexagon.M2.mpyu.acc.ll.s0",
  "llvm.hexagon.M2.mpyu.acc.ll.s1",
  "llvm.hexagon.M2.mpyu.hh.s0",
  "llvm.hexagon.M2.mpyu.hh.s1",
  "llvm.hexagon.M2.mpyu.hl.s0",
  "llvm.hexagon.M2.mpyu.hl.s1",
  "llvm.hexagon.M2.mpyu.lh.s0",
  "llvm.hexagon.M2.mpyu.lh.s1",
  "llvm.hexagon.M2.mpyu.ll.s0",
  "llvm.hexagon.M2.mpyu.ll.s1",
  "llvm.hexagon.M2.mpyu.nac.hh.s0",
  "llvm.hexagon.M2.mpyu.nac.hh.s1",
  "llvm.hexagon.M2.mpyu.nac.hl.s0",
  "llvm.hexagon.M2.mpyu.nac.hl.s1",
  "llvm.hexagon.M2.mpyu.nac.lh.s0",
  "llvm.hexagon.M2.mpyu.nac.lh.s1",
  "llvm.hexagon.M2.mpyu.nac.ll.s0",
  "llvm.hexagon.M2.mpyu.nac.ll.s1",
  "llvm.hexagon.M2.mpyu.up",
  "llvm.hexagon.M2.mpyud.acc.hh.s0",
  "llvm.hexagon.M2.mpyud.acc.hh.s1",
  "llvm.hexagon.M2.mpyud.acc.hl.s0",
  "llvm.hexagon.M2.mpyud.acc.hl.s1",
  "llvm.hexagon.M2.mpyud.acc.lh.s0",
  "llvm.hexagon.M2.mpyud.acc.lh.s1",
  "llvm.hexagon.M2.mpyud.acc.ll.s0",
  "llvm.hexagon.M2.mpyud.acc.ll.s1",
  "llvm.hexagon.M2.mpyud.hh.s0",
  "llvm.hexagon.M2.mpyud.hh.s1",
  "llvm.hexagon.M2.mpyud.hl.s0",
  "llvm.hexagon.M2.mpyud.hl.s1",
  "llvm.hexagon.M2.mpyud.lh.s0",
  "llvm.hexagon.M2.mpyud.lh.s1",
  "llvm.hexagon.M2.mpyud.ll.s0",
  "llvm.hexagon.M2.mpyud.ll.s1",
  "llvm.hexagon.M2.mpyud.nac.hh.s0",
  "llvm.hexagon.M2.mpyud.nac.hh.s1",
  "llvm.hexagon.M2.mpyud.nac.hl.s0",
  "llvm.hexagon.M2.mpyud.nac.hl.s1",
  "llvm.hexagon.M2.mpyud.nac.lh.s0",
  "llvm.hexagon.M2.mpyud.nac.lh.s1",
  "llvm.hexagon.M2.mpyud.nac.ll.s0",
  "llvm.hexagon.M2.mpyud.nac.ll.s1",
  "llvm.hexagon.M2.mpyui",
  "llvm.hexagon.M2.nacci",
  "llvm.hexagon.M2.naccii",
  "llvm.hexagon.M2.subacc",
  "llvm.hexagon.M2.vabsdiffh",
  "llvm.hexagon.M2.vabsdiffw",
  "llvm.hexagon.M2.vcmac.s0.sat.i",
  "llvm.hexagon.M2.vcmac.s0.sat.r",
  "llvm.hexagon.M2.vcmpy.s0.sat.i",
  "llvm.hexagon.M2.vcmpy.s0.sat.r",
  "llvm.hexagon.M2.vcmpy.s1.sat.i",
  "llvm.hexagon.M2.vcmpy.s1.sat.r",
  "llvm.hexagon.M2.vdmacs.s0",
  "llvm.hexagon.M2.vdmacs.s1",
  "llvm.hexagon.M2.vdmpyrs.s0",
  "llvm.hexagon.M2.vdmpyrs.s1",
  "llvm.hexagon.M2.vdmpys.s0",
  "llvm.hexagon.M2.vdmpys.s1",
  "llvm.hexagon.M2.vmac2",
  "llvm.hexagon.M2.vmac2es",
  "llvm.hexagon.M2.vmac2es.s0",
  "llvm.hexagon.M2.vmac2es.s1",
  "llvm.hexagon.M2.vmac2s.s0",
  "llvm.hexagon.M2.vmac2s.s1",
  "llvm.hexagon.M2.vmac2su.s0",
  "llvm.hexagon.M2.vmac2su.s1",
  "llvm.hexagon.M2.vmpy2es.s0",
  "llvm.hexagon.M2.vmpy2es.s1",
  "llvm.hexagon.M2.vmpy2s.s0",
  "llvm.hexagon.M2.vmpy2s.s0pack",
  "llvm.hexagon.M2.vmpy2s.s1",
  "llvm.hexagon.M2.vmpy2s.s1pack",
  "llvm.hexagon.M2.vmpy2su.s0",
  "llvm.hexagon.M2.vmpy2su.s1",
  "llvm.hexagon.M2.vraddh",
  "llvm.hexagon.M2.vradduh",
  "llvm.hexagon.M2.vrcmaci.s0",
  "llvm.hexagon.M2.vrcmaci.s0c",
  "llvm.hexagon.M2.vrcmacr.s0",
  "llvm.hexagon.M2.vrcmacr.s0c",
  "llvm.hexagon.M2.vrcmpyi.s0",
  "llvm.hexagon.M2.vrcmpyi.s0c",
  "llvm.hexagon.M2.vrcmpyr.s0",
  "llvm.hexagon.M2.vrcmpyr.s0c",
  "llvm.hexagon.M2.vrcmpys.acc.s1",
  "llvm.hexagon.M2.vrcmpys.s1",
  "llvm.hexagon.M2.vrcmpys.s1rp",
  "llvm.hexagon.M2.vrmac.s0",
  "llvm.hexagon.M2.vrmpy.s0",
  "llvm.hexagon.M2.xor.xacc",
  "llvm.hexagon.M4.and.and",
  "llvm.hexagon.M4.and.andn",
  "llvm.hexagon.M4.and.or",
  "llvm.hexagon.M4.and.xor",
  "llvm.hexagon.M4.cmpyi.wh",
  "llvm.hexagon.M4.cmpyi.whc",
  "llvm.hexagon.M4.cmpyr.wh",
  "llvm.hexagon.M4.cmpyr.whc",
  "llvm.hexagon.M4.mac.up.s1.sat",
  "llvm.hexagon.M4.mpyri.addi",
  "llvm.hexagon.M4.mpyri.addr",
  "llvm.hexagon.M4.mpyri.addr.u2",
  "llvm.hexagon.M4.mpyrr.addi",
  "llvm.hexagon.M4.mpyrr.addr",
  "llvm.hexagon.M4.nac.up.s1.sat",
  "llvm.hexagon.M4.or.and",
  "llvm.hexagon.M4.or.andn",
  "llvm.hexagon.M4.or.or",
  "llvm.hexagon.M4.or.xor",
  "llvm.hexagon.M4.pmpyw",
  "llvm.hexagon.M4.pmpyw.acc",
  "llvm.hexagon.M4.vpmpyh",
  "llvm.hexagon.M4.vpmpyh.acc",
  "llvm.hexagon.M4.vrmpyeh.acc.s0",
  "llvm.hexagon.M4.vrmpyeh.acc.s1",
  "llvm.hexagon.M4.vrmpyeh.s0",
  "llvm.hexagon.M4.vrmpyeh.s1",
  "llvm.hexagon.M4.vrmpyoh.acc.s0",
  "llvm.hexagon.M4.vrmpyoh.acc.s1",
  "llvm.hexagon.M4.vrmpyoh.s0",
  "llvm.hexagon.M4.vrmpyoh.s1",
  "llvm.hexagon.M4.xor.and",
  "llvm.hexagon.M4.xor.andn",
  "llvm.hexagon.M4.xor.or",
  "llvm.hexagon.M4.xor.xacc",
  "llvm.hexagon.M5.vdmacbsu",
  "llvm.hexagon.M5.vdmpybsu",
  "llvm.hexagon.M5.vmacbsu",
  "llvm.hexagon.M5.vmacbuu",
  "llvm.hexagon.M5.vmpybsu",
  "llvm.hexagon.M5.vmpybuu",
  "llvm.hexagon.M5.vrmacbsu",
  "llvm.hexagon.M5.vrmacbuu",
  "llvm.hexagon.M5.vrmpybsu",
  "llvm.hexagon.M5.vrmpybuu",
  "llvm.hexagon.S2.addasl.rrri",
  "llvm.hexagon.S2.asl.i.p",
  "llvm.hexagon.S2.asl.i.p.acc",
  "llvm.hexagon.S2.asl.i.p.and",
  "llvm.hexagon.S2.asl.i.p.nac",
  "llvm.hexagon.S2.asl.i.p.or",
  "llvm.hexagon.S2.asl.i.p.xacc",
  "llvm.hexagon.S2.asl.i.r",
  "llvm.hexagon.S2.asl.i.r.acc",
  "llvm.hexagon.S2.asl.i.r.and",
  "llvm.hexagon.S2.asl.i.r.nac",
  "llvm.hexagon.S2.asl.i.r.or",
  "llvm.hexagon.S2.asl.i.r.sat",
  "llvm.hexagon.S2.asl.i.r.xacc",
  "llvm.hexagon.S2.asl.i.vh",
  "llvm.hexagon.S2.asl.i.vw",
  "llvm.hexagon.S2.asl.r.p",
  "llvm.hexagon.S2.asl.r.p.acc",
  "llvm.hexagon.S2.asl.r.p.and",
  "llvm.hexagon.S2.asl.r.p.nac",
  "llvm.hexagon.S2.asl.r.p.or",
  "llvm.hexagon.S2.asl.r.p.xor",
  "llvm.hexagon.S2.asl.r.r",
  "llvm.hexagon.S2.asl.r.r.acc",
  "llvm.hexagon.S2.asl.r.r.and",
  "llvm.hexagon.S2.asl.r.r.nac",
  "llvm.hexagon.S2.asl.r.r.or",
  "llvm.hexagon.S2.asl.r.r.sat",
  "llvm.hexagon.S2.asl.r.vh",
  "llvm.hexagon.S2.asl.r.vw",
  "llvm.hexagon.S2.asr.i.p",
  "llvm.hexagon.S2.asr.i.p.acc",
  "llvm.hexagon.S2.asr.i.p.and",
  "llvm.hexagon.S2.asr.i.p.nac",
  "llvm.hexagon.S2.asr.i.p.or",
  "llvm.hexagon.S2.asr.i.p.rnd",
  "llvm.hexagon.S2.asr.i.p.rnd.goodsyntax",
  "llvm.hexagon.S2.asr.i.r",
  "llvm.hexagon.S2.asr.i.r.acc",
  "llvm.hexagon.S2.asr.i.r.and",
  "llvm.hexagon.S2.asr.i.r.nac",
  "llvm.hexagon.S2.asr.i.r.or",
  "llvm.hexagon.S2.asr.i.r.rnd",
  "llvm.hexagon.S2.asr.i.r.rnd.goodsyntax",
  "llvm.hexagon.S2.asr.i.svw.trun",
  "llvm.hexagon.S2.asr.i.vh",
  "llvm.hexagon.S2.asr.i.vw",
  "llvm.hexagon.S2.asr.r.p",
  "llvm.hexagon.S2.asr.r.p.acc",
  "llvm.hexagon.S2.asr.r.p.and",
  "llvm.hexagon.S2.asr.r.p.nac",
  "llvm.hexagon.S2.asr.r.p.or",
  "llvm.hexagon.S2.asr.r.p.xor",
  "llvm.hexagon.S2.asr.r.r",
  "llvm.hexagon.S2.asr.r.r.acc",
  "llvm.hexagon.S2.asr.r.r.and",
  "llvm.hexagon.S2.asr.r.r.nac",
  "llvm.hexagon.S2.asr.r.r.or",
  "llvm.hexagon.S2.asr.r.r.sat",
  "llvm.hexagon.S2.asr.r.svw.trun",
  "llvm.hexagon.S2.asr.r.vh",
  "llvm.hexagon.S2.asr.r.vw",
  "llvm.hexagon.S2.brev",
  "llvm.hexagon.S2.brevp",
  "llvm.hexagon.S2.cl0",
  "llvm.hexagon.S2.cl0p",
  "llvm.hexagon.S2.cl1",
  "llvm.hexagon.S2.cl1p",
  "llvm.hexagon.S2.clb",
  "llvm.hexagon.S2.clbnorm",
  "llvm.hexagon.S2.clbp",
  "llvm.hexagon.S2.clrbit.i",
  "llvm.hexagon.S2.clrbit.r",
  "llvm.hexagon.S2.ct0",
  "llvm.hexagon.S2.ct0p",
  "llvm.hexagon.S2.ct1",
  "llvm.hexagon.S2.ct1p",
  "llvm.hexagon.S2.deinterleave",
  "llvm.hexagon.S2.extractu",
  "llvm.hexagon.S2.extractu.rp",
  "llvm.hexagon.S2.extractup",
  "llvm.hexagon.S2.extractup.rp",
  "llvm.hexagon.S2.insert",
  "llvm.hexagon.S2.insert.rp",
  "llvm.hexagon.S2.insertp",
  "llvm.hexagon.S2.insertp.rp",
  "llvm.hexagon.S2.interleave",
  "llvm.hexagon.S2.lfsp",
  "llvm.hexagon.S2.lsl.r.p",
  "llvm.hexagon.S2.lsl.r.p.acc",
  "llvm.hexagon.S2.lsl.r.p.and",
  "llvm.hexagon.S2.lsl.r.p.nac",
  "llvm.hexagon.S2.lsl.r.p.or",
  "llvm.hexagon.S2.lsl.r.p.xor",
  "llvm.hexagon.S2.lsl.r.r",
  "llvm.hexagon.S2.lsl.r.r.acc",
  "llvm.hexagon.S2.lsl.r.r.and",
  "llvm.hexagon.S2.lsl.r.r.nac",
  "llvm.hexagon.S2.lsl.r.r.or",
  "llvm.hexagon.S2.lsl.r.vh",
  "llvm.hexagon.S2.lsl.r.vw",
  "llvm.hexagon.S2.lsr.i.p",
  "llvm.hexagon.S2.lsr.i.p.acc",
  "llvm.hexagon.S2.lsr.i.p.and",
  "llvm.hexagon.S2.lsr.i.p.nac",
  "llvm.hexagon.S2.lsr.i.p.or",
  "llvm.hexagon.S2.lsr.i.p.xacc",
  "llvm.hexagon.S2.lsr.i.r",
  "llvm.hexagon.S2.lsr.i.r.acc",
  "llvm.hexagon.S2.lsr.i.r.and",
  "llvm.hexagon.S2.lsr.i.r.nac",
  "llvm.hexagon.S2.lsr.i.r.or",
  "llvm.hexagon.S2.lsr.i.r.xacc",
  "llvm.hexagon.S2.lsr.i.vh",
  "llvm.hexagon.S2.lsr.i.vw",
  "llvm.hexagon.S2.lsr.r.p",
  "llvm.hexagon.S2.lsr.r.p.acc",
  "llvm.hexagon.S2.lsr.r.p.and",
  "llvm.hexagon.S2.lsr.r.p.nac",
  "llvm.hexagon.S2.lsr.r.p.or",
  "llvm.hexagon.S2.lsr.r.p.xor",
  "llvm.hexagon.S2.lsr.r.r",
  "llvm.hexagon.S2.lsr.r.r.acc",
  "llvm.hexagon.S2.lsr.r.r.and",
  "llvm.hexagon.S2.lsr.r.r.nac",
  "llvm.hexagon.S2.lsr.r.r.or",
  "llvm.hexagon.S2.lsr.r.vh",
  "llvm.hexagon.S2.lsr.r.vw",
  "llvm.hexagon.S2.packhl",
  "llvm.hexagon.S2.parityp",
  "llvm.hexagon.S2.setbit.i",
  "llvm.hexagon.S2.setbit.r",
  "llvm.hexagon.S2.shuffeb",
  "llvm.hexagon.S2.shuffeh",
  "llvm.hexagon.S2.shuffob",
  "llvm.hexagon.S2.shuffoh",
  "llvm.hexagon.S2.svsathb",
  "llvm.hexagon.S2.svsathub",
  "llvm.hexagon.S2.tableidxb.goodsyntax",
  "llvm.hexagon.S2.tableidxd.goodsyntax",
  "llvm.hexagon.S2.tableidxh.goodsyntax",
  "llvm.hexagon.S2.tableidxw.goodsyntax",
  "llvm.hexagon.S2.togglebit.i",
  "llvm.hexagon.S2.togglebit.r",
  "llvm.hexagon.S2.tstbit.i",
  "llvm.hexagon.S2.tstbit.r",
  "llvm.hexagon.S2.valignib",
  "llvm.hexagon.S2.valignrb",
  "llvm.hexagon.S2.vcnegh",
  "llvm.hexagon.S2.vcrotate",
  "llvm.hexagon.S2.vrcnegh",
  "llvm.hexagon.S2.vrndpackwh",
  "llvm.hexagon.S2.vrndpackwhs",
  "llvm.hexagon.S2.vsathb",
  "llvm.hexagon.S2.vsathb.nopack",
  "llvm.hexagon.S2.vsathub",
  "llvm.hexagon.S2.vsathub.nopack",
  "llvm.hexagon.S2.vsatwh",
  "llvm.hexagon.S2.vsatwh.nopack",
  "llvm.hexagon.S2.vsatwuh",
  "llvm.hexagon.S2.vsatwuh.nopack",
  "llvm.hexagon.S2.vsplatrb",
  "llvm.hexagon.S2.vsplatrh",
  "llvm.hexagon.S2.vspliceib",
  "llvm.hexagon.S2.vsplicerb",
  "llvm.hexagon.S2.vsxtbh",
  "llvm.hexagon.S2.vsxthw",
  "llvm.hexagon.S2.vtrunehb",
  "llvm.hexagon.S2.vtrunewh",
  "llvm.hexagon.S2.vtrunohb",
  "llvm.hexagon.S2.vtrunowh",
  "llvm.hexagon.S2.vzxtbh",
  "llvm.hexagon.S2.vzxthw",
  "llvm.hexagon.S4.addaddi",
  "llvm.hexagon.S4.addi.asl.ri",
  "llvm.hexagon.S4.addi.lsr.ri",
  "llvm.hexagon.S4.andi.asl.ri",
  "llvm.hexagon.S4.andi.lsr.ri",
  "llvm.hexagon.S4.clbaddi",
  "llvm.hexagon.S4.clbpaddi",
  "llvm.hexagon.S4.clbpnorm",
  "llvm.hexagon.S4.extract",
  "llvm.hexagon.S4.extract.rp",
  "llvm.hexagon.S4.extractp",
  "llvm.hexagon.S4.extractp.rp",
  "llvm.hexagon.S4.lsli",
  "llvm.hexagon.S4.ntstbit.i",
  "llvm.hexagon.S4.ntstbit.r",
  "llvm.hexagon.S4.or.andi",
  "llvm.hexagon.S4.or.andix",
  "llvm.hexagon.S4.or.ori",
  "llvm.hexagon.S4.ori.asl.ri",
  "llvm.hexagon.S4.ori.lsr.ri",
  "llvm.hexagon.S4.parity",
  "llvm.hexagon.S4.subaddi",
  "llvm.hexagon.S4.subi.asl.ri",
  "llvm.hexagon.S4.subi.lsr.ri",
  "llvm.hexagon.S4.vrcrotate",
  "llvm.hexagon.S4.vrcrotate.acc",
  "llvm.hexagon.S4.vxaddsubh",
  "llvm.hexagon.S4.vxaddsubhr",
  "llvm.hexagon.S4.vxaddsubw",
  "llvm.hexagon.S4.vxsubaddh",
  "llvm.hexagon.S4.vxsubaddhr",
  "llvm.hexagon.S4.vxsubaddw",
  "llvm.hexagon.S5.asrhub.rnd.sat.goodsyntax",
  "llvm.hexagon.S5.asrhub.sat",
  "llvm.hexagon.S5.popcountp",
  "llvm.hexagon.S5.vasrhrnd.goodsyntax",
  "llvm.hexagon.SI.to.SXTHI.asrh",
  "llvm.hexagon.circ.ldd",
  "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.mips.absq.s.ph",
  "llvm.mips.absq.s.qb",
  "llvm.mips.absq.s.w",
  "llvm.mips.add.a.b",
  "llvm.mips.add.a.d",
  "llvm.mips.add.a.h",
  "llvm.mips.add.a.w",
  "llvm.mips.addq.ph",
  "llvm.mips.addq.s.ph",
  "llvm.mips.addq.s.w",
  "llvm.mips.addqh.ph",
  "llvm.mips.addqh.r.ph",
  "llvm.mips.addqh.r.w",
  "llvm.mips.addqh.w",
  "llvm.mips.adds.a.b",
  "llvm.mips.adds.a.d",
  "llvm.mips.adds.a.h",
  "llvm.mips.adds.a.w",
  "llvm.mips.adds.s.b",
  "llvm.mips.adds.s.d",
  "llvm.mips.adds.s.h",
  "llvm.mips.adds.s.w",
  "llvm.mips.adds.u.b",
  "llvm.mips.adds.u.d",
  "llvm.mips.adds.u.h",
  "llvm.mips.adds.u.w",
  "llvm.mips.addsc",
  "llvm.mips.addu.ph",
  "llvm.mips.addu.qb",
  "llvm.mips.addu.s.ph",
  "llvm.mips.addu.s.qb",
  "llvm.mips.adduh.qb",
  "llvm.mips.adduh.r.qb",
  "llvm.mips.addv.b",
  "llvm.mips.addv.d",
  "llvm.mips.addv.h",
  "llvm.mips.addv.w",
  "llvm.mips.addvi.b",
  "llvm.mips.addvi.d",
  "llvm.mips.addvi.h",
  "llvm.mips.addvi.w",
  "llvm.mips.addwc",
  "llvm.mips.and.v",
  "llvm.mips.andi.b",
  "llvm.mips.append",
  "llvm.mips.asub.s.b",
  "llvm.mips.asub.s.d",
  "llvm.mips.asub.s.h",
  "llvm.mips.asub.s.w",
  "llvm.mips.asub.u.b",
  "llvm.mips.asub.u.d",
  "llvm.mips.asub.u.h",
  "llvm.mips.asub.u.w",
  "llvm.mips.ave.s.b",
  "llvm.mips.ave.s.d",
  "llvm.mips.ave.s.h",
  "llvm.mips.ave.s.w",
  "llvm.mips.ave.u.b",
  "llvm.mips.ave.u.d",
  "llvm.mips.ave.u.h",
  "llvm.mips.ave.u.w",
  "llvm.mips.aver.s.b",
  "llvm.mips.aver.s.d",
  "llvm.mips.aver.s.h",
  "llvm.mips.aver.s.w",
  "llvm.mips.aver.u.b",
  "llvm.mips.aver.u.d",
  "llvm.mips.aver.u.h",
  "llvm.mips.aver.u.w",
  "llvm.mips.balign",
  "llvm.mips.bclr.b",
  "llvm.mips.bclr.d",
  "llvm.mips.bclr.h",
  "llvm.mips.bclr.w",
  "llvm.mips.bclri.b",
  "llvm.mips.bclri.d",
  "llvm.mips.bclri.h",
  "llvm.mips.bclri.w",
  "llvm.mips.binsl.b",
  "llvm.mips.binsl.d",
  "llvm.mips.binsl.h",
  "llvm.mips.binsl.w",
  "llvm.mips.binsli.b",
  "llvm.mips.binsli.d",
  "llvm.mips.binsli.h",
  "llvm.mips.binsli.w",
  "llvm.mips.binsr.b",
  "llvm.mips.binsr.d",
  "llvm.mips.binsr.h",
  "llvm.mips.binsr.w",
  "llvm.mips.binsri.b",
  "llvm.mips.binsri.d",
  "llvm.mips.binsri.h",
  "llvm.mips.binsri.w",
  "llvm.mips.bitrev",
  "llvm.mips.bmnz.v",
  "llvm.mips.bmnzi.b",
  "llvm.mips.bmz.v",
  "llvm.mips.bmzi.b",
  "llvm.mips.bneg.b",
  "llvm.mips.bneg.d",
  "llvm.mips.bneg.h",
  "llvm.mips.bneg.w",
  "llvm.mips.bnegi.b",
  "llvm.mips.bnegi.d",
  "llvm.mips.bnegi.h",
  "llvm.mips.bnegi.w",
  "llvm.mips.bnz.b",
  "llvm.mips.bnz.d",
  "llvm.mips.bnz.h",
  "llvm.mips.bnz.v",
  "llvm.mips.bnz.w",
  "llvm.mips.bposge32",
  "llvm.mips.bsel.v",
  "llvm.mips.bseli.b",
  "llvm.mips.bset.b",
  "llvm.mips.bset.d",
  "llvm.mips.bset.h",
  "llvm.mips.bset.w",
  "llvm.mips.bseti.b",
  "llvm.mips.bseti.d",
  "llvm.mips.bseti.h",
  "llvm.mips.bseti.w",
  "llvm.mips.bz.b",
  "llvm.mips.bz.d",
  "llvm.mips.bz.h",
  "llvm.mips.bz.v",
  "llvm.mips.bz.w",
  "llvm.mips.ceq.b",
  "llvm.mips.ceq.d",
  "llvm.mips.ceq.h",
  "llvm.mips.ceq.w",
  "llvm.mips.ceqi.b",
  "llvm.mips.ceqi.d",
  "llvm.mips.ceqi.h",
  "llvm.mips.ceqi.w",
  "llvm.mips.cfcmsa",
  "llvm.mips.cle.s.b",
  "llvm.mips.cle.s.d",
  "llvm.mips.cle.s.h",
  "llvm.mips.cle.s.w",
  "llvm.mips.cle.u.b",
  "llvm.mips.cle.u.d",
  "llvm.mips.cle.u.h",
  "llvm.mips.cle.u.w",
  "llvm.mips.clei.s.b",
  "llvm.mips.clei.s.d",
  "llvm.mips.clei.s.h",
  "llvm.mips.clei.s.w",
  "llvm.mips.clei.u.b",
  "llvm.mips.clei.u.d",
  "llvm.mips.clei.u.h",
  "llvm.mips.clei.u.w",
  "llvm.mips.clt.s.b",
  "llvm.mips.clt.s.d",
  "llvm.mips.clt.s.h",
  "llvm.mips.clt.s.w",
  "llvm.mips.clt.u.b",
  "llvm.mips.clt.u.d",
  "llvm.mips.clt.u.h",
  "llvm.mips.clt.u.w",
  "llvm.mips.clti.s.b",
  "llvm.mips.clti.s.d",
  "llvm.mips.clti.s.h",
  "llvm.mips.clti.s.w",
  "llvm.mips.clti.u.b",
  "llvm.mips.clti.u.d",
  "llvm.mips.clti.u.h",
  "llvm.mips.clti.u.w",
  "llvm.mips.cmp.eq.ph",
  "llvm.mips.cmp.le.ph",
  "llvm.mips.cmp.lt.ph",
  "llvm.mips.cmpgdu.eq.qb",
  "llvm.mips.cmpgdu.le.qb",
  "llvm.mips.cmpgdu.lt.qb",
  "llvm.mips.cmpgu.eq.qb",
  "llvm.mips.cmpgu.le.qb",
  "llvm.mips.cmpgu.lt.qb",
  "llvm.mips.cmpu.eq.qb",
  "llvm.mips.cmpu.le.qb",
  "llvm.mips.cmpu.lt.qb",
  "llvm.mips.copy.s.b",
  "llvm.mips.copy.s.d",
  "llvm.mips.copy.s.h",
  "llvm.mips.copy.s.w",
  "llvm.mips.copy.u.b",
  "llvm.mips.copy.u.d",
  "llvm.mips.copy.u.h",
  "llvm.mips.copy.u.w",
  "llvm.mips.ctcmsa",
  "llvm.mips.div.s.b",
  "llvm.mips.div.s.d",
  "llvm.mips.div.s.h",
  "llvm.mips.div.s.w",
  "llvm.mips.div.u.b",
  "llvm.mips.div.u.d",
  "llvm.mips.div.u.h",
  "llvm.mips.div.u.w",
  "llvm.mips.dlsa",
  "llvm.mips.dotp.s.d",
  "llvm.mips.dotp.s.h",
  "llvm.mips.dotp.s.w",
  "llvm.mips.dotp.u.d",
  "llvm.mips.dotp.u.h",
  "llvm.mips.dotp.u.w",
  "llvm.mips.dpa.w.ph",
  "llvm.mips.dpadd.s.d",
  "llvm.mips.dpadd.s.h",
  "llvm.mips.dpadd.s.w",
  "llvm.mips.dpadd.u.d",
  "llvm.mips.dpadd.u.h",
  "llvm.mips.dpadd.u.w",
  "llvm.mips.dpaq.s.w.ph",
  "llvm.mips.dpaq.sa.l.w",
  "llvm.mips.dpaqx.s.w.ph",
  "llvm.mips.dpaqx.sa.w.ph",
  "llvm.mips.dpau.h.qbl",
  "llvm.mips.dpau.h.qbr",
  "llvm.mips.dpax.w.ph",
  "llvm.mips.dps.w.ph",
  "llvm.mips.dpsq.s.w.ph",
  "llvm.mips.dpsq.sa.l.w",
  "llvm.mips.dpsqx.s.w.ph",
  "llvm.mips.dpsqx.sa.w.ph",
  "llvm.mips.dpsu.h.qbl",
  "llvm.mips.dpsu.h.qbr",
  "llvm.mips.dpsub.s.d",
  "llvm.mips.dpsub.s.h",
  "llvm.mips.dpsub.s.w",
  "llvm.mips.dpsub.u.d",
  "llvm.mips.dpsub.u.h",
  "llvm.mips.dpsub.u.w",
  "llvm.mips.dpsx.w.ph",
  "llvm.mips.extp",
  "llvm.mips.extpdp",
  "llvm.mips.extr.r.w",
  "llvm.mips.extr.rs.w",
  "llvm.mips.extr.s.h",
  "llvm.mips.extr.w",
  "llvm.mips.fadd.d",
  "llvm.mips.fadd.w",
  "llvm.mips.fcaf.d",
  "llvm.mips.fcaf.w",
  "llvm.mips.fceq.d",
  "llvm.mips.fceq.w",
  "llvm.mips.fclass.d",
  "llvm.mips.fclass.w",
  "llvm.mips.fcle.d",
  "llvm.mips.fcle.w",
  "llvm.mips.fclt.d",
  "llvm.mips.fclt.w",
  "llvm.mips.fcne.d",
  "llvm.mips.fcne.w",
  "llvm.mips.fcor.d",
  "llvm.mips.fcor.w",
  "llvm.mips.fcueq.d",
  "llvm.mips.fcueq.w",
  "llvm.mips.fcule.d",
  "llvm.mips.fcule.w",
  "llvm.mips.fcult.d",
  "llvm.mips.fcult.w",
  "llvm.mips.fcun.d",
  "llvm.mips.fcun.w",
  "llvm.mips.fcune.d",
  "llvm.mips.fcune.w",
  "llvm.mips.fdiv.d",
  "llvm.mips.fdiv.w",
  "llvm.mips.fexdo.h",
  "llvm.mips.fexdo.w",
  "llvm.mips.fexp2.d",
  "llvm.mips.fexp2.w",
  "llvm.mips.fexupl.d",
  "llvm.mips.fexupl.w",
  "llvm.mips.fexupr.d",
  "llvm.mips.fexupr.w",
  "llvm.mips.ffint.s.d",
  "llvm.mips.ffint.s.w",
  "llvm.mips.ffint.u.d",
  "llvm.mips.ffint.u.w",
  "llvm.mips.ffql.d",
  "llvm.mips.ffql.w",
  "llvm.mips.ffqr.d",
  "llvm.mips.ffqr.w",
  "llvm.mips.fill.b",
  "llvm.mips.fill.d",
  "llvm.mips.fill.h",
  "llvm.mips.fill.w",
  "llvm.mips.flog2.d",
  "llvm.mips.flog2.w",
  "llvm.mips.fmadd.d",
  "llvm.mips.fmadd.w",
  "llvm.mips.fmax.a.d",
  "llvm.mips.fmax.a.w",
  "llvm.mips.fmax.d",
  "llvm.mips.fmax.w",
  "llvm.mips.fmin.a.d",
  "llvm.mips.fmin.a.w",
  "llvm.mips.fmin.d",
  "llvm.mips.fmin.w",
  "llvm.mips.fmsub.d",
  "llvm.mips.fmsub.w",
  "llvm.mips.fmul.d",
  "llvm.mips.fmul.w",
  "llvm.mips.frcp.d",
  "llvm.mips.frcp.w",
  "llvm.mips.frint.d",
  "llvm.mips.frint.w",
  "llvm.mips.frsqrt.d",
  "llvm.mips.frsqrt.w",
  "llvm.mips.fsaf.d",
  "llvm.mips.fsaf.w",
  "llvm.mips.fseq.d",
  "llvm.mips.fseq.w",
  "llvm.mips.fsle.d",
  "llvm.mips.fsle.w",
  "llvm.mips.fslt.d",
  "llvm.mips.fslt.w",
  "llvm.mips.fsne.d",
  "llvm.mips.fsne.w",
  "llvm.mips.fsor.d",
  "llvm.mips.fsor.w",
  "llvm.mips.fsqrt.d",
  "llvm.mips.fsqrt.w",
  "llvm.mips.fsub.d",
  "llvm.mips.fsub.w",
  "llvm.mips.fsueq.d",
  "llvm.mips.fsueq.w",
  "llvm.mips.fsule.d",
  "llvm.mips.fsule.w",
  "llvm.mips.fsult.d",
  "llvm.mips.fsult.w",
  "llvm.mips.fsun.d",
  "llvm.mips.fsun.w",
  "llvm.mips.fsune.d",
  "llvm.mips.fsune.w",
  "llvm.mips.ftint.s.d",
  "llvm.mips.ftint.s.w",
  "llvm.mips.ftint.u.d",
  "llvm.mips.ftint.u.w",
  "llvm.mips.ftq.h",
  "llvm.mips.ftq.w",
  "llvm.mips.ftrunc.s.d",
  "llvm.mips.ftrunc.s.w",
  "llvm.mips.ftrunc.u.d",
  "llvm.mips.ftrunc.u.w",
  "llvm.mips.hadd.s.d",
  "llvm.mips.hadd.s.h",
  "llvm.mips.hadd.s.w",
  "llvm.mips.hadd.u.d",
  "llvm.mips.hadd.u.h",
  "llvm.mips.hadd.u.w",
  "llvm.mips.hsub.s.d",
  "llvm.mips.hsub.s.h",
  "llvm.mips.hsub.s.w",
  "llvm.mips.hsub.u.d",
  "llvm.mips.hsub.u.h",
  "llvm.mips.hsub.u.w",
  "llvm.mips.ilvev.b",
  "llvm.mips.ilvev.d",
  "llvm.mips.ilvev.h",
  "llvm.mips.ilvev.w",
  "llvm.mips.ilvl.b",
  "llvm.mips.ilvl.d",
  "llvm.mips.ilvl.h",
  "llvm.mips.ilvl.w",
  "llvm.mips.ilvod.b",
  "llvm.mips.ilvod.d",
  "llvm.mips.ilvod.h",
  "llvm.mips.ilvod.w",
  "llvm.mips.ilvr.b",
  "llvm.mips.ilvr.d",
  "llvm.mips.ilvr.h",
  "llvm.mips.ilvr.w",
  "llvm.mips.insert.b",
  "llvm.mips.insert.d",
  "llvm.mips.insert.h",
  "llvm.mips.insert.w",
  "llvm.mips.insv",
  "llvm.mips.insve.b",
  "llvm.mips.insve.d",
  "llvm.mips.insve.h",
  "llvm.mips.insve.w",
  "llvm.mips.lbux",
  "llvm.mips.ld.b",
  "llvm.mips.ld.d",
  "llvm.mips.ld.h",
  "llvm.mips.ld.w",
  "llvm.mips.ldi.b",
  "llvm.mips.ldi.d",
  "llvm.mips.ldi.h",
  "llvm.mips.ldi.w",
  "llvm.mips.lhx",
  "llvm.mips.lsa",
  "llvm.mips.lwx",
  "llvm.mips.madd",
  "llvm.mips.madd.q.h",
  "llvm.mips.madd.q.w",
  "llvm.mips.maddr.q.h",
  "llvm.mips.maddr.q.w",
  "llvm.mips.maddu",
  "llvm.mips.maddv.b",
  "llvm.mips.maddv.d",
  "llvm.mips.maddv.h",
  "llvm.mips.maddv.w",
  "llvm.mips.maq.s.w.phl",
  "llvm.mips.maq.s.w.phr",
  "llvm.mips.maq.sa.w.phl",
  "llvm.mips.maq.sa.w.phr",
  "llvm.mips.max.a.b",
  "llvm.mips.max.a.d",
  "llvm.mips.max.a.h",
  "llvm.mips.max.a.w",
  "llvm.mips.max.s.b",
  "llvm.mips.max.s.d",
  "llvm.mips.max.s.h",
  "llvm.mips.max.s.w",
  "llvm.mips.max.u.b",
  "llvm.mips.max.u.d",
  "llvm.mips.max.u.h",
  "llvm.mips.max.u.w",
  "llvm.mips.maxi.s.b",
  "llvm.mips.maxi.s.d",
  "llvm.mips.maxi.s.h",
  "llvm.mips.maxi.s.w",
  "llvm.mips.maxi.u.b",
  "llvm.mips.maxi.u.d",
  "llvm.mips.maxi.u.h",
  "llvm.mips.maxi.u.w",
  "llvm.mips.min.a.b",
  "llvm.mips.min.a.d",
  "llvm.mips.min.a.h",
  "llvm.mips.min.a.w",
  "llvm.mips.min.s.b",
  "llvm.mips.min.s.d",
  "llvm.mips.min.s.h",
  "llvm.mips.min.s.w",
  "llvm.mips.min.u.b",
  "llvm.mips.min.u.d",
  "llvm.mips.min.u.h",
  "llvm.mips.min.u.w",
  "llvm.mips.mini.s.b",
  "llvm.mips.mini.s.d",
  "llvm.mips.mini.s.h",
  "llvm.mips.mini.s.w",
  "llvm.mips.mini.u.b",
  "llvm.mips.mini.u.d",
  "llvm.mips.mini.u.h",
  "llvm.mips.mini.u.w",
  "llvm.mips.mod.s.b",
  "llvm.mips.mod.s.d",
  "llvm.mips.mod.s.h",
  "llvm.mips.mod.s.w",
  "llvm.mips.mod.u.b",
  "llvm.mips.mod.u.d",
  "llvm.mips.mod.u.h",
  "llvm.mips.mod.u.w",
  "llvm.mips.modsub",
  "llvm.mips.move.v",
  "llvm.mips.msub",
  "llvm.mips.msub.q.h",
  "llvm.mips.msub.q.w",
  "llvm.mips.msubr.q.h",
  "llvm.mips.msubr.q.w",
  "llvm.mips.msubu",
  "llvm.mips.msubv.b",
  "llvm.mips.msubv.d",
  "llvm.mips.msubv.h",
  "llvm.mips.msubv.w",
  "llvm.mips.mthlip",
  "llvm.mips.mul.ph",
  "llvm.mips.mul.q.h",
  "llvm.mips.mul.q.w",
  "llvm.mips.mul.s.ph",
  "llvm.mips.muleq.s.w.phl",
  "llvm.mips.muleq.s.w.phr",
  "llvm.mips.muleu.s.ph.qbl",
  "llvm.mips.muleu.s.ph.qbr",
  "llvm.mips.mulq.rs.ph",
  "llvm.mips.mulq.rs.w",
  "llvm.mips.mulq.s.ph",
  "llvm.mips.mulq.s.w",
  "llvm.mips.mulr.q.h",
  "llvm.mips.mulr.q.w",
  "llvm.mips.mulsa.w.ph",
  "llvm.mips.mulsaq.s.w.ph",
  "llvm.mips.mult",
  "llvm.mips.multu",
  "llvm.mips.mulv.b",
  "llvm.mips.mulv.d",
  "llvm.mips.mulv.h",
  "llvm.mips.mulv.w",
  "llvm.mips.nloc.b",
  "llvm.mips.nloc.d",
  "llvm.mips.nloc.h",
  "llvm.mips.nloc.w",
  "llvm.mips.nlzc.b",
  "llvm.mips.nlzc.d",
  "llvm.mips.nlzc.h",
  "llvm.mips.nlzc.w",
  "llvm.mips.nor.v",
  "llvm.mips.nori.b",
  "llvm.mips.or.v",
  "llvm.mips.ori.b",
  "llvm.mips.packrl.ph",
  "llvm.mips.pckev.b",
  "llvm.mips.pckev.d",
  "llvm.mips.pckev.h",
  "llvm.mips.pckev.w",
  "llvm.mips.pckod.b",
  "llvm.mips.pckod.d",
  "llvm.mips.pckod.h",
  "llvm.mips.pckod.w",
  "llvm.mips.pcnt.b",
  "llvm.mips.pcnt.d",
  "llvm.mips.pcnt.h",
  "llvm.mips.pcnt.w",
  "llvm.mips.pick.ph",
  "llvm.mips.pick.qb",
  "llvm.mips.preceq.w.phl",
  "llvm.mips.preceq.w.phr",
  "llvm.mips.precequ.ph.qbl",
  "llvm.mips.precequ.ph.qbla",
  "llvm.mips.precequ.ph.qbr",
  "llvm.mips.precequ.ph.qbra",
  "llvm.mips.preceu.ph.qbl",
  "llvm.mips.preceu.ph.qbla",
  "llvm.mips.preceu.ph.qbr",
  "llvm.mips.preceu.ph.qbra",
  "llvm.mips.precr.qb.ph",
  "llvm.mips.precr.sra.ph.w",
  "llvm.mips.precr.sra.r.ph.w",
  "llvm.mips.precrq.ph.w",
  "llvm.mips.precrq.qb.ph",
  "llvm.mips.precrq.rs.ph.w",
  "llvm.mips.precrqu.s.qb.ph",
  "llvm.mips.prepend",
  "llvm.mips.raddu.w.qb",
  "llvm.mips.rddsp",
  "llvm.mips.repl.ph",
  "llvm.mips.repl.qb",
  "llvm.mips.sat.s.b",
  "llvm.mips.sat.s.d",
  "llvm.mips.sat.s.h",
  "llvm.mips.sat.s.w",
  "llvm.mips.sat.u.b",
  "llvm.mips.sat.u.d",
  "llvm.mips.sat.u.h",
  "llvm.mips.sat.u.w",
  "llvm.mips.shf.b",
  "llvm.mips.shf.h",
  "llvm.mips.shf.w",
  "llvm.mips.shilo",
  "llvm.mips.shll.ph",
  "llvm.mips.shll.qb",
  "llvm.mips.shll.s.ph",
  "llvm.mips.shll.s.w",
  "llvm.mips.shra.ph",
  "llvm.mips.shra.qb",
  "llvm.mips.shra.r.ph",
  "llvm.mips.shra.r.qb",
  "llvm.mips.shra.r.w",
  "llvm.mips.shrl.ph",
  "llvm.mips.shrl.qb",
  "llvm.mips.sld.b",
  "llvm.mips.sld.d",
  "llvm.mips.sld.h",
  "llvm.mips.sld.w",
  "llvm.mips.sldi.b",
  "llvm.mips.sldi.d",
  "llvm.mips.sldi.h",
  "llvm.mips.sldi.w",
  "llvm.mips.sll.b",
  "llvm.mips.sll.d",
  "llvm.mips.sll.h",
  "llvm.mips.sll.w",
  "llvm.mips.slli.b",
  "llvm.mips.slli.d",
  "llvm.mips.slli.h",
  "llvm.mips.slli.w",
  "llvm.mips.splat.b",
  "llvm.mips.splat.d",
  "llvm.mips.splat.h",
  "llvm.mips.splat.w",
  "llvm.mips.splati.b",
  "llvm.mips.splati.d",
  "llvm.mips.splati.h",
  "llvm.mips.splati.w",
  "llvm.mips.sra.b",
  "llvm.mips.sra.d",
  "llvm.mips.sra.h",
  "llvm.mips.sra.w",
  "llvm.mips.srai.b",
  "llvm.mips.srai.d",
  "llvm.mips.srai.h",
  "llvm.mips.srai.w",
  "llvm.mips.srar.b",
  "llvm.mips.srar.d",
  "llvm.mips.srar.h",
  "llvm.mips.srar.w",
  "llvm.mips.srari.b",
  "llvm.mips.srari.d",
  "llvm.mips.srari.h",
  "llvm.mips.srari.w",
  "llvm.mips.srl.b",
  "llvm.mips.srl.d",
  "llvm.mips.srl.h",
  "llvm.mips.srl.w",
  "llvm.mips.srli.b",
  "llvm.mips.srli.d",
  "llvm.mips.srli.h",
  "llvm.mips.srli.w",
  "llvm.mips.srlr.b",
  "llvm.mips.srlr.d",
  "llvm.mips.srlr.h",
  "llvm.mips.srlr.w",
  "llvm.mips.srlri.b",
  "llvm.mips.srlri.d",
  "llvm.mips.srlri.h",
  "llvm.mips.srlri.w",
  "llvm.mips.st.b",
  "llvm.mips.st.d",
  "llvm.mips.st.h",
  "llvm.mips.st.w",
  "llvm.mips.subq.ph",
  "llvm.mips.subq.s.ph",
  "llvm.mips.subq.s.w",
  "llvm.mips.subqh.ph",
  "llvm.mips.subqh.r.ph",
  "llvm.mips.subqh.r.w",
  "llvm.mips.subqh.w",
  "llvm.mips.subs.s.b",
  "llvm.mips.subs.s.d",
  "llvm.mips.subs.s.h",
  "llvm.mips.subs.s.w",
  "llvm.mips.subs.u.b",
  "llvm.mips.subs.u.d",
  "llvm.mips.subs.u.h",
  "llvm.mips.subs.u.w",
  "llvm.mips.subsus.u.b",
  "llvm.mips.subsus.u.d",
  "llvm.mips.subsus.u.h",
  "llvm.mips.subsus.u.w",
  "llvm.mips.subsuu.s.b",
  "llvm.mips.subsuu.s.d",
  "llvm.mips.subsuu.s.h",
  "llvm.mips.subsuu.s.w",
  "llvm.mips.subu.ph",
  "llvm.mips.subu.qb",
  "llvm.mips.subu.s.ph",
  "llvm.mips.subu.s.qb",
  "llvm.mips.subuh.qb",
  "llvm.mips.subuh.r.qb",
  "llvm.mips.subv.b",
  "llvm.mips.subv.d",
  "llvm.mips.subv.h",
  "llvm.mips.subv.w",
  "llvm.mips.subvi.b",
  "llvm.mips.subvi.d",
  "llvm.mips.subvi.h",
  "llvm.mips.subvi.w",
  "llvm.mips.vshf.b",
  "llvm.mips.vshf.d",
  "llvm.mips.vshf.h",
  "llvm.mips.vshf.w",
  "llvm.mips.wrdsp",
  "llvm.mips.xor.v",
  "llvm.mips.xori.b",
  "llvm.nearbyint",
  "llvm.nvvm.abs.i",
  "llvm.nvvm.abs.ll",
  "llvm.nvvm.add.rm.d",
  "llvm.nvvm.add.rm.f",
  "llvm.nvvm.add.rm.ftz.f",
  "llvm.nvvm.add.rn.d",
  "llvm.nvvm.add.rn.f",
  "llvm.nvvm.add.rn.ftz.f",
  "llvm.nvvm.add.rp.d",
  "llvm.nvvm.add.rp.f",
  "llvm.nvvm.add.rp.ftz.f",
  "llvm.nvvm.add.rz.d",
  "llvm.nvvm.add.rz.f",
  "llvm.nvvm.add.rz.ftz.f",
  "llvm.nvvm.atomic.load.add.f32",
  "llvm.nvvm.atomic.load.dec.32",
  "llvm.nvvm.atomic.load.inc.32",
  "llvm.nvvm.barrier0",
  "llvm.nvvm.barrier0.and",
  "llvm.nvvm.barrier0.or",
  "llvm.nvvm.barrier0.popc",
  "llvm.nvvm.bitcast.d2ll",
  "llvm.nvvm.bitcast.f2i",
  "llvm.nvvm.bitcast.i2f",
  "llvm.nvvm.bitcast.ll2d",
  "llvm.nvvm.brev32",
  "llvm.nvvm.brev64",
  "llvm.nvvm.ceil.d",
  "llvm.nvvm.ceil.f",
  "llvm.nvvm.ceil.ftz.f",
  "llvm.nvvm.clz.i",
  "llvm.nvvm.clz.ll",
  "llvm.nvvm.compiler.error",
  "llvm.nvvm.compiler.warn",
  "llvm.nvvm.cos.approx.f",
  "llvm.nvvm.cos.approx.ftz.f",
  "llvm.nvvm.d2f.rm",
  "llvm.nvvm.d2f.rm.ftz",
  "llvm.nvvm.d2f.rn",
  "llvm.nvvm.d2f.rn.ftz",
  "llvm.nvvm.d2f.rp",
  "llvm.nvvm.d2f.rp.ftz",
  "llvm.nvvm.d2f.rz",
  "llvm.nvvm.d2f.rz.ftz",
  "llvm.nvvm.d2i.hi",
  "llvm.nvvm.d2i.lo",
  "llvm.nvvm.d2i.rm",
  "llvm.nvvm.d2i.rn",
  "llvm.nvvm.d2i.rp",
  "llvm.nvvm.d2i.rz",
  "llvm.nvvm.d2ll.rm",
  "llvm.nvvm.d2ll.rn",
  "llvm.nvvm.d2ll.rp",
  "llvm.nvvm.d2ll.rz",
  "llvm.nvvm.d2ui.rm",
  "llvm.nvvm.d2ui.rn",
  "llvm.nvvm.d2ui.rp",
  "llvm.nvvm.d2ui.rz",
  "llvm.nvvm.d2ull.rm",
  "llvm.nvvm.d2ull.rn",
  "llvm.nvvm.d2ull.rp",
  "llvm.nvvm.d2ull.rz",
  "llvm.nvvm.div.approx.f",
  "llvm.nvvm.div.approx.ftz.f",
  "llvm.nvvm.div.rm.d",
  "llvm.nvvm.div.rm.f",
  "llvm.nvvm.div.rm.ftz.f",
  "llvm.nvvm.div.rn.d",
  "llvm.nvvm.div.rn.f",
  "llvm.nvvm.div.rn.ftz.f",
  "llvm.nvvm.div.rp.d",
  "llvm.nvvm.div.rp.f",
  "llvm.nvvm.div.rp.ftz.f",
  "llvm.nvvm.div.rz.d",
  "llvm.nvvm.div.rz.f",
  "llvm.nvvm.div.rz.ftz.f",
  "llvm.nvvm.ex2.approx.d",
  "llvm.nvvm.ex2.approx.f",
  "llvm.nvvm.ex2.approx.ftz.f",
  "llvm.nvvm.f2h.rn",
  "llvm.nvvm.f2h.rn.ftz",
  "llvm.nvvm.f2i.rm",
  "llvm.nvvm.f2i.rm.ftz",
  "llvm.nvvm.f2i.rn",
  "llvm.nvvm.f2i.rn.ftz",
  "llvm.nvvm.f2i.rp",
  "llvm.nvvm.f2i.rp.ftz",
  "llvm.nvvm.f2i.rz",
  "llvm.nvvm.f2i.rz.ftz",
  "llvm.nvvm.f2ll.rm",
  "llvm.nvvm.f2ll.rm.ftz",
  "llvm.nvvm.f2ll.rn",
  "llvm.nvvm.f2ll.rn.ftz",
  "llvm.nvvm.f2ll.rp",
  "llvm.nvvm.f2ll.rp.ftz",
  "llvm.nvvm.f2ll.rz",
  "llvm.nvvm.f2ll.rz.ftz",
  "llvm.nvvm.f2ui.rm",
  "llvm.nvvm.f2ui.rm.ftz",
  "llvm.nvvm.f2ui.rn",
  "llvm.nvvm.f2ui.rn.ftz",
  "llvm.nvvm.f2ui.rp",
  "llvm.nvvm.f2ui.rp.ftz",
  "llvm.nvvm.f2ui.rz",
  "llvm.nvvm.f2ui.rz.ftz",
  "llvm.nvvm.f2ull.rm",
  "llvm.nvvm.f2ull.rm.ftz",
  "llvm.nvvm.f2ull.rn",
  "llvm.nvvm.f2ull.rn.ftz",
  "llvm.nvvm.f2ull.rp",
  "llvm.nvvm.f2ull.rp.ftz",
  "llvm.nvvm.f2ull.rz",
  "llvm.nvvm.f2ull.rz.ftz",
  "llvm.nvvm.fabs.d",
  "llvm.nvvm.fabs.f",
  "llvm.nvvm.fabs.ftz.f",
  "llvm.nvvm.floor.d",
  "llvm.nvvm.floor.f",
  "llvm.nvvm.floor.ftz.f",
  "llvm.nvvm.fma.rm.d",
  "llvm.nvvm.fma.rm.f",
  "llvm.nvvm.fma.rm.ftz.f",
  "llvm.nvvm.fma.rn.d",
  "llvm.nvvm.fma.rn.f",
  "llvm.nvvm.fma.rn.ftz.f",
  "llvm.nvvm.fma.rp.d",
  "llvm.nvvm.fma.rp.f",
  "llvm.nvvm.fma.rp.ftz.f",
  "llvm.nvvm.fma.rz.d",
  "llvm.nvvm.fma.rz.f",
  "llvm.nvvm.fma.rz.ftz.f",
  "llvm.nvvm.fmax.d",
  "llvm.nvvm.fmax.f",
  "llvm.nvvm.fmax.ftz.f",
  "llvm.nvvm.fmin.d",
  "llvm.nvvm.fmin.f",
  "llvm.nvvm.fmin.ftz.f",
  "llvm.nvvm.h2f",
  "llvm.nvvm.i2d.rm",
  "llvm.nvvm.i2d.rn",
  "llvm.nvvm.i2d.rp",
  "llvm.nvvm.i2d.rz",
  "llvm.nvvm.i2f.rm",
  "llvm.nvvm.i2f.rn",
  "llvm.nvvm.i2f.rp",
  "llvm.nvvm.i2f.rz",
  "llvm.nvvm.isspacep.const",
  "llvm.nvvm.isspacep.global",
  "llvm.nvvm.isspacep.local",
  "llvm.nvvm.isspacep.shared",
  "llvm.nvvm.istypep.sampler",
  "llvm.nvvm.istypep.surface",
  "llvm.nvvm.istypep.texture",
  "llvm.nvvm.ldg.global.f",
  "llvm.nvvm.ldg.global.i",
  "llvm.nvvm.ldg.global.p",
  "llvm.nvvm.ldu.global.f",
  "llvm.nvvm.ldu.global.i",
  "llvm.nvvm.ldu.global.p",
  "llvm.nvvm.lg2.approx.d",
  "llvm.nvvm.lg2.approx.f",
  "llvm.nvvm.lg2.approx.ftz.f",
  "llvm.nvvm.ll2d.rm",
  "llvm.nvvm.ll2d.rn",
  "llvm.nvvm.ll2d.rp",
  "llvm.nvvm.ll2d.rz",
  "llvm.nvvm.ll2f.rm",
  "llvm.nvvm.ll2f.rn",
  "llvm.nvvm.ll2f.rp",
  "llvm.nvvm.ll2f.rz",
  "llvm.nvvm.lohi.i2d",
  "llvm.nvvm.max.i",
  "llvm.nvvm.max.ll",
  "llvm.nvvm.max.ui",
  "llvm.nvvm.max.ull",
  "llvm.nvvm.membar.cta",
  "llvm.nvvm.membar.gl",
  "llvm.nvvm.membar.sys",
  "llvm.nvvm.min.i",
  "llvm.nvvm.min.ll",
  "llvm.nvvm.min.ui",
  "llvm.nvvm.min.ull",
  "llvm.nvvm.move.double",
  "llvm.nvvm.move.float",
  "llvm.nvvm.move.i16",
  "llvm.nvvm.move.i32",
  "llvm.nvvm.move.i64",
  "llvm.nvvm.move.ptr",
  "llvm.nvvm.mul24.i",
  "llvm.nvvm.mul24.ui",
  "llvm.nvvm.mul.rm.d",
  "llvm.nvvm.mul.rm.f",
  "llvm.nvvm.mul.rm.ftz.f",
  "llvm.nvvm.mul.rn.d",
  "llvm.nvvm.mul.rn.f",
  "llvm.nvvm.mul.rn.ftz.f",
  "llvm.nvvm.mul.rp.d",
  "llvm.nvvm.mul.rp.f",
  "llvm.nvvm.mul.rp.ftz.f",
  "llvm.nvvm.mul.rz.d",
  "llvm.nvvm.mul.rz.f",
  "llvm.nvvm.mul.rz.ftz.f",
  "llvm.nvvm.mulhi.i",
  "llvm.nvvm.mulhi.ll",
  "llvm.nvvm.mulhi.ui",
  "llvm.nvvm.mulhi.ull",
  "llvm.nvvm.popc.i",
  "llvm.nvvm.popc.ll",
  "llvm.nvvm.prmt",
  "llvm.nvvm.ptr.constant.to.gen",
  "llvm.nvvm.ptr.gen.to.constant",
  "llvm.nvvm.ptr.gen.to.global",
  "llvm.nvvm.ptr.gen.to.local",
  "llvm.nvvm.ptr.gen.to.param",
  "llvm.nvvm.ptr.gen.to.shared",
  "llvm.nvvm.ptr.global.to.gen",
  "llvm.nvvm.ptr.local.to.gen",
  "llvm.nvvm.ptr.shared.to.gen",
  "llvm.nvvm.rcp.approx.ftz.d",
  "llvm.nvvm.rcp.rm.d",
  "llvm.nvvm.rcp.rm.f",
  "llvm.nvvm.rcp.rm.ftz.f",
  "llvm.nvvm.rcp.rn.d",
  "llvm.nvvm.rcp.rn.f",
  "llvm.nvvm.rcp.rn.ftz.f",
  "llvm.nvvm.rcp.rp.d",
  "llvm.nvvm.rcp.rp.f",
  "llvm.nvvm.rcp.rp.ftz.f",
  "llvm.nvvm.rcp.rz.d",
  "llvm.nvvm.rcp.rz.f",
  "llvm.nvvm.rcp.rz.ftz.f",
  "llvm.nvvm.read.ptx.sreg.ctaid.x",
  "llvm.nvvm.read.ptx.sreg.ctaid.y",
  "llvm.nvvm.read.ptx.sreg.ctaid.z",
  "llvm.nvvm.read.ptx.sreg.envreg0",
  "llvm.nvvm.read.ptx.sreg.envreg1",
  "llvm.nvvm.read.ptx.sreg.envreg10",
  "llvm.nvvm.read.ptx.sreg.envreg11",
  "llvm.nvvm.read.ptx.sreg.envreg12",
  "llvm.nvvm.read.ptx.sreg.envreg13",
  "llvm.nvvm.read.ptx.sreg.envreg14",
  "llvm.nvvm.read.ptx.sreg.envreg15",
  "llvm.nvvm.read.ptx.sreg.envreg16",
  "llvm.nvvm.read.ptx.sreg.envreg17",
  "llvm.nvvm.read.ptx.sreg.envreg18",
  "llvm.nvvm.read.ptx.sreg.envreg19",
  "llvm.nvvm.read.ptx.sreg.envreg2",
  "llvm.nvvm.read.ptx.sreg.envreg20",
  "llvm.nvvm.read.ptx.sreg.envreg21",
  "llvm.nvvm.read.ptx.sreg.envreg22",
  "llvm.nvvm.read.ptx.sreg.envreg23",
  "llvm.nvvm.read.ptx.sreg.envreg24",
  "llvm.nvvm.read.ptx.sreg.envreg25",
  "llvm.nvvm.read.ptx.sreg.envreg26",
  "llvm.nvvm.read.ptx.sreg.envreg27",
  "llvm.nvvm.read.ptx.sreg.envreg28",
  "llvm.nvvm.read.ptx.sreg.envreg29",
  "llvm.nvvm.read.ptx.sreg.envreg3",
  "llvm.nvvm.read.ptx.sreg.envreg30",
  "llvm.nvvm.read.ptx.sreg.envreg31",
  "llvm.nvvm.read.ptx.sreg.envreg4",
  "llvm.nvvm.read.ptx.sreg.envreg5",
  "llvm.nvvm.read.ptx.sreg.envreg6",
  "llvm.nvvm.read.ptx.sreg.envreg7",
  "llvm.nvvm.read.ptx.sreg.envreg8",
  "llvm.nvvm.read.ptx.sreg.envreg9",
  "llvm.nvvm.read.ptx.sreg.nctaid.x",
  "llvm.nvvm.read.ptx.sreg.nctaid.y",
  "llvm.nvvm.read.ptx.sreg.nctaid.z",
  "llvm.nvvm.read.ptx.sreg.ntid.x",
  "llvm.nvvm.read.ptx.sreg.ntid.y",
  "llvm.nvvm.read.ptx.sreg.ntid.z",
  "llvm.nvvm.read.ptx.sreg.tid.x",
  "llvm.nvvm.read.ptx.sreg.tid.y",
  "llvm.nvvm.read.ptx.sreg.tid.z",
  "llvm.nvvm.read.ptx.sreg.warpsize",
  "llvm.nvvm.reflect",
  "llvm.nvvm.rotate.b32",
  "llvm.nvvm.rotate.b64",
  "llvm.nvvm.rotate.right.b64",
  "llvm.nvvm.round.d",
  "llvm.nvvm.round.f",
  "llvm.nvvm.round.ftz.f",
  "llvm.nvvm.rsqrt.approx.d",
  "llvm.nvvm.rsqrt.approx.f",
  "llvm.nvvm.rsqrt.approx.ftz.f",
  "llvm.nvvm.sad.i",
  "llvm.nvvm.sad.ui",
  "llvm.nvvm.saturate.d",
  "llvm.nvvm.saturate.f",
  "llvm.nvvm.saturate.ftz.f",
  "llvm.nvvm.sin.approx.f",
  "llvm.nvvm.sin.approx.ftz.f",
  "llvm.nvvm.sqrt.approx.f",
  "llvm.nvvm.sqrt.approx.ftz.f",
  "llvm.nvvm.sqrt.f",
  "llvm.nvvm.sqrt.rm.d",
  "llvm.nvvm.sqrt.rm.f",
  "llvm.nvvm.sqrt.rm.ftz.f",
  "llvm.nvvm.sqrt.rn.d",
  "llvm.nvvm.sqrt.rn.f",
  "llvm.nvvm.sqrt.rn.ftz.f",
  "llvm.nvvm.sqrt.rp.d",
  "llvm.nvvm.sqrt.rp.f",
  "llvm.nvvm.sqrt.rp.ftz.f",
  "llvm.nvvm.sqrt.rz.d",
  "llvm.nvvm.sqrt.rz.f",
  "llvm.nvvm.sqrt.rz.ftz.f",
  "llvm.nvvm.suld.1d.array.i16.clamp",
  "llvm.nvvm.suld.1d.array.i16.trap",
  "llvm.nvvm.suld.1d.array.i16.zero",
  "llvm.nvvm.suld.1d.array.i32.clamp",
  "llvm.nvvm.suld.1d.array.i32.trap",
  "llvm.nvvm.suld.1d.array.i32.zero",
  "llvm.nvvm.suld.1d.array.i64.clamp",
  "llvm.nvvm.suld.1d.array.i64.trap",
  "llvm.nvvm.suld.1d.array.i64.zero",
  "llvm.nvvm.suld.1d.array.i8.clamp",
  "llvm.nvvm.suld.1d.array.i8.trap",
  "llvm.nvvm.suld.1d.array.i8.zero",
  "llvm.nvvm.suld.1d.array.v2i16.clamp",
  "llvm.nvvm.suld.1d.array.v2i16.trap",
  "llvm.nvvm.suld.1d.array.v2i16.zero",
  "llvm.nvvm.suld.1d.array.v2i32.clamp",
  "llvm.nvvm.suld.1d.array.v2i32.trap",
  "llvm.nvvm.suld.1d.array.v2i32.zero",
  "llvm.nvvm.suld.1d.array.v2i64.clamp",
  "llvm.nvvm.suld.1d.array.v2i64.trap",
  "llvm.nvvm.suld.1d.array.v2i64.zero",
  "llvm.nvvm.suld.1d.array.v2i8.clamp",
  "llvm.nvvm.suld.1d.array.v2i8.trap",
  "llvm.nvvm.suld.1d.array.v2i8.zero",
  "llvm.nvvm.suld.1d.array.v4i16.clamp",
  "llvm.nvvm.suld.1d.array.v4i16.trap",
  "llvm.nvvm.suld.1d.array.v4i16.zero",
  "llvm.nvvm.suld.1d.array.v4i32.clamp",
  "llvm.nvvm.suld.1d.array.v4i32.trap",
  "llvm.nvvm.suld.1d.array.v4i32.zero",
  "llvm.nvvm.suld.1d.array.v4i8.clamp",
  "llvm.nvvm.suld.1d.array.v4i8.trap",
  "llvm.nvvm.suld.1d.array.v4i8.zero",
  "llvm.nvvm.suld.1d.i16.clamp",
  "llvm.nvvm.suld.1d.i16.trap",
  "llvm.nvvm.suld.1d.i16.zero",
  "llvm.nvvm.suld.1d.i32.clamp",
  "llvm.nvvm.suld.1d.i32.trap",
  "llvm.nvvm.suld.1d.i32.zero",
  "llvm.nvvm.suld.1d.i64.clamp",
  "llvm.nvvm.suld.1d.i64.trap",
  "llvm.nvvm.suld.1d.i64.zero",
  "llvm.nvvm.suld.1d.i8.clamp",
  "llvm.nvvm.suld.1d.i8.trap",
  "llvm.nvvm.suld.1d.i8.zero",
  "llvm.nvvm.suld.1d.v2i16.clamp",
  "llvm.nvvm.suld.1d.v2i16.trap",
  "llvm.nvvm.suld.1d.v2i16.zero",
  "llvm.nvvm.suld.1d.v2i32.clamp",
  "llvm.nvvm.suld.1d.v2i32.trap",
  "llvm.nvvm.suld.1d.v2i32.zero",
  "llvm.nvvm.suld.1d.v2i64.clamp",
  "llvm.nvvm.suld.1d.v2i64.trap",
  "llvm.nvvm.suld.1d.v2i64.zero",
  "llvm.nvvm.suld.1d.v2i8.clamp",
  "llvm.nvvm.suld.1d.v2i8.trap",
  "llvm.nvvm.suld.1d.v2i8.zero",
  "llvm.nvvm.suld.1d.v4i16.clamp",
  "llvm.nvvm.suld.1d.v4i16.trap",
  "llvm.nvvm.suld.1d.v4i16.zero",
  "llvm.nvvm.suld.1d.v4i32.clamp",
  "llvm.nvvm.suld.1d.v4i32.trap",
  "llvm.nvvm.suld.1d.v4i32.zero",
  "llvm.nvvm.suld.1d.v4i8.clamp",
  "llvm.nvvm.suld.1d.v4i8.trap",
  "llvm.nvvm.suld.1d.v4i8.zero",
  "llvm.nvvm.suld.2d.array.i16.clamp",
  "llvm.nvvm.suld.2d.array.i16.trap",
  "llvm.nvvm.suld.2d.array.i16.zero",
  "llvm.nvvm.suld.2d.array.i32.clamp",
  "llvm.nvvm.suld.2d.array.i32.trap",
  "llvm.nvvm.suld.2d.array.i32.zero",
  "llvm.nvvm.suld.2d.array.i64.clamp",
  "llvm.nvvm.suld.2d.array.i64.trap",
  "llvm.nvvm.suld.2d.array.i64.zero",
  "llvm.nvvm.suld.2d.array.i8.clamp",
  "llvm.nvvm.suld.2d.array.i8.trap",
  "llvm.nvvm.suld.2d.array.i8.zero",
  "llvm.nvvm.suld.2d.array.v2i16.clamp",
  "llvm.nvvm.suld.2d.array.v2i16.trap",
  "llvm.nvvm.suld.2d.array.v2i16.zero",
  "llvm.nvvm.suld.2d.array.v2i32.clamp",
  "llvm.nvvm.suld.2d.array.v2i32.trap",
  "llvm.nvvm.suld.2d.array.v2i32.zero",
  "llvm.nvvm.suld.2d.array.v2i64.clamp",
  "llvm.nvvm.suld.2d.array.v2i64.trap",
  "llvm.nvvm.suld.2d.array.v2i64.zero",
  "llvm.nvvm.suld.2d.array.v2i8.clamp",
  "llvm.nvvm.suld.2d.array.v2i8.trap",
  "llvm.nvvm.suld.2d.array.v2i8.zero",
  "llvm.nvvm.suld.2d.array.v4i16.clamp",
  "llvm.nvvm.suld.2d.array.v4i16.trap",
  "llvm.nvvm.suld.2d.array.v4i16.zero",
  "llvm.nvvm.suld.2d.array.v4i32.clamp",
  "llvm.nvvm.suld.2d.array.v4i32.trap",
  "llvm.nvvm.suld.2d.array.v4i32.zero",
  "llvm.nvvm.suld.2d.array.v4i8.clamp",
  "llvm.nvvm.suld.2d.array.v4i8.trap",
  "llvm.nvvm.suld.2d.array.v4i8.zero",
  "llvm.nvvm.suld.2d.i16.clamp",
  "llvm.nvvm.suld.2d.i16.trap",
  "llvm.nvvm.suld.2d.i16.zero",
  "llvm.nvvm.suld.2d.i32.clamp",
  "llvm.nvvm.suld.2d.i32.trap",
  "llvm.nvvm.suld.2d.i32.zero",
  "llvm.nvvm.suld.2d.i64.clamp",
  "llvm.nvvm.suld.2d.i64.trap",
  "llvm.nvvm.suld.2d.i64.zero",
  "llvm.nvvm.suld.2d.i8.clamp",
  "llvm.nvvm.suld.2d.i8.trap",
  "llvm.nvvm.suld.2d.i8.zero",
  "llvm.nvvm.suld.2d.v2i16.clamp",
  "llvm.nvvm.suld.2d.v2i16.trap",
  "llvm.nvvm.suld.2d.v2i16.zero",
  "llvm.nvvm.suld.2d.v2i32.clamp",
  "llvm.nvvm.suld.2d.v2i32.trap",
  "llvm.nvvm.suld.2d.v2i32.zero",
  "llvm.nvvm.suld.2d.v2i64.clamp",
  "llvm.nvvm.suld.2d.v2i64.trap",
  "llvm.nvvm.suld.2d.v2i64.zero",
  "llvm.nvvm.suld.2d.v2i8.clamp",
  "llvm.nvvm.suld.2d.v2i8.trap",
  "llvm.nvvm.suld.2d.v2i8.zero",
  "llvm.nvvm.suld.2d.v4i16.clamp",
  "llvm.nvvm.suld.2d.v4i16.trap",
  "llvm.nvvm.suld.2d.v4i16.zero",
  "llvm.nvvm.suld.2d.v4i32.clamp",
  "llvm.nvvm.suld.2d.v4i32.trap",
  "llvm.nvvm.suld.2d.v4i32.zero",
  "llvm.nvvm.suld.2d.v4i8.clamp",
  "llvm.nvvm.suld.2d.v4i8.trap",
  "llvm.nvvm.suld.2d.v4i8.zero",
  "llvm.nvvm.suld.3d.i16.clamp",
  "llvm.nvvm.suld.3d.i16.trap",
  "llvm.nvvm.suld.3d.i16.zero",
  "llvm.nvvm.suld.3d.i32.clamp",
  "llvm.nvvm.suld.3d.i32.trap",
  "llvm.nvvm.suld.3d.i32.zero",
  "llvm.nvvm.suld.3d.i64.clamp",
  "llvm.nvvm.suld.3d.i64.trap",
  "llvm.nvvm.suld.3d.i64.zero",
  "llvm.nvvm.suld.3d.i8.clamp",
  "llvm.nvvm.suld.3d.i8.trap",
  "llvm.nvvm.suld.3d.i8.zero",
  "llvm.nvvm.suld.3d.v2i16.clamp",
  "llvm.nvvm.suld.3d.v2i16.trap",
  "llvm.nvvm.suld.3d.v2i16.zero",
  "llvm.nvvm.suld.3d.v2i32.clamp",
  "llvm.nvvm.suld.3d.v2i32.trap",
  "llvm.nvvm.suld.3d.v2i32.zero",
  "llvm.nvvm.suld.3d.v2i64.clamp",
  "llvm.nvvm.suld.3d.v2i64.trap",
  "llvm.nvvm.suld.3d.v2i64.zero",
  "llvm.nvvm.suld.3d.v2i8.clamp",
  "llvm.nvvm.suld.3d.v2i8.trap",
  "llvm.nvvm.suld.3d.v2i8.zero",
  "llvm.nvvm.suld.3d.v4i16.clamp",
  "llvm.nvvm.suld.3d.v4i16.trap",
  "llvm.nvvm.suld.3d.v4i16.zero",
  "llvm.nvvm.suld.3d.v4i32.clamp",
  "llvm.nvvm.suld.3d.v4i32.trap",
  "llvm.nvvm.suld.3d.v4i32.zero",
  "llvm.nvvm.suld.3d.v4i8.clamp",
  "llvm.nvvm.suld.3d.v4i8.trap",
  "llvm.nvvm.suld.3d.v4i8.zero",
  "llvm.nvvm.suq.array.size",
  "llvm.nvvm.suq.channel.data.type",
  "llvm.nvvm.suq.channel.order",
  "llvm.nvvm.suq.depth",
  "llvm.nvvm.suq.height",
  "llvm.nvvm.suq.width",
  "llvm.nvvm.sust.b.1d.array.i16.clamp",
  "llvm.nvvm.sust.b.1d.array.i16.trap",
  "llvm.nvvm.sust.b.1d.array.i16.zero",
  "llvm.nvvm.sust.b.1d.array.i32.clamp",
  "llvm.nvvm.sust.b.1d.array.i32.trap",
  "llvm.nvvm.sust.b.1d.array.i32.zero",
  "llvm.nvvm.sust.b.1d.array.i64.clamp",
  "llvm.nvvm.sust.b.1d.array.i64.trap",
  "llvm.nvvm.sust.b.1d.array.i64.zero",
  "llvm.nvvm.sust.b.1d.array.i8.clamp",
  "llvm.nvvm.sust.b.1d.array.i8.trap",
  "llvm.nvvm.sust.b.1d.array.i8.zero",
  "llvm.nvvm.sust.b.1d.array.v2i16.clamp",
  "llvm.nvvm.sust.b.1d.array.v2i16.trap",
  "llvm.nvvm.sust.b.1d.array.v2i16.zero",
  "llvm.nvvm.sust.b.1d.array.v2i32.clamp",
  "llvm.nvvm.sust.b.1d.array.v2i32.trap",
  "llvm.nvvm.sust.b.1d.array.v2i32.zero",
  "llvm.nvvm.sust.b.1d.array.v2i64.clamp",
  "llvm.nvvm.sust.b.1d.array.v2i64.trap",
  "llvm.nvvm.sust.b.1d.array.v2i64.zero",
  "llvm.nvvm.sust.b.1d.array.v2i8.clamp",
  "llvm.nvvm.sust.b.1d.array.v2i8.trap",
  "llvm.nvvm.sust.b.1d.array.v2i8.zero",
  "llvm.nvvm.sust.b.1d.array.v4i16.clamp",
  "llvm.nvvm.sust.b.1d.array.v4i16.trap",
  "llvm.nvvm.sust.b.1d.array.v4i16.zero",
  "llvm.nvvm.sust.b.1d.array.v4i32.clamp",
  "llvm.nvvm.sust.b.1d.array.v4i32.trap",
  "llvm.nvvm.sust.b.1d.array.v4i32.zero",
  "llvm.nvvm.sust.b.1d.array.v4i8.clamp",
  "llvm.nvvm.sust.b.1d.array.v4i8.trap",
  "llvm.nvvm.sust.b.1d.array.v4i8.zero",
  "llvm.nvvm.sust.b.1d.i16.clamp",
  "llvm.nvvm.sust.b.1d.i16.trap",
  "llvm.nvvm.sust.b.1d.i16.zero",
  "llvm.nvvm.sust.b.1d.i32.clamp",
  "llvm.nvvm.sust.b.1d.i32.trap",
  "llvm.nvvm.sust.b.1d.i32.zero",
  "llvm.nvvm.sust.b.1d.i64.clamp",
  "llvm.nvvm.sust.b.1d.i64.trap",
  "llvm.nvvm.sust.b.1d.i64.zero",
  "llvm.nvvm.sust.b.1d.i8.clamp",
  "llvm.nvvm.sust.b.1d.i8.trap",
  "llvm.nvvm.sust.b.1d.i8.zero",
  "llvm.nvvm.sust.b.1d.v2i16.clamp",
  "llvm.nvvm.sust.b.1d.v2i16.trap",
  "llvm.nvvm.sust.b.1d.v2i16.zero",
  "llvm.nvvm.sust.b.1d.v2i32.clamp",
  "llvm.nvvm.sust.b.1d.v2i32.trap",
  "llvm.nvvm.sust.b.1d.v2i32.zero",
  "llvm.nvvm.sust.b.1d.v2i64.clamp",
  "llvm.nvvm.sust.b.1d.v2i64.trap",
  "llvm.nvvm.sust.b.1d.v2i64.zero",
  "llvm.nvvm.sust.b.1d.v2i8.clamp",
  "llvm.nvvm.sust.b.1d.v2i8.trap",
  "llvm.nvvm.sust.b.1d.v2i8.zero",
  "llvm.nvvm.sust.b.1d.v4i16.clamp",
  "llvm.nvvm.sust.b.1d.v4i16.trap",
  "llvm.nvvm.sust.b.1d.v4i16.zero",
  "llvm.nvvm.sust.b.1d.v4i32.clamp",
  "llvm.nvvm.sust.b.1d.v4i32.trap",
  "llvm.nvvm.sust.b.1d.v4i32.zero",
  "llvm.nvvm.sust.b.1d.v4i8.clamp",
  "llvm.nvvm.sust.b.1d.v4i8.trap",
  "llvm.nvvm.sust.b.1d.v4i8.zero",
  "llvm.nvvm.sust.b.2d.array.i16.clamp",
  "llvm.nvvm.sust.b.2d.array.i16.trap",
  "llvm.nvvm.sust.b.2d.array.i16.zero",
  "llvm.nvvm.sust.b.2d.array.i32.clamp",
  "llvm.nvvm.sust.b.2d.array.i32.trap",
  "llvm.nvvm.sust.b.2d.array.i32.zero",
  "llvm.nvvm.sust.b.2d.array.i64.clamp",
  "llvm.nvvm.sust.b.2d.array.i64.trap",
  "llvm.nvvm.sust.b.2d.array.i64.zero",
  "llvm.nvvm.sust.b.2d.array.i8.clamp",
  "llvm.nvvm.sust.b.2d.array.i8.trap",
  "llvm.nvvm.sust.b.2d.array.i8.zero",
  "llvm.nvvm.sust.b.2d.array.v2i16.clamp",
  "llvm.nvvm.sust.b.2d.array.v2i16.trap",
  "llvm.nvvm.sust.b.2d.array.v2i16.zero",
  "llvm.nvvm.sust.b.2d.array.v2i32.clamp",
  "llvm.nvvm.sust.b.2d.array.v2i32.trap",
  "llvm.nvvm.sust.b.2d.array.v2i32.zero",
  "llvm.nvvm.sust.b.2d.array.v2i64.clamp",
  "llvm.nvvm.sust.b.2d.array.v2i64.trap",
  "llvm.nvvm.sust.b.2d.array.v2i64.zero",
  "llvm.nvvm.sust.b.2d.array.v2i8.clamp",
  "llvm.nvvm.sust.b.2d.array.v2i8.trap",
  "llvm.nvvm.sust.b.2d.array.v2i8.zero",
  "llvm.nvvm.sust.b.2d.array.v4i16.clamp",
  "llvm.nvvm.sust.b.2d.array.v4i16.trap",
  "llvm.nvvm.sust.b.2d.array.v4i16.zero",
  "llvm.nvvm.sust.b.2d.array.v4i32.clamp",
  "llvm.nvvm.sust.b.2d.array.v4i32.trap",
  "llvm.nvvm.sust.b.2d.array.v4i32.zero",
  "llvm.nvvm.sust.b.2d.array.v4i8.clamp",
  "llvm.nvvm.sust.b.2d.array.v4i8.trap",
  "llvm.nvvm.sust.b.2d.array.v4i8.zero",
  "llvm.nvvm.sust.b.2d.i16.clamp",
  "llvm.nvvm.sust.b.2d.i16.trap",
  "llvm.nvvm.sust.b.2d.i16.zero",
  "llvm.nvvm.sust.b.2d.i32.clamp",
  "llvm.nvvm.sust.b.2d.i32.trap",
  "llvm.nvvm.sust.b.2d.i32.zero",
  "llvm.nvvm.sust.b.2d.i64.clamp",
  "llvm.nvvm.sust.b.2d.i64.trap",
  "llvm.nvvm.sust.b.2d.i64.zero",
  "llvm.nvvm.sust.b.2d.i8.clamp",
  "llvm.nvvm.sust.b.2d.i8.trap",
  "llvm.nvvm.sust.b.2d.i8.zero",
  "llvm.nvvm.sust.b.2d.v2i16.clamp",
  "llvm.nvvm.sust.b.2d.v2i16.trap",
  "llvm.nvvm.sust.b.2d.v2i16.zero",
  "llvm.nvvm.sust.b.2d.v2i32.clamp",
  "llvm.nvvm.sust.b.2d.v2i32.trap",
  "llvm.nvvm.sust.b.2d.v2i32.zero",
  "llvm.nvvm.sust.b.2d.v2i64.clamp",
  "llvm.nvvm.sust.b.2d.v2i64.trap",
  "llvm.nvvm.sust.b.2d.v2i64.zero",
  "llvm.nvvm.sust.b.2d.v2i8.clamp",
  "llvm.nvvm.sust.b.2d.v2i8.trap",
  "llvm.nvvm.sust.b.2d.v2i8.zero",
  "llvm.nvvm.sust.b.2d.v4i16.clamp",
  "llvm.nvvm.sust.b.2d.v4i16.trap",
  "llvm.nvvm.sust.b.2d.v4i16.zero",
  "llvm.nvvm.sust.b.2d.v4i32.clamp",
  "llvm.nvvm.sust.b.2d.v4i32.trap",
  "llvm.nvvm.sust.b.2d.v4i32.zero",
  "llvm.nvvm.sust.b.2d.v4i8.clamp",
  "llvm.nvvm.sust.b.2d.v4i8.trap",
  "llvm.nvvm.sust.b.2d.v4i8.zero",
  "llvm.nvvm.sust.b.3d.i16.clamp",
  "llvm.nvvm.sust.b.3d.i16.trap",
  "llvm.nvvm.sust.b.3d.i16.zero",
  "llvm.nvvm.sust.b.3d.i32.clamp",
  "llvm.nvvm.sust.b.3d.i32.trap",
  "llvm.nvvm.sust.b.3d.i32.zero",
  "llvm.nvvm.sust.b.3d.i64.clamp",
  "llvm.nvvm.sust.b.3d.i64.trap",
  "llvm.nvvm.sust.b.3d.i64.zero",
  "llvm.nvvm.sust.b.3d.i8.clamp",
  "llvm.nvvm.sust.b.3d.i8.trap",
  "llvm.nvvm.sust.b.3d.i8.zero",
  "llvm.nvvm.sust.b.3d.v2i16.clamp",
  "llvm.nvvm.sust.b.3d.v2i16.trap",
  "llvm.nvvm.sust.b.3d.v2i16.zero",
  "llvm.nvvm.sust.b.3d.v2i32.clamp",
  "llvm.nvvm.sust.b.3d.v2i32.trap",
  "llvm.nvvm.sust.b.3d.v2i32.zero",
  "llvm.nvvm.sust.b.3d.v2i64.clamp",
  "llvm.nvvm.sust.b.3d.v2i64.trap",
  "llvm.nvvm.sust.b.3d.v2i64.zero",
  "llvm.nvvm.sust.b.3d.v2i8.clamp",
  "llvm.nvvm.sust.b.3d.v2i8.trap",
  "llvm.nvvm.sust.b.3d.v2i8.zero",
  "llvm.nvvm.sust.b.3d.v4i16.clamp",
  "llvm.nvvm.sust.b.3d.v4i16.trap",
  "llvm.nvvm.sust.b.3d.v4i16.zero",
  "llvm.nvvm.sust.b.3d.v4i32.clamp",
  "llvm.nvvm.sust.b.3d.v4i32.trap",
  "llvm.nvvm.sust.b.3d.v4i32.zero",
  "llvm.nvvm.sust.b.3d.v4i8.clamp",
  "llvm.nvvm.sust.b.3d.v4i8.trap",
  "llvm.nvvm.sust.b.3d.v4i8.zero",
  "llvm.nvvm.sust.p.1d.array.i16.trap",
  "llvm.nvvm.sust.p.1d.array.i32.trap",
  "llvm.nvvm.sust.p.1d.array.i8.trap",
  "llvm.nvvm.sust.p.1d.array.v2i16.trap",
  "llvm.nvvm.sust.p.1d.array.v2i32.trap",
  "llvm.nvvm.sust.p.1d.array.v2i8.trap",
  "llvm.nvvm.sust.p.1d.array.v4i16.trap",
  "llvm.nvvm.sust.p.1d.array.v4i32.trap",
  "llvm.nvvm.sust.p.1d.array.v4i8.trap",
  "llvm.nvvm.sust.p.1d.i16.trap",
  "llvm.nvvm.sust.p.1d.i32.trap",
  "llvm.nvvm.sust.p.1d.i8.trap",
  "llvm.nvvm.sust.p.1d.v2i16.trap",
  "llvm.nvvm.sust.p.1d.v2i32.trap",
  "llvm.nvvm.sust.p.1d.v2i8.trap",
  "llvm.nvvm.sust.p.1d.v4i16.trap",
  "llvm.nvvm.sust.p.1d.v4i32.trap",
  "llvm.nvvm.sust.p.1d.v4i8.trap",
  "llvm.nvvm.sust.p.2d.array.i16.trap",
  "llvm.nvvm.sust.p.2d.array.i32.trap",
  "llvm.nvvm.sust.p.2d.array.i8.trap",
  "llvm.nvvm.sust.p.2d.array.v2i16.trap",
  "llvm.nvvm.sust.p.2d.array.v2i32.trap",
  "llvm.nvvm.sust.p.2d.array.v2i8.trap",
  "llvm.nvvm.sust.p.2d.array.v4i16.trap",
  "llvm.nvvm.sust.p.2d.array.v4i32.trap",
  "llvm.nvvm.sust.p.2d.array.v4i8.trap",
  "llvm.nvvm.sust.p.2d.i16.trap",
  "llvm.nvvm.sust.p.2d.i32.trap",
  "llvm.nvvm.sust.p.2d.i8.trap",
  "llvm.nvvm.sust.p.2d.v2i16.trap",
  "llvm.nvvm.sust.p.2d.v2i32.trap",
  "llvm.nvvm.sust.p.2d.v2i8.trap",
  "llvm.nvvm.sust.p.2d.v4i16.trap",
  "llvm.nvvm.sust.p.2d.v4i32.trap",
  "llvm.nvvm.sust.p.2d.v4i8.trap",
  "llvm.nvvm.sust.p.3d.i16.trap",
  "llvm.nvvm.sust.p.3d.i32.trap",
  "llvm.nvvm.sust.p.3d.i8.trap",
  "llvm.nvvm.sust.p.3d.v2i16.trap",
  "llvm.nvvm.sust.p.3d.v2i32.trap",
  "llvm.nvvm.sust.p.3d.v2i8.trap",
  "llvm.nvvm.sust.p.3d.v4i16.trap",
  "llvm.nvvm.sust.p.3d.v4i32.trap",
  "llvm.nvvm.sust.p.3d.v4i8.trap",
  "llvm.nvvm.swap.lo.hi.b64",
  "llvm.nvvm.tex.1d.array.grad.v4f32.f32",
  "llvm.nvvm.tex.1d.array.grad.v4s32.f32",
  "llvm.nvvm.tex.1d.array.grad.v4u32.f32",
  "llvm.nvvm.tex.1d.array.level.v4f32.f32",
  "llvm.nvvm.tex.1d.array.level.v4s32.f32",
  "llvm.nvvm.tex.1d.array.level.v4u32.f32",
  "llvm.nvvm.tex.1d.array.v4f32.f32",
  "llvm.nvvm.tex.1d.array.v4f32.s32",
  "llvm.nvvm.tex.1d.array.v4s32.f32",
  "llvm.nvvm.tex.1d.array.v4s32.s32",
  "llvm.nvvm.tex.1d.array.v4u32.f32",
  "llvm.nvvm.tex.1d.array.v4u32.s32",
  "llvm.nvvm.tex.1d.grad.v4f32.f32",
  "llvm.nvvm.tex.1d.grad.v4s32.f32",
  "llvm.nvvm.tex.1d.grad.v4u32.f32",
  "llvm.nvvm.tex.1d.level.v4f32.f32",
  "llvm.nvvm.tex.1d.level.v4s32.f32",
  "llvm.nvvm.tex.1d.level.v4u32.f32",
  "llvm.nvvm.tex.1d.v4f32.f32",
  "llvm.nvvm.tex.1d.v4f32.s32",
  "llvm.nvvm.tex.1d.v4s32.f32",
  "llvm.nvvm.tex.1d.v4s32.s32",
  "llvm.nvvm.tex.1d.v4u32.f32",
  "llvm.nvvm.tex.1d.v4u32.s32",
  "llvm.nvvm.tex.2d.array.grad.v4f32.f32",
  "llvm.nvvm.tex.2d.array.grad.v4s32.f32",
  "llvm.nvvm.tex.2d.array.grad.v4u32.f32",
  "llvm.nvvm.tex.2d.array.level.v4f32.f32",
  "llvm.nvvm.tex.2d.array.level.v4s32.f32",
  "llvm.nvvm.tex.2d.array.level.v4u32.f32",
  "llvm.nvvm.tex.2d.array.v4f32.f32",
  "llvm.nvvm.tex.2d.array.v4f32.s32",
  "llvm.nvvm.tex.2d.array.v4s32.f32",
  "llvm.nvvm.tex.2d.array.v4s32.s32",
  "llvm.nvvm.tex.2d.array.v4u32.f32",
  "llvm.nvvm.tex.2d.array.v4u32.s32",
  "llvm.nvvm.tex.2d.grad.v4f32.f32",
  "llvm.nvvm.tex.2d.grad.v4s32.f32",
  "llvm.nvvm.tex.2d.grad.v4u32.f32",
  "llvm.nvvm.tex.2d.level.v4f32.f32",
  "llvm.nvvm.tex.2d.level.v4s32.f32",
  "llvm.nvvm.tex.2d.level.v4u32.f32",
  "llvm.nvvm.tex.2d.v4f32.f32",
  "llvm.nvvm.tex.2d.v4f32.s32",
  "llvm.nvvm.tex.2d.v4s32.f32",
  "llvm.nvvm.tex.2d.v4s32.s32",
  "llvm.nvvm.tex.2d.v4u32.f32",
  "llvm.nvvm.tex.2d.v4u32.s32",
  "llvm.nvvm.tex.3d.grad.v4f32.f32",
  "llvm.nvvm.tex.3d.grad.v4s32.f32",
  "llvm.nvvm.tex.3d.grad.v4u32.f32",
  "llvm.nvvm.tex.3d.level.v4f32.f32",
  "llvm.nvvm.tex.3d.level.v4s32.f32",
  "llvm.nvvm.tex.3d.level.v4u32.f32",
  "llvm.nvvm.tex.3d.v4f32.f32",
  "llvm.nvvm.tex.3d.v4f32.s32",
  "llvm.nvvm.tex.3d.v4s32.f32",
  "llvm.nvvm.tex.3d.v4s32.s32",
  "llvm.nvvm.tex.3d.v4u32.f32",
  "llvm.nvvm.tex.3d.v4u32.s32",
  "llvm.nvvm.tex.cube.array.level.v4f32.f32",
  "llvm.nvvm.tex.cube.array.level.v4s32.f32",
  "llvm.nvvm.tex.cube.array.level.v4u32.f32",
  "llvm.nvvm.tex.cube.array.v4f32.f32",
  "llvm.nvvm.tex.cube.array.v4s32.f32",
  "llvm.nvvm.tex.cube.array.v4u32.f32",
  "llvm.nvvm.tex.cube.level.v4f32.f32",
  "llvm.nvvm.tex.cube.level.v4s32.f32",
  "llvm.nvvm.tex.cube.level.v4u32.f32",
  "llvm.nvvm.tex.cube.v4f32.f32",
  "llvm.nvvm.tex.cube.v4s32.f32",
  "llvm.nvvm.tex.cube.v4u32.f32",
  "llvm.nvvm.tex.unified.1d.array.grad.v4f32.f32",
  "llvm.nvvm.tex.unified.1d.array.grad.v4s32.f32",
  "llvm.nvvm.tex.unified.1d.array.grad.v4u32.f32",
  "llvm.nvvm.tex.unified.1d.array.level.v4f32.f32",
  "llvm.nvvm.tex.unified.1d.array.level.v4s32.f32",
  "llvm.nvvm.tex.unified.1d.array.level.v4u32.f32",
  "llvm.nvvm.tex.unified.1d.array.v4f32.f32",
  "llvm.nvvm.tex.unified.1d.array.v4f32.s32",
  "llvm.nvvm.tex.unified.1d.array.v4s32.f32",
  "llvm.nvvm.tex.unified.1d.array.v4s32.s32",
  "llvm.nvvm.tex.unified.1d.array.v4u32.f32",
  "llvm.nvvm.tex.unified.1d.array.v4u32.s32",
  "llvm.nvvm.tex.unified.1d.grad.v4f32.f32",
  "llvm.nvvm.tex.unified.1d.grad.v4s32.f32",
  "llvm.nvvm.tex.unified.1d.grad.v4u32.f32",
  "llvm.nvvm.tex.unified.1d.level.v4f32.f32",
  "llvm.nvvm.tex.unified.1d.level.v4s32.f32",
  "llvm.nvvm.tex.unified.1d.level.v4u32.f32",
  "llvm.nvvm.tex.unified.1d.v4f32.f32",
  "llvm.nvvm.tex.unified.1d.v4f32.s32",
  "llvm.nvvm.tex.unified.1d.v4s32.f32",
  "llvm.nvvm.tex.unified.1d.v4s32.s32",
  "llvm.nvvm.tex.unified.1d.v4u32.f32",
  "llvm.nvvm.tex.unified.1d.v4u32.s32",
  "llvm.nvvm.tex.unified.2d.array.grad.v4f32.f32",
  "llvm.nvvm.tex.unified.2d.array.grad.v4s32.f32",
  "llvm.nvvm.tex.unified.2d.array.grad.v4u32.f32",
  "llvm.nvvm.tex.unified.2d.array.level.v4f32.f32",
  "llvm.nvvm.tex.unified.2d.array.level.v4s32.f32",
  "llvm.nvvm.tex.unified.2d.array.level.v4u32.f32",
  "llvm.nvvm.tex.unified.2d.array.v4f32.f32",
  "llvm.nvvm.tex.unified.2d.array.v4f32.s32",
  "llvm.nvvm.tex.unified.2d.array.v4s32.f32",
  "llvm.nvvm.tex.unified.2d.array.v4s32.s32",
  "llvm.nvvm.tex.unified.2d.array.v4u32.f32",
  "llvm.nvvm.tex.unified.2d.array.v4u32.s32",
  "llvm.nvvm.tex.unified.2d.grad.v4f32.f32",
  "llvm.nvvm.tex.unified.2d.grad.v4s32.f32",
  "llvm.nvvm.tex.unified.2d.grad.v4u32.f32",
  "llvm.nvvm.tex.unified.2d.level.v4f32.f32",
  "llvm.nvvm.tex.unified.2d.level.v4s32.f32",
  "llvm.nvvm.tex.unified.2d.level.v4u32.f32",
  "llvm.nvvm.tex.unified.2d.v4f32.f32",
  "llvm.nvvm.tex.unified.2d.v4f32.s32",
  "llvm.nvvm.tex.unified.2d.v4s32.f32",
  "llvm.nvvm.tex.unified.2d.v4s32.s32",
  "llvm.nvvm.tex.unified.2d.v4u32.f32",
  "llvm.nvvm.tex.unified.2d.v4u32.s32",
  "llvm.nvvm.tex.unified.3d.grad.v4f32.f32",
  "llvm.nvvm.tex.unified.3d.grad.v4s32.f32",
  "llvm.nvvm.tex.unified.3d.grad.v4u32.f32",
  "llvm.nvvm.tex.unified.3d.level.v4f32.f32",
  "llvm.nvvm.tex.unified.3d.level.v4s32.f32",
  "llvm.nvvm.tex.unified.3d.level.v4u32.f32",
  "llvm.nvvm.tex.unified.3d.v4f32.f32",
  "llvm.nvvm.tex.unified.3d.v4f32.s32",
  "llvm.nvvm.tex.unified.3d.v4s32.f32",
  "llvm.nvvm.tex.unified.3d.v4s32.s32",
  "llvm.nvvm.tex.unified.3d.v4u32.f32",
  "llvm.nvvm.tex.unified.3d.v4u32.s32",
  "llvm.nvvm.tex.unified.cube.array.level.v4f32.f32",
  "llvm.nvvm.tex.unified.cube.array.level.v4s32.f32",
  "llvm.nvvm.tex.unified.cube.array.level.v4u32.f32",
  "llvm.nvvm.tex.unified.cube.array.v4f32.f32",
  "llvm.nvvm.tex.unified.cube.array.v4s32.f32",
  "llvm.nvvm.tex.unified.cube.array.v4u32.f32",
  "llvm.nvvm.tex.unified.cube.level.v4f32.f32",
  "llvm.nvvm.tex.unified.cube.level.v4s32.f32",
  "llvm.nvvm.tex.unified.cube.level.v4u32.f32",
  "llvm.nvvm.tex.unified.cube.v4f32.f32",
  "llvm.nvvm.tex.unified.cube.v4s32.f32",
  "llvm.nvvm.tex.unified.cube.v4u32.f32",
  "llvm.nvvm.texsurf.handle",
  "llvm.nvvm.texsurf.handle.internal",
  "llvm.nvvm.tld4.a.2d.v4f32.f32",
  "llvm.nvvm.tld4.a.2d.v4s32.f32",
  "llvm.nvvm.tld4.a.2d.v4u32.f32",
  "llvm.nvvm.tld4.b.2d.v4f32.f32",
  "llvm.nvvm.tld4.b.2d.v4s32.f32",
  "llvm.nvvm.tld4.b.2d.v4u32.f32",
  "llvm.nvvm.tld4.g.2d.v4f32.f32",
  "llvm.nvvm.tld4.g.2d.v4s32.f32",
  "llvm.nvvm.tld4.g.2d.v4u32.f32",
  "llvm.nvvm.tld4.r.2d.v4f32.f32",
  "llvm.nvvm.tld4.r.2d.v4s32.f32",
  "llvm.nvvm.tld4.r.2d.v4u32.f32",
  "llvm.nvvm.tld4.unified.a.2d.v4f32.f32",
  "llvm.nvvm.tld4.unified.a.2d.v4s32.f32",
  "llvm.nvvm.tld4.unified.a.2d.v4u32.f32",
  "llvm.nvvm.tld4.unified.b.2d.v4f32.f32",
  "llvm.nvvm.tld4.unified.b.2d.v4s32.f32",
  "llvm.nvvm.tld4.unified.b.2d.v4u32.f32",
  "llvm.nvvm.tld4.unified.g.2d.v4f32.f32",
  "llvm.nvvm.tld4.unified.g.2d.v4s32.f32",
  "llvm.nvvm.tld4.unified.g.2d.v4u32.f32",
  "llvm.nvvm.tld4.unified.r.2d.v4f32.f32",
  "llvm.nvvm.tld4.unified.r.2d.v4s32.f32",
  "llvm.nvvm.tld4.unified.r.2d.v4u32.f32",
  "llvm.nvvm.trunc.d",
  "llvm.nvvm.trunc.f",
  "llvm.nvvm.trunc.ftz.f",
  "llvm.nvvm.txq.array.size",
  "llvm.nvvm.txq.channel.data.type",
  "llvm.nvvm.txq.channel.order",
  "llvm.nvvm.txq.depth",
  "llvm.nvvm.txq.height",
  "llvm.nvvm.txq.num.mipmap.levels",
  "llvm.nvvm.txq.num.samples",
  "llvm.nvvm.txq.width",
  "llvm.nvvm.ui2d.rm",
  "llvm.nvvm.ui2d.rn",
  "llvm.nvvm.ui2d.rp",
  "llvm.nvvm.ui2d.rz",
  "llvm.nvvm.ui2f.rm",
  "llvm.nvvm.ui2f.rn",
  "llvm.nvvm.ui2f.rp",
  "llvm.nvvm.ui2f.rz",
  "llvm.nvvm.ull2d.rm",
  "llvm.nvvm.ull2d.rn",
  "llvm.nvvm.ull2d.rp",
  "llvm.nvvm.ull2d.rz",
  "llvm.nvvm.ull2f.rm",
  "llvm.nvvm.ull2f.rn",
  "llvm.nvvm.ull2f.rp",
  "llvm.nvvm.ull2f.rz",
  "llvm.objectsize",
  "llvm.pcmarker",
  "llvm.pow",
  "llvm.powi",
  "llvm.ppc.altivec.dss",
  "llvm.ppc.altivec.dssall",
  "llvm.ppc.altivec.dst",
  "llvm.ppc.altivec.dstst",
  "llvm.ppc.altivec.dststt",
  "llvm.ppc.altivec.dstt",
  "llvm.ppc.altivec.lvebx",
  "llvm.ppc.altivec.lvehx",
  "llvm.ppc.altivec.lvewx",
  "llvm.ppc.altivec.lvsl",
  "llvm.ppc.altivec.lvsr",
  "llvm.ppc.altivec.lvx",
  "llvm.ppc.altivec.lvxl",
  "llvm.ppc.altivec.mfvscr",
  "llvm.ppc.altivec.mtvscr",
  "llvm.ppc.altivec.stvebx",
  "llvm.ppc.altivec.stvehx",
  "llvm.ppc.altivec.stvewx",
  "llvm.ppc.altivec.stvx",
  "llvm.ppc.altivec.stvxl",
  "llvm.ppc.altivec.vaddcuw",
  "llvm.ppc.altivec.vaddsbs",
  "llvm.ppc.altivec.vaddshs",
  "llvm.ppc.altivec.vaddsws",
  "llvm.ppc.altivec.vaddubs",
  "llvm.ppc.altivec.vadduhs",
  "llvm.ppc.altivec.vadduws",
  "llvm.ppc.altivec.vavgsb",
  "llvm.ppc.altivec.vavgsh",
  "llvm.ppc.altivec.vavgsw",
  "llvm.ppc.altivec.vavgub",
  "llvm.ppc.altivec.vavguh",
  "llvm.ppc.altivec.vavguw",
  "llvm.ppc.altivec.vcfsx",
  "llvm.ppc.altivec.vcfux",
  "llvm.ppc.altivec.vcmpbfp",
  "llvm.ppc.altivec.vcmpbfp.p",
  "llvm.ppc.altivec.vcmpeqfp",
  "llvm.ppc.altivec.vcmpeqfp.p",
  "llvm.ppc.altivec.vcmpequb",
  "llvm.ppc.altivec.vcmpequb.p",
  "llvm.ppc.altivec.vcmpequh",
  "llvm.ppc.altivec.vcmpequh.p",
  "llvm.ppc.altivec.vcmpequw",
  "llvm.ppc.altivec.vcmpequw.p",
  "llvm.ppc.altivec.vcmpgefp",
  "llvm.ppc.altivec.vcmpgefp.p",
  "llvm.ppc.altivec.vcmpgtfp",
  "llvm.ppc.altivec.vcmpgtfp.p",
  "llvm.ppc.altivec.vcmpgtsb",
  "llvm.ppc.altivec.vcmpgtsb.p",
  "llvm.ppc.altivec.vcmpgtsh",
  "llvm.ppc.altivec.vcmpgtsh.p",
  "llvm.ppc.altivec.vcmpgtsw",
  "llvm.ppc.altivec.vcmpgtsw.p",
  "llvm.ppc.altivec.vcmpgtub",
  "llvm.ppc.altivec.vcmpgtub.p",
  "llvm.ppc.altivec.vcmpgtuh",
  "llvm.ppc.altivec.vcmpgtuh.p",
  "llvm.ppc.altivec.vcmpgtuw",
  "llvm.ppc.altivec.vcmpgtuw.p",
  "llvm.ppc.altivec.vctsxs",
  "llvm.ppc.altivec.vctuxs",
  "llvm.ppc.altivec.vexptefp",
  "llvm.ppc.altivec.vlogefp",
  "llvm.ppc.altivec.vmaddfp",
  "llvm.ppc.altivec.vmaxfp",
  "llvm.ppc.altivec.vmaxsb",
  "llvm.ppc.altivec.vmaxsh",
  "llvm.ppc.altivec.vmaxsw",
  "llvm.ppc.altivec.vmaxub",
  "llvm.ppc.altivec.vmaxuh",
  "llvm.ppc.altivec.vmaxuw",
  "llvm.ppc.altivec.vmhaddshs",
  "llvm.ppc.altivec.vmhraddshs",
  "llvm.ppc.altivec.vminfp",
  "llvm.ppc.altivec.vminsb",
  "llvm.ppc.altivec.vminsh",
  "llvm.ppc.altivec.vminsw",
  "llvm.ppc.altivec.vminub",
  "llvm.ppc.altivec.vminuh",
  "llvm.ppc.altivec.vminuw",
  "llvm.ppc.altivec.vmladduhm",
  "llvm.ppc.altivec.vmsummbm",
  "llvm.ppc.altivec.vmsumshm",
  "llvm.ppc.altivec.vmsumshs",
  "llvm.ppc.altivec.vmsumubm",
  "llvm.ppc.altivec.vmsumuhm",
  "llvm.ppc.altivec.vmsumuhs",
  "llvm.ppc.altivec.vmulesb",
  "llvm.ppc.altivec.vmulesh",
  "llvm.ppc.altivec.vmuleub",
  "llvm.ppc.altivec.vmuleuh",
  "llvm.ppc.altivec.vmulosb",
  "llvm.ppc.altivec.vmulosh",
  "llvm.ppc.altivec.vmuloub",
  "llvm.ppc.altivec.vmulouh",
  "llvm.ppc.altivec.vnmsubfp",
  "llvm.ppc.altivec.vperm",
  "llvm.ppc.altivec.vpkpx",
  "llvm.ppc.altivec.vpkshss",
  "llvm.ppc.altivec.vpkshus",
  "llvm.ppc.altivec.vpkswss",
  "llvm.ppc.altivec.vpkswus",
  "llvm.ppc.altivec.vpkuhus",
  "llvm.ppc.altivec.vpkuwus",
  "llvm.ppc.altivec.vrefp",
  "llvm.ppc.altivec.vrfim",
  "llvm.ppc.altivec.vrfin",
  "llvm.ppc.altivec.vrfip",
  "llvm.ppc.altivec.vrfiz",
  "llvm.ppc.altivec.vrlb",
  "llvm.ppc.altivec.vrlh",
  "llvm.ppc.altivec.vrlw",
  "llvm.ppc.altivec.vrsqrtefp",
  "llvm.ppc.altivec.vsel",
  "llvm.ppc.altivec.vsl",
  "llvm.ppc.altivec.vslb",
  "llvm.ppc.altivec.vslh",
  "llvm.ppc.altivec.vslo",
  "llvm.ppc.altivec.vslw",
  "llvm.ppc.altivec.vsr",
  "llvm.ppc.altivec.vsrab",
  "llvm.ppc.altivec.vsrah",
  "llvm.ppc.altivec.vsraw",
  "llvm.ppc.altivec.vsrb",
  "llvm.ppc.altivec.vsrh",
  "llvm.ppc.altivec.vsro",
  "llvm.ppc.altivec.vsrw",
  "llvm.ppc.altivec.vsubcuw",
  "llvm.ppc.altivec.vsubsbs",
  "llvm.ppc.altivec.vsubshs",
  "llvm.ppc.altivec.vsubsws",
  "llvm.ppc.altivec.vsububs",
  "llvm.ppc.altivec.vsubuhs",
  "llvm.ppc.altivec.vsubuws",
  "llvm.ppc.altivec.vsum2sws",
  "llvm.ppc.altivec.vsum4sbs",
  "llvm.ppc.altivec.vsum4shs",
  "llvm.ppc.altivec.vsum4ubs",
  "llvm.ppc.altivec.vsumsws",
  "llvm.ppc.altivec.vupkhpx",
  "llvm.ppc.altivec.vupkhsb",
  "llvm.ppc.altivec.vupkhsh",
  "llvm.ppc.altivec.vupklpx",
  "llvm.ppc.altivec.vupklsb",
  "llvm.ppc.altivec.vupklsh",
  "llvm.ppc.dcba",
  "llvm.ppc.dcbf",
  "llvm.ppc.dcbi",
  "llvm.ppc.dcbst",
  "llvm.ppc.dcbt",
  "llvm.ppc.dcbtst",
  "llvm.ppc.dcbz",
  "llvm.ppc.dcbzl",
  "llvm.ppc.is.decremented.ctr.nonzero",
  "llvm.ppc.mtctr",
  "llvm.ppc.sync",
  "llvm.prefetch",
  "llvm.ptr.annotation",
  "llvm.ptx.bar.sync",
  "llvm.ptx.read.clock",
  "llvm.ptx.read.clock64",
  "llvm.ptx.read.ctaid.w",
  "llvm.ptx.read.ctaid.x",
  "llvm.ptx.read.ctaid.y",
  "llvm.ptx.read.ctaid.z",
  "llvm.ptx.read.gridid",
  "llvm.ptx.read.laneid",
  "llvm.ptx.read.lanemask.eq",
  "llvm.ptx.read.lanemask.ge",
  "llvm.ptx.read.lanemask.gt",
  "llvm.ptx.read.lanemask.le",
  "llvm.ptx.read.lanemask.lt",
  "llvm.ptx.read.nctaid.w",
  "llvm.ptx.read.nctaid.x",
  "llvm.ptx.read.nctaid.y",
  "llvm.ptx.read.nctaid.z",
  "llvm.ptx.read.nsmid",
  "llvm.ptx.read.ntid.w",
  "llvm.ptx.read.ntid.x",
  "llvm.ptx.read.ntid.y",
  "llvm.ptx.read.ntid.z",
  "llvm.ptx.read.nwarpid",
  "llvm.ptx.read.pm0",
  "llvm.ptx.read.pm1",
  "llvm.ptx.read.pm2",
  "llvm.ptx.read.pm3",
  "llvm.ptx.read.smid",
  "llvm.ptx.read.tid.w",
  "llvm.ptx.read.tid.x",
  "llvm.ptx.read.tid.y",
  "llvm.ptx.read.tid.z",
  "llvm.ptx.read.warpid",
  "llvm.r600.read.global.size.x",
  "llvm.r600.read.global.size.y",
  "llvm.r600.read.global.size.z",
  "llvm.r600.read.local.size.x",
  "llvm.r600.read.local.size.y",
  "llvm.r600.read.local.size.z",
  "llvm.r600.read.ngroups.x",
  "llvm.r600.read.ngroups.y",
  "llvm.r600.read.ngroups.z",
  "llvm.r600.read.tgid.x",
  "llvm.r600.read.tgid.y",
  "llvm.r600.read.tgid.z",
  "llvm.r600.read.tidig.x",
  "llvm.r600.read.tidig.y",
  "llvm.r600.read.tidig.z",
  "llvm.read_register",
  "llvm.readcyclecounter",
  "llvm.returnaddress",
  "llvm.rint",
  "llvm.round",
  "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.stackprotectorcheck",
  "llvm.stackrestore",
  "llvm.stacksave",
  "llvm.trap",
  "llvm.trunc",
  "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.write_register",
  "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.avx2.gather.d.d",
  "llvm.x86.avx2.gather.d.d.256",
  "llvm.x86.avx2.gather.d.pd",
  "llvm.x86.avx2.gather.d.pd.256",
  "llvm.x86.avx2.gather.d.ps",
  "llvm.x86.avx2.gather.d.ps.256",
  "llvm.x86.avx2.gather.d.q",
  "llvm.x86.avx2.gather.d.q.256",
  "llvm.x86.avx2.gather.q.d",
  "llvm.x86.avx2.gather.q.d.256",
  "llvm.x86.avx2.gather.q.pd",
  "llvm.x86.avx2.gather.q.pd.256",
  "llvm.x86.avx2.gather.q.ps",
  "llvm.x86.avx2.gather.q.ps.256",
  "llvm.x86.avx2.gather.q.q",
  "llvm.x86.avx2.gather.q.q.256",
  "llvm.x86.avx2.maskload.d",
  "llvm.x86.avx2.maskload.d.256",
  "llvm.x86.avx2.maskload.q",
  "llvm.x86.avx2.maskload.q.256",
  "llvm.x86.avx2.maskstore.d",
  "llvm.x86.avx2.maskstore.d.256",
  "llvm.x86.avx2.maskstore.q",
  "llvm.x86.avx2.maskstore.q.256",
  "llvm.x86.avx2.movntdqa",
  "llvm.x86.avx2.mpsadbw",
  "llvm.x86.avx2.pabs.b",
  "llvm.x86.avx2.pabs.d",
  "llvm.x86.avx2.pabs.w",
  "llvm.x86.avx2.packssdw",
  "llvm.x86.avx2.packsswb",
  "llvm.x86.avx2.packusdw",
  "llvm.x86.avx2.packuswb",
  "llvm.x86.avx2.padds.b",
  "llvm.x86.avx2.padds.w",
  "llvm.x86.avx2.paddus.b",
  "llvm.x86.avx2.paddus.w",
  "llvm.x86.avx2.pavg.b",
  "llvm.x86.avx2.pavg.w",
  "llvm.x86.avx2.pblendd.128",
  "llvm.x86.avx2.pblendd.256",
  "llvm.x86.avx2.pblendvb",
  "llvm.x86.avx2.pblendw",
  "llvm.x86.avx2.pbroadcastb.128",
  "llvm.x86.avx2.pbroadcastb.256",
  "llvm.x86.avx2.pbroadcastd.128",
  "llvm.x86.avx2.pbroadcastd.256",
  "llvm.x86.avx2.pbroadcastq.128",
  "llvm.x86.avx2.pbroadcastq.256",
  "llvm.x86.avx2.pbroadcastw.128",
  "llvm.x86.avx2.pbroadcastw.256",
  "llvm.x86.avx2.permd",
  "llvm.x86.avx2.permps",
  "llvm.x86.avx2.phadd.d",
  "llvm.x86.avx2.phadd.sw",
  "llvm.x86.avx2.phadd.w",
  "llvm.x86.avx2.phsub.d",
  "llvm.x86.avx2.phsub.sw",
  "llvm.x86.avx2.phsub.w",
  "llvm.x86.avx2.pmadd.ub.sw",
  "llvm.x86.avx2.pmadd.wd",
  "llvm.x86.avx2.pmaxs.b",
  "llvm.x86.avx2.pmaxs.d",
  "llvm.x86.avx2.pmaxs.w",
  "llvm.x86.avx2.pmaxu.b",
  "llvm.x86.avx2.pmaxu.d",
  "llvm.x86.avx2.pmaxu.w",
  "llvm.x86.avx2.pmins.b",
  "llvm.x86.avx2.pmins.d",
  "llvm.x86.avx2.pmins.w",
  "llvm.x86.avx2.pminu.b",
  "llvm.x86.avx2.pminu.d",
  "llvm.x86.avx2.pminu.w",
  "llvm.x86.avx2.pmovmskb",
  "llvm.x86.avx2.pmovsxbd",
  "llvm.x86.avx2.pmovsxbq",
  "llvm.x86.avx2.pmovsxbw",
  "llvm.x86.avx2.pmovsxdq",
  "llvm.x86.avx2.pmovsxwd",
  "llvm.x86.avx2.pmovsxwq",
  "llvm.x86.avx2.pmovzxbd",
  "llvm.x86.avx2.pmovzxbq",
  "llvm.x86.avx2.pmovzxbw",
  "llvm.x86.avx2.pmovzxdq",
  "llvm.x86.avx2.pmovzxwd",
  "llvm.x86.avx2.pmovzxwq",
  "llvm.x86.avx2.pmul.dq",
  "llvm.x86.avx2.pmul.hr.sw",
  "llvm.x86.avx2.pmulh.w",
  "llvm.x86.avx2.pmulhu.w",
  "llvm.x86.avx2.pmulu.dq",
  "llvm.x86.avx2.psad.bw",
  "llvm.x86.avx2.pshuf.b",
  "llvm.x86.avx2.psign.b",
  "llvm.x86.avx2.psign.d",
  "llvm.x86.avx2.psign.w",
  "llvm.x86.avx2.psll.d",
  "llvm.x86.avx2.psll.dq",
  "llvm.x86.avx2.psll.dq.bs",
  "llvm.x86.avx2.psll.q",
  "llvm.x86.avx2.psll.w",
  "llvm.x86.avx2.pslli.d",
  "llvm.x86.avx2.pslli.q",
  "llvm.x86.avx2.pslli.w",
  "llvm.x86.avx2.psllv.d",
  "llvm.x86.avx2.psllv.d.256",
  "llvm.x86.avx2.psllv.q",
  "llvm.x86.avx2.psllv.q.256",
  "llvm.x86.avx2.psra.d",
  "llvm.x86.avx2.psra.w",
  "llvm.x86.avx2.psrai.d",
  "llvm.x86.avx2.psrai.w",
  "llvm.x86.avx2.psrav.d",
  "llvm.x86.avx2.psrav.d.256",
  "llvm.x86.avx2.psrl.d",
  "llvm.x86.avx2.psrl.dq",
  "llvm.x86.avx2.psrl.dq.bs",
  "llvm.x86.avx2.psrl.q",
  "llvm.x86.avx2.psrl.w",
  "llvm.x86.avx2.psrli.d",
  "llvm.x86.avx2.psrli.q",
  "llvm.x86.avx2.psrli.w",
  "llvm.x86.avx2.psrlv.d",
  "llvm.x86.avx2.psrlv.d.256",
  "llvm.x86.avx2.psrlv.q",
  "llvm.x86.avx2.psrlv.q.256",
  "llvm.x86.avx2.psubs.b",
  "llvm.x86.avx2.psubs.w",
  "llvm.x86.avx2.psubus.b",
  "llvm.x86.avx2.psubus.w",
  "llvm.x86.avx2.vbroadcast.sd.pd.256",
  "llvm.x86.avx2.vbroadcast.ss.ps",
  "llvm.x86.avx2.vbroadcast.ss.ps.256",
  "llvm.x86.avx2.vbroadcasti128",
  "llvm.x86.avx2.vextracti128",
  "llvm.x86.avx2.vinserti128",
  "llvm.x86.avx2.vperm2i128",
  "llvm.x86.avx512.cvtsd2usi",
  "llvm.x86.avx512.cvtsd2usi64",
  "llvm.x86.avx512.cvtss2usi",
  "llvm.x86.avx512.cvtss2usi64",
  "llvm.x86.avx512.cvttsd2usi",
  "llvm.x86.avx512.cvttsd2usi64",
  "llvm.x86.avx512.cvttss2usi",
  "llvm.x86.avx512.cvttss2usi64",
  "llvm.x86.avx512.cvtusi2sd",
  "llvm.x86.avx512.cvtusi2ss",
  "llvm.x86.avx512.cvtusi642sd",
  "llvm.x86.avx512.cvtusi642ss",
  "llvm.x86.avx512.gather.dpd.512",
  "llvm.x86.avx512.gather.dpi.512",
  "llvm.x86.avx512.gather.dpq.512",
  "llvm.x86.avx512.gather.dps.512",
  "llvm.x86.avx512.gather.qpd.512",
  "llvm.x86.avx512.gather.qpi.512",
  "llvm.x86.avx512.gather.qpq.512",
  "llvm.x86.avx512.gather.qps.512",
  "llvm.x86.avx512.gatherpf.dpd.512",
  "llvm.x86.avx512.gatherpf.dps.512",
  "llvm.x86.avx512.gatherpf.qpd.512",
  "llvm.x86.avx512.gatherpf.qps.512",
  "llvm.x86.avx512.kand.w",
  "llvm.x86.avx512.kandn.w",
  "llvm.x86.avx512.knot.w",
  "llvm.x86.avx512.kor.w",
  "llvm.x86.avx512.kortestc.w",
  "llvm.x86.avx512.kortestz.w",
  "llvm.x86.avx512.kunpck.bw",
  "llvm.x86.avx512.kxnor.w",
  "llvm.x86.avx512.kxor.w",
  "llvm.x86.avx512.mask.blend.d.512",
  "llvm.x86.avx512.mask.blend.pd.512",
  "llvm.x86.avx512.mask.blend.ps.512",
  "llvm.x86.avx512.mask.blend.q.512",
  "llvm.x86.avx512.mask.cmp.pd.512",
  "llvm.x86.avx512.mask.cmp.ps.512",
  "llvm.x86.avx512.mask.conflict.d.512",
  "llvm.x86.avx512.mask.conflict.q.512",
  "llvm.x86.avx512.mask.cvtdq2pd.512",
  "llvm.x86.avx512.mask.cvtdq2ps.512",
  "llvm.x86.avx512.mask.cvtpd2dq.512",
  "llvm.x86.avx512.mask.cvtpd2ps.512",
  "llvm.x86.avx512.mask.cvtpd2udq.512",
  "llvm.x86.avx512.mask.cvtps2dq.512",
  "llvm.x86.avx512.mask.cvtps2udq.512",
  "llvm.x86.avx512.mask.cvttpd2dq.512",
  "llvm.x86.avx512.mask.cvttpd2udq.512",
  "llvm.x86.avx512.mask.cvttps2dq.512",
  "llvm.x86.avx512.mask.cvttps2udq.512",
  "llvm.x86.avx512.mask.cvtudq2pd.512",
  "llvm.x86.avx512.mask.cvtudq2ps.512",
  "llvm.x86.avx512.mask.loadu.d.512",
  "llvm.x86.avx512.mask.loadu.pd.512",
  "llvm.x86.avx512.mask.loadu.ps.512",
  "llvm.x86.avx512.mask.loadu.q.512",
  "llvm.x86.avx512.mask.lzcnt.d.512",
  "llvm.x86.avx512.mask.lzcnt.q.512",
  "llvm.x86.avx512.mask.max.pd.512",
  "llvm.x86.avx512.mask.max.ps.512",
  "llvm.x86.avx512.mask.min.pd.512",
  "llvm.x86.avx512.mask.min.ps.512",
  "llvm.x86.avx512.mask.pabs.d.512",
  "llvm.x86.avx512.mask.pabs.q.512",
  "llvm.x86.avx512.mask.pand.d.512",
  "llvm.x86.avx512.mask.pand.q.512",
  "llvm.x86.avx512.mask.pbroadcast.d.gpr.512",
  "llvm.x86.avx512.mask.pbroadcast.q.gpr.512",
  "llvm.x86.avx512.mask.pbroadcast.q.mem.512",
  "llvm.x86.avx512.mask.pcmpeq.d.512",
  "llvm.x86.avx512.mask.pcmpeq.q.512",
  "llvm.x86.avx512.mask.pmaxs.d.512",
  "llvm.x86.avx512.mask.pmaxs.q.512",
  "llvm.x86.avx512.mask.pmaxu.d.512",
  "llvm.x86.avx512.mask.pmaxu.q.512",
  "llvm.x86.avx512.mask.pmins.d.512",
  "llvm.x86.avx512.mask.pmins.q.512",
  "llvm.x86.avx512.mask.pminu.d.512",
  "llvm.x86.avx512.mask.pminu.q.512",
  "llvm.x86.avx512.mask.pmul.dq.512",
  "llvm.x86.avx512.mask.pmulu.dq.512",
  "llvm.x86.avx512.mask.ptestm.d.512",
  "llvm.x86.avx512.mask.ptestm.q.512",
  "llvm.x86.avx512.mask.rndscale.pd.512",
  "llvm.x86.avx512.mask.rndscale.ps.512",
  "llvm.x86.avx512.mask.storeu.d.512",
  "llvm.x86.avx512.mask.storeu.pd.512",
  "llvm.x86.avx512.mask.storeu.ps.512",
  "llvm.x86.avx512.mask.storeu.q.512",
  "llvm.x86.avx512.mask.vcvtph2ps.512",
  "llvm.x86.avx512.mask.vcvtps2ph.512",
  "llvm.x86.avx512.mask.vpermt.d.512",
  "llvm.x86.avx512.mask.vpermt.pd.512",
  "llvm.x86.avx512.mask.vpermt.ps.512",
  "llvm.x86.avx512.mask.vpermt.q.512",
  "llvm.x86.avx512.movntdqa",
  "llvm.x86.avx512.pbroadcastd.512",
  "llvm.x86.avx512.pbroadcastd.i32.512",
  "llvm.x86.avx512.pbroadcastq.512",
  "llvm.x86.avx512.pbroadcastq.i64.512",
  "llvm.x86.avx512.pmovzxbd",
  "llvm.x86.avx512.pmovzxbq",
  "llvm.x86.avx512.pmovzxdq",
  "llvm.x86.avx512.pmovzxwd",
  "llvm.x86.avx512.pmovzxwq",
  "llvm.x86.avx512.psll.dq",
  "llvm.x86.avx512.psll.dq.bs",
  "llvm.x86.avx512.psrl.dq",
  "llvm.x86.avx512.psrl.dq.bs",
  "llvm.x86.avx512.rcp14.pd.512",
  "llvm.x86.avx512.rcp14.ps.512",
  "llvm.x86.avx512.rcp14.sd",
  "llvm.x86.avx512.rcp14.ss",
  "llvm.x86.avx512.rcp28.pd",
  "llvm.x86.avx512.rcp28.ps",
  "llvm.x86.avx512.rcp28.sd",
  "llvm.x86.avx512.rcp28.ss",
  "llvm.x86.avx512.rndscale.sd",
  "llvm.x86.avx512.rndscale.ss",
  "llvm.x86.avx512.rsqrt14.pd.512",
  "llvm.x86.avx512.rsqrt14.ps.512",
  "llvm.x86.avx512.rsqrt14.sd",
  "llvm.x86.avx512.rsqrt14.ss",
  "llvm.x86.avx512.rsqrt28.pd",
  "llvm.x86.avx512.rsqrt28.ps",
  "llvm.x86.avx512.rsqrt28.sd",
  "llvm.x86.avx512.rsqrt28.ss",
  "llvm.x86.avx512.scatter.dpd.512",
  "llvm.x86.avx512.scatter.dpi.512",
  "llvm.x86.avx512.scatter.dpq.512",
  "llvm.x86.avx512.scatter.dps.512",
  "llvm.x86.avx512.scatter.qpd.512",
  "llvm.x86.avx512.scatter.qpi.512",
  "llvm.x86.avx512.scatter.qpq.512",
  "llvm.x86.avx512.scatter.qps.512",
  "llvm.x86.avx512.scatterpf.dpd.512",
  "llvm.x86.avx512.scatterpf.dps.512",
  "llvm.x86.avx512.scatterpf.qpd.512",
  "llvm.x86.avx512.scatterpf.qps.512",
  "llvm.x86.avx512.sqrt.pd.512",
  "llvm.x86.avx512.sqrt.ps.512",
  "llvm.x86.avx512.sqrt.sd",
  "llvm.x86.avx512.sqrt.ss",
  "llvm.x86.avx512.vbroadcast.sd.512",
  "llvm.x86.avx512.vbroadcast.sd.pd.512",
  "llvm.x86.avx512.vbroadcast.ss.512",
  "llvm.x86.avx512.vbroadcast.ss.ps.512",
  "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.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.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.vbroadcastf128.pd.256",
  "llvm.x86.avx.vbroadcastf128.ps.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.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.bmi.bextr.32",
  "llvm.x86.bmi.bextr.64",
  "llvm.x86.bmi.bzhi.32",
  "llvm.x86.bmi.bzhi.64",
  "llvm.x86.bmi.pdep.32",
  "llvm.x86.bmi.pdep.64",
  "llvm.x86.bmi.pext.32",
  "llvm.x86.bmi.pext.64",
  "llvm.x86.fma.vfmadd.pd",
  "llvm.x86.fma.vfmadd.pd.256",
  "llvm.x86.fma.vfmadd.pd.512",
  "llvm.x86.fma.vfmadd.ps",
  "llvm.x86.fma.vfmadd.ps.256",
  "llvm.x86.fma.vfmadd.ps.512",
  "llvm.x86.fma.vfmadd.sd",
  "llvm.x86.fma.vfmadd.ss",
  "llvm.x86.fma.vfmaddsub.pd",
  "llvm.x86.fma.vfmaddsub.pd.256",
  "llvm.x86.fma.vfmaddsub.pd.512",
  "llvm.x86.fma.vfmaddsub.ps",
  "llvm.x86.fma.vfmaddsub.ps.256",
  "llvm.x86.fma.vfmaddsub.ps.512",
  "llvm.x86.fma.vfmsub.pd",
  "llvm.x86.fma.vfmsub.pd.256",
  "llvm.x86.fma.vfmsub.pd.512",
  "llvm.x86.fma.vfmsub.ps",
  "llvm.x86.fma.vfmsub.ps.256",
  "llvm.x86.fma.vfmsub.ps.512",
  "llvm.x86.fma.vfmsub.sd",
  "llvm.x86.fma.vfmsub.ss",
  "llvm.x86.fma.vfmsubadd.pd",
  "llvm.x86.fma.vfmsubadd.pd.256",
  "llvm.x86.fma.vfmsubadd.pd.512",
  "llvm.x86.fma.vfmsubadd.ps",
  "llvm.x86.fma.vfmsubadd.ps.256",
  "llvm.x86.fma.vfmsubadd.ps.512",
  "llvm.x86.fma.vfnmadd.pd",
  "llvm.x86.fma.vfnmadd.pd.256",
  "llvm.x86.fma.vfnmadd.pd.512",
  "llvm.x86.fma.vfnmadd.ps",
  "llvm.x86.fma.vfnmadd.ps.256",
  "llvm.x86.fma.vfnmadd.ps.512",
  "llvm.x86.fma.vfnmadd.sd",
  "llvm.x86.fma.vfnmadd.ss",
  "llvm.x86.fma.vfnmsub.pd",
  "llvm.x86.fma.vfnmsub.pd.256",
  "llvm.x86.fma.vfnmsub.pd.512",
  "llvm.x86.fma.vfnmsub.ps",
  "llvm.x86.fma.vfnmsub.ps.256",
  "llvm.x86.fma.vfnmsub.ps.512",
  "llvm.x86.fma.vfnmsub.sd",
  "llvm.x86.fma.vfnmsub.ss",
  "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.pclmulqdq",
  "llvm.x86.rdfsbase.32",
  "llvm.x86.rdfsbase.64",
  "llvm.x86.rdgsbase.32",
  "llvm.x86.rdgsbase.64",
  "llvm.x86.rdpmc",
  "llvm.x86.rdrand.16",
  "llvm.x86.rdrand.32",
  "llvm.x86.rdrand.64",
  "llvm.x86.rdseed.16",
  "llvm.x86.rdseed.32",
  "llvm.x86.rdseed.64",
  "llvm.x86.rdtsc",
  "llvm.x86.rdtscp",
  "llvm.x86.sha1msg1",
  "llvm.x86.sha1msg2",
  "llvm.x86.sha1nexte",
  "llvm.x86.sha1rnds4",
  "llvm.x86.sha256msg1",
  "llvm.x86.sha256msg2",
  "llvm.x86.sha256rnds2",
  "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.pause",
  "llvm.x86.sse2.pavg.b",
  "llvm.x86.sse2.pavg.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.pshuf.d",
  "llvm.x86.sse2.pshufh.w",
  "llvm.x86.sse2.pshufl.w",
  "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.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.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.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.sse4a.extrq",
  "llvm.x86.sse4a.extrqi",
  "llvm.x86.sse4a.insertq",
  "llvm.x86.sse4a.insertqi",
  "llvm.x86.sse4a.movnt.sd",
  "llvm.x86.sse4a.movnt.ss",
  "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",
  "llvm.x86.tbm.bextri.u32",
  "llvm.x86.tbm.bextri.u64",
  "llvm.x86.vcvtph2ps.128",
  "llvm.x86.vcvtph2ps.256",
  "llvm.x86.vcvtps2ph.128",
  "llvm.x86.vcvtps2ph.256",
  "llvm.x86.wrfsbase.32",
  "llvm.x86.wrfsbase.64",
  "llvm.x86.wrgsbase.32",
  "llvm.x86.wrgsbase.64",
  "llvm.x86.xabort",
  "llvm.x86.xbegin",
  "llvm.x86.xend",
  "llvm.x86.xop.vfrcz.pd",
  "llvm.x86.xop.vfrcz.pd.256",
  "llvm.x86.xop.vfrcz.ps",
  "llvm.x86.xop.vfrcz.ps.256",
  "llvm.x86.xop.vfrcz.sd",
  "llvm.x86.xop.vfrcz.ss",
  "llvm.x86.xop.vpcmov",
  "llvm.x86.xop.vpcmov.256",
  "llvm.x86.xop.vpcomb",
  "llvm.x86.xop.vpcomd",
  "llvm.x86.xop.vpcomq",
  "llvm.x86.xop.vpcomub",
  "llvm.x86.xop.vpcomud",
  "llvm.x86.xop.vpcomuq",
  "llvm.x86.xop.vpcomuw",
  "llvm.x86.xop.vpcomw",
  "llvm.x86.xop.vpermil2pd",
  "llvm.x86.xop.vpermil2pd.256",
  "llvm.x86.xop.vpermil2ps",
  "llvm.x86.xop.vpermil2ps.256",
  "llvm.x86.xop.vphaddbd",
  "llvm.x86.xop.vphaddbq",
  "llvm.x86.xop.vphaddbw",
  "llvm.x86.xop.vphadddq",
  "llvm.x86.xop.vphaddubd",
  "llvm.x86.xop.vphaddubq",
  "llvm.x86.xop.vphaddubw",
  "llvm.x86.xop.vphaddudq",
  "llvm.x86.xop.vphadduwd",
  "llvm.x86.xop.vphadduwq",
  "llvm.x86.xop.vphaddwd",
  "llvm.x86.xop.vphaddwq",
  "llvm.x86.xop.vphsubbw",
  "llvm.x86.xop.vphsubdq",
  "llvm.x86.xop.vphsubwd",
  "llvm.x86.xop.vpmacsdd",
  "llvm.x86.xop.vpmacsdqh",
  "llvm.x86.xop.vpmacsdql",
  "llvm.x86.xop.vpmacssdd",
  "llvm.x86.xop.vpmacssdqh",
  "llvm.x86.xop.vpmacssdql",
  "llvm.x86.xop.vpmacsswd",
  "llvm.x86.xop.vpmacssww",
  "llvm.x86.xop.vpmacswd",
  "llvm.x86.xop.vpmacsww",
  "llvm.x86.xop.vpmadcsswd",
  "llvm.x86.xop.vpmadcswd",
  "llvm.x86.xop.vpperm",
  "llvm.x86.xop.vprotb",
  "llvm.x86.xop.vprotbi",
  "llvm.x86.xop.vprotd",
  "llvm.x86.xop.vprotdi",
  "llvm.x86.xop.vprotq",
  "llvm.x86.xop.vprotqi",
  "llvm.x86.xop.vprotw",
  "llvm.x86.xop.vprotwi",
  "llvm.x86.xop.vpshab",
  "llvm.x86.xop.vpshad",
  "llvm.x86.xop.vpshaq",
  "llvm.x86.xop.vpshaw",
  "llvm.x86.xop.vpshlb",
  "llvm.x86.xop.vpshld",
  "llvm.x86.xop.vpshlq",
  "llvm.x86.xop.vpshlw",
  "llvm.x86.xtest",
  "llvm.xcore.bitrev",
  "llvm.xcore.checkevent",
  "llvm.xcore.chkct",
  "llvm.xcore.clre",
  "llvm.xcore.clrpt",
  "llvm.xcore.clrsr",
  "llvm.xcore.crc32",
  "llvm.xcore.crc8",
  "llvm.xcore.edu",
  "llvm.xcore.eeu",
  "llvm.xcore.endin",
  "llvm.xcore.freer",
  "llvm.xcore.geted",
  "llvm.xcore.getet",
  "llvm.xcore.getid",
  "llvm.xcore.getps",
  "llvm.xcore.getr",
  "llvm.xcore.getst",
  "llvm.xcore.getts",
  "llvm.xcore.in",
  "llvm.xcore.inct",
  "llvm.xcore.initcp",
  "llvm.xcore.initdp",
  "llvm.xcore.initlr",
  "llvm.xcore.initpc",
  "llvm.xcore.initsp",
  "llvm.xcore.inshr",
  "llvm.xcore.int",
  "llvm.xcore.mjoin",
  "llvm.xcore.msync",
  "llvm.xcore.out",
  "llvm.xcore.outct",
  "llvm.xcore.outshr",
  "llvm.xcore.outt",
  "llvm.xcore.peek",
  "llvm.xcore.setc",
  "llvm.xcore.setclk",
  "llvm.xcore.setd",
  "llvm.xcore.setev",
  "llvm.xcore.setps",
  "llvm.xcore.setpsc",
  "llvm.xcore.setpt",
  "llvm.xcore.setrdy",
  "llvm.xcore.setsr",
  "llvm.xcore.settw",
  "llvm.xcore.setv",
  "llvm.xcore.sext",
  "llvm.xcore.ssync",
  "llvm.xcore.syncr",
  "llvm.xcore.testct",
  "llvm.xcore.testwct",
  "llvm.xcore.waitevent",
  "llvm.xcore.zext",
#endif

// Intrinsic ID to overload bitset
#ifdef GET_INTRINSIC_OVERLOAD_TABLE
static const uint8_t OTable[] = {
  0 | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0,
  0,
  0,
  0 | (1<<4) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
  0 | (1<<0) | (1<<1) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<2) | (1<<4) | (1<<5) | (1<<7),
  0,
  0 | (1<<6),
  0 | (1<<0),
  0,
  0 | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<4) | (1<<5) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4),
  0,
  0 | (1<<2) | (1<<4),
  0 | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5),
  0,
  0 | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<3) | (1<<4) | (1<<6) | (1<<7),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0 | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<2) | (1<<3) | (1<<4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0 | (1<<0),
  0 | (1<<7),
  0 | (1<<0) | (1<<1),
  0,
  0 | (1<<1) | (1<<2),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0 | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0,
  0,
  0,
  0 | (1<<4),
  0,
  0,
  0 | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2),
  0,
  0,
  0,
  0,
  0,
  0,
  0 | (1<<5),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0 | (1<<3) | (1<<4),
  0,
  0,
  0,
  0,
  0,
  0,
  0 | (1<<0) | (1<<2) | (1<<3),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0 | (1<<0) | (1<<3),
  0,
  0,
  0,
  0,
  0,
  0 | (1<<5),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<7),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0 | (1<<3) | (1<<5),
  0 | (1<<1) | (1<<2) | (1<<3) | (1<<4),
  0 | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  0 | (1<<1) | (1<<2) | (1<<3) | (1<<5) | (1<<6),
  0 | (1<<1) | (1<<2) | (1<<3)
};

return (OTable[id/8] & (1 << (id%8))) != 0;
#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("MDGPU.trig.preop.")) return Intrinsic::AMDGPU_trig_preop;
    if (NameR.startswith("MDGPU.rsq.clamped.")) return Intrinsic::AMDGPU_rsq_clamped;
    if (NameR.startswith("MDGPU.rsq.")) return Intrinsic::AMDGPU_rsq;
    if (NameR.startswith("MDGPU.rcp.")) return Intrinsic::AMDGPU_rcp;
    if (NameR.startswith("MDGPU.div.scale.")) return Intrinsic::AMDGPU_div_scale;
    if (NameR.startswith("MDGPU.div.fmas.")) return Intrinsic::AMDGPU_div_fmas;
    if (NameR.startswith("MDGPU.div.fixup.")) return Intrinsic::AMDGPU_div_fixup;
    break;  // end of 'A' case.
  case 'a':
    if (NameR.startswith("rm.vcvtru.")) return Intrinsic::arm_vcvtru;
    if (NameR.startswith("rm.vcvtr.")) return Intrinsic::arm_vcvtr;
    if (NameR.startswith("rm.strex.")) return Intrinsic::arm_strex;
    if (NameR.startswith("rm.stlex.")) return Intrinsic::arm_stlex;
    if (NameR.startswith("rm.neon.vst4lane.")) return Intrinsic::arm_neon_vst4lane;
    if (NameR.startswith("rm.neon.vst4.")) return Intrinsic::arm_neon_vst4;
    if (NameR.startswith("rm.neon.vst3lane.")) return Intrinsic::arm_neon_vst3lane;
    if (NameR.startswith("rm.neon.vst3.")) return Intrinsic::arm_neon_vst3;
    if (NameR.startswith("rm.neon.vst2lane.")) return Intrinsic::arm_neon_vst2lane;
    if (NameR.startswith("rm.neon.vst2.")) return Intrinsic::arm_neon_vst2;
    if (NameR.startswith("rm.neon.vst1.")) return Intrinsic::arm_neon_vst1;
    if (NameR.startswith("rm.neon.vshiftu.")) return Intrinsic::arm_neon_vshiftu;
    if (NameR.startswith("rm.neon.vshifts.")) return Intrinsic::arm_neon_vshifts;
    if (NameR.startswith("rm.neon.vshiftins.")) return Intrinsic::arm_neon_vshiftins;
    if (NameR.startswith("rm.neon.vrsubhn.")) return Intrinsic::arm_neon_vrsubhn;
    if (NameR.startswith("rm.neon.vrsqrts.")) return Intrinsic::arm_neon_vrsqrts;
    if (NameR.startswith("rm.neon.vrsqrte.")) return Intrinsic::arm_neon_vrsqrte;
    if (NameR.startswith("rm.neon.vrshiftu.")) return Intrinsic::arm_neon_vrshiftu;
    if (NameR.startswith("rm.neon.vrshifts.")) return Intrinsic::arm_neon_vrshifts;
    if (NameR.startswith("rm.neon.vrshiftn.")) return Intrinsic::arm_neon_vrshiftn;
    if (NameR.startswith("rm.neon.vrintz.")) return Intrinsic::arm_neon_vrintz;
    if (NameR.startswith("rm.neon.vrintx.")) return Intrinsic::arm_neon_vrintx;
    if (NameR.startswith("rm.neon.vrintp.")) return Intrinsic::arm_neon_vrintp;
    if (NameR.startswith("rm.neon.vrintn.")) return Intrinsic::arm_neon_vrintn;
    if (NameR.startswith("rm.neon.vrintm.")) return Intrinsic::arm_neon_vrintm;
    if (NameR.startswith("rm.neon.vrinta.")) return Intrinsic::arm_neon_vrinta;
    if (NameR.startswith("rm.neon.vrhaddu.")) return Intrinsic::arm_neon_vrhaddu;
    if (NameR.startswith("rm.neon.vrhadds.")) return Intrinsic::arm_neon_vrhadds;
    if (NameR.startswith("rm.neon.vrecps.")) return Intrinsic::arm_neon_vrecps;
    if (NameR.startswith("rm.neon.vrecpe.")) return Intrinsic::arm_neon_vrecpe;
    if (NameR.startswith("rm.neon.vraddhn.")) return Intrinsic::arm_neon_vraddhn;
    if (NameR.startswith("rm.neon.vqsubu.")) return Intrinsic::arm_neon_vqsubu;
    if (NameR.startswith("rm.neon.vqsubs.")) return Intrinsic::arm_neon_vqsubs;
    if (NameR.startswith("rm.neon.vqshiftu.")) return Intrinsic::arm_neon_vqshiftu;
    if (NameR.startswith("rm.neon.vqshiftsu.")) return Intrinsic::arm_neon_vqshiftsu;
    if (NameR.startswith("rm.neon.vqshifts.")) return Intrinsic::arm_neon_vqshifts;
    if (NameR.startswith("rm.neon.vqshiftnu.")) return Intrinsic::arm_neon_vqshiftnu;
    if (NameR.startswith("rm.neon.vqshiftnsu.")) return Intrinsic::arm_neon_vqshiftnsu;
    if (NameR.startswith("rm.neon.vqshiftns.")) return Intrinsic::arm_neon_vqshiftns;
    if (NameR.startswith("rm.neon.vqrshiftu.")) return Intrinsic::arm_neon_vqrshiftu;
    if (NameR.startswith("rm.neon.vqrshifts.")) return Intrinsic::arm_neon_vqrshifts;
    if (NameR.startswith("rm.neon.vqrshiftnu.")) return Intrinsic::arm_neon_vqrshiftnu;
    if (NameR.startswith("rm.neon.vqrshiftnsu.")) return Intrinsic::arm_neon_vqrshiftnsu;
    if (NameR.startswith("rm.neon.vqrshiftns.")) return Intrinsic::arm_neon_vqrshiftns;
    if (NameR.startswith("rm.neon.vqrdmulh.")) return Intrinsic::arm_neon_vqrdmulh;
    if (NameR.startswith("rm.neon.vqneg.")) return Intrinsic::arm_neon_vqneg;
    if (NameR.startswith("rm.neon.vqmovnu.")) return Intrinsic::arm_neon_vqmovnu;
    if (NameR.startswith("rm.neon.vqmovnsu.")) return Intrinsic::arm_neon_vqmovnsu;
    if (NameR.startswith("rm.neon.vqmovns.")) return Intrinsic::arm_neon_vqmovns;
    if (NameR.startswith("rm.neon.vqdmull.")) return Intrinsic::arm_neon_vqdmull;
    if (NameR.startswith("rm.neon.vqdmulh.")) return Intrinsic::arm_neon_vqdmulh;
    if (NameR.startswith("rm.neon.vqaddu.")) return Intrinsic::arm_neon_vqaddu;
    if (NameR.startswith("rm.neon.vqadds.")) return Intrinsic::arm_neon_vqadds;
    if (NameR.startswith("rm.neon.vqabs.")) return Intrinsic::arm_neon_vqabs;
    if (NameR.startswith("rm.neon.vpminu.")) return Intrinsic::arm_neon_vpminu;
    if (NameR.startswith("rm.neon.vpmins.")) return Intrinsic::arm_neon_vpmins;
    if (NameR.startswith("rm.neon.vpmaxu.")) return Intrinsic::arm_neon_vpmaxu;
    if (NameR.startswith("rm.neon.vpmaxs.")) return Intrinsic::arm_neon_vpmaxs;
    if (NameR.startswith("rm.neon.vpaddlu.")) return Intrinsic::arm_neon_vpaddlu;
    if (NameR.startswith("rm.neon.vpaddls.")) return Intrinsic::arm_neon_vpaddls;
    if (NameR.startswith("rm.neon.vpadd.")) return Intrinsic::arm_neon_vpadd;
    if (NameR.startswith("rm.neon.vpadalu.")) return Intrinsic::arm_neon_vpadalu;
    if (NameR.startswith("rm.neon.vpadals.")) return Intrinsic::arm_neon_vpadals;
    if (NameR.startswith("rm.neon.vmulp.")) return Intrinsic::arm_neon_vmulp;
    if (NameR.startswith("rm.neon.vmullu.")) return Intrinsic::arm_neon_vmullu;
    if (NameR.startswith("rm.neon.vmulls.")) return Intrinsic::arm_neon_vmulls;
    if (NameR.startswith("rm.neon.vmullp.")) return Intrinsic::arm_neon_vmullp;
    if (NameR.startswith("rm.neon.vminu.")) return Intrinsic::arm_neon_vminu;
    if (NameR.startswith("rm.neon.vmins.")) return Intrinsic::arm_neon_vmins;
    if (NameR.startswith("rm.neon.vminnm.")) return Intrinsic::arm_neon_vminnm;
    if (NameR.startswith("rm.neon.vmaxu.")) return Intrinsic::arm_neon_vmaxu;
    if (NameR.startswith("rm.neon.vmaxs.")) return Intrinsic::arm_neon_vmaxs;
    if (NameR.startswith("rm.neon.vmaxnm.")) return Intrinsic::arm_neon_vmaxnm;
    if (NameR.startswith("rm.neon.vld4lane.")) return Intrinsic::arm_neon_vld4lane;
    if (NameR.startswith("rm.neon.vld4.")) return Intrinsic::arm_neon_vld4;
    if (NameR.startswith("rm.neon.vld3lane.")) return Intrinsic::arm_neon_vld3lane;
    if (NameR.startswith("rm.neon.vld3.")) return Intrinsic::arm_neon_vld3;
    if (NameR.startswith("rm.neon.vld2lane.")) return Intrinsic::arm_neon_vld2lane;
    if (NameR.startswith("rm.neon.vld2.")) return Intrinsic::arm_neon_vld2;
    if (NameR.startswith("rm.neon.vld1.")) return Intrinsic::arm_neon_vld1;
    if (NameR.startswith("rm.neon.vhsubu.")) return Intrinsic::arm_neon_vhsubu;
    if (NameR.startswith("rm.neon.vhsubs.")) return Intrinsic::arm_neon_vhsubs;
    if (NameR.startswith("rm.neon.vhaddu.")) return Intrinsic::arm_neon_vhaddu;
    if (NameR.startswith("rm.neon.vhadds.")) return Intrinsic::arm_neon_vhadds;
    if (NameR.startswith("rm.neon.vcvtpu.")) return Intrinsic::arm_neon_vcvtpu;
    if (NameR.startswith("rm.neon.vcvtps.")) return Intrinsic::arm_neon_vcvtps;
    if (NameR.startswith("rm.neon.vcvtnu.")) return Intrinsic::arm_neon_vcvtnu;
    if (NameR.startswith("rm.neon.vcvtns.")) return Intrinsic::arm_neon_vcvtns;
    if (NameR.startswith("rm.neon.vcvtmu.")) return Intrinsic::arm_neon_vcvtmu;
    if (NameR.startswith("rm.neon.vcvtms.")) return Intrinsic::arm_neon_vcvtms;
    if (NameR.startswith("rm.neon.vcvtfxu2fp.")) return Intrinsic::arm_neon_vcvtfxu2fp;
    if (NameR.startswith("rm.neon.vcvtfxs2fp.")) return Intrinsic::arm_neon_vcvtfxs2fp;
    if (NameR.startswith("rm.neon.vcvtfp2fxu.")) return Intrinsic::arm_neon_vcvtfp2fxu;
    if (NameR.startswith("rm.neon.vcvtfp2fxs.")) return Intrinsic::arm_neon_vcvtfp2fxs;
    if (NameR.startswith("rm.neon.vcvtau.")) return Intrinsic::arm_neon_vcvtau;
    if (NameR.startswith("rm.neon.vcvtas.")) return Intrinsic::arm_neon_vcvtas;
    if (NameR.startswith("rm.neon.vcnt.")) return Intrinsic::arm_neon_vcnt;
    if (NameR.startswith("rm.neon.vclz.")) return Intrinsic::arm_neon_vclz;
    if (NameR.startswith("rm.neon.vcls.")) return Intrinsic::arm_neon_vcls;
    if (NameR.startswith("rm.neon.vbsl.")) return Intrinsic::arm_neon_vbsl;
    if (NameR.startswith("rm.neon.vacgt.")) return Intrinsic::arm_neon_vacgt;
    if (NameR.startswith("rm.neon.vacge.")) return Intrinsic::arm_neon_vacge;
    if (NameR.startswith("rm.neon.vabs.")) return Intrinsic::arm_neon_vabs;
    if (NameR.startswith("rm.neon.vabdu.")) return Intrinsic::arm_neon_vabdu;
    if (NameR.startswith("rm.neon.vabds.")) return Intrinsic::arm_neon_vabds;
    if (NameR.startswith("rm.ldrex.")) return Intrinsic::arm_ldrex;
    if (NameR.startswith("rm.ldaex.")) return Intrinsic::arm_ldaex;
    if (NameR.startswith("nnotation.")) return Intrinsic::annotation;
    if (NameR.startswith("arch64.udiv.")) return Intrinsic::aarch64_udiv;
    if (NameR.startswith("arch64.stxr.")) return Intrinsic::aarch64_stxr;
    if (NameR.startswith("arch64.stlxr.")) return Intrinsic::aarch64_stlxr;
    if (NameR.startswith("arch64.sisd.fabd.")) return Intrinsic::aarch64_sisd_fabd;
    if (NameR.startswith("arch64.sdiv.")) return Intrinsic::aarch64_sdiv;
    if (NameR.startswith("arch64.rbit.")) return Intrinsic::aarch64_rbit;
    if (NameR.startswith("arch64.neon.vsri.")) return Intrinsic::aarch64_neon_vsri;
    if (NameR.startswith("arch64.neon.vsli.")) return Intrinsic::aarch64_neon_vsli;
    if (NameR.startswith("arch64.neon.vcvtfxu2fp.")) return Intrinsic::aarch64_neon_vcvtfxu2fp;
    if (NameR.startswith("arch64.neon.vcvtfxs2fp.")) return Intrinsic::aarch64_neon_vcvtfxs2fp;
    if (NameR.startswith("arch64.neon.vcvtfp2fxu.")) return Intrinsic::aarch64_neon_vcvtfp2fxu;
    if (NameR.startswith("arch64.neon.vcvtfp2fxs.")) return Intrinsic::aarch64_neon_vcvtfp2fxs;
    if (NameR.startswith("arch64.neon.vcopy.lane.")) return Intrinsic::aarch64_neon_vcopy_lane;
    if (NameR.startswith("arch64.neon.usqadd.")) return Intrinsic::aarch64_neon_usqadd;
    if (NameR.startswith("arch64.neon.ushll.")) return Intrinsic::aarch64_neon_ushll;
    if (NameR.startswith("arch64.neon.ushl.")) return Intrinsic::aarch64_neon_ushl;
    if (NameR.startswith("arch64.neon.ursqrte.")) return Intrinsic::aarch64_neon_ursqrte;
    if (NameR.startswith("arch64.neon.urshl.")) return Intrinsic::aarch64_neon_urshl;
    if (NameR.startswith("arch64.neon.urhadd.")) return Intrinsic::aarch64_neon_urhadd;
    if (NameR.startswith("arch64.neon.urecpe.")) return Intrinsic::aarch64_neon_urecpe;
    if (NameR.startswith("arch64.neon.uqxtn.")) return Intrinsic::aarch64_neon_uqxtn;
    if (NameR.startswith("arch64.neon.uqsub.")) return Intrinsic::aarch64_neon_uqsub;
    if (NameR.startswith("arch64.neon.uqshrn.")) return Intrinsic::aarch64_neon_uqshrn;
    if (NameR.startswith("arch64.neon.uqshl.")) return Intrinsic::aarch64_neon_uqshl;
    if (NameR.startswith("arch64.neon.uqrshrn.")) return Intrinsic::aarch64_neon_uqrshrn;
    if (NameR.startswith("arch64.neon.uqrshl.")) return Intrinsic::aarch64_neon_uqrshl;
    if (NameR.startswith("arch64.neon.uqadd.")) return Intrinsic::aarch64_neon_uqadd;
    if (NameR.startswith("arch64.neon.umull.")) return Intrinsic::aarch64_neon_umull;
    if (NameR.startswith("arch64.neon.uminv.")) return Intrinsic::aarch64_neon_uminv;
    if (NameR.startswith("arch64.neon.uminp.")) return Intrinsic::aarch64_neon_uminp;
    if (NameR.startswith("arch64.neon.umin.")) return Intrinsic::aarch64_neon_umin;
    if (NameR.startswith("arch64.neon.umaxv.")) return Intrinsic::aarch64_neon_umaxv;
    if (NameR.startswith("arch64.neon.umaxp.")) return Intrinsic::aarch64_neon_umaxp;
    if (NameR.startswith("arch64.neon.umax.")) return Intrinsic::aarch64_neon_umax;
    if (NameR.startswith("arch64.neon.uhsub.")) return Intrinsic::aarch64_neon_uhsub;
    if (NameR.startswith("arch64.neon.uhadd.")) return Intrinsic::aarch64_neon_uhadd;
    if (NameR.startswith("arch64.neon.uaddv.")) return Intrinsic::aarch64_neon_uaddv;
    if (NameR.startswith("arch64.neon.uaddlv.")) return Intrinsic::aarch64_neon_uaddlv;
    if (NameR.startswith("arch64.neon.uaddlp.")) return Intrinsic::aarch64_neon_uaddlp;
    if (NameR.startswith("arch64.neon.uabd.")) return Intrinsic::aarch64_neon_uabd;
    if (NameR.startswith("arch64.neon.tbx4.")) return Intrinsic::aarch64_neon_tbx4;
    if (NameR.startswith("arch64.neon.tbx3.")) return Intrinsic::aarch64_neon_tbx3;
    if (NameR.startswith("arch64.neon.tbx2.")) return Intrinsic::aarch64_neon_tbx2;
    if (NameR.startswith("arch64.neon.tbx1.")) return Intrinsic::aarch64_neon_tbx1;
    if (NameR.startswith("arch64.neon.tbl4.")) return Intrinsic::aarch64_neon_tbl4;
    if (NameR.startswith("arch64.neon.tbl3.")) return Intrinsic::aarch64_neon_tbl3;
    if (NameR.startswith("arch64.neon.tbl2.")) return Intrinsic::aarch64_neon_tbl2;
    if (NameR.startswith("arch64.neon.tbl1.")) return Intrinsic::aarch64_neon_tbl1;
    if (NameR.startswith("arch64.neon.suqadd.")) return Intrinsic::aarch64_neon_suqadd;
    if (NameR.startswith("arch64.neon.subhn.")) return Intrinsic::aarch64_neon_subhn;
    if (NameR.startswith("arch64.neon.st4lane.")) return Intrinsic::aarch64_neon_st4lane;
    if (NameR.startswith("arch64.neon.st4.")) return Intrinsic::aarch64_neon_st4;
    if (NameR.startswith("arch64.neon.st3lane.")) return Intrinsic::aarch64_neon_st3lane;
    if (NameR.startswith("arch64.neon.st3.")) return Intrinsic::aarch64_neon_st3;
    if (NameR.startswith("arch64.neon.st2lane.")) return Intrinsic::aarch64_neon_st2lane;
    if (NameR.startswith("arch64.neon.st2.")) return Intrinsic::aarch64_neon_st2;
    if (NameR.startswith("arch64.neon.st1x4.")) return Intrinsic::aarch64_neon_st1x4;
    if (NameR.startswith("arch64.neon.st1x3.")) return Intrinsic::aarch64_neon_st1x3;
    if (NameR.startswith("arch64.neon.st1x2.")) return Intrinsic::aarch64_neon_st1x2;
    if (NameR.startswith("arch64.neon.sshll.")) return Intrinsic::aarch64_neon_sshll;
    if (NameR.startswith("arch64.neon.sshl.")) return Intrinsic::aarch64_neon_sshl;
    if (NameR.startswith("arch64.neon.srshl.")) return Intrinsic::aarch64_neon_srshl;
    if (NameR.startswith("arch64.neon.srhadd.")) return Intrinsic::aarch64_neon_srhadd;
    if (NameR.startswith("arch64.neon.sqxtun.")) return Intrinsic::aarch64_neon_sqxtun;
    if (NameR.startswith("arch64.neon.sqxtn.")) return Intrinsic::aarch64_neon_sqxtn;
    if (NameR.startswith("arch64.neon.sqsub.")) return Intrinsic::aarch64_neon_sqsub;
    if (NameR.startswith("arch64.neon.sqshrun.")) return Intrinsic::aarch64_neon_sqshrun;
    if (NameR.startswith("arch64.neon.sqshrn.")) return Intrinsic::aarch64_neon_sqshrn;
    if (NameR.startswith("arch64.neon.sqshlu.")) return Intrinsic::aarch64_neon_sqshlu;
    if (NameR.startswith("arch64.neon.sqshl.")) return Intrinsic::aarch64_neon_sqshl;
    if (NameR.startswith("arch64.neon.sqrshrun.")) return Intrinsic::aarch64_neon_sqrshrun;
    if (NameR.startswith("arch64.neon.sqrshrn.")) return Intrinsic::aarch64_neon_sqrshrn;
    if (NameR.startswith("arch64.neon.sqrshl.")) return Intrinsic::aarch64_neon_sqrshl;
    if (NameR.startswith("arch64.neon.sqrdmulh.")) return Intrinsic::aarch64_neon_sqrdmulh;
    if (NameR.startswith("arch64.neon.sqneg.")) return Intrinsic::aarch64_neon_sqneg;
    if (NameR.startswith("arch64.neon.sqdmull.")) return Intrinsic::aarch64_neon_sqdmull;
    if (NameR.startswith("arch64.neon.sqdmulh.")) return Intrinsic::aarch64_neon_sqdmulh;
    if (NameR.startswith("arch64.neon.sqadd.")) return Intrinsic::aarch64_neon_sqadd;
    if (NameR.startswith("arch64.neon.sqabs.")) return Intrinsic::aarch64_neon_sqabs;
    if (NameR.startswith("arch64.neon.smull.")) return Intrinsic::aarch64_neon_smull;
    if (NameR.startswith("arch64.neon.sminv.")) return Intrinsic::aarch64_neon_sminv;
    if (NameR.startswith("arch64.neon.sminp.")) return Intrinsic::aarch64_neon_sminp;
    if (NameR.startswith("arch64.neon.smin.")) return Intrinsic::aarch64_neon_smin;
    if (NameR.startswith("arch64.neon.smaxv.")) return Intrinsic::aarch64_neon_smaxv;
    if (NameR.startswith("arch64.neon.smaxp.")) return Intrinsic::aarch64_neon_smaxp;
    if (NameR.startswith("arch64.neon.smax.")) return Intrinsic::aarch64_neon_smax;
    if (NameR.startswith("arch64.neon.shsub.")) return Intrinsic::aarch64_neon_shsub;
    if (NameR.startswith("arch64.neon.shll.")) return Intrinsic::aarch64_neon_shll;
    if (NameR.startswith("arch64.neon.shadd.")) return Intrinsic::aarch64_neon_shadd;
    if (NameR.startswith("arch64.neon.scalar.uqxtn.")) return Intrinsic::aarch64_neon_scalar_uqxtn;
    if (NameR.startswith("arch64.neon.scalar.sqxtun.")) return Intrinsic::aarch64_neon_scalar_sqxtun;
    if (NameR.startswith("arch64.neon.scalar.sqxtn.")) return Intrinsic::aarch64_neon_scalar_sqxtn;
    if (NameR.startswith("arch64.neon.saddv.")) return Intrinsic::aarch64_neon_saddv;
    if (NameR.startswith("arch64.neon.saddlv.")) return Intrinsic::aarch64_neon_saddlv;
    if (NameR.startswith("arch64.neon.saddlp.")) return Intrinsic::aarch64_neon_saddlp;
    if (NameR.startswith("arch64.neon.sabd.")) return Intrinsic::aarch64_neon_sabd;
    if (NameR.startswith("arch64.neon.rsubhn.")) return Intrinsic::aarch64_neon_rsubhn;
    if (NameR.startswith("arch64.neon.rshrn.")) return Intrinsic::aarch64_neon_rshrn;
    if (NameR.startswith("arch64.neon.rbit.")) return Intrinsic::aarch64_neon_rbit;
    if (NameR.startswith("arch64.neon.raddhn.")) return Intrinsic::aarch64_neon_raddhn;
    if (NameR.startswith("arch64.neon.pmull.")) return Intrinsic::aarch64_neon_pmull;
    if (NameR.startswith("arch64.neon.pmul.")) return Intrinsic::aarch64_neon_pmul;
    if (NameR.startswith("arch64.neon.ld4r.")) return Intrinsic::aarch64_neon_ld4r;
    if (NameR.startswith("arch64.neon.ld4lane.")) return Intrinsic::aarch64_neon_ld4lane;
    if (NameR.startswith("arch64.neon.ld4.")) return Intrinsic::aarch64_neon_ld4;
    if (NameR.startswith("arch64.neon.ld3r.")) return Intrinsic::aarch64_neon_ld3r;
    if (NameR.startswith("arch64.neon.ld3lane.")) return Intrinsic::aarch64_neon_ld3lane;
    if (NameR.startswith("arch64.neon.ld3.")) return Intrinsic::aarch64_neon_ld3;
    if (NameR.startswith("arch64.neon.ld2r.")) return Intrinsic::aarch64_neon_ld2r;
    if (NameR.startswith("arch64.neon.ld2lane.")) return Intrinsic::aarch64_neon_ld2lane;
    if (NameR.startswith("arch64.neon.ld2.")) return Intrinsic::aarch64_neon_ld2;
    if (NameR.startswith("arch64.neon.ld1x4.")) return Intrinsic::aarch64_neon_ld1x4;
    if (NameR.startswith("arch64.neon.ld1x3.")) return Intrinsic::aarch64_neon_ld1x3;
    if (NameR.startswith("arch64.neon.ld1x2.")) return Intrinsic::aarch64_neon_ld1x2;
    if (NameR.startswith("arch64.neon.frsqrts.")) return Intrinsic::aarch64_neon_frsqrts;
    if (NameR.startswith("arch64.neon.frsqrte.")) return Intrinsic::aarch64_neon_frsqrte;
    if (NameR.startswith("arch64.neon.frintn.")) return Intrinsic::aarch64_neon_frintn;
    if (NameR.startswith("arch64.neon.frecpx.")) return Intrinsic::aarch64_neon_frecpx;
    if (NameR.startswith("arch64.neon.frecps.")) return Intrinsic::aarch64_neon_frecps;
    if (NameR.startswith("arch64.neon.frecpe.")) return Intrinsic::aarch64_neon_frecpe;
    if (NameR.startswith("arch64.neon.fmulx.")) return Intrinsic::aarch64_neon_fmulx;
    if (NameR.startswith("arch64.neon.fminv.")) return Intrinsic::aarch64_neon_fminv;
    if (NameR.startswith("arch64.neon.fminp.")) return Intrinsic::aarch64_neon_fminp;
    if (NameR.startswith("arch64.neon.fminnmv.")) return Intrinsic::aarch64_neon_fminnmv;
    if (NameR.startswith("arch64.neon.fminnmp.")) return Intrinsic::aarch64_neon_fminnmp;
    if (NameR.startswith("arch64.neon.fminnm.")) return Intrinsic::aarch64_neon_fminnm;
    if (NameR.startswith("arch64.neon.fmin.")) return Intrinsic::aarch64_neon_fmin;
    if (NameR.startswith("arch64.neon.fmaxv.")) return Intrinsic::aarch64_neon_fmaxv;
    if (NameR.startswith("arch64.neon.fmaxp.")) return Intrinsic::aarch64_neon_fmaxp;
    if (NameR.startswith("arch64.neon.fmaxnmv.")) return Intrinsic::aarch64_neon_fmaxnmv;
    if (NameR.startswith("arch64.neon.fmaxnmp.")) return Intrinsic::aarch64_neon_fmaxnmp;
    if (NameR.startswith("arch64.neon.fmaxnm.")) return Intrinsic::aarch64_neon_fmaxnm;
    if (NameR.startswith("arch64.neon.fmax.")) return Intrinsic::aarch64_neon_fmax;
    if (NameR.startswith("arch64.neon.fcvtzu.")) return Intrinsic::aarch64_neon_fcvtzu;
    if (NameR.startswith("arch64.neon.fcvtzs.")) return Intrinsic::aarch64_neon_fcvtzs;
    if (NameR.startswith("arch64.neon.fcvtxn.")) return Intrinsic::aarch64_neon_fcvtxn;
    if (NameR.startswith("arch64.neon.fcvtpu.")) return Intrinsic::aarch64_neon_fcvtpu;
    if (NameR.startswith("arch64.neon.fcvtps.")) return Intrinsic::aarch64_neon_fcvtps;
    if (NameR.startswith("arch64.neon.fcvtnu.")) return Intrinsic::aarch64_neon_fcvtnu;
    if (NameR.startswith("arch64.neon.fcvtns.")) return Intrinsic::aarch64_neon_fcvtns;
    if (NameR.startswith("arch64.neon.fcvtmu.")) return Intrinsic::aarch64_neon_fcvtmu;
    if (NameR.startswith("arch64.neon.fcvtms.")) return Intrinsic::aarch64_neon_fcvtms;
    if (NameR.startswith("arch64.neon.fcvtau.")) return Intrinsic::aarch64_neon_fcvtau;
    if (NameR.startswith("arch64.neon.fcvtas.")) return Intrinsic::aarch64_neon_fcvtas;
    if (NameR.startswith("arch64.neon.faddv.")) return Intrinsic::aarch64_neon_faddv;
    if (NameR.startswith("arch64.neon.facgt.")) return Intrinsic::aarch64_neon_facgt;
    if (NameR.startswith("arch64.neon.facge.")) return Intrinsic::aarch64_neon_facge;
    if (NameR.startswith("arch64.neon.fabd.")) return Intrinsic::aarch64_neon_fabd;
    if (NameR.startswith("arch64.neon.cls.")) return Intrinsic::aarch64_neon_cls;
    if (NameR.startswith("arch64.neon.addp.")) return Intrinsic::aarch64_neon_addp;
    if (NameR.startswith("arch64.neon.addhn.")) return Intrinsic::aarch64_neon_addhn;
    if (NameR.startswith("arch64.neon.abs.")) return Intrinsic::aarch64_neon_abs;
    if (NameR.startswith("arch64.ldxr.")) return Intrinsic::aarch64_ldxr;
    if (NameR.startswith("arch64.ldaxr.")) return Intrinsic::aarch64_ldaxr;
    switch (NameR.size()) {
    default: break;
    case 6:	 // 6 strings to match.
      if (memcmp(NameR.data()+0, "rm.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "dp", 2))
          break;
        return Intrinsic::arm_cdp;	 // "rm.cdp"
      case 'd':	 // 2 strings to match.
        switch (NameR[4]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (NameR[5] != 'b')
            break;
          return Intrinsic::arm_dmb;	 // "rm.dmb"
        case 's':	 // 1 string to match.
          if (NameR[5] != 'b')
            break;
          return Intrinsic::arm_dsb;	 // "rm.dsb"
        }
        break;
      case 'i':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "sb", 2))
          break;
        return Intrinsic::arm_isb;	 // "rm.isb"
      case 'm':	 // 2 strings to match.
        switch (NameR[4]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (NameR[5] != 'r')
            break;
          return Intrinsic::arm_mcr;	 // "rm.mcr"
        case 'r':	 // 1 string to match.
          if (NameR[5] != 'c')
            break;
          return Intrinsic::arm_mrc;	 // "rm.mrc"
        }
        break;
      }
      break;
    case 7:	 // 10 strings to match.
      if (memcmp(NameR.data()+0, "rm.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "dp2", 3))
          break;
        return Intrinsic::arm_cdp2;	 // "rm.cdp2"
      case 'h':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "int", 3))
          break;
        return Intrinsic::arm_hint;	 // "rm.hint"
      case 'm':	 // 3 strings to match.
        switch (NameR[4]) {
        default: break;
        case 'c':	 // 2 strings to match.
          if (NameR[5] != 'r')
            break;
          switch (NameR[6]) {
          default: break;
          case '2':	 // 1 string to match.
            return Intrinsic::arm_mcr2;	 // "rm.mcr2"
          case 'r':	 // 1 string to match.
            return Intrinsic::arm_mcrr;	 // "rm.mcrr"
          }
          break;
        case 'r':	 // 1 string to match.
          if (memcmp(NameR.data()+5, "c2", 2))
            break;
          return Intrinsic::arm_mrc2;	 // "rm.mrc2"
        }
        break;
      case 'q':	 // 2 strings to match.
        switch (NameR[4]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+5, "dd", 2))
            break;
          return Intrinsic::arm_qadd;	 // "rm.qadd"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+5, "ub", 2))
            break;
          return Intrinsic::arm_qsub;	 // "rm.qsub"
        }
        break;
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "bit", 3))
          break;
        return Intrinsic::arm_rbit;	 // "rm.rbit"
      case 's':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "sat", 3))
          break;
        return Intrinsic::arm_ssat;	 // "rm.ssat"
      case 'u':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "sat", 3))
          break;
        return Intrinsic::arm_usat;	 // "rm.usat"
      }
      break;
    case 8:	 // 2 strings to match.
      if (memcmp(NameR.data()+0, "rm.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "lrex", 4))
          break;
        return Intrinsic::arm_clrex;	 // "rm.clrex"
      case 'm':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "crr2", 4))
          break;
        return Intrinsic::arm_mcrr2;	 // "rm.mcrr2"
      }
      break;
    case 9:	 // 7 strings to match.
      if (memcmp(NameR.data()+0, "rm.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'c':	 // 3 strings to match.
        if (memcmp(NameR.data()+4, "rc32", 4))
          break;
        switch (NameR[8]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::arm_crc32b;	 // "rm.crc32b"
        case 'h':	 // 1 string to match.
          return Intrinsic::arm_crc32h;	 // "rm.crc32h"
        case 'w':	 // 1 string to match.
          return Intrinsic::arm_crc32w;	 // "rm.crc32w"
        }
        break;
      case 'l':	 // 2 strings to match.
        if (NameR[4] != 'd')
          break;
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "exd", 3))
            break;
          return Intrinsic::arm_ldaexd;	 // "rm.ldaexd"
        case 'r':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "exd", 3))
            break;
          return Intrinsic::arm_ldrexd;	 // "rm.ldrexd"
        }
        break;
      case 's':	 // 2 strings to match.
        if (NameR[4] != 't')
          break;
        switch (NameR[5]) {
        default: break;
        case 'l':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "exd", 3))
            break;
          return Intrinsic::arm_stlexd;	 // "rm.stlexd"
        case 'r':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "exd", 3))
            break;
          return Intrinsic::arm_strexd;	 // "rm.strexd"
        }
        break;
      }
      break;
    case 10:	 // 6 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'a':	 // 3 strings to match.
        if (memcmp(NameR.data()+1, "rch64.", 6))
          break;
        switch (NameR[7]) {
        default: break;
        case 'd':	 // 2 strings to match.
          switch (NameR[8]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (NameR[9] != 'b')
              break;
            return Intrinsic::aarch64_dmb;	 // "arch64.dmb"
          case 's':	 // 1 string to match.
            if (NameR[9] != 'b')
              break;
            return Intrinsic::aarch64_dsb;	 // "arch64.dsb"
          }
          break;
        case 'i':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "sb", 2))
            break;
          return Intrinsic::aarch64_isb;	 // "arch64.isb"
        }
        break;
      case 'r':	 // 3 strings to match.
        if (memcmp(NameR.data()+1, "m.crc32c", 8))
          break;
        switch (NameR[9]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::arm_crc32cb;	 // "rm.crc32cb"
        case 'h':	 // 1 string to match.
          return Intrinsic::arm_crc32ch;	 // "rm.crc32ch"
        case 'w':	 // 1 string to match.
          return Intrinsic::arm_crc32cw;	 // "rm.crc32cw"
        }
        break;
      }
      break;
    case 11:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "arch64.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'h':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "int", 3))
          break;
        return Intrinsic::aarch64_hint;	 // "arch64.hint"
      case 'l':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "dxp", 3))
          break;
        return Intrinsic::aarch64_ldxp;	 // "arch64.ldxp"
      case 's':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "txp", 3))
          break;
        return Intrinsic::aarch64_stxp;	 // "arch64.stxp"
      }
      break;
    case 12:	 // 8 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'a':	 // 3 strings to match.
        if (memcmp(NameR.data()+1, "rch64.", 6))
          break;
        switch (NameR[7]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "lrex", 4))
            break;
          return Intrinsic::aarch64_clrex;	 // "arch64.clrex"
        case 'l':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "daxp", 4))
            break;
          return Intrinsic::aarch64_ldaxp;	 // "arch64.ldaxp"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "tlxp", 4))
            break;
          return Intrinsic::aarch64_stlxp;	 // "arch64.stlxp"
        }
        break;
      case 'r':	 // 5 strings to match.
        if (memcmp(NameR.data()+1, "m.", 2))
          break;
        switch (NameR[3]) {
        default: break;
        case 'g':	 // 1 string to match.
          if (memcmp(NameR.data()+4, "et.fpscr", 8))
            break;
          return Intrinsic::arm_get_fpscr;	 // "rm.get.fpscr"
        case 'n':	 // 2 strings to match.
          if (memcmp(NameR.data()+4, "eon.aes", 7))
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::arm_neon_aesd;	 // "rm.neon.aesd"
          case 'e':	 // 1 string to match.
            return Intrinsic::arm_neon_aese;	 // "rm.neon.aese"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+4, "et.fpscr", 8))
            break;
          return Intrinsic::arm_set_fpscr;	 // "rm.set.fpscr"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+4, "ndefined", 8))
            break;
          return Intrinsic::arm_undefined;	 // "rm.undefined"
        }
        break;
      }
      break;
    case 13:	 // 17 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'a':	 // 4 strings to match.
        if (memcmp(NameR.data()+1, "rch64.crc32", 11))
          break;
        switch (NameR[12]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::aarch64_crc32b;	 // "arch64.crc32b"
        case 'h':	 // 1 string to match.
          return Intrinsic::aarch64_crc32h;	 // "arch64.crc32h"
        case 'w':	 // 1 string to match.
          return Intrinsic::aarch64_crc32w;	 // "arch64.crc32w"
        case 'x':	 // 1 string to match.
          return Intrinsic::aarch64_crc32x;	 // "arch64.crc32x"
        }
        break;
      case 'r':	 // 13 strings to match.
        if (memcmp(NameR.data()+1, "m.neon.", 7))
          break;
        switch (NameR[8]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "esmc", 4))
            break;
          return Intrinsic::arm_neon_aesmc;	 // "rm.neon.aesmc"
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+9, "ha1", 3))
            break;
          switch (NameR[12]) {
          default: break;
          case 'c':	 // 1 string to match.
            return Intrinsic::arm_neon_sha1c;	 // "rm.neon.sha1c"
          case 'h':	 // 1 string to match.
            return Intrinsic::arm_neon_sha1h;	 // "rm.neon.sha1h"
          case 'm':	 // 1 string to match.
            return Intrinsic::arm_neon_sha1m;	 // "rm.neon.sha1m"
          case 'p':	 // 1 string to match.
            return Intrinsic::arm_neon_sha1p;	 // "rm.neon.sha1p"
          }
          break;
        case 'v':	 // 8 strings to match.
          if (memcmp(NameR.data()+9, "tb", 2))
            break;
          switch (NameR[11]) {
          default: break;
          case 'l':	 // 4 strings to match.
            switch (NameR[12]) {
            default: break;
            case '1':	 // 1 string to match.
              return Intrinsic::arm_neon_vtbl1;	 // "rm.neon.vtbl1"
            case '2':	 // 1 string to match.
              return Intrinsic::arm_neon_vtbl2;	 // "rm.neon.vtbl2"
            case '3':	 // 1 string to match.
              return Intrinsic::arm_neon_vtbl3;	 // "rm.neon.vtbl3"
            case '4':	 // 1 string to match.
              return Intrinsic::arm_neon_vtbl4;	 // "rm.neon.vtbl4"
            }
            break;
          case 'x':	 // 4 strings to match.
            switch (NameR[12]) {
            default: break;
            case '1':	 // 1 string to match.
              return Intrinsic::arm_neon_vtbx1;	 // "rm.neon.vtbx1"
            case '2':	 // 1 string to match.
              return Intrinsic::arm_neon_vtbx2;	 // "rm.neon.vtbx2"
            case '3':	 // 1 string to match.
              return Intrinsic::arm_neon_vtbx3;	 // "rm.neon.vtbx3"
            case '4':	 // 1 string to match.
              return Intrinsic::arm_neon_vtbx4;	 // "rm.neon.vtbx4"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 14:	 // 5 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'a':	 // 4 strings to match.
        if (memcmp(NameR.data()+1, "rch64.crc32c", 12))
          break;
        switch (NameR[13]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::aarch64_crc32cb;	 // "arch64.crc32cb"
        case 'h':	 // 1 string to match.
          return Intrinsic::aarch64_crc32ch;	 // "arch64.crc32ch"
        case 'w':	 // 1 string to match.
          return Intrinsic::aarch64_crc32cw;	 // "arch64.crc32cw"
        case 'x':	 // 1 string to match.
          return Intrinsic::aarch64_crc32cx;	 // "arch64.crc32cx"
        }
        break;
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "m.neon.aesimc", 13))
          break;
        return Intrinsic::arm_neon_aesimc;	 // "rm.neon.aesimc"
      }
      break;
    case 15:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "rm.neon.sha", 11))
        break;
      switch (NameR[11]) {
      default: break;
      case '1':	 // 2 strings to match.
        if (memcmp(NameR.data()+12, "su", 2))
          break;
        switch (NameR[14]) {
        default: break;
        case '0':	 // 1 string to match.
          return Intrinsic::arm_neon_sha1su0;	 // "rm.neon.sha1su0"
        case '1':	 // 1 string to match.
          return Intrinsic::arm_neon_sha1su1;	 // "rm.neon.sha1su1"
        }
        break;
      case '2':	 // 1 string to match.
        if (memcmp(NameR.data()+12, "56h", 3))
          break;
        return Intrinsic::arm_neon_sha256h;	 // "rm.neon.sha256h"
      }
      break;
    case 16:	 // 2 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "just.trampoline", 15))
          break;
        return Intrinsic::adjust_trampoline;	 // "djust.trampoline"
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "m.neon.sha256h2", 15))
          break;
        return Intrinsic::arm_neon_sha256h2;	 // "rm.neon.sha256h2"
      }
      break;
    case 17:	 // 5 strings to match.
      if (memcmp(NameR.data()+0, "rm.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'n':	 // 4 strings to match.
        if (memcmp(NameR.data()+4, "eon.", 4))
          break;
        switch (NameR[8]) {
        default: break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+9, "ha256su", 7))
            break;
          switch (NameR[16]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::arm_neon_sha256su0;	 // "rm.neon.sha256su0"
          case '1':	 // 1 string to match.
            return Intrinsic::arm_neon_sha256su1;	 // "rm.neon.sha256su1"
          }
          break;
        case 'v':	 // 2 strings to match.
          if (memcmp(NameR.data()+9, "cvt", 3))
            break;
          switch (NameR[12]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "p2hf", 4))
              break;
            return Intrinsic::arm_neon_vcvtfp2hf;	 // "rm.neon.vcvtfp2hf"
          case 'h':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "f2fp", 4))
              break;
            return Intrinsic::arm_neon_vcvthf2fp;	 // "rm.neon.vcvthf2fp"
          }
          break;
        }
        break;
      case 't':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "hread.pointer", 13))
          break;
        return Intrinsic::arm_thread_pointer;	 // "rm.thread.pointer"
      }
      break;
    case 18:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "arch64.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'c':	 // 2 strings to match.
        if (memcmp(NameR.data()+8, "rypto.aes", 9))
          break;
        switch (NameR[17]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::aarch64_crypto_aesd;	 // "arch64.crypto.aesd"
        case 'e':	 // 1 string to match.
          return Intrinsic::aarch64_crypto_aese;	 // "arch64.crypto.aese"
        }
        break;
      case 's':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "isd.fcvtxn", 10))
          break;
        return Intrinsic::aarch64_sisd_fcvtxn;	 // "arch64.sisd.fcvtxn"
      }
      break;
    case 19:	 // 6 strings to match.
      if (memcmp(NameR.data()+0, "arch64.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'c':	 // 5 strings to match.
        if (memcmp(NameR.data()+8, "rypto.", 6))
          break;
        switch (NameR[14]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+15, "esmc", 4))
            break;
          return Intrinsic::aarch64_crypto_aesmc;	 // "arch64.crypto.aesmc"
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+15, "ha1", 3))
            break;
          switch (NameR[18]) {
          default: break;
          case 'c':	 // 1 string to match.
            return Intrinsic::aarch64_crypto_sha1c;	 // "arch64.crypto.sha1c"
          case 'h':	 // 1 string to match.
            return Intrinsic::aarch64_crypto_sha1h;	 // "arch64.crypto.sha1h"
          case 'm':	 // 1 string to match.
            return Intrinsic::aarch64_crypto_sha1m;	 // "arch64.crypto.sha1m"
          case 'p':	 // 1 string to match.
            return Intrinsic::aarch64_crypto_sha1p;	 // "arch64.crypto.sha1p"
          }
          break;
        }
        break;
      case 'n':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "eon.pmull64", 11))
          break;
        return Intrinsic::aarch64_neon_pmull64;	 // "arch64.neon.pmull64"
      }
      break;
    case 20:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "arch64.crypto.aesimc", 20))
        break;
      return Intrinsic::aarch64_crypto_aesimc;	 // "arch64.crypto.aesimc"
    case 21:	 // 5 strings to match.
      if (memcmp(NameR.data()+0, "arch64.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'c':	 // 3 strings to match.
        if (memcmp(NameR.data()+8, "rypto.sha", 9))
          break;
        switch (NameR[17]) {
        default: break;
        case '1':	 // 2 strings to match.
          if (memcmp(NameR.data()+18, "su", 2))
            break;
          switch (NameR[20]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::aarch64_crypto_sha1su0;	 // "arch64.crypto.sha1su0"
          case '1':	 // 1 string to match.
            return Intrinsic::aarch64_crypto_sha1su1;	 // "arch64.crypto.sha1su1"
          }
          break;
        case '2':	 // 1 string to match.
          if (memcmp(NameR.data()+18, "56h", 3))
            break;
          return Intrinsic::aarch64_crypto_sha256h;	 // "arch64.crypto.sha256h"
        }
        break;
      case 'n':	 // 2 strings to match.
        if (memcmp(NameR.data()+8, "eon.vcvt", 8))
          break;
        switch (NameR[16]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+17, "p2hf", 4))
            break;
          return Intrinsic::aarch64_neon_vcvtfp2hf;	 // "arch64.neon.vcvtfp2hf"
        case 'h':	 // 1 string to match.
          if (memcmp(NameR.data()+17, "f2fp", 4))
            break;
          return Intrinsic::aarch64_neon_vcvthf2fp;	 // "arch64.neon.vcvthf2fp"
        }
        break;
      }
      break;
    case 22:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "arch64.crypto.sha256h2", 22))
        break;
      return Intrinsic::aarch64_crypto_sha256h2;	 // "arch64.crypto.sha256h2"
    case 23:	 // 2 strings to match.
      if (memcmp(NameR.data()+0, "arch64.crypto.sha256su", 22))
        break;
      switch (NameR[22]) {
      default: break;
      case '0':	 // 1 string to match.
        return Intrinsic::aarch64_crypto_sha256su0;	 // "arch64.crypto.sha256su0"
      case '1':	 // 1 string to match.
        return Intrinsic::aarch64_crypto_sha256su1;	 // "arch64.crypto.sha256su1"
      }
      break;
    case 27:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "arch64.neon.sqdmulls.scalar", 27))
        break;
      return Intrinsic::aarch64_neon_sqdmulls_scalar;	 // "arch64.neon.sqdmulls.scalar"
    }
    break;  // end of 'a' case.
  case 'b':
    if (NameR.startswith("swap.")) return Intrinsic::bswap;
    break;  // end of 'b' case.
  case 'c':
    if (NameR.startswith("ttz.")) return Intrinsic::cttz;
    if (NameR.startswith("tpop.")) return Intrinsic::ctpop;
    if (NameR.startswith("tlz.")) return Intrinsic::ctlz;
    if (NameR.startswith("os.")) return Intrinsic::cos;
    if (NameR.startswith("opysign.")) return Intrinsic::copysign;
    if (NameR.startswith("onvertuu.")) return Intrinsic::convertuu;
    if (NameR.startswith("onvertus.")) return Intrinsic::convertus;
    if (NameR.startswith("onvertuif.")) return Intrinsic::convertuif;
    if (NameR.startswith("onvertsu.")) return Intrinsic::convertsu;
    if (NameR.startswith("onvertss.")) return Intrinsic::convertss;
    if (NameR.startswith("onvertsif.")) return Intrinsic::convertsif;
    if (NameR.startswith("onvertfui.")) return Intrinsic::convertfui;
    if (NameR.startswith("onvertfsi.")) return Intrinsic::convertfsi;
    if (NameR.startswith("onvertff.")) return Intrinsic::convertff;
    if (NameR.startswith("onvert.to.fp16.")) return Intrinsic::convert_to_fp16;
    if (NameR.startswith("onvert.from.fp16.")) return Intrinsic::convert_from_fp16;
    if (NameR.startswith("eil.")) return Intrinsic::ceil;
    switch (NameR.size()) {
    default: break;
    case 10:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "lear_cache", 10))
        break;
      return Intrinsic::clear_cache;	 // "lear_cache"
    case 15:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "uda.syncthreads", 15))
        break;
      return Intrinsic::cuda_syncthreads;	 // "uda.syncthreads"
    }
    break;  // end of 'c' case.
  case 'd':
    switch (NameR.size()) {
    default: break;
    case 8:	 // 3 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'b':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "g.value", 7))
          break;
        return Intrinsic::dbg_value;	 // "bg.value"
      case 'e':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "bugtrap", 7))
          break;
        return Intrinsic::debugtrap;	 // "ebugtrap"
      case 'o':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "nothing", 7))
          break;
        return Intrinsic::donothing;	 // "onothing"
      }
      break;
    case 10:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "bg.declare", 10))
        break;
      return Intrinsic::dbg_declare;	 // "bg.declare"
    }
    break;  // end of 'd' case.
  case 'e':
    if (NameR.startswith("xpect.")) return Intrinsic::expect;
    if (NameR.startswith("xp2.")) return Intrinsic::exp2;
    if (NameR.startswith("xp.")) return Intrinsic::exp;
    switch (NameR.size()) {
    default: break;
    case 11:	 // 2 strings to match.
      if (memcmp(NameR.data()+0, "h.", 2))
        break;
      switch (NameR[2]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(NameR.data()+3, "warf.cfa", 8))
          break;
        return Intrinsic::eh_dwarf_cfa;	 // "h.dwarf.cfa"
      case 's':	 // 1 string to match.
        if (memcmp(NameR.data()+3, "jlj.lsda", 8))
          break;
        return Intrinsic::eh_sjlj_lsda;	 // "h.sjlj.lsda"
      }
      break;
    case 12:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "h.", 2))
        break;
      switch (NameR[2]) {
      default: break;
      case 'r':	 // 2 strings to match.
        if (memcmp(NameR.data()+3, "eturn.i", 7))
          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 (memcmp(NameR.data()+3, "ypeid.for", 9))
          break;
        return Intrinsic::eh_typeid_for;	 // "h.typeid.for"
      }
      break;
    case 13:	 // 2 strings to match.
      if (memcmp(NameR.data()+0, "h.", 2))
        break;
      switch (NameR[2]) {
      default: break;
      case 's':	 // 1 string to match.
        if (memcmp(NameR.data()+3, "jlj.setjmp", 10))
          break;
        return Intrinsic::eh_sjlj_setjmp;	 // "h.sjlj.setjmp"
      case 'u':	 // 1 string to match.
        if (memcmp(NameR.data()+3, "nwind.init", 10))
          break;
        return Intrinsic::eh_unwind_init;	 // "h.unwind.init"
      }
      break;
    case 14:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "h.sjlj.longjmp", 14))
        break;
      return Intrinsic::eh_sjlj_longjmp;	 // "h.sjlj.longjmp"
    case 15:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "h.sjlj.callsite", 15))
        break;
      return Intrinsic::eh_sjlj_callsite;	 // "h.sjlj.callsite"
    case 20:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "xperimental.stackmap", 20))
        break;
      return Intrinsic::experimental_stackmap;	 // "xperimental.stackmap"
    case 22:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "h.sjlj.functioncontext", 22))
        break;
      return Intrinsic::eh_sjlj_functioncontext;	 // "h.sjlj.functioncontext"
    case 26:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "xperimental.patchpoint.i64", 26))
        break;
      return Intrinsic::experimental_patchpoint_i64;	 // "xperimental.patchpoint.i64"
    case 27:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "xperimental.patchpoint.void", 27))
        break;
      return Intrinsic::experimental_patchpoint_void;	 // "xperimental.patchpoint.void"
    }
    break;  // end of 'e' case.
  case 'f':
    if (NameR.startswith("muladd.")) return Intrinsic::fmuladd;
    if (NameR.startswith("ma.")) return Intrinsic::fma;
    if (NameR.startswith("loor.")) return Intrinsic::floor;
    if (NameR.startswith("abs.")) return Intrinsic::fabs;
    switch (NameR.size()) {
    default: break;
    case 9:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "lt.rounds", 9))
        break;
      return Intrinsic::flt_rounds;	 // "lt.rounds"
    case 11:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "rameaddress", 11))
        break;
      return Intrinsic::frameaddress;	 // "rameaddress"
    }
    break;  // end of 'f' case.
  case 'g':
    switch (NameR.size()) {
    default: break;
    case 5:	 // 2 strings to match.
      if (memcmp(NameR.data()+0, "cr", 2))
        break;
      switch (NameR[2]) {
      default: break;
      case 'e':	 // 1 string to match.
        if (memcmp(NameR.data()+3, "ad", 2))
          break;
        return Intrinsic::gcread;	 // "cread"
      case 'o':	 // 1 string to match.
        if (memcmp(NameR.data()+3, "ot", 2))
          break;
        return Intrinsic::gcroot;	 // "croot"
      }
      break;
    case 6:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "cwrite", 6))
        break;
      return Intrinsic::gcwrite;	 // "cwrite"
    }
    break;  // end of 'g' case.
  case 'h':
    switch (NameR.size()) {
    default: break;
    case 12:	 // 2 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "2.or", 4))
          break;
        return Intrinsic::hexagon_A2_or;	 // "exagon.A2.or"
      case 'C':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "2.or", 4))
          break;
        return Intrinsic::hexagon_C2_or;	 // "exagon.C2.or"
      }
      break;
    case 13:	 // 23 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 13 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 12 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 3 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (NameR[12] != 's')
                break;
              return Intrinsic::hexagon_A2_abs;	 // "exagon.A2.abs"
            case 'd':	 // 1 string to match.
              if (NameR[12] != 'd')
                break;
              return Intrinsic::hexagon_A2_add;	 // "exagon.A2.add"
            case 'n':	 // 1 string to match.
              if (NameR[12] != 'd')
                break;
              return Intrinsic::hexagon_A2_and;	 // "exagon.A2.and"
            }
            break;
          case 'm':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (NameR[12] != 'x')
                break;
              return Intrinsic::hexagon_A2_max;	 // "exagon.A2.max"
            case 'i':	 // 1 string to match.
              if (NameR[12] != 'n')
                break;
              return Intrinsic::hexagon_A2_min;	 // "exagon.A2.min"
            }
            break;
          case 'n':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (NameR[12] != 'g')
                break;
              return Intrinsic::hexagon_A2_neg;	 // "exagon.A2.neg"
            case 'o':	 // 1 string to match.
              if (NameR[12] != 't')
                break;
              return Intrinsic::hexagon_A2_not;	 // "exagon.A2.not"
            }
            break;
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "rp", 2))
              break;
            return Intrinsic::hexagon_A2_orp;	 // "exagon.A2.orp"
          case 's':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (NameR[12] != 't')
                break;
              return Intrinsic::hexagon_A2_sat;	 // "exagon.A2.sat"
            case 'u':	 // 1 string to match.
              if (NameR[12] != 'b')
                break;
              return Intrinsic::hexagon_A2_sub;	 // "exagon.A2.sub"
            }
            break;
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "fr", 2))
              break;
            return Intrinsic::hexagon_A2_tfr;	 // "exagon.A2.tfr"
          case 'x':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "or", 2))
              break;
            return Intrinsic::hexagon_A2_xor;	 // "exagon.A2.xor"
          }
          break;
        case '4':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".orn", 4))
            break;
          return Intrinsic::hexagon_A4_orn;	 // "exagon.A4.orn"
        }
        break;
      case 'C':	 // 5 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "nd", 2))
            break;
          return Intrinsic::hexagon_C2_and;	 // "exagon.C2.and"
        case 'm':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "ux", 2))
            break;
          return Intrinsic::hexagon_C2_mux;	 // "exagon.C2.mux"
        case 'n':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "ot", 2))
            break;
          return Intrinsic::hexagon_C2_not;	 // "exagon.C2.not"
        case 'o':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "rn", 2))
            break;
          return Intrinsic::hexagon_C2_orn;	 // "exagon.C2.orn"
        case 'x':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "or", 2))
            break;
          return Intrinsic::hexagon_C2_xor;	 // "exagon.C2.xor"
        }
        break;
      case 'S':	 // 5 strings to match.
        if (memcmp(NameR.data()+8, "2.c", 3))
          break;
        switch (NameR[11]) {
        default: break;
        case 'l':	 // 3 strings to match.
          switch (NameR[12]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_S2_cl0;	 // "exagon.S2.cl0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_S2_cl1;	 // "exagon.S2.cl1"
          case 'b':	 // 1 string to match.
            return Intrinsic::hexagon_S2_clb;	 // "exagon.S2.clb"
          }
          break;
        case 't':	 // 2 strings to match.
          switch (NameR[12]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_S2_ct0;	 // "exagon.S2.ct0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_S2_ct1;	 // "exagon.S2.ct1"
          }
          break;
        }
        break;
      }
      break;
    case 14:	 // 42 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 26 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 24 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 6 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "sp", 2))
                break;
              return Intrinsic::hexagon_A2_absp;	 // "exagon.A2.absp"
            case 'd':	 // 2 strings to match.
              if (NameR[12] != 'd')
                break;
              switch (NameR[13]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_A2_addi;	 // "exagon.A2.addi"
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_A2_addp;	 // "exagon.A2.addp"
              }
              break;
            case 'n':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "dp", 2))
                break;
              return Intrinsic::hexagon_A2_andp;	 // "exagon.A2.andp"
            case 's':	 // 2 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'l':	 // 1 string to match.
                if (NameR[13] != 'h')
                  break;
                return Intrinsic::hexagon_A2_aslh;	 // "exagon.A2.aslh"
              case 'r':	 // 1 string to match.
                if (NameR[13] != 'h')
                  break;
                return Intrinsic::hexagon_A2_asrh;	 // "exagon.A2.asrh"
              }
              break;
            }
            break;
          case 'm':	 // 4 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (NameR[12] != 'x')
                break;
              switch (NameR[13]) {
              default: break;
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_A2_maxp;	 // "exagon.A2.maxp"
              case 'u':	 // 1 string to match.
                return Intrinsic::hexagon_A2_maxu;	 // "exagon.A2.maxu"
              }
              break;
            case 'i':	 // 2 strings to match.
              if (NameR[12] != 'n')
                break;
              switch (NameR[13]) {
              default: break;
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_A2_minp;	 // "exagon.A2.minp"
              case 'u':	 // 1 string to match.
                return Intrinsic::hexagon_A2_minu;	 // "exagon.A2.minu"
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "gp", 2))
                break;
              return Intrinsic::hexagon_A2_negp;	 // "exagon.A2.negp"
            case 'o':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "tp", 2))
                break;
              return Intrinsic::hexagon_A2_notp;	 // "exagon.A2.notp"
            }
            break;
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "rir", 3))
              break;
            return Intrinsic::hexagon_A2_orir;	 // "exagon.A2.orir"
          case 's':	 // 7 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (NameR[12] != 't')
                break;
              switch (NameR[13]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::hexagon_A2_satb;	 // "exagon.A2.satb"
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_sath;	 // "exagon.A2.sath"
              }
              break;
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "bp", 2))
                break;
              return Intrinsic::hexagon_A2_subp;	 // "exagon.A2.subp"
            case 'w':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "iz", 2))
                break;
              return Intrinsic::hexagon_A2_swiz;	 // "exagon.A2.swiz"
            case 'x':	 // 3 strings to match.
              if (NameR[12] != 't')
                break;
              switch (NameR[13]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::hexagon_A2_sxtb;	 // "exagon.A2.sxtb"
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_sxth;	 // "exagon.A2.sxth"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_A2_sxtw;	 // "exagon.A2.sxtw"
              }
              break;
            }
            break;
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "frp", 3))
              break;
            return Intrinsic::hexagon_A2_tfrp;	 // "exagon.A2.tfrp"
          case 'x':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "orp", 3))
              break;
            return Intrinsic::hexagon_A2_xorp;	 // "exagon.A2.xorp"
          case 'z':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "xt", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::hexagon_A2_zxtb;	 // "exagon.A2.zxtb"
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_A2_zxth;	 // "exagon.A2.zxth"
            }
            break;
          }
          break;
        case '4':	 // 2 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ndn", 3))
              break;
            return Intrinsic::hexagon_A4_andn;	 // "exagon.A4.andn"
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "rnp", 3))
              break;
            return Intrinsic::hexagon_A4_ornp;	 // "exagon.A4.ornp"
          }
          break;
        }
        break;
      case 'C':	 // 5 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'a':	 // 3 strings to match.
          switch (NameR[11]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "l8", 2))
              break;
            return Intrinsic::hexagon_C2_all8;	 // "exagon.C2.all8"
          case 'n':	 // 2 strings to match.
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (NameR[13] != 'n')
                break;
              return Intrinsic::hexagon_C2_andn;	 // "exagon.C2.andn"
            case 'y':	 // 1 string to match.
              if (NameR[13] != '8')
                break;
              return Intrinsic::hexagon_C2_any8;	 // "exagon.C2.any8"
            }
            break;
          }
          break;
        case 'm':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "ask", 3))
            break;
          return Intrinsic::hexagon_C2_mask;	 // "exagon.C2.mask"
        case 'v':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "mux", 3))
            break;
          return Intrinsic::hexagon_C2_vmux;	 // "exagon.C2.vmux"
        }
        break;
      case 'M':	 // 3 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "cci", 3))
            break;
          return Intrinsic::hexagon_M2_acci;	 // "exagon.M2.acci"
        case 'm':	 // 2 strings to match.
          switch (NameR[11]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "ci", 2))
              break;
            return Intrinsic::hexagon_M2_maci;	 // "exagon.M2.maci"
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "yi", 2))
              break;
            return Intrinsic::hexagon_M2_mpyi;	 // "exagon.M2.mpyi"
          }
          break;
        }
        break;
      case 'S':	 // 8 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 7 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "rev", 3))
              break;
            return Intrinsic::hexagon_S2_brev;	 // "exagon.S2.brev"
          case 'c':	 // 5 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'l':	 // 3 strings to match.
              switch (NameR[12]) {
              default: break;
              case '0':	 // 1 string to match.
                if (NameR[13] != 'p')
                  break;
                return Intrinsic::hexagon_S2_cl0p;	 // "exagon.S2.cl0p"
              case '1':	 // 1 string to match.
                if (NameR[13] != 'p')
                  break;
                return Intrinsic::hexagon_S2_cl1p;	 // "exagon.S2.cl1p"
              case 'b':	 // 1 string to match.
                if (NameR[13] != 'p')
                  break;
                return Intrinsic::hexagon_S2_clbp;	 // "exagon.S2.clbp"
              }
              break;
            case 't':	 // 2 strings to match.
              switch (NameR[12]) {
              default: break;
              case '0':	 // 1 string to match.
                if (NameR[13] != 'p')
                  break;
                return Intrinsic::hexagon_S2_ct0p;	 // "exagon.S2.ct0p"
              case '1':	 // 1 string to match.
                if (NameR[13] != 'p')
                  break;
                return Intrinsic::hexagon_S2_ct1p;	 // "exagon.S2.ct1p"
              }
              break;
            }
            break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "fsp", 3))
              break;
            return Intrinsic::hexagon_S2_lfsp;	 // "exagon.S2.lfsp"
          }
          break;
        case '4':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".lsli", 5))
            break;
          return Intrinsic::hexagon_S4_lsli;	 // "exagon.S4.lsli"
        }
        break;
      }
      break;
    case 15:	 // 58 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 27 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 26 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "dsp", 3))
                break;
              return Intrinsic::hexagon_A2_addsp;	 // "exagon.A2.addsp"
            case 'n':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "dir", 3))
                break;
              return Intrinsic::hexagon_A2_andir;	 // "exagon.A2.andir"
            }
            break;
          case 'm':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "xup", 3))
                break;
              return Intrinsic::hexagon_A2_maxup;	 // "exagon.A2.maxup"
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "nup", 3))
                break;
              return Intrinsic::hexagon_A2_minup;	 // "exagon.A2.minup"
            }
            break;
          case 's':	 // 3 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "tu", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::hexagon_A2_satub;	 // "exagon.A2.satub"
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_satuh;	 // "exagon.A2.satuh"
              }
              break;
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "bri", 3))
                break;
              return Intrinsic::hexagon_A2_subri;	 // "exagon.A2.subri"
            }
            break;
          case 't':	 // 4 strings to match.
            if (memcmp(NameR.data()+11, "fr", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'i':	 // 2 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_tfrih;	 // "exagon.A2.tfrih"
              case 'l':	 // 1 string to match.
                return Intrinsic::hexagon_A2_tfril;	 // "exagon.A2.tfril"
              }
              break;
            case 'p':	 // 1 string to match.
              if (NameR[14] != 'i')
                break;
              return Intrinsic::hexagon_A2_tfrpi;	 // "exagon.A2.tfrpi"
            case 's':	 // 1 string to match.
              if (NameR[14] != 'i')
                break;
              return Intrinsic::hexagon_A2_tfrsi;	 // "exagon.A2.tfrsi"
            }
            break;
          case 'v':	 // 15 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 6 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'b':	 // 2 strings to match.
                if (NameR[13] != 's')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vabsh;	 // "exagon.A2.vabsh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vabsw;	 // "exagon.A2.vabsw"
                }
                break;
              case 'd':	 // 2 strings to match.
                if (NameR[13] != 'd')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vaddh;	 // "exagon.A2.vaddh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vaddw;	 // "exagon.A2.vaddw"
                }
                break;
              case 'v':	 // 2 strings to match.
                if (NameR[13] != 'g')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vavgh;	 // "exagon.A2.vavgh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vavgw;	 // "exagon.A2.vavgw"
                }
                break;
              }
              break;
            case 'c':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "onj", 3))
                break;
              return Intrinsic::hexagon_A2_vconj;	 // "exagon.A2.vconj"
            case 'm':	 // 6 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 3 strings to match.
                if (NameR[13] != 'x')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vmaxb;	 // "exagon.A2.vmaxb"
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vmaxh;	 // "exagon.A2.vmaxh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vmaxw;	 // "exagon.A2.vmaxw"
                }
                break;
              case 'i':	 // 3 strings to match.
                if (NameR[13] != 'n')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vminb;	 // "exagon.A2.vminb"
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vminh;	 // "exagon.A2.vminh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vminw;	 // "exagon.A2.vminw"
                }
                break;
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "ub", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vsubh;	 // "exagon.A2.vsubh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vsubw;	 // "exagon.A2.vsubw"
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".andnp", 6))
            break;
          return Intrinsic::hexagon_A4_andnp;	 // "exagon.A4.andnp"
        }
        break;
      case 'C':	 // 9 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 8 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 3 strings to match.
            if (memcmp(NameR.data()+11, "mp", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (NameR[14] != 'q')
                break;
              return Intrinsic::hexagon_C2_cmpeq;	 // "exagon.C2.cmpeq"
            case 'g':	 // 1 string to match.
              if (NameR[14] != 't')
                break;
              return Intrinsic::hexagon_C2_cmpgt;	 // "exagon.C2.cmpgt"
            case 'l':	 // 1 string to match.
              if (NameR[14] != 't')
                break;
              return Intrinsic::hexagon_C2_cmplt;	 // "exagon.C2.cmplt"
            }
            break;
          case 'm':	 // 3 strings to match.
            if (memcmp(NameR.data()+11, "ux", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'i':	 // 2 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_C2_muxii;	 // "exagon.C2.muxii"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_C2_muxir;	 // "exagon.C2.muxir"
              }
              break;
            case 'r':	 // 1 string to match.
              if (NameR[14] != 'i')
                break;
              return Intrinsic::hexagon_C2_muxri;	 // "exagon.C2.muxri"
            }
            break;
          case 't':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "fr", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (NameR[14] != 'r')
                break;
              return Intrinsic::hexagon_C2_tfrpr;	 // "exagon.C2.tfrpr"
            case 'r':	 // 1 string to match.
              if (NameR[14] != 'p')
                break;
              return Intrinsic::hexagon_C2_tfrrp;	 // "exagon.C2.tfrrp"
            }
            break;
          }
          break;
        case '4':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".or.or", 6))
            break;
          return Intrinsic::hexagon_C4_or_or;	 // "exagon.C4.or.or"
        }
        break;
      case 'F':	 // 14 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'd':	 // 7 strings to match.
          if (NameR[11] != 'f')
            break;
          switch (NameR[12]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "dd", 2))
              break;
            return Intrinsic::hexagon_F2_dfadd;	 // "exagon.F2.dfadd"
          case 'f':	 // 2 strings to match.
            if (NameR[13] != 'm')
              break;
            switch (NameR[14]) {
            default: break;
            case 'a':	 // 1 string to match.
              return Intrinsic::hexagon_F2_dffma;	 // "exagon.F2.dffma"
            case 's':	 // 1 string to match.
              return Intrinsic::hexagon_F2_dffms;	 // "exagon.F2.dffms"
            }
            break;
          case 'm':	 // 3 strings to match.
            switch (NameR[13]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (NameR[14] != 'x')
                break;
              return Intrinsic::hexagon_F2_dfmax;	 // "exagon.F2.dfmax"
            case 'i':	 // 1 string to match.
              if (NameR[14] != 'n')
                break;
              return Intrinsic::hexagon_F2_dfmin;	 // "exagon.F2.dfmin"
            case 'p':	 // 1 string to match.
              if (NameR[14] != 'y')
                break;
              return Intrinsic::hexagon_F2_dfmpy;	 // "exagon.F2.dfmpy"
            }
            break;
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "ub", 2))
              break;
            return Intrinsic::hexagon_F2_dfsub;	 // "exagon.F2.dfsub"
          }
          break;
        case 's':	 // 7 strings to match.
          if (NameR[11] != 'f')
            break;
          switch (NameR[12]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "dd", 2))
              break;
            return Intrinsic::hexagon_F2_sfadd;	 // "exagon.F2.sfadd"
          case 'f':	 // 2 strings to match.
            if (NameR[13] != 'm')
              break;
            switch (NameR[14]) {
            default: break;
            case 'a':	 // 1 string to match.
              return Intrinsic::hexagon_F2_sffma;	 // "exagon.F2.sffma"
            case 's':	 // 1 string to match.
              return Intrinsic::hexagon_F2_sffms;	 // "exagon.F2.sffms"
            }
            break;
          case 'm':	 // 3 strings to match.
            switch (NameR[13]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (NameR[14] != 'x')
                break;
              return Intrinsic::hexagon_F2_sfmax;	 // "exagon.F2.sfmax"
            case 'i':	 // 1 string to match.
              if (NameR[14] != 'n')
                break;
              return Intrinsic::hexagon_F2_sfmin;	 // "exagon.F2.sfmin"
            case 'p':	 // 1 string to match.
              if (NameR[14] != 'y')
                break;
              return Intrinsic::hexagon_F2_sfmpy;	 // "exagon.F2.sfmpy"
            }
            break;
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "ub", 2))
              break;
            return Intrinsic::hexagon_F2_sfsub;	 // "exagon.F2.sfsub"
          }
          break;
        }
        break;
      case 'M':	 // 6 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 4 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ccii", 4))
              break;
            return Intrinsic::hexagon_M2_accii;	 // "exagon.M2.accii"
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "pyui", 4))
              break;
            return Intrinsic::hexagon_M2_mpyui;	 // "exagon.M2.mpyui"
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "acci", 4))
              break;
            return Intrinsic::hexagon_M2_nacci;	 // "exagon.M2.nacci"
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "mac2", 4))
              break;
            return Intrinsic::hexagon_M2_vmac2;	 // "exagon.M2.vmac2"
          }
          break;
        case '4':	 // 2 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "r.or", 4))
              break;
            return Intrinsic::hexagon_M4_or_or;	 // "exagon.M4.or.or"
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "mpyw", 4))
              break;
            return Intrinsic::hexagon_M4_pmpyw;	 // "exagon.M4.pmpyw"
          }
          break;
        }
        break;
      case 'S':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "2.brevp", 7))
          break;
        return Intrinsic::hexagon_S2_brevp;	 // "exagon.S2.brevp"
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "irc.ldd", 7))
          break;
        return Intrinsic::hexagon_circ_ldd;	 // "exagon.circ.ldd"
      }
      break;
    case 16:	 // 70 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 35 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 26 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "ssat", 4))
                break;
              return Intrinsic::hexagon_A2_abssat;	 // "exagon.A2.abssat"
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "dsat", 4))
                break;
              return Intrinsic::hexagon_A2_addsat;	 // "exagon.A2.addsat"
            }
            break;
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "egsat", 5))
              break;
            return Intrinsic::hexagon_A2_negsat;	 // "exagon.A2.negsat"
          case 's':	 // 4 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "bsat", 4))
                break;
              return Intrinsic::hexagon_A2_subsat;	 // "exagon.A2.subsat"
            case 'v':	 // 3 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 2 strings to match.
                switch (NameR[13]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "dh", 2))
                    break;
                  return Intrinsic::hexagon_A2_svaddh;	 // "exagon.A2.svaddh"
                case 'v':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "gh", 2))
                    break;
                  return Intrinsic::hexagon_A2_svavgh;	 // "exagon.A2.svavgh"
                }
                break;
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+13, "ubh", 3))
                  break;
                return Intrinsic::hexagon_A2_svsubh;	 // "exagon.A2.svsubh"
              }
              break;
            }
            break;
          case 'v':	 // 19 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 8 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'd':	 // 3 strings to match.
                if (NameR[13] != 'd')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'h':	 // 1 string to match.
                  if (NameR[15] != 's')
                    break;
                  return Intrinsic::hexagon_A2_vaddhs;	 // "exagon.A2.vaddhs"
                case 'u':	 // 1 string to match.
                  if (NameR[15] != 'b')
                    break;
                  return Intrinsic::hexagon_A2_vaddub;	 // "exagon.A2.vaddub"
                case 'w':	 // 1 string to match.
                  if (NameR[15] != 's')
                    break;
                  return Intrinsic::hexagon_A2_vaddws;	 // "exagon.A2.vaddws"
                }
                break;
              case 'v':	 // 5 strings to match.
                if (NameR[13] != 'g')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'h':	 // 1 string to match.
                  if (NameR[15] != 'r')
                    break;
                  return Intrinsic::hexagon_A2_vavghr;	 // "exagon.A2.vavghr"
                case 'u':	 // 3 strings to match.
                  switch (NameR[15]) {
                  default: break;
                  case 'b':	 // 1 string to match.
                    return Intrinsic::hexagon_A2_vavgub;	 // "exagon.A2.vavgub"
                  case 'h':	 // 1 string to match.
                    return Intrinsic::hexagon_A2_vavguh;	 // "exagon.A2.vavguh"
                  case 'w':	 // 1 string to match.
                    return Intrinsic::hexagon_A2_vavguw;	 // "exagon.A2.vavguw"
                  }
                  break;
                case 'w':	 // 1 string to match.
                  if (NameR[15] != 'r')
                    break;
                  return Intrinsic::hexagon_A2_vavgwr;	 // "exagon.A2.vavgwr"
                }
                break;
              }
              break;
            case 'm':	 // 6 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 3 strings to match.
                if (memcmp(NameR.data()+13, "xu", 2))
                  break;
                switch (NameR[15]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vmaxub;	 // "exagon.A2.vmaxub"
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vmaxuh;	 // "exagon.A2.vmaxuh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vmaxuw;	 // "exagon.A2.vmaxuw"
                }
                break;
              case 'i':	 // 3 strings to match.
                if (memcmp(NameR.data()+13, "nu", 2))
                  break;
                switch (NameR[15]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vminub;	 // "exagon.A2.vminub"
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vminuh;	 // "exagon.A2.vminuh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vminuw;	 // "exagon.A2.vminuw"
                }
                break;
              }
              break;
            case 'n':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "avg", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vnavgh;	 // "exagon.A2.vnavgh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vnavgw;	 // "exagon.A2.vnavgw"
              }
              break;
            case 's':	 // 3 strings to match.
              if (memcmp(NameR.data()+12, "ub", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (NameR[15] != 's')
                  break;
                return Intrinsic::hexagon_A2_vsubhs;	 // "exagon.A2.vsubhs"
              case 'u':	 // 1 string to match.
                if (NameR[15] != 'b')
                  break;
                return Intrinsic::hexagon_A2_vsubub;	 // "exagon.A2.vsubub"
              case 'w':	 // 1 string to match.
                if (NameR[15] != 's')
                  break;
                return Intrinsic::hexagon_A2_vsubws;	 // "exagon.A2.vsubws"
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 9 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 4 strings to match.
            if (memcmp(NameR.data()+11, "mp", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'b':	 // 2 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (NameR[15] != 'q')
                  break;
                return Intrinsic::hexagon_A4_cmpbeq;	 // "exagon.A4.cmpbeq"
              case 'g':	 // 1 string to match.
                if (NameR[15] != 't')
                  break;
                return Intrinsic::hexagon_A4_cmpbgt;	 // "exagon.A4.cmpbgt"
              }
              break;
            case 'h':	 // 2 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (NameR[15] != 'q')
                  break;
                return Intrinsic::hexagon_A4_cmpheq;	 // "exagon.A4.cmpheq"
              case 'g':	 // 1 string to match.
                if (NameR[15] != 't')
                  break;
                return Intrinsic::hexagon_A4_cmphgt;	 // "exagon.A4.cmphgt"
              }
              break;
            }
            break;
          case 'r':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "cmpeq", 5))
              break;
            return Intrinsic::hexagon_A4_rcmpeq;	 // "exagon.A4.rcmpeq"
          case 'v':	 // 4 strings to match.
            if (memcmp(NameR.data()+11, "rm", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (NameR[14] != 'x')
                break;
              switch (NameR[15]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A4_vrmaxh;	 // "exagon.A4.vrmaxh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_A4_vrmaxw;	 // "exagon.A4.vrmaxw"
              }
              break;
            case 'i':	 // 2 strings to match.
              if (NameR[14] != 'n')
                break;
              switch (NameR[15]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A4_vrminh;	 // "exagon.A4.vrminh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_A4_vrminw;	 // "exagon.A4.vrminw"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'C':	 // 12 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 7 strings to match.
          if (memcmp(NameR.data()+9, ".cmp", 4))
            break;
          switch (NameR[13]) {
          default: break;
          case 'e':	 // 2 strings to match.
            if (NameR[14] != 'q')
              break;
            switch (NameR[15]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_C2_cmpeqi;	 // "exagon.C2.cmpeqi"
            case 'p':	 // 1 string to match.
              return Intrinsic::hexagon_C2_cmpeqp;	 // "exagon.C2.cmpeqp"
            }
            break;
          case 'g':	 // 4 strings to match.
            switch (NameR[14]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (NameR[15] != 'i')
                break;
              return Intrinsic::hexagon_C2_cmpgei;	 // "exagon.C2.cmpgei"
            case 't':	 // 3 strings to match.
              switch (NameR[15]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_C2_cmpgti;	 // "exagon.C2.cmpgti"
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_C2_cmpgtp;	 // "exagon.C2.cmpgtp"
              case 'u':	 // 1 string to match.
                return Intrinsic::hexagon_C2_cmpgtu;	 // "exagon.C2.cmpgtu"
              }
              break;
            }
            break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+14, "tu", 2))
              break;
            return Intrinsic::hexagon_C2_cmpltu;	 // "exagon.C2.cmpltu"
          }
          break;
        case '4':	 // 5 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "nd.or", 5))
              break;
            return Intrinsic::hexagon_C4_and_or;	 // "exagon.C4.and.or"
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "mp", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'l':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "te", 2))
                break;
              return Intrinsic::hexagon_C4_cmplte;	 // "exagon.C4.cmplte"
            case 'n':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "eq", 2))
                break;
              return Intrinsic::hexagon_C4_cmpneq;	 // "exagon.C4.cmpneq"
            }
            break;
          case 'o':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "r.", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "nd", 2))
                break;
              return Intrinsic::hexagon_C4_or_and;	 // "exagon.C4.or.and"
            case 'o':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "rn", 2))
                break;
              return Intrinsic::hexagon_C4_or_orn;	 // "exagon.C4.or.orn"
            }
            break;
          }
          break;
        }
        break;
      case 'M':	 // 12 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 7 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 4 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "csi", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'n':	 // 1 string to match.
                return Intrinsic::hexagon_M2_macsin;	 // "exagon.M2.macsin"
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_M2_macsip;	 // "exagon.M2.macsip"
              }
              break;
            case 'p':	 // 2 strings to match.
              if (NameR[12] != 'y')
                break;
              switch (NameR[13]) {
              default: break;
              case '.':	 // 1 string to match.
                if (memcmp(NameR.data()+14, "up", 2))
                  break;
                return Intrinsic::hexagon_M2_mpy_up;	 // "exagon.M2.mpy.up"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+14, "mi", 2))
                  break;
                return Intrinsic::hexagon_M2_mpysmi;	 // "exagon.M2.mpysmi"
              }
              break;
            }
            break;
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "accii", 5))
              break;
            return Intrinsic::hexagon_M2_naccii;	 // "exagon.M2.naccii"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ubacc", 5))
              break;
            return Intrinsic::hexagon_M2_subacc;	 // "exagon.M2.subacc"
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "raddh", 5))
              break;
            return Intrinsic::hexagon_M2_vraddh;	 // "exagon.M2.vraddh"
          }
          break;
        case '4':	 // 5 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "nd.or", 5))
              break;
            return Intrinsic::hexagon_M4_and_or;	 // "exagon.M4.and.or"
          case 'o':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "r.", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "nd", 2))
                break;
              return Intrinsic::hexagon_M4_or_and;	 // "exagon.M4.or.and"
            case 'x':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "or", 2))
                break;
              return Intrinsic::hexagon_M4_or_xor;	 // "exagon.M4.or.xor"
            }
            break;
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "pmpyh", 5))
              break;
            return Intrinsic::hexagon_M4_vpmpyh;	 // "exagon.M4.vpmpyh"
          case 'x':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "or.or", 5))
              break;
            return Intrinsic::hexagon_M4_xor_or;	 // "exagon.M4.xor.or"
          }
          break;
        }
        break;
      case 'S':	 // 11 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 9 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'i':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "nsert", 5))
              break;
            return Intrinsic::hexagon_S2_insert;	 // "exagon.S2.insert"
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ackhl", 5))
              break;
            return Intrinsic::hexagon_S2_packhl;	 // "exagon.S2.packhl"
          case 'v':	 // 7 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'c':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "negh", 4))
                break;
              return Intrinsic::hexagon_S2_vcnegh;	 // "exagon.S2.vcnegh"
            case 's':	 // 4 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 2 strings to match.
                if (NameR[13] != 't')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'h':	 // 1 string to match.
                  if (NameR[15] != 'b')
                    break;
                  return Intrinsic::hexagon_S2_vsathb;	 // "exagon.S2.vsathb"
                case 'w':	 // 1 string to match.
                  if (NameR[15] != 'h')
                    break;
                  return Intrinsic::hexagon_S2_vsatwh;	 // "exagon.S2.vsatwh"
                }
                break;
              case 'x':	 // 2 strings to match.
                if (NameR[13] != 't')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'b':	 // 1 string to match.
                  if (NameR[15] != 'h')
                    break;
                  return Intrinsic::hexagon_S2_vsxtbh;	 // "exagon.S2.vsxtbh"
                case 'h':	 // 1 string to match.
                  if (NameR[15] != 'w')
                    break;
                  return Intrinsic::hexagon_S2_vsxthw;	 // "exagon.S2.vsxthw"
                }
                break;
              }
              break;
            case 'z':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "xt", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'b':	 // 1 string to match.
                if (NameR[15] != 'h')
                  break;
                return Intrinsic::hexagon_S2_vzxtbh;	 // "exagon.S2.vzxtbh"
              case 'h':	 // 1 string to match.
                if (NameR[15] != 'w')
                  break;
                return Intrinsic::hexagon_S2_vzxthw;	 // "exagon.S2.vzxthw"
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 2 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "r.ori", 5))
              break;
            return Intrinsic::hexagon_S4_or_ori;	 // "exagon.S4.or.ori"
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "arity", 5))
              break;
            return Intrinsic::hexagon_S4_parity;	 // "exagon.S4.parity"
          }
          break;
        }
        break;
      }
      break;
    case 17:	 // 103 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 36 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 23 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ddpsat", 6))
              break;
            return Intrinsic::hexagon_A2_addpsat;	 // "exagon.A2.addpsat"
          case 's':	 // 4 strings to match.
            if (NameR[11] != 'v')
              break;
            switch (NameR[12]) {
            default: break;
            case 'a':	 // 2 strings to match.
              switch (NameR[13]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+14, "dhs", 3))
                  break;
                return Intrinsic::hexagon_A2_svaddhs;	 // "exagon.A2.svaddhs"
              case 'v':	 // 1 string to match.
                if (memcmp(NameR.data()+14, "ghs", 3))
                  break;
                return Intrinsic::hexagon_A2_svavghs;	 // "exagon.A2.svavghs"
              }
              break;
            case 'n':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "avgh", 4))
                break;
              return Intrinsic::hexagon_A2_svnavgh;	 // "exagon.A2.svnavgh"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "ubhs", 4))
                break;
              return Intrinsic::hexagon_A2_svsubhs;	 // "exagon.A2.svsubhs"
            }
            break;
          case 'v':	 // 18 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 7 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'd':	 // 2 strings to match.
                if (memcmp(NameR.data()+13, "du", 2))
                  break;
                switch (NameR[15]) {
                default: break;
                case 'b':	 // 1 string to match.
                  if (NameR[16] != 's')
                    break;
                  return Intrinsic::hexagon_A2_vaddubs;	 // "exagon.A2.vaddubs"
                case 'h':	 // 1 string to match.
                  if (NameR[16] != 's')
                    break;
                  return Intrinsic::hexagon_A2_vadduhs;	 // "exagon.A2.vadduhs"
                }
                break;
              case 'v':	 // 5 strings to match.
                if (NameR[13] != 'g')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'h':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, "cr", 2))
                    break;
                  return Intrinsic::hexagon_A2_vavghcr;	 // "exagon.A2.vavghcr"
                case 'u':	 // 3 strings to match.
                  switch (NameR[15]) {
                  default: break;
                  case 'b':	 // 1 string to match.
                    if (NameR[16] != 'r')
                      break;
                    return Intrinsic::hexagon_A2_vavgubr;	 // "exagon.A2.vavgubr"
                  case 'h':	 // 1 string to match.
                    if (NameR[16] != 'r')
                      break;
                    return Intrinsic::hexagon_A2_vavguhr;	 // "exagon.A2.vavguhr"
                  case 'w':	 // 1 string to match.
                    if (NameR[16] != 'r')
                      break;
                    return Intrinsic::hexagon_A2_vavguwr;	 // "exagon.A2.vavguwr"
                  }
                  break;
                case 'w':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, "cr", 2))
                    break;
                  return Intrinsic::hexagon_A2_vavgwcr;	 // "exagon.A2.vavgwcr"
                }
                break;
              }
              break;
            case 'c':	 // 5 strings to match.
              if (memcmp(NameR.data()+12, "mp", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'b':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "eq", 2))
                  break;
                return Intrinsic::hexagon_A2_vcmpbeq;	 // "exagon.A2.vcmpbeq"
              case 'h':	 // 2 strings to match.
                switch (NameR[15]) {
                default: break;
                case 'e':	 // 1 string to match.
                  if (NameR[16] != 'q')
                    break;
                  return Intrinsic::hexagon_A2_vcmpheq;	 // "exagon.A2.vcmpheq"
                case 'g':	 // 1 string to match.
                  if (NameR[16] != 't')
                    break;
                  return Intrinsic::hexagon_A2_vcmphgt;	 // "exagon.A2.vcmphgt"
                }
                break;
              case 'w':	 // 2 strings to match.
                switch (NameR[15]) {
                default: break;
                case 'e':	 // 1 string to match.
                  if (NameR[16] != 'q')
                    break;
                  return Intrinsic::hexagon_A2_vcmpweq;	 // "exagon.A2.vcmpweq"
                case 'g':	 // 1 string to match.
                  if (NameR[16] != 't')
                    break;
                  return Intrinsic::hexagon_A2_vcmpwgt;	 // "exagon.A2.vcmpwgt"
                }
                break;
              }
              break;
            case 'n':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "avg", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (NameR[16] != 'r')
                  break;
                return Intrinsic::hexagon_A2_vnavghr;	 // "exagon.A2.vnavghr"
              case 'w':	 // 1 string to match.
                if (NameR[16] != 'r')
                  break;
                return Intrinsic::hexagon_A2_vnavgwr;	 // "exagon.A2.vnavgwr"
              }
              break;
            case 'r':	 // 2 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 1 string to match.
                if (memcmp(NameR.data()+13, "ddub", 4))
                  break;
                return Intrinsic::hexagon_A2_vraddub;	 // "exagon.A2.vraddub"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+13, "adub", 4))
                  break;
                return Intrinsic::hexagon_A2_vrsadub;	 // "exagon.A2.vrsadub"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "ubu", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'b':	 // 1 string to match.
                if (NameR[16] != 's')
                  break;
                return Intrinsic::hexagon_A2_vsububs;	 // "exagon.A2.vsububs"
              case 'h':	 // 1 string to match.
                if (NameR[16] != 's')
                  break;
                return Intrinsic::hexagon_A2_vsubuhs;	 // "exagon.A2.vsubuhs"
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 13 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 6 strings to match.
            if (memcmp(NameR.data()+11, "mp", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'b':	 // 3 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "qi", 2))
                  break;
                return Intrinsic::hexagon_A4_cmpbeqi;	 // "exagon.A4.cmpbeqi"
              case 'g':	 // 2 strings to match.
                if (NameR[15] != 't')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'i':	 // 1 string to match.
                  return Intrinsic::hexagon_A4_cmpbgti;	 // "exagon.A4.cmpbgti"
                case 'u':	 // 1 string to match.
                  return Intrinsic::hexagon_A4_cmpbgtu;	 // "exagon.A4.cmpbgtu"
                }
                break;
              }
              break;
            case 'h':	 // 3 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "qi", 2))
                  break;
                return Intrinsic::hexagon_A4_cmpheqi;	 // "exagon.A4.cmpheqi"
              case 'g':	 // 2 strings to match.
                if (NameR[15] != 't')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'i':	 // 1 string to match.
                  return Intrinsic::hexagon_A4_cmphgti;	 // "exagon.A4.cmphgti"
                case 'u':	 // 1 string to match.
                  return Intrinsic::hexagon_A4_cmphgtu;	 // "exagon.A4.cmphgtu"
                }
                break;
              }
              break;
            }
            break;
          case 'r':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "cmp", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "qi", 2))
                break;
              return Intrinsic::hexagon_A4_rcmpeqi;	 // "exagon.A4.rcmpeqi"
            case 'n':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "eq", 2))
                break;
              return Intrinsic::hexagon_A4_rcmpneq;	 // "exagon.A4.rcmpneq"
            }
            break;
          case 'v':	 // 5 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'c':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "mpbgt", 5))
                break;
              return Intrinsic::hexagon_A4_vcmpbgt;	 // "exagon.A4.vcmpbgt"
            case 'r':	 // 4 strings to match.
              if (NameR[12] != 'm')
                break;
              switch (NameR[13]) {
              default: break;
              case 'a':	 // 2 strings to match.
                if (memcmp(NameR.data()+14, "xu", 2))
                  break;
                switch (NameR[16]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A4_vrmaxuh;	 // "exagon.A4.vrmaxuh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A4_vrmaxuw;	 // "exagon.A4.vrmaxuw"
                }
                break;
              case 'i':	 // 2 strings to match.
                if (memcmp(NameR.data()+14, "nu", 2))
                  break;
                switch (NameR[16]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A4_vrminuh;	 // "exagon.A4.vrminuh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A4_vrminuw;	 // "exagon.A4.vrminuw"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'C':	 // 12 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 6 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "its", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'c':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "lr", 2))
                break;
              return Intrinsic::hexagon_C2_bitsclr;	 // "exagon.C2.bitsclr"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "et", 2))
                break;
              return Intrinsic::hexagon_C2_bitsset;	 // "exagon.C2.bitsset"
            }
            break;
          case 'c':	 // 3 strings to match.
            if (memcmp(NameR.data()+11, "mpg", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "ui", 2))
                break;
              return Intrinsic::hexagon_C2_cmpgeui;	 // "exagon.C2.cmpgeui"
            case 't':	 // 2 strings to match.
              if (NameR[15] != 'u')
                break;
              switch (NameR[16]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_C2_cmpgtui;	 // "exagon.C2.cmpgtui"
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_C2_cmpgtup;	 // "exagon.C2.cmpgtup"
              }
              break;
            }
            break;
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "itpack", 6))
              break;
            return Intrinsic::hexagon_C2_vitpack;	 // "exagon.C2.vitpack"
          }
          break;
        case '4':	 // 6 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "nd.", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "nd", 2))
                break;
              return Intrinsic::hexagon_C4_and_and;	 // "exagon.C4.and.and"
            case 'o':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "rn", 2))
                break;
              return Intrinsic::hexagon_C4_and_orn;	 // "exagon.C4.and.orn"
            }
            break;
          case 'c':	 // 3 strings to match.
            if (memcmp(NameR.data()+11, "mp", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "te", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_C4_cmpltei;	 // "exagon.C4.cmpltei"
              case 'u':	 // 1 string to match.
                return Intrinsic::hexagon_C4_cmplteu;	 // "exagon.C4.cmplteu"
              }
              break;
            case 'n':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "eqi", 3))
                break;
              return Intrinsic::hexagon_C4_cmpneqi;	 // "exagon.C4.cmpneqi"
            }
            break;
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "r.andn", 6))
              break;
            return Intrinsic::hexagon_C4_or_andn;	 // "exagon.C4.or.andn"
          }
          break;
        }
        break;
      case 'F':	 // 14 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'd':	 // 7 strings to match.
          if (NameR[11] != 'f')
            break;
          switch (NameR[12]) {
          default: break;
          case 'c':	 // 5 strings to match.
            switch (NameR[13]) {
            default: break;
            case 'l':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "ass", 3))
                break;
              return Intrinsic::hexagon_F2_dfclass;	 // "exagon.F2.dfclass"
            case 'm':	 // 4 strings to match.
              if (NameR[14] != 'p')
                break;
              switch (NameR[15]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (NameR[16] != 'q')
                  break;
                return Intrinsic::hexagon_F2_dfcmpeq;	 // "exagon.F2.dfcmpeq"
              case 'g':	 // 2 strings to match.
                switch (NameR[16]) {
                default: break;
                case 'e':	 // 1 string to match.
                  return Intrinsic::hexagon_F2_dfcmpge;	 // "exagon.F2.dfcmpge"
                case 't':	 // 1 string to match.
                  return Intrinsic::hexagon_F2_dfcmpgt;	 // "exagon.F2.dfcmpgt"
                }
                break;
              case 'u':	 // 1 string to match.
                if (NameR[16] != 'o')
                  break;
                return Intrinsic::hexagon_F2_dfcmpuo;	 // "exagon.F2.dfcmpuo"
              }
              break;
            }
            break;
          case 'i':	 // 2 strings to match.
            if (memcmp(NameR.data()+13, "mm.", 3))
              break;
            switch (NameR[16]) {
            default: break;
            case 'n':	 // 1 string to match.
              return Intrinsic::hexagon_F2_dfimm_n;	 // "exagon.F2.dfimm.n"
            case 'p':	 // 1 string to match.
              return Intrinsic::hexagon_F2_dfimm_p;	 // "exagon.F2.dfimm.p"
            }
            break;
          }
          break;
        case 's':	 // 7 strings to match.
          if (NameR[11] != 'f')
            break;
          switch (NameR[12]) {
          default: break;
          case 'c':	 // 5 strings to match.
            switch (NameR[13]) {
            default: break;
            case 'l':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "ass", 3))
                break;
              return Intrinsic::hexagon_F2_sfclass;	 // "exagon.F2.sfclass"
            case 'm':	 // 4 strings to match.
              if (NameR[14] != 'p')
                break;
              switch (NameR[15]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (NameR[16] != 'q')
                  break;
                return Intrinsic::hexagon_F2_sfcmpeq;	 // "exagon.F2.sfcmpeq"
              case 'g':	 // 2 strings to match.
                switch (NameR[16]) {
                default: break;
                case 'e':	 // 1 string to match.
                  return Intrinsic::hexagon_F2_sfcmpge;	 // "exagon.F2.sfcmpge"
                case 't':	 // 1 string to match.
                  return Intrinsic::hexagon_F2_sfcmpgt;	 // "exagon.F2.sfcmpgt"
                }
                break;
              case 'u':	 // 1 string to match.
                if (NameR[16] != 'o')
                  break;
                return Intrinsic::hexagon_F2_sfcmpuo;	 // "exagon.F2.sfcmpuo"
              }
              break;
            }
            break;
          case 'i':	 // 2 strings to match.
            if (memcmp(NameR.data()+13, "mm.", 3))
              break;
            switch (NameR[16]) {
            default: break;
            case 'n':	 // 1 string to match.
              return Intrinsic::hexagon_F2_sfimm_n;	 // "exagon.F2.sfimm.n"
            case 'p':	 // 1 string to match.
              return Intrinsic::hexagon_F2_sfimm_p;	 // "exagon.F2.sfimm.p"
            }
            break;
          }
          break;
        }
        break;
      case 'M':	 // 11 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 3 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "pyu.up", 6))
              break;
            return Intrinsic::hexagon_M2_mpyu_up;	 // "exagon.M2.mpyu.up"
          case 'v':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "ac2es", 5))
                break;
              return Intrinsic::hexagon_M2_vmac2es;	 // "exagon.M2.vmac2es"
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "adduh", 5))
                break;
              return Intrinsic::hexagon_M2_vradduh;	 // "exagon.M2.vradduh"
            }
            break;
          }
          break;
        case '4':	 // 4 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "nd.", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "nd", 2))
                break;
              return Intrinsic::hexagon_M4_and_and;	 // "exagon.M4.and.and"
            case 'x':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "or", 2))
                break;
              return Intrinsic::hexagon_M4_and_xor;	 // "exagon.M4.and.xor"
            }
            break;
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "r.andn", 6))
              break;
            return Intrinsic::hexagon_M4_or_andn;	 // "exagon.M4.or.andn"
          case 'x':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "or.and", 6))
              break;
            return Intrinsic::hexagon_M4_xor_and;	 // "exagon.M4.xor.and"
          }
          break;
        case '5':	 // 4 strings to match.
          if (memcmp(NameR.data()+9, ".vm", 3))
            break;
          switch (NameR[12]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+13, "cb", 2))
              break;
            switch (NameR[15]) {
            default: break;
            case 's':	 // 1 string to match.
              if (NameR[16] != 'u')
                break;
              return Intrinsic::hexagon_M5_vmacbsu;	 // "exagon.M5.vmacbsu"
            case 'u':	 // 1 string to match.
              if (NameR[16] != 'u')
                break;
              return Intrinsic::hexagon_M5_vmacbuu;	 // "exagon.M5.vmacbuu"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (memcmp(NameR.data()+13, "yb", 2))
              break;
            switch (NameR[15]) {
            default: break;
            case 's':	 // 1 string to match.
              if (NameR[16] != 'u')
                break;
              return Intrinsic::hexagon_M5_vmpybsu;	 // "exagon.M5.vmpybsu"
            case 'u':	 // 1 string to match.
              if (NameR[16] != 'u')
                break;
              return Intrinsic::hexagon_M5_vmpybuu;	 // "exagon.M5.vmpybuu"
            }
            break;
          }
          break;
        }
        break;
      case 'S':	 // 30 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 25 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 8 strings to match.
            if (NameR[11] != 's')
              break;
            switch (NameR[12]) {
            default: break;
            case 'l':	 // 4 strings to match.
              if (NameR[13] != '.')
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asl_i_p;	 // "exagon.S2.asl.i.p"
                case 'r':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asl_i_r;	 // "exagon.S2.asl.i.r"
                }
                break;
              case 'r':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asl_r_p;	 // "exagon.S2.asl.r.p"
                case 'r':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asl_r_r;	 // "exagon.S2.asl.r.r"
                }
                break;
              }
              break;
            case 'r':	 // 4 strings to match.
              if (NameR[13] != '.')
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asr_i_p;	 // "exagon.S2.asr.i.p"
                case 'r':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asr_i_r;	 // "exagon.S2.asr.i.r"
                }
                break;
              case 'r':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asr_r_p;	 // "exagon.S2.asr.r.p"
                case 'r':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asr_r_r;	 // "exagon.S2.asr.r.r"
                }
                break;
              }
              break;
            }
            break;
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "lbnorm", 6))
              break;
            return Intrinsic::hexagon_S2_clbnorm;	 // "exagon.S2.clbnorm"
          case 'i':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "nsertp", 6))
              break;
            return Intrinsic::hexagon_S2_insertp;	 // "exagon.S2.insertp"
          case 'l':	 // 6 strings to match.
            if (NameR[11] != 's')
              break;
            switch (NameR[12]) {
            default: break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+13, ".r.", 3))
                break;
              switch (NameR[16]) {
              default: break;
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsl_r_p;	 // "exagon.S2.lsl.r.p"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsl_r_r;	 // "exagon.S2.lsl.r.r"
              }
              break;
            case 'r':	 // 4 strings to match.
              if (NameR[13] != '.')
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_lsr_i_p;	 // "exagon.S2.lsr.i.p"
                case 'r':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_lsr_i_r;	 // "exagon.S2.lsr.i.r"
                }
                break;
              case 'r':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_lsr_r_p;	 // "exagon.S2.lsr.r.p"
                case 'r':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_lsr_r_r;	 // "exagon.S2.lsr.r.r"
                }
                break;
              }
              break;
            }
            break;
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "arityp", 6))
              break;
            return Intrinsic::hexagon_S2_parityp;	 // "exagon.S2.parityp"
          case 's':	 // 5 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'h':	 // 4 strings to match.
              if (memcmp(NameR.data()+12, "uff", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'e':	 // 2 strings to match.
                switch (NameR[16]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_shuffeb;	 // "exagon.S2.shuffeb"
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_shuffeh;	 // "exagon.S2.shuffeh"
                }
                break;
              case 'o':	 // 2 strings to match.
                switch (NameR[16]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_shuffob;	 // "exagon.S2.shuffob"
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_shuffoh;	 // "exagon.S2.shuffoh"
                }
                break;
              }
              break;
            case 'v':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "sathb", 5))
                break;
              return Intrinsic::hexagon_S2_svsathb;	 // "exagon.S2.svsathb"
            }
            break;
          case 'v':	 // 3 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "cnegh", 5))
                break;
              return Intrinsic::hexagon_S2_vrcnegh;	 // "exagon.S2.vrcnegh"
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "at", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "ub", 2))
                  break;
                return Intrinsic::hexagon_S2_vsathub;	 // "exagon.S2.vsathub"
              case 'w':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "uh", 2))
                  break;
                return Intrinsic::hexagon_S2_vsatwuh;	 // "exagon.S2.vsatwuh"
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 5 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ddaddi", 6))
              break;
            return Intrinsic::hexagon_S4_addaddi;	 // "exagon.S4.addaddi"
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "lbaddi", 6))
              break;
            return Intrinsic::hexagon_S4_clbaddi;	 // "exagon.S4.clbaddi"
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "xtract", 6))
              break;
            return Intrinsic::hexagon_S4_extract;	 // "exagon.S4.extract"
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "r.andi", 6))
              break;
            return Intrinsic::hexagon_S4_or_andi;	 // "exagon.S4.or.andi"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ubaddi", 6))
              break;
            return Intrinsic::hexagon_S4_subaddi;	 // "exagon.S4.subaddi"
          }
          break;
        }
        break;
      }
      break;
    case 18:	 // 103 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 26 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 11 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ombinew", 7))
              break;
            return Intrinsic::hexagon_A2_combinew;	 // "exagon.A2.combinew"
          case 'r':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "oundsat", 7))
              break;
            return Intrinsic::hexagon_A2_roundsat;	 // "exagon.A2.roundsat"
          case 's':	 // 2 strings to match.
            if (NameR[11] != 'v')
              break;
            switch (NameR[12]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "dduhs", 5))
                break;
              return Intrinsic::hexagon_A2_svadduhs;	 // "exagon.A2.svadduhs"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "ubuhs", 5))
                break;
              return Intrinsic::hexagon_A2_svsubuhs;	 // "exagon.A2.svsubuhs"
            }
            break;
          case 'v':	 // 7 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "bs", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "sat", 3))
                  break;
                return Intrinsic::hexagon_A2_vabshsat;	 // "exagon.A2.vabshsat"
              case 'w':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "sat", 3))
                  break;
                return Intrinsic::hexagon_A2_vabswsat;	 // "exagon.A2.vabswsat"
              }
              break;
            case 'c':	 // 3 strings to match.
              if (memcmp(NameR.data()+12, "mp", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'b':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "gtu", 3))
                  break;
                return Intrinsic::hexagon_A2_vcmpbgtu;	 // "exagon.A2.vcmpbgtu"
              case 'h':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "gtu", 3))
                  break;
                return Intrinsic::hexagon_A2_vcmphgtu;	 // "exagon.A2.vcmphgtu"
              case 'w':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "gtu", 3))
                  break;
                return Intrinsic::hexagon_A2_vcmpwgtu;	 // "exagon.A2.vcmpwgtu"
              }
              break;
            case 'n':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "avg", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "cr", 2))
                  break;
                return Intrinsic::hexagon_A2_vnavghcr;	 // "exagon.A2.vnavghcr"
              case 'w':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "cr", 2))
                  break;
                return Intrinsic::hexagon_A2_vnavgwcr;	 // "exagon.A2.vnavgwcr"
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 14 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "itsplit", 7))
              break;
            return Intrinsic::hexagon_A4_bitsplit;	 // "exagon.A4.bitsplit"
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "mp", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "gtui", 4))
                break;
              return Intrinsic::hexagon_A4_cmpbgtui;	 // "exagon.A4.cmpbgtui"
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "gtui", 4))
                break;
              return Intrinsic::hexagon_A4_cmphgtui;	 // "exagon.A4.cmphgtui"
            }
            break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "odwrapu", 7))
              break;
            return Intrinsic::hexagon_A4_modwrapu;	 // "exagon.A4.modwrapu"
          case 'r':	 // 3 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'c':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "mpneqi", 6))
                break;
              return Intrinsic::hexagon_A4_rcmpneqi;	 // "exagon.A4.rcmpneqi"
            case 'o':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "und.r", 5))
                break;
              switch (NameR[17]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_A4_round_ri;	 // "exagon.A4.round.ri"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_A4_round_rr;	 // "exagon.A4.round.rr"
              }
              break;
            }
            break;
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "lbmatch", 7))
              break;
            return Intrinsic::hexagon_A4_tlbmatch;	 // "exagon.A4.tlbmatch"
          case 'v':	 // 6 strings to match.
            if (memcmp(NameR.data()+11, "cmp", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'b':	 // 2 strings to match.
              switch (NameR[15]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "qi", 2))
                  break;
                return Intrinsic::hexagon_A4_vcmpbeqi;	 // "exagon.A4.vcmpbeqi"
              case 'g':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "ti", 2))
                  break;
                return Intrinsic::hexagon_A4_vcmpbgti;	 // "exagon.A4.vcmpbgti"
              }
              break;
            case 'h':	 // 2 strings to match.
              switch (NameR[15]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "qi", 2))
                  break;
                return Intrinsic::hexagon_A4_vcmpheqi;	 // "exagon.A4.vcmpheqi"
              case 'g':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "ti", 2))
                  break;
                return Intrinsic::hexagon_A4_vcmphgti;	 // "exagon.A4.vcmphgti"
              }
              break;
            case 'w':	 // 2 strings to match.
              switch (NameR[15]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "qi", 2))
                  break;
                return Intrinsic::hexagon_A4_vcmpweqi;	 // "exagon.A4.vcmpweqi"
              case 'g':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "ti", 2))
                  break;
                return Intrinsic::hexagon_A4_vcmpwgti;	 // "exagon.A4.vcmpwgti"
              }
              break;
            }
            break;
          }
          break;
        case '5':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".vaddhubs", 9))
            break;
          return Intrinsic::hexagon_A5_vaddhubs;	 // "exagon.A5.vaddhubs"
        }
        break;
      case 'C':	 // 5 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".bitsclri", 9))
            break;
          return Intrinsic::hexagon_C2_bitsclri;	 // "exagon.C2.bitsclri"
        case '4':	 // 4 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "nd.andn", 7))
              break;
            return Intrinsic::hexagon_C4_and_andn;	 // "exagon.C4.and.andn"
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "mplteui", 7))
              break;
            return Intrinsic::hexagon_C4_cmplteui;	 // "exagon.C4.cmplteui"
          case 'n':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "bits", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case 'c':	 // 1 string to match.
              if (memcmp(NameR.data()+16, "lr", 2))
                break;
              return Intrinsic::hexagon_C4_nbitsclr;	 // "exagon.C4.nbitsclr"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+16, "et", 2))
                break;
              return Intrinsic::hexagon_C4_nbitsset;	 // "exagon.C4.nbitsset"
            }
            break;
          }
          break;
        }
        break;
      case 'F':	 // 8 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'd':	 // 4 strings to match.
          if (memcmp(NameR.data()+11, "ff", 2))
            break;
          switch (NameR[13]) {
          default: break;
          case 'i':	 // 3 strings to match.
            if (memcmp(NameR.data()+14, "xup", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::hexagon_F2_dffixupd;	 // "exagon.F2.dffixupd"
            case 'n':	 // 1 string to match.
              return Intrinsic::hexagon_F2_dffixupn;	 // "exagon.F2.dffixupn"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_F2_dffixupr;	 // "exagon.F2.dffixupr"
            }
            break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+14, "a.sc", 4))
              break;
            return Intrinsic::hexagon_F2_dffma_sc;	 // "exagon.F2.dffma.sc"
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+11, "ff", 2))
            break;
          switch (NameR[13]) {
          default: break;
          case 'i':	 // 3 strings to match.
            if (memcmp(NameR.data()+14, "xup", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::hexagon_F2_sffixupd;	 // "exagon.F2.sffixupd"
            case 'n':	 // 1 string to match.
              return Intrinsic::hexagon_F2_sffixupn;	 // "exagon.F2.sffixupn"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_F2_sffixupr;	 // "exagon.F2.sffixupr"
            }
            break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+14, "a.sc", 4))
              break;
            return Intrinsic::hexagon_F2_sffma_sc;	 // "exagon.F2.sffma.sc"
          }
          break;
        }
        break;
      case 'M':	 // 29 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 18 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 10 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'm':	 // 8 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 4 strings to match.
                if (NameR[13] != 'c')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'i':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, ".s0", 3))
                    break;
                  return Intrinsic::hexagon_M2_cmaci_s0;	 // "exagon.M2.cmaci.s0"
                case 'r':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, ".s0", 3))
                    break;
                  return Intrinsic::hexagon_M2_cmacr_s0;	 // "exagon.M2.cmacr.s0"
                case 's':	 // 2 strings to match.
                  if (memcmp(NameR.data()+15, ".s", 2))
                    break;
                  switch (NameR[17]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_cmacs_s0;	 // "exagon.M2.cmacs.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_cmacs_s1;	 // "exagon.M2.cmacs.s1"
                  }
                  break;
                }
                break;
              case 'p':	 // 4 strings to match.
                if (NameR[13] != 'y')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'i':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, ".s0", 3))
                    break;
                  return Intrinsic::hexagon_M2_cmpyi_s0;	 // "exagon.M2.cmpyi.s0"
                case 'r':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, ".s0", 3))
                    break;
                  return Intrinsic::hexagon_M2_cmpyr_s0;	 // "exagon.M2.cmpyr.s0"
                case 's':	 // 2 strings to match.
                  if (memcmp(NameR.data()+15, ".s", 2))
                    break;
                  switch (NameR[17]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_cmpys_s0;	 // "exagon.M2.cmpys.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_cmpys_s1;	 // "exagon.M2.cmpys.s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'n':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "acs.s", 5))
                break;
              switch (NameR[17]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_cnacs_s0;	 // "exagon.M2.cnacs.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_cnacs_s1;	 // "exagon.M2.cnacs.s1"
              }
              break;
            }
            break;
          case 'm':	 // 5 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'm':	 // 4 strings to match.
              if (memcmp(NameR.data()+12, "py", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(NameR.data()+15, ".s", 2))
                  break;
                switch (NameR[17]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyh_s0;	 // "exagon.M2.mmpyh.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyh_s1;	 // "exagon.M2.mmpyh.s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(NameR.data()+15, ".s", 2))
                  break;
                switch (NameR[17]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyl_s0;	 // "exagon.M2.mmpyl.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyl_s1;	 // "exagon.M2.mmpyl.s1"
                }
                break;
              }
              break;
            case 'p':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "ysu.up", 6))
                break;
              return Intrinsic::hexagon_M2_mpysu_up;	 // "exagon.M2.mpysu.up"
            }
            break;
          case 'v':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "rm", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "c.s0", 4))
                break;
              return Intrinsic::hexagon_M2_vrmac_s0;	 // "exagon.M2.vrmac.s0"
            case 'p':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "y.s0", 4))
                break;
              return Intrinsic::hexagon_M2_vrmpy_s0;	 // "exagon.M2.vrmpy.s0"
            }
            break;
          case 'x':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "or.xacc", 7))
              break;
            return Intrinsic::hexagon_M2_xor_xacc;	 // "exagon.M2.xor.xacc"
          }
          break;
        case '4':	 // 5 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "nd.andn", 7))
              break;
            return Intrinsic::hexagon_M4_and_andn;	 // "exagon.M4.and.andn"
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "mpy", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+15, ".wh", 3))
                break;
              return Intrinsic::hexagon_M4_cmpyi_wh;	 // "exagon.M4.cmpyi.wh"
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+15, ".wh", 3))
                break;
              return Intrinsic::hexagon_M4_cmpyr_wh;	 // "exagon.M4.cmpyr.wh"
            }
            break;
          case 'x':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "or.", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "ndn", 3))
                break;
              return Intrinsic::hexagon_M4_xor_andn;	 // "exagon.M4.xor.andn"
            case 'x':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "acc", 3))
                break;
              return Intrinsic::hexagon_M4_xor_xacc;	 // "exagon.M4.xor.xacc"
            }
            break;
          }
          break;
        case '5':	 // 6 strings to match.
          if (memcmp(NameR.data()+9, ".v", 2))
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (NameR[12] != 'm')
              break;
            switch (NameR[13]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "cbsu", 4))
                break;
              return Intrinsic::hexagon_M5_vdmacbsu;	 // "exagon.M5.vdmacbsu"
            case 'p':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "ybsu", 4))
                break;
              return Intrinsic::hexagon_M5_vdmpybsu;	 // "exagon.M5.vdmpybsu"
            }
            break;
          case 'r':	 // 4 strings to match.
            if (NameR[12] != 'm')
              break;
            switch (NameR[13]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "cb", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 's':	 // 1 string to match.
                if (NameR[17] != 'u')
                  break;
                return Intrinsic::hexagon_M5_vrmacbsu;	 // "exagon.M5.vrmacbsu"
              case 'u':	 // 1 string to match.
                if (NameR[17] != 'u')
                  break;
                return Intrinsic::hexagon_M5_vrmacbuu;	 // "exagon.M5.vrmacbuu"
              }
              break;
            case 'p':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "yb", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 's':	 // 1 string to match.
                if (NameR[17] != 'u')
                  break;
                return Intrinsic::hexagon_M5_vrmpybsu;	 // "exagon.M5.vrmpybsu"
              case 'u':	 // 1 string to match.
                if (NameR[17] != 'u')
                  break;
                return Intrinsic::hexagon_M5_vrmpybuu;	 // "exagon.M5.vrmpybuu"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'S':	 // 35 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 31 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 8 strings to match.
            if (NameR[11] != 's')
              break;
            switch (NameR[12]) {
            default: break;
            case 'l':	 // 4 strings to match.
              if (NameR[13] != '.')
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 2 strings to match.
                if (memcmp(NameR.data()+15, ".v", 2))
                  break;
                switch (NameR[17]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asl_i_vh;	 // "exagon.S2.asl.i.vh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asl_i_vw;	 // "exagon.S2.asl.i.vw"
                }
                break;
              case 'r':	 // 2 strings to match.
                if (memcmp(NameR.data()+15, ".v", 2))
                  break;
                switch (NameR[17]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asl_r_vh;	 // "exagon.S2.asl.r.vh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asl_r_vw;	 // "exagon.S2.asl.r.vw"
                }
                break;
              }
              break;
            case 'r':	 // 4 strings to match.
              if (NameR[13] != '.')
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 2 strings to match.
                if (memcmp(NameR.data()+15, ".v", 2))
                  break;
                switch (NameR[17]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asr_i_vh;	 // "exagon.S2.asr.i.vh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asr_i_vw;	 // "exagon.S2.asr.i.vw"
                }
                break;
              case 'r':	 // 2 strings to match.
                if (memcmp(NameR.data()+15, ".v", 2))
                  break;
                switch (NameR[17]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asr_r_vh;	 // "exagon.S2.asr.r.vh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_asr_r_vw;	 // "exagon.S2.asr.r.vw"
                }
                break;
              }
              break;
            }
            break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "lrbit.", 6))
              break;
            switch (NameR[17]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_S2_clrbit_i;	 // "exagon.S2.clrbit.i"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_S2_clrbit_r;	 // "exagon.S2.clrbit.r"
            }
            break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "xtractu", 7))
              break;
            return Intrinsic::hexagon_S2_extractu;	 // "exagon.S2.extractu"
          case 'l':	 // 6 strings to match.
            if (NameR[11] != 's')
              break;
            switch (NameR[12]) {
            default: break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+13, ".r.v", 4))
                break;
              switch (NameR[17]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsl_r_vh;	 // "exagon.S2.lsl.r.vh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsl_r_vw;	 // "exagon.S2.lsl.r.vw"
              }
              break;
            case 'r':	 // 4 strings to match.
              if (NameR[13] != '.')
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 2 strings to match.
                if (memcmp(NameR.data()+15, ".v", 2))
                  break;
                switch (NameR[17]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_lsr_i_vh;	 // "exagon.S2.lsr.i.vh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_lsr_i_vw;	 // "exagon.S2.lsr.i.vw"
                }
                break;
              case 'r':	 // 2 strings to match.
                if (memcmp(NameR.data()+15, ".v", 2))
                  break;
                switch (NameR[17]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_lsr_r_vh;	 // "exagon.S2.lsr.r.vh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_S2_lsr_r_vw;	 // "exagon.S2.lsr.r.vw"
                }
                break;
              }
              break;
            }
            break;
          case 's':	 // 3 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'e':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "tbit.", 5))
                break;
              switch (NameR[17]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_S2_setbit_i;	 // "exagon.S2.setbit.i"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_S2_setbit_r;	 // "exagon.S2.setbit.r"
              }
              break;
            case 'v':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "sathub", 6))
                break;
              return Intrinsic::hexagon_S2_svsathub;	 // "exagon.S2.svsathub"
            }
            break;
          case 't':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "stbit.", 6))
              break;
            switch (NameR[17]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_S2_tstbit_i;	 // "exagon.S2.tstbit.i"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_S2_tstbit_r;	 // "exagon.S2.tstbit.r"
            }
            break;
          case 'v':	 // 9 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "lign", 4))
                break;
              switch (NameR[16]) {
              default: break;
              case 'i':	 // 1 string to match.
                if (NameR[17] != 'b')
                  break;
                return Intrinsic::hexagon_S2_valignib;	 // "exagon.S2.valignib"
              case 'r':	 // 1 string to match.
                if (NameR[17] != 'b')
                  break;
                return Intrinsic::hexagon_S2_valignrb;	 // "exagon.S2.valignrb"
              }
              break;
            case 'c':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "rotate", 6))
                break;
              return Intrinsic::hexagon_S2_vcrotate;	 // "exagon.S2.vcrotate"
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "platr", 5))
                break;
              switch (NameR[17]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::hexagon_S2_vsplatrb;	 // "exagon.S2.vsplatrb"
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S2_vsplatrh;	 // "exagon.S2.vsplatrh"
              }
              break;
            case 't':	 // 4 strings to match.
              if (memcmp(NameR.data()+12, "run", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'e':	 // 2 strings to match.
                switch (NameR[16]) {
                default: break;
                case 'h':	 // 1 string to match.
                  if (NameR[17] != 'b')
                    break;
                  return Intrinsic::hexagon_S2_vtrunehb;	 // "exagon.S2.vtrunehb"
                case 'w':	 // 1 string to match.
                  if (NameR[17] != 'h')
                    break;
                  return Intrinsic::hexagon_S2_vtrunewh;	 // "exagon.S2.vtrunewh"
                }
                break;
              case 'o':	 // 2 strings to match.
                switch (NameR[16]) {
                default: break;
                case 'h':	 // 1 string to match.
                  if (NameR[17] != 'b')
                    break;
                  return Intrinsic::hexagon_S2_vtrunohb;	 // "exagon.S2.vtrunohb"
                case 'w':	 // 1 string to match.
                  if (NameR[17] != 'h')
                    break;
                  return Intrinsic::hexagon_S2_vtrunowh;	 // "exagon.S2.vtrunowh"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 4 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "lbp", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "ddi", 3))
                break;
              return Intrinsic::hexagon_S4_clbpaddi;	 // "exagon.S4.clbpaddi"
            case 'n':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "orm", 3))
                break;
              return Intrinsic::hexagon_S4_clbpnorm;	 // "exagon.S4.clbpnorm"
            }
            break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "xtractp", 7))
              break;
            return Intrinsic::hexagon_S4_extractp;	 // "exagon.S4.extractp"
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "r.andix", 7))
              break;
            return Intrinsic::hexagon_S4_or_andix;	 // "exagon.S4.or.andix"
          }
          break;
        }
        break;
      }
      break;
    case 19:	 // 81 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 11 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 3 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ombineii", 8))
              break;
            return Intrinsic::hexagon_A2_combineii;	 // "exagon.A2.combineii"
          case 'v':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "ddb.map", 7))
                break;
              return Intrinsic::hexagon_A2_vaddb_map;	 // "exagon.A2.vaddb.map"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "ubb.map", 7))
                break;
              return Intrinsic::hexagon_A2_vsubb_map;	 // "exagon.A2.vsubb.map"
            }
            break;
          }
          break;
        case '4':	 // 8 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "itspliti", 8))
              break;
            return Intrinsic::hexagon_A4_bitspliti;	 // "exagon.A4.bitspliti"
          case 'c':	 // 4 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'o':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "mbine", 5))
                break;
              switch (NameR[17]) {
              default: break;
              case 'i':	 // 1 string to match.
                if (NameR[18] != 'r')
                  break;
                return Intrinsic::hexagon_A4_combineir;	 // "exagon.A4.combineir"
              case 'r':	 // 1 string to match.
                if (NameR[18] != 'i')
                  break;
                return Intrinsic::hexagon_A4_combineri;	 // "exagon.A4.combineri"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "ound.r", 6))
                break;
              switch (NameR[18]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_A4_cround_ri;	 // "exagon.A4.cround.ri"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_A4_cround_rr;	 // "exagon.A4.cround.rr"
              }
              break;
            }
            break;
          case 'v':	 // 3 strings to match.
            if (memcmp(NameR.data()+11, "cmp", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "gtui", 4))
                break;
              return Intrinsic::hexagon_A4_vcmpbgtui;	 // "exagon.A4.vcmpbgtui"
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "gtui", 4))
                break;
              return Intrinsic::hexagon_A4_vcmphgtui;	 // "exagon.A4.vcmphgtui"
            case 'w':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "gtui", 4))
                break;
              return Intrinsic::hexagon_A4_vcmpwgtui;	 // "exagon.A4.vcmpwgtui"
            }
            break;
          }
          break;
        }
        break;
      case 'C':	 // 2 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".pxfer.map", 10))
            break;
          return Intrinsic::hexagon_C2_pxfer_map;	 // "exagon.C2.pxfer.map"
        case '4':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".nbitsclri", 10))
            break;
          return Intrinsic::hexagon_C4_nbitsclri;	 // "exagon.C4.nbitsclri"
        }
        break;
      case 'F':	 // 12 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'c':	 // 8 strings to match.
          if (memcmp(NameR.data()+11, "onv.", 4))
            break;
          switch (NameR[15]) {
          default: break;
          case 'd':	 // 4 strings to match.
            switch (NameR[16]) {
            default: break;
            case '2':	 // 2 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (NameR[18] != 'f')
                  break;
                return Intrinsic::hexagon_F2_conv_d2df;	 // "exagon.F2.conv.d2df"
              case 's':	 // 1 string to match.
                if (NameR[18] != 'f')
                  break;
                return Intrinsic::hexagon_F2_conv_d2sf;	 // "exagon.F2.conv.d2sf"
              }
              break;
            case 'f':	 // 2 strings to match.
              if (NameR[17] != '2')
                break;
              switch (NameR[18]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::hexagon_F2_conv_df2d;	 // "exagon.F2.conv.df2d"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_F2_conv_df2w;	 // "exagon.F2.conv.df2w"
              }
              break;
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(NameR.data()+16, "f2", 2))
              break;
            switch (NameR[18]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::hexagon_F2_conv_sf2d;	 // "exagon.F2.conv.sf2d"
            case 'w':	 // 1 string to match.
              return Intrinsic::hexagon_F2_conv_sf2w;	 // "exagon.F2.conv.sf2w"
            }
            break;
          case 'w':	 // 2 strings to match.
            if (NameR[16] != '2')
              break;
            switch (NameR[17]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (NameR[18] != 'f')
                break;
              return Intrinsic::hexagon_F2_conv_w2df;	 // "exagon.F2.conv.w2df"
            case 's':	 // 1 string to match.
              if (NameR[18] != 'f')
                break;
              return Intrinsic::hexagon_F2_conv_w2sf;	 // "exagon.F2.conv.w2sf"
            }
            break;
          }
          break;
        case 'd':	 // 2 strings to match.
          if (memcmp(NameR.data()+11, "ffm", 3))
            break;
          switch (NameR[14]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+15, ".lib", 4))
              break;
            return Intrinsic::hexagon_F2_dffma_lib;	 // "exagon.F2.dffma.lib"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+15, ".lib", 4))
              break;
            return Intrinsic::hexagon_F2_dffms_lib;	 // "exagon.F2.dffms.lib"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+11, "ffm", 3))
            break;
          switch (NameR[14]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+15, ".lib", 4))
              break;
            return Intrinsic::hexagon_F2_sffma_lib;	 // "exagon.F2.sffma.lib"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+15, ".lib", 4))
              break;
            return Intrinsic::hexagon_F2_sffms_lib;	 // "exagon.F2.sffms.lib"
          }
          break;
        }
        break;
      case 'M':	 // 44 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 41 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 8 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'm':	 // 6 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 2 strings to match.
                if (memcmp(NameR.data()+13, "csc.s", 5))
                  break;
                switch (NameR[18]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_cmacsc_s0;	 // "exagon.M2.cmacsc.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_cmacsc_s1;	 // "exagon.M2.cmacsc.s1"
                }
                break;
              case 'p':	 // 4 strings to match.
                if (NameR[13] != 'y')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'r':	 // 2 strings to match.
                  if (memcmp(NameR.data()+15, "s.s", 3))
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_cmpyrs_s0;	 // "exagon.M2.cmpyrs.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_cmpyrs_s1;	 // "exagon.M2.cmpyrs.s1"
                  }
                  break;
                case 's':	 // 2 strings to match.
                  if (memcmp(NameR.data()+15, "c.s", 3))
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_cmpysc_s0;	 // "exagon.M2.cmpysc.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_cmpysc_s1;	 // "exagon.M2.cmpysc.s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'n':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "acsc.s", 6))
                break;
              switch (NameR[18]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_cnacsc_s0;	 // "exagon.M2.cnacsc.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_cnacsc_s1;	 // "exagon.M2.cnacsc.s1"
              }
              break;
            }
            break;
          case 'h':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "mmpy", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+16, ".s1", 3))
                break;
              return Intrinsic::hexagon_M2_hmmpyh_s1;	 // "exagon.M2.hmmpyh.s1"
            case 'l':	 // 1 string to match.
              if (memcmp(NameR.data()+16, ".s1", 3))
                break;
              return Intrinsic::hexagon_M2_hmmpyl_s1;	 // "exagon.M2.hmmpyl.s1"
            }
            break;
          case 'm':	 // 21 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'm':	 // 12 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 4 strings to match.
                if (NameR[13] != 'c')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+15, "s.s", 3))
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmachs_s0;	 // "exagon.M2.mmachs.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmachs_s1;	 // "exagon.M2.mmachs.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+15, "s.s", 3))
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmacls_s0;	 // "exagon.M2.mmacls.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmacls_s1;	 // "exagon.M2.mmacls.s1"
                  }
                  break;
                }
                break;
              case 'p':	 // 8 strings to match.
                if (NameR[13] != 'y')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+15, ".rs", 3))
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyh_rs0;	 // "exagon.M2.mmpyh.rs0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyh_rs1;	 // "exagon.M2.mmpyh.rs1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+15, ".rs", 3))
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyl_rs0;	 // "exagon.M2.mmpyl.rs0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyl_rs1;	 // "exagon.M2.mmpyl.rs1"
                  }
                  break;
                case 'u':	 // 4 strings to match.
                  switch (NameR[15]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+16, ".s", 2))
                      break;
                    switch (NameR[18]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mmpyuh_s0;	 // "exagon.M2.mmpyuh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mmpyuh_s1;	 // "exagon.M2.mmpyuh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+16, ".s", 2))
                      break;
                    switch (NameR[18]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mmpyul_s0;	 // "exagon.M2.mmpyul.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mmpyul_s1;	 // "exagon.M2.mmpyul.s1"
                    }
                    break;
                  }
                  break;
                }
                break;
              }
              break;
            case 'p':	 // 9 strings to match.
              if (memcmp(NameR.data()+12, "y.", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (NameR[15]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, ".s", 2))
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_hh_s0;	 // "exagon.M2.mpy.hh.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_hh_s1;	 // "exagon.M2.mpy.hh.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, ".s", 2))
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_hl_s0;	 // "exagon.M2.mpy.hl.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_hl_s1;	 // "exagon.M2.mpy.hl.s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (NameR[15]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, ".s", 2))
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_lh_s0;	 // "exagon.M2.mpy.lh.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_lh_s1;	 // "exagon.M2.mpy.lh.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, ".s", 2))
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_ll_s0;	 // "exagon.M2.mpy.ll.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_ll_s1;	 // "exagon.M2.mpy.ll.s1"
                  }
                  break;
                }
                break;
              case 'u':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "p.s1", 4))
                  break;
                return Intrinsic::hexagon_M2_mpy_up_s1;	 // "exagon.M2.mpy.up.s1"
              }
              break;
            }
            break;
          case 'v':	 // 10 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "bsdiff", 6))
                break;
              switch (NameR[18]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vabsdiffh;	 // "exagon.M2.vabsdiffh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vabsdiffw;	 // "exagon.M2.vabsdiffw"
              }
              break;
            case 'd':	 // 4 strings to match.
              if (NameR[12] != 'm')
                break;
              switch (NameR[13]) {
              default: break;
              case 'a':	 // 2 strings to match.
                if (memcmp(NameR.data()+14, "cs.s", 4))
                  break;
                switch (NameR[18]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vdmacs_s0;	 // "exagon.M2.vdmacs.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vdmacs_s1;	 // "exagon.M2.vdmacs.s1"
                }
                break;
              case 'p':	 // 2 strings to match.
                if (memcmp(NameR.data()+14, "ys.s", 4))
                  break;
                switch (NameR[18]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vdmpys_s0;	 // "exagon.M2.vdmpys.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vdmpys_s1;	 // "exagon.M2.vdmpys.s1"
                }
                break;
              }
              break;
            case 'm':	 // 4 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 2 strings to match.
                if (memcmp(NameR.data()+13, "c2s.s", 5))
                  break;
                switch (NameR[18]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmac2s_s0;	 // "exagon.M2.vmac2s.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmac2s_s1;	 // "exagon.M2.vmac2s.s1"
                }
                break;
              case 'p':	 // 2 strings to match.
                if (memcmp(NameR.data()+13, "y2s.s", 5))
                  break;
                switch (NameR[18]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmpy2s_s0;	 // "exagon.M2.vmpy2s.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmpy2s_s1;	 // "exagon.M2.vmpy2s.s1"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 3 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "mpy", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+15, ".whc", 4))
                break;
              return Intrinsic::hexagon_M4_cmpyi_whc;	 // "exagon.M4.cmpyi.whc"
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+15, ".whc", 4))
                break;
              return Intrinsic::hexagon_M4_cmpyr_whc;	 // "exagon.M4.cmpyr.whc"
            }
            break;
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "mpyw.acc", 8))
              break;
            return Intrinsic::hexagon_M4_pmpyw_acc;	 // "exagon.M4.pmpyw.acc"
          }
          break;
        }
        break;
      case 'S':	 // 12 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 4 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "xtractup", 8))
              break;
            return Intrinsic::hexagon_S2_extractup;	 // "exagon.S2.extractup"
          case 'i':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "nsert.rp", 8))
              break;
            return Intrinsic::hexagon_S2_insert_rp;	 // "exagon.S2.insert.rp"
          case 'v':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "splice", 6))
              break;
            switch (NameR[17]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (NameR[18] != 'b')
                break;
              return Intrinsic::hexagon_S2_vspliceib;	 // "exagon.S2.vspliceib"
            case 'r':	 // 1 string to match.
              if (NameR[18] != 'b')
                break;
              return Intrinsic::hexagon_S2_vsplicerb;	 // "exagon.S2.vsplicerb"
            }
            break;
          }
          break;
        case '4':	 // 7 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'n':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "tstbit.", 7))
              break;
            switch (NameR[18]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_S4_ntstbit_i;	 // "exagon.S4.ntstbit.i"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_S4_ntstbit_r;	 // "exagon.S4.ntstbit.r"
            }
            break;
          case 'v':	 // 5 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "crotate", 7))
                break;
              return Intrinsic::hexagon_S4_vrcrotate;	 // "exagon.S4.vrcrotate"
            case 'x':	 // 4 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 2 strings to match.
                if (memcmp(NameR.data()+13, "ddsub", 5))
                  break;
                switch (NameR[18]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_S4_vxaddsubh;	 // "exagon.S4.vxaddsubh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_S4_vxaddsubw;	 // "exagon.S4.vxaddsubw"
                }
                break;
              case 's':	 // 2 strings to match.
                if (memcmp(NameR.data()+13, "ubadd", 5))
                  break;
                switch (NameR[18]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_S4_vxsubaddh;	 // "exagon.S4.vxsubaddh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_S4_vxsubaddw;	 // "exagon.S4.vxsubaddw"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case '5':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".popcountp", 10))
            break;
          return Intrinsic::hexagon_S5_popcountp;	 // "exagon.S5.popcountp"
        }
        break;
      }
      break;
    case 20:	 // 95 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 4 strings to match.
        if (memcmp(NameR.data()+8, "2.combine.", 10))
          break;
        switch (NameR[18]) {
        default: break;
        case 'h':	 // 2 strings to match.
          switch (NameR[19]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::hexagon_A2_combine_hh;	 // "exagon.A2.combine.hh"
          case 'l':	 // 1 string to match.
            return Intrinsic::hexagon_A2_combine_hl;	 // "exagon.A2.combine.hl"
          }
          break;
        case 'l':	 // 2 strings to match.
          switch (NameR[19]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::hexagon_A2_combine_lh;	 // "exagon.A2.combine.lh"
          case 'l':	 // 1 string to match.
            return Intrinsic::hexagon_A2_combine_ll;	 // "exagon.A2.combine.ll"
          }
          break;
        }
        break;
      case 'F':	 // 10 strings to match.
        if (memcmp(NameR.data()+8, "2.conv.", 7))
          break;
        switch (NameR[15]) {
        default: break;
        case 'd':	 // 3 strings to match.
          if (memcmp(NameR.data()+16, "f2", 2))
            break;
          switch (NameR[18]) {
          default: break;
          case 's':	 // 1 string to match.
            if (NameR[19] != 'f')
              break;
            return Intrinsic::hexagon_F2_conv_df2sf;	 // "exagon.F2.conv.df2sf"
          case 'u':	 // 2 strings to match.
            switch (NameR[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::hexagon_F2_conv_df2ud;	 // "exagon.F2.conv.df2ud"
            case 'w':	 // 1 string to match.
              return Intrinsic::hexagon_F2_conv_df2uw;	 // "exagon.F2.conv.df2uw"
            }
            break;
          }
          break;
        case 's':	 // 3 strings to match.
          if (memcmp(NameR.data()+16, "f2", 2))
            break;
          switch (NameR[18]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (NameR[19] != 'f')
              break;
            return Intrinsic::hexagon_F2_conv_sf2df;	 // "exagon.F2.conv.sf2df"
          case 'u':	 // 2 strings to match.
            switch (NameR[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::hexagon_F2_conv_sf2ud;	 // "exagon.F2.conv.sf2ud"
            case 'w':	 // 1 string to match.
              return Intrinsic::hexagon_F2_conv_sf2uw;	 // "exagon.F2.conv.sf2uw"
            }
            break;
          }
          break;
        case 'u':	 // 4 strings to match.
          switch (NameR[16]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (NameR[17] != '2')
              break;
            switch (NameR[18]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (NameR[19] != 'f')
                break;
              return Intrinsic::hexagon_F2_conv_ud2df;	 // "exagon.F2.conv.ud2df"
            case 's':	 // 1 string to match.
              if (NameR[19] != 'f')
                break;
              return Intrinsic::hexagon_F2_conv_ud2sf;	 // "exagon.F2.conv.ud2sf"
            }
            break;
          case 'w':	 // 2 strings to match.
            if (NameR[17] != '2')
              break;
            switch (NameR[18]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (NameR[19] != 'f')
                break;
              return Intrinsic::hexagon_F2_conv_uw2df;	 // "exagon.F2.conv.uw2df"
            case 's':	 // 1 string to match.
              if (NameR[19] != 'f')
                break;
              return Intrinsic::hexagon_F2_conv_uw2sf;	 // "exagon.F2.conv.uw2sf"
            }
            break;
          }
          break;
        }
        break;
      case 'M':	 // 58 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 49 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "mpyrsc.s", 8))
              break;
            switch (NameR[19]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_cmpyrsc_s0;	 // "exagon.M2.cmpyrsc.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_cmpyrsc_s1;	 // "exagon.M2.cmpyrsc.s1"
            }
            break;
          case 'd':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "pmpy", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+16, "s.s0", 4))
                break;
              return Intrinsic::hexagon_M2_dpmpyss_s0;	 // "exagon.M2.dpmpyss.s0"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+16, "u.s0", 4))
                break;
              return Intrinsic::hexagon_M2_dpmpyuu_s0;	 // "exagon.M2.dpmpyuu.s0"
            }
            break;
          case 'h':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "mmpy", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+16, ".rs1", 4))
                break;
              return Intrinsic::hexagon_M2_hmmpyh_rs1;	 // "exagon.M2.hmmpyh.rs1"
            case 'l':	 // 1 string to match.
              if (memcmp(NameR.data()+16, ".rs1", 4))
                break;
              return Intrinsic::hexagon_M2_hmmpyl_rs1;	 // "exagon.M2.hmmpyl.rs1"
            }
            break;
          case 'm':	 // 28 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'm':	 // 12 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 8 strings to match.
                if (NameR[13] != 'c')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+15, "s.rs", 4))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmachs_rs0;	 // "exagon.M2.mmachs.rs0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmachs_rs1;	 // "exagon.M2.mmachs.rs1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+15, "s.rs", 4))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmacls_rs0;	 // "exagon.M2.mmacls.rs0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmacls_rs1;	 // "exagon.M2.mmacls.rs1"
                  }
                  break;
                case 'u':	 // 4 strings to match.
                  switch (NameR[15]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+16, "s.s", 3))
                      break;
                    switch (NameR[19]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mmacuhs_s0;	 // "exagon.M2.mmacuhs.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mmacuhs_s1;	 // "exagon.M2.mmacuhs.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+16, "s.s", 3))
                      break;
                    switch (NameR[19]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mmaculs_s0;	 // "exagon.M2.mmaculs.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mmaculs_s1;	 // "exagon.M2.mmaculs.s1"
                    }
                    break;
                  }
                  break;
                }
                break;
              case 'p':	 // 4 strings to match.
                if (memcmp(NameR.data()+13, "yu", 2))
                  break;
                switch (NameR[15]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, ".rs", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyuh_rs0;	 // "exagon.M2.mmpyuh.rs0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyuh_rs1;	 // "exagon.M2.mmpyuh.rs1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, ".rs", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyul_rs0;	 // "exagon.M2.mmpyul.rs0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyul_rs1;	 // "exagon.M2.mmpyul.rs1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'p':	 // 16 strings to match.
              if (NameR[12] != 'y')
                break;
              switch (NameR[13]) {
              default: break;
              case 'd':	 // 8 strings to match.
                if (NameR[14] != '.')
                  break;
                switch (NameR[15]) {
                default: break;
                case 'h':	 // 4 strings to match.
                  switch (NameR[16]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+17, ".s", 2))
                      break;
                    switch (NameR[19]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_hh_s0;	 // "exagon.M2.mpyd.hh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_hh_s1;	 // "exagon.M2.mpyd.hh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+17, ".s", 2))
                      break;
                    switch (NameR[19]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_hl_s0;	 // "exagon.M2.mpyd.hl.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_hl_s1;	 // "exagon.M2.mpyd.hl.s1"
                    }
                    break;
                  }
                  break;
                case 'l':	 // 4 strings to match.
                  switch (NameR[16]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+17, ".s", 2))
                      break;
                    switch (NameR[19]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_lh_s0;	 // "exagon.M2.mpyd.lh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_lh_s1;	 // "exagon.M2.mpyd.lh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+17, ".s", 2))
                      break;
                    switch (NameR[19]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_ll_s0;	 // "exagon.M2.mpyd.ll.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_ll_s1;	 // "exagon.M2.mpyd.ll.s1"
                    }
                    break;
                  }
                  break;
                }
                break;
              case 'u':	 // 8 strings to match.
                if (NameR[14] != '.')
                  break;
                switch (NameR[15]) {
                default: break;
                case 'h':	 // 4 strings to match.
                  switch (NameR[16]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+17, ".s", 2))
                      break;
                    switch (NameR[19]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_hh_s0;	 // "exagon.M2.mpyu.hh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_hh_s1;	 // "exagon.M2.mpyu.hh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+17, ".s", 2))
                      break;
                    switch (NameR[19]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_hl_s0;	 // "exagon.M2.mpyu.hl.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_hl_s1;	 // "exagon.M2.mpyu.hl.s1"
                    }
                    break;
                  }
                  break;
                case 'l':	 // 4 strings to match.
                  switch (NameR[16]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+17, ".s", 2))
                      break;
                    switch (NameR[19]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_lh_s0;	 // "exagon.M2.mpyu.lh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_lh_s1;	 // "exagon.M2.mpyu.lh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+17, ".s", 2))
                      break;
                    switch (NameR[19]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_ll_s0;	 // "exagon.M2.mpyu.ll.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_ll_s1;	 // "exagon.M2.mpyu.ll.s1"
                    }
                    break;
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          case 'v':	 // 15 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "mpyrs.s", 7))
                break;
              switch (NameR[19]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vdmpyrs_s0;	 // "exagon.M2.vdmpyrs.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vdmpyrs_s1;	 // "exagon.M2.vdmpyrs.s1"
              }
              break;
            case 'm':	 // 8 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'a':	 // 4 strings to match.
                if (memcmp(NameR.data()+13, "c2", 2))
                  break;
                switch (NameR[15]) {
                default: break;
                case 'e':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, "s.s", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vmac2es_s0;	 // "exagon.M2.vmac2es.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vmac2es_s1;	 // "exagon.M2.vmac2es.s1"
                  }
                  break;
                case 's':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, "u.s", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vmac2su_s0;	 // "exagon.M2.vmac2su.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vmac2su_s1;	 // "exagon.M2.vmac2su.s1"
                  }
                  break;
                }
                break;
              case 'p':	 // 4 strings to match.
                if (memcmp(NameR.data()+13, "y2", 2))
                  break;
                switch (NameR[15]) {
                default: break;
                case 'e':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, "s.s", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vmpy2es_s0;	 // "exagon.M2.vmpy2es.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vmpy2es_s1;	 // "exagon.M2.vmpy2es.s1"
                  }
                  break;
                case 's':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, "u.s", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vmpy2su_s0;	 // "exagon.M2.vmpy2su.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vmpy2su_s1;	 // "exagon.M2.vmpy2su.s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'r':	 // 5 strings to match.
              if (memcmp(NameR.data()+12, "cm", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'a':	 // 2 strings to match.
                if (NameR[15] != 'c')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'i':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".s0", 3))
                    break;
                  return Intrinsic::hexagon_M2_vrcmaci_s0;	 // "exagon.M2.vrcmaci.s0"
                case 'r':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".s0", 3))
                    break;
                  return Intrinsic::hexagon_M2_vrcmacr_s0;	 // "exagon.M2.vrcmacr.s0"
                }
                break;
              case 'p':	 // 3 strings to match.
                if (NameR[15] != 'y')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'i':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".s0", 3))
                    break;
                  return Intrinsic::hexagon_M2_vrcmpyi_s0;	 // "exagon.M2.vrcmpyi.s0"
                case 'r':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".s0", 3))
                    break;
                  return Intrinsic::hexagon_M2_vrcmpyr_s0;	 // "exagon.M2.vrcmpyr.s0"
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".s1", 3))
                    break;
                  return Intrinsic::hexagon_M2_vrcmpys_s1;	 // "exagon.M2.vrcmpys.s1"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 9 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 4 strings to match.
            if (memcmp(NameR.data()+11, "pyr", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'i':	 // 2 strings to match.
              if (memcmp(NameR.data()+15, ".add", 4))
                break;
              switch (NameR[19]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_M4_mpyri_addi;	 // "exagon.M4.mpyri.addi"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_M4_mpyri_addr;	 // "exagon.M4.mpyri.addr"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (memcmp(NameR.data()+15, ".add", 4))
                break;
              switch (NameR[19]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_M4_mpyrr_addi;	 // "exagon.M4.mpyrr.addi"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_M4_mpyrr_addr;	 // "exagon.M4.mpyrr.addr"
              }
              break;
            }
            break;
          case 'v':	 // 5 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "mpyh.acc", 8))
                break;
              return Intrinsic::hexagon_M4_vpmpyh_acc;	 // "exagon.M4.vpmpyh.acc"
            case 'r':	 // 4 strings to match.
              if (memcmp(NameR.data()+12, "mpy", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'e':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "h.s", 3))
                  break;
                switch (NameR[19]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M4_vrmpyeh_s0;	 // "exagon.M4.vrmpyeh.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M4_vrmpyeh_s1;	 // "exagon.M4.vrmpyeh.s1"
                }
                break;
              case 'o':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "h.s", 3))
                  break;
                switch (NameR[19]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M4_vrmpyoh_s0;	 // "exagon.M4.vrmpyoh.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M4_vrmpyoh_s1;	 // "exagon.M4.vrmpyoh.s1"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'S':	 // 23 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 17 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 8 strings to match.
            if (NameR[11] != 's')
              break;
            switch (NameR[12]) {
            default: break;
            case 'l':	 // 4 strings to match.
              if (NameR[13] != '.')
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_asl_i_p_or;	 // "exagon.S2.asl.i.p.or"
                case 'r':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_asl_i_r_or;	 // "exagon.S2.asl.i.r.or"
                }
                break;
              case 'r':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_asl_r_p_or;	 // "exagon.S2.asl.r.p.or"
                case 'r':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_asl_r_r_or;	 // "exagon.S2.asl.r.r.or"
                }
                break;
              }
              break;
            case 'r':	 // 4 strings to match.
              if (NameR[13] != '.')
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_asr_i_p_or;	 // "exagon.S2.asr.i.p.or"
                case 'r':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_asr_i_r_or;	 // "exagon.S2.asr.i.r.or"
                }
                break;
              case 'r':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_asr_r_p_or;	 // "exagon.S2.asr.r.p.or"
                case 'r':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_asr_r_r_or;	 // "exagon.S2.asr.r.r.or"
                }
                break;
              }
              break;
            }
            break;
          case 'i':	 // 2 strings to match.
            if (NameR[11] != 'n')
              break;
            switch (NameR[12]) {
            default: break;
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "ertp.rp", 7))
                break;
              return Intrinsic::hexagon_S2_insertp_rp;	 // "exagon.S2.insertp.rp"
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "erleave", 7))
                break;
              return Intrinsic::hexagon_S2_interleave;	 // "exagon.S2.interleave"
            }
            break;
          case 'l':	 // 6 strings to match.
            if (NameR[11] != 's')
              break;
            switch (NameR[12]) {
            default: break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+13, ".r.", 3))
                break;
              switch (NameR[16]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (memcmp(NameR.data()+17, ".or", 3))
                  break;
                return Intrinsic::hexagon_S2_lsl_r_p_or;	 // "exagon.S2.lsl.r.p.or"
              case 'r':	 // 1 string to match.
                if (memcmp(NameR.data()+17, ".or", 3))
                  break;
                return Intrinsic::hexagon_S2_lsl_r_r_or;	 // "exagon.S2.lsl.r.r.or"
              }
              break;
            case 'r':	 // 4 strings to match.
              if (NameR[13] != '.')
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_lsr_i_p_or;	 // "exagon.S2.lsr.i.p.or"
                case 'r':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_lsr_i_r_or;	 // "exagon.S2.lsr.i.r.or"
                }
                break;
              case 'r':	 // 2 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_lsr_r_p_or;	 // "exagon.S2.lsr.r.p.or"
                case 'r':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, ".or", 3))
                    break;
                  return Intrinsic::hexagon_S2_lsr_r_r_or;	 // "exagon.S2.lsr.r.r.or"
                }
                break;
              }
              break;
            }
            break;
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "rndpackwh", 9))
              break;
            return Intrinsic::hexagon_S2_vrndpackwh;	 // "exagon.S2.vrndpackwh"
          }
          break;
        case '4':	 // 5 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "xtract.rp", 9))
              break;
            return Intrinsic::hexagon_S4_extract_rp;	 // "exagon.S4.extract.rp"
          case 'o':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "ri.", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "sl.ri", 5))
                break;
              return Intrinsic::hexagon_S4_ori_asl_ri;	 // "exagon.S4.ori.asl.ri"
            case 'l':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "sr.ri", 5))
                break;
              return Intrinsic::hexagon_S4_ori_lsr_ri;	 // "exagon.S4.ori.lsr.ri"
            }
            break;
          case 'v':	 // 2 strings to match.
            if (NameR[11] != 'x')
              break;
            switch (NameR[12]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "ddsubhr", 7))
                break;
              return Intrinsic::hexagon_S4_vxaddsubhr;	 // "exagon.S4.vxaddsubhr"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "ubaddhr", 7))
                break;
              return Intrinsic::hexagon_S4_vxsubaddhr;	 // "exagon.S4.vxsubaddhr"
            }
            break;
          }
          break;
        case '5':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".asrhub.sat", 11))
            break;
          return Intrinsic::hexagon_S5_asrhub_sat;	 // "exagon.S5.asrhub.sat"
        }
        break;
      }
      break;
    case 21:	 // 96 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 16 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 14 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 6 strings to match.
            if (memcmp(NameR.data()+11, "ddh.", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case 'h':	 // 4 strings to match.
              if (memcmp(NameR.data()+16, "16.", 3))
                break;
              switch (NameR[19]) {
              default: break;
              case 'h':	 // 2 strings to match.
                switch (NameR[20]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_addh_h16_hh;	 // "exagon.A2.addh.h16.hh"
                case 'l':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_addh_h16_hl;	 // "exagon.A2.addh.h16.hl"
                }
                break;
              case 'l':	 // 2 strings to match.
                switch (NameR[20]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_addh_h16_lh;	 // "exagon.A2.addh.h16.lh"
                case 'l':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_addh_h16_ll;	 // "exagon.A2.addh.h16.ll"
                }
                break;
              }
              break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+16, "16.", 3))
                break;
              switch (NameR[19]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (NameR[20] != 'l')
                  break;
                return Intrinsic::hexagon_A2_addh_l16_hl;	 // "exagon.A2.addh.l16.hl"
              case 'l':	 // 1 string to match.
                if (NameR[20] != 'l')
                  break;
                return Intrinsic::hexagon_A2_addh_l16_ll;	 // "exagon.A2.addh.l16.ll"
              }
              break;
            }
            break;
          case 's':	 // 6 strings to match.
            if (memcmp(NameR.data()+11, "ubh.", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case 'h':	 // 4 strings to match.
              if (memcmp(NameR.data()+16, "16.", 3))
                break;
              switch (NameR[19]) {
              default: break;
              case 'h':	 // 2 strings to match.
                switch (NameR[20]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_subh_h16_hh;	 // "exagon.A2.subh.h16.hh"
                case 'l':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_subh_h16_hl;	 // "exagon.A2.subh.h16.hl"
                }
                break;
              case 'l':	 // 2 strings to match.
                switch (NameR[20]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_subh_h16_lh;	 // "exagon.A2.subh.h16.lh"
                case 'l':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_subh_h16_ll;	 // "exagon.A2.subh.h16.ll"
                }
                break;
              }
              break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+16, "16.", 3))
                break;
              switch (NameR[19]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (NameR[20] != 'l')
                  break;
                return Intrinsic::hexagon_A2_subh_l16_hl;	 // "exagon.A2.subh.l16.hl"
              case 'l':	 // 1 string to match.
                if (NameR[20] != 'l')
                  break;
                return Intrinsic::hexagon_A2_subh_l16_ll;	 // "exagon.A2.subh.l16.ll"
              }
              break;
            }
            break;
          case 'v':	 // 2 strings to match.
            if (NameR[11] != 'r')
              break;
            switch (NameR[12]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "ddub.acc", 8))
                break;
              return Intrinsic::hexagon_A2_vraddub_acc;	 // "exagon.A2.vraddub.acc"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "adub.acc", 8))
                break;
              return Intrinsic::hexagon_A2_vrsadub_acc;	 // "exagon.A2.vrsadub.acc"
            }
            break;
          }
          break;
        case '4':	 // 2 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "oundscheck", 10))
              break;
            return Intrinsic::hexagon_A4_boundscheck;	 // "exagon.A4.boundscheck"
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "cmpbeq.any", 10))
              break;
            return Intrinsic::hexagon_A4_vcmpbeq_any;	 // "exagon.A4.vcmpbeq.any"
          }
          break;
        }
        break;
      case 'C':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "4.fastcorner9", 13))
          break;
        return Intrinsic::hexagon_C4_fastcorner9;	 // "exagon.C4.fastcorner9"
      case 'M':	 // 16 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'm':	 // 12 strings to match.
          switch (NameR[11]) {
          default: break;
          case 'm':	 // 4 strings to match.
            if (memcmp(NameR.data()+12, "acu", 3))
              break;
            switch (NameR[15]) {
            default: break;
            case 'h':	 // 2 strings to match.
              if (memcmp(NameR.data()+16, "s.rs", 4))
                break;
              switch (NameR[20]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mmacuhs_rs0;	 // "exagon.M2.mmacuhs.rs0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mmacuhs_rs1;	 // "exagon.M2.mmacuhs.rs1"
              }
              break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+16, "s.rs", 4))
                break;
              switch (NameR[20]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mmaculs_rs0;	 // "exagon.M2.mmaculs.rs0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mmaculs_rs1;	 // "exagon.M2.mmaculs.rs1"
              }
              break;
            }
            break;
          case 'p':	 // 8 strings to match.
            if (memcmp(NameR.data()+12, "yud.", 4))
              break;
            switch (NameR[16]) {
            default: break;
            case 'h':	 // 4 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, ".s", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpyud_hh_s0;	 // "exagon.M2.mpyud.hh.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpyud_hh_s1;	 // "exagon.M2.mpyud.hh.s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, ".s", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpyud_hl_s0;	 // "exagon.M2.mpyud.hl.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpyud_hl_s1;	 // "exagon.M2.mpyud.hl.s1"
                }
                break;
              }
              break;
            case 'l':	 // 4 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, ".s", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpyud_lh_s0;	 // "exagon.M2.mpyud.lh.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpyud_lh_s1;	 // "exagon.M2.mpyud.lh.s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, ".s", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpyud_ll_s0;	 // "exagon.M2.mpyud.ll.s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpyud_ll_s1;	 // "exagon.M2.mpyud.ll.s1"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 'v':	 // 4 strings to match.
          if (memcmp(NameR.data()+11, "rcm", 3))
            break;
          switch (NameR[14]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (NameR[15] != 'c')
              break;
            switch (NameR[16]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+17, ".s0c", 4))
                break;
              return Intrinsic::hexagon_M2_vrcmaci_s0c;	 // "exagon.M2.vrcmaci.s0c"
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+17, ".s0c", 4))
                break;
              return Intrinsic::hexagon_M2_vrcmacr_s0c;	 // "exagon.M2.vrcmacr.s0c"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (NameR[15] != 'y')
              break;
            switch (NameR[16]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+17, ".s0c", 4))
                break;
              return Intrinsic::hexagon_M2_vrcmpyi_s0c;	 // "exagon.M2.vrcmpyi.s0c"
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+17, ".s0c", 4))
                break;
              return Intrinsic::hexagon_M2_vrcmpyr_s0c;	 // "exagon.M2.vrcmpyr.s0c"
            }
            break;
          }
          break;
        }
        break;
      case 'S':	 // 63 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 56 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 32 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "dasl.rrri", 9))
                break;
              return Intrinsic::hexagon_S2_addasl_rrri;	 // "exagon.S2.addasl.rrri"
            case 's':	 // 31 strings to match.
              switch (NameR[12]) {
              default: break;
              case 'l':	 // 15 strings to match.
                if (NameR[13] != '.')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'i':	 // 7 strings to match.
                  if (NameR[15] != '.')
                    break;
                  switch (NameR[16]) {
                  default: break;
                  case 'p':	 // 3 strings to match.
                    if (NameR[17] != '.')
                      break;
                    switch (NameR[18]) {
                    default: break;
                    case 'a':	 // 2 strings to match.
                      switch (NameR[19]) {
                      default: break;
                      case 'c':	 // 1 string to match.
                        if (NameR[20] != 'c')
                          break;
                        return Intrinsic::hexagon_S2_asl_i_p_acc;	 // "exagon.S2.asl.i.p.acc"
                      case 'n':	 // 1 string to match.
                        if (NameR[20] != 'd')
                          break;
                        return Intrinsic::hexagon_S2_asl_i_p_and;	 // "exagon.S2.asl.i.p.and"
                      }
                      break;
                    case 'n':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "ac", 2))
                        break;
                      return Intrinsic::hexagon_S2_asl_i_p_nac;	 // "exagon.S2.asl.i.p.nac"
                    }
                    break;
                  case 'r':	 // 4 strings to match.
                    if (NameR[17] != '.')
                      break;
                    switch (NameR[18]) {
                    default: break;
                    case 'a':	 // 2 strings to match.
                      switch (NameR[19]) {
                      default: break;
                      case 'c':	 // 1 string to match.
                        if (NameR[20] != 'c')
                          break;
                        return Intrinsic::hexagon_S2_asl_i_r_acc;	 // "exagon.S2.asl.i.r.acc"
                      case 'n':	 // 1 string to match.
                        if (NameR[20] != 'd')
                          break;
                        return Intrinsic::hexagon_S2_asl_i_r_and;	 // "exagon.S2.asl.i.r.and"
                      }
                      break;
                    case 'n':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "ac", 2))
                        break;
                      return Intrinsic::hexagon_S2_asl_i_r_nac;	 // "exagon.S2.asl.i.r.nac"
                    case 's':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "at", 2))
                        break;
                      return Intrinsic::hexagon_S2_asl_i_r_sat;	 // "exagon.S2.asl.i.r.sat"
                    }
                    break;
                  }
                  break;
                case 'r':	 // 8 strings to match.
                  if (NameR[15] != '.')
                    break;
                  switch (NameR[16]) {
                  default: break;
                  case 'p':	 // 4 strings to match.
                    if (NameR[17] != '.')
                      break;
                    switch (NameR[18]) {
                    default: break;
                    case 'a':	 // 2 strings to match.
                      switch (NameR[19]) {
                      default: break;
                      case 'c':	 // 1 string to match.
                        if (NameR[20] != 'c')
                          break;
                        return Intrinsic::hexagon_S2_asl_r_p_acc;	 // "exagon.S2.asl.r.p.acc"
                      case 'n':	 // 1 string to match.
                        if (NameR[20] != 'd')
                          break;
                        return Intrinsic::hexagon_S2_asl_r_p_and;	 // "exagon.S2.asl.r.p.and"
                      }
                      break;
                    case 'n':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "ac", 2))
                        break;
                      return Intrinsic::hexagon_S2_asl_r_p_nac;	 // "exagon.S2.asl.r.p.nac"
                    case 'x':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "or", 2))
                        break;
                      return Intrinsic::hexagon_S2_asl_r_p_xor;	 // "exagon.S2.asl.r.p.xor"
                    }
                    break;
                  case 'r':	 // 4 strings to match.
                    if (NameR[17] != '.')
                      break;
                    switch (NameR[18]) {
                    default: break;
                    case 'a':	 // 2 strings to match.
                      switch (NameR[19]) {
                      default: break;
                      case 'c':	 // 1 string to match.
                        if (NameR[20] != 'c')
                          break;
                        return Intrinsic::hexagon_S2_asl_r_r_acc;	 // "exagon.S2.asl.r.r.acc"
                      case 'n':	 // 1 string to match.
                        if (NameR[20] != 'd')
                          break;
                        return Intrinsic::hexagon_S2_asl_r_r_and;	 // "exagon.S2.asl.r.r.and"
                      }
                      break;
                    case 'n':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "ac", 2))
                        break;
                      return Intrinsic::hexagon_S2_asl_r_r_nac;	 // "exagon.S2.asl.r.r.nac"
                    case 's':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "at", 2))
                        break;
                      return Intrinsic::hexagon_S2_asl_r_r_sat;	 // "exagon.S2.asl.r.r.sat"
                    }
                    break;
                  }
                  break;
                }
                break;
              case 'r':	 // 16 strings to match.
                if (NameR[13] != '.')
                  break;
                switch (NameR[14]) {
                default: break;
                case 'i':	 // 8 strings to match.
                  if (NameR[15] != '.')
                    break;
                  switch (NameR[16]) {
                  default: break;
                  case 'p':	 // 4 strings to match.
                    if (NameR[17] != '.')
                      break;
                    switch (NameR[18]) {
                    default: break;
                    case 'a':	 // 2 strings to match.
                      switch (NameR[19]) {
                      default: break;
                      case 'c':	 // 1 string to match.
                        if (NameR[20] != 'c')
                          break;
                        return Intrinsic::hexagon_S2_asr_i_p_acc;	 // "exagon.S2.asr.i.p.acc"
                      case 'n':	 // 1 string to match.
                        if (NameR[20] != 'd')
                          break;
                        return Intrinsic::hexagon_S2_asr_i_p_and;	 // "exagon.S2.asr.i.p.and"
                      }
                      break;
                    case 'n':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "ac", 2))
                        break;
                      return Intrinsic::hexagon_S2_asr_i_p_nac;	 // "exagon.S2.asr.i.p.nac"
                    case 'r':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "nd", 2))
                        break;
                      return Intrinsic::hexagon_S2_asr_i_p_rnd;	 // "exagon.S2.asr.i.p.rnd"
                    }
                    break;
                  case 'r':	 // 4 strings to match.
                    if (NameR[17] != '.')
                      break;
                    switch (NameR[18]) {
                    default: break;
                    case 'a':	 // 2 strings to match.
                      switch (NameR[19]) {
                      default: break;
                      case 'c':	 // 1 string to match.
                        if (NameR[20] != 'c')
                          break;
                        return Intrinsic::hexagon_S2_asr_i_r_acc;	 // "exagon.S2.asr.i.r.acc"
                      case 'n':	 // 1 string to match.
                        if (NameR[20] != 'd')
                          break;
                        return Intrinsic::hexagon_S2_asr_i_r_and;	 // "exagon.S2.asr.i.r.and"
                      }
                      break;
                    case 'n':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "ac", 2))
                        break;
                      return Intrinsic::hexagon_S2_asr_i_r_nac;	 // "exagon.S2.asr.i.r.nac"
                    case 'r':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "nd", 2))
                        break;
                      return Intrinsic::hexagon_S2_asr_i_r_rnd;	 // "exagon.S2.asr.i.r.rnd"
                    }
                    break;
                  }
                  break;
                case 'r':	 // 8 strings to match.
                  if (NameR[15] != '.')
                    break;
                  switch (NameR[16]) {
                  default: break;
                  case 'p':	 // 4 strings to match.
                    if (NameR[17] != '.')
                      break;
                    switch (NameR[18]) {
                    default: break;
                    case 'a':	 // 2 strings to match.
                      switch (NameR[19]) {
                      default: break;
                      case 'c':	 // 1 string to match.
                        if (NameR[20] != 'c')
                          break;
                        return Intrinsic::hexagon_S2_asr_r_p_acc;	 // "exagon.S2.asr.r.p.acc"
                      case 'n':	 // 1 string to match.
                        if (NameR[20] != 'd')
                          break;
                        return Intrinsic::hexagon_S2_asr_r_p_and;	 // "exagon.S2.asr.r.p.and"
                      }
                      break;
                    case 'n':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "ac", 2))
                        break;
                      return Intrinsic::hexagon_S2_asr_r_p_nac;	 // "exagon.S2.asr.r.p.nac"
                    case 'x':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "or", 2))
                        break;
                      return Intrinsic::hexagon_S2_asr_r_p_xor;	 // "exagon.S2.asr.r.p.xor"
                    }
                    break;
                  case 'r':	 // 4 strings to match.
                    if (NameR[17] != '.')
                      break;
                    switch (NameR[18]) {
                    default: break;
                    case 'a':	 // 2 strings to match.
                      switch (NameR[19]) {
                      default: break;
                      case 'c':	 // 1 string to match.
                        if (NameR[20] != 'c')
                          break;
                        return Intrinsic::hexagon_S2_asr_r_r_acc;	 // "exagon.S2.asr.r.r.acc"
                      case 'n':	 // 1 string to match.
                        if (NameR[20] != 'd')
                          break;
                        return Intrinsic::hexagon_S2_asr_r_r_and;	 // "exagon.S2.asr.r.r.and"
                      }
                      break;
                    case 'n':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "ac", 2))
                        break;
                      return Intrinsic::hexagon_S2_asr_r_r_nac;	 // "exagon.S2.asr.r.r.nac"
                    case 's':	 // 1 string to match.
                      if (memcmp(NameR.data()+19, "at", 2))
                        break;
                      return Intrinsic::hexagon_S2_asr_r_r_sat;	 // "exagon.S2.asr.r.r.sat"
                    }
                    break;
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "xtractu.rp", 10))
              break;
            return Intrinsic::hexagon_S2_extractu_rp;	 // "exagon.S2.extractu.rp"
          case 'l':	 // 20 strings to match.
            if (NameR[11] != 's')
              break;
            switch (NameR[12]) {
            default: break;
            case 'l':	 // 7 strings to match.
              if (memcmp(NameR.data()+13, ".r.", 3))
                break;
              switch (NameR[16]) {
              default: break;
              case 'p':	 // 4 strings to match.
                if (NameR[17] != '.')
                  break;
                switch (NameR[18]) {
                default: break;
                case 'a':	 // 2 strings to match.
                  switch (NameR[19]) {
                  default: break;
                  case 'c':	 // 1 string to match.
                    if (NameR[20] != 'c')
                      break;
                    return Intrinsic::hexagon_S2_lsl_r_p_acc;	 // "exagon.S2.lsl.r.p.acc"
                  case 'n':	 // 1 string to match.
                    if (NameR[20] != 'd')
                      break;
                    return Intrinsic::hexagon_S2_lsl_r_p_and;	 // "exagon.S2.lsl.r.p.and"
                  }
                  break;
                case 'n':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ac", 2))
                    break;
                  return Intrinsic::hexagon_S2_lsl_r_p_nac;	 // "exagon.S2.lsl.r.p.nac"
                case 'x':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "or", 2))
                    break;
                  return Intrinsic::hexagon_S2_lsl_r_p_xor;	 // "exagon.S2.lsl.r.p.xor"
                }
                break;
              case 'r':	 // 3 strings to match.
                if (NameR[17] != '.')
                  break;
                switch (NameR[18]) {
                default: break;
                case 'a':	 // 2 strings to match.
                  switch (NameR[19]) {
                  default: break;
                  case 'c':	 // 1 string to match.
                    if (NameR[20] != 'c')
                      break;
                    return Intrinsic::hexagon_S2_lsl_r_r_acc;	 // "exagon.S2.lsl.r.r.acc"
                  case 'n':	 // 1 string to match.
                    if (NameR[20] != 'd')
                      break;
                    return Intrinsic::hexagon_S2_lsl_r_r_and;	 // "exagon.S2.lsl.r.r.and"
                  }
                  break;
                case 'n':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ac", 2))
                    break;
                  return Intrinsic::hexagon_S2_lsl_r_r_nac;	 // "exagon.S2.lsl.r.r.nac"
                }
                break;
              }
              break;
            case 'r':	 // 13 strings to match.
              if (NameR[13] != '.')
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 6 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 3 strings to match.
                  if (NameR[17] != '.')
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (NameR[19]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (NameR[20] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_lsr_i_p_acc;	 // "exagon.S2.lsr.i.p.acc"
                    case 'n':	 // 1 string to match.
                      if (NameR[20] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_lsr_i_p_and;	 // "exagon.S2.lsr.i.p.and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(NameR.data()+19, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_lsr_i_p_nac;	 // "exagon.S2.lsr.i.p.nac"
                  }
                  break;
                case 'r':	 // 3 strings to match.
                  if (NameR[17] != '.')
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (NameR[19]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (NameR[20] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_lsr_i_r_acc;	 // "exagon.S2.lsr.i.r.acc"
                    case 'n':	 // 1 string to match.
                      if (NameR[20] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_lsr_i_r_and;	 // "exagon.S2.lsr.i.r.and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(NameR.data()+19, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_lsr_i_r_nac;	 // "exagon.S2.lsr.i.r.nac"
                  }
                  break;
                }
                break;
              case 'r':	 // 7 strings to match.
                if (NameR[15] != '.')
                  break;
                switch (NameR[16]) {
                default: break;
                case 'p':	 // 4 strings to match.
                  if (NameR[17] != '.')
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (NameR[19]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (NameR[20] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_lsr_r_p_acc;	 // "exagon.S2.lsr.r.p.acc"
                    case 'n':	 // 1 string to match.
                      if (NameR[20] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_lsr_r_p_and;	 // "exagon.S2.lsr.r.p.and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(NameR.data()+19, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_lsr_r_p_nac;	 // "exagon.S2.lsr.r.p.nac"
                  case 'x':	 // 1 string to match.
                    if (memcmp(NameR.data()+19, "or", 2))
                      break;
                    return Intrinsic::hexagon_S2_lsr_r_p_xor;	 // "exagon.S2.lsr.r.p.xor"
                  }
                  break;
                case 'r':	 // 3 strings to match.
                  if (NameR[17] != '.')
                    break;
                  switch (NameR[18]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (NameR[19]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (NameR[20] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_lsr_r_r_acc;	 // "exagon.S2.lsr.r.r.acc"
                    case 'n':	 // 1 string to match.
                      if (NameR[20] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_lsr_r_r_and;	 // "exagon.S2.lsr.r.r.and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(NameR.data()+19, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_lsr_r_r_nac;	 // "exagon.S2.lsr.r.r.nac"
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          case 't':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "ogglebit.", 9))
              break;
            switch (NameR[20]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_S2_togglebit_i;	 // "exagon.S2.togglebit.i"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_S2_togglebit_r;	 // "exagon.S2.togglebit.r"
            }
            break;
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "rndpackwhs", 10))
              break;
            return Intrinsic::hexagon_S2_vrndpackwhs;	 // "exagon.S2.vrndpackwhs"
          }
          break;
        case '4':	 // 7 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 4 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "di.", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'a':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "sl.ri", 5))
                  break;
                return Intrinsic::hexagon_S4_addi_asl_ri;	 // "exagon.S4.addi.asl.ri"
              case 'l':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "sr.ri", 5))
                  break;
                return Intrinsic::hexagon_S4_addi_lsr_ri;	 // "exagon.S4.addi.lsr.ri"
              }
              break;
            case 'n':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "di.", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'a':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "sl.ri", 5))
                  break;
                return Intrinsic::hexagon_S4_andi_asl_ri;	 // "exagon.S4.andi.asl.ri"
              case 'l':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "sr.ri", 5))
                  break;
                return Intrinsic::hexagon_S4_andi_lsr_ri;	 // "exagon.S4.andi.lsr.ri"
              }
              break;
            }
            break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "xtractp.rp", 10))
              break;
            return Intrinsic::hexagon_S4_extractp_rp;	 // "exagon.S4.extractp.rp"
          case 's':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "ubi.", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+16, "sl.ri", 5))
                break;
              return Intrinsic::hexagon_S4_subi_asl_ri;	 // "exagon.S4.subi.asl.ri"
            case 'l':	 // 1 string to match.
              if (memcmp(NameR.data()+16, "sr.ri", 5))
                break;
              return Intrinsic::hexagon_S4_subi_lsr_ri;	 // "exagon.S4.subi.lsr.ri"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 22:	 // 9 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 2 strings to match.
        if (memcmp(NameR.data()+8, "4.round.r", 9))
          break;
        switch (NameR[17]) {
        default: break;
        case 'i':	 // 1 string to match.
          if (memcmp(NameR.data()+18, ".sat", 4))
            break;
          return Intrinsic::hexagon_A4_round_ri_sat;	 // "exagon.A4.round.ri.sat"
        case 'r':	 // 1 string to match.
          if (memcmp(NameR.data()+18, ".sat", 4))
            break;
          return Intrinsic::hexagon_A4_round_rr_sat;	 // "exagon.A4.round.rr.sat"
        }
        break;
      case 'M':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "2.vrcmpys.s1rp", 14))
          break;
        return Intrinsic::hexagon_M2_vrcmpys_s1rp;	 // "exagon.M2.vrcmpys.s1rp"
      case 'S':	 // 6 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+11, "sl.i.", 5))
            break;
          switch (NameR[16]) {
          default: break;
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+17, ".xacc", 5))
              break;
            return Intrinsic::hexagon_S2_asl_i_p_xacc;	 // "exagon.S2.asl.i.p.xacc"
          case 'r':	 // 1 string to match.
            if (memcmp(NameR.data()+17, ".xacc", 5))
              break;
            return Intrinsic::hexagon_S2_asl_i_r_xacc;	 // "exagon.S2.asl.i.r.xacc"
          }
          break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "einterleave", 11))
            break;
          return Intrinsic::hexagon_S2_deinterleave;	 // "exagon.S2.deinterleave"
        case 'e':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "xtractup.rp", 11))
            break;
          return Intrinsic::hexagon_S2_extractup_rp;	 // "exagon.S2.extractup.rp"
        case 'l':	 // 2 strings to match.
          if (memcmp(NameR.data()+11, "sr.i.", 5))
            break;
          switch (NameR[16]) {
          default: break;
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+17, ".xacc", 5))
              break;
            return Intrinsic::hexagon_S2_lsr_i_p_xacc;	 // "exagon.S2.lsr.i.p.xacc"
          case 'r':	 // 1 string to match.
            if (memcmp(NameR.data()+17, ".xacc", 5))
              break;
            return Intrinsic::hexagon_S2_lsr_i_r_xacc;	 // "exagon.S2.lsr.i.r.xacc"
          }
          break;
        }
        break;
      }
      break;
    case 23:	 // 42 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'M':	 // 38 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 35 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 33 strings to match.
            if (memcmp(NameR.data()+11, "py.", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'a':	 // 8 strings to match.
              if (memcmp(NameR.data()+15, "cc.", 3))
                break;
              switch (NameR[18]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_acc_hh_s0;	 // "exagon.M2.mpy.acc.hh.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_acc_hh_s1;	 // "exagon.M2.mpy.acc.hh.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_acc_hl_s0;	 // "exagon.M2.mpy.acc.hl.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_acc_hl_s1;	 // "exagon.M2.mpy.acc.hl.s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_acc_lh_s0;	 // "exagon.M2.mpy.acc.lh.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_acc_lh_s1;	 // "exagon.M2.mpy.acc.lh.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_acc_ll_s0;	 // "exagon.M2.mpy.acc.ll.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_acc_ll_s1;	 // "exagon.M2.mpy.acc.ll.s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'n':	 // 8 strings to match.
              if (memcmp(NameR.data()+15, "ac.", 3))
                break;
              switch (NameR[18]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_nac_hh_s0;	 // "exagon.M2.mpy.nac.hh.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_nac_hh_s1;	 // "exagon.M2.mpy.nac.hh.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_nac_hl_s0;	 // "exagon.M2.mpy.nac.hl.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_nac_hl_s1;	 // "exagon.M2.mpy.nac.hl.s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_nac_lh_s0;	 // "exagon.M2.mpy.nac.lh.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_nac_lh_s1;	 // "exagon.M2.mpy.nac.lh.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_nac_ll_s0;	 // "exagon.M2.mpy.nac.ll.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_nac_ll_s1;	 // "exagon.M2.mpy.nac.ll.s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'r':	 // 8 strings to match.
              if (memcmp(NameR.data()+15, "nd.", 3))
                break;
              switch (NameR[18]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_rnd_hh_s0;	 // "exagon.M2.mpy.rnd.hh.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_rnd_hh_s1;	 // "exagon.M2.mpy.rnd.hh.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_rnd_hl_s0;	 // "exagon.M2.mpy.rnd.hl.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_rnd_hl_s1;	 // "exagon.M2.mpy.rnd.hl.s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_rnd_lh_s0;	 // "exagon.M2.mpy.rnd.lh.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_rnd_lh_s1;	 // "exagon.M2.mpy.rnd.lh.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_rnd_ll_s0;	 // "exagon.M2.mpy.rnd.ll.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_rnd_ll_s1;	 // "exagon.M2.mpy.rnd.ll.s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 's':	 // 8 strings to match.
              if (memcmp(NameR.data()+15, "at.", 3))
                break;
              switch (NameR[18]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_sat_hh_s0;	 // "exagon.M2.mpy.sat.hh.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_sat_hh_s1;	 // "exagon.M2.mpy.sat.hh.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_sat_hl_s0;	 // "exagon.M2.mpy.sat.hl.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_sat_hl_s1;	 // "exagon.M2.mpy.sat.hl.s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_sat_lh_s0;	 // "exagon.M2.mpy.sat.lh.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_sat_lh_s1;	 // "exagon.M2.mpy.sat.lh.s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+20, ".s", 2))
                    break;
                  switch (NameR[22]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_sat_ll_s0;	 // "exagon.M2.mpy.sat.ll.s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpy_sat_ll_s1;	 // "exagon.M2.mpy.sat.ll.s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "p.s1.sat", 8))
                break;
              return Intrinsic::hexagon_M2_mpy_up_s1_sat;	 // "exagon.M2.mpy.up.s1.sat"
            }
            break;
          case 'v':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "mpy2s.s", 7))
              break;
            switch (NameR[18]) {
            default: break;
            case '0':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "pack", 4))
                break;
              return Intrinsic::hexagon_M2_vmpy2s_s0pack;	 // "exagon.M2.vmpy2s.s0pack"
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "pack", 4))
                break;
              return Intrinsic::hexagon_M2_vmpy2s_s1pack;	 // "exagon.M2.vmpy2s.s1pack"
            }
            break;
          }
          break;
        case '4':	 // 3 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "c.up.s1.sat", 11))
                break;
              return Intrinsic::hexagon_M4_mac_up_s1_sat;	 // "exagon.M4.mac.up.s1.sat"
            case 'p':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "yri.addr.u2", 11))
                break;
              return Intrinsic::hexagon_M4_mpyri_addr_u2;	 // "exagon.M4.mpyri.addr.u2"
            }
            break;
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ac.up.s1.sat", 12))
              break;
            return Intrinsic::hexagon_M4_nac_up_s1_sat;	 // "exagon.M4.nac.up.s1.sat"
          }
          break;
        }
        break;
      case 'S':	 // 4 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 2 strings to match.
          if (memcmp(NameR.data()+9, ".vsat", 5))
            break;
          switch (NameR[14]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (memcmp(NameR.data()+15, "b.nopack", 8))
              break;
            return Intrinsic::hexagon_S2_vsathb_nopack;	 // "exagon.S2.vsathb.nopack"
          case 'w':	 // 1 string to match.
            if (memcmp(NameR.data()+15, "h.nopack", 8))
              break;
            return Intrinsic::hexagon_S2_vsatwh_nopack;	 // "exagon.S2.vsatwh.nopack"
          }
          break;
        case '4':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".vrcrotate.acc", 14))
            break;
          return Intrinsic::hexagon_S4_vrcrotate_acc;	 // "exagon.S4.vrcrotate.acc"
        case 'I':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".to.SXTHI.asrh", 14))
            break;
          return Intrinsic::hexagon_SI_to_SXTHI_asrh;	 // "exagon.SI.to.SXTHI.asrh"
        }
        break;
      }
      break;
    case 24:	 // 64 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'F':	 // 4 strings to match.
        if (memcmp(NameR.data()+8, "2.conv.", 7))
          break;
        switch (NameR[15]) {
        default: break;
        case 'd':	 // 2 strings to match.
          if (memcmp(NameR.data()+16, "f2", 2))
            break;
          switch (NameR[18]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+19, ".chop", 5))
              break;
            return Intrinsic::hexagon_F2_conv_df2d_chop;	 // "exagon.F2.conv.df2d.chop"
          case 'w':	 // 1 string to match.
            if (memcmp(NameR.data()+19, ".chop", 5))
              break;
            return Intrinsic::hexagon_F2_conv_df2w_chop;	 // "exagon.F2.conv.df2w.chop"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+16, "f2", 2))
            break;
          switch (NameR[18]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+19, ".chop", 5))
              break;
            return Intrinsic::hexagon_F2_conv_sf2d_chop;	 // "exagon.F2.conv.sf2d.chop"
          case 'w':	 // 1 string to match.
            if (memcmp(NameR.data()+19, ".chop", 5))
              break;
            return Intrinsic::hexagon_F2_conv_sf2w_chop;	 // "exagon.F2.conv.sf2w.chop"
          }
          break;
        }
        break;
      case 'M':	 // 56 strings to match.
        switch (NameR[8]) {
        default: break;
        case '2':	 // 52 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'd':	 // 5 strings to match.
            if (memcmp(NameR.data()+11, "pmpy", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case 's':	 // 3 strings to match.
              if (memcmp(NameR.data()+16, "s.", 2))
                break;
              switch (NameR[18]) {
              default: break;
              case 'a':	 // 1 string to match.
                if (memcmp(NameR.data()+19, "cc.s0", 5))
                  break;
                return Intrinsic::hexagon_M2_dpmpyss_acc_s0;	 // "exagon.M2.dpmpyss.acc.s0"
              case 'n':	 // 1 string to match.
                if (memcmp(NameR.data()+19, "ac.s0", 5))
                  break;
                return Intrinsic::hexagon_M2_dpmpyss_nac_s0;	 // "exagon.M2.dpmpyss.nac.s0"
              case 'r':	 // 1 string to match.
                if (memcmp(NameR.data()+19, "nd.s0", 5))
                  break;
                return Intrinsic::hexagon_M2_dpmpyss_rnd_s0;	 // "exagon.M2.dpmpyss.rnd.s0"
              }
              break;
            case 'u':	 // 2 strings to match.
              if (memcmp(NameR.data()+16, "u.", 2))
                break;
              switch (NameR[18]) {
              default: break;
              case 'a':	 // 1 string to match.
                if (memcmp(NameR.data()+19, "cc.s0", 5))
                  break;
                return Intrinsic::hexagon_M2_dpmpyuu_acc_s0;	 // "exagon.M2.dpmpyuu.acc.s0"
              case 'n':	 // 1 string to match.
                if (memcmp(NameR.data()+19, "ac.s0", 5))
                  break;
                return Intrinsic::hexagon_M2_dpmpyuu_nac_s0;	 // "exagon.M2.dpmpyuu.nac.s0"
              }
              break;
            }
            break;
          case 'm':	 // 40 strings to match.
            if (memcmp(NameR.data()+11, "py", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'd':	 // 24 strings to match.
              if (NameR[14] != '.')
                break;
              switch (NameR[15]) {
              default: break;
              case 'a':	 // 8 strings to match.
                if (memcmp(NameR.data()+16, "cc.", 3))
                  break;
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 4 strings to match.
                  switch (NameR[20]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_acc_hh_s0;	 // "exagon.M2.mpyd.acc.hh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_acc_hh_s1;	 // "exagon.M2.mpyd.acc.hh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_acc_hl_s0;	 // "exagon.M2.mpyd.acc.hl.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_acc_hl_s1;	 // "exagon.M2.mpyd.acc.hl.s1"
                    }
                    break;
                  }
                  break;
                case 'l':	 // 4 strings to match.
                  switch (NameR[20]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_acc_lh_s0;	 // "exagon.M2.mpyd.acc.lh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_acc_lh_s1;	 // "exagon.M2.mpyd.acc.lh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_acc_ll_s0;	 // "exagon.M2.mpyd.acc.ll.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_acc_ll_s1;	 // "exagon.M2.mpyd.acc.ll.s1"
                    }
                    break;
                  }
                  break;
                }
                break;
              case 'n':	 // 8 strings to match.
                if (memcmp(NameR.data()+16, "ac.", 3))
                  break;
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 4 strings to match.
                  switch (NameR[20]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_nac_hh_s0;	 // "exagon.M2.mpyd.nac.hh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_nac_hh_s1;	 // "exagon.M2.mpyd.nac.hh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_nac_hl_s0;	 // "exagon.M2.mpyd.nac.hl.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_nac_hl_s1;	 // "exagon.M2.mpyd.nac.hl.s1"
                    }
                    break;
                  }
                  break;
                case 'l':	 // 4 strings to match.
                  switch (NameR[20]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_nac_lh_s0;	 // "exagon.M2.mpyd.nac.lh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_nac_lh_s1;	 // "exagon.M2.mpyd.nac.lh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_nac_ll_s0;	 // "exagon.M2.mpyd.nac.ll.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_nac_ll_s1;	 // "exagon.M2.mpyd.nac.ll.s1"
                    }
                    break;
                  }
                  break;
                }
                break;
              case 'r':	 // 8 strings to match.
                if (memcmp(NameR.data()+16, "nd.", 3))
                  break;
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 4 strings to match.
                  switch (NameR[20]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_rnd_hh_s0;	 // "exagon.M2.mpyd.rnd.hh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_rnd_hh_s1;	 // "exagon.M2.mpyd.rnd.hh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_rnd_hl_s0;	 // "exagon.M2.mpyd.rnd.hl.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_rnd_hl_s1;	 // "exagon.M2.mpyd.rnd.hl.s1"
                    }
                    break;
                  }
                  break;
                case 'l':	 // 4 strings to match.
                  switch (NameR[20]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_rnd_lh_s0;	 // "exagon.M2.mpyd.rnd.lh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_rnd_lh_s1;	 // "exagon.M2.mpyd.rnd.lh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_rnd_ll_s0;	 // "exagon.M2.mpyd.rnd.ll.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyd_rnd_ll_s1;	 // "exagon.M2.mpyd.rnd.ll.s1"
                    }
                    break;
                  }
                  break;
                }
                break;
              }
              break;
            case 'u':	 // 16 strings to match.
              if (NameR[14] != '.')
                break;
              switch (NameR[15]) {
              default: break;
              case 'a':	 // 8 strings to match.
                if (memcmp(NameR.data()+16, "cc.", 3))
                  break;
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 4 strings to match.
                  switch (NameR[20]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_acc_hh_s0;	 // "exagon.M2.mpyu.acc.hh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_acc_hh_s1;	 // "exagon.M2.mpyu.acc.hh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_acc_hl_s0;	 // "exagon.M2.mpyu.acc.hl.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_acc_hl_s1;	 // "exagon.M2.mpyu.acc.hl.s1"
                    }
                    break;
                  }
                  break;
                case 'l':	 // 4 strings to match.
                  switch (NameR[20]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_acc_lh_s0;	 // "exagon.M2.mpyu.acc.lh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_acc_lh_s1;	 // "exagon.M2.mpyu.acc.lh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_acc_ll_s0;	 // "exagon.M2.mpyu.acc.ll.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_acc_ll_s1;	 // "exagon.M2.mpyu.acc.ll.s1"
                    }
                    break;
                  }
                  break;
                }
                break;
              case 'n':	 // 8 strings to match.
                if (memcmp(NameR.data()+16, "ac.", 3))
                  break;
                switch (NameR[19]) {
                default: break;
                case 'h':	 // 4 strings to match.
                  switch (NameR[20]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_nac_hh_s0;	 // "exagon.M2.mpyu.nac.hh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_nac_hh_s1;	 // "exagon.M2.mpyu.nac.hh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_nac_hl_s0;	 // "exagon.M2.mpyu.nac.hl.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_nac_hl_s1;	 // "exagon.M2.mpyu.nac.hl.s1"
                    }
                    break;
                  }
                  break;
                case 'l':	 // 4 strings to match.
                  switch (NameR[20]) {
                  default: break;
                  case 'h':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_nac_lh_s0;	 // "exagon.M2.mpyu.nac.lh.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_nac_lh_s1;	 // "exagon.M2.mpyu.nac.lh.s1"
                    }
                    break;
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+21, ".s", 2))
                      break;
                    switch (NameR[23]) {
                    default: break;
                    case '0':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_nac_ll_s0;	 // "exagon.M2.mpyu.nac.ll.s0"
                    case '1':	 // 1 string to match.
                      return Intrinsic::hexagon_M2_mpyu_nac_ll_s1;	 // "exagon.M2.mpyu.nac.ll.s1"
                    }
                    break;
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          case 'v':	 // 7 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'c':	 // 6 strings to match.
              if (NameR[12] != 'm')
                break;
              switch (NameR[13]) {
              default: break;
              case 'a':	 // 2 strings to match.
                if (memcmp(NameR.data()+14, "c.s0.sat.", 9))
                  break;
                switch (NameR[23]) {
                default: break;
                case 'i':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vcmac_s0_sat_i;	 // "exagon.M2.vcmac.s0.sat.i"
                case 'r':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vcmac_s0_sat_r;	 // "exagon.M2.vcmac.s0.sat.r"
                }
                break;
              case 'p':	 // 4 strings to match.
                if (memcmp(NameR.data()+14, "y.s", 3))
                  break;
                switch (NameR[17]) {
                default: break;
                case '0':	 // 2 strings to match.
                  if (memcmp(NameR.data()+18, ".sat.", 5))
                    break;
                  switch (NameR[23]) {
                  default: break;
                  case 'i':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vcmpy_s0_sat_i;	 // "exagon.M2.vcmpy.s0.sat.i"
                  case 'r':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vcmpy_s0_sat_r;	 // "exagon.M2.vcmpy.s0.sat.r"
                  }
                  break;
                case '1':	 // 2 strings to match.
                  if (memcmp(NameR.data()+18, ".sat.", 5))
                    break;
                  switch (NameR[23]) {
                  default: break;
                  case 'i':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vcmpy_s1_sat_i;	 // "exagon.M2.vcmpy.s1.sat.i"
                  case 'r':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_vcmpy_s1_sat_r;	 // "exagon.M2.vcmpy.s1.sat.r"
                  }
                  break;
                }
                break;
              }
              break;
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "cmpys.acc.s1", 12))
                break;
              return Intrinsic::hexagon_M2_vrcmpys_acc_s1;	 // "exagon.M2.vrcmpys.acc.s1"
            }
            break;
          }
          break;
        case '4':	 // 4 strings to match.
          if (memcmp(NameR.data()+9, ".vrmpy", 6))
            break;
          switch (NameR[15]) {
          default: break;
          case 'e':	 // 2 strings to match.
            if (memcmp(NameR.data()+16, "h.acc.s", 7))
              break;
            switch (NameR[23]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M4_vrmpyeh_acc_s0;	 // "exagon.M4.vrmpyeh.acc.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M4_vrmpyeh_acc_s1;	 // "exagon.M4.vrmpyeh.acc.s1"
            }
            break;
          case 'o':	 // 2 strings to match.
            if (memcmp(NameR.data()+16, "h.acc.s", 7))
              break;
            switch (NameR[23]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M4_vrmpyoh_acc_s0;	 // "exagon.M4.vrmpyoh.acc.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M4_vrmpyoh_acc_s1;	 // "exagon.M4.vrmpyoh.acc.s1"
            }
            break;
          }
          break;
        }
        break;
      case 'S':	 // 4 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+11, "sr.", 3))
            break;
          switch (NameR[14]) {
          default: break;
          case 'i':	 // 1 string to match.
            if (memcmp(NameR.data()+15, ".svw.trun", 9))
              break;
            return Intrinsic::hexagon_S2_asr_i_svw_trun;	 // "exagon.S2.asr.i.svw.trun"
          case 'r':	 // 1 string to match.
            if (memcmp(NameR.data()+15, ".svw.trun", 9))
              break;
            return Intrinsic::hexagon_S2_asr_r_svw_trun;	 // "exagon.S2.asr.r.svw.trun"
          }
          break;
        case 'v':	 // 2 strings to match.
          if (memcmp(NameR.data()+11, "sat", 3))
            break;
          switch (NameR[14]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (memcmp(NameR.data()+15, "ub.nopack", 9))
              break;
            return Intrinsic::hexagon_S2_vsathub_nopack;	 // "exagon.S2.vsathub.nopack"
          case 'w':	 // 1 string to match.
            if (memcmp(NameR.data()+15, "uh.nopack", 9))
              break;
            return Intrinsic::hexagon_S2_vsatwuh_nopack;	 // "exagon.S2.vsatwuh.nopack"
          }
          break;
        }
        break;
      }
      break;
    case 25:	 // 33 strings to match.
      if (memcmp(NameR.data()+0, "exagon.", 7))
        break;
      switch (NameR[7]) {
      default: break;
      case 'A':	 // 12 strings to match.
        if (memcmp(NameR.data()+8, "2.", 2))
          break;
        switch (NameR[10]) {
        default: break;
        case 'a':	 // 6 strings to match.
          if (memcmp(NameR.data()+11, "ddh.", 4))
            break;
          switch (NameR[15]) {
          default: break;
          case 'h':	 // 4 strings to match.
            if (memcmp(NameR.data()+16, "16.sat.", 7))
              break;
            switch (NameR[23]) {
            default: break;
            case 'h':	 // 2 strings to match.
              switch (NameR[24]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_addh_h16_sat_hh;	 // "exagon.A2.addh.h16.sat.hh"
              case 'l':	 // 1 string to match.
                return Intrinsic::hexagon_A2_addh_h16_sat_hl;	 // "exagon.A2.addh.h16.sat.hl"
              }
              break;
            case 'l':	 // 2 strings to match.
              switch (NameR[24]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_addh_h16_sat_lh;	 // "exagon.A2.addh.h16.sat.lh"
              case 'l':	 // 1 string to match.
                return Intrinsic::hexagon_A2_addh_h16_sat_ll;	 // "exagon.A2.addh.h16.sat.ll"
              }
              break;
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(NameR.data()+16, "16.sat.", 7))
              break;
            switch (NameR[23]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (NameR[24] != 'l')
                break;
              return Intrinsic::hexagon_A2_addh_l16_sat_hl;	 // "exagon.A2.addh.l16.sat.hl"
            case 'l':	 // 1 string to match.
              if (NameR[24] != 'l')
                break;
              return Intrinsic::hexagon_A2_addh_l16_sat_ll;	 // "exagon.A2.addh.l16.sat.ll"
            }
            break;
          }
          break;
        case 's':	 // 6 strings to match.
          if (memcmp(NameR.data()+11, "ubh.", 4))
            break;
          switch (NameR[15]) {
          default: break;
          case 'h':	 // 4 strings to match.
            if (memcmp(NameR.data()+16, "16.sat.", 7))
              break;
            switch (NameR[23]) {
            default: break;
            case 'h':	 // 2 strings to match.
              switch (NameR[24]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_subh_h16_sat_hh;	 // "exagon.A2.subh.h16.sat.hh"
              case 'l':	 // 1 string to match.
                return Intrinsic::hexagon_A2_subh_h16_sat_hl;	 // "exagon.A2.subh.h16.sat.hl"
              }
              break;
            case 'l':	 // 2 strings to match.
              switch (NameR[24]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_subh_h16_sat_lh;	 // "exagon.A2.subh.h16.sat.lh"
              case 'l':	 // 1 string to match.
                return Intrinsic::hexagon_A2_subh_h16_sat_ll;	 // "exagon.A2.subh.h16.sat.ll"
              }
              break;
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(NameR.data()+16, "16.sat.", 7))
              break;
            switch (NameR[23]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (NameR[24] != 'l')
                break;
              return Intrinsic::hexagon_A2_subh_l16_sat_hl;	 // "exagon.A2.subh.l16.sat.hl"
            case 'l':	 // 1 string to match.
              if (NameR[24] != 'l')
                break;
              return Intrinsic::hexagon_A2_subh_l16_sat_ll;	 // "exagon.A2.subh.l16.sat.ll"
            }
            break;
          }
          break;
        }
        break;
      case 'C':	 // 1 string to match.
        if (memcmp(NameR.data()+8, "4.fastcorner9.not", 17))
          break;
        return Intrinsic::hexagon_C4_fastcorner9_not;	 // "exagon.C4.fastcorner9.not"
      case 'F':	 // 4 strings to match.
        if (memcmp(NameR.data()+8, "2.conv.", 7))
          break;
        switch (NameR[15]) {
        default: break;
        case 'd':	 // 2 strings to match.
          if (memcmp(NameR.data()+16, "f2u", 3))
            break;
          switch (NameR[19]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+20, ".chop", 5))
              break;
            return Intrinsic::hexagon_F2_conv_df2ud_chop;	 // "exagon.F2.conv.df2ud.chop"
          case 'w':	 // 1 string to match.
            if (memcmp(NameR.data()+20, ".chop", 5))
              break;
            return Intrinsic::hexagon_F2_conv_df2uw_chop;	 // "exagon.F2.conv.df2uw.chop"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+16, "f2u", 3))
            break;
          switch (NameR[19]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+20, ".chop", 5))
              break;
            return Intrinsic::hexagon_F2_conv_sf2ud_chop;	 // "exagon.F2.conv.sf2ud.chop"
          case 'w':	 // 1 string to match.
            if (memcmp(NameR.data()+20, ".chop", 5))
              break;
            return Intrinsic::hexagon_F2_conv_sf2uw_chop;	 // "exagon.F2.conv.sf2uw.chop"
          }
          break;
        }
        break;
      case 'M':	 // 16 strings to match.
        if (memcmp(NameR.data()+8, "2.mpyud.", 8))
          break;
        switch (NameR[16]) {
        default: break;
        case 'a':	 // 8 strings to match.
          if (memcmp(NameR.data()+17, "cc.", 3))
            break;
          switch (NameR[20]) {
          default: break;
          case 'h':	 // 4 strings to match.
            switch (NameR[21]) {
            default: break;
            case 'h':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, ".s", 2))
                break;
              switch (NameR[24]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_acc_hh_s0;	 // "exagon.M2.mpyud.acc.hh.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_acc_hh_s1;	 // "exagon.M2.mpyud.acc.hh.s1"
              }
              break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, ".s", 2))
                break;
              switch (NameR[24]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_acc_hl_s0;	 // "exagon.M2.mpyud.acc.hl.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_acc_hl_s1;	 // "exagon.M2.mpyud.acc.hl.s1"
              }
              break;
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (NameR[21]) {
            default: break;
            case 'h':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, ".s", 2))
                break;
              switch (NameR[24]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_acc_lh_s0;	 // "exagon.M2.mpyud.acc.lh.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_acc_lh_s1;	 // "exagon.M2.mpyud.acc.lh.s1"
              }
              break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, ".s", 2))
                break;
              switch (NameR[24]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_acc_ll_s0;	 // "exagon.M2.mpyud.acc.ll.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_acc_ll_s1;	 // "exagon.M2.mpyud.acc.ll.s1"
              }
              break;
            }
            break;
          }
          break;
        case 'n':	 // 8 strings to match.
          if (memcmp(NameR.data()+17, "ac.", 3))
            break;
          switch (NameR[20]) {
          default: break;
          case 'h':	 // 4 strings to match.
            switch (NameR[21]) {
            default: break;
            case 'h':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, ".s", 2))
                break;
              switch (NameR[24]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_nac_hh_s0;	 // "exagon.M2.mpyud.nac.hh.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_nac_hh_s1;	 // "exagon.M2.mpyud.nac.hh.s1"
              }
              break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, ".s", 2))
                break;
              switch (NameR[24]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_nac_hl_s0;	 // "exagon.M2.mpyud.nac.hl.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_nac_hl_s1;	 // "exagon.M2.mpyud.nac.hl.s1"
              }
              break;
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (NameR[21]) {
            default: break;
            case 'h':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, ".s", 2))
                break;
              switch (NameR[24]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_nac_lh_s0;	 // "exagon.M2.mpyud.nac.lh.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_nac_lh_s1;	 // "exagon.M2.mpyud.nac.lh.s1"
              }
              break;
            case 'l':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, ".s", 2))
                break;
              switch (NameR[24]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_nac_ll_s0;	 // "exagon.M2.mpyud.nac.ll.s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_nac_ll_s1;	 // "exagon.M2.mpyud.nac.ll.s1"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 27:	 // 24 strings to match.
      if (memcmp(NameR.data()+0, "exagon.M2.mpy.", 14))
        break;
      switch (NameR[14]) {
      default: break;
      case 'a':	 // 8 strings to match.
        if (memcmp(NameR.data()+15, "cc.sat.", 7))
          break;
        switch (NameR[22]) {
        default: break;
        case 'h':	 // 4 strings to match.
          switch (NameR[23]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s0;	 // "exagon.M2.mpy.acc.sat.hh.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s1;	 // "exagon.M2.mpy.acc.sat.hh.s1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s0;	 // "exagon.M2.mpy.acc.sat.hl.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s1;	 // "exagon.M2.mpy.acc.sat.hl.s1"
            }
            break;
          }
          break;
        case 'l':	 // 4 strings to match.
          switch (NameR[23]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s0;	 // "exagon.M2.mpy.acc.sat.lh.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s1;	 // "exagon.M2.mpy.acc.sat.lh.s1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s0;	 // "exagon.M2.mpy.acc.sat.ll.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s1;	 // "exagon.M2.mpy.acc.sat.ll.s1"
            }
            break;
          }
          break;
        }
        break;
      case 'n':	 // 8 strings to match.
        if (memcmp(NameR.data()+15, "ac.sat.", 7))
          break;
        switch (NameR[22]) {
        default: break;
        case 'h':	 // 4 strings to match.
          switch (NameR[23]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s0;	 // "exagon.M2.mpy.nac.sat.hh.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s1;	 // "exagon.M2.mpy.nac.sat.hh.s1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s0;	 // "exagon.M2.mpy.nac.sat.hl.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s1;	 // "exagon.M2.mpy.nac.sat.hl.s1"
            }
            break;
          }
          break;
        case 'l':	 // 4 strings to match.
          switch (NameR[23]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s0;	 // "exagon.M2.mpy.nac.sat.lh.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s1;	 // "exagon.M2.mpy.nac.sat.lh.s1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s0;	 // "exagon.M2.mpy.nac.sat.ll.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s1;	 // "exagon.M2.mpy.nac.sat.ll.s1"
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 8 strings to match.
        if (memcmp(NameR.data()+15, "at.rnd.", 7))
          break;
        switch (NameR[22]) {
        default: break;
        case 'h':	 // 4 strings to match.
          switch (NameR[23]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s0;	 // "exagon.M2.mpy.sat.rnd.hh.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s1;	 // "exagon.M2.mpy.sat.rnd.hh.s1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s0;	 // "exagon.M2.mpy.sat.rnd.hl.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s1;	 // "exagon.M2.mpy.sat.rnd.hl.s1"
            }
            break;
          }
          break;
        case 'l':	 // 4 strings to match.
          switch (NameR[23]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s0;	 // "exagon.M2.mpy.sat.rnd.lh.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s1;	 // "exagon.M2.mpy.sat.rnd.lh.s1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(NameR.data()+24, ".s", 2))
              break;
            switch (NameR[26]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s0;	 // "exagon.M2.mpy.sat.rnd.ll.s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s1;	 // "exagon.M2.mpy.sat.rnd.ll.s1"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 29:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "exagon.S5.vasrhrnd.goodsyntax", 29))
        break;
      return Intrinsic::hexagon_S5_vasrhrnd_goodsyntax;	 // "exagon.S5.vasrhrnd.goodsyntax"
    case 30:	 // 4 strings to match.
      if (memcmp(NameR.data()+0, "exagon.S2.tableidx", 18))
        break;
      switch (NameR[18]) {
      default: break;
      case 'b':	 // 1 string to match.
        if (memcmp(NameR.data()+19, ".goodsyntax", 11))
          break;
        return Intrinsic::hexagon_S2_tableidxb_goodsyntax;	 // "exagon.S2.tableidxb.goodsyntax"
      case 'd':	 // 1 string to match.
        if (memcmp(NameR.data()+19, ".goodsyntax", 11))
          break;
        return Intrinsic::hexagon_S2_tableidxd_goodsyntax;	 // "exagon.S2.tableidxd.goodsyntax"
      case 'h':	 // 1 string to match.
        if (memcmp(NameR.data()+19, ".goodsyntax", 11))
          break;
        return Intrinsic::hexagon_S2_tableidxh_goodsyntax;	 // "exagon.S2.tableidxh.goodsyntax"
      case 'w':	 // 1 string to match.
        if (memcmp(NameR.data()+19, ".goodsyntax", 11))
          break;
        return Intrinsic::hexagon_S2_tableidxw_goodsyntax;	 // "exagon.S2.tableidxw.goodsyntax"
      }
      break;
    case 32:	 // 2 strings to match.
      if (memcmp(NameR.data()+0, "exagon.S2.asr.i.", 16))
        break;
      switch (NameR[16]) {
      default: break;
      case 'p':	 // 1 string to match.
        if (memcmp(NameR.data()+17, ".rnd.goodsyntax", 15))
          break;
        return Intrinsic::hexagon_S2_asr_i_p_rnd_goodsyntax;	 // "exagon.S2.asr.i.p.rnd.goodsyntax"
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+17, ".rnd.goodsyntax", 15))
          break;
        return Intrinsic::hexagon_S2_asr_i_r_rnd_goodsyntax;	 // "exagon.S2.asr.i.r.rnd.goodsyntax"
      }
      break;
    case 35:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "exagon.S5.asrhub.rnd.sat.goodsyntax", 35))
        break;
      return Intrinsic::hexagon_S5_asrhub_rnd_sat_goodsyntax;	 // "exagon.S5.asrhub.rnd.sat.goodsyntax"
    }
    break;  // end of 'h' case.
  case 'i':
    switch (NameR.size()) {
    default: break;
    case 12:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "nvariant.end", 12))
        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 (memcmp(NameR.data()+2, "t.trampoline", 12))
          break;
        return Intrinsic::init_trampoline;	 // "nit.trampoline"
      case 'v':	 // 1 string to match.
        if (memcmp(NameR.data()+2, "ariant.start", 12))
          break;
        return Intrinsic::invariant_start;	 // "nvariant.start"
      }
      break;
    }
    break;  // end of 'i' case.
  case 'l':
    if (NameR.startswith("og2.")) return Intrinsic::log2;
    if (NameR.startswith("og10.")) return Intrinsic::log10;
    if (NameR.startswith("og.")) return Intrinsic::log;
    switch (NameR.size()) {
    default: break;
    case 6:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "ongjmp", 6))
        break;
      return Intrinsic::longjmp;	 // "ongjmp"
    case 11:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "ifetime.end", 11))
        break;
      return Intrinsic::lifetime_end;	 // "ifetime.end"
    case 13:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "ifetime.start", 13))
        break;
      return Intrinsic::lifetime_start;	 // "ifetime.start"
    }
    break;  // end of 'l' case.
  case 'm':
    if (NameR.startswith("emset.")) return Intrinsic::memset;
    if (NameR.startswith("emmove.")) return Intrinsic::memmove;
    if (NameR.startswith("emcpy.")) return Intrinsic::memcpy;
    switch (NameR.size()) {
    default: break;
    case 7:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "ips.l", 5))
        break;
      switch (NameR[5]) {
      default: break;
      case 'h':	 // 1 string to match.
        if (NameR[6] != 'x')
          break;
        return Intrinsic::mips_lhx;	 // "ips.lhx"
      case 's':	 // 1 string to match.
        if (NameR[6] != 'a')
          break;
        return Intrinsic::mips_lsa;	 // "ips.lsa"
      case 'w':	 // 1 string to match.
        if (NameR[6] != 'x')
          break;
        return Intrinsic::mips_lwx;	 // "ips.lwx"
      }
      break;
    case 8:	 // 21 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'b':	 // 5 strings to match.
        if (memcmp(NameR.data()+5, "z.", 2))
          break;
        switch (NameR[7]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_bz_b;	 // "ips.bz.b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_bz_d;	 // "ips.bz.d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_bz_h;	 // "ips.bz.h"
        case 'v':	 // 1 string to match.
          return Intrinsic::mips_bz_v;	 // "ips.bz.v"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_bz_w;	 // "ips.bz.w"
        }
        break;
      case 'd':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "lsa", 3))
          break;
        return Intrinsic::mips_dlsa;	 // "ips.dlsa"
      case 'e':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "xtp", 3))
          break;
        return Intrinsic::mips_extp;	 // "ips.extp"
      case 'i':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "nsv", 3))
          break;
        return Intrinsic::mips_insv;	 // "ips.insv"
      case 'l':	 // 5 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "ux", 2))
            break;
          return Intrinsic::mips_lbux;	 // "ips.lbux"
        case 'd':	 // 4 strings to match.
          if (NameR[6] != '.')
            break;
          switch (NameR[7]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_ld_b;	 // "ips.ld.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ld_d;	 // "ips.ld.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_ld_h;	 // "ips.ld.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ld_w;	 // "ips.ld.w"
          }
          break;
        }
        break;
      case 'm':	 // 3 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "dd", 2))
            break;
          return Intrinsic::mips_madd;	 // "ips.madd"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "ub", 2))
            break;
          return Intrinsic::mips_msub;	 // "ips.msub"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "lt", 2))
            break;
          return Intrinsic::mips_mult;	 // "ips.mult"
        }
        break;
      case 'o':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "r.v", 3))
          break;
        return Intrinsic::mips_or_v;	 // "ips.or.v"
      case 's':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "t.", 2))
          break;
        switch (NameR[7]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_st_b;	 // "ips.st.b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_st_d;	 // "ips.st.d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_st_h;	 // "ips.st.h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_st_w;	 // "ips.st.w"
        }
        break;
      }
      break;
    case 9:	 // 47 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'a':	 // 3 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'd':	 // 2 strings to match.
          if (NameR[6] != 'd')
            break;
          switch (NameR[7]) {
          default: break;
          case 's':	 // 1 string to match.
            if (NameR[8] != 'c')
              break;
            return Intrinsic::mips_addsc;	 // "ips.addsc"
          case 'w':	 // 1 string to match.
            if (NameR[8] != 'c')
              break;
            return Intrinsic::mips_addwc;	 // "ips.addwc"
          }
          break;
        case 'n':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "d.v", 3))
            break;
          return Intrinsic::mips_and_v;	 // "ips.and.v"
        }
        break;
      case 'b':	 // 6 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "z.v", 3))
            break;
          return Intrinsic::mips_bmz_v;	 // "ips.bmz.v"
        case 'n':	 // 5 strings to match.
          if (memcmp(NameR.data()+6, "z.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_bnz_b;	 // "ips.bnz.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_bnz_d;	 // "ips.bnz.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_bnz_h;	 // "ips.bnz.h"
          case 'v':	 // 1 string to match.
            return Intrinsic::mips_bnz_v;	 // "ips.bnz.v"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_bnz_w;	 // "ips.bnz.w"
          }
          break;
        }
        break;
      case 'c':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "eq.", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_ceq_b;	 // "ips.ceq.b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_ceq_d;	 // "ips.ceq.d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_ceq_h;	 // "ips.ceq.h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_ceq_w;	 // "ips.ceq.w"
        }
        break;
      case 'f':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "tq.", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_ftq_h;	 // "ips.ftq.h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_ftq_w;	 // "ips.ftq.w"
        }
        break;
      case 'l':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "di.", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_ldi_b;	 // "ips.ldi.b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_ldi_d;	 // "ips.ldi.d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_ldi_h;	 // "ips.ldi.h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_ldi_w;	 // "ips.ldi.w"
        }
        break;
      case 'm':	 // 3 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "ddu", 3))
            break;
          return Intrinsic::mips_maddu;	 // "ips.maddu"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "ubu", 3))
            break;
          return Intrinsic::mips_msubu;	 // "ips.msubu"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "ltu", 3))
            break;
          return Intrinsic::mips_multu;	 // "ips.multu"
        }
        break;
      case 'n':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "or.v", 4))
          break;
        return Intrinsic::mips_nor_v;	 // "ips.nor.v"
      case 'o':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "ri.b", 4))
          break;
        return Intrinsic::mips_ori_b;	 // "ips.ori.b"
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "ddsp", 4))
          break;
        return Intrinsic::mips_rddsp;	 // "ips.rddsp"
      case 's':	 // 20 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'h':	 // 4 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'f':	 // 3 strings to match.
            if (NameR[7] != '.')
              break;
            switch (NameR[8]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_shf_b;	 // "ips.shf.b"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_shf_h;	 // "ips.shf.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_shf_w;	 // "ips.shf.w"
            }
            break;
          case 'i':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "lo", 2))
              break;
            return Intrinsic::mips_shilo;	 // "ips.shilo"
          }
          break;
        case 'l':	 // 8 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'd':	 // 4 strings to match.
            if (NameR[7] != '.')
              break;
            switch (NameR[8]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sld_b;	 // "ips.sld.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sld_d;	 // "ips.sld.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sld_h;	 // "ips.sld.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sld_w;	 // "ips.sld.w"
            }
            break;
          case 'l':	 // 4 strings to match.
            if (NameR[7] != '.')
              break;
            switch (NameR[8]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sll_b;	 // "ips.sll.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sll_d;	 // "ips.sll.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sll_h;	 // "ips.sll.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sll_w;	 // "ips.sll.w"
            }
            break;
          }
          break;
        case 'r':	 // 8 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 4 strings to match.
            if (NameR[7] != '.')
              break;
            switch (NameR[8]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sra_b;	 // "ips.sra.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sra_d;	 // "ips.sra.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sra_h;	 // "ips.sra.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sra_w;	 // "ips.sra.w"
            }
            break;
          case 'l':	 // 4 strings to match.
            if (NameR[7] != '.')
              break;
            switch (NameR[8]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_srl_b;	 // "ips.srl.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_srl_d;	 // "ips.srl.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_srl_h;	 // "ips.srl.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_srl_w;	 // "ips.srl.w"
            }
            break;
          }
          break;
        }
        break;
      case 'w':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "rdsp", 4))
          break;
        return Intrinsic::mips_wrdsp;	 // "ips.wrdsp"
      case 'x':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "or.v", 4))
          break;
        return Intrinsic::mips_xor_v;	 // "ips.xor.v"
      }
      break;
    case 10:	 // 143 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'a':	 // 6 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'd':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "dv.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_addv_b;	 // "ips.addv.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_addv_d;	 // "ips.addv.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_addv_h;	 // "ips.addv.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_addv_w;	 // "ips.addv.w"
          }
          break;
        case 'n':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "di.b", 4))
            break;
          return Intrinsic::mips_andi_b;	 // "ips.andi.b"
        case 'p':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "pend", 4))
            break;
          return Intrinsic::mips_append;	 // "ips.append"
        }
        break;
      case 'b':	 // 17 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "lign", 4))
            break;
          return Intrinsic::mips_balign;	 // "ips.balign"
        case 'c':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "lr.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_bclr_b;	 // "ips.bclr.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_bclr_d;	 // "ips.bclr.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_bclr_h;	 // "ips.bclr.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_bclr_w;	 // "ips.bclr.w"
          }
          break;
        case 'i':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "trev", 4))
            break;
          return Intrinsic::mips_bitrev;	 // "ips.bitrev"
        case 'm':	 // 2 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "z.v", 3))
              break;
            return Intrinsic::mips_bmnz_v;	 // "ips.bmnz.v"
          case 'z':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "i.b", 3))
              break;
            return Intrinsic::mips_bmzi_b;	 // "ips.bmzi.b"
          }
          break;
        case 'n':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "eg.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_bneg_b;	 // "ips.bneg.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_bneg_d;	 // "ips.bneg.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_bneg_h;	 // "ips.bneg.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_bneg_w;	 // "ips.bneg.w"
          }
          break;
        case 's':	 // 5 strings to match.
          if (NameR[6] != 'e')
            break;
          switch (NameR[7]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+8, ".v", 2))
              break;
            return Intrinsic::mips_bsel_v;	 // "ips.bsel.v"
          case 't':	 // 4 strings to match.
            if (NameR[8] != '.')
              break;
            switch (NameR[9]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_bset_b;	 // "ips.bset.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_bset_d;	 // "ips.bset.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_bset_h;	 // "ips.bset.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_bset_w;	 // "ips.bset.w"
            }
            break;
          }
          break;
        }
        break;
      case 'c':	 // 6 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'e':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "qi.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_ceqi_b;	 // "ips.ceqi.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ceqi_d;	 // "ips.ceqi.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_ceqi_h;	 // "ips.ceqi.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ceqi_w;	 // "ips.ceqi.w"
          }
          break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "cmsa", 4))
            break;
          return Intrinsic::mips_cfcmsa;	 // "ips.cfcmsa"
        case 't':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "cmsa", 4))
            break;
          return Intrinsic::mips_ctcmsa;	 // "ips.ctcmsa"
        }
        break;
      case 'e':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "xt", 2))
          break;
        switch (NameR[7]) {
        default: break;
        case 'p':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "dp", 2))
            break;
          return Intrinsic::mips_extpdp;	 // "ips.extpdp"
        case 'r':	 // 1 string to match.
          if (memcmp(NameR.data()+8, ".w", 2))
            break;
          return Intrinsic::mips_extr_w;	 // "ips.extr.w"
        }
        break;
      case 'f':	 // 50 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "dd.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_fadd_d;	 // "ips.fadd.d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_fadd_w;	 // "ips.fadd.w"
          }
          break;
        case 'c':	 // 14 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "f.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcaf_d;	 // "ips.fcaf.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcaf_w;	 // "ips.fcaf.w"
            }
            break;
          case 'e':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "q.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fceq_d;	 // "ips.fceq.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fceq_w;	 // "ips.fceq.w"
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (NameR[7]) {
            default: break;
            case 'e':	 // 2 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fcle_d;	 // "ips.fcle.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fcle_w;	 // "ips.fcle.w"
              }
              break;
            case 't':	 // 2 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fclt_d;	 // "ips.fclt.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fclt_w;	 // "ips.fclt.w"
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "e.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcne_d;	 // "ips.fcne.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcne_w;	 // "ips.fcne.w"
            }
            break;
          case 'o':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "r.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcor_d;	 // "ips.fcor.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcor_w;	 // "ips.fcor.w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "n.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcun_d;	 // "ips.fcun.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcun_w;	 // "ips.fcun.w"
            }
            break;
          }
          break;
        case 'd':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "iv.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_fdiv_d;	 // "ips.fdiv.d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_fdiv_w;	 // "ips.fdiv.w"
          }
          break;
        case 'f':	 // 4 strings to match.
          if (NameR[6] != 'q')
            break;
          switch (NameR[7]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (NameR[8] != '.')
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ffql_d;	 // "ips.ffql.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ffql_w;	 // "ips.ffql.w"
            }
            break;
          case 'r':	 // 2 strings to match.
            if (NameR[8] != '.')
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ffqr_d;	 // "ips.ffqr.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ffqr_w;	 // "ips.ffqr.w"
            }
            break;
          }
          break;
        case 'i':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "ll.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_fill_b;	 // "ips.fill.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_fill_d;	 // "ips.fill.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_fill_h;	 // "ips.fill.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_fill_w;	 // "ips.fill.w"
          }
          break;
        case 'm':	 // 6 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "x.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmax_d;	 // "ips.fmax.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmax_w;	 // "ips.fmax.w"
            }
            break;
          case 'i':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "n.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmin_d;	 // "ips.fmin.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmin_w;	 // "ips.fmin.w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "l.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmul_d;	 // "ips.fmul.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmul_w;	 // "ips.fmul.w"
            }
            break;
          }
          break;
        case 'r':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "cp.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_frcp_d;	 // "ips.frcp.d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_frcp_w;	 // "ips.frcp.w"
          }
          break;
        case 's':	 // 16 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "f.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fsaf_d;	 // "ips.fsaf.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fsaf_w;	 // "ips.fsaf.w"
            }
            break;
          case 'e':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "q.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fseq_d;	 // "ips.fseq.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fseq_w;	 // "ips.fseq.w"
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (NameR[7]) {
            default: break;
            case 'e':	 // 2 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fsle_d;	 // "ips.fsle.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fsle_w;	 // "ips.fsle.w"
              }
              break;
            case 't':	 // 2 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fslt_d;	 // "ips.fslt.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fslt_w;	 // "ips.fslt.w"
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "e.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fsne_d;	 // "ips.fsne.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fsne_w;	 // "ips.fsne.w"
            }
            break;
          case 'o':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "r.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fsor_d;	 // "ips.fsor.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fsor_w;	 // "ips.fsor.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            switch (NameR[7]) {
            default: break;
            case 'b':	 // 2 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fsub_d;	 // "ips.fsub.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fsub_w;	 // "ips.fsub.w"
              }
              break;
            case 'n':	 // 2 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fsun_d;	 // "ips.fsun.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fsun_w;	 // "ips.fsun.w"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'i':	 // 8 strings to match.
        if (memcmp(NameR.data()+5, "lv", 2))
          break;
        switch (NameR[7]) {
        default: break;
        case 'l':	 // 4 strings to match.
          if (NameR[8] != '.')
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_ilvl_b;	 // "ips.ilvl.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ilvl_d;	 // "ips.ilvl.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_ilvl_h;	 // "ips.ilvl.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ilvl_w;	 // "ips.ilvl.w"
          }
          break;
        case 'r':	 // 4 strings to match.
          if (NameR[8] != '.')
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_ilvr_b;	 // "ips.ilvr.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ilvr_d;	 // "ips.ilvr.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_ilvr_h;	 // "ips.ilvr.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ilvr_w;	 // "ips.ilvr.w"
          }
          break;
        }
        break;
      case 'm':	 // 8 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'o':	 // 2 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "sub", 3))
              break;
            return Intrinsic::mips_modsub;	 // "ips.modsub"
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "e.v", 3))
              break;
            return Intrinsic::mips_move_v;	 // "ips.move.v"
          }
          break;
        case 't':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "hlip", 4))
            break;
          return Intrinsic::mips_mthlip;	 // "ips.mthlip"
        case 'u':	 // 5 strings to match.
          if (NameR[6] != 'l')
            break;
          switch (NameR[7]) {
          default: break;
          case '.':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "ph", 2))
              break;
            return Intrinsic::mips_mul_ph;	 // "ips.mul.ph"
          case 'v':	 // 4 strings to match.
            if (NameR[8] != '.')
              break;
            switch (NameR[9]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_mulv_b;	 // "ips.mulv.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_mulv_d;	 // "ips.mulv.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_mulv_h;	 // "ips.mulv.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_mulv_w;	 // "ips.mulv.w"
            }
            break;
          }
          break;
        }
        break;
      case 'n':	 // 9 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'l':	 // 8 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'o':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "c.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_nloc_b;	 // "ips.nloc.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_nloc_d;	 // "ips.nloc.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_nloc_h;	 // "ips.nloc.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_nloc_w;	 // "ips.nloc.w"
            }
            break;
          case 'z':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "c.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_nlzc_b;	 // "ips.nlzc.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_nlzc_d;	 // "ips.nlzc.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_nlzc_h;	 // "ips.nlzc.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_nlzc_w;	 // "ips.nlzc.w"
            }
            break;
          }
          break;
        case 'o':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "ri.b", 4))
            break;
          return Intrinsic::mips_nori_b;	 // "ips.nori.b"
        }
        break;
      case 'p':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "cnt.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_pcnt_b;	 // "ips.pcnt.b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_pcnt_d;	 // "ips.pcnt.d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_pcnt_h;	 // "ips.pcnt.h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_pcnt_w;	 // "ips.pcnt.w"
        }
        break;
      case 's':	 // 28 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'l':	 // 8 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'd':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "i.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sldi_b;	 // "ips.sldi.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sldi_d;	 // "ips.sldi.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sldi_h;	 // "ips.sldi.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sldi_w;	 // "ips.sldi.w"
            }
            break;
          case 'l':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "i.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_slli_b;	 // "ips.slli.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_slli_d;	 // "ips.slli.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_slli_h;	 // "ips.slli.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_slli_w;	 // "ips.slli.w"
            }
            break;
          }
          break;
        case 'r':	 // 16 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 8 strings to match.
            switch (NameR[7]) {
            default: break;
            case 'i':	 // 4 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_srai_b;	 // "ips.srai.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_srai_d;	 // "ips.srai.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_srai_h;	 // "ips.srai.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_srai_w;	 // "ips.srai.w"
              }
              break;
            case 'r':	 // 4 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_srar_b;	 // "ips.srar.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_srar_d;	 // "ips.srar.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_srar_h;	 // "ips.srar.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_srar_w;	 // "ips.srar.w"
              }
              break;
            }
            break;
          case 'l':	 // 8 strings to match.
            switch (NameR[7]) {
            default: break;
            case 'i':	 // 4 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_srli_b;	 // "ips.srli.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_srli_d;	 // "ips.srli.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_srli_h;	 // "ips.srli.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_srli_w;	 // "ips.srli.w"
              }
              break;
            case 'r':	 // 4 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_srlr_b;	 // "ips.srlr.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_srlr_d;	 // "ips.srlr.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_srlr_h;	 // "ips.srlr.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_srlr_w;	 // "ips.srlr.w"
              }
              break;
            }
            break;
          }
          break;
        case 'u':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "bv.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_subv_b;	 // "ips.subv.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_subv_d;	 // "ips.subv.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_subv_h;	 // "ips.subv.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_subv_w;	 // "ips.subv.w"
          }
          break;
        }
        break;
      case 'v':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "shf.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_vshf_b;	 // "ips.vshf.b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_vshf_d;	 // "ips.vshf.d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_vshf_h;	 // "ips.vshf.h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_vshf_w;	 // "ips.vshf.w"
        }
        break;
      case 'x':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "ori.b", 5))
          break;
        return Intrinsic::mips_xori_b;	 // "ips.xori.b"
      }
      break;
    case 11:	 // 197 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'a':	 // 20 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'd':	 // 12 strings to match.
          if (NameR[6] != 'd')
            break;
          switch (NameR[7]) {
          default: break;
          case '.':	 // 4 strings to match.
            if (memcmp(NameR.data()+8, "a.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_add_a_b;	 // "ips.add.a.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_add_a_d;	 // "ips.add.a.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_add_a_h;	 // "ips.add.a.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_add_a_w;	 // "ips.add.a.w"
            }
            break;
          case 'q':	 // 2 strings to match.
            switch (NameR[8]) {
            default: break;
            case '.':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "ph", 2))
                break;
              return Intrinsic::mips_addq_ph;	 // "ips.addq.ph"
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+9, ".w", 2))
                break;
              return Intrinsic::mips_addqh_w;	 // "ips.addqh.w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (NameR[8] != '.')
              break;
            switch (NameR[9]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (NameR[10] != 'h')
                break;
              return Intrinsic::mips_addu_ph;	 // "ips.addu.ph"
            case 'q':	 // 1 string to match.
              if (NameR[10] != 'b')
                break;
              return Intrinsic::mips_addu_qb;	 // "ips.addu.qb"
            }
            break;
          case 'v':	 // 4 strings to match.
            if (memcmp(NameR.data()+8, "i.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_addvi_b;	 // "ips.addvi.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_addvi_d;	 // "ips.addvi.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_addvi_h;	 // "ips.addvi.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_addvi_w;	 // "ips.addvi.w"
            }
            break;
          }
          break;
        case 'v':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "e.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_ave_s_b;	 // "ips.ave.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ave_s_d;	 // "ips.ave.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_ave_s_h;	 // "ips.ave.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ave_s_w;	 // "ips.ave.s.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_ave_u_b;	 // "ips.ave.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ave_u_d;	 // "ips.ave.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_ave_u_h;	 // "ips.ave.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ave_u_w;	 // "ips.ave.u.w"
            }
            break;
          }
          break;
        }
        break;
      case 'b':	 // 22 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'c':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "lri.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_bclri_b;	 // "ips.bclri.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_bclri_d;	 // "ips.bclri.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_bclri_h;	 // "ips.bclri.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_bclri_w;	 // "ips.bclri.w"
          }
          break;
        case 'i':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "ns", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 'l':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_binsl_b;	 // "ips.binsl.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_binsl_d;	 // "ips.binsl.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_binsl_h;	 // "ips.binsl.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_binsl_w;	 // "ips.binsl.w"
            }
            break;
          case 'r':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_binsr_b;	 // "ips.binsr.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_binsr_d;	 // "ips.binsr.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_binsr_h;	 // "ips.binsr.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_binsr_w;	 // "ips.binsr.w"
            }
            break;
          }
          break;
        case 'm':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "nzi.b", 5))
            break;
          return Intrinsic::mips_bmnzi_b;	 // "ips.bmnzi.b"
        case 'n':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "egi.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_bnegi_b;	 // "ips.bnegi.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_bnegi_d;	 // "ips.bnegi.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_bnegi_h;	 // "ips.bnegi.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_bnegi_w;	 // "ips.bnegi.w"
          }
          break;
        case 's':	 // 5 strings to match.
          if (NameR[6] != 'e')
            break;
          switch (NameR[7]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "i.b", 3))
              break;
            return Intrinsic::mips_bseli_b;	 // "ips.bseli.b"
          case 't':	 // 4 strings to match.
            if (memcmp(NameR.data()+8, "i.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_bseti_b;	 // "ips.bseti.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_bseti_d;	 // "ips.bseti.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_bseti_h;	 // "ips.bseti.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_bseti_w;	 // "ips.bseti.w"
            }
            break;
          }
          break;
        }
        break;
      case 'c':	 // 16 strings to match.
        if (NameR[5] != 'l')
          break;
        switch (NameR[6]) {
        default: break;
        case 'e':	 // 8 strings to match.
          if (NameR[7] != '.')
            break;
          switch (NameR[8]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_cle_s_b;	 // "ips.cle.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_cle_s_d;	 // "ips.cle.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_cle_s_h;	 // "ips.cle.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_cle_s_w;	 // "ips.cle.s.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_cle_u_b;	 // "ips.cle.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_cle_u_d;	 // "ips.cle.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_cle_u_h;	 // "ips.cle.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_cle_u_w;	 // "ips.cle.u.w"
            }
            break;
          }
          break;
        case 't':	 // 8 strings to match.
          if (NameR[7] != '.')
            break;
          switch (NameR[8]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_clt_s_b;	 // "ips.clt.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_clt_s_d;	 // "ips.clt.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_clt_s_h;	 // "ips.clt.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_clt_s_w;	 // "ips.clt.s.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_clt_u_b;	 // "ips.clt.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_clt_u_d;	 // "ips.clt.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_clt_u_h;	 // "ips.clt.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_clt_u_w;	 // "ips.clt.u.w"
            }
            break;
          }
          break;
        }
        break;
      case 'd':	 // 8 strings to match.
        if (memcmp(NameR.data()+5, "iv.", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 's':	 // 4 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_div_s_b;	 // "ips.div.s.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_div_s_d;	 // "ips.div.s.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_div_s_h;	 // "ips.div.s.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_div_s_w;	 // "ips.div.s.w"
          }
          break;
        case 'u':	 // 4 strings to match.
          if (NameR[9] != '.')
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_div_u_b;	 // "ips.div.u.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_div_u_d;	 // "ips.div.u.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_div_u_h;	 // "ips.div.u.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_div_u_w;	 // "ips.div.u.w"
          }
          break;
        }
        break;
      case 'f':	 // 30 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'c':	 // 8 strings to match.
          if (NameR[6] != 'u')
            break;
          switch (NameR[7]) {
          default: break;
          case 'e':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "q.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcueq_d;	 // "ips.fcueq.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcueq_w;	 // "ips.fcueq.w"
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (NameR[8]) {
            default: break;
            case 'e':	 // 2 strings to match.
              if (NameR[9] != '.')
                break;
              switch (NameR[10]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fcule_d;	 // "ips.fcule.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fcule_w;	 // "ips.fcule.w"
              }
              break;
            case 't':	 // 2 strings to match.
              if (NameR[9] != '.')
                break;
              switch (NameR[10]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fcult_d;	 // "ips.fcult.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fcult_w;	 // "ips.fcult.w"
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "e.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcune_d;	 // "ips.fcune.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcune_w;	 // "ips.fcune.w"
            }
            break;
          }
          break;
        case 'e':	 // 4 strings to match.
          if (NameR[6] != 'x')
            break;
          switch (NameR[7]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "o.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_fexdo_h;	 // "ips.fexdo.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fexdo_w;	 // "ips.fexdo.w"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "2.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fexp2_d;	 // "ips.fexp2.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fexp2_w;	 // "ips.fexp2.w"
            }
            break;
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "og2.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_flog2_d;	 // "ips.flog2.d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_flog2_w;	 // "ips.flog2.w"
          }
          break;
        case 'm':	 // 4 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "dd.", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmadd_d;	 // "ips.fmadd.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmadd_w;	 // "ips.fmadd.w"
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "ub.", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmsub_d;	 // "ips.fmsub.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmsub_w;	 // "ips.fmsub.w"
            }
            break;
          }
          break;
        case 'r':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "int.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_frint_d;	 // "ips.frint.d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_frint_w;	 // "ips.frint.w"
          }
          break;
        case 's':	 // 10 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'q':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "rt.", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fsqrt_d;	 // "ips.fsqrt.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fsqrt_w;	 // "ips.fsqrt.w"
            }
            break;
          case 'u':	 // 8 strings to match.
            switch (NameR[7]) {
            default: break;
            case 'e':	 // 2 strings to match.
              if (memcmp(NameR.data()+8, "q.", 2))
                break;
              switch (NameR[10]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fsueq_d;	 // "ips.fsueq.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fsueq_w;	 // "ips.fsueq.w"
              }
              break;
            case 'l':	 // 4 strings to match.
              switch (NameR[8]) {
              default: break;
              case 'e':	 // 2 strings to match.
                if (NameR[9] != '.')
                  break;
                switch (NameR[10]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::mips_fsule_d;	 // "ips.fsule.d"
                case 'w':	 // 1 string to match.
                  return Intrinsic::mips_fsule_w;	 // "ips.fsule.w"
                }
                break;
              case 't':	 // 2 strings to match.
                if (NameR[9] != '.')
                  break;
                switch (NameR[10]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::mips_fsult_d;	 // "ips.fsult.d"
                case 'w':	 // 1 string to match.
                  return Intrinsic::mips_fsult_w;	 // "ips.fsult.w"
                }
                break;
              }
              break;
            case 'n':	 // 2 strings to match.
              if (memcmp(NameR.data()+8, "e.", 2))
                break;
              switch (NameR[10]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fsune_d;	 // "ips.fsune.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fsune_w;	 // "ips.fsune.w"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'i':	 // 12 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'l':	 // 8 strings to match.
          if (NameR[6] != 'v')
            break;
          switch (NameR[7]) {
          default: break;
          case 'e':	 // 4 strings to match.
            if (memcmp(NameR.data()+8, "v.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_ilvev_b;	 // "ips.ilvev.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ilvev_d;	 // "ips.ilvev.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_ilvev_h;	 // "ips.ilvev.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ilvev_w;	 // "ips.ilvev.w"
            }
            break;
          case 'o':	 // 4 strings to match.
            if (memcmp(NameR.data()+8, "d.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_ilvod_b;	 // "ips.ilvod.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ilvod_d;	 // "ips.ilvod.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_ilvod_h;	 // "ips.ilvod.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ilvod_w;	 // "ips.ilvod.w"
            }
            break;
          }
          break;
        case 'n':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "sve.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_insve_b;	 // "ips.insve.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_insve_d;	 // "ips.insve.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_insve_h;	 // "ips.insve.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_insve_w;	 // "ips.insve.w"
          }
          break;
        }
        break;
      case 'm':	 // 42 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 16 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'd':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "dv.", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_maddv_b;	 // "ips.maddv.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_maddv_d;	 // "ips.maddv.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_maddv_h;	 // "ips.maddv.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_maddv_w;	 // "ips.maddv.w"
            }
            break;
          case 'x':	 // 12 strings to match.
            if (NameR[7] != '.')
              break;
            switch (NameR[8]) {
            default: break;
            case 'a':	 // 4 strings to match.
              if (NameR[9] != '.')
                break;
              switch (NameR[10]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_max_a_b;	 // "ips.max.a.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_max_a_d;	 // "ips.max.a.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_max_a_h;	 // "ips.max.a.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_max_a_w;	 // "ips.max.a.w"
              }
              break;
            case 's':	 // 4 strings to match.
              if (NameR[9] != '.')
                break;
              switch (NameR[10]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_max_s_b;	 // "ips.max.s.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_max_s_d;	 // "ips.max.s.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_max_s_h;	 // "ips.max.s.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_max_s_w;	 // "ips.max.s.w"
              }
              break;
            case 'u':	 // 4 strings to match.
              if (NameR[9] != '.')
                break;
              switch (NameR[10]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_max_u_b;	 // "ips.max.u.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_max_u_d;	 // "ips.max.u.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_max_u_h;	 // "ips.max.u.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_max_u_w;	 // "ips.max.u.w"
              }
              break;
            }
            break;
          }
          break;
        case 'i':	 // 12 strings to match.
          if (memcmp(NameR.data()+6, "n.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 'a':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_min_a_b;	 // "ips.min.a.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_min_a_d;	 // "ips.min.a.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_min_a_h;	 // "ips.min.a.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_min_a_w;	 // "ips.min.a.w"
            }
            break;
          case 's':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_min_s_b;	 // "ips.min.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_min_s_d;	 // "ips.min.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_min_s_h;	 // "ips.min.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_min_s_w;	 // "ips.min.s.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_min_u_b;	 // "ips.min.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_min_u_d;	 // "ips.min.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_min_u_h;	 // "ips.min.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_min_u_w;	 // "ips.min.u.w"
            }
            break;
          }
          break;
        case 'o':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "d.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_mod_s_b;	 // "ips.mod.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_mod_s_d;	 // "ips.mod.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_mod_s_h;	 // "ips.mod.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_mod_s_w;	 // "ips.mod.s.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_mod_u_b;	 // "ips.mod.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_mod_u_d;	 // "ips.mod.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_mod_u_h;	 // "ips.mod.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_mod_u_w;	 // "ips.mod.u.w"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "ubv.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_msubv_b;	 // "ips.msubv.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_msubv_d;	 // "ips.msubv.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_msubv_h;	 // "ips.msubv.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_msubv_w;	 // "ips.msubv.w"
          }
          break;
        case 'u':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "l.q.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_mul_q_h;	 // "ips.mul.q.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_mul_q_w;	 // "ips.mul.q.w"
          }
          break;
        }
        break;
      case 'p':	 // 11 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'c':	 // 8 strings to match.
          if (NameR[6] != 'k')
            break;
          switch (NameR[7]) {
          default: break;
          case 'e':	 // 4 strings to match.
            if (memcmp(NameR.data()+8, "v.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_pckev_b;	 // "ips.pckev.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_pckev_d;	 // "ips.pckev.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_pckev_h;	 // "ips.pckev.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_pckev_w;	 // "ips.pckev.w"
            }
            break;
          case 'o':	 // 4 strings to match.
            if (memcmp(NameR.data()+8, "d.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_pckod_b;	 // "ips.pckod.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_pckod_d;	 // "ips.pckod.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_pckod_h;	 // "ips.pckod.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_pckod_w;	 // "ips.pckod.w"
            }
            break;
          }
          break;
        case 'i':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "ck.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'p':	 // 1 string to match.
            if (NameR[10] != 'h')
              break;
            return Intrinsic::mips_pick_ph;	 // "ips.pick.ph"
          case 'q':	 // 1 string to match.
            if (NameR[10] != 'b')
              break;
            return Intrinsic::mips_pick_qb;	 // "ips.pick.qb"
          }
          break;
        case 'r':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "epend", 5))
            break;
          return Intrinsic::mips_prepend;	 // "ips.prepend"
        }
        break;
      case 'r':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "epl.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'p':	 // 1 string to match.
          if (NameR[10] != 'h')
            break;
          return Intrinsic::mips_repl_ph;	 // "ips.repl.ph"
        case 'q':	 // 1 string to match.
          if (NameR[10] != 'b')
            break;
          return Intrinsic::mips_repl_qb;	 // "ips.repl.qb"
        }
        break;
      case 's':	 // 34 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "t.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sat_s_b;	 // "ips.sat.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sat_s_d;	 // "ips.sat.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sat_s_h;	 // "ips.sat.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sat_s_w;	 // "ips.sat.s.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (NameR[9] != '.')
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sat_u_b;	 // "ips.sat.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sat_u_d;	 // "ips.sat.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sat_u_h;	 // "ips.sat.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sat_u_w;	 // "ips.sat.u.w"
            }
            break;
          }
          break;
        case 'h':	 // 6 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "l.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (NameR[10] != 'h')
                break;
              return Intrinsic::mips_shll_ph;	 // "ips.shll.ph"
            case 'q':	 // 1 string to match.
              if (NameR[10] != 'b')
                break;
              return Intrinsic::mips_shll_qb;	 // "ips.shll.qb"
            }
            break;
          case 'r':	 // 4 strings to match.
            switch (NameR[7]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (NameR[10] != 'h')
                  break;
                return Intrinsic::mips_shra_ph;	 // "ips.shra.ph"
              case 'q':	 // 1 string to match.
                if (NameR[10] != 'b')
                  break;
                return Intrinsic::mips_shra_qb;	 // "ips.shra.qb"
              }
              break;
            case 'l':	 // 2 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (NameR[10] != 'h')
                  break;
                return Intrinsic::mips_shrl_ph;	 // "ips.shrl.ph"
              case 'q':	 // 1 string to match.
                if (NameR[10] != 'b')
                  break;
                return Intrinsic::mips_shrl_qb;	 // "ips.shrl.qb"
              }
              break;
            }
            break;
          }
          break;
        case 'p':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "lat.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_splat_b;	 // "ips.splat.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_splat_d;	 // "ips.splat.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_splat_h;	 // "ips.splat.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_splat_w;	 // "ips.splat.w"
          }
          break;
        case 'r':	 // 8 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "ri.", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_srari_b;	 // "ips.srari.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_srari_d;	 // "ips.srari.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_srari_h;	 // "ips.srari.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_srari_w;	 // "ips.srari.w"
            }
            break;
          case 'l':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "ri.", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_srlri_b;	 // "ips.srlri.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_srlri_d;	 // "ips.srlri.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_srlri_h;	 // "ips.srlri.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_srlri_w;	 // "ips.srlri.w"
            }
            break;
          }
          break;
        case 'u':	 // 8 strings to match.
          if (NameR[6] != 'b')
            break;
          switch (NameR[7]) {
          default: break;
          case 'q':	 // 2 strings to match.
            switch (NameR[8]) {
            default: break;
            case '.':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "ph", 2))
                break;
              return Intrinsic::mips_subq_ph;	 // "ips.subq.ph"
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+9, ".w", 2))
                break;
              return Intrinsic::mips_subqh_w;	 // "ips.subqh.w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (NameR[8] != '.')
              break;
            switch (NameR[9]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (NameR[10] != 'h')
                break;
              return Intrinsic::mips_subu_ph;	 // "ips.subu.ph"
            case 'q':	 // 1 string to match.
              if (NameR[10] != 'b')
                break;
              return Intrinsic::mips_subu_qb;	 // "ips.subu.qb"
            }
            break;
          case 'v':	 // 4 strings to match.
            if (memcmp(NameR.data()+8, "i.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_subvi_b;	 // "ips.subvi.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_subvi_d;	 // "ips.subvi.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_subvi_h;	 // "ips.subvi.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_subvi_w;	 // "ips.subvi.w"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 12:	 // 144 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'a':	 // 32 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "sq.s.w", 6))
            break;
          return Intrinsic::mips_absq_s_w;	 // "ips.absq.s.w"
        case 'd':	 // 15 strings to match.
          if (NameR[6] != 'd')
            break;
          switch (NameR[7]) {
          default: break;
          case 'q':	 // 2 strings to match.
            switch (NameR[8]) {
            default: break;
            case '.':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "s.w", 3))
                break;
              return Intrinsic::mips_addq_s_w;	 // "ips.addq.s.w"
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+9, ".ph", 3))
                break;
              return Intrinsic::mips_addqh_ph;	 // "ips.addqh.ph"
            }
            break;
          case 's':	 // 12 strings to match.
            if (NameR[8] != '.')
              break;
            switch (NameR[9]) {
            default: break;
            case 'a':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_adds_a_b;	 // "ips.adds.a.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_adds_a_d;	 // "ips.adds.a.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_adds_a_h;	 // "ips.adds.a.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_adds_a_w;	 // "ips.adds.a.w"
              }
              break;
            case 's':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_adds_s_b;	 // "ips.adds.s.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_adds_s_d;	 // "ips.adds.s.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_adds_s_h;	 // "ips.adds.s.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_adds_s_w;	 // "ips.adds.s.w"
              }
              break;
            case 'u':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_adds_u_b;	 // "ips.adds.u.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_adds_u_d;	 // "ips.adds.u.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_adds_u_h;	 // "ips.adds.u.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_adds_u_w;	 // "ips.adds.u.w"
              }
              break;
            }
            break;
          case 'u':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "h.qb", 4))
              break;
            return Intrinsic::mips_adduh_qb;	 // "ips.adduh.qb"
          }
          break;
        case 's':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "ub.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_asub_s_b;	 // "ips.asub.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_asub_s_d;	 // "ips.asub.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_asub_s_h;	 // "ips.asub.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_asub_s_w;	 // "ips.asub.s.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_asub_u_b;	 // "ips.asub.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_asub_u_d;	 // "ips.asub.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_asub_u_h;	 // "ips.asub.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_asub_u_w;	 // "ips.asub.u.w"
            }
            break;
          }
          break;
        case 'v':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "er.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_aver_s_b;	 // "ips.aver.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_aver_s_d;	 // "ips.aver.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_aver_s_h;	 // "ips.aver.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_aver_s_w;	 // "ips.aver.s.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_aver_u_b;	 // "ips.aver.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_aver_u_d;	 // "ips.aver.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_aver_u_h;	 // "ips.aver.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_aver_u_w;	 // "ips.aver.u.w"
            }
            break;
          }
          break;
        }
        break;
      case 'b':	 // 9 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'i':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "ns", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 'l':	 // 4 strings to match.
            if (memcmp(NameR.data()+9, "i.", 2))
              break;
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_binsli_b;	 // "ips.binsli.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_binsli_d;	 // "ips.binsli.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_binsli_h;	 // "ips.binsli.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_binsli_w;	 // "ips.binsli.w"
            }
            break;
          case 'r':	 // 4 strings to match.
            if (memcmp(NameR.data()+9, "i.", 2))
              break;
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_binsri_b;	 // "ips.binsri.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_binsri_d;	 // "ips.binsri.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_binsri_h;	 // "ips.binsri.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_binsri_w;	 // "ips.binsri.w"
            }
            break;
          }
          break;
        case 'p':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "osge32", 6))
            break;
          return Intrinsic::mips_bposge32;	 // "ips.bposge32"
        }
        break;
      case 'c':	 // 24 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'l':	 // 16 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'e':	 // 8 strings to match.
            if (memcmp(NameR.data()+7, "i.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 's':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_clei_s_b;	 // "ips.clei.s.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_clei_s_d;	 // "ips.clei.s.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_clei_s_h;	 // "ips.clei.s.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_clei_s_w;	 // "ips.clei.s.w"
              }
              break;
            case 'u':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_clei_u_b;	 // "ips.clei.u.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_clei_u_d;	 // "ips.clei.u.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_clei_u_h;	 // "ips.clei.u.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_clei_u_w;	 // "ips.clei.u.w"
              }
              break;
            }
            break;
          case 't':	 // 8 strings to match.
            if (memcmp(NameR.data()+7, "i.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 's':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_clti_s_b;	 // "ips.clti.s.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_clti_s_d;	 // "ips.clti.s.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_clti_s_h;	 // "ips.clti.s.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_clti_s_w;	 // "ips.clti.s.w"
              }
              break;
            case 'u':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_clti_u_b;	 // "ips.clti.u.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_clti_u_d;	 // "ips.clti.u.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_clti_u_h;	 // "ips.clti.u.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_clti_u_w;	 // "ips.clti.u.w"
              }
              break;
            }
            break;
          }
          break;
        case 'o':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "py.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_copy_s_b;	 // "ips.copy.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_copy_s_d;	 // "ips.copy.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_copy_s_h;	 // "ips.copy.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_copy_s_w;	 // "ips.copy.s.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_copy_u_b;	 // "ips.copy.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_copy_u_d;	 // "ips.copy.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_copy_u_h;	 // "ips.copy.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_copy_u_w;	 // "ips.copy.u.w"
            }
            break;
          }
          break;
        }
        break;
      case 'd':	 // 8 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'o':	 // 6 strings to match.
          if (memcmp(NameR.data()+6, "tp.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 's':	 // 3 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_dotp_s_d;	 // "ips.dotp.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_dotp_s_h;	 // "ips.dotp.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_dotp_s_w;	 // "ips.dotp.s.w"
            }
            break;
          case 'u':	 // 3 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_dotp_u_d;	 // "ips.dotp.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_dotp_u_h;	 // "ips.dotp.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_dotp_u_w;	 // "ips.dotp.u.w"
            }
            break;
          }
          break;
        case 'p':	 // 2 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+7, ".w.ph", 5))
              break;
            return Intrinsic::mips_dpa_w_ph;	 // "ips.dpa.w.ph"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+7, ".w.ph", 5))
              break;
            return Intrinsic::mips_dps_w_ph;	 // "ips.dps.w.ph"
          }
          break;
        }
        break;
      case 'e':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "xtr.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'r':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".w", 2))
            break;
          return Intrinsic::mips_extr_r_w;	 // "ips.extr.r.w"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".h", 2))
            break;
          return Intrinsic::mips_extr_s_h;	 // "ips.extr.s.h"
        }
        break;
      case 'f':	 // 12 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'c':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "lass.", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_fclass_d;	 // "ips.fclass.d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_fclass_w;	 // "ips.fclass.w"
          }
          break;
        case 'e':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "xup", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fexupl_d;	 // "ips.fexupl.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fexupl_w;	 // "ips.fexupl.w"
            }
            break;
          case 'r':	 // 2 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fexupr_d;	 // "ips.fexupr.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fexupr_w;	 // "ips.fexupr.w"
            }
            break;
          }
          break;
        case 'm':	 // 4 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "x.a.", 4))
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmax_a_d;	 // "ips.fmax.a.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmax_a_w;	 // "ips.fmax.a.w"
            }
            break;
          case 'i':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "n.a.", 4))
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmin_a_d;	 // "ips.fmin.a.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmin_a_w;	 // "ips.fmin.a.w"
            }
            break;
          }
          break;
        case 'r':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "sqrt.", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_frsqrt_d;	 // "ips.frsqrt.d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_frsqrt_w;	 // "ips.frsqrt.w"
          }
          break;
        }
        break;
      case 'h':	 // 12 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 6 strings to match.
          if (memcmp(NameR.data()+6, "dd.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 's':	 // 3 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_hadd_s_d;	 // "ips.hadd.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_hadd_s_h;	 // "ips.hadd.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_hadd_s_w;	 // "ips.hadd.s.w"
            }
            break;
          case 'u':	 // 3 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_hadd_u_d;	 // "ips.hadd.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_hadd_u_h;	 // "ips.hadd.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_hadd_u_w;	 // "ips.hadd.u.w"
            }
            break;
          }
          break;
        case 's':	 // 6 strings to match.
          if (memcmp(NameR.data()+6, "ub.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 's':	 // 3 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_hsub_s_d;	 // "ips.hsub.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_hsub_s_h;	 // "ips.hsub.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_hsub_s_w;	 // "ips.hsub.s.w"
            }
            break;
          case 'u':	 // 3 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_hsub_u_d;	 // "ips.hsub.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_hsub_u_h;	 // "ips.hsub.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_hsub_u_w;	 // "ips.hsub.u.w"
            }
            break;
          }
          break;
        }
        break;
      case 'i':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "nsert.", 6))
          break;
        switch (NameR[11]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_insert_b;	 // "ips.insert.b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_insert_d;	 // "ips.insert.d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_insert_h;	 // "ips.insert.h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_insert_w;	 // "ips.insert.w"
        }
        break;
      case 'm':	 // 24 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 10 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "d.q.", 4))
              break;
            switch (NameR[11]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_madd_q_h;	 // "ips.madd.q.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_madd_q_w;	 // "ips.madd.q.w"
            }
            break;
          case 'x':	 // 8 strings to match.
            if (memcmp(NameR.data()+7, "i.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 's':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_maxi_s_b;	 // "ips.maxi.s.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_maxi_s_d;	 // "ips.maxi.s.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_maxi_s_h;	 // "ips.maxi.s.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_maxi_s_w;	 // "ips.maxi.s.w"
              }
              break;
            case 'u':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_maxi_u_b;	 // "ips.maxi.u.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_maxi_u_d;	 // "ips.maxi.u.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_maxi_u_h;	 // "ips.maxi.u.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_maxi_u_w;	 // "ips.maxi.u.w"
              }
              break;
            }
            break;
          }
          break;
        case 'i':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "ni.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_mini_s_b;	 // "ips.mini.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_mini_s_d;	 // "ips.mini.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_mini_s_h;	 // "ips.mini.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_mini_s_w;	 // "ips.mini.s.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_mini_u_b;	 // "ips.mini.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_mini_u_d;	 // "ips.mini.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_mini_u_h;	 // "ips.mini.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_mini_u_w;	 // "ips.mini.u.w"
            }
            break;
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "ub.q.", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_msub_q_h;	 // "ips.msub.q.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_msub_q_w;	 // "ips.msub.q.w"
          }
          break;
        case 'u':	 // 4 strings to match.
          if (NameR[6] != 'l')
            break;
          switch (NameR[7]) {
          default: break;
          case '.':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "s.ph", 4))
              break;
            return Intrinsic::mips_mul_s_ph;	 // "ips.mul.s.ph"
          case 'q':	 // 1 string to match.
            if (memcmp(NameR.data()+8, ".s.w", 4))
              break;
            return Intrinsic::mips_mulq_s_w;	 // "ips.mulq.s.w"
          case 'r':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, ".q.", 3))
              break;
            switch (NameR[11]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_mulr_q_h;	 // "ips.mulr.q.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_mulr_q_w;	 // "ips.mulr.q.w"
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 17 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'h':	 // 2 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "l.s.w", 5))
              break;
            return Intrinsic::mips_shll_s_w;	 // "ips.shll.s.w"
          case 'r':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "a.r.w", 5))
              break;
            return Intrinsic::mips_shra_r_w;	 // "ips.shra.r.w"
          }
          break;
        case 'p':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "lati.", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_splati_b;	 // "ips.splati.b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_splati_d;	 // "ips.splati.d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_splati_h;	 // "ips.splati.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_splati_w;	 // "ips.splati.w"
          }
          break;
        case 'u':	 // 11 strings to match.
          if (NameR[6] != 'b')
            break;
          switch (NameR[7]) {
          default: break;
          case 'q':	 // 2 strings to match.
            switch (NameR[8]) {
            default: break;
            case '.':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "s.w", 3))
                break;
              return Intrinsic::mips_subq_s_w;	 // "ips.subq.s.w"
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+9, ".ph", 3))
                break;
              return Intrinsic::mips_subqh_ph;	 // "ips.subqh.ph"
            }
            break;
          case 's':	 // 8 strings to match.
            if (NameR[8] != '.')
              break;
            switch (NameR[9]) {
            default: break;
            case 's':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_subs_s_b;	 // "ips.subs.s.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_subs_s_d;	 // "ips.subs.s.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_subs_s_h;	 // "ips.subs.s.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_subs_s_w;	 // "ips.subs.s.w"
              }
              break;
            case 'u':	 // 4 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_subs_u_b;	 // "ips.subs.u.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_subs_u_d;	 // "ips.subs.u.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_subs_u_h;	 // "ips.subs.u.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_subs_u_w;	 // "ips.subs.u.w"
              }
              break;
            }
            break;
          case 'u':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "h.qb", 4))
              break;
            return Intrinsic::mips_subuh_qb;	 // "ips.subuh.qb"
          }
          break;
        }
        break;
      }
      break;
    case 13:	 // 46 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'a':	 // 6 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'b':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "sq.s.", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'p':	 // 1 string to match.
            if (NameR[12] != 'h')
              break;
            return Intrinsic::mips_absq_s_ph;	 // "ips.absq.s.ph"
          case 'q':	 // 1 string to match.
            if (NameR[12] != 'b')
              break;
            return Intrinsic::mips_absq_s_qb;	 // "ips.absq.s.qb"
          }
          break;
        case 'd':	 // 4 strings to match.
          if (NameR[6] != 'd')
            break;
          switch (NameR[7]) {
          default: break;
          case 'q':	 // 2 strings to match.
            switch (NameR[8]) {
            default: break;
            case '.':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "s.ph", 4))
                break;
              return Intrinsic::mips_addq_s_ph;	 // "ips.addq.s.ph"
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+9, ".r.w", 4))
                break;
              return Intrinsic::mips_addqh_r_w;	 // "ips.addqh.r.w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, ".s.", 3))
              break;
            switch (NameR[11]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (NameR[12] != 'h')
                break;
              return Intrinsic::mips_addu_s_ph;	 // "ips.addu.s.ph"
            case 'q':	 // 1 string to match.
              if (NameR[12] != 'b')
                break;
              return Intrinsic::mips_addu_s_qb;	 // "ips.addu.s.qb"
            }
            break;
          }
          break;
        }
        break;
      case 'c':	 // 3 strings to match.
        if (memcmp(NameR.data()+5, "mp.", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "q.ph", 4))
            break;
          return Intrinsic::mips_cmp_eq_ph;	 // "ips.cmp.eq.ph"
        case 'l':	 // 2 strings to match.
          switch (NameR[9]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ph", 3))
              break;
            return Intrinsic::mips_cmp_le_ph;	 // "ips.cmp.le.ph"
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ph", 3))
              break;
            return Intrinsic::mips_cmp_lt_ph;	 // "ips.cmp.lt.ph"
          }
          break;
        }
        break;
      case 'd':	 // 14 strings to match.
        if (NameR[5] != 'p')
          break;
        switch (NameR[6]) {
        default: break;
        case 'a':	 // 7 strings to match.
          switch (NameR[7]) {
          default: break;
          case 'd':	 // 6 strings to match.
            if (memcmp(NameR.data()+8, "d.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 's':	 // 3 strings to match.
              if (NameR[11] != '.')
                break;
              switch (NameR[12]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_dpadd_s_d;	 // "ips.dpadd.s.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_dpadd_s_h;	 // "ips.dpadd.s.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_dpadd_s_w;	 // "ips.dpadd.s.w"
              }
              break;
            case 'u':	 // 3 strings to match.
              if (NameR[11] != '.')
                break;
              switch (NameR[12]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_dpadd_u_d;	 // "ips.dpadd.u.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_dpadd_u_h;	 // "ips.dpadd.u.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_dpadd_u_w;	 // "ips.dpadd.u.w"
              }
              break;
            }
            break;
          case 'x':	 // 1 string to match.
            if (memcmp(NameR.data()+8, ".w.ph", 5))
              break;
            return Intrinsic::mips_dpax_w_ph;	 // "ips.dpax.w.ph"
          }
          break;
        case 's':	 // 7 strings to match.
          switch (NameR[7]) {
          default: break;
          case 'u':	 // 6 strings to match.
            if (memcmp(NameR.data()+8, "b.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 's':	 // 3 strings to match.
              if (NameR[11] != '.')
                break;
              switch (NameR[12]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_dpsub_s_d;	 // "ips.dpsub.s.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_dpsub_s_h;	 // "ips.dpsub.s.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_dpsub_s_w;	 // "ips.dpsub.s.w"
              }
              break;
            case 'u':	 // 3 strings to match.
              if (NameR[11] != '.')
                break;
              switch (NameR[12]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_dpsub_u_d;	 // "ips.dpsub.u.d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_dpsub_u_h;	 // "ips.dpsub.u.h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_dpsub_u_w;	 // "ips.dpsub.u.w"
              }
              break;
            }
            break;
          case 'x':	 // 1 string to match.
            if (memcmp(NameR.data()+8, ".w.ph", 5))
              break;
            return Intrinsic::mips_dpsx_w_ph;	 // "ips.dpsx.w.ph"
          }
          break;
        }
        break;
      case 'e':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "xtr.rs.w", 8))
          break;
        return Intrinsic::mips_extr_rs_w;	 // "ips.extr.rs.w"
      case 'f':	 // 8 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'f':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "int.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 's':	 // 2 strings to match.
            if (NameR[11] != '.')
              break;
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ffint_s_d;	 // "ips.ffint.s.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ffint_s_w;	 // "ips.ffint.s.w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (NameR[11] != '.')
              break;
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ffint_u_d;	 // "ips.ffint.u.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ffint_u_w;	 // "ips.ffint.u.w"
            }
            break;
          }
          break;
        case 't':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "int.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 's':	 // 2 strings to match.
            if (NameR[11] != '.')
              break;
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ftint_s_d;	 // "ips.ftint.s.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ftint_s_w;	 // "ips.ftint.s.w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (NameR[11] != '.')
              break;
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ftint_u_d;	 // "ips.ftint.u.d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ftint_u_w;	 // "ips.ftint.u.w"
            }
            break;
          }
          break;
        }
        break;
      case 'm':	 // 6 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "ddr.q.", 6))
            break;
          switch (NameR[12]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_maddr_q_h;	 // "ips.maddr.q.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_maddr_q_w;	 // "ips.maddr.q.w"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "ubr.q.", 6))
            break;
          switch (NameR[12]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_msubr_q_h;	 // "ips.msubr.q.h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_msubr_q_w;	 // "ips.msubr.q.w"
          }
          break;
        case 'u':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "lq.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'r':	 // 1 string to match.
            if (memcmp(NameR.data()+10, "s.w", 3))
              break;
            return Intrinsic::mips_mulq_rs_w;	 // "ips.mulq.rs.w"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ph", 3))
              break;
            return Intrinsic::mips_mulq_s_ph;	 // "ips.mulq.s.ph"
          }
          break;
        }
        break;
      case 'p':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "ackrl.ph", 8))
          break;
        return Intrinsic::mips_packrl_ph;	 // "ips.packrl.ph"
      case 's':	 // 7 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'h':	 // 3 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "l.s.ph", 6))
              break;
            return Intrinsic::mips_shll_s_ph;	 // "ips.shll.s.ph"
          case 'r':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "a.r.", 4))
              break;
            switch (NameR[11]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (NameR[12] != 'h')
                break;
              return Intrinsic::mips_shra_r_ph;	 // "ips.shra.r.ph"
            case 'q':	 // 1 string to match.
              if (NameR[12] != 'b')
                break;
              return Intrinsic::mips_shra_r_qb;	 // "ips.shra.r.qb"
            }
            break;
          }
          break;
        case 'u':	 // 4 strings to match.
          if (NameR[6] != 'b')
            break;
          switch (NameR[7]) {
          default: break;
          case 'q':	 // 2 strings to match.
            switch (NameR[8]) {
            default: break;
            case '.':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "s.ph", 4))
                break;
              return Intrinsic::mips_subq_s_ph;	 // "ips.subq.s.ph"
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+9, ".r.w", 4))
                break;
              return Intrinsic::mips_subqh_r_w;	 // "ips.subqh.r.w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, ".s.", 3))
              break;
            switch (NameR[11]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (NameR[12] != 'h')
                break;
              return Intrinsic::mips_subu_s_ph;	 // "ips.subu.s.ph"
            case 'q':	 // 1 string to match.
              if (NameR[12] != 'b')
                break;
              return Intrinsic::mips_subu_s_qb;	 // "ips.subu.s.qb"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 14:	 // 26 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "dd", 2))
          break;
        switch (NameR[7]) {
        default: break;
        case 'q':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "h.r.ph", 6))
            break;
          return Intrinsic::mips_addqh_r_ph;	 // "ips.addqh.r.ph"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "h.r.qb", 6))
            break;
          return Intrinsic::mips_adduh_r_qb;	 // "ips.adduh.r.qb"
        }
        break;
      case 'c':	 // 3 strings to match.
        if (memcmp(NameR.data()+5, "mpu.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(NameR.data()+10, "q.qb", 4))
            break;
          return Intrinsic::mips_cmpu_eq_qb;	 // "ips.cmpu.eq.qb"
        case 'l':	 // 2 strings to match.
          switch (NameR[10]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+11, ".qb", 3))
              break;
            return Intrinsic::mips_cmpu_le_qb;	 // "ips.cmpu.le.qb"
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+11, ".qb", 3))
              break;
            return Intrinsic::mips_cmpu_lt_qb;	 // "ips.cmpu.lt.qb"
          }
          break;
        }
        break;
      case 'd':	 // 4 strings to match.
        if (NameR[5] != 'p')
          break;
        switch (NameR[6]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+7, "u.h.qb", 6))
            break;
          switch (NameR[13]) {
          default: break;
          case 'l':	 // 1 string to match.
            return Intrinsic::mips_dpau_h_qbl;	 // "ips.dpau.h.qbl"
          case 'r':	 // 1 string to match.
            return Intrinsic::mips_dpau_h_qbr;	 // "ips.dpau.h.qbr"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+7, "u.h.qb", 6))
            break;
          switch (NameR[13]) {
          default: break;
          case 'l':	 // 1 string to match.
            return Intrinsic::mips_dpsu_h_qbl;	 // "ips.dpsu.h.qbl"
          case 'r':	 // 1 string to match.
            return Intrinsic::mips_dpsu_h_qbr;	 // "ips.dpsu.h.qbr"
          }
          break;
        }
        break;
      case 'f':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "trunc.", 6))
          break;
        switch (NameR[11]) {
        default: break;
        case 's':	 // 2 strings to match.
          if (NameR[12] != '.')
            break;
          switch (NameR[13]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ftrunc_s_d;	 // "ips.ftrunc.s.d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ftrunc_s_w;	 // "ips.ftrunc.s.w"
          }
          break;
        case 'u':	 // 2 strings to match.
          if (NameR[12] != '.')
            break;
          switch (NameR[13]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ftrunc_u_d;	 // "ips.ftrunc.u.d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ftrunc_u_w;	 // "ips.ftrunc.u.w"
          }
          break;
        }
        break;
      case 'm':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "ul", 2))
          break;
        switch (NameR[7]) {
        default: break;
        case 'q':	 // 1 string to match.
          if (memcmp(NameR.data()+8, ".rs.ph", 6))
            break;
          return Intrinsic::mips_mulq_rs_ph;	 // "ips.mulq.rs.ph"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "a.w.ph", 6))
            break;
          return Intrinsic::mips_mulsa_w_ph;	 // "ips.mulsa.w.ph"
        }
        break;
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "addu.w.qb", 9))
          break;
        return Intrinsic::mips_raddu_w_qb;	 // "ips.raddu.w.qb"
      case 's':	 // 10 strings to match.
        if (memcmp(NameR.data()+5, "ub", 2))
          break;
        switch (NameR[7]) {
        default: break;
        case 'q':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "h.r.ph", 6))
            break;
          return Intrinsic::mips_subqh_r_ph;	 // "ips.subqh.r.ph"
        case 's':	 // 8 strings to match.
          if (NameR[8] != 'u')
            break;
          switch (NameR[9]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (memcmp(NameR.data()+10, ".u.", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_subsus_u_b;	 // "ips.subsus.u.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_subsus_u_d;	 // "ips.subsus.u.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_subsus_u_h;	 // "ips.subsus.u.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_subsus_u_w;	 // "ips.subsus.u.w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (memcmp(NameR.data()+10, ".s.", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_subsuu_s_b;	 // "ips.subsuu.s.b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_subsuu_s_d;	 // "ips.subsuu.s.d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_subsuu_s_h;	 // "ips.subsuu.s.h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_subsuu_s_w;	 // "ips.subsuu.s.w"
            }
            break;
          }
          break;
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "h.r.qb", 6))
            break;
          return Intrinsic::mips_subuh_r_qb;	 // "ips.subuh.r.qb"
        }
        break;
      }
      break;
    case 15:	 // 11 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'c':	 // 3 strings to match.
        if (memcmp(NameR.data()+5, "mpgu.", 5))
          break;
        switch (NameR[10]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(NameR.data()+11, "q.qb", 4))
            break;
          return Intrinsic::mips_cmpgu_eq_qb;	 // "ips.cmpgu.eq.qb"
        case 'l':	 // 2 strings to match.
          switch (NameR[11]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+12, ".qb", 3))
              break;
            return Intrinsic::mips_cmpgu_le_qb;	 // "ips.cmpgu.le.qb"
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+12, ".qb", 3))
              break;
            return Intrinsic::mips_cmpgu_lt_qb;	 // "ips.cmpgu.lt.qb"
          }
          break;
        }
        break;
      case 'd':	 // 4 strings to match.
        if (NameR[5] != 'p')
          break;
        switch (NameR[6]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+7, "q.s", 3))
            break;
          switch (NameR[10]) {
          default: break;
          case '.':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "w.ph", 4))
              break;
            return Intrinsic::mips_dpaq_s_w_ph;	 // "ips.dpaq.s.w.ph"
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+11, ".l.w", 4))
              break;
            return Intrinsic::mips_dpaq_sa_l_w;	 // "ips.dpaq.sa.l.w"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+7, "q.s", 3))
            break;
          switch (NameR[10]) {
          default: break;
          case '.':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "w.ph", 4))
              break;
            return Intrinsic::mips_dpsq_s_w_ph;	 // "ips.dpsq.s.w.ph"
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+11, ".l.w", 4))
              break;
            return Intrinsic::mips_dpsq_sa_l_w;	 // "ips.dpsq.sa.l.w"
          }
          break;
        }
        break;
      case 'm':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "aq.s.w.ph", 9))
          break;
        switch (NameR[14]) {
        default: break;
        case 'l':	 // 1 string to match.
          return Intrinsic::mips_maq_s_w_phl;	 // "ips.maq.s.w.phl"
        case 'r':	 // 1 string to match.
          return Intrinsic::mips_maq_s_w_phr;	 // "ips.maq.s.w.phr"
        }
        break;
      case 'p':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "recr", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case '.':	 // 1 string to match.
          if (memcmp(NameR.data()+10, "qb.ph", 5))
            break;
          return Intrinsic::mips_precr_qb_ph;	 // "ips.precr.qb.ph"
        case 'q':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ph.w", 5))
            break;
          return Intrinsic::mips_precrq_ph_w;	 // "ips.precrq.ph.w"
        }
        break;
      }
      break;
    case 16:	 // 10 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'c':	 // 3 strings to match.
        if (memcmp(NameR.data()+5, "mpgdu.", 6))
          break;
        switch (NameR[11]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(NameR.data()+12, "q.qb", 4))
            break;
          return Intrinsic::mips_cmpgdu_eq_qb;	 // "ips.cmpgdu.eq.qb"
        case 'l':	 // 2 strings to match.
          switch (NameR[12]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+13, ".qb", 3))
              break;
            return Intrinsic::mips_cmpgdu_le_qb;	 // "ips.cmpgdu.le.qb"
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+13, ".qb", 3))
              break;
            return Intrinsic::mips_cmpgdu_lt_qb;	 // "ips.cmpgdu.lt.qb"
          }
          break;
        }
        break;
      case 'd':	 // 2 strings to match.
        if (NameR[5] != 'p')
          break;
        switch (NameR[6]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+7, "qx.s.w.ph", 9))
            break;
          return Intrinsic::mips_dpaqx_s_w_ph;	 // "ips.dpaqx.s.w.ph"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+7, "qx.s.w.ph", 9))
            break;
          return Intrinsic::mips_dpsqx_s_w_ph;	 // "ips.dpsqx.s.w.ph"
        }
        break;
      case 'm':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "aq.sa.w.ph", 10))
          break;
        switch (NameR[15]) {
        default: break;
        case 'l':	 // 1 string to match.
          return Intrinsic::mips_maq_sa_w_phl;	 // "ips.maq.sa.w.phl"
        case 'r':	 // 1 string to match.
          return Intrinsic::mips_maq_sa_w_phr;	 // "ips.maq.sa.w.phr"
        }
        break;
      case 'p':	 // 3 strings to match.
        if (memcmp(NameR.data()+5, "rec", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 'e':	 // 2 strings to match.
          if (memcmp(NameR.data()+9, "q.w.ph", 6))
            break;
          switch (NameR[15]) {
          default: break;
          case 'l':	 // 1 string to match.
            return Intrinsic::mips_preceq_w_phl;	 // "ips.preceq.w.phl"
          case 'r':	 // 1 string to match.
            return Intrinsic::mips_preceq_w_phr;	 // "ips.preceq.w.phr"
          }
          break;
        case 'r':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "q.qb.ph", 7))
            break;
          return Intrinsic::mips_precrq_qb_ph;	 // "ips.precrq.qb.ph"
        }
        break;
      }
      break;
    case 17:	 // 7 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (NameR[5] != 'p')
          break;
        switch (NameR[6]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+7, "qx.sa.w.ph", 10))
            break;
          return Intrinsic::mips_dpaqx_sa_w_ph;	 // "ips.dpaqx.sa.w.ph"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+7, "qx.sa.w.ph", 10))
            break;
          return Intrinsic::mips_dpsqx_sa_w_ph;	 // "ips.dpsqx.sa.w.ph"
        }
        break;
      case 'm':	 // 3 strings to match.
        if (memcmp(NameR.data()+5, "ul", 2))
          break;
        switch (NameR[7]) {
        default: break;
        case 'e':	 // 2 strings to match.
          if (memcmp(NameR.data()+8, "q.s.w.ph", 8))
            break;
          switch (NameR[16]) {
          default: break;
          case 'l':	 // 1 string to match.
            return Intrinsic::mips_muleq_s_w_phl;	 // "ips.muleq.s.w.phl"
          case 'r':	 // 1 string to match.
            return Intrinsic::mips_muleq_s_w_phr;	 // "ips.muleq.s.w.phr"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "aq.s.w.ph", 9))
            break;
          return Intrinsic::mips_mulsaq_s_w_ph;	 // "ips.mulsaq.s.w.ph"
        }
        break;
      case 'p':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "receu.ph.qb", 11))
          break;
        switch (NameR[16]) {
        default: break;
        case 'l':	 // 1 string to match.
          return Intrinsic::mips_preceu_ph_qbl;	 // "ips.preceu.ph.qbl"
        case 'r':	 // 1 string to match.
          return Intrinsic::mips_preceu_ph_qbr;	 // "ips.preceu.ph.qbr"
        }
        break;
      }
      break;
    case 18:	 // 8 strings to match.
      if (memcmp(NameR.data()+0, "ips.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'm':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "uleu.s.ph.qb", 12))
          break;
        switch (NameR[17]) {
        default: break;
        case 'l':	 // 1 string to match.
          return Intrinsic::mips_muleu_s_ph_qbl;	 // "ips.muleu.s.ph.qbl"
        case 'r':	 // 1 string to match.
          return Intrinsic::mips_muleu_s_ph_qbr;	 // "ips.muleu.s.ph.qbr"
        }
        break;
      case 'p':	 // 6 strings to match.
        if (memcmp(NameR.data()+5, "rec", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 'e':	 // 4 strings to match.
          switch (NameR[9]) {
          default: break;
          case 'q':	 // 2 strings to match.
            if (memcmp(NameR.data()+10, "u.ph.qb", 7))
              break;
            switch (NameR[17]) {
            default: break;
            case 'l':	 // 1 string to match.
              return Intrinsic::mips_precequ_ph_qbl;	 // "ips.precequ.ph.qbl"
            case 'r':	 // 1 string to match.
              return Intrinsic::mips_precequ_ph_qbr;	 // "ips.precequ.ph.qbr"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(NameR.data()+10, ".ph.qb", 6))
              break;
            switch (NameR[16]) {
            default: break;
            case 'l':	 // 1 string to match.
              if (NameR[17] != 'a')
                break;
              return Intrinsic::mips_preceu_ph_qbla;	 // "ips.preceu.ph.qbla"
            case 'r':	 // 1 string to match.
              if (NameR[17] != 'a')
                break;
              return Intrinsic::mips_preceu_ph_qbra;	 // "ips.preceu.ph.qbra"
            }
            break;
          }
          break;
        case 'r':	 // 2 strings to match.
          switch (NameR[9]) {
          default: break;
          case '.':	 // 1 string to match.
            if (memcmp(NameR.data()+10, "sra.ph.w", 8))
              break;
            return Intrinsic::mips_precr_sra_ph_w;	 // "ips.precr.sra.ph.w"
          case 'q':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".rs.ph.w", 8))
              break;
            return Intrinsic::mips_precrq_rs_ph_w;	 // "ips.precrq.rs.ph.w"
          }
          break;
        }
        break;
      }
      break;
    case 19:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "ips.prec", 8))
        break;
      switch (NameR[8]) {
      default: break;
      case 'e':	 // 2 strings to match.
        if (memcmp(NameR.data()+9, "qu.ph.qb", 8))
          break;
        switch (NameR[17]) {
        default: break;
        case 'l':	 // 1 string to match.
          if (NameR[18] != 'a')
            break;
          return Intrinsic::mips_precequ_ph_qbla;	 // "ips.precequ.ph.qbla"
        case 'r':	 // 1 string to match.
          if (NameR[18] != 'a')
            break;
          return Intrinsic::mips_precequ_ph_qbra;	 // "ips.precequ.ph.qbra"
        }
        break;
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+9, "qu.s.qb.ph", 10))
          break;
        return Intrinsic::mips_precrqu_s_qb_ph;	 // "ips.precrqu.s.qb.ph"
      }
      break;
    case 20:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "ips.precr.sra.r.ph.w", 20))
        break;
      return Intrinsic::mips_precr_sra_r_ph_w;	 // "ips.precr.sra.r.ph.w"
    }
    break;  // end of 'm' case.
  case 'n':
    if (NameR.startswith("vvm.texsurf.handle.internal.")) return Intrinsic::nvvm_texsurf_handle_internal;
    if (NameR.startswith("vvm.texsurf.handle.")) return Intrinsic::nvvm_texsurf_handle;
    if (NameR.startswith("vvm.reflect.")) return Intrinsic::nvvm_reflect;
    if (NameR.startswith("vvm.ptr.shared.to.gen.")) return Intrinsic::nvvm_ptr_shared_to_gen;
    if (NameR.startswith("vvm.ptr.local.to.gen.")) return Intrinsic::nvvm_ptr_local_to_gen;
    if (NameR.startswith("vvm.ptr.global.to.gen.")) return Intrinsic::nvvm_ptr_global_to_gen;
    if (NameR.startswith("vvm.ptr.gen.to.shared.")) return Intrinsic::nvvm_ptr_gen_to_shared;
    if (NameR.startswith("vvm.ptr.gen.to.param.")) return Intrinsic::nvvm_ptr_gen_to_param;
    if (NameR.startswith("vvm.ptr.gen.to.local.")) return Intrinsic::nvvm_ptr_gen_to_local;
    if (NameR.startswith("vvm.ptr.gen.to.global.")) return Intrinsic::nvvm_ptr_gen_to_global;
    if (NameR.startswith("vvm.ptr.gen.to.constant.")) return Intrinsic::nvvm_ptr_gen_to_constant;
    if (NameR.startswith("vvm.ptr.constant.to.gen.")) return Intrinsic::nvvm_ptr_constant_to_gen;
    if (NameR.startswith("vvm.move.ptr.")) return Intrinsic::nvvm_move_ptr;
    if (NameR.startswith("vvm.ldu.global.p.")) return Intrinsic::nvvm_ldu_global_p;
    if (NameR.startswith("vvm.ldu.global.i.")) return Intrinsic::nvvm_ldu_global_i;
    if (NameR.startswith("vvm.ldu.global.f.")) return Intrinsic::nvvm_ldu_global_f;
    if (NameR.startswith("vvm.ldg.global.p.")) return Intrinsic::nvvm_ldg_global_p;
    if (NameR.startswith("vvm.ldg.global.i.")) return Intrinsic::nvvm_ldg_global_i;
    if (NameR.startswith("vvm.ldg.global.f.")) return Intrinsic::nvvm_ldg_global_f;
    if (NameR.startswith("vvm.compiler.warn.")) return Intrinsic::nvvm_compiler_warn;
    if (NameR.startswith("vvm.compiler.error.")) return Intrinsic::nvvm_compiler_error;
    if (NameR.startswith("vvm.atomic.load.inc.32.")) return Intrinsic::nvvm_atomic_load_inc_32;
    if (NameR.startswith("vvm.atomic.load.dec.32.")) return Intrinsic::nvvm_atomic_load_dec_32;
    if (NameR.startswith("vvm.atomic.load.add.f32.")) return Intrinsic::nvvm_atomic_load_add_f32;
    if (NameR.startswith("earbyint.")) return Intrinsic::nearbyint;
    switch (NameR.size()) {
    default: break;
    case 7:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "vvm.h2f", 7))
        break;
      return Intrinsic::nvvm_h2f;	 // "vvm.h2f"
    case 8:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "vvm.prmt", 8))
        break;
      return Intrinsic::nvvm_prmt;	 // "vvm.prmt"
    case 9:	 // 5 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "bs.i", 4))
          break;
        return Intrinsic::nvvm_abs_i;	 // "vvm.abs.i"
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "lz.i", 4))
          break;
        return Intrinsic::nvvm_clz_i;	 // "vvm.clz.i"
      case 'm':	 // 2 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "x.i", 3))
            break;
          return Intrinsic::nvvm_max_i;	 // "vvm.max.i"
        case 'i':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "n.i", 3))
            break;
          return Intrinsic::nvvm_min_i;	 // "vvm.min.i"
        }
        break;
      case 's':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "ad.i", 4))
          break;
        return Intrinsic::nvvm_sad_i;	 // "vvm.sad.i"
      }
      break;
    case 10:	 // 42 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "bs.ll", 5))
          break;
        return Intrinsic::nvvm_abs_ll;	 // "vvm.abs.ll"
      case 'b':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "rev", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case '3':	 // 1 string to match.
          if (NameR[9] != '2')
            break;
          return Intrinsic::nvvm_brev32;	 // "vvm.brev32"
        case '6':	 // 1 string to match.
          if (NameR[9] != '4')
            break;
          return Intrinsic::nvvm_brev64;	 // "vvm.brev64"
        }
        break;
      case 'c':	 // 3 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'e':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "il.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_ceil_d;	 // "vvm.ceil.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_ceil_f;	 // "vvm.ceil.f"
          }
          break;
        case 'l':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "z.ll", 4))
            break;
          return Intrinsic::nvvm_clz_ll;	 // "vvm.clz.ll"
        }
        break;
      case 'd':	 // 10 strings to match.
        if (NameR[5] != '2')
          break;
        switch (NameR[6]) {
        default: break;
        case 'f':	 // 4 strings to match.
          if (memcmp(NameR.data()+7, ".r", 2))
            break;
          switch (NameR[9]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_d2f_rm;	 // "vvm.d2f.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_d2f_rn;	 // "vvm.d2f.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_d2f_rp;	 // "vvm.d2f.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_d2f_rz;	 // "vvm.d2f.rz"
          }
          break;
        case 'i':	 // 6 strings to match.
          if (NameR[7] != '.')
            break;
          switch (NameR[8]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (NameR[9] != 'i')
              break;
            return Intrinsic::nvvm_d2i_hi;	 // "vvm.d2i.hi"
          case 'l':	 // 1 string to match.
            if (NameR[9] != 'o')
              break;
            return Intrinsic::nvvm_d2i_lo;	 // "vvm.d2i.lo"
          case 'r':	 // 4 strings to match.
            switch (NameR[9]) {
            default: break;
            case 'm':	 // 1 string to match.
              return Intrinsic::nvvm_d2i_rm;	 // "vvm.d2i.rm"
            case 'n':	 // 1 string to match.
              return Intrinsic::nvvm_d2i_rn;	 // "vvm.d2i.rn"
            case 'p':	 // 1 string to match.
              return Intrinsic::nvvm_d2i_rp;	 // "vvm.d2i.rp"
            case 'z':	 // 1 string to match.
              return Intrinsic::nvvm_d2i_rz;	 // "vvm.d2i.rz"
            }
            break;
          }
          break;
        }
        break;
      case 'f':	 // 11 strings to match.
        switch (NameR[5]) {
        default: break;
        case '2':	 // 5 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (memcmp(NameR.data()+7, ".rn", 3))
              break;
            return Intrinsic::nvvm_f2h_rn;	 // "vvm.f2h.rn"
          case 'i':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, ".r", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'm':	 // 1 string to match.
              return Intrinsic::nvvm_f2i_rm;	 // "vvm.f2i.rm"
            case 'n':	 // 1 string to match.
              return Intrinsic::nvvm_f2i_rn;	 // "vvm.f2i.rn"
            case 'p':	 // 1 string to match.
              return Intrinsic::nvvm_f2i_rp;	 // "vvm.f2i.rp"
            case 'z':	 // 1 string to match.
              return Intrinsic::nvvm_f2i_rz;	 // "vvm.f2i.rz"
            }
            break;
          }
          break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "bs.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_fabs_d;	 // "vvm.fabs.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_fabs_f;	 // "vvm.fabs.f"
          }
          break;
        case 'm':	 // 4 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "x.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_fmax_d;	 // "vvm.fmax.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_fmax_f;	 // "vvm.fmax.f"
            }
            break;
          case 'i':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "n.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_fmin_d;	 // "vvm.fmin.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_fmin_f;	 // "vvm.fmin.f"
            }
            break;
          }
          break;
        }
        break;
      case 'i':	 // 8 strings to match.
        if (NameR[5] != '2')
          break;
        switch (NameR[6]) {
        default: break;
        case 'd':	 // 4 strings to match.
          if (memcmp(NameR.data()+7, ".r", 2))
            break;
          switch (NameR[9]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_i2d_rm;	 // "vvm.i2d.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_i2d_rn;	 // "vvm.i2d.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_i2d_rp;	 // "vvm.i2d.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_i2d_rz;	 // "vvm.i2d.rz"
          }
          break;
        case 'f':	 // 4 strings to match.
          if (memcmp(NameR.data()+7, ".r", 2))
            break;
          switch (NameR[9]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_i2f_rm;	 // "vvm.i2f.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_i2f_rn;	 // "vvm.i2f.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_i2f_rp;	 // "vvm.i2f.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_i2f_rz;	 // "vvm.i2f.rz"
          }
          break;
        }
        break;
      case 'm':	 // 4 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "x.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (NameR[9] != 'l')
              break;
            return Intrinsic::nvvm_max_ll;	 // "vvm.max.ll"
          case 'u':	 // 1 string to match.
            if (NameR[9] != 'i')
              break;
            return Intrinsic::nvvm_max_ui;	 // "vvm.max.ui"
          }
          break;
        case 'i':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "n.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (NameR[9] != 'l')
              break;
            return Intrinsic::nvvm_min_ll;	 // "vvm.min.ll"
          case 'u':	 // 1 string to match.
            if (NameR[9] != 'i')
              break;
            return Intrinsic::nvvm_min_ui;	 // "vvm.min.ui"
          }
          break;
        }
        break;
      case 'p':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "opc.i", 5))
          break;
        return Intrinsic::nvvm_popc_i;	 // "vvm.popc.i"
      case 's':	 // 2 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "d.ui", 4))
            break;
          return Intrinsic::nvvm_sad_ui;	 // "vvm.sad.ui"
        case 'q':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "rt.f", 4))
            break;
          return Intrinsic::nvvm_sqrt_f;	 // "vvm.sqrt.f"
        }
        break;
      }
      break;
    case 11:	 // 43 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'd':	 // 8 strings to match.
        if (NameR[5] != '2')
          break;
        switch (NameR[6]) {
        default: break;
        case 'l':	 // 4 strings to match.
          if (memcmp(NameR.data()+7, "l.r", 3))
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_d2ll_rm;	 // "vvm.d2ll.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_d2ll_rn;	 // "vvm.d2ll.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_d2ll_rp;	 // "vvm.d2ll.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_d2ll_rz;	 // "vvm.d2ll.rz"
          }
          break;
        case 'u':	 // 4 strings to match.
          if (memcmp(NameR.data()+7, "i.r", 3))
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_d2ui_rm;	 // "vvm.d2ui.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_d2ui_rn;	 // "vvm.d2ui.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_d2ui_rp;	 // "vvm.d2ui.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_d2ui_rz;	 // "vvm.d2ui.rz"
          }
          break;
        }
        break;
      case 'f':	 // 10 strings to match.
        switch (NameR[5]) {
        default: break;
        case '2':	 // 8 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'l':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "l.r", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'm':	 // 1 string to match.
              return Intrinsic::nvvm_f2ll_rm;	 // "vvm.f2ll.rm"
            case 'n':	 // 1 string to match.
              return Intrinsic::nvvm_f2ll_rn;	 // "vvm.f2ll.rn"
            case 'p':	 // 1 string to match.
              return Intrinsic::nvvm_f2ll_rp;	 // "vvm.f2ll.rp"
            case 'z':	 // 1 string to match.
              return Intrinsic::nvvm_f2ll_rz;	 // "vvm.f2ll.rz"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "i.r", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'm':	 // 1 string to match.
              return Intrinsic::nvvm_f2ui_rm;	 // "vvm.f2ui.rm"
            case 'n':	 // 1 string to match.
              return Intrinsic::nvvm_f2ui_rn;	 // "vvm.f2ui.rn"
            case 'p':	 // 1 string to match.
              return Intrinsic::nvvm_f2ui_rp;	 // "vvm.f2ui.rp"
            case 'z':	 // 1 string to match.
              return Intrinsic::nvvm_f2ui_rz;	 // "vvm.f2ui.rz"
            }
            break;
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "oor.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_floor_d;	 // "vvm.floor.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_floor_f;	 // "vvm.floor.f"
          }
          break;
        }
        break;
      case 'l':	 // 8 strings to match.
        if (memcmp(NameR.data()+5, "l2", 2))
          break;
        switch (NameR[7]) {
        default: break;
        case 'd':	 // 4 strings to match.
          if (memcmp(NameR.data()+8, ".r", 2))
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_ll2d_rm;	 // "vvm.ll2d.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_ll2d_rn;	 // "vvm.ll2d.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_ll2d_rp;	 // "vvm.ll2d.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_ll2d_rz;	 // "vvm.ll2d.rz"
          }
          break;
        case 'f':	 // 4 strings to match.
          if (memcmp(NameR.data()+8, ".r", 2))
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_ll2f_rm;	 // "vvm.ll2f.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_ll2f_rn;	 // "vvm.ll2f.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_ll2f_rp;	 // "vvm.ll2f.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_ll2f_rz;	 // "vvm.ll2f.rz"
          }
          break;
        }
        break;
      case 'm':	 // 4 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "x.ull", 5))
            break;
          return Intrinsic::nvvm_max_ull;	 // "vvm.max.ull"
        case 'i':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "n.ull", 5))
            break;
          return Intrinsic::nvvm_min_ull;	 // "vvm.min.ull"
        case 'u':	 // 2 strings to match.
          if (NameR[6] != 'l')
            break;
          switch (NameR[7]) {
          default: break;
          case '2':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "4.i", 3))
              break;
            return Intrinsic::nvvm_mul24_i;	 // "vvm.mul24.i"
          case 'h':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "i.i", 3))
              break;
            return Intrinsic::nvvm_mulhi_i;	 // "vvm.mulhi.i"
          }
          break;
        }
        break;
      case 'p':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "opc.ll", 6))
          break;
        return Intrinsic::nvvm_popc_ll;	 // "vvm.popc.ll"
      case 'r':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "ound.", 5))
          break;
        switch (NameR[10]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_round_d;	 // "vvm.round.d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_round_f;	 // "vvm.round.f"
        }
        break;
      case 't':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "runc.", 5))
          break;
        switch (NameR[10]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_trunc_d;	 // "vvm.trunc.d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_trunc_f;	 // "vvm.trunc.f"
        }
        break;
      case 'u':	 // 8 strings to match.
        if (memcmp(NameR.data()+5, "i2", 2))
          break;
        switch (NameR[7]) {
        default: break;
        case 'd':	 // 4 strings to match.
          if (memcmp(NameR.data()+8, ".r", 2))
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_ui2d_rm;	 // "vvm.ui2d.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_ui2d_rn;	 // "vvm.ui2d.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_ui2d_rp;	 // "vvm.ui2d.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_ui2d_rz;	 // "vvm.ui2d.rz"
          }
          break;
        case 'f':	 // 4 strings to match.
          if (memcmp(NameR.data()+8, ".r", 2))
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_ui2f_rm;	 // "vvm.ui2f.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_ui2f_rn;	 // "vvm.ui2f.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_ui2f_rp;	 // "vvm.ui2f.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_ui2f_rz;	 // "vvm.ui2f.rz"
          }
          break;
        }
        break;
      }
      break;
    case 12:	 // 64 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'a':	 // 8 strings to match.
        if (memcmp(NameR.data()+5, "dd.r", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'm':	 // 2 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_add_rm_d;	 // "vvm.add.rm.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_add_rm_f;	 // "vvm.add.rm.f"
          }
          break;
        case 'n':	 // 2 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_add_rn_d;	 // "vvm.add.rn.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_add_rn_f;	 // "vvm.add.rn.f"
          }
          break;
        case 'p':	 // 2 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_add_rp_d;	 // "vvm.add.rp.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_add_rp_f;	 // "vvm.add.rp.f"
          }
          break;
        case 'z':	 // 2 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_add_rz_d;	 // "vvm.add.rz.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_add_rz_f;	 // "vvm.add.rz.f"
          }
          break;
        }
        break;
      case 'b':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "arrier0", 7))
          break;
        return Intrinsic::nvvm_barrier0;	 // "vvm.barrier0"
      case 'd':	 // 12 strings to match.
        switch (NameR[5]) {
        default: break;
        case '2':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "ull.r", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_d2ull_rm;	 // "vvm.d2ull.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_d2ull_rn;	 // "vvm.d2ull.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_d2ull_rp;	 // "vvm.d2ull.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_d2ull_rz;	 // "vvm.d2ull.rz"
          }
          break;
        case 'i':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "v.r", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'm':	 // 2 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_div_rm_d;	 // "vvm.div.rm.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_div_rm_f;	 // "vvm.div.rm.f"
            }
            break;
          case 'n':	 // 2 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_div_rn_d;	 // "vvm.div.rn.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_div_rn_f;	 // "vvm.div.rn.f"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_div_rp_d;	 // "vvm.div.rp.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_div_rp_f;	 // "vvm.div.rp.f"
            }
            break;
          case 'z':	 // 2 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_div_rz_d;	 // "vvm.div.rz.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_div_rz_f;	 // "vvm.div.rz.f"
            }
            break;
          }
          break;
        }
        break;
      case 'f':	 // 12 strings to match.
        switch (NameR[5]) {
        default: break;
        case '2':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "ull.r", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_f2ull_rm;	 // "vvm.f2ull.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_f2ull_rn;	 // "vvm.f2ull.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_f2ull_rp;	 // "vvm.f2ull.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_f2ull_rz;	 // "vvm.f2ull.rz"
          }
          break;
        case 'm':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "a.r", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'm':	 // 2 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_fma_rm_d;	 // "vvm.fma.rm.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_fma_rm_f;	 // "vvm.fma.rm.f"
            }
            break;
          case 'n':	 // 2 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_fma_rn_d;	 // "vvm.fma.rn.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_fma_rn_f;	 // "vvm.fma.rn.f"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_fma_rp_d;	 // "vvm.fma.rp.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_fma_rp_f;	 // "vvm.fma.rp.f"
            }
            break;
          case 'z':	 // 2 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_fma_rz_d;	 // "vvm.fma.rz.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_fma_rz_f;	 // "vvm.fma.rz.f"
            }
            break;
          }
          break;
        }
        break;
      case 'l':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "ohi.i2d", 7))
          break;
        return Intrinsic::nvvm_lohi_i2d;	 // "vvm.lohi.i2d"
      case 'm':	 // 14 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'o':	 // 3 strings to match.
          if (memcmp(NameR.data()+6, "ve.i", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case '1':	 // 1 string to match.
            if (NameR[11] != '6')
              break;
            return Intrinsic::nvvm_move_i16;	 // "vvm.move.i16"
          case '3':	 // 1 string to match.
            if (NameR[11] != '2')
              break;
            return Intrinsic::nvvm_move_i32;	 // "vvm.move.i32"
          case '6':	 // 1 string to match.
            if (NameR[11] != '4')
              break;
            return Intrinsic::nvvm_move_i64;	 // "vvm.move.i64"
          }
          break;
        case 'u':	 // 11 strings to match.
          if (NameR[6] != 'l')
            break;
          switch (NameR[7]) {
          default: break;
          case '.':	 // 8 strings to match.
            if (NameR[8] != 'r')
              break;
            switch (NameR[9]) {
            default: break;
            case 'm':	 // 2 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::nvvm_mul_rm_d;	 // "vvm.mul.rm.d"
              case 'f':	 // 1 string to match.
                return Intrinsic::nvvm_mul_rm_f;	 // "vvm.mul.rm.f"
              }
              break;
            case 'n':	 // 2 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::nvvm_mul_rn_d;	 // "vvm.mul.rn.d"
              case 'f':	 // 1 string to match.
                return Intrinsic::nvvm_mul_rn_f;	 // "vvm.mul.rn.f"
              }
              break;
            case 'p':	 // 2 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::nvvm_mul_rp_d;	 // "vvm.mul.rp.d"
              case 'f':	 // 1 string to match.
                return Intrinsic::nvvm_mul_rp_f;	 // "vvm.mul.rp.f"
              }
              break;
            case 'z':	 // 2 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::nvvm_mul_rz_d;	 // "vvm.mul.rz.d"
              case 'f':	 // 1 string to match.
                return Intrinsic::nvvm_mul_rz_f;	 // "vvm.mul.rz.f"
              }
              break;
            }
            break;
          case '2':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "4.ui", 4))
              break;
            return Intrinsic::nvvm_mul24_ui;	 // "vvm.mul24.ui"
          case 'h':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "i.", 2))
              break;
            switch (NameR[10]) {
            default: break;
            case 'l':	 // 1 string to match.
              if (NameR[11] != 'l')
                break;
              return Intrinsic::nvvm_mulhi_ll;	 // "vvm.mulhi.ll"
            case 'u':	 // 1 string to match.
              if (NameR[11] != 'i')
                break;
              return Intrinsic::nvvm_mulhi_ui;	 // "vvm.mulhi.ui"
            }
            break;
          }
          break;
        }
        break;
      case 'r':	 // 8 strings to match.
        if (memcmp(NameR.data()+5, "cp.r", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'm':	 // 2 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_rcp_rm_d;	 // "vvm.rcp.rm.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_rcp_rm_f;	 // "vvm.rcp.rm.f"
          }
          break;
        case 'n':	 // 2 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_rcp_rn_d;	 // "vvm.rcp.rn.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_rcp_rn_f;	 // "vvm.rcp.rn.f"
          }
          break;
        case 'p':	 // 2 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_rcp_rp_d;	 // "vvm.rcp.rp.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_rcp_rp_f;	 // "vvm.rcp.rp.f"
          }
          break;
        case 'z':	 // 2 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_rcp_rz_d;	 // "vvm.rcp.rz.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_rcp_rz_f;	 // "vvm.rcp.rz.f"
          }
          break;
        }
        break;
      case 'u':	 // 8 strings to match.
        if (memcmp(NameR.data()+5, "ll2", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 'd':	 // 4 strings to match.
          if (memcmp(NameR.data()+9, ".r", 2))
            break;
          switch (NameR[11]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_ull2d_rm;	 // "vvm.ull2d.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_ull2d_rn;	 // "vvm.ull2d.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_ull2d_rp;	 // "vvm.ull2d.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_ull2d_rz;	 // "vvm.ull2d.rz"
          }
          break;
        case 'f':	 // 4 strings to match.
          if (memcmp(NameR.data()+9, ".r", 2))
            break;
          switch (NameR[11]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_ull2f_rm;	 // "vvm.ull2f.rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_ull2f_rn;	 // "vvm.ull2f.rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_ull2f_rp;	 // "vvm.ull2f.rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_ull2f_rz;	 // "vvm.ull2f.rz"
          }
          break;
        }
        break;
      }
      break;
    case 13:	 // 14 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'm':	 // 2 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "mbar.gl", 7))
            break;
          return Intrinsic::nvvm_membar_gl;	 // "vvm.membar.gl"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "lhi.ull", 7))
            break;
          return Intrinsic::nvvm_mulhi_ull;	 // "vvm.mulhi.ull"
        }
        break;
      case 's':	 // 10 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'q':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "rt.r", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 2 strings to match.
            if (NameR[11] != '.')
              break;
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_sqrt_rm_d;	 // "vvm.sqrt.rm.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_sqrt_rm_f;	 // "vvm.sqrt.rm.f"
            }
            break;
          case 'n':	 // 2 strings to match.
            if (NameR[11] != '.')
              break;
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_sqrt_rn_d;	 // "vvm.sqrt.rn.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_sqrt_rn_f;	 // "vvm.sqrt.rn.f"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (NameR[11] != '.')
              break;
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_sqrt_rp_d;	 // "vvm.sqrt.rp.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_sqrt_rp_f;	 // "vvm.sqrt.rp.f"
            }
            break;
          case 'z':	 // 2 strings to match.
            if (NameR[11] != '.')
              break;
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_sqrt_rz_d;	 // "vvm.sqrt.rz.d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_sqrt_rz_f;	 // "vvm.sqrt.rz.f"
            }
            break;
          }
          break;
        case 'u':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "q.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+9, "epth", 4))
              break;
            return Intrinsic::nvvm_suq_depth;	 // "vvm.suq.depth"
          case 'w':	 // 1 string to match.
            if (memcmp(NameR.data()+9, "idth", 4))
              break;
            return Intrinsic::nvvm_suq_width;	 // "vvm.suq.width"
          }
          break;
        }
        break;
      case 't':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "xq.", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "epth", 4))
            break;
          return Intrinsic::nvvm_txq_depth;	 // "vvm.txq.depth"
        case 'w':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "idth", 4))
            break;
          return Intrinsic::nvvm_txq_width;	 // "vvm.txq.width"
        }
        break;
      }
      break;
    case 14:	 // 22 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "eil.ftz.f", 9))
          break;
        return Intrinsic::nvvm_ceil_ftz_f;	 // "vvm.ceil.ftz.f"
      case 'd':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "2f.r", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz", 4))
            break;
          return Intrinsic::nvvm_d2f_rm_ftz;	 // "vvm.d2f.rm.ftz"
        case 'n':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz", 4))
            break;
          return Intrinsic::nvvm_d2f_rn_ftz;	 // "vvm.d2f.rn.ftz"
        case 'p':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz", 4))
            break;
          return Intrinsic::nvvm_d2f_rp_ftz;	 // "vvm.d2f.rp.ftz"
        case 'z':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz", 4))
            break;
          return Intrinsic::nvvm_d2f_rz_ftz;	 // "vvm.d2f.rz.ftz"
        }
        break;
      case 'f':	 // 8 strings to match.
        switch (NameR[5]) {
        default: break;
        case '2':	 // 5 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (memcmp(NameR.data()+7, ".rn.ftz", 7))
              break;
            return Intrinsic::nvvm_f2h_rn_ftz;	 // "vvm.f2h.rn.ftz"
          case 'i':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, ".r", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+10, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2i_rm_ftz;	 // "vvm.f2i.rm.ftz"
            case 'n':	 // 1 string to match.
              if (memcmp(NameR.data()+10, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2i_rn_ftz;	 // "vvm.f2i.rn.ftz"
            case 'p':	 // 1 string to match.
              if (memcmp(NameR.data()+10, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2i_rp_ftz;	 // "vvm.f2i.rp.ftz"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+10, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2i_rz_ftz;	 // "vvm.f2i.rz.ftz"
            }
            break;
          }
          break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "bs.ftz.f", 8))
            break;
          return Intrinsic::nvvm_fabs_ftz_f;	 // "vvm.fabs.ftz.f"
        case 'm':	 // 2 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "x.ftz.f", 7))
              break;
            return Intrinsic::nvvm_fmax_ftz_f;	 // "vvm.fmax.ftz.f"
          case 'i':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "n.ftz.f", 7))
              break;
            return Intrinsic::nvvm_fmin_ftz_f;	 // "vvm.fmin.ftz.f"
          }
          break;
        }
        break;
      case 'm':	 // 3 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'e':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "mbar.", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "ta", 2))
              break;
            return Intrinsic::nvvm_membar_cta;	 // "vvm.membar.cta"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "ys", 2))
              break;
            return Intrinsic::nvvm_membar_sys;	 // "vvm.membar.sys"
          }
          break;
        case 'o':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "ve.float", 8))
            break;
          return Intrinsic::nvvm_move_float;	 // "vvm.move.float"
        }
        break;
      case 'r':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "otate.b", 7))
          break;
        switch (NameR[12]) {
        default: break;
        case '3':	 // 1 string to match.
          if (NameR[13] != '2')
            break;
          return Intrinsic::nvvm_rotate_b32;	 // "vvm.rotate.b32"
        case '6':	 // 1 string to match.
          if (NameR[13] != '4')
            break;
          return Intrinsic::nvvm_rotate_b64;	 // "vvm.rotate.b64"
        }
        break;
      case 's':	 // 3 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "turate.", 7))
            break;
          switch (NameR[13]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_saturate_d;	 // "vvm.saturate.d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_saturate_f;	 // "vvm.saturate.f"
          }
          break;
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "q.height", 8))
            break;
          return Intrinsic::nvvm_suq_height;	 // "vvm.suq.height"
        }
        break;
      case 't':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "xq.height", 9))
          break;
        return Intrinsic::nvvm_txq_height;	 // "vvm.txq.height"
      }
      break;
    case 15:	 // 15 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'b':	 // 3 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "rrier0.or", 9))
            break;
          return Intrinsic::nvvm_barrier0_or;	 // "vvm.barrier0.or"
        case 'i':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "tcast.", 6))
            break;
          switch (NameR[12]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "2i", 2))
              break;
            return Intrinsic::nvvm_bitcast_f2i;	 // "vvm.bitcast.f2i"
          case 'i':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "2f", 2))
              break;
            return Intrinsic::nvvm_bitcast_i2f;	 // "vvm.bitcast.i2f"
          }
          break;
        }
        break;
      case 'f':	 // 9 strings to match.
        switch (NameR[5]) {
        default: break;
        case '2':	 // 8 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'l':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "l.r", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+11, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2ll_rm_ftz;	 // "vvm.f2ll.rm.ftz"
            case 'n':	 // 1 string to match.
              if (memcmp(NameR.data()+11, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2ll_rn_ftz;	 // "vvm.f2ll.rn.ftz"
            case 'p':	 // 1 string to match.
              if (memcmp(NameR.data()+11, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2ll_rp_ftz;	 // "vvm.f2ll.rp.ftz"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+11, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2ll_rz_ftz;	 // "vvm.f2ll.rz.ftz"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (memcmp(NameR.data()+7, "i.r", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+11, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2ui_rm_ftz;	 // "vvm.f2ui.rm.ftz"
            case 'n':	 // 1 string to match.
              if (memcmp(NameR.data()+11, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2ui_rn_ftz;	 // "vvm.f2ui.rn.ftz"
            case 'p':	 // 1 string to match.
              if (memcmp(NameR.data()+11, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2ui_rp_ftz;	 // "vvm.f2ui.rp.ftz"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+11, ".ftz", 4))
                break;
              return Intrinsic::nvvm_f2ui_rz_ftz;	 // "vvm.f2ui.rz.ftz"
            }
            break;
          }
          break;
        case 'l':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "oor.ftz.f", 9))
            break;
          return Intrinsic::nvvm_floor_ftz_f;	 // "vvm.floor.ftz.f"
        }
        break;
      case 'm':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "ove.double", 10))
          break;
        return Intrinsic::nvvm_move_double;	 // "vvm.move.double"
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "ound.ftz.f", 10))
          break;
        return Intrinsic::nvvm_round_ftz_f;	 // "vvm.round.ftz.f"
      case 't':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "runc.ftz.f", 10))
          break;
        return Intrinsic::nvvm_trunc_ftz_f;	 // "vvm.trunc.ftz.f"
      }
      break;
    case 16:	 // 34 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'a':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "dd.r", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_add_rm_ftz_f;	 // "vvm.add.rm.ftz.f"
        case 'n':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_add_rn_ftz_f;	 // "vvm.add.rn.ftz.f"
        case 'p':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_add_rp_ftz_f;	 // "vvm.add.rp.ftz.f"
        case 'z':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_add_rz_ftz_f;	 // "vvm.add.rz.ftz.f"
        }
        break;
      case 'b':	 // 3 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "rrier0.and", 10))
            break;
          return Intrinsic::nvvm_barrier0_and;	 // "vvm.barrier0.and"
        case 'i':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "tcast.", 6))
            break;
          switch (NameR[12]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "2ll", 3))
              break;
            return Intrinsic::nvvm_bitcast_d2ll;	 // "vvm.bitcast.d2ll"
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "l2d", 3))
              break;
            return Intrinsic::nvvm_bitcast_ll2d;	 // "vvm.bitcast.ll2d"
          }
          break;
        }
        break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "os.approx.f", 11))
          break;
        return Intrinsic::nvvm_cos_approx_f;	 // "vvm.cos.approx.f"
      case 'd':	 // 5 strings to match.
        if (memcmp(NameR.data()+5, "iv.", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "pprox.f", 7))
            break;
          return Intrinsic::nvvm_div_approx_f;	 // "vvm.div.approx.f"
        case 'r':	 // 4 strings to match.
          switch (NameR[9]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_div_rm_ftz_f;	 // "vvm.div.rm.ftz.f"
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_div_rn_ftz_f;	 // "vvm.div.rn.ftz.f"
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_div_rp_ftz_f;	 // "vvm.div.rp.ftz.f"
          case 'z':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_div_rz_ftz_f;	 // "vvm.div.rz.ftz.f"
          }
          break;
        }
        break;
      case 'e':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "x2.approx.", 10))
          break;
        switch (NameR[15]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_ex2_approx_d;	 // "vvm.ex2.approx.d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_ex2_approx_f;	 // "vvm.ex2.approx.f"
        }
        break;
      case 'f':	 // 8 strings to match.
        switch (NameR[5]) {
        default: break;
        case '2':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "ull.r", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+12, ".ftz", 4))
              break;
            return Intrinsic::nvvm_f2ull_rm_ftz;	 // "vvm.f2ull.rm.ftz"
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+12, ".ftz", 4))
              break;
            return Intrinsic::nvvm_f2ull_rn_ftz;	 // "vvm.f2ull.rn.ftz"
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+12, ".ftz", 4))
              break;
            return Intrinsic::nvvm_f2ull_rp_ftz;	 // "vvm.f2ull.rp.ftz"
          case 'z':	 // 1 string to match.
            if (memcmp(NameR.data()+12, ".ftz", 4))
              break;
            return Intrinsic::nvvm_f2ull_rz_ftz;	 // "vvm.f2ull.rz.ftz"
          }
          break;
        case 'm':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "a.r", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_fma_rm_ftz_f;	 // "vvm.fma.rm.ftz.f"
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_fma_rn_ftz_f;	 // "vvm.fma.rn.ftz.f"
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_fma_rp_ftz_f;	 // "vvm.fma.rp.ftz.f"
          case 'z':	 // 1 string to match.
            if (memcmp(NameR.data()+10, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_fma_rz_ftz_f;	 // "vvm.fma.rz.ftz.f"
          }
          break;
        }
        break;
      case 'l':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "g2.approx.", 10))
          break;
        switch (NameR[15]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_lg2_approx_d;	 // "vvm.lg2.approx.d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_lg2_approx_f;	 // "vvm.lg2.approx.f"
        }
        break;
      case 'm':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "ul.r", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_mul_rm_ftz_f;	 // "vvm.mul.rm.ftz.f"
        case 'n':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_mul_rn_ftz_f;	 // "vvm.mul.rn.ftz.f"
        case 'p':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_mul_rp_ftz_f;	 // "vvm.mul.rp.ftz.f"
        case 'z':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_mul_rz_ftz_f;	 // "vvm.mul.rz.ftz.f"
        }
        break;
      case 'r':	 // 4 strings to match.
        if (memcmp(NameR.data()+5, "cp.r", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_rcp_rm_ftz_f;	 // "vvm.rcp.rm.ftz.f"
        case 'n':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_rcp_rn_ftz_f;	 // "vvm.rcp.rn.ftz.f"
        case 'p':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_rcp_rp_ftz_f;	 // "vvm.rcp.rp.ftz.f"
        case 'z':	 // 1 string to match.
          if (memcmp(NameR.data()+10, ".ftz.f", 6))
            break;
          return Intrinsic::nvvm_rcp_rz_ftz_f;	 // "vvm.rcp.rz.ftz.f"
        }
        break;
      case 's':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "in.approx.f", 11))
          break;
        return Intrinsic::nvvm_sin_approx_f;	 // "vvm.sin.approx.f"
      }
      break;
    case 17:	 // 6 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'b':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "arrier0.popc", 12))
          break;
        return Intrinsic::nvvm_barrier0_popc;	 // "vvm.barrier0.popc"
      case 's':	 // 5 strings to match.
        if (memcmp(NameR.data()+5, "qrt.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+10, "pprox.f", 7))
            break;
          return Intrinsic::nvvm_sqrt_approx_f;	 // "vvm.sqrt.approx.f"
        case 'r':	 // 4 strings to match.
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+11, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_sqrt_rm_ftz_f;	 // "vvm.sqrt.rm.ftz.f"
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+11, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_sqrt_rn_ftz_f;	 // "vvm.sqrt.rn.ftz.f"
          case 'p':	 // 1 string to match.
            if (memcmp(NameR.data()+11, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_sqrt_rp_ftz_f;	 // "vvm.sqrt.rp.ftz.f"
          case 'z':	 // 1 string to match.
            if (memcmp(NameR.data()+11, ".ftz.f", 6))
              break;
            return Intrinsic::nvvm_sqrt_rz_ftz_f;	 // "vvm.sqrt.rz.ftz.f"
          }
          break;
        }
        break;
      }
      break;
    case 18:	 // 8 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'i':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "sspacep.", 8))
          break;
        switch (NameR[13]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(NameR.data()+14, "onst", 4))
            break;
          return Intrinsic::nvvm_isspacep_const;	 // "vvm.isspacep.const"
        case 'l':	 // 1 string to match.
          if (memcmp(NameR.data()+14, "ocal", 4))
            break;
          return Intrinsic::nvvm_isspacep_local;	 // "vvm.isspacep.local"
        }
        break;
      case 'r':	 // 2 strings to match.
        if (memcmp(NameR.data()+5, "sqrt.approx.", 12))
          break;
        switch (NameR[17]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_rsqrt_approx_d;	 // "vvm.rsqrt.approx.d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_rsqrt_approx_f;	 // "vvm.rsqrt.approx.f"
        }
        break;
      case 's':	 // 3 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "turate.ftz.f", 12))
            break;
          return Intrinsic::nvvm_saturate_ftz_f;	 // "vvm.saturate.ftz.f"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "q.array.size", 12))
            break;
          return Intrinsic::nvvm_suq_array_size;	 // "vvm.suq.array.size"
        case 'w':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "ap.lo.hi.b64", 12))
            break;
          return Intrinsic::nvvm_swap_lo_hi_b64;	 // "vvm.swap.lo.hi.b64"
        }
        break;
      case 't':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "xq.array.size", 13))
          break;
        return Intrinsic::nvvm_txq_array_size;	 // "vvm.txq.array.size"
      }
      break;
    case 19:	 // 12 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'i':	 // 5 strings to match.
        if (NameR[5] != 's')
          break;
        switch (NameR[6]) {
        default: break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+7, "pacep.", 6))
            break;
          switch (NameR[13]) {
          default: break;
          case 'g':	 // 1 string to match.
            if (memcmp(NameR.data()+14, "lobal", 5))
              break;
            return Intrinsic::nvvm_isspacep_global;	 // "vvm.isspacep.global"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+14, "hared", 5))
              break;
            return Intrinsic::nvvm_isspacep_shared;	 // "vvm.isspacep.shared"
          }
          break;
        case 't':	 // 3 strings to match.
          if (memcmp(NameR.data()+7, "ypep.", 5))
            break;
          switch (NameR[12]) {
          default: break;
          case 's':	 // 2 strings to match.
            switch (NameR[13]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "mpler", 5))
                break;
              return Intrinsic::nvvm_istypep_sampler;	 // "vvm.istypep.sampler"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "rface", 5))
                break;
              return Intrinsic::nvvm_istypep_surface;	 // "vvm.istypep.surface"
            }
            break;
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "exture", 6))
              break;
            return Intrinsic::nvvm_istypep_texture;	 // "vvm.istypep.texture"
          }
          break;
        }
        break;
      case 's':	 // 6 strings to match.
        if (memcmp(NameR.data()+5, "uld.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case '1':	 // 2 strings to match.
          if (memcmp(NameR.data()+10, "d.i8.", 5))
            break;
          switch (NameR[15]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+16, "rap", 3))
              break;
            return Intrinsic::nvvm_suld_1d_i8_trap;	 // "vvm.suld.1d.i8.trap"
          case 'z':	 // 1 string to match.
            if (memcmp(NameR.data()+16, "ero", 3))
              break;
            return Intrinsic::nvvm_suld_1d_i8_zero;	 // "vvm.suld.1d.i8.zero"
          }
          break;
        case '2':	 // 2 strings to match.
          if (memcmp(NameR.data()+10, "d.i8.", 5))
            break;
          switch (NameR[15]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+16, "rap", 3))
              break;
            return Intrinsic::nvvm_suld_2d_i8_trap;	 // "vvm.suld.2d.i8.trap"
          case 'z':	 // 1 string to match.
            if (memcmp(NameR.data()+16, "ero", 3))
              break;
            return Intrinsic::nvvm_suld_2d_i8_zero;	 // "vvm.suld.2d.i8.zero"
          }
          break;
        case '3':	 // 2 strings to match.
          if (memcmp(NameR.data()+10, "d.i8.", 5))
            break;
          switch (NameR[15]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(NameR.data()+16, "rap", 3))
              break;
            return Intrinsic::nvvm_suld_3d_i8_trap;	 // "vvm.suld.3d.i8.trap"
          case 'z':	 // 1 string to match.
            if (memcmp(NameR.data()+16, "ero", 3))
              break;
            return Intrinsic::nvvm_suld_3d_i8_zero;	 // "vvm.suld.3d.i8.zero"
          }
          break;
        }
        break;
      case 't':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "xq.num.samples", 14))
          break;
        return Intrinsic::nvvm_txq_num_samples;	 // "vvm.txq.num.samples"
      }
      break;
    case 20:	 // 46 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "os.approx.ftz.f", 15))
          break;
        return Intrinsic::nvvm_cos_approx_ftz_f;	 // "vvm.cos.approx.ftz.f"
      case 'd':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "iv.approx.ftz.f", 15))
          break;
        return Intrinsic::nvvm_div_approx_ftz_f;	 // "vvm.div.approx.ftz.f"
      case 'e':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "x2.approx.ftz.f", 15))
          break;
        return Intrinsic::nvvm_ex2_approx_ftz_f;	 // "vvm.ex2.approx.ftz.f"
      case 'l':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "g2.approx.ftz.f", 15))
          break;
        return Intrinsic::nvvm_lg2_approx_ftz_f;	 // "vvm.lg2.approx.ftz.f"
      case 'r':	 // 2 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "p.approx.ftz.d", 14))
            break;
          return Intrinsic::nvvm_rcp_approx_ftz_d;	 // "vvm.rcp.approx.ftz.d"
        case 'o':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "tate.right.b64", 14))
            break;
          return Intrinsic::nvvm_rotate_right_b64;	 // "vvm.rotate.right.b64"
        }
        break;
      case 's':	 // 22 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'i':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "n.approx.ftz.f", 14))
            break;
          return Intrinsic::nvvm_sin_approx_ftz_f;	 // "vvm.sin.approx.ftz.f"
        case 'u':	 // 21 strings to match.
          if (memcmp(NameR.data()+6, "ld.", 3))
            break;
          switch (NameR[9]) {
          default: break;
          case '1':	 // 7 strings to match.
            if (memcmp(NameR.data()+10, "d.i", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "6.", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_1d_i16_trap;	 // "vvm.suld.1d.i16.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_1d_i16_zero;	 // "vvm.suld.1d.i16.zero"
              }
              break;
            case '3':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "2.", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_1d_i32_trap;	 // "vvm.suld.1d.i32.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_1d_i32_zero;	 // "vvm.suld.1d.i32.zero"
              }
              break;
            case '6':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "4.", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_1d_i64_trap;	 // "vvm.suld.1d.i64.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_1d_i64_zero;	 // "vvm.suld.1d.i64.zero"
              }
              break;
            case '8':	 // 1 string to match.
              if (memcmp(NameR.data()+14, ".clamp", 6))
                break;
              return Intrinsic::nvvm_suld_1d_i8_clamp;	 // "vvm.suld.1d.i8.clamp"
            }
            break;
          case '2':	 // 7 strings to match.
            if (memcmp(NameR.data()+10, "d.i", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "6.", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_2d_i16_trap;	 // "vvm.suld.2d.i16.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_2d_i16_zero;	 // "vvm.suld.2d.i16.zero"
              }
              break;
            case '3':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "2.", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_2d_i32_trap;	 // "vvm.suld.2d.i32.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_2d_i32_zero;	 // "vvm.suld.2d.i32.zero"
              }
              break;
            case '6':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "4.", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_2d_i64_trap;	 // "vvm.suld.2d.i64.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_2d_i64_zero;	 // "vvm.suld.2d.i64.zero"
              }
              break;
            case '8':	 // 1 string to match.
              if (memcmp(NameR.data()+14, ".clamp", 6))
                break;
              return Intrinsic::nvvm_suld_2d_i8_clamp;	 // "vvm.suld.2d.i8.clamp"
            }
            break;
          case '3':	 // 7 strings to match.
            if (memcmp(NameR.data()+10, "d.i", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "6.", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_3d_i16_trap;	 // "vvm.suld.3d.i16.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_3d_i16_zero;	 // "vvm.suld.3d.i16.zero"
              }
              break;
            case '3':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "2.", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_3d_i32_trap;	 // "vvm.suld.3d.i32.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_3d_i32_zero;	 // "vvm.suld.3d.i32.zero"
              }
              break;
            case '6':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "4.", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_3d_i64_trap;	 // "vvm.suld.3d.i64.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+17, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_3d_i64_zero;	 // "vvm.suld.3d.i64.zero"
              }
              break;
            case '8':	 // 1 string to match.
              if (memcmp(NameR.data()+14, ".clamp", 6))
                break;
              return Intrinsic::nvvm_suld_3d_i8_clamp;	 // "vvm.suld.3d.i8.clamp"
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 18 strings to match.
        if (memcmp(NameR.data()+5, "ex.", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case '1':	 // 6 strings to match.
          if (memcmp(NameR.data()+9, "d.v4", 4))
            break;
          switch (NameR[13]) {
          default: break;
          case 'f':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "32.", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_1d_v4f32_f32;	 // "vvm.tex.1d.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_1d_v4f32_s32;	 // "vvm.tex.1d.v4f32.s32"
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "32.", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_1d_v4s32_f32;	 // "vvm.tex.1d.v4s32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_1d_v4s32_s32;	 // "vvm.tex.1d.v4s32.s32"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "32.", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_1d_v4u32_f32;	 // "vvm.tex.1d.v4u32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_1d_v4u32_s32;	 // "vvm.tex.1d.v4u32.s32"
            }
            break;
          }
          break;
        case '2':	 // 6 strings to match.
          if (memcmp(NameR.data()+9, "d.v4", 4))
            break;
          switch (NameR[13]) {
          default: break;
          case 'f':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "32.", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_2d_v4f32_f32;	 // "vvm.tex.2d.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_2d_v4f32_s32;	 // "vvm.tex.2d.v4f32.s32"
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "32.", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_2d_v4s32_f32;	 // "vvm.tex.2d.v4s32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_2d_v4s32_s32;	 // "vvm.tex.2d.v4s32.s32"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "32.", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_2d_v4u32_f32;	 // "vvm.tex.2d.v4u32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_2d_v4u32_s32;	 // "vvm.tex.2d.v4u32.s32"
            }
            break;
          }
          break;
        case '3':	 // 6 strings to match.
          if (memcmp(NameR.data()+9, "d.v4", 4))
            break;
          switch (NameR[13]) {
          default: break;
          case 'f':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "32.", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_3d_v4f32_f32;	 // "vvm.tex.3d.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_3d_v4f32_s32;	 // "vvm.tex.3d.v4f32.s32"
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "32.", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_3d_v4s32_f32;	 // "vvm.tex.3d.v4s32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_3d_v4s32_s32;	 // "vvm.tex.3d.v4s32.s32"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "32.", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_3d_v4u32_f32;	 // "vvm.tex.3d.v4u32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "32", 2))
                break;
              return Intrinsic::nvvm_tex_3d_v4u32_s32;	 // "vvm.tex.3d.v4u32.s32"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 21:	 // 33 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 's':	 // 32 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'q':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "rt.approx.ftz.f", 15))
            break;
          return Intrinsic::nvvm_sqrt_approx_ftz_f;	 // "vvm.sqrt.approx.ftz.f"
        case 'u':	 // 31 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'l':	 // 21 strings to match.
            if (memcmp(NameR.data()+7, "d.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case '1':	 // 7 strings to match.
              if (memcmp(NameR.data()+10, "d.", 2))
                break;
              switch (NameR[12]) {
              default: break;
              case 'i':	 // 3 strings to match.
                switch (NameR[13]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "6.clamp", 7))
                    break;
                  return Intrinsic::nvvm_suld_1d_i16_clamp;	 // "vvm.suld.1d.i16.clamp"
                case '3':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "2.clamp", 7))
                    break;
                  return Intrinsic::nvvm_suld_1d_i32_clamp;	 // "vvm.suld.1d.i32.clamp"
                case '6':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "4.clamp", 7))
                    break;
                  return Intrinsic::nvvm_suld_1d_i64_clamp;	 // "vvm.suld.1d.i64.clamp"
                }
                break;
              case 'v':	 // 4 strings to match.
                switch (NameR[13]) {
                default: break;
                case '2':	 // 2 strings to match.
                  if (memcmp(NameR.data()+14, "i8.", 3))
                    break;
                  switch (NameR[17]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "rap", 3))
                      break;
                    return Intrinsic::nvvm_suld_1d_v2i8_trap;	 // "vvm.suld.1d.v2i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "ero", 3))
                      break;
                    return Intrinsic::nvvm_suld_1d_v2i8_zero;	 // "vvm.suld.1d.v2i8.zero"
                  }
                  break;
                case '4':	 // 2 strings to match.
                  if (memcmp(NameR.data()+14, "i8.", 3))
                    break;
                  switch (NameR[17]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "rap", 3))
                      break;
                    return Intrinsic::nvvm_suld_1d_v4i8_trap;	 // "vvm.suld.1d.v4i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "ero", 3))
                      break;
                    return Intrinsic::nvvm_suld_1d_v4i8_zero;	 // "vvm.suld.1d.v4i8.zero"
                  }
                  break;
                }
                break;
              }
              break;
            case '2':	 // 7 strings to match.
              if (memcmp(NameR.data()+10, "d.", 2))
                break;
              switch (NameR[12]) {
              default: break;
              case 'i':	 // 3 strings to match.
                switch (NameR[13]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "6.clamp", 7))
                    break;
                  return Intrinsic::nvvm_suld_2d_i16_clamp;	 // "vvm.suld.2d.i16.clamp"
                case '3':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "2.clamp", 7))
                    break;
                  return Intrinsic::nvvm_suld_2d_i32_clamp;	 // "vvm.suld.2d.i32.clamp"
                case '6':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "4.clamp", 7))
                    break;
                  return Intrinsic::nvvm_suld_2d_i64_clamp;	 // "vvm.suld.2d.i64.clamp"
                }
                break;
              case 'v':	 // 4 strings to match.
                switch (NameR[13]) {
                default: break;
                case '2':	 // 2 strings to match.
                  if (memcmp(NameR.data()+14, "i8.", 3))
                    break;
                  switch (NameR[17]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "rap", 3))
                      break;
                    return Intrinsic::nvvm_suld_2d_v2i8_trap;	 // "vvm.suld.2d.v2i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "ero", 3))
                      break;
                    return Intrinsic::nvvm_suld_2d_v2i8_zero;	 // "vvm.suld.2d.v2i8.zero"
                  }
                  break;
                case '4':	 // 2 strings to match.
                  if (memcmp(NameR.data()+14, "i8.", 3))
                    break;
                  switch (NameR[17]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "rap", 3))
                      break;
                    return Intrinsic::nvvm_suld_2d_v4i8_trap;	 // "vvm.suld.2d.v4i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "ero", 3))
                      break;
                    return Intrinsic::nvvm_suld_2d_v4i8_zero;	 // "vvm.suld.2d.v4i8.zero"
                  }
                  break;
                }
                break;
              }
              break;
            case '3':	 // 7 strings to match.
              if (memcmp(NameR.data()+10, "d.", 2))
                break;
              switch (NameR[12]) {
              default: break;
              case 'i':	 // 3 strings to match.
                switch (NameR[13]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "6.clamp", 7))
                    break;
                  return Intrinsic::nvvm_suld_3d_i16_clamp;	 // "vvm.suld.3d.i16.clamp"
                case '3':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "2.clamp", 7))
                    break;
                  return Intrinsic::nvvm_suld_3d_i32_clamp;	 // "vvm.suld.3d.i32.clamp"
                case '6':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, "4.clamp", 7))
                    break;
                  return Intrinsic::nvvm_suld_3d_i64_clamp;	 // "vvm.suld.3d.i64.clamp"
                }
                break;
              case 'v':	 // 4 strings to match.
                switch (NameR[13]) {
                default: break;
                case '2':	 // 2 strings to match.
                  if (memcmp(NameR.data()+14, "i8.", 3))
                    break;
                  switch (NameR[17]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "rap", 3))
                      break;
                    return Intrinsic::nvvm_suld_3d_v2i8_trap;	 // "vvm.suld.3d.v2i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "ero", 3))
                      break;
                    return Intrinsic::nvvm_suld_3d_v2i8_zero;	 // "vvm.suld.3d.v2i8.zero"
                  }
                  break;
                case '4':	 // 2 strings to match.
                  if (memcmp(NameR.data()+14, "i8.", 3))
                    break;
                  switch (NameR[17]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "rap", 3))
                      break;
                    return Intrinsic::nvvm_suld_3d_v4i8_trap;	 // "vvm.suld.3d.v4i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+18, "ero", 3))
                      break;
                    return Intrinsic::nvvm_suld_3d_v4i8_zero;	 // "vvm.suld.3d.v4i8.zero"
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          case 'q':	 // 1 string to match.
            if (memcmp(NameR.data()+7, ".channel.order", 14))
              break;
            return Intrinsic::nvvm_suq_channel_order;	 // "vvm.suq.channel.order"
          case 's':	 // 9 strings to match.
            if (memcmp(NameR.data()+7, "t.", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'b':	 // 6 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+12, "d.i8.", 5))
                  break;
                switch (NameR[17]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+18, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i8_trap;	 // "vvm.sust.b.1d.i8.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+18, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i8_zero;	 // "vvm.sust.b.1d.i8.zero"
                }
                break;
              case '2':	 // 2 strings to match.
                if (memcmp(NameR.data()+12, "d.i8.", 5))
                  break;
                switch (NameR[17]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+18, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i8_trap;	 // "vvm.sust.b.2d.i8.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+18, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i8_zero;	 // "vvm.sust.b.2d.i8.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+12, "d.i8.", 5))
                  break;
                switch (NameR[17]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+18, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i8_trap;	 // "vvm.sust.b.3d.i8.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+18, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i8_zero;	 // "vvm.sust.b.3d.i8.zero"
                }
                break;
              }
              break;
            case 'p':	 // 3 strings to match.
              if (NameR[10] != '.')
                break;
              switch (NameR[11]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+12, "d.i8.trap", 9))
                  break;
                return Intrinsic::nvvm_sust_p_1d_i8_trap;	 // "vvm.sust.p.1d.i8.trap"
              case '2':	 // 1 string to match.
                if (memcmp(NameR.data()+12, "d.i8.trap", 9))
                  break;
                return Intrinsic::nvvm_sust_p_2d_i8_trap;	 // "vvm.sust.p.2d.i8.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+12, "d.i8.trap", 9))
                  break;
                return Intrinsic::nvvm_sust_p_3d_i8_trap;	 // "vvm.sust.p.3d.i8.trap"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "xq.channel.order", 16))
          break;
        return Intrinsic::nvvm_txq_channel_order;	 // "vvm.txq.channel.order"
      }
      break;
    case 22:	 // 67 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+5, "sqrt.approx.ftz.f", 17))
          break;
        return Intrinsic::nvvm_rsqrt_approx_ftz_f;	 // "vvm.rsqrt.approx.ftz.f"
      case 's':	 // 63 strings to match.
        if (NameR[5] != 'u')
          break;
        switch (NameR[6]) {
        default: break;
        case 'l':	 // 36 strings to match.
          if (memcmp(NameR.data()+7, "d.", 2))
            break;
          switch (NameR[9]) {
          default: break;
          case '1':	 // 12 strings to match.
            if (memcmp(NameR.data()+10, "d.v", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "6.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_v2i16_trap;	 // "vvm.suld.1d.v2i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_v2i16_zero;	 // "vvm.suld.1d.v2i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "2.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_v2i32_trap;	 // "vvm.suld.1d.v2i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_v2i32_zero;	 // "vvm.suld.1d.v2i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "4.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_v2i64_trap;	 // "vvm.suld.1d.v2i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_v2i64_zero;	 // "vvm.suld.1d.v2i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_suld_1d_v2i8_clamp;	 // "vvm.suld.1d.v2i8.clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "6.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_v4i16_trap;	 // "vvm.suld.1d.v4i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_v4i16_zero;	 // "vvm.suld.1d.v4i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "2.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_v4i32_trap;	 // "vvm.suld.1d.v4i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_v4i32_zero;	 // "vvm.suld.1d.v4i32.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_suld_1d_v4i8_clamp;	 // "vvm.suld.1d.v4i8.clamp"
              }
              break;
            }
            break;
          case '2':	 // 12 strings to match.
            if (memcmp(NameR.data()+10, "d.v", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "6.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_v2i16_trap;	 // "vvm.suld.2d.v2i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_v2i16_zero;	 // "vvm.suld.2d.v2i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "2.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_v2i32_trap;	 // "vvm.suld.2d.v2i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_v2i32_zero;	 // "vvm.suld.2d.v2i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "4.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_v2i64_trap;	 // "vvm.suld.2d.v2i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_v2i64_zero;	 // "vvm.suld.2d.v2i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_suld_2d_v2i8_clamp;	 // "vvm.suld.2d.v2i8.clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "6.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_v4i16_trap;	 // "vvm.suld.2d.v4i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_v4i16_zero;	 // "vvm.suld.2d.v4i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "2.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_v4i32_trap;	 // "vvm.suld.2d.v4i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_v4i32_zero;	 // "vvm.suld.2d.v4i32.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_suld_2d_v4i8_clamp;	 // "vvm.suld.2d.v4i8.clamp"
              }
              break;
            }
            break;
          case '3':	 // 12 strings to match.
            if (memcmp(NameR.data()+10, "d.v", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "6.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_3d_v2i16_trap;	 // "vvm.suld.3d.v2i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_3d_v2i16_zero;	 // "vvm.suld.3d.v2i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "2.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_3d_v2i32_trap;	 // "vvm.suld.3d.v2i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_3d_v2i32_zero;	 // "vvm.suld.3d.v2i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "4.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_3d_v2i64_trap;	 // "vvm.suld.3d.v2i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_3d_v2i64_zero;	 // "vvm.suld.3d.v2i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_suld_3d_v2i8_clamp;	 // "vvm.suld.3d.v2i8.clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "6.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_3d_v4i16_trap;	 // "vvm.suld.3d.v4i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_3d_v4i16_zero;	 // "vvm.suld.3d.v4i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "2.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_3d_v4i32_trap;	 // "vvm.suld.3d.v4i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_3d_v4i32_zero;	 // "vvm.suld.3d.v4i32.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_suld_3d_v4i8_clamp;	 // "vvm.suld.3d.v4i8.clamp"
              }
              break;
            }
            break;
          }
          break;
        case 's':	 // 27 strings to match.
          if (memcmp(NameR.data()+7, "t.", 2))
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 21 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case '1':	 // 7 strings to match.
              if (memcmp(NameR.data()+12, "d.i", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "6.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i16_trap;	 // "vvm.sust.b.1d.i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i16_zero;	 // "vvm.sust.b.1d.i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "2.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i32_trap;	 // "vvm.sust.b.1d.i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i32_zero;	 // "vvm.sust.b.1d.i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "4.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i64_trap;	 // "vvm.sust.b.1d.i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i64_zero;	 // "vvm.sust.b.1d.i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_1d_i8_clamp;	 // "vvm.sust.b.1d.i8.clamp"
              }
              break;
            case '2':	 // 7 strings to match.
              if (memcmp(NameR.data()+12, "d.i", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "6.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i16_trap;	 // "vvm.sust.b.2d.i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i16_zero;	 // "vvm.sust.b.2d.i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "2.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i32_trap;	 // "vvm.sust.b.2d.i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i32_zero;	 // "vvm.sust.b.2d.i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "4.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i64_trap;	 // "vvm.sust.b.2d.i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i64_zero;	 // "vvm.sust.b.2d.i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_2d_i8_clamp;	 // "vvm.sust.b.2d.i8.clamp"
              }
              break;
            case '3':	 // 7 strings to match.
              if (memcmp(NameR.data()+12, "d.i", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "6.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i16_trap;	 // "vvm.sust.b.3d.i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i16_zero;	 // "vvm.sust.b.3d.i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "2.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i32_trap;	 // "vvm.sust.b.3d.i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i32_zero;	 // "vvm.sust.b.3d.i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, "4.", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i64_trap;	 // "vvm.sust.b.3d.i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+19, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i64_zero;	 // "vvm.sust.b.3d.i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_3d_i8_clamp;	 // "vvm.sust.b.3d.i8.clamp"
              }
              break;
            }
            break;
          case 'p':	 // 6 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "d.i", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_i16_trap;	 // "vvm.sust.p.1d.i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_i32_trap;	 // "vvm.sust.p.1d.i32.trap"
              }
              break;
            case '2':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "d.i", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_i16_trap;	 // "vvm.sust.p.2d.i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_i32_trap;	 // "vvm.sust.p.2d.i32.trap"
              }
              break;
            case '3':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "d.i", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_3d_i16_trap;	 // "vvm.sust.p.3d.i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_3d_i32_trap;	 // "vvm.sust.p.3d.i32.trap"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 3 strings to match.
        if (memcmp(NameR.data()+5, "ex.cube.v4", 10))
          break;
        switch (NameR[15]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+16, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_cube_v4f32_f32;	 // "vvm.tex.cube.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+16, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_cube_v4s32_f32;	 // "vvm.tex.cube.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+16, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_cube_v4u32_f32;	 // "vvm.tex.cube.v4u32.f32"
        }
        break;
      }
      break;
    case 23:	 // 57 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'r':	 // 3 strings to match.
        if (memcmp(NameR.data()+5, "ead.ptx.sreg.tid.", 17))
          break;
        switch (NameR[22]) {
        default: break;
        case 'x':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_tid_x;	 // "vvm.read.ptx.sreg.tid.x"
        case 'y':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_tid_y;	 // "vvm.read.ptx.sreg.tid.y"
        case 'z':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_tid_z;	 // "vvm.read.ptx.sreg.tid.z"
        }
        break;
      case 's':	 // 42 strings to match.
        if (NameR[5] != 'u')
          break;
        switch (NameR[6]) {
        default: break;
        case 'l':	 // 15 strings to match.
          if (memcmp(NameR.data()+7, "d.", 2))
            break;
          switch (NameR[9]) {
          default: break;
          case '1':	 // 5 strings to match.
            if (memcmp(NameR.data()+10, "d.v", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case '2':	 // 3 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_1d_v2i16_clamp;	 // "vvm.suld.1d.v2i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_1d_v2i32_clamp;	 // "vvm.suld.1d.v2i32.clamp"
              case '6':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "4.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_1d_v2i64_clamp;	 // "vvm.suld.1d.v2i64.clamp"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_1d_v4i16_clamp;	 // "vvm.suld.1d.v4i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_1d_v4i32_clamp;	 // "vvm.suld.1d.v4i32.clamp"
              }
              break;
            }
            break;
          case '2':	 // 5 strings to match.
            if (memcmp(NameR.data()+10, "d.v", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case '2':	 // 3 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_2d_v2i16_clamp;	 // "vvm.suld.2d.v2i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_2d_v2i32_clamp;	 // "vvm.suld.2d.v2i32.clamp"
              case '6':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "4.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_2d_v2i64_clamp;	 // "vvm.suld.2d.v2i64.clamp"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_2d_v4i16_clamp;	 // "vvm.suld.2d.v4i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_2d_v4i32_clamp;	 // "vvm.suld.2d.v4i32.clamp"
              }
              break;
            }
            break;
          case '3':	 // 5 strings to match.
            if (memcmp(NameR.data()+10, "d.v", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case '2':	 // 3 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_3d_v2i16_clamp;	 // "vvm.suld.3d.v2i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_3d_v2i32_clamp;	 // "vvm.suld.3d.v2i32.clamp"
              case '6':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "4.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_3d_v2i64_clamp;	 // "vvm.suld.3d.v2i64.clamp"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_3d_v4i16_clamp;	 // "vvm.suld.3d.v4i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_suld_3d_v4i32_clamp;	 // "vvm.suld.3d.v4i32.clamp"
              }
              break;
            }
            break;
          }
          break;
        case 's':	 // 27 strings to match.
          if (memcmp(NameR.data()+7, "t.", 2))
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 21 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case '1':	 // 7 strings to match.
              if (memcmp(NameR.data()+12, "d.", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 3 strings to match.
                switch (NameR[15]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, "6.clamp", 7))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i16_clamp;	 // "vvm.sust.b.1d.i16.clamp"
                case '3':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, "2.clamp", 7))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i32_clamp;	 // "vvm.sust.b.1d.i32.clamp"
                case '6':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, "4.clamp", 7))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i64_clamp;	 // "vvm.sust.b.1d.i64.clamp"
                }
                break;
              case 'v':	 // 4 strings to match.
                switch (NameR[15]) {
                default: break;
                case '2':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, "i8.", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "rap", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_1d_v2i8_trap;	 // "vvm.sust.b.1d.v2i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "ero", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_1d_v2i8_zero;	 // "vvm.sust.b.1d.v2i8.zero"
                  }
                  break;
                case '4':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, "i8.", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "rap", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_1d_v4i8_trap;	 // "vvm.sust.b.1d.v4i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "ero", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_1d_v4i8_zero;	 // "vvm.sust.b.1d.v4i8.zero"
                  }
                  break;
                }
                break;
              }
              break;
            case '2':	 // 7 strings to match.
              if (memcmp(NameR.data()+12, "d.", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 3 strings to match.
                switch (NameR[15]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, "6.clamp", 7))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i16_clamp;	 // "vvm.sust.b.2d.i16.clamp"
                case '3':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, "2.clamp", 7))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i32_clamp;	 // "vvm.sust.b.2d.i32.clamp"
                case '6':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, "4.clamp", 7))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i64_clamp;	 // "vvm.sust.b.2d.i64.clamp"
                }
                break;
              case 'v':	 // 4 strings to match.
                switch (NameR[15]) {
                default: break;
                case '2':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, "i8.", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "rap", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_2d_v2i8_trap;	 // "vvm.sust.b.2d.v2i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "ero", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_2d_v2i8_zero;	 // "vvm.sust.b.2d.v2i8.zero"
                  }
                  break;
                case '4':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, "i8.", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "rap", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_2d_v4i8_trap;	 // "vvm.sust.b.2d.v4i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "ero", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_2d_v4i8_zero;	 // "vvm.sust.b.2d.v4i8.zero"
                  }
                  break;
                }
                break;
              }
              break;
            case '3':	 // 7 strings to match.
              if (memcmp(NameR.data()+12, "d.", 2))
                break;
              switch (NameR[14]) {
              default: break;
              case 'i':	 // 3 strings to match.
                switch (NameR[15]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, "6.clamp", 7))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i16_clamp;	 // "vvm.sust.b.3d.i16.clamp"
                case '3':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, "2.clamp", 7))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i32_clamp;	 // "vvm.sust.b.3d.i32.clamp"
                case '6':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, "4.clamp", 7))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i64_clamp;	 // "vvm.sust.b.3d.i64.clamp"
                }
                break;
              case 'v':	 // 4 strings to match.
                switch (NameR[15]) {
                default: break;
                case '2':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, "i8.", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "rap", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_3d_v2i8_trap;	 // "vvm.sust.b.3d.v2i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "ero", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_3d_v2i8_zero;	 // "vvm.sust.b.3d.v2i8.zero"
                  }
                  break;
                case '4':	 // 2 strings to match.
                  if (memcmp(NameR.data()+16, "i8.", 3))
                    break;
                  switch (NameR[19]) {
                  default: break;
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "rap", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_3d_v4i8_trap;	 // "vvm.sust.b.3d.v4i8.trap"
                  case 'z':	 // 1 string to match.
                    if (memcmp(NameR.data()+20, "ero", 3))
                      break;
                    return Intrinsic::nvvm_sust_b_3d_v4i8_zero;	 // "vvm.sust.b.3d.v4i8.zero"
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          case 'p':	 // 6 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "d.v", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case '2':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "i8.trap", 7))
                  break;
                return Intrinsic::nvvm_sust_p_1d_v2i8_trap;	 // "vvm.sust.p.1d.v2i8.trap"
              case '4':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "i8.trap", 7))
                  break;
                return Intrinsic::nvvm_sust_p_1d_v4i8_trap;	 // "vvm.sust.p.1d.v4i8.trap"
              }
              break;
            case '2':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "d.v", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case '2':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "i8.trap", 7))
                  break;
                return Intrinsic::nvvm_sust_p_2d_v2i8_trap;	 // "vvm.sust.p.2d.v2i8.trap"
              case '4':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "i8.trap", 7))
                  break;
                return Intrinsic::nvvm_sust_p_2d_v4i8_trap;	 // "vvm.sust.p.2d.v4i8.trap"
              }
              break;
            case '3':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "d.v", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case '2':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "i8.trap", 7))
                  break;
                return Intrinsic::nvvm_sust_p_3d_v2i8_trap;	 // "vvm.sust.p.3d.v2i8.trap"
              case '4':	 // 1 string to match.
                if (memcmp(NameR.data()+16, "i8.trap", 7))
                  break;
                return Intrinsic::nvvm_sust_p_3d_v4i8_trap;	 // "vvm.sust.p.3d.v4i8.trap"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 12 strings to match.
        if (memcmp(NameR.data()+5, "ld4.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'a':	 // 3 strings to match.
          if (memcmp(NameR.data()+10, ".2d.v4", 6))
            break;
          switch (NameR[16]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_a_2d_v4f32_f32;	 // "vvm.tld4.a.2d.v4f32.f32"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_a_2d_v4s32_f32;	 // "vvm.tld4.a.2d.v4s32.f32"
          case 'u':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_a_2d_v4u32_f32;	 // "vvm.tld4.a.2d.v4u32.f32"
          }
          break;
        case 'b':	 // 3 strings to match.
          if (memcmp(NameR.data()+10, ".2d.v4", 6))
            break;
          switch (NameR[16]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_b_2d_v4f32_f32;	 // "vvm.tld4.b.2d.v4f32.f32"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_b_2d_v4s32_f32;	 // "vvm.tld4.b.2d.v4s32.f32"
          case 'u':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_b_2d_v4u32_f32;	 // "vvm.tld4.b.2d.v4u32.f32"
          }
          break;
        case 'g':	 // 3 strings to match.
          if (memcmp(NameR.data()+10, ".2d.v4", 6))
            break;
          switch (NameR[16]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_g_2d_v4f32_f32;	 // "vvm.tld4.g.2d.v4f32.f32"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_g_2d_v4s32_f32;	 // "vvm.tld4.g.2d.v4s32.f32"
          case 'u':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_g_2d_v4u32_f32;	 // "vvm.tld4.g.2d.v4u32.f32"
          }
          break;
        case 'r':	 // 3 strings to match.
          if (memcmp(NameR.data()+10, ".2d.v4", 6))
            break;
          switch (NameR[16]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_r_2d_v4f32_f32;	 // "vvm.tld4.r.2d.v4f32.f32"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_r_2d_v4s32_f32;	 // "vvm.tld4.r.2d.v4s32.f32"
          case 'u':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tld4_r_2d_v4u32_f32;	 // "vvm.tld4.r.2d.v4u32.f32"
          }
          break;
        }
        break;
      }
      break;
    case 24:	 // 51 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'r':	 // 3 strings to match.
        if (memcmp(NameR.data()+5, "ead.ptx.sreg.ntid.", 18))
          break;
        switch (NameR[23]) {
        default: break;
        case 'x':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_ntid_x;	 // "vvm.read.ptx.sreg.ntid.x"
        case 'y':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_ntid_y;	 // "vvm.read.ptx.sreg.ntid.y"
        case 'z':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_ntid_z;	 // "vvm.read.ptx.sreg.ntid.z"
        }
        break;
      case 's':	 // 48 strings to match.
        if (memcmp(NameR.data()+5, "ust.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'b':	 // 36 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case '1':	 // 12 strings to match.
            if (memcmp(NameR.data()+12, "d.v", 3))
              break;
            switch (NameR[15]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "6.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i16_trap;	 // "vvm.sust.b.1d.v2i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i16_zero;	 // "vvm.sust.b.1d.v2i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "2.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i32_trap;	 // "vvm.sust.b.1d.v2i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i32_zero;	 // "vvm.sust.b.1d.v2i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "4.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i64_trap;	 // "vvm.sust.b.1d.v2i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i64_zero;	 // "vvm.sust.b.1d.v2i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+18, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v2i8_clamp;	 // "vvm.sust.b.1d.v2i8.clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "6.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v4i16_trap;	 // "vvm.sust.b.1d.v4i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v4i16_zero;	 // "vvm.sust.b.1d.v4i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "2.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v4i32_trap;	 // "vvm.sust.b.1d.v4i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v4i32_zero;	 // "vvm.sust.b.1d.v4i32.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+18, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v4i8_clamp;	 // "vvm.sust.b.1d.v4i8.clamp"
              }
              break;
            }
            break;
          case '2':	 // 12 strings to match.
            if (memcmp(NameR.data()+12, "d.v", 3))
              break;
            switch (NameR[15]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "6.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i16_trap;	 // "vvm.sust.b.2d.v2i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i16_zero;	 // "vvm.sust.b.2d.v2i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "2.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i32_trap;	 // "vvm.sust.b.2d.v2i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i32_zero;	 // "vvm.sust.b.2d.v2i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "4.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i64_trap;	 // "vvm.sust.b.2d.v2i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i64_zero;	 // "vvm.sust.b.2d.v2i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+18, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v2i8_clamp;	 // "vvm.sust.b.2d.v2i8.clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "6.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v4i16_trap;	 // "vvm.sust.b.2d.v4i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v4i16_zero;	 // "vvm.sust.b.2d.v4i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "2.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v4i32_trap;	 // "vvm.sust.b.2d.v4i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v4i32_zero;	 // "vvm.sust.b.2d.v4i32.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+18, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v4i8_clamp;	 // "vvm.sust.b.2d.v4i8.clamp"
              }
              break;
            }
            break;
          case '3':	 // 12 strings to match.
            if (memcmp(NameR.data()+12, "d.v", 3))
              break;
            switch (NameR[15]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "6.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i16_trap;	 // "vvm.sust.b.3d.v2i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i16_zero;	 // "vvm.sust.b.3d.v2i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "2.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i32_trap;	 // "vvm.sust.b.3d.v2i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i32_zero;	 // "vvm.sust.b.3d.v2i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "4.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i64_trap;	 // "vvm.sust.b.3d.v2i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i64_zero;	 // "vvm.sust.b.3d.v2i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+18, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v2i8_clamp;	 // "vvm.sust.b.3d.v2i8.clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "6.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v4i16_trap;	 // "vvm.sust.b.3d.v4i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v4i16_zero;	 // "vvm.sust.b.3d.v4i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+18, "2.", 2))
                  break;
                switch (NameR[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v4i32_trap;	 // "vvm.sust.b.3d.v4i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v4i32_zero;	 // "vvm.sust.b.3d.v4i32.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+18, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v4i8_clamp;	 // "vvm.sust.b.3d.v4i8.clamp"
              }
              break;
            }
            break;
          }
          break;
        case 'p':	 // 12 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case '1':	 // 4 strings to match.
            if (memcmp(NameR.data()+12, "d.v", 3))
              break;
            switch (NameR[15]) {
            default: break;
            case '2':	 // 2 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_v2i16_trap;	 // "vvm.sust.p.1d.v2i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_v2i32_trap;	 // "vvm.sust.p.1d.v2i32.trap"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_v4i16_trap;	 // "vvm.sust.p.1d.v4i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_v4i32_trap;	 // "vvm.sust.p.1d.v4i32.trap"
              }
              break;
            }
            break;
          case '2':	 // 4 strings to match.
            if (memcmp(NameR.data()+12, "d.v", 3))
              break;
            switch (NameR[15]) {
            default: break;
            case '2':	 // 2 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_v2i16_trap;	 // "vvm.sust.p.2d.v2i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_v2i32_trap;	 // "vvm.sust.p.2d.v2i32.trap"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_v4i16_trap;	 // "vvm.sust.p.2d.v4i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_v4i32_trap;	 // "vvm.sust.p.2d.v4i32.trap"
              }
              break;
            }
            break;
          case '3':	 // 4 strings to match.
            if (memcmp(NameR.data()+12, "d.v", 3))
              break;
            switch (NameR[15]) {
            default: break;
            case '2':	 // 2 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_3d_v2i16_trap;	 // "vvm.sust.p.3d.v2i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_3d_v2i32_trap;	 // "vvm.sust.p.3d.v2i32.trap"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_3d_v4i16_trap;	 // "vvm.sust.p.3d.v4i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_3d_v4i32_trap;	 // "vvm.sust.p.3d.v4i32.trap"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 25:	 // 44 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'r':	 // 13 strings to match.
        if (memcmp(NameR.data()+5, "ead.ptx.sreg.", 13))
          break;
        switch (NameR[18]) {
        default: break;
        case 'c':	 // 3 strings to match.
          if (memcmp(NameR.data()+19, "taid.", 5))
            break;
          switch (NameR[24]) {
          default: break;
          case 'x':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_ctaid_x;	 // "vvm.read.ptx.sreg.ctaid.x"
          case 'y':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_ctaid_y;	 // "vvm.read.ptx.sreg.ctaid.y"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_ctaid_z;	 // "vvm.read.ptx.sreg.ctaid.z"
          }
          break;
        case 'e':	 // 10 strings to match.
          if (memcmp(NameR.data()+19, "nvreg", 5))
            break;
          switch (NameR[24]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg0;	 // "vvm.read.ptx.sreg.envreg0"
          case '1':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg1;	 // "vvm.read.ptx.sreg.envreg1"
          case '2':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg2;	 // "vvm.read.ptx.sreg.envreg2"
          case '3':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg3;	 // "vvm.read.ptx.sreg.envreg3"
          case '4':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg4;	 // "vvm.read.ptx.sreg.envreg4"
          case '5':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg5;	 // "vvm.read.ptx.sreg.envreg5"
          case '6':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg6;	 // "vvm.read.ptx.sreg.envreg6"
          case '7':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg7;	 // "vvm.read.ptx.sreg.envreg7"
          case '8':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg8;	 // "vvm.read.ptx.sreg.envreg8"
          case '9':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg9;	 // "vvm.read.ptx.sreg.envreg9"
          }
          break;
        }
        break;
      case 's':	 // 20 strings to match.
        if (NameR[5] != 'u')
          break;
        switch (NameR[6]) {
        default: break;
        case 'l':	 // 4 strings to match.
          if (memcmp(NameR.data()+7, "d.", 2))
            break;
          switch (NameR[9]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(NameR.data()+10, "d.array.i8.", 11))
              break;
            switch (NameR[21]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "rap", 3))
                break;
              return Intrinsic::nvvm_suld_1d_array_i8_trap;	 // "vvm.suld.1d.array.i8.trap"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "ero", 3))
                break;
              return Intrinsic::nvvm_suld_1d_array_i8_zero;	 // "vvm.suld.1d.array.i8.zero"
            }
            break;
          case '2':	 // 2 strings to match.
            if (memcmp(NameR.data()+10, "d.array.i8.", 11))
              break;
            switch (NameR[21]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "rap", 3))
                break;
              return Intrinsic::nvvm_suld_2d_array_i8_trap;	 // "vvm.suld.2d.array.i8.trap"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "ero", 3))
                break;
              return Intrinsic::nvvm_suld_2d_array_i8_zero;	 // "vvm.suld.2d.array.i8.zero"
            }
            break;
          }
          break;
        case 'q':	 // 1 string to match.
          if (memcmp(NameR.data()+7, ".channel.data.type", 18))
            break;
          return Intrinsic::nvvm_suq_channel_data_type;	 // "vvm.suq.channel.data.type"
        case 's':	 // 15 strings to match.
          if (memcmp(NameR.data()+7, "t.b.", 4))
            break;
          switch (NameR[11]) {
          default: break;
          case '1':	 // 5 strings to match.
            if (memcmp(NameR.data()+12, "d.v", 3))
              break;
            switch (NameR[15]) {
            default: break;
            case '2':	 // 3 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v2i16_clamp;	 // "vvm.sust.b.1d.v2i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v2i32_clamp;	 // "vvm.sust.b.1d.v2i32.clamp"
              case '6':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "4.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v2i64_clamp;	 // "vvm.sust.b.1d.v2i64.clamp"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v4i16_clamp;	 // "vvm.sust.b.1d.v4i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v4i32_clamp;	 // "vvm.sust.b.1d.v4i32.clamp"
              }
              break;
            }
            break;
          case '2':	 // 5 strings to match.
            if (memcmp(NameR.data()+12, "d.v", 3))
              break;
            switch (NameR[15]) {
            default: break;
            case '2':	 // 3 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v2i16_clamp;	 // "vvm.sust.b.2d.v2i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v2i32_clamp;	 // "vvm.sust.b.2d.v2i32.clamp"
              case '6':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "4.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v2i64_clamp;	 // "vvm.sust.b.2d.v2i64.clamp"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v4i16_clamp;	 // "vvm.sust.b.2d.v4i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v4i32_clamp;	 // "vvm.sust.b.2d.v4i32.clamp"
              }
              break;
            }
            break;
          case '3':	 // 5 strings to match.
            if (memcmp(NameR.data()+12, "d.v", 3))
              break;
            switch (NameR[15]) {
            default: break;
            case '2':	 // 3 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v2i16_clamp;	 // "vvm.sust.b.3d.v2i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v2i32_clamp;	 // "vvm.sust.b.3d.v2i32.clamp"
              case '6':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "4.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v2i64_clamp;	 // "vvm.sust.b.3d.v2i64.clamp"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[16] != 'i')
                break;
              switch (NameR[17]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v4i16_clamp;	 // "vvm.sust.b.3d.v4i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+18, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v4i32_clamp;	 // "vvm.sust.b.3d.v4i32.clamp"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 11 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'e':	 // 9 strings to match.
          if (memcmp(NameR.data()+6, "x.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case '1':	 // 3 strings to match.
            if (memcmp(NameR.data()+9, "d.grad.v4", 9))
              break;
            switch (NameR[18]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_1d_grad_v4f32_f32;	 // "vvm.tex.1d.grad.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_1d_grad_v4s32_f32;	 // "vvm.tex.1d.grad.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_1d_grad_v4u32_f32;	 // "vvm.tex.1d.grad.v4u32.f32"
            }
            break;
          case '2':	 // 3 strings to match.
            if (memcmp(NameR.data()+9, "d.grad.v4", 9))
              break;
            switch (NameR[18]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_2d_grad_v4f32_f32;	 // "vvm.tex.2d.grad.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_2d_grad_v4s32_f32;	 // "vvm.tex.2d.grad.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_2d_grad_v4u32_f32;	 // "vvm.tex.2d.grad.v4u32.f32"
            }
            break;
          case '3':	 // 3 strings to match.
            if (memcmp(NameR.data()+9, "d.grad.v4", 9))
              break;
            switch (NameR[18]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_3d_grad_v4f32_f32;	 // "vvm.tex.3d.grad.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_3d_grad_v4s32_f32;	 // "vvm.tex.3d.grad.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_3d_grad_v4u32_f32;	 // "vvm.tex.3d.grad.v4u32.f32"
            }
            break;
          }
          break;
        case 'x':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "q.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+9, "hannel.data.type", 16))
              break;
            return Intrinsic::nvvm_txq_channel_data_type;	 // "vvm.txq.channel.data.type"
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+9, "um.mipmap.levels", 16))
              break;
            return Intrinsic::nvvm_txq_num_mipmap_levels;	 // "vvm.txq.num.mipmap.levels"
          }
          break;
        }
        break;
      }
      break;
    case 26:	 // 61 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 'r':	 // 26 strings to match.
        if (memcmp(NameR.data()+5, "ead.ptx.sreg.", 13))
          break;
        switch (NameR[18]) {
        default: break;
        case 'e':	 // 22 strings to match.
          if (memcmp(NameR.data()+19, "nvreg", 5))
            break;
          switch (NameR[24]) {
          default: break;
          case '1':	 // 10 strings to match.
            switch (NameR[25]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg10;	 // "vvm.read.ptx.sreg.envreg10"
            case '1':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg11;	 // "vvm.read.ptx.sreg.envreg11"
            case '2':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg12;	 // "vvm.read.ptx.sreg.envreg12"
            case '3':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg13;	 // "vvm.read.ptx.sreg.envreg13"
            case '4':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg14;	 // "vvm.read.ptx.sreg.envreg14"
            case '5':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg15;	 // "vvm.read.ptx.sreg.envreg15"
            case '6':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg16;	 // "vvm.read.ptx.sreg.envreg16"
            case '7':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg17;	 // "vvm.read.ptx.sreg.envreg17"
            case '8':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg18;	 // "vvm.read.ptx.sreg.envreg18"
            case '9':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg19;	 // "vvm.read.ptx.sreg.envreg19"
            }
            break;
          case '2':	 // 10 strings to match.
            switch (NameR[25]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg20;	 // "vvm.read.ptx.sreg.envreg20"
            case '1':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg21;	 // "vvm.read.ptx.sreg.envreg21"
            case '2':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg22;	 // "vvm.read.ptx.sreg.envreg22"
            case '3':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg23;	 // "vvm.read.ptx.sreg.envreg23"
            case '4':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg24;	 // "vvm.read.ptx.sreg.envreg24"
            case '5':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg25;	 // "vvm.read.ptx.sreg.envreg25"
            case '6':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg26;	 // "vvm.read.ptx.sreg.envreg26"
            case '7':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg27;	 // "vvm.read.ptx.sreg.envreg27"
            case '8':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg28;	 // "vvm.read.ptx.sreg.envreg28"
            case '9':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg29;	 // "vvm.read.ptx.sreg.envreg29"
            }
            break;
          case '3':	 // 2 strings to match.
            switch (NameR[25]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg30;	 // "vvm.read.ptx.sreg.envreg30"
            case '1':	 // 1 string to match.
              return Intrinsic::nvvm_read_ptx_sreg_envreg31;	 // "vvm.read.ptx.sreg.envreg31"
            }
            break;
          }
          break;
        case 'n':	 // 3 strings to match.
          if (memcmp(NameR.data()+19, "ctaid.", 6))
            break;
          switch (NameR[25]) {
          default: break;
          case 'x':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_nctaid_x;	 // "vvm.read.ptx.sreg.nctaid.x"
          case 'y':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_nctaid_y;	 // "vvm.read.ptx.sreg.nctaid.y"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_nctaid_z;	 // "vvm.read.ptx.sreg.nctaid.z"
          }
          break;
        case 'w':	 // 1 string to match.
          if (memcmp(NameR.data()+19, "arpsize", 7))
            break;
          return Intrinsic::nvvm_read_ptx_sreg_warpsize;	 // "vvm.read.ptx.sreg.warpsize"
        }
        break;
      case 's':	 // 14 strings to match.
        if (memcmp(NameR.data()+5, "uld.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case '1':	 // 7 strings to match.
          if (memcmp(NameR.data()+10, "d.array.i", 9))
            break;
          switch (NameR[19]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(NameR.data()+20, "6.", 2))
              break;
            switch (NameR[22]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "rap", 3))
                break;
              return Intrinsic::nvvm_suld_1d_array_i16_trap;	 // "vvm.suld.1d.array.i16.trap"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "ero", 3))
                break;
              return Intrinsic::nvvm_suld_1d_array_i16_zero;	 // "vvm.suld.1d.array.i16.zero"
            }
            break;
          case '3':	 // 2 strings to match.
            if (memcmp(NameR.data()+20, "2.", 2))
              break;
            switch (NameR[22]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "rap", 3))
                break;
              return Intrinsic::nvvm_suld_1d_array_i32_trap;	 // "vvm.suld.1d.array.i32.trap"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "ero", 3))
                break;
              return Intrinsic::nvvm_suld_1d_array_i32_zero;	 // "vvm.suld.1d.array.i32.zero"
            }
            break;
          case '6':	 // 2 strings to match.
            if (memcmp(NameR.data()+20, "4.", 2))
              break;
            switch (NameR[22]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "rap", 3))
                break;
              return Intrinsic::nvvm_suld_1d_array_i64_trap;	 // "vvm.suld.1d.array.i64.trap"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "ero", 3))
                break;
              return Intrinsic::nvvm_suld_1d_array_i64_zero;	 // "vvm.suld.1d.array.i64.zero"
            }
            break;
          case '8':	 // 1 string to match.
            if (memcmp(NameR.data()+20, ".clamp", 6))
              break;
            return Intrinsic::nvvm_suld_1d_array_i8_clamp;	 // "vvm.suld.1d.array.i8.clamp"
          }
          break;
        case '2':	 // 7 strings to match.
          if (memcmp(NameR.data()+10, "d.array.i", 9))
            break;
          switch (NameR[19]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(NameR.data()+20, "6.", 2))
              break;
            switch (NameR[22]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "rap", 3))
                break;
              return Intrinsic::nvvm_suld_2d_array_i16_trap;	 // "vvm.suld.2d.array.i16.trap"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "ero", 3))
                break;
              return Intrinsic::nvvm_suld_2d_array_i16_zero;	 // "vvm.suld.2d.array.i16.zero"
            }
            break;
          case '3':	 // 2 strings to match.
            if (memcmp(NameR.data()+20, "2.", 2))
              break;
            switch (NameR[22]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "rap", 3))
                break;
              return Intrinsic::nvvm_suld_2d_array_i32_trap;	 // "vvm.suld.2d.array.i32.trap"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "ero", 3))
                break;
              return Intrinsic::nvvm_suld_2d_array_i32_zero;	 // "vvm.suld.2d.array.i32.zero"
            }
            break;
          case '6':	 // 2 strings to match.
            if (memcmp(NameR.data()+20, "4.", 2))
              break;
            switch (NameR[22]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "rap", 3))
                break;
              return Intrinsic::nvvm_suld_2d_array_i64_trap;	 // "vvm.suld.2d.array.i64.trap"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+23, "ero", 3))
                break;
              return Intrinsic::nvvm_suld_2d_array_i64_zero;	 // "vvm.suld.2d.array.i64.zero"
            }
            break;
          case '8':	 // 1 string to match.
            if (memcmp(NameR.data()+20, ".clamp", 6))
              break;
            return Intrinsic::nvvm_suld_2d_array_i8_clamp;	 // "vvm.suld.2d.array.i8.clamp"
          }
          break;
        }
        break;
      case 't':	 // 21 strings to match.
        if (memcmp(NameR.data()+5, "ex.", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case '1':	 // 9 strings to match.
          if (memcmp(NameR.data()+9, "d.", 2))
            break;
          switch (NameR[11]) {
          default: break;
          case 'a':	 // 6 strings to match.
            if (memcmp(NameR.data()+12, "rray.v4", 7))
              break;
            switch (NameR[19]) {
            default: break;
            case 'f':	 // 2 strings to match.
              if (memcmp(NameR.data()+20, "32.", 3))
                break;
              switch (NameR[23]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_1d_array_v4f32_f32;	 // "vvm.tex.1d.array.v4f32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_1d_array_v4f32_s32;	 // "vvm.tex.1d.array.v4f32.s32"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+20, "32.", 3))
                break;
              switch (NameR[23]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_1d_array_v4s32_f32;	 // "vvm.tex.1d.array.v4s32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_1d_array_v4s32_s32;	 // "vvm.tex.1d.array.v4s32.s32"
              }
              break;
            case 'u':	 // 2 strings to match.
              if (memcmp(NameR.data()+20, "32.", 3))
                break;
              switch (NameR[23]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_1d_array_v4u32_f32;	 // "vvm.tex.1d.array.v4u32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_1d_array_v4u32_s32;	 // "vvm.tex.1d.array.v4u32.s32"
              }
              break;
            }
            break;
          case 'l':	 // 3 strings to match.
            if (memcmp(NameR.data()+12, "evel.v4", 7))
              break;
            switch (NameR[19]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_1d_level_v4f32_f32;	 // "vvm.tex.1d.level.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_1d_level_v4s32_f32;	 // "vvm.tex.1d.level.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_1d_level_v4u32_f32;	 // "vvm.tex.1d.level.v4u32.f32"
            }
            break;
          }
          break;
        case '2':	 // 9 strings to match.
          if (memcmp(NameR.data()+9, "d.", 2))
            break;
          switch (NameR[11]) {
          default: break;
          case 'a':	 // 6 strings to match.
            if (memcmp(NameR.data()+12, "rray.v4", 7))
              break;
            switch (NameR[19]) {
            default: break;
            case 'f':	 // 2 strings to match.
              if (memcmp(NameR.data()+20, "32.", 3))
                break;
              switch (NameR[23]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_2d_array_v4f32_f32;	 // "vvm.tex.2d.array.v4f32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_2d_array_v4f32_s32;	 // "vvm.tex.2d.array.v4f32.s32"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+20, "32.", 3))
                break;
              switch (NameR[23]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_2d_array_v4s32_f32;	 // "vvm.tex.2d.array.v4s32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_2d_array_v4s32_s32;	 // "vvm.tex.2d.array.v4s32.s32"
              }
              break;
            case 'u':	 // 2 strings to match.
              if (memcmp(NameR.data()+20, "32.", 3))
                break;
              switch (NameR[23]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_2d_array_v4u32_f32;	 // "vvm.tex.2d.array.v4u32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_2d_array_v4u32_s32;	 // "vvm.tex.2d.array.v4u32.s32"
              }
              break;
            }
            break;
          case 'l':	 // 3 strings to match.
            if (memcmp(NameR.data()+12, "evel.v4", 7))
              break;
            switch (NameR[19]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_2d_level_v4f32_f32;	 // "vvm.tex.2d.level.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_2d_level_v4s32_f32;	 // "vvm.tex.2d.level.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_2d_level_v4u32_f32;	 // "vvm.tex.2d.level.v4u32.f32"
            }
            break;
          }
          break;
        case '3':	 // 3 strings to match.
          if (memcmp(NameR.data()+9, "d.level.v4", 10))
            break;
          switch (NameR[19]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(NameR.data()+20, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tex_3d_level_v4f32_f32;	 // "vvm.tex.3d.level.v4f32.f32"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+20, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tex_3d_level_v4s32_f32;	 // "vvm.tex.3d.level.v4s32.f32"
          case 'u':	 // 1 string to match.
            if (memcmp(NameR.data()+20, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tex_3d_level_v4u32_f32;	 // "vvm.tex.3d.level.v4u32.f32"
          }
          break;
        }
        break;
      }
      break;
    case 27:	 // 20 strings to match.
      if (memcmp(NameR.data()+0, "vvm.su", 6))
        break;
      switch (NameR[6]) {
      default: break;
      case 'l':	 // 14 strings to match.
        if (memcmp(NameR.data()+7, "d.", 2))
          break;
        switch (NameR[9]) {
        default: break;
        case '1':	 // 7 strings to match.
          if (memcmp(NameR.data()+10, "d.array.", 8))
            break;
          switch (NameR[18]) {
          default: break;
          case 'i':	 // 3 strings to match.
            switch (NameR[19]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "6.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_1d_array_i16_clamp;	 // "vvm.suld.1d.array.i16.clamp"
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "2.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_1d_array_i32_clamp;	 // "vvm.suld.1d.array.i32.clamp"
            case '6':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "4.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_1d_array_i64_clamp;	 // "vvm.suld.1d.array.i64.clamp"
            }
            break;
          case 'v':	 // 4 strings to match.
            switch (NameR[19]) {
            default: break;
            case '2':	 // 2 strings to match.
              if (memcmp(NameR.data()+20, "i8.", 3))
                break;
              switch (NameR[23]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_1d_array_v2i8_trap;	 // "vvm.suld.1d.array.v2i8.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_1d_array_v2i8_zero;	 // "vvm.suld.1d.array.v2i8.zero"
              }
              break;
            case '4':	 // 2 strings to match.
              if (memcmp(NameR.data()+20, "i8.", 3))
                break;
              switch (NameR[23]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_1d_array_v4i8_trap;	 // "vvm.suld.1d.array.v4i8.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_1d_array_v4i8_zero;	 // "vvm.suld.1d.array.v4i8.zero"
              }
              break;
            }
            break;
          }
          break;
        case '2':	 // 7 strings to match.
          if (memcmp(NameR.data()+10, "d.array.", 8))
            break;
          switch (NameR[18]) {
          default: break;
          case 'i':	 // 3 strings to match.
            switch (NameR[19]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "6.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_2d_array_i16_clamp;	 // "vvm.suld.2d.array.i16.clamp"
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "2.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_2d_array_i32_clamp;	 // "vvm.suld.2d.array.i32.clamp"
            case '6':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "4.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_2d_array_i64_clamp;	 // "vvm.suld.2d.array.i64.clamp"
            }
            break;
          case 'v':	 // 4 strings to match.
            switch (NameR[19]) {
            default: break;
            case '2':	 // 2 strings to match.
              if (memcmp(NameR.data()+20, "i8.", 3))
                break;
              switch (NameR[23]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_2d_array_v2i8_trap;	 // "vvm.suld.2d.array.v2i8.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_2d_array_v2i8_zero;	 // "vvm.suld.2d.array.v2i8.zero"
              }
              break;
            case '4':	 // 2 strings to match.
              if (memcmp(NameR.data()+20, "i8.", 3))
                break;
              switch (NameR[23]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "rap", 3))
                  break;
                return Intrinsic::nvvm_suld_2d_array_v4i8_trap;	 // "vvm.suld.2d.array.v4i8.trap"
              case 'z':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "ero", 3))
                  break;
                return Intrinsic::nvvm_suld_2d_array_v4i8_zero;	 // "vvm.suld.2d.array.v4i8.zero"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 6 strings to match.
        if (memcmp(NameR.data()+7, "t.", 2))
          break;
        switch (NameR[9]) {
        default: break;
        case 'b':	 // 4 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(NameR.data()+12, "d.array.i8.", 11))
              break;
            switch (NameR[23]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_i8_trap;	 // "vvm.sust.b.1d.array.i8.trap"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_i8_zero;	 // "vvm.sust.b.1d.array.i8.zero"
            }
            break;
          case '2':	 // 2 strings to match.
            if (memcmp(NameR.data()+12, "d.array.i8.", 11))
              break;
            switch (NameR[23]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_i8_trap;	 // "vvm.sust.b.2d.array.i8.trap"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_i8_zero;	 // "vvm.sust.b.2d.array.i8.zero"
            }
            break;
          }
          break;
        case 'p':	 // 2 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "d.array.i8.trap", 15))
              break;
            return Intrinsic::nvvm_sust_p_1d_array_i8_trap;	 // "vvm.sust.p.1d.array.i8.trap"
          case '2':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "d.array.i8.trap", 15))
              break;
            return Intrinsic::nvvm_sust_p_2d_array_i8_trap;	 // "vvm.sust.p.2d.array.i8.trap"
          }
          break;
        }
        break;
      }
      break;
    case 28:	 // 66 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 's':	 // 42 strings to match.
        if (NameR[5] != 'u')
          break;
        switch (NameR[6]) {
        default: break;
        case 'l':	 // 24 strings to match.
          if (memcmp(NameR.data()+7, "d.", 2))
            break;
          switch (NameR[9]) {
          default: break;
          case '1':	 // 12 strings to match.
            if (memcmp(NameR.data()+10, "d.array.v", 9))
              break;
            switch (NameR[19]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (NameR[20] != 'i')
                break;
              switch (NameR[21]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "6.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_array_v2i16_trap;	 // "vvm.suld.1d.array.v2i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_array_v2i16_zero;	 // "vvm.suld.1d.array.v2i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "2.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_array_v2i32_trap;	 // "vvm.suld.1d.array.v2i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_array_v2i32_zero;	 // "vvm.suld.1d.array.v2i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "4.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_array_v2i64_trap;	 // "vvm.suld.1d.array.v2i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_array_v2i64_zero;	 // "vvm.suld.1d.array.v2i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+22, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_suld_1d_array_v2i8_clamp;	 // "vvm.suld.1d.array.v2i8.clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (NameR[20] != 'i')
                break;
              switch (NameR[21]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "6.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_array_v4i16_trap;	 // "vvm.suld.1d.array.v4i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_array_v4i16_zero;	 // "vvm.suld.1d.array.v4i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "2.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_array_v4i32_trap;	 // "vvm.suld.1d.array.v4i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_1d_array_v4i32_zero;	 // "vvm.suld.1d.array.v4i32.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+22, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_suld_1d_array_v4i8_clamp;	 // "vvm.suld.1d.array.v4i8.clamp"
              }
              break;
            }
            break;
          case '2':	 // 12 strings to match.
            if (memcmp(NameR.data()+10, "d.array.v", 9))
              break;
            switch (NameR[19]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (NameR[20] != 'i')
                break;
              switch (NameR[21]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "6.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_array_v2i16_trap;	 // "vvm.suld.2d.array.v2i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_array_v2i16_zero;	 // "vvm.suld.2d.array.v2i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "2.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_array_v2i32_trap;	 // "vvm.suld.2d.array.v2i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_array_v2i32_zero;	 // "vvm.suld.2d.array.v2i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "4.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_array_v2i64_trap;	 // "vvm.suld.2d.array.v2i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_array_v2i64_zero;	 // "vvm.suld.2d.array.v2i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+22, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_suld_2d_array_v2i8_clamp;	 // "vvm.suld.2d.array.v2i8.clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (NameR[20] != 'i')
                break;
              switch (NameR[21]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "6.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_array_v4i16_trap;	 // "vvm.suld.2d.array.v4i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_array_v4i16_zero;	 // "vvm.suld.2d.array.v4i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "2.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_array_v4i32_trap;	 // "vvm.suld.2d.array.v4i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_suld_2d_array_v4i32_zero;	 // "vvm.suld.2d.array.v4i32.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+22, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_suld_2d_array_v4i8_clamp;	 // "vvm.suld.2d.array.v4i8.clamp"
              }
              break;
            }
            break;
          }
          break;
        case 's':	 // 18 strings to match.
          if (memcmp(NameR.data()+7, "t.", 2))
            break;
          switch (NameR[9]) {
          default: break;
          case 'b':	 // 14 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case '1':	 // 7 strings to match.
              if (memcmp(NameR.data()+12, "d.array.i", 9))
                break;
              switch (NameR[21]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "6.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_i16_trap;	 // "vvm.sust.b.1d.array.i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_i16_zero;	 // "vvm.sust.b.1d.array.i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "2.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_i32_trap;	 // "vvm.sust.b.1d.array.i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_i32_zero;	 // "vvm.sust.b.1d.array.i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "4.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_i64_trap;	 // "vvm.sust.b.1d.array.i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_i64_zero;	 // "vvm.sust.b.1d.array.i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+22, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_1d_array_i8_clamp;	 // "vvm.sust.b.1d.array.i8.clamp"
              }
              break;
            case '2':	 // 7 strings to match.
              if (memcmp(NameR.data()+12, "d.array.i", 9))
                break;
              switch (NameR[21]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "6.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_i16_trap;	 // "vvm.sust.b.2d.array.i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_i16_zero;	 // "vvm.sust.b.2d.array.i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "2.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_i32_trap;	 // "vvm.sust.b.2d.array.i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_i32_zero;	 // "vvm.sust.b.2d.array.i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "4.", 2))
                  break;
                switch (NameR[24]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_i64_trap;	 // "vvm.sust.b.2d.array.i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+25, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_i64_zero;	 // "vvm.sust.b.2d.array.i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+22, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_2d_array_i8_clamp;	 // "vvm.sust.b.2d.array.i8.clamp"
              }
              break;
            }
            break;
          case 'p':	 // 4 strings to match.
            if (NameR[10] != '.')
              break;
            switch (NameR[11]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "d.array.i", 9))
                break;
              switch (NameR[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_array_i16_trap;	 // "vvm.sust.p.1d.array.i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_array_i32_trap;	 // "vvm.sust.p.1d.array.i32.trap"
              }
              break;
            case '2':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "d.array.i", 9))
                break;
              switch (NameR[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_array_i16_trap;	 // "vvm.sust.p.2d.array.i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_array_i32_trap;	 // "vvm.sust.p.2d.array.i32.trap"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 24 strings to match.
        if (memcmp(NameR.data()+5, "ex.", 3))
          break;
        switch (NameR[8]) {
        default: break;
        case 'c':	 // 6 strings to match.
          if (memcmp(NameR.data()+9, "ube.", 4))
            break;
          switch (NameR[13]) {
          default: break;
          case 'a':	 // 3 strings to match.
            if (memcmp(NameR.data()+14, "rray.v4", 7))
              break;
            switch (NameR[21]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_cube_array_v4f32_f32;	 // "vvm.tex.cube.array.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_cube_array_v4s32_f32;	 // "vvm.tex.cube.array.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_cube_array_v4u32_f32;	 // "vvm.tex.cube.array.v4u32.f32"
            }
            break;
          case 'l':	 // 3 strings to match.
            if (memcmp(NameR.data()+14, "evel.v4", 7))
              break;
            switch (NameR[21]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_cube_level_v4f32_f32;	 // "vvm.tex.cube.level.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_cube_level_v4s32_f32;	 // "vvm.tex.cube.level.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_cube_level_v4u32_f32;	 // "vvm.tex.cube.level.v4u32.f32"
            }
            break;
          }
          break;
        case 'u':	 // 18 strings to match.
          if (memcmp(NameR.data()+9, "nified.", 7))
            break;
          switch (NameR[16]) {
          default: break;
          case '1':	 // 6 strings to match.
            if (memcmp(NameR.data()+17, "d.v4", 4))
              break;
            switch (NameR[21]) {
            default: break;
            case 'f':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, "32.", 3))
                break;
              switch (NameR[25]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_v4f32_f32;	 // "vvm.tex.unified.1d.v4f32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_v4f32_s32;	 // "vvm.tex.unified.1d.v4f32.s32"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, "32.", 3))
                break;
              switch (NameR[25]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_v4s32_f32;	 // "vvm.tex.unified.1d.v4s32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_v4s32_s32;	 // "vvm.tex.unified.1d.v4s32.s32"
              }
              break;
            case 'u':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, "32.", 3))
                break;
              switch (NameR[25]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_v4u32_f32;	 // "vvm.tex.unified.1d.v4u32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_v4u32_s32;	 // "vvm.tex.unified.1d.v4u32.s32"
              }
              break;
            }
            break;
          case '2':	 // 6 strings to match.
            if (memcmp(NameR.data()+17, "d.v4", 4))
              break;
            switch (NameR[21]) {
            default: break;
            case 'f':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, "32.", 3))
                break;
              switch (NameR[25]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_v4f32_f32;	 // "vvm.tex.unified.2d.v4f32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_v4f32_s32;	 // "vvm.tex.unified.2d.v4f32.s32"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, "32.", 3))
                break;
              switch (NameR[25]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_v4s32_f32;	 // "vvm.tex.unified.2d.v4s32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_v4s32_s32;	 // "vvm.tex.unified.2d.v4s32.s32"
              }
              break;
            case 'u':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, "32.", 3))
                break;
              switch (NameR[25]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_v4u32_f32;	 // "vvm.tex.unified.2d.v4u32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_v4u32_s32;	 // "vvm.tex.unified.2d.v4u32.s32"
              }
              break;
            }
            break;
          case '3':	 // 6 strings to match.
            if (memcmp(NameR.data()+17, "d.v4", 4))
              break;
            switch (NameR[21]) {
            default: break;
            case 'f':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, "32.", 3))
                break;
              switch (NameR[25]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_3d_v4f32_f32;	 // "vvm.tex.unified.3d.v4f32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_3d_v4f32_s32;	 // "vvm.tex.unified.3d.v4f32.s32"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, "32.", 3))
                break;
              switch (NameR[25]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_3d_v4s32_f32;	 // "vvm.tex.unified.3d.v4s32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_3d_v4s32_s32;	 // "vvm.tex.unified.3d.v4s32.s32"
              }
              break;
            case 'u':	 // 2 strings to match.
              if (memcmp(NameR.data()+22, "32.", 3))
                break;
              switch (NameR[25]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_3d_v4u32_f32;	 // "vvm.tex.unified.3d.v4u32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+26, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_3d_v4u32_s32;	 // "vvm.tex.unified.3d.v4u32.s32"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 29:	 // 28 strings to match.
      if (memcmp(NameR.data()+0, "vvm.su", 6))
        break;
      switch (NameR[6]) {
      default: break;
      case 'l':	 // 10 strings to match.
        if (memcmp(NameR.data()+7, "d.", 2))
          break;
        switch (NameR[9]) {
        default: break;
        case '1':	 // 5 strings to match.
          if (memcmp(NameR.data()+10, "d.array.v", 9))
            break;
          switch (NameR[19]) {
          default: break;
          case '2':	 // 3 strings to match.
            if (NameR[20] != 'i')
              break;
            switch (NameR[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "6.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_1d_array_v2i16_clamp;	 // "vvm.suld.1d.array.v2i16.clamp"
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "2.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_1d_array_v2i32_clamp;	 // "vvm.suld.1d.array.v2i32.clamp"
            case '6':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "4.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_1d_array_v2i64_clamp;	 // "vvm.suld.1d.array.v2i64.clamp"
            }
            break;
          case '4':	 // 2 strings to match.
            if (NameR[20] != 'i')
              break;
            switch (NameR[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "6.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_1d_array_v4i16_clamp;	 // "vvm.suld.1d.array.v4i16.clamp"
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "2.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_1d_array_v4i32_clamp;	 // "vvm.suld.1d.array.v4i32.clamp"
            }
            break;
          }
          break;
        case '2':	 // 5 strings to match.
          if (memcmp(NameR.data()+10, "d.array.v", 9))
            break;
          switch (NameR[19]) {
          default: break;
          case '2':	 // 3 strings to match.
            if (NameR[20] != 'i')
              break;
            switch (NameR[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "6.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_2d_array_v2i16_clamp;	 // "vvm.suld.2d.array.v2i16.clamp"
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "2.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_2d_array_v2i32_clamp;	 // "vvm.suld.2d.array.v2i32.clamp"
            case '6':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "4.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_2d_array_v2i64_clamp;	 // "vvm.suld.2d.array.v2i64.clamp"
            }
            break;
          case '4':	 // 2 strings to match.
            if (NameR[20] != 'i')
              break;
            switch (NameR[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "6.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_2d_array_v4i16_clamp;	 // "vvm.suld.2d.array.v4i16.clamp"
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "2.clamp", 7))
                break;
              return Intrinsic::nvvm_suld_2d_array_v4i32_clamp;	 // "vvm.suld.2d.array.v4i32.clamp"
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 18 strings to match.
        if (memcmp(NameR.data()+7, "t.", 2))
          break;
        switch (NameR[9]) {
        default: break;
        case 'b':	 // 14 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case '1':	 // 7 strings to match.
            if (memcmp(NameR.data()+12, "d.array.", 8))
              break;
            switch (NameR[20]) {
            default: break;
            case 'i':	 // 3 strings to match.
              switch (NameR[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_array_i16_clamp;	 // "vvm.sust.b.1d.array.i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_array_i32_clamp;	 // "vvm.sust.b.1d.array.i32.clamp"
              case '6':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "4.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_array_i64_clamp;	 // "vvm.sust.b.1d.array.i64.clamp"
              }
              break;
            case 'v':	 // 4 strings to match.
              switch (NameR[21]) {
              default: break;
              case '2':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "i8.", 3))
                  break;
                switch (NameR[25]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+26, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v2i8_trap;	 // "vvm.sust.b.1d.array.v2i8.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+26, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v2i8_zero;	 // "vvm.sust.b.1d.array.v2i8.zero"
                }
                break;
              case '4':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "i8.", 3))
                  break;
                switch (NameR[25]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+26, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v4i8_trap;	 // "vvm.sust.b.1d.array.v4i8.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+26, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v4i8_zero;	 // "vvm.sust.b.1d.array.v4i8.zero"
                }
                break;
              }
              break;
            }
            break;
          case '2':	 // 7 strings to match.
            if (memcmp(NameR.data()+12, "d.array.", 8))
              break;
            switch (NameR[20]) {
            default: break;
            case 'i':	 // 3 strings to match.
              switch (NameR[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "6.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_array_i16_clamp;	 // "vvm.sust.b.2d.array.i16.clamp"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "2.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_array_i32_clamp;	 // "vvm.sust.b.2d.array.i32.clamp"
              case '6':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "4.clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_array_i64_clamp;	 // "vvm.sust.b.2d.array.i64.clamp"
              }
              break;
            case 'v':	 // 4 strings to match.
              switch (NameR[21]) {
              default: break;
              case '2':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "i8.", 3))
                  break;
                switch (NameR[25]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+26, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v2i8_trap;	 // "vvm.sust.b.2d.array.v2i8.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+26, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v2i8_zero;	 // "vvm.sust.b.2d.array.v2i8.zero"
                }
                break;
              case '4':	 // 2 strings to match.
                if (memcmp(NameR.data()+22, "i8.", 3))
                  break;
                switch (NameR[25]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+26, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v4i8_trap;	 // "vvm.sust.b.2d.array.v4i8.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+26, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v4i8_zero;	 // "vvm.sust.b.2d.array.v4i8.zero"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 'p':	 // 4 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(NameR.data()+12, "d.array.v", 9))
              break;
            switch (NameR[21]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "i8.trap", 7))
                break;
              return Intrinsic::nvvm_sust_p_1d_array_v2i8_trap;	 // "vvm.sust.p.1d.array.v2i8.trap"
            case '4':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "i8.trap", 7))
                break;
              return Intrinsic::nvvm_sust_p_1d_array_v4i8_trap;	 // "vvm.sust.p.1d.array.v4i8.trap"
            }
            break;
          case '2':	 // 2 strings to match.
            if (memcmp(NameR.data()+12, "d.array.v", 9))
              break;
            switch (NameR[21]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "i8.trap", 7))
                break;
              return Intrinsic::nvvm_sust_p_2d_array_v2i8_trap;	 // "vvm.sust.p.2d.array.v2i8.trap"
            case '4':	 // 1 string to match.
              if (memcmp(NameR.data()+22, "i8.trap", 7))
                break;
              return Intrinsic::nvvm_sust_p_2d_array_v4i8_trap;	 // "vvm.sust.p.2d.array.v4i8.trap"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 30:	 // 35 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 's':	 // 32 strings to match.
        if (memcmp(NameR.data()+5, "ust.", 4))
          break;
        switch (NameR[9]) {
        default: break;
        case 'b':	 // 24 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case '1':	 // 12 strings to match.
            if (memcmp(NameR.data()+12, "d.array.v", 9))
              break;
            switch (NameR[21]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (NameR[22] != 'i')
                break;
              switch (NameR[23]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+24, "6.", 2))
                  break;
                switch (NameR[26]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v2i16_trap;	 // "vvm.sust.b.1d.array.v2i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v2i16_zero;	 // "vvm.sust.b.1d.array.v2i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+24, "2.", 2))
                  break;
                switch (NameR[26]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v2i32_trap;	 // "vvm.sust.b.1d.array.v2i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v2i32_zero;	 // "vvm.sust.b.1d.array.v2i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+24, "4.", 2))
                  break;
                switch (NameR[26]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v2i64_trap;	 // "vvm.sust.b.1d.array.v2i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v2i64_zero;	 // "vvm.sust.b.1d.array.v2i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+24, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_1d_array_v2i8_clamp;	 // "vvm.sust.b.1d.array.v2i8.clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (NameR[22] != 'i')
                break;
              switch (NameR[23]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+24, "6.", 2))
                  break;
                switch (NameR[26]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v4i16_trap;	 // "vvm.sust.b.1d.array.v4i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v4i16_zero;	 // "vvm.sust.b.1d.array.v4i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+24, "2.", 2))
                  break;
                switch (NameR[26]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v4i32_trap;	 // "vvm.sust.b.1d.array.v4i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_array_v4i32_zero;	 // "vvm.sust.b.1d.array.v4i32.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+24, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_1d_array_v4i8_clamp;	 // "vvm.sust.b.1d.array.v4i8.clamp"
              }
              break;
            }
            break;
          case '2':	 // 12 strings to match.
            if (memcmp(NameR.data()+12, "d.array.v", 9))
              break;
            switch (NameR[21]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (NameR[22] != 'i')
                break;
              switch (NameR[23]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+24, "6.", 2))
                  break;
                switch (NameR[26]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v2i16_trap;	 // "vvm.sust.b.2d.array.v2i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v2i16_zero;	 // "vvm.sust.b.2d.array.v2i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+24, "2.", 2))
                  break;
                switch (NameR[26]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v2i32_trap;	 // "vvm.sust.b.2d.array.v2i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v2i32_zero;	 // "vvm.sust.b.2d.array.v2i32.zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(NameR.data()+24, "4.", 2))
                  break;
                switch (NameR[26]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v2i64_trap;	 // "vvm.sust.b.2d.array.v2i64.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v2i64_zero;	 // "vvm.sust.b.2d.array.v2i64.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+24, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_2d_array_v2i8_clamp;	 // "vvm.sust.b.2d.array.v2i8.clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (NameR[22] != 'i')
                break;
              switch (NameR[23]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(NameR.data()+24, "6.", 2))
                  break;
                switch (NameR[26]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v4i16_trap;	 // "vvm.sust.b.2d.array.v4i16.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v4i16_zero;	 // "vvm.sust.b.2d.array.v4i16.zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(NameR.data()+24, "2.", 2))
                  break;
                switch (NameR[26]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v4i32_trap;	 // "vvm.sust.b.2d.array.v4i32.trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(NameR.data()+27, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_array_v4i32_zero;	 // "vvm.sust.b.2d.array.v4i32.zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(NameR.data()+24, ".clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_2d_array_v4i8_clamp;	 // "vvm.sust.b.2d.array.v4i8.clamp"
              }
              break;
            }
            break;
          }
          break;
        case 'p':	 // 8 strings to match.
          if (NameR[10] != '.')
            break;
          switch (NameR[11]) {
          default: break;
          case '1':	 // 4 strings to match.
            if (memcmp(NameR.data()+12, "d.array.v", 9))
              break;
            switch (NameR[21]) {
            default: break;
            case '2':	 // 2 strings to match.
              if (NameR[22] != 'i')
                break;
              switch (NameR[23]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_array_v2i16_trap;	 // "vvm.sust.p.1d.array.v2i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_array_v2i32_trap;	 // "vvm.sust.p.1d.array.v2i32.trap"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[22] != 'i')
                break;
              switch (NameR[23]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_array_v4i16_trap;	 // "vvm.sust.p.1d.array.v4i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_array_v4i32_trap;	 // "vvm.sust.p.1d.array.v4i32.trap"
              }
              break;
            }
            break;
          case '2':	 // 4 strings to match.
            if (memcmp(NameR.data()+12, "d.array.v", 9))
              break;
            switch (NameR[21]) {
            default: break;
            case '2':	 // 2 strings to match.
              if (NameR[22] != 'i')
                break;
              switch (NameR[23]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_array_v2i16_trap;	 // "vvm.sust.p.2d.array.v2i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_array_v2i32_trap;	 // "vvm.sust.p.2d.array.v2i32.trap"
              }
              break;
            case '4':	 // 2 strings to match.
              if (NameR[22] != 'i')
                break;
              switch (NameR[23]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "6.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_array_v4i16_trap;	 // "vvm.sust.p.2d.array.v4i16.trap"
              case '3':	 // 1 string to match.
                if (memcmp(NameR.data()+24, "2.trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_array_v4i32_trap;	 // "vvm.sust.p.2d.array.v4i32.trap"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 3 strings to match.
        if (memcmp(NameR.data()+5, "ex.unified.cube.v4", 18))
          break;
        switch (NameR[23]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+24, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_cube_v4f32_f32;	 // "vvm.tex.unified.cube.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+24, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_cube_v4s32_f32;	 // "vvm.tex.unified.cube.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+24, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_cube_v4u32_f32;	 // "vvm.tex.unified.cube.v4u32.f32"
        }
        break;
      }
      break;
    case 31:	 // 28 strings to match.
      if (memcmp(NameR.data()+0, "vvm.", 4))
        break;
      switch (NameR[4]) {
      default: break;
      case 's':	 // 10 strings to match.
        if (memcmp(NameR.data()+5, "ust.b.", 6))
          break;
        switch (NameR[11]) {
        default: break;
        case '1':	 // 5 strings to match.
          if (memcmp(NameR.data()+12, "d.array.v", 9))
            break;
          switch (NameR[21]) {
          default: break;
          case '2':	 // 3 strings to match.
            if (NameR[22] != 'i')
              break;
            switch (NameR[23]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "6.clamp", 7))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i16_clamp;	 // "vvm.sust.b.1d.array.v2i16.clamp"
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "2.clamp", 7))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i32_clamp;	 // "vvm.sust.b.1d.array.v2i32.clamp"
            case '6':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "4.clamp", 7))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i64_clamp;	 // "vvm.sust.b.1d.array.v2i64.clamp"
            }
            break;
          case '4':	 // 2 strings to match.
            if (NameR[22] != 'i')
              break;
            switch (NameR[23]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "6.clamp", 7))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v4i16_clamp;	 // "vvm.sust.b.1d.array.v4i16.clamp"
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "2.clamp", 7))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v4i32_clamp;	 // "vvm.sust.b.1d.array.v4i32.clamp"
            }
            break;
          }
          break;
        case '2':	 // 5 strings to match.
          if (memcmp(NameR.data()+12, "d.array.v", 9))
            break;
          switch (NameR[21]) {
          default: break;
          case '2':	 // 3 strings to match.
            if (NameR[22] != 'i')
              break;
            switch (NameR[23]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "6.clamp", 7))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i16_clamp;	 // "vvm.sust.b.2d.array.v2i16.clamp"
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "2.clamp", 7))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i32_clamp;	 // "vvm.sust.b.2d.array.v2i32.clamp"
            case '6':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "4.clamp", 7))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i64_clamp;	 // "vvm.sust.b.2d.array.v2i64.clamp"
            }
            break;
          case '4':	 // 2 strings to match.
            if (NameR[22] != 'i')
              break;
            switch (NameR[23]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "6.clamp", 7))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v4i16_clamp;	 // "vvm.sust.b.2d.array.v4i16.clamp"
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+24, "2.clamp", 7))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v4i32_clamp;	 // "vvm.sust.b.2d.array.v4i32.clamp"
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 18 strings to match.
        switch (NameR[5]) {
        default: break;
        case 'e':	 // 6 strings to match.
          if (memcmp(NameR.data()+6, "x.", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case '1':	 // 3 strings to match.
            if (memcmp(NameR.data()+9, "d.array.grad.v4", 15))
              break;
            switch (NameR[24]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_1d_array_grad_v4f32_f32;	 // "vvm.tex.1d.array.grad.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_1d_array_grad_v4s32_f32;	 // "vvm.tex.1d.array.grad.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_1d_array_grad_v4u32_f32;	 // "vvm.tex.1d.array.grad.v4u32.f32"
            }
            break;
          case '2':	 // 3 strings to match.
            if (memcmp(NameR.data()+9, "d.array.grad.v4", 15))
              break;
            switch (NameR[24]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_2d_array_grad_v4f32_f32;	 // "vvm.tex.2d.array.grad.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_2d_array_grad_v4s32_f32;	 // "vvm.tex.2d.array.grad.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_2d_array_grad_v4u32_f32;	 // "vvm.tex.2d.array.grad.v4u32.f32"
            }
            break;
          }
          break;
        case 'l':	 // 12 strings to match.
          if (memcmp(NameR.data()+6, "d4.unified.", 11))
            break;
          switch (NameR[17]) {
          default: break;
          case 'a':	 // 3 strings to match.
            if (memcmp(NameR.data()+18, ".2d.v4", 6))
              break;
            switch (NameR[24]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_a_2d_v4f32_f32;	 // "vvm.tld4.unified.a.2d.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_a_2d_v4s32_f32;	 // "vvm.tld4.unified.a.2d.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_a_2d_v4u32_f32;	 // "vvm.tld4.unified.a.2d.v4u32.f32"
            }
            break;
          case 'b':	 // 3 strings to match.
            if (memcmp(NameR.data()+18, ".2d.v4", 6))
              break;
            switch (NameR[24]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_b_2d_v4f32_f32;	 // "vvm.tld4.unified.b.2d.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_b_2d_v4s32_f32;	 // "vvm.tld4.unified.b.2d.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_b_2d_v4u32_f32;	 // "vvm.tld4.unified.b.2d.v4u32.f32"
            }
            break;
          case 'g':	 // 3 strings to match.
            if (memcmp(NameR.data()+18, ".2d.v4", 6))
              break;
            switch (NameR[24]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_g_2d_v4f32_f32;	 // "vvm.tld4.unified.g.2d.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_g_2d_v4s32_f32;	 // "vvm.tld4.unified.g.2d.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_g_2d_v4u32_f32;	 // "vvm.tld4.unified.g.2d.v4u32.f32"
            }
            break;
          case 'r':	 // 3 strings to match.
            if (memcmp(NameR.data()+18, ".2d.v4", 6))
              break;
            switch (NameR[24]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_r_2d_v4f32_f32;	 // "vvm.tld4.unified.r.2d.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_r_2d_v4s32_f32;	 // "vvm.tld4.unified.r.2d.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+25, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tld4_unified_r_2d_v4u32_f32;	 // "vvm.tld4.unified.r.2d.v4u32.f32"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 32:	 // 6 strings to match.
      if (memcmp(NameR.data()+0, "vvm.tex.", 8))
        break;
      switch (NameR[8]) {
      default: break;
      case '1':	 // 3 strings to match.
        if (memcmp(NameR.data()+9, "d.array.level.v4", 16))
          break;
        switch (NameR[25]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+26, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_1d_array_level_v4f32_f32;	 // "vvm.tex.1d.array.level.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+26, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_1d_array_level_v4s32_f32;	 // "vvm.tex.1d.array.level.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+26, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_1d_array_level_v4u32_f32;	 // "vvm.tex.1d.array.level.v4u32.f32"
        }
        break;
      case '2':	 // 3 strings to match.
        if (memcmp(NameR.data()+9, "d.array.level.v4", 16))
          break;
        switch (NameR[25]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+26, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_2d_array_level_v4f32_f32;	 // "vvm.tex.2d.array.level.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+26, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_2d_array_level_v4s32_f32;	 // "vvm.tex.2d.array.level.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+26, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_2d_array_level_v4u32_f32;	 // "vvm.tex.2d.array.level.v4u32.f32"
        }
        break;
      }
      break;
    case 33:	 // 9 strings to match.
      if (memcmp(NameR.data()+0, "vvm.tex.unified.", 16))
        break;
      switch (NameR[16]) {
      default: break;
      case '1':	 // 3 strings to match.
        if (memcmp(NameR.data()+17, "d.grad.v4", 9))
          break;
        switch (NameR[26]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+27, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_1d_grad_v4f32_f32;	 // "vvm.tex.unified.1d.grad.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+27, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_1d_grad_v4s32_f32;	 // "vvm.tex.unified.1d.grad.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+27, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_1d_grad_v4u32_f32;	 // "vvm.tex.unified.1d.grad.v4u32.f32"
        }
        break;
      case '2':	 // 3 strings to match.
        if (memcmp(NameR.data()+17, "d.grad.v4", 9))
          break;
        switch (NameR[26]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+27, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_2d_grad_v4f32_f32;	 // "vvm.tex.unified.2d.grad.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+27, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_2d_grad_v4s32_f32;	 // "vvm.tex.unified.2d.grad.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+27, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_2d_grad_v4u32_f32;	 // "vvm.tex.unified.2d.grad.v4u32.f32"
        }
        break;
      case '3':	 // 3 strings to match.
        if (memcmp(NameR.data()+17, "d.grad.v4", 9))
          break;
        switch (NameR[26]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+27, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_3d_grad_v4f32_f32;	 // "vvm.tex.unified.3d.grad.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+27, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_3d_grad_v4s32_f32;	 // "vvm.tex.unified.3d.grad.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+27, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_3d_grad_v4u32_f32;	 // "vvm.tex.unified.3d.grad.v4u32.f32"
        }
        break;
      }
      break;
    case 34:	 // 24 strings to match.
      if (memcmp(NameR.data()+0, "vvm.tex.", 8))
        break;
      switch (NameR[8]) {
      default: break;
      case 'c':	 // 3 strings to match.
        if (memcmp(NameR.data()+9, "ube.array.level.v4", 18))
          break;
        switch (NameR[27]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+28, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_cube_array_level_v4f32_f32;	 // "vvm.tex.cube.array.level.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+28, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_cube_array_level_v4s32_f32;	 // "vvm.tex.cube.array.level.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+28, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_cube_array_level_v4u32_f32;	 // "vvm.tex.cube.array.level.v4u32.f32"
        }
        break;
      case 'u':	 // 21 strings to match.
        if (memcmp(NameR.data()+9, "nified.", 7))
          break;
        switch (NameR[16]) {
        default: break;
        case '1':	 // 9 strings to match.
          if (memcmp(NameR.data()+17, "d.", 2))
            break;
          switch (NameR[19]) {
          default: break;
          case 'a':	 // 6 strings to match.
            if (memcmp(NameR.data()+20, "rray.v4", 7))
              break;
            switch (NameR[27]) {
            default: break;
            case 'f':	 // 2 strings to match.
              if (memcmp(NameR.data()+28, "32.", 3))
                break;
              switch (NameR[31]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_array_v4f32_f32;	 // "vvm.tex.unified.1d.array.v4f32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_array_v4f32_s32;	 // "vvm.tex.unified.1d.array.v4f32.s32"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+28, "32.", 3))
                break;
              switch (NameR[31]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_array_v4s32_f32;	 // "vvm.tex.unified.1d.array.v4s32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_array_v4s32_s32;	 // "vvm.tex.unified.1d.array.v4s32.s32"
              }
              break;
            case 'u':	 // 2 strings to match.
              if (memcmp(NameR.data()+28, "32.", 3))
                break;
              switch (NameR[31]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_array_v4u32_f32;	 // "vvm.tex.unified.1d.array.v4u32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_1d_array_v4u32_s32;	 // "vvm.tex.unified.1d.array.v4u32.s32"
              }
              break;
            }
            break;
          case 'l':	 // 3 strings to match.
            if (memcmp(NameR.data()+20, "evel.v4", 7))
              break;
            switch (NameR[27]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+28, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_unified_1d_level_v4f32_f32;	 // "vvm.tex.unified.1d.level.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+28, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_unified_1d_level_v4s32_f32;	 // "vvm.tex.unified.1d.level.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+28, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_unified_1d_level_v4u32_f32;	 // "vvm.tex.unified.1d.level.v4u32.f32"
            }
            break;
          }
          break;
        case '2':	 // 9 strings to match.
          if (memcmp(NameR.data()+17, "d.", 2))
            break;
          switch (NameR[19]) {
          default: break;
          case 'a':	 // 6 strings to match.
            if (memcmp(NameR.data()+20, "rray.v4", 7))
              break;
            switch (NameR[27]) {
            default: break;
            case 'f':	 // 2 strings to match.
              if (memcmp(NameR.data()+28, "32.", 3))
                break;
              switch (NameR[31]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_array_v4f32_f32;	 // "vvm.tex.unified.2d.array.v4f32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_array_v4f32_s32;	 // "vvm.tex.unified.2d.array.v4f32.s32"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+28, "32.", 3))
                break;
              switch (NameR[31]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_array_v4s32_f32;	 // "vvm.tex.unified.2d.array.v4s32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_array_v4s32_s32;	 // "vvm.tex.unified.2d.array.v4s32.s32"
              }
              break;
            case 'u':	 // 2 strings to match.
              if (memcmp(NameR.data()+28, "32.", 3))
                break;
              switch (NameR[31]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_array_v4u32_f32;	 // "vvm.tex.unified.2d.array.v4u32.f32"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+32, "32", 2))
                  break;
                return Intrinsic::nvvm_tex_unified_2d_array_v4u32_s32;	 // "vvm.tex.unified.2d.array.v4u32.s32"
              }
              break;
            }
            break;
          case 'l':	 // 3 strings to match.
            if (memcmp(NameR.data()+20, "evel.v4", 7))
              break;
            switch (NameR[27]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+28, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_unified_2d_level_v4f32_f32;	 // "vvm.tex.unified.2d.level.v4f32.f32"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+28, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_unified_2d_level_v4s32_f32;	 // "vvm.tex.unified.2d.level.v4s32.f32"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+28, "32.f32", 6))
                break;
              return Intrinsic::nvvm_tex_unified_2d_level_v4u32_f32;	 // "vvm.tex.unified.2d.level.v4u32.f32"
            }
            break;
          }
          break;
        case '3':	 // 3 strings to match.
          if (memcmp(NameR.data()+17, "d.level.v4", 10))
            break;
          switch (NameR[27]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(NameR.data()+28, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tex_unified_3d_level_v4f32_f32;	 // "vvm.tex.unified.3d.level.v4f32.f32"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+28, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tex_unified_3d_level_v4s32_f32;	 // "vvm.tex.unified.3d.level.v4s32.f32"
          case 'u':	 // 1 string to match.
            if (memcmp(NameR.data()+28, "32.f32", 6))
              break;
            return Intrinsic::nvvm_tex_unified_3d_level_v4u32_f32;	 // "vvm.tex.unified.3d.level.v4u32.f32"
          }
          break;
        }
        break;
      }
      break;
    case 36:	 // 6 strings to match.
      if (memcmp(NameR.data()+0, "vvm.tex.unified.cube.", 21))
        break;
      switch (NameR[21]) {
      default: break;
      case 'a':	 // 3 strings to match.
        if (memcmp(NameR.data()+22, "rray.v4", 7))
          break;
        switch (NameR[29]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+30, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_cube_array_v4f32_f32;	 // "vvm.tex.unified.cube.array.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+30, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_cube_array_v4s32_f32;	 // "vvm.tex.unified.cube.array.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+30, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_cube_array_v4u32_f32;	 // "vvm.tex.unified.cube.array.v4u32.f32"
        }
        break;
      case 'l':	 // 3 strings to match.
        if (memcmp(NameR.data()+22, "evel.v4", 7))
          break;
        switch (NameR[29]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+30, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_cube_level_v4f32_f32;	 // "vvm.tex.unified.cube.level.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+30, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_cube_level_v4s32_f32;	 // "vvm.tex.unified.cube.level.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+30, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_cube_level_v4u32_f32;	 // "vvm.tex.unified.cube.level.v4u32.f32"
        }
        break;
      }
      break;
    case 39:	 // 6 strings to match.
      if (memcmp(NameR.data()+0, "vvm.tex.unified.", 16))
        break;
      switch (NameR[16]) {
      default: break;
      case '1':	 // 3 strings to match.
        if (memcmp(NameR.data()+17, "d.array.grad.v4", 15))
          break;
        switch (NameR[32]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+33, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_1d_array_grad_v4f32_f32;	 // "vvm.tex.unified.1d.array.grad.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+33, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_1d_array_grad_v4s32_f32;	 // "vvm.tex.unified.1d.array.grad.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+33, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_1d_array_grad_v4u32_f32;	 // "vvm.tex.unified.1d.array.grad.v4u32.f32"
        }
        break;
      case '2':	 // 3 strings to match.
        if (memcmp(NameR.data()+17, "d.array.grad.v4", 15))
          break;
        switch (NameR[32]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+33, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_2d_array_grad_v4f32_f32;	 // "vvm.tex.unified.2d.array.grad.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+33, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_2d_array_grad_v4s32_f32;	 // "vvm.tex.unified.2d.array.grad.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+33, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_2d_array_grad_v4u32_f32;	 // "vvm.tex.unified.2d.array.grad.v4u32.f32"
        }
        break;
      }
      break;
    case 40:	 // 6 strings to match.
      if (memcmp(NameR.data()+0, "vvm.tex.unified.", 16))
        break;
      switch (NameR[16]) {
      default: break;
      case '1':	 // 3 strings to match.
        if (memcmp(NameR.data()+17, "d.array.level.v4", 16))
          break;
        switch (NameR[33]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+34, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_1d_array_level_v4f32_f32;	 // "vvm.tex.unified.1d.array.level.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+34, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_1d_array_level_v4s32_f32;	 // "vvm.tex.unified.1d.array.level.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+34, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_1d_array_level_v4u32_f32;	 // "vvm.tex.unified.1d.array.level.v4u32.f32"
        }
        break;
      case '2':	 // 3 strings to match.
        if (memcmp(NameR.data()+17, "d.array.level.v4", 16))
          break;
        switch (NameR[33]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+34, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_2d_array_level_v4f32_f32;	 // "vvm.tex.unified.2d.array.level.v4f32.f32"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+34, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_2d_array_level_v4s32_f32;	 // "vvm.tex.unified.2d.array.level.v4s32.f32"
        case 'u':	 // 1 string to match.
          if (memcmp(NameR.data()+34, "32.f32", 6))
            break;
          return Intrinsic::nvvm_tex_unified_2d_array_level_v4u32_f32;	 // "vvm.tex.unified.2d.array.level.v4u32.f32"
        }
        break;
      }
      break;
    case 42:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "vvm.tex.unified.cube.array.level.v4", 35))
        break;
      switch (NameR[35]) {
      default: break;
      case 'f':	 // 1 string to match.
        if (memcmp(NameR.data()+36, "32.f32", 6))
          break;
        return Intrinsic::nvvm_tex_unified_cube_array_level_v4f32_f32;	 // "vvm.tex.unified.cube.array.level.v4f32.f32"
      case 's':	 // 1 string to match.
        if (memcmp(NameR.data()+36, "32.f32", 6))
          break;
        return Intrinsic::nvvm_tex_unified_cube_array_level_v4s32_f32;	 // "vvm.tex.unified.cube.array.level.v4s32.f32"
      case 'u':	 // 1 string to match.
        if (memcmp(NameR.data()+36, "32.f32", 6))
          break;
        return Intrinsic::nvvm_tex_unified_cube_array_level_v4u32_f32;	 // "vvm.tex.unified.cube.array.level.v4u32.f32"
      }
      break;
    }
    break;  // end of 'n' case.
  case 'o':
    if (NameR.startswith("bjectsize.")) return Intrinsic::objectsize;
    break;  // end of 'o' case.
  case 'p':
    if (NameR.startswith("tr.annotation.")) return Intrinsic::ptr_annotation;
    if (NameR.startswith("pc.mtctr.")) return Intrinsic::ppc_mtctr;
    if (NameR.startswith("owi.")) return Intrinsic::powi;
    if (NameR.startswith("ow.")) return Intrinsic::pow;
    switch (NameR.size()) {
    default: break;
    case 7:	 // 8 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "marker", 6))
          break;
        return Intrinsic::pcmarker;	 // "cmarker"
      case 'p':	 // 6 strings to match.
        if (memcmp(NameR.data()+1, "c.", 2))
          break;
        switch (NameR[3]) {
        default: break;
        case 'd':	 // 5 strings to match.
          if (memcmp(NameR.data()+4, "cb", 2))
            break;
          switch (NameR[6]) {
          default: break;
          case 'a':	 // 1 string to match.
            return Intrinsic::ppc_dcba;	 // "pc.dcba"
          case 'f':	 // 1 string to match.
            return Intrinsic::ppc_dcbf;	 // "pc.dcbf"
          case 'i':	 // 1 string to match.
            return Intrinsic::ppc_dcbi;	 // "pc.dcbi"
          case 't':	 // 1 string to match.
            return Intrinsic::ppc_dcbt;	 // "pc.dcbt"
          case 'z':	 // 1 string to match.
            return Intrinsic::ppc_dcbz;	 // "pc.dcbz"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+4, "ync", 3))
            break;
          return Intrinsic::ppc_sync;	 // "pc.sync"
        }
        break;
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "efetch", 6))
          break;
        return Intrinsic::prefetch;	 // "refetch"
      }
      break;
    case 8:	 // 2 strings to match.
      if (memcmp(NameR.data()+0, "pc.dcb", 6))
        break;
      switch (NameR[6]) {
      default: break;
      case 's':	 // 1 string to match.
        if (NameR[7] != 't')
          break;
        return Intrinsic::ppc_dcbst;	 // "pc.dcbst"
      case 'z':	 // 1 string to match.
        if (NameR[7] != 'l')
          break;
        return Intrinsic::ppc_dcbzl;	 // "pc.dcbzl"
      }
      break;
    case 9:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "pc.dcbtst", 9))
        break;
      return Intrinsic::ppc_dcbtst;	 // "pc.dcbtst"
    case 11:	 // 5 strings to match.
      if (memcmp(NameR.data()+0, "tx.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'b':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "ar.sync", 7))
          break;
        return Intrinsic::ptx_bar_sync;	 // "tx.bar.sync"
      case 'r':	 // 4 strings to match.
        if (memcmp(NameR.data()+4, "ead.pm", 6))
          break;
        switch (NameR[10]) {
        default: break;
        case '0':	 // 1 string to match.
          return Intrinsic::ptx_read_pm0;	 // "tx.read.pm0"
        case '1':	 // 1 string to match.
          return Intrinsic::ptx_read_pm1;	 // "tx.read.pm1"
        case '2':	 // 1 string to match.
          return Intrinsic::ptx_read_pm2;	 // "tx.read.pm2"
        case '3':	 // 1 string to match.
          return Intrinsic::ptx_read_pm3;	 // "tx.read.pm3"
        }
        break;
      }
      break;
    case 12:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "tx.read.smid", 12))
        break;
      return Intrinsic::ptx_read_smid;	 // "tx.read.smid"
    case 13:	 // 6 strings to match.
      if (memcmp(NameR.data()+0, "tx.read.", 8))
        break;
      switch (NameR[8]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+9, "lock", 4))
          break;
        return Intrinsic::ptx_read_clock;	 // "tx.read.clock"
      case 'n':	 // 1 string to match.
        if (memcmp(NameR.data()+9, "smid", 4))
          break;
        return Intrinsic::ptx_read_nsmid;	 // "tx.read.nsmid"
      case 't':	 // 4 strings to match.
        if (memcmp(NameR.data()+9, "id.", 3))
          break;
        switch (NameR[12]) {
        default: break;
        case 'w':	 // 1 string to match.
          return Intrinsic::ptx_read_tid_w;	 // "tx.read.tid.w"
        case 'x':	 // 1 string to match.
          return Intrinsic::ptx_read_tid_x;	 // "tx.read.tid.x"
        case 'y':	 // 1 string to match.
          return Intrinsic::ptx_read_tid_y;	 // "tx.read.tid.y"
        case 'z':	 // 1 string to match.
          return Intrinsic::ptx_read_tid_z;	 // "tx.read.tid.z"
        }
        break;
      }
      break;
    case 14:	 // 12 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'p':	 // 5 strings to match.
        if (memcmp(NameR.data()+1, "c.altivec.", 10))
          break;
        switch (NameR[11]) {
        default: break;
        case 'd':	 // 2 strings to match.
          if (NameR[12] != 's')
            break;
          switch (NameR[13]) {
          default: break;
          case 's':	 // 1 string to match.
            return Intrinsic::ppc_altivec_dss;	 // "pc.altivec.dss"
          case 't':	 // 1 string to match.
            return Intrinsic::ppc_altivec_dst;	 // "pc.altivec.dst"
          }
          break;
        case 'l':	 // 1 string to match.
          if (memcmp(NameR.data()+12, "vx", 2))
            break;
          return Intrinsic::ppc_altivec_lvx;	 // "pc.altivec.lvx"
        case 'v':	 // 2 strings to match.
          if (NameR[12] != 's')
            break;
          switch (NameR[13]) {
          default: break;
          case 'l':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vsl;	 // "pc.altivec.vsl"
          case 'r':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vsr;	 // "pc.altivec.vsr"
          }
          break;
        }
        break;
      case 't':	 // 7 strings to match.
        if (memcmp(NameR.data()+1, "x.read.", 7))
          break;
        switch (NameR[8]) {
        default: break;
        case 'g':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "ridid", 5))
            break;
          return Intrinsic::ptx_read_gridid;	 // "tx.read.gridid"
        case 'l':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "aneid", 5))
            break;
          return Intrinsic::ptx_read_laneid;	 // "tx.read.laneid"
        case 'n':	 // 4 strings to match.
          if (memcmp(NameR.data()+9, "tid.", 4))
            break;
          switch (NameR[13]) {
          default: break;
          case 'w':	 // 1 string to match.
            return Intrinsic::ptx_read_ntid_w;	 // "tx.read.ntid.w"
          case 'x':	 // 1 string to match.
            return Intrinsic::ptx_read_ntid_x;	 // "tx.read.ntid.x"
          case 'y':	 // 1 string to match.
            return Intrinsic::ptx_read_ntid_y;	 // "tx.read.ntid.y"
          case 'z':	 // 1 string to match.
            return Intrinsic::ptx_read_ntid_z;	 // "tx.read.ntid.z"
          }
          break;
        case 'w':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "arpid", 5))
            break;
          return Intrinsic::ptx_read_warpid;	 // "tx.read.warpid"
        }
        break;
      }
      break;
    case 15:	 // 23 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'p':	 // 17 strings to match.
        if (memcmp(NameR.data()+1, "c.altivec.", 10))
          break;
        switch (NameR[11]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+12, "stt", 3))
            break;
          return Intrinsic::ppc_altivec_dstt;	 // "pc.altivec.dstt"
        case 'l':	 // 3 strings to match.
          if (NameR[12] != 'v')
            break;
          switch (NameR[13]) {
          default: break;
          case 's':	 // 2 strings to match.
            switch (NameR[14]) {
            default: break;
            case 'l':	 // 1 string to match.
              return Intrinsic::ppc_altivec_lvsl;	 // "pc.altivec.lvsl"
            case 'r':	 // 1 string to match.
              return Intrinsic::ppc_altivec_lvsr;	 // "pc.altivec.lvsr"
            }
            break;
          case 'x':	 // 1 string to match.
            if (NameR[14] != 'l')
              break;
            return Intrinsic::ppc_altivec_lvxl;	 // "pc.altivec.lvxl"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+12, "tvx", 3))
            break;
          return Intrinsic::ppc_altivec_stvx;	 // "pc.altivec.stvx"
        case 'v':	 // 12 strings to match.
          switch (NameR[12]) {
          default: break;
          case 'r':	 // 3 strings to match.
            if (NameR[13] != 'l')
              break;
            switch (NameR[14]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vrlb;	 // "pc.altivec.vrlb"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vrlh;	 // "pc.altivec.vrlh"
            case 'w':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vrlw;	 // "pc.altivec.vrlw"
            }
            break;
          case 's':	 // 9 strings to match.
            switch (NameR[13]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (NameR[14] != 'l')
                break;
              return Intrinsic::ppc_altivec_vsel;	 // "pc.altivec.vsel"
            case 'l':	 // 4 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vslb;	 // "pc.altivec.vslb"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vslh;	 // "pc.altivec.vslh"
              case 'o':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vslo;	 // "pc.altivec.vslo"
              case 'w':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vslw;	 // "pc.altivec.vslw"
              }
              break;
            case 'r':	 // 4 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vsrb;	 // "pc.altivec.vsrb"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vsrh;	 // "pc.altivec.vsrh"
              case 'o':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vsro;	 // "pc.altivec.vsro"
              case 'w':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vsrw;	 // "pc.altivec.vsrw"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 6 strings to match.
        if (memcmp(NameR.data()+1, "x.read.", 7))
          break;
        switch (NameR[8]) {
        default: break;
        case 'c':	 // 5 strings to match.
          switch (NameR[9]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+10, "ock64", 5))
              break;
            return Intrinsic::ptx_read_clock64;	 // "tx.read.clock64"
          case 't':	 // 4 strings to match.
            if (memcmp(NameR.data()+10, "aid.", 4))
              break;
            switch (NameR[14]) {
            default: break;
            case 'w':	 // 1 string to match.
              return Intrinsic::ptx_read_ctaid_w;	 // "tx.read.ctaid.w"
            case 'x':	 // 1 string to match.
              return Intrinsic::ptx_read_ctaid_x;	 // "tx.read.ctaid.x"
            case 'y':	 // 1 string to match.
              return Intrinsic::ptx_read_ctaid_y;	 // "tx.read.ctaid.y"
            case 'z':	 // 1 string to match.
              return Intrinsic::ptx_read_ctaid_z;	 // "tx.read.ctaid.z"
            }
            break;
          }
          break;
        case 'n':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "warpid", 6))
            break;
          return Intrinsic::ptx_read_nwarpid;	 // "tx.read.nwarpid"
        }
        break;
      }
      break;
    case 16:	 // 21 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'p':	 // 17 strings to match.
        if (memcmp(NameR.data()+1, "c.altivec.", 10))
          break;
        switch (NameR[11]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+12, "stst", 4))
            break;
          return Intrinsic::ppc_altivec_dstst;	 // "pc.altivec.dstst"
        case 'l':	 // 3 strings to match.
          if (memcmp(NameR.data()+12, "ve", 2))
            break;
          switch (NameR[14]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (NameR[15] != 'x')
              break;
            return Intrinsic::ppc_altivec_lvebx;	 // "pc.altivec.lvebx"
          case 'h':	 // 1 string to match.
            if (NameR[15] != 'x')
              break;
            return Intrinsic::ppc_altivec_lvehx;	 // "pc.altivec.lvehx"
          case 'w':	 // 1 string to match.
            if (NameR[15] != 'x')
              break;
            return Intrinsic::ppc_altivec_lvewx;	 // "pc.altivec.lvewx"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+12, "tvxl", 4))
            break;
          return Intrinsic::ppc_altivec_stvxl;	 // "pc.altivec.stvxl"
        case 'v':	 // 12 strings to match.
          switch (NameR[12]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (NameR[13] != 'f')
              break;
            switch (NameR[14]) {
            default: break;
            case 's':	 // 1 string to match.
              if (NameR[15] != 'x')
                break;
              return Intrinsic::ppc_altivec_vcfsx;	 // "pc.altivec.vcfsx"
            case 'u':	 // 1 string to match.
              if (NameR[15] != 'x')
                break;
              return Intrinsic::ppc_altivec_vcfux;	 // "pc.altivec.vcfux"
            }
            break;
          case 'p':	 // 2 strings to match.
            switch (NameR[13]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "rm", 2))
                break;
              return Intrinsic::ppc_altivec_vperm;	 // "pc.altivec.vperm"
            case 'k':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "px", 2))
                break;
              return Intrinsic::ppc_altivec_vpkpx;	 // "pc.altivec.vpkpx"
            }
            break;
          case 'r':	 // 5 strings to match.
            switch (NameR[13]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "fp", 2))
                break;
              return Intrinsic::ppc_altivec_vrefp;	 // "pc.altivec.vrefp"
            case 'f':	 // 4 strings to match.
              if (NameR[14] != 'i')
                break;
              switch (NameR[15]) {
              default: break;
              case 'm':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vrfim;	 // "pc.altivec.vrfim"
              case 'n':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vrfin;	 // "pc.altivec.vrfin"
              case 'p':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vrfip;	 // "pc.altivec.vrfip"
              case 'z':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vrfiz;	 // "pc.altivec.vrfiz"
              }
              break;
            }
            break;
          case 's':	 // 3 strings to match.
            if (memcmp(NameR.data()+13, "ra", 2))
              break;
            switch (NameR[15]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vsrab;	 // "pc.altivec.vsrab"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vsrah;	 // "pc.altivec.vsrah"
            case 'w':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vsraw;	 // "pc.altivec.vsraw"
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 4 strings to match.
        if (memcmp(NameR.data()+1, "x.read.nctaid.", 14))
          break;
        switch (NameR[15]) {
        default: break;
        case 'w':	 // 1 string to match.
          return Intrinsic::ptx_read_nctaid_w;	 // "tx.read.nctaid.w"
        case 'x':	 // 1 string to match.
          return Intrinsic::ptx_read_nctaid_x;	 // "tx.read.nctaid.x"
        case 'y':	 // 1 string to match.
          return Intrinsic::ptx_read_nctaid_y;	 // "tx.read.nctaid.y"
        case 'z':	 // 1 string to match.
          return Intrinsic::ptx_read_nctaid_z;	 // "tx.read.nctaid.z"
        }
        break;
      }
      break;
    case 17:	 // 29 strings to match.
      if (memcmp(NameR.data()+0, "pc.altivec.", 11))
        break;
      switch (NameR[11]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (NameR[12] != 's')
          break;
        switch (NameR[13]) {
        default: break;
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+14, "all", 3))
            break;
          return Intrinsic::ppc_altivec_dssall;	 // "pc.altivec.dssall"
        case 't':	 // 1 string to match.
          if (memcmp(NameR.data()+14, "stt", 3))
            break;
          return Intrinsic::ppc_altivec_dststt;	 // "pc.altivec.dststt"
        }
        break;
      case 'm':	 // 2 strings to match.
        switch (NameR[12]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+13, "vscr", 4))
            break;
          return Intrinsic::ppc_altivec_mfvscr;	 // "pc.altivec.mfvscr"
        case 't':	 // 1 string to match.
          if (memcmp(NameR.data()+13, "vscr", 4))
            break;
          return Intrinsic::ppc_altivec_mtvscr;	 // "pc.altivec.mtvscr"
        }
        break;
      case 's':	 // 3 strings to match.
        if (memcmp(NameR.data()+12, "tve", 3))
          break;
        switch (NameR[15]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (NameR[16] != 'x')
            break;
          return Intrinsic::ppc_altivec_stvebx;	 // "pc.altivec.stvebx"
        case 'h':	 // 1 string to match.
          if (NameR[16] != 'x')
            break;
          return Intrinsic::ppc_altivec_stvehx;	 // "pc.altivec.stvehx"
        case 'w':	 // 1 string to match.
          if (NameR[16] != 'x')
            break;
          return Intrinsic::ppc_altivec_stvewx;	 // "pc.altivec.stvewx"
        }
        break;
      case 'v':	 // 22 strings to match.
        switch (NameR[12]) {
        default: break;
        case 'a':	 // 6 strings to match.
          if (memcmp(NameR.data()+13, "vg", 2))
            break;
          switch (NameR[15]) {
          default: break;
          case 's':	 // 3 strings to match.
            switch (NameR[16]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vavgsb;	 // "pc.altivec.vavgsb"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vavgsh;	 // "pc.altivec.vavgsh"
            case 'w':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vavgsw;	 // "pc.altivec.vavgsw"
            }
            break;
          case 'u':	 // 3 strings to match.
            switch (NameR[16]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vavgub;	 // "pc.altivec.vavgub"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vavguh;	 // "pc.altivec.vavguh"
            case 'w':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vavguw;	 // "pc.altivec.vavguw"
            }
            break;
          }
          break;
        case 'c':	 // 2 strings to match.
          if (NameR[13] != 't')
            break;
          switch (NameR[14]) {
          default: break;
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+15, "xs", 2))
              break;
            return Intrinsic::ppc_altivec_vctsxs;	 // "pc.altivec.vctsxs"
          case 'u':	 // 1 string to match.
            if (memcmp(NameR.data()+15, "xs", 2))
              break;
            return Intrinsic::ppc_altivec_vctuxs;	 // "pc.altivec.vctuxs"
          }
          break;
        case 'm':	 // 14 strings to match.
          switch (NameR[13]) {
          default: break;
          case 'a':	 // 7 strings to match.
            if (NameR[14] != 'x')
              break;
            switch (NameR[15]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (NameR[16] != 'p')
                break;
              return Intrinsic::ppc_altivec_vmaxfp;	 // "pc.altivec.vmaxfp"
            case 's':	 // 3 strings to match.
              switch (NameR[16]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmaxsb;	 // "pc.altivec.vmaxsb"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmaxsh;	 // "pc.altivec.vmaxsh"
              case 'w':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmaxsw;	 // "pc.altivec.vmaxsw"
              }
              break;
            case 'u':	 // 3 strings to match.
              switch (NameR[16]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmaxub;	 // "pc.altivec.vmaxub"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmaxuh;	 // "pc.altivec.vmaxuh"
              case 'w':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmaxuw;	 // "pc.altivec.vmaxuw"
              }
              break;
            }
            break;
          case 'i':	 // 7 strings to match.
            if (NameR[14] != 'n')
              break;
            switch (NameR[15]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (NameR[16] != 'p')
                break;
              return Intrinsic::ppc_altivec_vminfp;	 // "pc.altivec.vminfp"
            case 's':	 // 3 strings to match.
              switch (NameR[16]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vminsb;	 // "pc.altivec.vminsb"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vminsh;	 // "pc.altivec.vminsh"
              case 'w':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vminsw;	 // "pc.altivec.vminsw"
              }
              break;
            case 'u':	 // 3 strings to match.
              switch (NameR[16]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vminub;	 // "pc.altivec.vminub"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vminuh;	 // "pc.altivec.vminuh"
              case 'w':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vminuw;	 // "pc.altivec.vminuw"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 18:	 // 38 strings to match.
      if (memcmp(NameR.data()+0, "pc.altivec.v", 12))
        break;
      switch (NameR[12]) {
      default: break;
      case 'a':	 // 7 strings to match.
        if (memcmp(NameR.data()+13, "dd", 2))
          break;
        switch (NameR[15]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(NameR.data()+16, "uw", 2))
            break;
          return Intrinsic::ppc_altivec_vaddcuw;	 // "pc.altivec.vaddcuw"
        case 's':	 // 3 strings to match.
          switch (NameR[16]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (NameR[17] != 's')
              break;
            return Intrinsic::ppc_altivec_vaddsbs;	 // "pc.altivec.vaddsbs"
          case 'h':	 // 1 string to match.
            if (NameR[17] != 's')
              break;
            return Intrinsic::ppc_altivec_vaddshs;	 // "pc.altivec.vaddshs"
          case 'w':	 // 1 string to match.
            if (NameR[17] != 's')
              break;
            return Intrinsic::ppc_altivec_vaddsws;	 // "pc.altivec.vaddsws"
          }
          break;
        case 'u':	 // 3 strings to match.
          switch (NameR[16]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (NameR[17] != 's')
              break;
            return Intrinsic::ppc_altivec_vaddubs;	 // "pc.altivec.vaddubs"
          case 'h':	 // 1 string to match.
            if (NameR[17] != 's')
              break;
            return Intrinsic::ppc_altivec_vadduhs;	 // "pc.altivec.vadduhs"
          case 'w':	 // 1 string to match.
            if (NameR[17] != 's')
              break;
            return Intrinsic::ppc_altivec_vadduws;	 // "pc.altivec.vadduws"
          }
          break;
        }
        break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+13, "mpbfp", 5))
          break;
        return Intrinsic::ppc_altivec_vcmpbfp;	 // "pc.altivec.vcmpbfp"
      case 'l':	 // 1 string to match.
        if (memcmp(NameR.data()+13, "ogefp", 5))
          break;
        return Intrinsic::ppc_altivec_vlogefp;	 // "pc.altivec.vlogefp"
      case 'm':	 // 9 strings to match.
        switch (NameR[13]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+14, "ddfp", 4))
            break;
          return Intrinsic::ppc_altivec_vmaddfp;	 // "pc.altivec.vmaddfp"
        case 'u':	 // 8 strings to match.
          if (NameR[14] != 'l')
            break;
          switch (NameR[15]) {
          default: break;
          case 'e':	 // 4 strings to match.
            switch (NameR[16]) {
            default: break;
            case 's':	 // 2 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmulesb;	 // "pc.altivec.vmulesb"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmulesh;	 // "pc.altivec.vmulesh"
              }
              break;
            case 'u':	 // 2 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmuleub;	 // "pc.altivec.vmuleub"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmuleuh;	 // "pc.altivec.vmuleuh"
              }
              break;
            }
            break;
          case 'o':	 // 4 strings to match.
            switch (NameR[16]) {
            default: break;
            case 's':	 // 2 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmulosb;	 // "pc.altivec.vmulosb"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmulosh;	 // "pc.altivec.vmulosh"
              }
              break;
            case 'u':	 // 2 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmuloub;	 // "pc.altivec.vmuloub"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmulouh;	 // "pc.altivec.vmulouh"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'p':	 // 6 strings to match.
        if (NameR[13] != 'k')
          break;
        switch (NameR[14]) {
        default: break;
        case 's':	 // 4 strings to match.
          switch (NameR[15]) {
          default: break;
          case 'h':	 // 2 strings to match.
            switch (NameR[16]) {
            default: break;
            case 's':	 // 1 string to match.
              if (NameR[17] != 's')
                break;
              return Intrinsic::ppc_altivec_vpkshss;	 // "pc.altivec.vpkshss"
            case 'u':	 // 1 string to match.
              if (NameR[17] != 's')
                break;
              return Intrinsic::ppc_altivec_vpkshus;	 // "pc.altivec.vpkshus"
            }
            break;
          case 'w':	 // 2 strings to match.
            switch (NameR[16]) {
            default: break;
            case 's':	 // 1 string to match.
              if (NameR[17] != 's')
                break;
              return Intrinsic::ppc_altivec_vpkswss;	 // "pc.altivec.vpkswss"
            case 'u':	 // 1 string to match.
              if (NameR[17] != 's')
                break;
              return Intrinsic::ppc_altivec_vpkswus;	 // "pc.altivec.vpkswus"
            }
            break;
          }
          break;
        case 'u':	 // 2 strings to match.
          switch (NameR[15]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (memcmp(NameR.data()+16, "us", 2))
              break;
            return Intrinsic::ppc_altivec_vpkuhus;	 // "pc.altivec.vpkuhus"
          case 'w':	 // 1 string to match.
            if (memcmp(NameR.data()+16, "us", 2))
              break;
            return Intrinsic::ppc_altivec_vpkuwus;	 // "pc.altivec.vpkuwus"
          }
          break;
        }
        break;
      case 's':	 // 8 strings to match.
        if (NameR[13] != 'u')
          break;
        switch (NameR[14]) {
        default: break;
        case 'b':	 // 7 strings to match.
          switch (NameR[15]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+16, "uw", 2))
              break;
            return Intrinsic::ppc_altivec_vsubcuw;	 // "pc.altivec.vsubcuw"
          case 's':	 // 3 strings to match.
            switch (NameR[16]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (NameR[17] != 's')
                break;
              return Intrinsic::ppc_altivec_vsubsbs;	 // "pc.altivec.vsubsbs"
            case 'h':	 // 1 string to match.
              if (NameR[17] != 's')
                break;
              return Intrinsic::ppc_altivec_vsubshs;	 // "pc.altivec.vsubshs"
            case 'w':	 // 1 string to match.
              if (NameR[17] != 's')
                break;
              return Intrinsic::ppc_altivec_vsubsws;	 // "pc.altivec.vsubsws"
            }
            break;
          case 'u':	 // 3 strings to match.
            switch (NameR[16]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (NameR[17] != 's')
                break;
              return Intrinsic::ppc_altivec_vsububs;	 // "pc.altivec.vsububs"
            case 'h':	 // 1 string to match.
              if (NameR[17] != 's')
                break;
              return Intrinsic::ppc_altivec_vsubuhs;	 // "pc.altivec.vsubuhs"
            case 'w':	 // 1 string to match.
              if (NameR[17] != 's')
                break;
              return Intrinsic::ppc_altivec_vsubuws;	 // "pc.altivec.vsubuws"
            }
            break;
          }
          break;
        case 'm':	 // 1 string to match.
          if (memcmp(NameR.data()+15, "sws", 3))
            break;
          return Intrinsic::ppc_altivec_vsumsws;	 // "pc.altivec.vsumsws"
        }
        break;
      case 'u':	 // 6 strings to match.
        if (memcmp(NameR.data()+13, "pk", 2))
          break;
        switch (NameR[15]) {
        default: break;
        case 'h':	 // 3 strings to match.
          switch (NameR[16]) {
          default: break;
          case 'p':	 // 1 string to match.
            if (NameR[17] != 'x')
              break;
            return Intrinsic::ppc_altivec_vupkhpx;	 // "pc.altivec.vupkhpx"
          case 's':	 // 2 strings to match.
            switch (NameR[17]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vupkhsb;	 // "pc.altivec.vupkhsb"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vupkhsh;	 // "pc.altivec.vupkhsh"
            }
            break;
          }
          break;
        case 'l':	 // 3 strings to match.
          switch (NameR[16]) {
          default: break;
          case 'p':	 // 1 string to match.
            if (NameR[17] != 'x')
              break;
            return Intrinsic::ppc_altivec_vupklpx;	 // "pc.altivec.vupklpx"
          case 's':	 // 2 strings to match.
            switch (NameR[17]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vupklsb;	 // "pc.altivec.vupklsb"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vupklsh;	 // "pc.altivec.vupklsh"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 19:	 // 29 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'p':	 // 24 strings to match.
        if (memcmp(NameR.data()+1, "c.altivec.v", 11))
          break;
        switch (NameR[12]) {
        default: break;
        case 'c':	 // 12 strings to match.
          if (memcmp(NameR.data()+13, "mp", 2))
            break;
          switch (NameR[15]) {
          default: break;
          case 'e':	 // 4 strings to match.
            if (NameR[16] != 'q')
              break;
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (NameR[18] != 'p')
                break;
              return Intrinsic::ppc_altivec_vcmpeqfp;	 // "pc.altivec.vcmpeqfp"
            case 'u':	 // 3 strings to match.
              switch (NameR[18]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vcmpequb;	 // "pc.altivec.vcmpequb"
              case 'h':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vcmpequh;	 // "pc.altivec.vcmpequh"
              case 'w':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vcmpequw;	 // "pc.altivec.vcmpequw"
              }
              break;
            }
            break;
          case 'g':	 // 8 strings to match.
            switch (NameR[16]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(NameR.data()+17, "fp", 2))
                break;
              return Intrinsic::ppc_altivec_vcmpgefp;	 // "pc.altivec.vcmpgefp"
            case 't':	 // 7 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'f':	 // 1 string to match.
                if (NameR[18] != 'p')
                  break;
                return Intrinsic::ppc_altivec_vcmpgtfp;	 // "pc.altivec.vcmpgtfp"
              case 's':	 // 3 strings to match.
                switch (NameR[18]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::ppc_altivec_vcmpgtsb;	 // "pc.altivec.vcmpgtsb"
                case 'h':	 // 1 string to match.
                  return Intrinsic::ppc_altivec_vcmpgtsh;	 // "pc.altivec.vcmpgtsh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::ppc_altivec_vcmpgtsw;	 // "pc.altivec.vcmpgtsw"
                }
                break;
              case 'u':	 // 3 strings to match.
                switch (NameR[18]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::ppc_altivec_vcmpgtub;	 // "pc.altivec.vcmpgtub"
                case 'h':	 // 1 string to match.
                  return Intrinsic::ppc_altivec_vcmpgtuh;	 // "pc.altivec.vcmpgtuh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::ppc_altivec_vcmpgtuw;	 // "pc.altivec.vcmpgtuw"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 'e':	 // 1 string to match.
          if (memcmp(NameR.data()+13, "xptefp", 6))
            break;
          return Intrinsic::ppc_altivec_vexptefp;	 // "pc.altivec.vexptefp"
        case 'm':	 // 6 strings to match.
          if (memcmp(NameR.data()+13, "sum", 3))
            break;
          switch (NameR[16]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "bm", 2))
              break;
            return Intrinsic::ppc_altivec_vmsummbm;	 // "pc.altivec.vmsummbm"
          case 's':	 // 2 strings to match.
            if (NameR[17] != 'h')
              break;
            switch (NameR[18]) {
            default: break;
            case 'm':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmsumshm;	 // "pc.altivec.vmsumshm"
            case 's':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmsumshs;	 // "pc.altivec.vmsumshs"
            }
            break;
          case 'u':	 // 3 strings to match.
            switch (NameR[17]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (NameR[18] != 'm')
                break;
              return Intrinsic::ppc_altivec_vmsumubm;	 // "pc.altivec.vmsumubm"
            case 'h':	 // 2 strings to match.
              switch (NameR[18]) {
              default: break;
              case 'm':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmsumuhm;	 // "pc.altivec.vmsumuhm"
              case 's':	 // 1 string to match.
                return Intrinsic::ppc_altivec_vmsumuhs;	 // "pc.altivec.vmsumuhs"
              }
              break;
            }
            break;
          }
          break;
        case 'n':	 // 1 string to match.
          if (memcmp(NameR.data()+13, "msubfp", 6))
            break;
          return Intrinsic::ppc_altivec_vnmsubfp;	 // "pc.altivec.vnmsubfp"
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+13, "um", 2))
            break;
          switch (NameR[15]) {
          default: break;
          case '2':	 // 1 string to match.
            if (memcmp(NameR.data()+16, "sws", 3))
              break;
            return Intrinsic::ppc_altivec_vsum2sws;	 // "pc.altivec.vsum2sws"
          case '4':	 // 3 strings to match.
            switch (NameR[16]) {
            default: break;
            case 's':	 // 2 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'b':	 // 1 string to match.
                if (NameR[18] != 's')
                  break;
                return Intrinsic::ppc_altivec_vsum4sbs;	 // "pc.altivec.vsum4sbs"
              case 'h':	 // 1 string to match.
                if (NameR[18] != 's')
                  break;
                return Intrinsic::ppc_altivec_vsum4shs;	 // "pc.altivec.vsum4shs"
              }
              break;
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+17, "bs", 2))
                break;
              return Intrinsic::ppc_altivec_vsum4ubs;	 // "pc.altivec.vsum4ubs"
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 5 strings to match.
        if (memcmp(NameR.data()+1, "x.read.lanemask.", 16))
          break;
        switch (NameR[17]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (NameR[18] != 'q')
            break;
          return Intrinsic::ptx_read_lanemask_eq;	 // "tx.read.lanemask.eq"
        case 'g':	 // 2 strings to match.
          switch (NameR[18]) {
          default: break;
          case 'e':	 // 1 string to match.
            return Intrinsic::ptx_read_lanemask_ge;	 // "tx.read.lanemask.ge"
          case 't':	 // 1 string to match.
            return Intrinsic::ptx_read_lanemask_gt;	 // "tx.read.lanemask.gt"
          }
          break;
        case 'l':	 // 2 strings to match.
          switch (NameR[18]) {
          default: break;
          case 'e':	 // 1 string to match.
            return Intrinsic::ptx_read_lanemask_le;	 // "tx.read.lanemask.le"
          case 't':	 // 1 string to match.
            return Intrinsic::ptx_read_lanemask_lt;	 // "tx.read.lanemask.lt"
          }
          break;
        }
        break;
      }
      break;
    case 20:	 // 4 strings to match.
      if (memcmp(NameR.data()+0, "pc.altivec.v", 12))
        break;
      switch (NameR[12]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+13, "mpbfp.p", 7))
          break;
        return Intrinsic::ppc_altivec_vcmpbfp_p;	 // "pc.altivec.vcmpbfp.p"
      case 'm':	 // 2 strings to match.
        switch (NameR[13]) {
        default: break;
        case 'h':	 // 1 string to match.
          if (memcmp(NameR.data()+14, "addshs", 6))
            break;
          return Intrinsic::ppc_altivec_vmhaddshs;	 // "pc.altivec.vmhaddshs"
        case 'l':	 // 1 string to match.
          if (memcmp(NameR.data()+14, "adduhm", 6))
            break;
          return Intrinsic::ppc_altivec_vmladduhm;	 // "pc.altivec.vmladduhm"
        }
        break;
      case 'r':	 // 1 string to match.
        if (memcmp(NameR.data()+13, "sqrtefp", 7))
          break;
        return Intrinsic::ppc_altivec_vrsqrtefp;	 // "pc.altivec.vrsqrtefp"
      }
      break;
    case 21:	 // 13 strings to match.
      if (memcmp(NameR.data()+0, "pc.altivec.v", 12))
        break;
      switch (NameR[12]) {
      default: break;
      case 'c':	 // 12 strings to match.
        if (memcmp(NameR.data()+13, "mp", 2))
          break;
        switch (NameR[15]) {
        default: break;
        case 'e':	 // 4 strings to match.
          if (NameR[16] != 'q')
            break;
          switch (NameR[17]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(NameR.data()+18, "p.p", 3))
              break;
            return Intrinsic::ppc_altivec_vcmpeqfp_p;	 // "pc.altivec.vcmpeqfp.p"
          case 'u':	 // 3 strings to match.
            switch (NameR[18]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (memcmp(NameR.data()+19, ".p", 2))
                break;
              return Intrinsic::ppc_altivec_vcmpequb_p;	 // "pc.altivec.vcmpequb.p"
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+19, ".p", 2))
                break;
              return Intrinsic::ppc_altivec_vcmpequh_p;	 // "pc.altivec.vcmpequh.p"
            case 'w':	 // 1 string to match.
              if (memcmp(NameR.data()+19, ".p", 2))
                break;
              return Intrinsic::ppc_altivec_vcmpequw_p;	 // "pc.altivec.vcmpequw.p"
            }
            break;
          }
          break;
        case 'g':	 // 8 strings to match.
          switch (NameR[16]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "fp.p", 4))
              break;
            return Intrinsic::ppc_altivec_vcmpgefp_p;	 // "pc.altivec.vcmpgefp.p"
          case 't':	 // 7 strings to match.
            switch (NameR[17]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "p.p", 3))
                break;
              return Intrinsic::ppc_altivec_vcmpgtfp_p;	 // "pc.altivec.vcmpgtfp.p"
            case 's':	 // 3 strings to match.
              switch (NameR[18]) {
              default: break;
              case 'b':	 // 1 string to match.
                if (memcmp(NameR.data()+19, ".p", 2))
                  break;
                return Intrinsic::ppc_altivec_vcmpgtsb_p;	 // "pc.altivec.vcmpgtsb.p"
              case 'h':	 // 1 string to match.
                if (memcmp(NameR.data()+19, ".p", 2))
                  break;
                return Intrinsic::ppc_altivec_vcmpgtsh_p;	 // "pc.altivec.vcmpgtsh.p"
              case 'w':	 // 1 string to match.
                if (memcmp(NameR.data()+19, ".p", 2))
                  break;
                return Intrinsic::ppc_altivec_vcmpgtsw_p;	 // "pc.altivec.vcmpgtsw.p"
              }
              break;
            case 'u':	 // 3 strings to match.
              switch (NameR[18]) {
              default: break;
              case 'b':	 // 1 string to match.
                if (memcmp(NameR.data()+19, ".p", 2))
                  break;
                return Intrinsic::ppc_altivec_vcmpgtub_p;	 // "pc.altivec.vcmpgtub.p"
              case 'h':	 // 1 string to match.
                if (memcmp(NameR.data()+19, ".p", 2))
                  break;
                return Intrinsic::ppc_altivec_vcmpgtuh_p;	 // "pc.altivec.vcmpgtuh.p"
              case 'w':	 // 1 string to match.
                if (memcmp(NameR.data()+19, ".p", 2))
                  break;
                return Intrinsic::ppc_altivec_vcmpgtuw_p;	 // "pc.altivec.vcmpgtuw.p"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'm':	 // 1 string to match.
        if (memcmp(NameR.data()+13, "hraddshs", 8))
          break;
        return Intrinsic::ppc_altivec_vmhraddshs;	 // "pc.altivec.vmhraddshs"
      }
      break;
    case 29:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "pc.is.decremented.ctr.nonzero", 29))
        break;
      return Intrinsic::ppc_is_decremented_ctr_nonzero;	 // "pc.is.decremented.ctr.nonzero"
    }
    break;  // end of 'p' case.
  case 'r':
    if (NameR.startswith("ound.")) return Intrinsic::round;
    if (NameR.startswith("int.")) return Intrinsic::rint;
    if (NameR.startswith("ead_register.")) return Intrinsic::read_register;
    switch (NameR.size()) {
    default: break;
    case 12:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "eturnaddress", 12))
        break;
      return Intrinsic::returnaddress;	 // "eturnaddress"
    case 15:	 // 4 strings to match.
      switch (NameR[0]) {
      default: break;
      case '6':	 // 3 strings to match.
        if (memcmp(NameR.data()+1, "00.read.tgid.", 13))
          break;
        switch (NameR[14]) {
        default: break;
        case 'x':	 // 1 string to match.
          return Intrinsic::r600_read_tgid_x;	 // "600.read.tgid.x"
        case 'y':	 // 1 string to match.
          return Intrinsic::r600_read_tgid_y;	 // "600.read.tgid.y"
        case 'z':	 // 1 string to match.
          return Intrinsic::r600_read_tgid_z;	 // "600.read.tgid.z"
        }
        break;
      case 'e':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "adcyclecounter", 14))
          break;
        return Intrinsic::readcyclecounter;	 // "eadcyclecounter"
      }
      break;
    case 16:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "600.read.tidig.", 15))
        break;
      switch (NameR[15]) {
      default: break;
      case 'x':	 // 1 string to match.
        return Intrinsic::r600_read_tidig_x;	 // "600.read.tidig.x"
      case 'y':	 // 1 string to match.
        return Intrinsic::r600_read_tidig_y;	 // "600.read.tidig.y"
      case 'z':	 // 1 string to match.
        return Intrinsic::r600_read_tidig_z;	 // "600.read.tidig.z"
      }
      break;
    case 18:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "600.read.ngroups.", 17))
        break;
      switch (NameR[17]) {
      default: break;
      case 'x':	 // 1 string to match.
        return Intrinsic::r600_read_ngroups_x;	 // "600.read.ngroups.x"
      case 'y':	 // 1 string to match.
        return Intrinsic::r600_read_ngroups_y;	 // "600.read.ngroups.y"
      case 'z':	 // 1 string to match.
        return Intrinsic::r600_read_ngroups_z;	 // "600.read.ngroups.z"
      }
      break;
    case 21:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "600.read.local.size.", 20))
        break;
      switch (NameR[20]) {
      default: break;
      case 'x':	 // 1 string to match.
        return Intrinsic::r600_read_local_size_x;	 // "600.read.local.size.x"
      case 'y':	 // 1 string to match.
        return Intrinsic::r600_read_local_size_y;	 // "600.read.local.size.y"
      case 'z':	 // 1 string to match.
        return Intrinsic::r600_read_local_size_z;	 // "600.read.local.size.z"
      }
      break;
    case 22:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "600.read.global.size.", 21))
        break;
      switch (NameR[21]) {
      default: break;
      case 'x':	 // 1 string to match.
        return Intrinsic::r600_read_global_size_x;	 // "600.read.global.size.x"
      case 'y':	 // 1 string to match.
        return Intrinsic::r600_read_global_size_y;	 // "600.read.global.size.y"
      case 'z':	 // 1 string to match.
        return Intrinsic::r600_read_global_size_z;	 // "600.read.global.size.z"
      }
      break;
    }
    break;  // end of 'r' case.
  case 's':
    if (NameR.startswith("sub.with.overflow.")) return Intrinsic::ssub_with_overflow;
    if (NameR.startswith("qrt.")) return Intrinsic::sqrt;
    if (NameR.startswith("mul.with.overflow.")) return Intrinsic::smul_with_overflow;
    if (NameR.startswith("in.")) return Intrinsic::sin;
    if (NameR.startswith("add.with.overflow.")) return Intrinsic::sadd_with_overflow;
    switch (NameR.size()) {
    default: break;
    case 5:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "etjmp", 5))
        break;
      return Intrinsic::setjmp;	 // "etjmp"
    case 8:	 // 2 strings to match.
      switch (NameR[0]) {
      default: break;
      case 'i':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "gsetjmp", 7))
          break;
        return Intrinsic::sigsetjmp;	 // "igsetjmp"
      case 't':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "acksave", 7))
          break;
        return Intrinsic::stacksave;	 // "tacksave"
      }
      break;
    case 9:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "iglongjmp", 9))
        break;
      return Intrinsic::siglongjmp;	 // "iglongjmp"
    case 11:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "tackrestore", 11))
        break;
      return Intrinsic::stackrestore;	 // "tackrestore"
    case 13:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "tackprotector", 13))
        break;
      return Intrinsic::stackprotector;	 // "tackprotector"
    case 18:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "tackprotectorcheck", 18))
        break;
      return Intrinsic::stackprotectorcheck;	 // "tackprotectorcheck"
    }
    break;  // end of 's' case.
  case 't':
    if (NameR.startswith("runc.")) return Intrinsic::trunc;
    switch (NameR.size()) {
    default: break;
    case 3:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "rap", 3))
        break;
      return Intrinsic::trap;	 // "rap"
    }
    break;  // end of 't' case.
  case 'u':
    if (NameR.startswith("sub.with.overflow.")) return Intrinsic::usub_with_overflow;
    if (NameR.startswith("mul.with.overflow.")) return Intrinsic::umul_with_overflow;
    if (NameR.startswith("add.with.overflow.")) return Intrinsic::uadd_with_overflow;
    break;  // end of 'u' case.
  case 'v':
    switch (NameR.size()) {
    default: break;
    case 5:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "a_end", 5))
        break;
      return Intrinsic::vaend;	 // "a_end"
    case 6:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "a_copy", 6))
        break;
      return Intrinsic::vacopy;	 // "a_copy"
    case 7:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "a_start", 7))
        break;
      return Intrinsic::vastart;	 // "a_start"
    case 13:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "ar.annotation", 13))
        break;
      return Intrinsic::var_annotation;	 // "ar.annotation"
    }
    break;  // end of 'v' case.
  case 'w':
    if (NameR.startswith("rite_register.")) return Intrinsic::write_register;
    break;  // end of 'w' case.
  case 'x':
    if (NameR.startswith("core.testwct.")) return Intrinsic::xcore_testwct;
    if (NameR.startswith("core.testct.")) return Intrinsic::xcore_testct;
    if (NameR.startswith("core.syncr.")) return Intrinsic::xcore_syncr;
    if (NameR.startswith("core.setv.")) return Intrinsic::xcore_setv;
    if (NameR.startswith("core.settw.")) return Intrinsic::xcore_settw;
    if (NameR.startswith("core.setrdy.")) return Intrinsic::xcore_setrdy;
    if (NameR.startswith("core.setpt.")) return Intrinsic::xcore_setpt;
    if (NameR.startswith("core.setpsc.")) return Intrinsic::xcore_setpsc;
    if (NameR.startswith("core.setev.")) return Intrinsic::xcore_setev;
    if (NameR.startswith("core.setd.")) return Intrinsic::xcore_setd;
    if (NameR.startswith("core.setclk.")) return Intrinsic::xcore_setclk;
    if (NameR.startswith("core.setc.")) return Intrinsic::xcore_setc;
    if (NameR.startswith("core.peek.")) return Intrinsic::xcore_peek;
    if (NameR.startswith("core.outt.")) return Intrinsic::xcore_outt;
    if (NameR.startswith("core.outshr.")) return Intrinsic::xcore_outshr;
    if (NameR.startswith("core.outct.")) return Intrinsic::xcore_outct;
    if (NameR.startswith("core.out.")) return Intrinsic::xcore_out;
    if (NameR.startswith("core.msync.")) return Intrinsic::xcore_msync;
    if (NameR.startswith("core.mjoin.")) return Intrinsic::xcore_mjoin;
    if (NameR.startswith("core.int.")) return Intrinsic::xcore_int;
    if (NameR.startswith("core.inshr.")) return Intrinsic::xcore_inshr;
    if (NameR.startswith("core.initsp.")) return Intrinsic::xcore_initsp;
    if (NameR.startswith("core.initpc.")) return Intrinsic::xcore_initpc;
    if (NameR.startswith("core.initlr.")) return Intrinsic::xcore_initlr;
    if (NameR.startswith("core.initdp.")) return Intrinsic::xcore_initdp;
    if (NameR.startswith("core.initcp.")) return Intrinsic::xcore_initcp;
    if (NameR.startswith("core.inct.")) return Intrinsic::xcore_inct;
    if (NameR.startswith("core.in.")) return Intrinsic::xcore_in;
    if (NameR.startswith("core.getts.")) return Intrinsic::xcore_getts;
    if (NameR.startswith("core.getst.")) return Intrinsic::xcore_getst;
    if (NameR.startswith("core.getr.")) return Intrinsic::xcore_getr;
    if (NameR.startswith("core.freer.")) return Intrinsic::xcore_freer;
    if (NameR.startswith("core.endin.")) return Intrinsic::xcore_endin;
    if (NameR.startswith("core.eeu.")) return Intrinsic::xcore_eeu;
    if (NameR.startswith("core.edu.")) return Intrinsic::xcore_edu;
    if (NameR.startswith("core.clrpt.")) return Intrinsic::xcore_clrpt;
    if (NameR.startswith("core.chkct.")) return Intrinsic::xcore_chkct;
    switch (NameR.size()) {
    default: break;
    case 6:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "86.int", 6))
        break;
      return Intrinsic::x86_int;	 // "86.int"
    case 7:	 // 1 string to match.
      if (memcmp(NameR.data()+0, "86.xend", 7))
        break;
      return Intrinsic::x86_xend;	 // "86.xend"
    case 8:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'r':	 // 2 strings to match.
        if (NameR[4] != 'd')
          break;
        switch (NameR[5]) {
        default: break;
        case 'p':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "mc", 2))
            break;
          return Intrinsic::x86_rdpmc;	 // "86.rdpmc"
        case 't':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "sc", 2))
            break;
          return Intrinsic::x86_rdtsc;	 // "86.rdtsc"
        }
        break;
      case 'x':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "test", 4))
          break;
        return Intrinsic::x86_xtest;	 // "86.xtest"
      }
      break;
    case 9:	 // 7 strings to match.
      switch (NameR[0]) {
      default: break;
      case '8':	 // 3 strings to match.
        if (memcmp(NameR.data()+1, "6.", 2))
          break;
        switch (NameR[3]) {
        default: break;
        case 'r':	 // 1 string to match.
          if (memcmp(NameR.data()+4, "dtscp", 5))
            break;
          return Intrinsic::x86_rdtscp;	 // "86.rdtscp"
        case 'x':	 // 2 strings to match.
          switch (NameR[4]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+5, "bort", 4))
              break;
            return Intrinsic::x86_xabort;	 // "86.xabort"
          case 'b':	 // 1 string to match.
            if (memcmp(NameR.data()+5, "egin", 4))
              break;
            return Intrinsic::x86_xbegin;	 // "86.xbegin"
          }
          break;
        }
        break;
      case 'c':	 // 4 strings to match.
        if (memcmp(NameR.data()+1, "ore.", 4))
          break;
        switch (NameR[5]) {
        default: break;
        case 'c':	 // 2 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "re", 2))
              break;
            return Intrinsic::xcore_clre;	 // "core.clre"
          case 'r':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "c8", 2))
              break;
            return Intrinsic::xcore_crc8;	 // "core.crc8"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "ext", 3))
            break;
          return Intrinsic::xcore_sext;	 // "core.sext"
        case 'z':	 // 1 string to match.
          if (memcmp(NameR.data()+6, "ext", 3))
            break;
          return Intrinsic::xcore_zext;	 // "core.zext"
        }
        break;
      }
      break;
    case 10:	 // 10 strings to match.
      switch (NameR[0]) {
      default: break;
      case '8':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "6.mmx.por", 9))
          break;
        return Intrinsic::x86_mmx_por;	 // "86.mmx.por"
      case 'c':	 // 9 strings to match.
        if (memcmp(NameR.data()+1, "ore.", 4))
          break;
        switch (NameR[5]) {
        default: break;
        case 'c':	 // 2 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "rsr", 3))
              break;
            return Intrinsic::xcore_clrsr;	 // "core.clrsr"
          case 'r':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "c32", 3))
              break;
            return Intrinsic::xcore_crc32;	 // "core.crc32"
          }
          break;
        case 'g':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "et", 2))
            break;
          switch (NameR[8]) {
          default: break;
          case 'e':	 // 2 strings to match.
            switch (NameR[9]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::xcore_geted;	 // "core.geted"
            case 't':	 // 1 string to match.
              return Intrinsic::xcore_getet;	 // "core.getet"
            }
            break;
          case 'i':	 // 1 string to match.
            if (NameR[9] != 'd')
              break;
            return Intrinsic::xcore_getid;	 // "core.getid"
          case 'p':	 // 1 string to match.
            if (NameR[9] != 's')
              break;
            return Intrinsic::xcore_getps;	 // "core.getps"
          }
          break;
        case 's':	 // 3 strings to match.
          switch (NameR[6]) {
          default: break;
          case 'e':	 // 2 strings to match.
            if (NameR[7] != 't')
              break;
            switch (NameR[8]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (NameR[9] != 's')
                break;
              return Intrinsic::xcore_setps;	 // "core.setps"
            case 's':	 // 1 string to match.
              if (NameR[9] != 'r')
                break;
              return Intrinsic::xcore_setsr;	 // "core.setsr"
            }
            break;
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+7, "ync", 3))
              break;
            return Intrinsic::xcore_ssync;	 // "core.ssync"
          }
          break;
        }
        break;
      }
      break;
    case 11:	 // 6 strings to match.
      switch (NameR[0]) {
      default: break;
      case '8':	 // 5 strings to match.
        if (memcmp(NameR.data()+1, "6.", 2))
          break;
        switch (NameR[3]) {
        default: break;
        case 'm':	 // 3 strings to match.
          if (memcmp(NameR.data()+4, "mx.", 3))
            break;
          switch (NameR[7]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "mms", 3))
              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 (memcmp(NameR.data()+9, "nd", 2))
                break;
              return Intrinsic::x86_mmx_pand;	 // "86.mmx.pand"
            case 'x':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "or", 2))
                break;
              return Intrinsic::x86_mmx_pxor;	 // "86.mmx.pxor"
            }
            break;
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+4, "ha1msg", 6))
            break;
          switch (NameR[10]) {
          default: break;
          case '1':	 // 1 string to match.
            return Intrinsic::x86_sha1msg1;	 // "86.sha1msg1"
          case '2':	 // 1 string to match.
            return Intrinsic::x86_sha1msg2;	 // "86.sha1msg2"
          }
          break;
        }
        break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "ore.bitrev", 10))
          break;
        return Intrinsic::xcore_bitrev;	 // "core.bitrev"
      }
      break;
    case 12:	 // 11 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'm':	 // 2 strings to match.
        if (memcmp(NameR.data()+4, "mx.", 3))
          break;
        switch (NameR[7]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "emms", 4))
            break;
          return Intrinsic::x86_mmx_femms;	 // "86.mmx.femms"
        case 'p':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "andn", 4))
            break;
          return Intrinsic::x86_mmx_pandn;	 // "86.mmx.pandn"
        }
        break;
      case 'p':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "clmulqdq", 8))
          break;
        return Intrinsic::x86_pclmulqdq;	 // "86.pclmulqdq"
      case 'r':	 // 6 strings to match.
        if (NameR[4] != 'd')
          break;
        switch (NameR[5]) {
        default: break;
        case 'r':	 // 3 strings to match.
          if (memcmp(NameR.data()+6, "and.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case '1':	 // 1 string to match.
            if (NameR[11] != '6')
              break;
            return Intrinsic::x86_rdrand_16;	 // "86.rdrand.16"
          case '3':	 // 1 string to match.
            if (NameR[11] != '2')
              break;
            return Intrinsic::x86_rdrand_32;	 // "86.rdrand.32"
          case '6':	 // 1 string to match.
            if (NameR[11] != '4')
              break;
            return Intrinsic::x86_rdrand_64;	 // "86.rdrand.64"
          }
          break;
        case 's':	 // 3 strings to match.
          if (memcmp(NameR.data()+6, "eed.", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case '1':	 // 1 string to match.
            if (NameR[11] != '6')
              break;
            return Intrinsic::x86_rdseed_16;	 // "86.rdseed.16"
          case '3':	 // 1 string to match.
            if (NameR[11] != '2')
              break;
            return Intrinsic::x86_rdseed_32;	 // "86.rdseed.32"
          case '6':	 // 1 string to match.
            if (NameR[11] != '4')
              break;
            return Intrinsic::x86_rdseed_64;	 // "86.rdseed.64"
          }
          break;
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(NameR.data()+4, "ha1", 3))
          break;
        switch (NameR[7]) {
        default: break;
        case 'n':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "exte", 4))
            break;
          return Intrinsic::x86_sha1nexte;	 // "86.sha1nexte"
        case 'r':	 // 1 string to match.
          if (memcmp(NameR.data()+8, "nds4", 4))
            break;
          return Intrinsic::x86_sha1rnds4;	 // "86.sha1rnds4"
        }
        break;
      }
      break;
    case 13:	 // 56 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "vx2.permd", 9))
          break;
        return Intrinsic::x86_avx2_permd;	 // "86.avx2.permd"
      case 'm':	 // 18 strings to match.
        if (memcmp(NameR.data()+4, "mx.p", 4))
          break;
        switch (NameR[8]) {
        default: break;
        case 'a':	 // 6 strings to match.
          switch (NameR[9]) {
          default: break;
          case 'd':	 // 4 strings to match.
            if (memcmp(NameR.data()+10, "d.", 2))
              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 (memcmp(NameR.data()+10, "g.", 2))
              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 (memcmp(NameR.data()+10, "l.", 2))
              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 (memcmp(NameR.data()+10, "b.", 2))
              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':	 // 19 strings to match.
        switch (NameR[4]) {
        default: break;
        case 'h':	 // 2 strings to match.
          if (memcmp(NameR.data()+5, "a256msg", 7))
            break;
          switch (NameR[12]) {
          default: break;
          case '1':	 // 1 string to match.
            return Intrinsic::x86_sha256msg1;	 // "86.sha256msg1"
          case '2':	 // 1 string to match.
            return Intrinsic::x86_sha256msg2;	 // "86.sha256msg2"
          }
          break;
        case 's':	 // 17 strings to match.
          if (NameR[5] != 'e')
            break;
          switch (NameR[6]) {
          default: break;
          case '.':	 // 13 strings to match.
            switch (NameR[7]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+8, "dd.ss", 5))
                break;
              return Intrinsic::x86_sse_add_ss;	 // "86.sse.add.ss"
            case 'c':	 // 2 strings to match.
              if (memcmp(NameR.data()+8, "mp.", 3))
                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 (memcmp(NameR.data()+8, "iv.ss", 5))
                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 (memcmp(NameR.data()+9, "x.", 2))
                  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 (memcmp(NameR.data()+9, "n.", 2))
                  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 (memcmp(NameR.data()+9, "l.ss", 4))
                  break;
                return Intrinsic::x86_sse_mul_ss;	 // "86.sse.mul.ss"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (memcmp(NameR.data()+8, "cp.", 3))
                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 (memcmp(NameR.data()+9, "ence", 4))
                  break;
                return Intrinsic::x86_sse_sfence;	 // "86.sse.sfence"
              case 'u':	 // 1 string to match.
                if (memcmp(NameR.data()+9, "b.ss", 4))
                  break;
                return Intrinsic::x86_sse_sub_ss;	 // "86.sse.sub.ss"
              }
              break;
            }
            break;
          case '2':	 // 1 string to match.
            if (memcmp(NameR.data()+7, ".pause", 6))
              break;
            return Intrinsic::x86_sse2_pause;	 // "86.sse2.pause"
          case '3':	 // 1 string to match.
            if (memcmp(NameR.data()+7, ".mwait", 6))
              break;
            return Intrinsic::x86_sse3_mwait;	 // "86.sse3.mwait"
          case '4':	 // 2 strings to match.
            if (memcmp(NameR.data()+7, "1.dpp", 5))
              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 'x':	 // 18 strings to match.
        if (memcmp(NameR.data()+4, "op.vp", 5))
          break;
        switch (NameR[9]) {
        default: break;
        case 'c':	 // 5 strings to match.
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ov", 2))
              break;
            return Intrinsic::x86_xop_vpcmov;	 // "86.xop.vpcmov"
          case 'o':	 // 4 strings to match.
            if (NameR[11] != 'm')
              break;
            switch (NameR[12]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomb;	 // "86.xop.vpcomb"
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomd;	 // "86.xop.vpcomd"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomq;	 // "86.xop.vpcomq"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomw;	 // "86.xop.vpcomw"
            }
            break;
          }
          break;
        case 'p':	 // 1 string to match.
          if (memcmp(NameR.data()+10, "erm", 3))
            break;
          return Intrinsic::x86_xop_vpperm;	 // "86.xop.vpperm"
        case 'r':	 // 4 strings to match.
          if (memcmp(NameR.data()+10, "ot", 2))
            break;
          switch (NameR[12]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::x86_xop_vprotb;	 // "86.xop.vprotb"
          case 'd':	 // 1 string to match.
            return Intrinsic::x86_xop_vprotd;	 // "86.xop.vprotd"
          case 'q':	 // 1 string to match.
            return Intrinsic::x86_xop_vprotq;	 // "86.xop.vprotq"
          case 'w':	 // 1 string to match.
            return Intrinsic::x86_xop_vprotw;	 // "86.xop.vprotw"
          }
          break;
        case 's':	 // 8 strings to match.
          if (NameR[10] != 'h')
            break;
          switch (NameR[11]) {
          default: break;
          case 'a':	 // 4 strings to match.
            switch (NameR[12]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshab;	 // "86.xop.vpshab"
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshad;	 // "86.xop.vpshad"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshaq;	 // "86.xop.vpshaq"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshaw;	 // "86.xop.vpshaw"
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (NameR[12]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshlb;	 // "86.xop.vpshlb"
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshld;	 // "86.xop.vpshld"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshlq;	 // "86.xop.vpshlq"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshlw;	 // "86.xop.vpshlw"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 14:	 // 97 strings to match.
      switch (NameR[0]) {
      default: break;
      case '8':	 // 96 strings to match.
        if (memcmp(NameR.data()+1, "6.", 2))
          break;
        switch (NameR[3]) {
        default: break;
        case '3':	 // 9 strings to match.
          if (memcmp(NameR.data()+4, "dnow.p", 6))
            break;
          switch (NameR[10]) {
          default: break;
          case 'f':	 // 8 strings to match.
            switch (NameR[11]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "id", 2))
                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 (memcmp(NameR.data()+12, "cp", 2))
                break;
              return Intrinsic::x86_3dnow_pfrcp;	 // "86.3dnow.pfrcp"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "ub", 2))
                break;
              return Intrinsic::x86_3dnow_pfsub;	 // "86.3dnow.pfsub"
            }
            break;
          case 'i':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "2fd", 3))
              break;
            return Intrinsic::x86_3dnow_pi2fd;	 // "86.3dnow.pi2fd"
          }
          break;
        case 'a':	 // 14 strings to match.
          if (memcmp(NameR.data()+4, "vx2.p", 5))
            break;
          switch (NameR[9]) {
          default: break;
          case 'a':	 // 5 strings to match.
            switch (NameR[10]) {
            default: break;
            case 'b':	 // 3 strings to match.
              if (memcmp(NameR.data()+11, "s.", 2))
                break;
              switch (NameR[13]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::x86_avx2_pabs_b;	 // "86.avx2.pabs.b"
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_avx2_pabs_d;	 // "86.avx2.pabs.d"
              case 'w':	 // 1 string to match.
                return Intrinsic::x86_avx2_pabs_w;	 // "86.avx2.pabs.w"
              }
              break;
            case 'v':	 // 2 strings to match.
              if (memcmp(NameR.data()+11, "g.", 2))
                break;
              switch (NameR[13]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::x86_avx2_pavg_b;	 // "86.avx2.pavg.b"
              case 'w':	 // 1 string to match.
                return Intrinsic::x86_avx2_pavg_w;	 // "86.avx2.pavg.w"
              }
              break;
            }
            break;
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+10, "rmps", 4))
              break;
            return Intrinsic::x86_avx2_permps;	 // "86.avx2.permps"
          case 's':	 // 8 strings to match.
            switch (NameR[10]) {
            default: break;
            case 'l':	 // 3 strings to match.
              if (memcmp(NameR.data()+11, "l.", 2))
                break;
              switch (NameR[13]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_avx2_psll_d;	 // "86.avx2.psll.d"
              case 'q':	 // 1 string to match.
                return Intrinsic::x86_avx2_psll_q;	 // "86.avx2.psll.q"
              case 'w':	 // 1 string to match.
                return Intrinsic::x86_avx2_psll_w;	 // "86.avx2.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_avx2_psra_d;	 // "86.avx2.psra.d"
                case 'w':	 // 1 string to match.
                  return Intrinsic::x86_avx2_psra_w;	 // "86.avx2.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_avx2_psrl_d;	 // "86.avx2.psrl.d"
                case 'q':	 // 1 string to match.
                  return Intrinsic::x86_avx2_psrl_q;	 // "86.avx2.psrl.q"
                case 'w':	 // 1 string to match.
                  return Intrinsic::x86_avx2_psrl_w;	 // "86.avx2.psrl.w"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 'b':	 // 6 strings to match.
          if (memcmp(NameR.data()+4, "mi.", 3))
            break;
          switch (NameR[7]) {
          default: break;
          case 'b':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "zhi.", 4))
              break;
            switch (NameR[12]) {
            default: break;
            case '3':	 // 1 string to match.
              if (NameR[13] != '2')
                break;
              return Intrinsic::x86_bmi_bzhi_32;	 // "86.bmi.bzhi.32"
            case '6':	 // 1 string to match.
              if (NameR[13] != '4')
                break;
              return Intrinsic::x86_bmi_bzhi_64;	 // "86.bmi.bzhi.64"
            }
            break;
          case 'p':	 // 4 strings to match.
            switch (NameR[8]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (memcmp(NameR.data()+9, "ep.", 3))
                break;
              switch (NameR[12]) {
              default: break;
              case '3':	 // 1 string to match.
                if (NameR[13] != '2')
                  break;
                return Intrinsic::x86_bmi_pdep_32;	 // "86.bmi.pdep.32"
              case '6':	 // 1 string to match.
                if (NameR[13] != '4')
                  break;
                return Intrinsic::x86_bmi_pdep_64;	 // "86.bmi.pdep.64"
              }
              break;
            case 'e':	 // 2 strings to match.
              if (memcmp(NameR.data()+9, "xt.", 3))
                break;
              switch (NameR[12]) {
              default: break;
              case '3':	 // 1 string to match.
                if (NameR[13] != '2')
                  break;
                return Intrinsic::x86_bmi_pext_32;	 // "86.bmi.pext.32"
              case '6':	 // 1 string to match.
                if (NameR[13] != '4')
                  break;
                return Intrinsic::x86_bmi_pext_64;	 // "86.bmi.pext.64"
              }
              break;
            }
            break;
          }
          break;
        case 'm':	 // 21 strings to match.
          if (memcmp(NameR.data()+4, "mx.p", 4))
            break;
          switch (NameR[8]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+9, "dds.", 4))
              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 (memcmp(NameR.data()+9, "xtr.w", 5))
              break;
            return Intrinsic::x86_mmx_pextr_w;	 // "86.mmx.pextr.w"
          case 'i':	 // 1 string to match.
            if (memcmp(NameR.data()+9, "nsr.w", 5))
              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 (memcmp(NameR.data()+12, ".w", 2))
                  break;
                return Intrinsic::x86_mmx_pmaxs_w;	 // "86.mmx.pmaxs.w"
              case 'u':	 // 1 string to match.
                if (memcmp(NameR.data()+12, ".b", 2))
                  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 (memcmp(NameR.data()+12, ".w", 2))
                  break;
                return Intrinsic::x86_mmx_pmins_w;	 // "86.mmx.pmins.w"
              case 'u':	 // 1 string to match.
                if (memcmp(NameR.data()+12, ".b", 2))
                  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 (memcmp(NameR.data()+12, ".w", 2))
                  break;
                return Intrinsic::x86_mmx_pmulh_w;	 // "86.mmx.pmulh.w"
              case 'l':	 // 1 string to match.
                if (memcmp(NameR.data()+12, ".w", 2))
                  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 (memcmp(NameR.data()+10, "d.bw", 4))
                break;
              return Intrinsic::x86_mmx_psad_bw;	 // "86.mmx.psad.bw"
            case 'l':	 // 3 strings to match.
              if (memcmp(NameR.data()+10, "li.", 3))
                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 (memcmp(NameR.data()+11, "i.", 2))
                  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 (memcmp(NameR.data()+11, "i.", 2))
                  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 (memcmp(NameR.data()+10, "bs.", 3))
                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 'r':	 // 4 strings to match.
          if (NameR[4] != 'd')
            break;
          switch (NameR[5]) {
          default: break;
          case 'f':	 // 2 strings to match.
            if (memcmp(NameR.data()+6, "sbase.", 6))
              break;
            switch (NameR[12]) {
            default: break;
            case '3':	 // 1 string to match.
              if (NameR[13] != '2')
                break;
              return Intrinsic::x86_rdfsbase_32;	 // "86.rdfsbase.32"
            case '6':	 // 1 string to match.
              if (NameR[13] != '4')
                break;
              return Intrinsic::x86_rdfsbase_64;	 // "86.rdfsbase.64"
            }
            break;
          case 'g':	 // 2 strings to match.
            if (memcmp(NameR.data()+6, "sbase.", 6))
              break;
            switch (NameR[12]) {
            default: break;
            case '3':	 // 1 string to match.
              if (NameR[13] != '2')
                break;
              return Intrinsic::x86_rdgsbase_32;	 // "86.rdgsbase.32"
            case '6':	 // 1 string to match.
              if (NameR[13] != '4')
                break;
              return Intrinsic::x86_rdgsbase_64;	 // "86.rdgsbase.64"
            }
            break;
          }
          break;
        case 's':	 // 30 strings to match.
          switch (NameR[4]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (memcmp(NameR.data()+5, "a256rnds2", 9))
              break;
            return Intrinsic::x86_sha256rnds2;	 // "86.sha256rnds2"
          case 's':	 // 29 strings to match.
            if (NameR[5] != 'e')
              break;
            switch (NameR[6]) {
            default: break;
            case '.':	 // 5 strings to match.
              switch (NameR[7]) {
              default: break;
              case 'l':	 // 1 string to match.
                if (memcmp(NameR.data()+8, "dmxcsr", 6))
                  break;
                return Intrinsic::x86_sse_ldmxcsr;	 // "86.sse.ldmxcsr"
              case 'p':	 // 1 string to match.
                if (memcmp(NameR.data()+8, "shuf.w", 6))
                  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 (memcmp(NameR.data()+9, "rt.", 3))
                    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 (memcmp(NameR.data()+9, "mxcsr", 5))
                    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 (memcmp(NameR.data()+9, "dd.sd", 5))
                  break;
                return Intrinsic::x86_sse2_add_sd;	 // "86.sse2.add.sd"
              case 'c':	 // 2 strings to match.
                if (memcmp(NameR.data()+9, "mp.", 3))
                  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 (memcmp(NameR.data()+9, "iv.sd", 5))
                  break;
                return Intrinsic::x86_sse2_div_sd;	 // "86.sse2.div.sd"
              case 'l':	 // 1 string to match.
                if (memcmp(NameR.data()+9, "fence", 5))
                  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 (memcmp(NameR.data()+10, "x.", 2))
                    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 (memcmp(NameR.data()+10, "ence", 4))
                    break;
                  return Intrinsic::x86_sse2_mfence;	 // "86.sse2.mfence"
                case 'i':	 // 2 strings to match.
                  if (memcmp(NameR.data()+10, "n.", 2))
                    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 (memcmp(NameR.data()+10, "l.sd", 4))
                    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 (memcmp(NameR.data()+10, "vg.", 3))
                    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 (memcmp(NameR.data()+11, "l.", 2))
                      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 (memcmp(NameR.data()+9, "ub.sd", 5))
                  break;
                return Intrinsic::x86_sse2_sub_sd;	 // "86.sse2.sub.sd"
              }
              break;
            case '3':	 // 1 string to match.
              if (memcmp(NameR.data()+7, ".ldu.dq", 7))
                break;
              return Intrinsic::x86_sse3_ldu_dq;	 // "86.sse3.ldu.dq"
            case '4':	 // 1 string to match.
              if (memcmp(NameR.data()+7, "a.extrq", 7))
                break;
              return Intrinsic::x86_sse4a_extrq;	 // "86.sse4a.extrq"
            }
            break;
          }
          break;
        case 'w':	 // 4 strings to match.
          if (NameR[4] != 'r')
            break;
          switch (NameR[5]) {
          default: break;
          case 'f':	 // 2 strings to match.
            if (memcmp(NameR.data()+6, "sbase.", 6))
              break;
            switch (NameR[12]) {
            default: break;
            case '3':	 // 1 string to match.
              if (NameR[13] != '2')
                break;
              return Intrinsic::x86_wrfsbase_32;	 // "86.wrfsbase.32"
            case '6':	 // 1 string to match.
              if (NameR[13] != '4')
                break;
              return Intrinsic::x86_wrfsbase_64;	 // "86.wrfsbase.64"
            }
            break;
          case 'g':	 // 2 strings to match.
            if (memcmp(NameR.data()+6, "sbase.", 6))
              break;
            switch (NameR[12]) {
            default: break;
            case '3':	 // 1 string to match.
              if (NameR[13] != '2')
                break;
              return Intrinsic::x86_wrgsbase_32;	 // "86.wrgsbase.32"
            case '6':	 // 1 string to match.
              if (NameR[13] != '4')
                break;
              return Intrinsic::x86_wrgsbase_64;	 // "86.wrgsbase.64"
            }
            break;
          }
          break;
        case 'x':	 // 8 strings to match.
          if (memcmp(NameR.data()+4, "op.vp", 5))
            break;
          switch (NameR[9]) {
          default: break;
          case 'c':	 // 4 strings to match.
            if (memcmp(NameR.data()+10, "omu", 3))
              break;
            switch (NameR[13]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomub;	 // "86.xop.vpcomub"
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomud;	 // "86.xop.vpcomud"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomuq;	 // "86.xop.vpcomuq"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomuw;	 // "86.xop.vpcomuw"
            }
            break;
          case 'r':	 // 4 strings to match.
            if (memcmp(NameR.data()+10, "ot", 2))
              break;
            switch (NameR[12]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (NameR[13] != 'i')
                break;
              return Intrinsic::x86_xop_vprotbi;	 // "86.xop.vprotbi"
            case 'd':	 // 1 string to match.
              if (NameR[13] != 'i')
                break;
              return Intrinsic::x86_xop_vprotdi;	 // "86.xop.vprotdi"
            case 'q':	 // 1 string to match.
              if (NameR[13] != 'i')
                break;
              return Intrinsic::x86_xop_vprotqi;	 // "86.xop.vprotqi"
            case 'w':	 // 1 string to match.
              if (NameR[13] != 'i')
                break;
              return Intrinsic::x86_xop_vprotwi;	 // "86.xop.vprotwi"
            }
            break;
          }
          break;
        }
        break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "ore.waitevent", 13))
          break;
        return Intrinsic::xcore_waitevent;	 // "core.waitevent"
      }
      break;
    case 15:	 // 145 strings to match.
      switch (NameR[0]) {
      default: break;
      case '8':	 // 144 strings to match.
        if (memcmp(NameR.data()+1, "6.", 2))
          break;
        switch (NameR[3]) {
        default: break;
        case '3':	 // 3 strings to match.
          if (memcmp(NameR.data()+4, "dnow", 4))
            break;
          switch (NameR[8]) {
          default: break;
          case '.':	 // 1 string to match.
            if (memcmp(NameR.data()+9, "pfsubr", 6))
              break;
            return Intrinsic::x86_3dnow_pfsubr;	 // "86.3dnow.pfsubr"
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+9, ".p", 2))
              break;
            switch (NameR[11]) {
            default: break;
            case 'f':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "2iw", 3))
                break;
              return Intrinsic::x86_3dnowa_pf2iw;	 // "86.3dnowa.pf2iw"
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "2fw", 3))
                break;
              return Intrinsic::x86_3dnowa_pi2fw;	 // "86.3dnowa.pi2fw"
            }
            break;
          }
          break;
        case 'a':	 // 49 strings to match.
          switch (NameR[4]) {
          default: break;
          case 'e':	 // 3 strings to match.
            if (memcmp(NameR.data()+5, "sni.aes", 7))
              break;
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "ec", 2))
                break;
              return Intrinsic::x86_aesni_aesdec;	 // "86.aesni.aesdec"
            case 'e':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "nc", 2))
                break;
              return Intrinsic::x86_aesni_aesenc;	 // "86.aesni.aesenc"
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "mc", 2))
                break;
              return Intrinsic::x86_aesni_aesimc;	 // "86.aesni.aesimc"
            }
            break;
          case 'v':	 // 46 strings to match.
            if (NameR[5] != 'x')
              break;
            switch (NameR[6]) {
            default: break;
            case '.':	 // 1 string to match.
              if (memcmp(NameR.data()+7, "vzeroall", 8))
                break;
              return Intrinsic::x86_avx_vzeroall;	 // "86.avx.vzeroall"
            case '2':	 // 44 strings to match.
              if (NameR[7] != '.')
                break;
              switch (NameR[8]) {
              default: break;
              case 'm':	 // 1 string to match.
                if (memcmp(NameR.data()+9, "psadbw", 6))
                  break;
                return Intrinsic::x86_avx2_mpsadbw;	 // "86.avx2.mpsadbw"
              case 'p':	 // 43 strings to match.
                switch (NameR[9]) {
                default: break;
                case 'a':	 // 2 strings to match.
                  if (memcmp(NameR.data()+10, "dds.", 4))
                    break;
                  switch (NameR[14]) {
                  default: break;
                  case 'b':	 // 1 string to match.
                    return Intrinsic::x86_avx2_padds_b;	 // "86.avx2.padds.b"
                  case 'w':	 // 1 string to match.
                    return Intrinsic::x86_avx2_padds_w;	 // "86.avx2.padds.w"
                  }
                  break;
                case 'b':	 // 1 string to match.
                  if (memcmp(NameR.data()+10, "lendw", 5))
                    break;
                  return Intrinsic::x86_avx2_pblendw;	 // "86.avx2.pblendw"
                case 'h':	 // 4 strings to match.
                  switch (NameR[10]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    if (memcmp(NameR.data()+11, "dd.", 3))
                      break;
                    switch (NameR[14]) {
                    default: break;
                    case 'd':	 // 1 string to match.
                      return Intrinsic::x86_avx2_phadd_d;	 // "86.avx2.phadd.d"
                    case 'w':	 // 1 string to match.
                      return Intrinsic::x86_avx2_phadd_w;	 // "86.avx2.phadd.w"
                    }
                    break;
                  case 's':	 // 2 strings to match.
                    if (memcmp(NameR.data()+11, "ub.", 3))
                      break;
                    switch (NameR[14]) {
                    default: break;
                    case 'd':	 // 1 string to match.
                      return Intrinsic::x86_avx2_phsub_d;	 // "86.avx2.phsub.d"
                    case 'w':	 // 1 string to match.
                      return Intrinsic::x86_avx2_phsub_w;	 // "86.avx2.phsub.w"
                    }
                    break;
                  }
                  break;
                case 'm':	 // 14 strings to match.
                  switch (NameR[10]) {
                  default: break;
                  case 'a':	 // 6 strings to match.
                    if (NameR[11] != 'x')
                      break;
                    switch (NameR[12]) {
                    default: break;
                    case 's':	 // 3 strings to match.
                      if (NameR[13] != '.')
                        break;
                      switch (NameR[14]) {
                      default: break;
                      case 'b':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pmaxs_b;	 // "86.avx2.pmaxs.b"
                      case 'd':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pmaxs_d;	 // "86.avx2.pmaxs.d"
                      case 'w':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pmaxs_w;	 // "86.avx2.pmaxs.w"
                      }
                      break;
                    case 'u':	 // 3 strings to match.
                      if (NameR[13] != '.')
                        break;
                      switch (NameR[14]) {
                      default: break;
                      case 'b':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pmaxu_b;	 // "86.avx2.pmaxu.b"
                      case 'd':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pmaxu_d;	 // "86.avx2.pmaxu.d"
                      case 'w':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pmaxu_w;	 // "86.avx2.pmaxu.w"
                      }
                      break;
                    }
                    break;
                  case 'i':	 // 6 strings to match.
                    if (NameR[11] != 'n')
                      break;
                    switch (NameR[12]) {
                    default: break;
                    case 's':	 // 3 strings to match.
                      if (NameR[13] != '.')
                        break;
                      switch (NameR[14]) {
                      default: break;
                      case 'b':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pmins_b;	 // "86.avx2.pmins.b"
                      case 'd':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pmins_d;	 // "86.avx2.pmins.d"
                      case 'w':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pmins_w;	 // "86.avx2.pmins.w"
                      }
                      break;
                    case 'u':	 // 3 strings to match.
                      if (NameR[13] != '.')
                        break;
                      switch (NameR[14]) {
                      default: break;
                      case 'b':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pminu_b;	 // "86.avx2.pminu.b"
                      case 'd':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pminu_d;	 // "86.avx2.pminu.d"
                      case 'w':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pminu_w;	 // "86.avx2.pminu.w"
                      }
                      break;
                    }
                    break;
                  case 'u':	 // 2 strings to match.
                    if (NameR[11] != 'l')
                      break;
                    switch (NameR[12]) {
                    default: break;
                    case '.':	 // 1 string to match.
                      if (memcmp(NameR.data()+13, "dq", 2))
                        break;
                      return Intrinsic::x86_avx2_pmul_dq;	 // "86.avx2.pmul.dq"
                    case 'h':	 // 1 string to match.
                      if (memcmp(NameR.data()+13, ".w", 2))
                        break;
                      return Intrinsic::x86_avx2_pmulh_w;	 // "86.avx2.pmulh.w"
                    }
                    break;
                  }
                  break;
                case 's':	 // 22 strings to match.
                  switch (NameR[10]) {
                  default: break;
                  case 'a':	 // 1 string to match.
                    if (memcmp(NameR.data()+11, "d.bw", 4))
                      break;
                    return Intrinsic::x86_avx2_psad_bw;	 // "86.avx2.psad.bw"
                  case 'h':	 // 1 string to match.
                    if (memcmp(NameR.data()+11, "uf.b", 4))
                      break;
                    return Intrinsic::x86_avx2_pshuf_b;	 // "86.avx2.pshuf.b"
                  case 'i':	 // 3 strings to match.
                    if (memcmp(NameR.data()+11, "gn.", 3))
                      break;
                    switch (NameR[14]) {
                    default: break;
                    case 'b':	 // 1 string to match.
                      return Intrinsic::x86_avx2_psign_b;	 // "86.avx2.psign.b"
                    case 'd':	 // 1 string to match.
                      return Intrinsic::x86_avx2_psign_d;	 // "86.avx2.psign.d"
                    case 'w':	 // 1 string to match.
                      return Intrinsic::x86_avx2_psign_w;	 // "86.avx2.psign.w"
                    }
                    break;
                  case 'l':	 // 6 strings to match.
                    if (NameR[11] != 'l')
                      break;
                    switch (NameR[12]) {
                    default: break;
                    case '.':	 // 1 string to match.
                      if (memcmp(NameR.data()+13, "dq", 2))
                        break;
                      return Intrinsic::x86_avx2_psll_dq;	 // "86.avx2.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_avx2_pslli_d;	 // "86.avx2.pslli.d"
                      case 'q':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pslli_q;	 // "86.avx2.pslli.q"
                      case 'w':	 // 1 string to match.
                        return Intrinsic::x86_avx2_pslli_w;	 // "86.avx2.pslli.w"
                      }
                      break;
                    case 'v':	 // 2 strings to match.
                      if (NameR[13] != '.')
                        break;
                      switch (NameR[14]) {
                      default: break;
                      case 'd':	 // 1 string to match.
                        return Intrinsic::x86_avx2_psllv_d;	 // "86.avx2.psllv.d"
                      case 'q':	 // 1 string to match.
                        return Intrinsic::x86_avx2_psllv_q;	 // "86.avx2.psllv.q"
                      }
                      break;
                    }
                    break;
                  case 'r':	 // 9 strings to match.
                    switch (NameR[11]) {
                    default: break;
                    case 'a':	 // 3 strings to match.
                      switch (NameR[12]) {
                      default: break;
                      case 'i':	 // 2 strings to match.
                        if (NameR[13] != '.')
                          break;
                        switch (NameR[14]) {
                        default: break;
                        case 'd':	 // 1 string to match.
                          return Intrinsic::x86_avx2_psrai_d;	 // "86.avx2.psrai.d"
                        case 'w':	 // 1 string to match.
                          return Intrinsic::x86_avx2_psrai_w;	 // "86.avx2.psrai.w"
                        }
                        break;
                      case 'v':	 // 1 string to match.
                        if (memcmp(NameR.data()+13, ".d", 2))
                          break;
                        return Intrinsic::x86_avx2_psrav_d;	 // "86.avx2.psrav.d"
                      }
                      break;
                    case 'l':	 // 6 strings to match.
                      switch (NameR[12]) {
                      default: break;
                      case '.':	 // 1 string to match.
                        if (memcmp(NameR.data()+13, "dq", 2))
                          break;
                        return Intrinsic::x86_avx2_psrl_dq;	 // "86.avx2.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_avx2_psrli_d;	 // "86.avx2.psrli.d"
                        case 'q':	 // 1 string to match.
                          return Intrinsic::x86_avx2_psrli_q;	 // "86.avx2.psrli.q"
                        case 'w':	 // 1 string to match.
                          return Intrinsic::x86_avx2_psrli_w;	 // "86.avx2.psrli.w"
                        }
                        break;
                      case 'v':	 // 2 strings to match.
                        if (NameR[13] != '.')
                          break;
                        switch (NameR[14]) {
                        default: break;
                        case 'd':	 // 1 string to match.
                          return Intrinsic::x86_avx2_psrlv_d;	 // "86.avx2.psrlv.d"
                        case 'q':	 // 1 string to match.
                          return Intrinsic::x86_avx2_psrlv_q;	 // "86.avx2.psrlv.q"
                        }
                        break;
                      }
                      break;
                    }
                    break;
                  case 'u':	 // 2 strings to match.
                    if (memcmp(NameR.data()+11, "bs.", 3))
                      break;
                    switch (NameR[14]) {
                    default: break;
                    case 'b':	 // 1 string to match.
                      return Intrinsic::x86_avx2_psubs_b;	 // "86.avx2.psubs.b"
                    case 'w':	 // 1 string to match.
                      return Intrinsic::x86_avx2_psubs_w;	 // "86.avx2.psubs.w"
                    }
                    break;
                  }
                  break;
                }
                break;
              }
              break;
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+7, "12.kor.w", 8))
                break;
              return Intrinsic::x86_avx512_kor_w;	 // "86.avx512.kor.w"
            }
            break;
          }
          break;
        case 'b':	 // 2 strings to match.
          if (memcmp(NameR.data()+4, "mi.bextr.", 9))
            break;
          switch (NameR[13]) {
          default: break;
          case '3':	 // 1 string to match.
            if (NameR[14] != '2')
              break;
            return Intrinsic::x86_bmi_bextr_32;	 // "86.bmi.bextr.32"
          case '6':	 // 1 string to match.
            if (NameR[14] != '4')
              break;
            return Intrinsic::x86_bmi_bextr_64;	 // "86.bmi.bextr.64"
          }
          break;
        case 'm':	 // 19 strings to match.
          if (memcmp(NameR.data()+4, "mx.", 3))
            break;
          switch (NameR[7]) {
          default: break;
          case 'm':	 // 2 strings to match.
            switch (NameR[8]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "skmovq", 6))
                break;
              return Intrinsic::x86_mmx_maskmovq;	 // "86.mmx.maskmovq"
            case 'o':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "vnt.dq", 6))
                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 (memcmp(NameR.data()+12, "swb", 3))
                    break;
                  return Intrinsic::x86_mmx_packuswb;	 // "86.mmx.packuswb"
                }
                break;
              case 'd':	 // 2 strings to match.
                if (memcmp(NameR.data()+10, "dus.", 4))
                  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 (memcmp(NameR.data()+9, "mp", 2))
                break;
              switch (NameR[11]) {
              default: break;
              case 'e':	 // 3 strings to match.
                if (memcmp(NameR.data()+12, "q.", 2))
                  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 (memcmp(NameR.data()+12, "t.", 2))
                  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 (memcmp(NameR.data()+10, "dd.wd", 5))
                  break;
                return Intrinsic::x86_mmx_pmadd_wd;	 // "86.mmx.pmadd.wd"
              case 'o':	 // 1 string to match.
                if (memcmp(NameR.data()+10, "vmskb", 5))
                  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 (memcmp(NameR.data()+12, "u.w", 3))
                    break;
                  return Intrinsic::x86_mmx_pmulhu_w;	 // "86.mmx.pmulhu.w"
                case 'u':	 // 1 string to match.
                  if (memcmp(NameR.data()+12, ".dq", 3))
                    break;
                  return Intrinsic::x86_mmx_pmulu_dq;	 // "86.mmx.pmulu.dq"
                }
                break;
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+9, "ubus.", 5))
                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':	 // 55 strings to match.
          if (NameR[4] != 's')
            break;
          switch (NameR[5]) {
          default: break;
          case 'e':	 // 52 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 (memcmp(NameR.data()+8, "vt", 2))
                  break;
                switch (NameR[10]) {
                default: break;
                case 'p':	 // 4 strings to match.
                  switch (NameR[11]) {
                  default: break;
                  case 'd':	 // 1 string to match.
                    if (memcmp(NameR.data()+12, "2pi", 3))
                      break;
                    return Intrinsic::x86_sse_cvtpd2pi;	 // "86.sse.cvtpd2pi"
                  case 'i':	 // 2 strings to match.
                    if (memcmp(NameR.data()+12, "2p", 2))
                      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 (memcmp(NameR.data()+12, "2pi", 3))
                      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 (memcmp(NameR.data()+12, "2ss", 3))
                      break;
                    return Intrinsic::x86_sse_cvtsi2ss;	 // "86.sse.cvtsi2ss"
                  case 's':	 // 1 string to match.
                    if (memcmp(NameR.data()+12, "2si", 3))
                      break;
                    return Intrinsic::x86_sse_cvtss2si;	 // "86.sse.cvtss2si"
                  }
                  break;
                }
                break;
              case 'r':	 // 2 strings to match.
                if (memcmp(NameR.data()+8, "sqrt.", 5))
                  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':	 // 24 strings to match.
              if (NameR[7] != '.')
                break;
              switch (NameR[8]) {
              default: break;
              case 'c':	 // 1 string to match.
                if (memcmp(NameR.data()+9, "lflush", 6))
                  break;
                return Intrinsic::x86_sse2_clflush;	 // "86.sse2.clflush"
              case 'p':	 // 21 strings to match.
                switch (NameR[9]) {
                default: break;
                case 'a':	 // 2 strings to match.
                  if (memcmp(NameR.data()+10, "dds.", 4))
                    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 (memcmp(NameR.data()+13, ".w", 2))
                        break;
                      return Intrinsic::x86_sse2_pmaxs_w;	 // "86.sse2.pmaxs.w"
                    case 'u':	 // 1 string to match.
                      if (memcmp(NameR.data()+13, ".b", 2))
                        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 (memcmp(NameR.data()+13, ".w", 2))
                        break;
                      return Intrinsic::x86_sse2_pmins_w;	 // "86.sse2.pmins.w"
                    case 'u':	 // 1 string to match.
                      if (memcmp(NameR.data()+13, ".b", 2))
                        break;
                      return Intrinsic::x86_sse2_pminu_b;	 // "86.sse2.pminu.b"
                    }
                    break;
                  case 'u':	 // 1 string to match.
                    if (memcmp(NameR.data()+11, "lh.w", 4))
                      break;
                    return Intrinsic::x86_sse2_pmulh_w;	 // "86.sse2.pmulh.w"
                  }
                  break;
                case 's':	 // 14 strings to match.
                  switch (NameR[10]) {
                  default: break;
                  case 'a':	 // 1 string to match.
                    if (memcmp(NameR.data()+11, "d.bw", 4))
                      break;
                    return Intrinsic::x86_sse2_psad_bw;	 // "86.sse2.psad.bw"
                  case 'h':	 // 1 string to match.
                    if (memcmp(NameR.data()+11, "uf.d", 4))
                      break;
                    return Intrinsic::x86_sse2_pshuf_d;	 // "86.sse2.pshuf.d"
                  case 'l':	 // 4 strings to match.
                    if (NameR[11] != 'l')
                      break;
                    switch (NameR[12]) {
                    default: break;
                    case '.':	 // 1 string to match.
                      if (memcmp(NameR.data()+13, "dq", 2))
                        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 (memcmp(NameR.data()+12, "i.", 2))
                        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 (memcmp(NameR.data()+13, "dq", 2))
                          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 (memcmp(NameR.data()+11, "bs.", 3))
                      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 (memcmp(NameR.data()+9, "qrt.", 4))
                  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 (memcmp(NameR.data()+10, "dd.p", 4))
                    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 (memcmp(NameR.data()+10, "ub.p", 4))
                    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 (memcmp(NameR.data()+9, "onitor", 6))
                  break;
                return Intrinsic::x86_sse3_monitor;	 // "86.sse3.monitor"
              }
              break;
            case '4':	 // 15 strings to match.
              switch (NameR[7]) {
              default: break;
              case '1':	 // 14 strings to match.
                if (memcmp(NameR.data()+8, ".p", 2))
                  break;
                switch (NameR[10]) {
                default: break;
                case 'e':	 // 3 strings to match.
                  if (memcmp(NameR.data()+11, "xtr", 3))
                    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 (memcmp(NameR.data()+12, "ldq", 3))
                      break;
                    return Intrinsic::x86_sse41_pmuldq;	 // "86.sse41.pmuldq"
                  }
                  break;
                case 't':	 // 2 strings to match.
                  if (memcmp(NameR.data()+11, "est", 3))
                    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;
              case 'a':	 // 1 string to match.
                if (memcmp(NameR.data()+8, ".extrqi", 7))
                  break;
                return Intrinsic::x86_sse4a_extrqi;	 // "86.sse4a.extrqi"
              }
              break;
            }
            break;
          case 's':	 // 3 strings to match.
            if (memcmp(NameR.data()+6, "e3.pabs.", 8))
              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;
        case 'x':	 // 16 strings to match.
          if (memcmp(NameR.data()+4, "op.v", 4))
            break;
          switch (NameR[8]) {
          default: break;
          case 'f':	 // 4 strings to match.
            if (memcmp(NameR.data()+9, "rcz.", 4))
              break;
            switch (NameR[13]) {
            default: break;
            case 'p':	 // 2 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_xop_vfrcz_pd;	 // "86.xop.vfrcz.pd"
              case 's':	 // 1 string to match.
                return Intrinsic::x86_xop_vfrcz_ps;	 // "86.xop.vfrcz.ps"
              }
              break;
            case 's':	 // 2 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_xop_vfrcz_sd;	 // "86.xop.vfrcz.sd"
              case 's':	 // 1 string to match.
                return Intrinsic::x86_xop_vfrcz_ss;	 // "86.xop.vfrcz.ss"
              }
              break;
            }
            break;
          case 'p':	 // 12 strings to match.
            switch (NameR[9]) {
            default: break;
            case 'h':	 // 9 strings to match.
              switch (NameR[10]) {
              default: break;
              case 'a':	 // 6 strings to match.
                if (memcmp(NameR.data()+11, "dd", 2))
                  break;
                switch (NameR[13]) {
                default: break;
                case 'b':	 // 3 strings to match.
                  switch (NameR[14]) {
                  default: break;
                  case 'd':	 // 1 string to match.
                    return Intrinsic::x86_xop_vphaddbd;	 // "86.xop.vphaddbd"
                  case 'q':	 // 1 string to match.
                    return Intrinsic::x86_xop_vphaddbq;	 // "86.xop.vphaddbq"
                  case 'w':	 // 1 string to match.
                    return Intrinsic::x86_xop_vphaddbw;	 // "86.xop.vphaddbw"
                  }
                  break;
                case 'd':	 // 1 string to match.
                  if (NameR[14] != 'q')
                    break;
                  return Intrinsic::x86_xop_vphadddq;	 // "86.xop.vphadddq"
                case 'w':	 // 2 strings to match.
                  switch (NameR[14]) {
                  default: break;
                  case 'd':	 // 1 string to match.
                    return Intrinsic::x86_xop_vphaddwd;	 // "86.xop.vphaddwd"
                  case 'q':	 // 1 string to match.
                    return Intrinsic::x86_xop_vphaddwq;	 // "86.xop.vphaddwq"
                  }
                  break;
                }
                break;
              case 's':	 // 3 strings to match.
                if (memcmp(NameR.data()+11, "ub", 2))
                  break;
                switch (NameR[13]) {
                default: break;
                case 'b':	 // 1 string to match.
                  if (NameR[14] != 'w')
                    break;
                  return Intrinsic::x86_xop_vphsubbw;	 // "86.xop.vphsubbw"
                case 'd':	 // 1 string to match.
                  if (NameR[14] != 'q')
                    break;
                  return Intrinsic::x86_xop_vphsubdq;	 // "86.xop.vphsubdq"
                case 'w':	 // 1 string to match.
                  if (NameR[14] != 'd')
                    break;
                  return Intrinsic::x86_xop_vphsubwd;	 // "86.xop.vphsubwd"
                }
                break;
              }
              break;
            case 'm':	 // 3 strings to match.
              if (memcmp(NameR.data()+10, "acs", 3))
                break;
              switch (NameR[13]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (NameR[14] != 'd')
                  break;
                return Intrinsic::x86_xop_vpmacsdd;	 // "86.xop.vpmacsdd"
              case 'w':	 // 2 strings to match.
                switch (NameR[14]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_xop_vpmacswd;	 // "86.xop.vpmacswd"
                case 'w':	 // 1 string to match.
                  return Intrinsic::x86_xop_vpmacsww;	 // "86.xop.vpmacsww"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'c':	 // 1 string to match.
        if (memcmp(NameR.data()+1, "ore.checkevent", 14))
          break;
        return Intrinsic::xcore_checkevent;	 // "core.checkevent"
      }
      break;
    case 16:	 // 117 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case '3':	 // 8 strings to match.
        if (memcmp(NameR.data()+4, "dnow", 4))
          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 (memcmp(NameR.data()+11, "vgusb", 5))
              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 (memcmp(NameR.data()+12, "mp", 2))
                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 (memcmp(NameR.data()+12, "sqrt", 4))
                break;
              return Intrinsic::x86_3dnow_pfrsqrt;	 // "86.3dnow.pfrsqrt"
            }
            break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ulhrw", 5))
              break;
            return Intrinsic::x86_3dnow_pmulhrw;	 // "86.3dnow.pmulhrw"
          }
          break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+9, ".p", 2))
            break;
          switch (NameR[11]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "nacc", 4))
              break;
            return Intrinsic::x86_3dnowa_pfnacc;	 // "86.3dnowa.pfnacc"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "wapd", 4))
              break;
            return Intrinsic::x86_3dnowa_pswapd;	 // "86.3dnowa.pswapd"
          }
          break;
        }
        break;
      case 'a':	 // 36 strings to match.
        if (memcmp(NameR.data()+4, "vx", 2))
          break;
        switch (NameR[6]) {
        default: break;
        case '.':	 // 5 strings to match.
          switch (NameR[7]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "p.ps.256", 8))
              break;
            return Intrinsic::x86_avx_dp_ps_256;	 // "86.avx.dp.ps.256"
          case 'v':	 // 4 strings to match.
            if (memcmp(NameR.data()+8, "test", 4))
              break;
            switch (NameR[12]) {
            default: break;
            case 'c':	 // 2 strings to match.
              if (memcmp(NameR.data()+13, ".p", 2))
                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 (memcmp(NameR.data()+13, ".p", 2))
                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 '2':	 // 28 strings to match.
          if (NameR[7] != '.')
            break;
          switch (NameR[8]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+9, "ovntdqa", 7))
              break;
            return Intrinsic::x86_avx2_movntdqa;	 // "86.avx2.movntdqa"
          case 'p':	 // 27 strings to match.
            switch (NameR[9]) {
            default: break;
            case 'a':	 // 6 strings to match.
              switch (NameR[10]) {
              default: break;
              case 'c':	 // 4 strings to match.
                if (NameR[11] != 'k')
                  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[15] != 'w')
                      break;
                    return Intrinsic::x86_avx2_packssdw;	 // "86.avx2.packssdw"
                  case 'w':	 // 1 string to match.
                    if (NameR[15] != 'b')
                      break;
                    return Intrinsic::x86_avx2_packsswb;	 // "86.avx2.packsswb"
                  }
                  break;
                case 'u':	 // 2 strings to match.
                  if (NameR[13] != 's')
                    break;
                  switch (NameR[14]) {
                  default: break;
                  case 'd':	 // 1 string to match.
                    if (NameR[15] != 'w')
                      break;
                    return Intrinsic::x86_avx2_packusdw;	 // "86.avx2.packusdw"
                  case 'w':	 // 1 string to match.
                    if (NameR[15] != 'b')
                      break;
                    return Intrinsic::x86_avx2_packuswb;	 // "86.avx2.packuswb"
                  }
                  break;
                }
                break;
              case 'd':	 // 2 strings to match.
                if (memcmp(NameR.data()+11, "dus.", 4))
                  break;
                switch (NameR[15]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::x86_avx2_paddus_b;	 // "86.avx2.paddus.b"
                case 'w':	 // 1 string to match.
                  return Intrinsic::x86_avx2_paddus_w;	 // "86.avx2.paddus.w"
                }
                break;
              }
              break;
            case 'b':	 // 1 string to match.
              if (memcmp(NameR.data()+10, "lendvb", 6))
                break;
              return Intrinsic::x86_avx2_pblendvb;	 // "86.avx2.pblendvb"
            case 'h':	 // 2 strings to match.
              switch (NameR[10]) {
              default: break;
              case 'a':	 // 1 string to match.
                if (memcmp(NameR.data()+11, "dd.sw", 5))
                  break;
                return Intrinsic::x86_avx2_phadd_sw;	 // "86.avx2.phadd.sw"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+11, "ub.sw", 5))
                  break;
                return Intrinsic::x86_avx2_phsub_sw;	 // "86.avx2.phsub.sw"
              }
              break;
            case 'm':	 // 16 strings to match.
              switch (NameR[10]) {
              default: break;
              case 'a':	 // 1 string to match.
                if (memcmp(NameR.data()+11, "dd.wd", 5))
                  break;
                return Intrinsic::x86_avx2_pmadd_wd;	 // "86.avx2.pmadd.wd"
              case 'o':	 // 13 strings to match.
                if (NameR[11] != 'v')
                  break;
                switch (NameR[12]) {
                default: break;
                case 'm':	 // 1 string to match.
                  if (memcmp(NameR.data()+13, "skb", 3))
                    break;
                  return Intrinsic::x86_avx2_pmovmskb;	 // "86.avx2.pmovmskb"
                case 's':	 // 6 strings to match.
                  if (NameR[13] != 'x')
                    break;
                  switch (NameR[14]) {
                  default: break;
                  case 'b':	 // 3 strings to match.
                    switch (NameR[15]) {
                    default: break;
                    case 'd':	 // 1 string to match.
                      return Intrinsic::x86_avx2_pmovsxbd;	 // "86.avx2.pmovsxbd"
                    case 'q':	 // 1 string to match.
                      return Intrinsic::x86_avx2_pmovsxbq;	 // "86.avx2.pmovsxbq"
                    case 'w':	 // 1 string to match.
                      return Intrinsic::x86_avx2_pmovsxbw;	 // "86.avx2.pmovsxbw"
                    }
                    break;
                  case 'd':	 // 1 string to match.
                    if (NameR[15] != 'q')
                      break;
                    return Intrinsic::x86_avx2_pmovsxdq;	 // "86.avx2.pmovsxdq"
                  case 'w':	 // 2 strings to match.
                    switch (NameR[15]) {
                    default: break;
                    case 'd':	 // 1 string to match.
                      return Intrinsic::x86_avx2_pmovsxwd;	 // "86.avx2.pmovsxwd"
                    case 'q':	 // 1 string to match.
                      return Intrinsic::x86_avx2_pmovsxwq;	 // "86.avx2.pmovsxwq"
                    }
                    break;
                  }
                  break;
                case 'z':	 // 6 strings to match.
                  if (NameR[13] != 'x')
                    break;
                  switch (NameR[14]) {
                  default: break;
                  case 'b':	 // 3 strings to match.
                    switch (NameR[15]) {
                    default: break;
                    case 'd':	 // 1 string to match.
                      return Intrinsic::x86_avx2_pmovzxbd;	 // "86.avx2.pmovzxbd"
                    case 'q':	 // 1 string to match.
                      return Intrinsic::x86_avx2_pmovzxbq;	 // "86.avx2.pmovzxbq"
                    case 'w':	 // 1 string to match.
                      return Intrinsic::x86_avx2_pmovzxbw;	 // "86.avx2.pmovzxbw"
                    }
                    break;
                  case 'd':	 // 1 string to match.
                    if (NameR[15] != 'q')
                      break;
                    return Intrinsic::x86_avx2_pmovzxdq;	 // "86.avx2.pmovzxdq"
                  case 'w':	 // 2 strings to match.
                    switch (NameR[15]) {
                    default: break;
                    case 'd':	 // 1 string to match.
                      return Intrinsic::x86_avx2_pmovzxwd;	 // "86.avx2.pmovzxwd"
                    case 'q':	 // 1 string to match.
                      return Intrinsic::x86_avx2_pmovzxwq;	 // "86.avx2.pmovzxwq"
                    }
                    break;
                  }
                  break;
                }
                break;
              case 'u':	 // 2 strings to match.
                if (NameR[11] != 'l')
                  break;
                switch (NameR[12]) {
                default: break;
                case 'h':	 // 1 string to match.
                  if (memcmp(NameR.data()+13, "u.w", 3))
                    break;
                  return Intrinsic::x86_avx2_pmulhu_w;	 // "86.avx2.pmulhu.w"
                case 'u':	 // 1 string to match.
                  if (memcmp(NameR.data()+13, ".dq", 3))
                    break;
                  return Intrinsic::x86_avx2_pmulu_dq;	 // "86.avx2.pmulu.dq"
                }
                break;
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+10, "ubus.", 5))
                break;
              switch (NameR[15]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::x86_avx2_psubus_b;	 // "86.avx2.psubus.b"
              case 'w':	 // 1 string to match.
                return Intrinsic::x86_avx2_psubus_w;	 // "86.avx2.psubus.w"
              }
              break;
            }
            break;
          }
          break;
        case '5':	 // 3 strings to match.
          if (memcmp(NameR.data()+7, "12.k", 4))
            break;
          switch (NameR[11]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "nd.w", 4))
              break;
            return Intrinsic::x86_avx512_kand_w;	 // "86.avx512.kand.w"
          case 'n':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "ot.w", 4))
              break;
            return Intrinsic::x86_avx512_knot_w;	 // "86.avx512.knot.w"
          case 'x':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "or.w", 4))
              break;
            return Intrinsic::x86_avx512_kxor_w;	 // "86.avx512.kxor.w"
          }
          break;
        }
        break;
      case 'f':	 // 8 strings to match.
        if (memcmp(NameR.data()+4, "ma.vfm", 6))
          break;
        switch (NameR[10]) {
        default: break;
        case 'a':	 // 4 strings to match.
          if (memcmp(NameR.data()+11, "dd.", 3))
            break;
          switch (NameR[14]) {
          default: break;
          case 'p':	 // 2 strings to match.
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmadd_pd;	 // "86.fma.vfmadd.pd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmadd_ps;	 // "86.fma.vfmadd.ps"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmadd_sd;	 // "86.fma.vfmadd.sd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmadd_ss;	 // "86.fma.vfmadd.ss"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+11, "ub.", 3))
            break;
          switch (NameR[14]) {
          default: break;
          case 'p':	 // 2 strings to match.
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmsub_pd;	 // "86.fma.vfmsub.pd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmsub_ps;	 // "86.fma.vfmsub.ps"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmsub_sd;	 // "86.fma.vfmsub.sd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmsub_ss;	 // "86.fma.vfmsub.ss"
            }
            break;
          }
          break;
        }
        break;
      case 'm':	 // 7 strings to match.
        if (memcmp(NameR.data()+4, "mx.p", 4))
          break;
        switch (NameR[8]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+9, "lignr.b", 7))
            break;
          return Intrinsic::x86_mmx_palignr_b;	 // "86.mmx.palignr.b"
        case 'u':	 // 6 strings to match.
          if (memcmp(NameR.data()+9, "npck", 4))
            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':	 // 42 strings to match.
        if (NameR[4] != 's')
          break;
        switch (NameR[5]) {
        default: break;
        case 'e':	 // 34 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 (memcmp(NameR.data()+9, "mi", 2))
                  break;
                switch (NameR[11]) {
                default: break;
                case 'e':	 // 1 string to match.
                  if (memcmp(NameR.data()+12, "q.ss", 4))
                    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 (memcmp(NameR.data()+13, ".ss", 3))
                      break;
                    return Intrinsic::x86_sse_comige_ss;	 // "86.sse.comige.ss"
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+13, ".ss", 3))
                      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 (memcmp(NameR.data()+13, ".ss", 3))
                      break;
                    return Intrinsic::x86_sse_comile_ss;	 // "86.sse.comile.ss"
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+13, ".ss", 3))
                      break;
                    return Intrinsic::x86_sse_comilt_ss;	 // "86.sse.comilt.ss"
                  }
                  break;
                }
                break;
              case 'v':	 // 3 strings to match.
                if (memcmp(NameR.data()+9, "tt", 2))
                  break;
                switch (NameR[11]) {
                default: break;
                case 'p':	 // 2 strings to match.
                  switch (NameR[12]) {
                  default: break;
                  case 'd':	 // 1 string to match.
                    if (memcmp(NameR.data()+13, "2pi", 3))
                      break;
                    return Intrinsic::x86_sse_cvttpd2pi;	 // "86.sse.cvttpd2pi"
                  case 's':	 // 1 string to match.
                    if (memcmp(NameR.data()+13, "2pi", 3))
                      break;
                    return Intrinsic::x86_sse_cvttps2pi;	 // "86.sse.cvttps2pi"
                  }
                  break;
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+12, "s2si", 4))
                    break;
                  return Intrinsic::x86_sse_cvttss2si;	 // "86.sse.cvttss2si"
                }
                break;
              }
              break;
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+8, "ovmsk.ps", 8))
                break;
              return Intrinsic::x86_sse_movmsk_ps;	 // "86.sse.movmsk.ps"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+8, "toreu.ps", 8))
                break;
              return Intrinsic::x86_sse_storeu_ps;	 // "86.sse.storeu.ps"
            }
            break;
          case '2':	 // 19 strings to match.
            if (NameR[7] != '.')
              break;
            switch (NameR[8]) {
            default: break;
            case 'c':	 // 10 strings to match.
              if (memcmp(NameR.data()+9, "vt", 2))
                break;
              switch (NameR[11]) {
              default: break;
              case 'd':	 // 2 strings to match.
                if (memcmp(NameR.data()+12, "q2p", 3))
                  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 (memcmp(NameR.data()+13, "2s", 2))
                    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 (memcmp(NameR.data()+13, "2sd", 3))
                    break;
                  return Intrinsic::x86_sse2_cvtsi2sd;	 // "86.sse2.cvtsi2sd"
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+13, "2sd", 3))
                    break;
                  return Intrinsic::x86_sse2_cvtss2sd;	 // "86.sse2.cvtss2sd"
                }
                break;
              }
              break;
            case 'p':	 // 9 strings to match.
              switch (NameR[9]) {
              default: break;
              case 'a':	 // 2 strings to match.
                if (memcmp(NameR.data()+10, "ddus.", 5))
                  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 'm':	 // 3 strings to match.
                switch (NameR[10]) {
                default: break;
                case 'a':	 // 1 string to match.
                  if (memcmp(NameR.data()+11, "dd.wd", 5))
                    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 (memcmp(NameR.data()+13, "u.w", 3))
                      break;
                    return Intrinsic::x86_sse2_pmulhu_w;	 // "86.sse2.pmulhu.w"
                  case 'u':	 // 1 string to match.
                    if (memcmp(NameR.data()+13, ".dq", 3))
                      break;
                    return Intrinsic::x86_sse2_pmulu_dq;	 // "86.sse2.pmulu.dq"
                  }
                  break;
                }
                break;
              case 's':	 // 4 strings to match.
                switch (NameR[10]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(NameR.data()+11, "uf", 2))
                    break;
                  switch (NameR[13]) {
                  default: break;
                  case 'h':	 // 1 string to match.
                    if (memcmp(NameR.data()+14, ".w", 2))
                      break;
                    return Intrinsic::x86_sse2_pshufh_w;	 // "86.sse2.pshufh.w"
                  case 'l':	 // 1 string to match.
                    if (memcmp(NameR.data()+14, ".w", 2))
                      break;
                    return Intrinsic::x86_sse2_pshufl_w;	 // "86.sse2.pshufl.w"
                  }
                  break;
                case 'u':	 // 2 strings to match.
                  if (memcmp(NameR.data()+11, "bus.", 4))
                    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;
            }
            break;
          case '4':	 // 5 strings to match.
            switch (NameR[7]) {
            default: break;
            case '1':	 // 4 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'b':	 // 2 strings to match.
                if (memcmp(NameR.data()+10, "lendp", 5))
                  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 (memcmp(NameR.data()+10, "psadbw", 6))
                  break;
                return Intrinsic::x86_sse41_mpsadbw;	 // "86.sse41.mpsadbw"
              case 'p':	 // 1 string to match.
                if (memcmp(NameR.data()+10, "blendw", 6))
                  break;
                return Intrinsic::x86_sse41_pblendw;	 // "86.sse41.pblendw"
              }
              break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+8, ".insertq", 8))
                break;
              return Intrinsic::x86_sse4a_insertq;	 // "86.sse4a.insertq"
            }
            break;
          }
          break;
        case 's':	 // 8 strings to match.
          if (memcmp(NameR.data()+6, "e3.p", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'h':	 // 4 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "dd.", 3))
                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 (memcmp(NameR.data()+12, "ub.", 3))
                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 (memcmp(NameR.data()+12, "uf.b", 4))
                break;
              return Intrinsic::x86_ssse3_pshuf_b;	 // "86.ssse3.pshuf.b"
            case 'i':	 // 3 strings to match.
              if (memcmp(NameR.data()+12, "gn.", 3))
                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;
      case 'v':	 // 4 strings to match.
        if (memcmp(NameR.data()+4, "cvtp", 4))
          break;
        switch (NameR[8]) {
        default: break;
        case 'h':	 // 2 strings to match.
          if (memcmp(NameR.data()+9, "2ps.", 4))
            break;
          switch (NameR[13]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(NameR.data()+14, "28", 2))
              break;
            return Intrinsic::x86_vcvtph2ps_128;	 // "86.vcvtph2ps.128"
          case '2':	 // 1 string to match.
            if (memcmp(NameR.data()+14, "56", 2))
              break;
            return Intrinsic::x86_vcvtph2ps_256;	 // "86.vcvtph2ps.256"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+9, "2ph.", 4))
            break;
          switch (NameR[13]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(NameR.data()+14, "28", 2))
              break;
            return Intrinsic::x86_vcvtps2ph_128;	 // "86.vcvtps2ph.128"
          case '2':	 // 1 string to match.
            if (memcmp(NameR.data()+14, "56", 2))
              break;
            return Intrinsic::x86_vcvtps2ph_256;	 // "86.vcvtps2ph.256"
          }
          break;
        }
        break;
      case 'x':	 // 12 strings to match.
        if (memcmp(NameR.data()+4, "op.vp", 5))
          break;
        switch (NameR[9]) {
        default: break;
        case 'h':	 // 6 strings to match.
          if (memcmp(NameR.data()+10, "addu", 4))
            break;
          switch (NameR[14]) {
          default: break;
          case 'b':	 // 3 strings to match.
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vphaddubd;	 // "86.xop.vphaddubd"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vphaddubq;	 // "86.xop.vphaddubq"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vphaddubw;	 // "86.xop.vphaddubw"
            }
            break;
          case 'd':	 // 1 string to match.
            if (NameR[15] != 'q')
              break;
            return Intrinsic::x86_xop_vphaddudq;	 // "86.xop.vphaddudq"
          case 'w':	 // 2 strings to match.
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vphadduwd;	 // "86.xop.vphadduwd"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vphadduwq;	 // "86.xop.vphadduwq"
            }
            break;
          }
          break;
        case 'm':	 // 6 strings to match.
          if (NameR[10] != 'a')
            break;
          switch (NameR[11]) {
          default: break;
          case 'c':	 // 5 strings to match.
            if (NameR[12] != 's')
              break;
            switch (NameR[13]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (NameR[14] != 'q')
                break;
              switch (NameR[15]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::x86_xop_vpmacsdqh;	 // "86.xop.vpmacsdqh"
              case 'l':	 // 1 string to match.
                return Intrinsic::x86_xop_vpmacsdql;	 // "86.xop.vpmacsdql"
              }
              break;
            case 's':	 // 3 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (NameR[15] != 'd')
                  break;
                return Intrinsic::x86_xop_vpmacssdd;	 // "86.xop.vpmacssdd"
              case 'w':	 // 2 strings to match.
                switch (NameR[15]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_xop_vpmacsswd;	 // "86.xop.vpmacsswd"
                case 'w':	 // 1 string to match.
                  return Intrinsic::x86_xop_vpmacssww;	 // "86.xop.vpmacssww"
                }
                break;
              }
              break;
            }
            break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "cswd", 4))
              break;
            return Intrinsic::x86_xop_vpmadcswd;	 // "86.xop.vpmadcswd"
          }
          break;
        }
        break;
      }
      break;
    case 17:	 // 87 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case '3':	 // 4 strings to match.
        if (memcmp(NameR.data()+4, "dnow", 4))
          break;
        switch (NameR[8]) {
        default: break;
        case '.':	 // 3 strings to match.
          if (memcmp(NameR.data()+9, "pfr", 3))
            break;
          switch (NameR[12]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+13, "pit", 3))
              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 (memcmp(NameR.data()+13, "qit1", 4))
              break;
            return Intrinsic::x86_3dnow_pfrsqit1;	 // "86.3dnow.pfrsqit1"
          }
          break;
        case 'a':	 // 1 string to match.
          if (memcmp(NameR.data()+9, ".pfpnacc", 8))
            break;
          return Intrinsic::x86_3dnowa_pfpnacc;	 // "86.3dnowa.pfpnacc"
        }
        break;
      case 'a':	 // 17 strings to match.
        if (memcmp(NameR.data()+4, "vx", 2))
          break;
        switch (NameR[6]) {
        default: break;
        case '.':	 // 11 strings to match.
          switch (NameR[7]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "mp.p", 4))
              break;
            switch (NameR[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+13, ".256", 4))
                break;
              return Intrinsic::x86_avx_cmp_pd_256;	 // "86.avx.cmp.pd.256"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+13, ".256", 4))
                break;
              return Intrinsic::x86_avx_cmp_ps_256;	 // "86.avx.cmp.ps.256"
            }
            break;
          case 'l':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "du.dq.256", 9))
              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 (memcmp(NameR.data()+9, "x.p", 3))
                break;
              switch (NameR[12]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+13, ".256", 4))
                  break;
                return Intrinsic::x86_avx_max_pd_256;	 // "86.avx.max.pd.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+13, ".256", 4))
                  break;
                return Intrinsic::x86_avx_max_ps_256;	 // "86.avx.max.ps.256"
              }
              break;
            case 'i':	 // 2 strings to match.
              if (memcmp(NameR.data()+9, "n.p", 3))
                break;
              switch (NameR[12]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+13, ".256", 4))
                  break;
                return Intrinsic::x86_avx_min_pd_256;	 // "86.avx.min.pd.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+13, ".256", 4))
                  break;
                return Intrinsic::x86_avx_min_ps_256;	 // "86.avx.min.ps.256"
              }
              break;
            }
            break;
          case 'p':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "test", 4))
              break;
            switch (NameR[12]) {
            default: break;
            case 'c':	 // 1 string to match.
              if (memcmp(NameR.data()+13, ".256", 4))
                break;
              return Intrinsic::x86_avx_ptestc_256;	 // "86.avx.ptestc.256"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+13, ".256", 4))
                break;
              return Intrinsic::x86_avx_ptestz_256;	 // "86.avx.ptestz.256"
            }
            break;
          case 'r':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "cp.ps.256", 9))
              break;
            return Intrinsic::x86_avx_rcp_ps_256;	 // "86.avx.rcp.ps.256"
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "zeroupper", 9))
              break;
            return Intrinsic::x86_avx_vzeroupper;	 // "86.avx.vzeroupper"
          }
          break;
        case '5':	 // 6 strings to match.
          if (memcmp(NameR.data()+7, "12.", 3))
            break;
          switch (NameR[10]) {
          default: break;
          case 'k':	 // 2 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "ndn.w", 5))
                break;
              return Intrinsic::x86_avx512_kandn_w;	 // "86.avx512.kandn.w"
            case 'x':	 // 1 string to match.
              if (memcmp(NameR.data()+12, "nor.w", 5))
                break;
              return Intrinsic::x86_avx512_kxnor_w;	 // "86.avx512.kxnor.w"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (NameR[11] != 's')
              break;
            switch (NameR[12]) {
            default: break;
            case 'l':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "l.dq", 4))
                break;
              return Intrinsic::x86_avx512_psll_dq;	 // "86.avx512.psll.dq"
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "l.dq", 4))
                break;
              return Intrinsic::x86_avx512_psrl_dq;	 // "86.avx512.psrl.dq"
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "qrt.s", 5))
              break;
            switch (NameR[16]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_avx512_sqrt_sd;	 // "86.avx512.sqrt.sd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_avx512_sqrt_ss;	 // "86.avx512.sqrt.ss"
            }
            break;
          }
          break;
        }
        break;
      case 'f':	 // 8 strings to match.
        if (memcmp(NameR.data()+4, "ma.vfnm", 7))
          break;
        switch (NameR[11]) {
        default: break;
        case 'a':	 // 4 strings to match.
          if (memcmp(NameR.data()+12, "dd.", 3))
            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_fma_vfnmadd_pd;	 // "86.fma.vfnmadd.pd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmadd_ps;	 // "86.fma.vfnmadd.ps"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (NameR[16]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmadd_sd;	 // "86.fma.vfnmadd.sd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmadd_ss;	 // "86.fma.vfnmadd.ss"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+12, "ub.", 3))
            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_fma_vfnmsub_pd;	 // "86.fma.vfnmsub.pd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmsub_ps;	 // "86.fma.vfnmsub.ps"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (NameR[16]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmsub_sd;	 // "86.fma.vfnmsub.sd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmsub_ss;	 // "86.fma.vfnmsub.ss"
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 50 strings to match.
        if (NameR[4] != 's')
          break;
        switch (NameR[5]) {
        default: break;
        case 'e':	 // 48 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 (memcmp(NameR.data()+9, "mineq.ss", 8))
                  break;
                return Intrinsic::x86_sse_comineq_ss;	 // "86.sse.comineq.ss"
              case 'v':	 // 2 strings to match.
                if (memcmp(NameR.data()+9, "ts", 2))
                  break;
                switch (NameR[11]) {
                default: break;
                case 'i':	 // 1 string to match.
                  if (memcmp(NameR.data()+12, "642ss", 5))
                    break;
                  return Intrinsic::x86_sse_cvtsi642ss;	 // "86.sse.cvtsi642ss"
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+12, "2si64", 5))
                    break;
                  return Intrinsic::x86_sse_cvtss2si64;	 // "86.sse.cvtss2si64"
                }
                break;
              }
              break;
            case 'u':	 // 5 strings to match.
              if (memcmp(NameR.data()+8, "comi", 4))
                break;
              switch (NameR[12]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (memcmp(NameR.data()+13, "q.ss", 4))
                  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 (memcmp(NameR.data()+14, ".ss", 3))
                    break;
                  return Intrinsic::x86_sse_ucomige_ss;	 // "86.sse.ucomige.ss"
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, ".ss", 3))
                    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 (memcmp(NameR.data()+14, ".ss", 3))
                    break;
                  return Intrinsic::x86_sse_ucomile_ss;	 // "86.sse.ucomile.ss"
                case 't':	 // 1 string to match.
                  if (memcmp(NameR.data()+14, ".ss", 3))
                    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 (memcmp(NameR.data()+10, "mi", 2))
                  break;
                switch (NameR[12]) {
                default: break;
                case 'e':	 // 1 string to match.
                  if (memcmp(NameR.data()+13, "q.sd", 4))
                    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 (memcmp(NameR.data()+14, ".sd", 3))
                      break;
                    return Intrinsic::x86_sse2_comige_sd;	 // "86.sse2.comige.sd"
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+14, ".sd", 3))
                      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 (memcmp(NameR.data()+14, ".sd", 3))
                      break;
                    return Intrinsic::x86_sse2_comile_sd;	 // "86.sse2.comile.sd"
                  case 't':	 // 1 string to match.
                    if (memcmp(NameR.data()+14, ".sd", 3))
                      break;
                    return Intrinsic::x86_sse2_comilt_sd;	 // "86.sse2.comilt.sd"
                  }
                  break;
                }
                break;
              case 'v':	 // 3 strings to match.
                if (memcmp(NameR.data()+10, "tt", 2))
                  break;
                switch (NameR[12]) {
                default: break;
                case 'p':	 // 2 strings to match.
                  switch (NameR[13]) {
                  default: break;
                  case 'd':	 // 1 string to match.
                    if (memcmp(NameR.data()+14, "2dq", 3))
                      break;
                    return Intrinsic::x86_sse2_cvttpd2dq;	 // "86.sse2.cvttpd2dq"
                  case 's':	 // 1 string to match.
                    if (memcmp(NameR.data()+14, "2dq", 3))
                      break;
                    return Intrinsic::x86_sse2_cvttps2dq;	 // "86.sse2.cvttps2dq"
                  }
                  break;
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+13, "d2si", 4))
                    break;
                  return Intrinsic::x86_sse2_cvttsd2si;	 // "86.sse2.cvttsd2si"
                }
                break;
              }
              break;
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "ovmsk.pd", 8))
                break;
              return Intrinsic::x86_sse2_movmsk_pd;	 // "86.sse2.movmsk.pd"
            case 's':	 // 3 strings to match.
              if (memcmp(NameR.data()+9, "tore", 4))
                break;
              switch (NameR[13]) {
              default: break;
              case 'l':	 // 1 string to match.
                if (memcmp(NameR.data()+14, ".dq", 3))
                  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 (memcmp(NameR.data()+7, ".addsub.p", 9))
              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':	 // 26 strings to match.
            switch (NameR[7]) {
            default: break;
            case '1':	 // 23 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'b':	 // 2 strings to match.
                if (memcmp(NameR.data()+10, "lendvp", 6))
                  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 (memcmp(NameR.data()+10, "nsertps", 7))
                  break;
                return Intrinsic::x86_sse41_insertps;	 // "86.sse41.insertps"
              case 'm':	 // 1 string to match.
                if (memcmp(NameR.data()+10, "ovntdqa", 7))
                  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 (memcmp(NameR.data()+11, "ckusdw", 6))
                    break;
                  return Intrinsic::x86_sse41_packusdw;	 // "86.sse41.packusdw"
                case 'b':	 // 1 string to match.
                  if (memcmp(NameR.data()+11, "lendvb", 6))
                    break;
                  return Intrinsic::x86_sse41_pblendvb;	 // "86.sse41.pblendvb"
                case 'm':	 // 12 strings to match.
                  if (memcmp(NameR.data()+11, "ov", 2))
                    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 (memcmp(NameR.data()+11, "estnzc", 6))
                    break;
                  return Intrinsic::x86_sse41_ptestnzc;	 // "86.sse41.ptestnzc"
                }
                break;
              case 'r':	 // 4 strings to match.
                if (memcmp(NameR.data()+10, "ound.", 5))
                  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;
            case 'a':	 // 3 strings to match.
              if (NameR[8] != '.')
                break;
              switch (NameR[9]) {
              default: break;
              case 'i':	 // 1 string to match.
                if (memcmp(NameR.data()+10, "nsertqi", 7))
                  break;
                return Intrinsic::x86_sse4a_insertqi;	 // "86.sse4a.insertqi"
              case 'm':	 // 2 strings to match.
                if (memcmp(NameR.data()+10, "ovnt.s", 6))
                  break;
                switch (NameR[16]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_sse4a_movnt_sd;	 // "86.sse4a.movnt.sd"
                case 's':	 // 1 string to match.
                  return Intrinsic::x86_sse4a_movnt_ss;	 // "86.sse4a.movnt.ss"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "e3.ph", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "dd.sw", 5))
              break;
            return Intrinsic::x86_ssse3_phadd_sw;	 // "86.ssse3.phadd.sw"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "ub.sw", 5))
              break;
            return Intrinsic::x86_ssse3_phsub_sw;	 // "86.ssse3.phsub.sw"
          }
          break;
        }
        break;
      case 't':	 // 2 strings to match.
        if (memcmp(NameR.data()+4, "bm.bextri.u", 11))
          break;
        switch (NameR[15]) {
        default: break;
        case '3':	 // 1 string to match.
          if (NameR[16] != '2')
            break;
          return Intrinsic::x86_tbm_bextri_u32;	 // "86.tbm.bextri.u32"
        case '6':	 // 1 string to match.
          if (NameR[16] != '4')
            break;
          return Intrinsic::x86_tbm_bextri_u64;	 // "86.tbm.bextri.u64"
        }
        break;
      case 'x':	 // 6 strings to match.
        if (memcmp(NameR.data()+4, "op.vp", 5))
          break;
        switch (NameR[9]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(NameR.data()+10, "mov.256", 7))
            break;
          return Intrinsic::x86_xop_vpcmov_256;	 // "86.xop.vpcmov.256"
        case 'e':	 // 2 strings to match.
          if (memcmp(NameR.data()+10, "rmil2p", 6))
            break;
          switch (NameR[16]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::x86_xop_vpermil2pd;	 // "86.xop.vpermil2pd"
          case 's':	 // 1 string to match.
            return Intrinsic::x86_xop_vpermil2ps;	 // "86.xop.vpermil2ps"
          }
          break;
        case 'm':	 // 3 strings to match.
          if (NameR[10] != 'a')
            break;
          switch (NameR[11]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+12, "ssdq", 4))
              break;
            switch (NameR[16]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::x86_xop_vpmacssdqh;	 // "86.xop.vpmacssdqh"
            case 'l':	 // 1 string to match.
              return Intrinsic::x86_xop_vpmacssdql;	 // "86.xop.vpmacssdql"
            }
            break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "csswd", 5))
              break;
            return Intrinsic::x86_xop_vpmadcsswd;	 // "86.xop.vpmadcsswd"
          }
          break;
        }
        break;
      }
      break;
    case 18:	 // 45 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'a':	 // 32 strings to match.
        if (memcmp(NameR.data()+4, "vx", 2))
          break;
        switch (NameR[6]) {
        default: break;
        case '.':	 // 10 strings to match.
          switch (NameR[7]) {
          default: break;
          case 'h':	 // 4 strings to match.
            switch (NameR[8]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(NameR.data()+9, "dd.p", 4))
                break;
              switch (NameR[13]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+14, ".256", 4))
                  break;
                return Intrinsic::x86_avx_hadd_pd_256;	 // "86.avx.hadd.pd.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+14, ".256", 4))
                  break;
                return Intrinsic::x86_avx_hadd_ps_256;	 // "86.avx.hadd.ps.256"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+9, "ub.p", 4))
                break;
              switch (NameR[13]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+14, ".256", 4))
                  break;
                return Intrinsic::x86_avx_hsub_pd_256;	 // "86.avx.hsub.pd.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+14, ".256", 4))
                  break;
                return Intrinsic::x86_avx_hsub_ps_256;	 // "86.avx.hsub.ps.256"
              }
              break;
            }
            break;
          case 'm':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "askload.p", 9))
              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 (memcmp(NameR.data()+8, "qrt.p", 5))
              break;
            switch (NameR[13]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+14, ".256", 4))
                break;
              return Intrinsic::x86_avx_sqrt_pd_256;	 // "86.avx.sqrt.pd.256"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+14, ".256", 4))
                break;
              return Intrinsic::x86_avx_sqrt_ps_256;	 // "86.avx.sqrt.ps.256"
            }
            break;
          case 'v':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "testnzc.p", 9))
              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 '2':	 // 10 strings to match.
          if (NameR[7] != '.')
            break;
          switch (NameR[8]) {
          default: break;
          case 'g':	 // 4 strings to match.
            if (memcmp(NameR.data()+9, "ather.", 6))
              break;
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (NameR[16] != '.')
                break;
              switch (NameR[17]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_avx2_gather_d_d;	 // "86.avx2.gather.d.d"
              case 'q':	 // 1 string to match.
                return Intrinsic::x86_avx2_gather_d_q;	 // "86.avx2.gather.d.q"
              }
              break;
            case 'q':	 // 2 strings to match.
              if (NameR[16] != '.')
                break;
              switch (NameR[17]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_avx2_gather_q_d;	 // "86.avx2.gather.q.d"
              case 'q':	 // 1 string to match.
                return Intrinsic::x86_avx2_gather_q_q;	 // "86.avx2.gather.q.q"
              }
              break;
            }
            break;
          case 'm':	 // 2 strings to match.
            if (memcmp(NameR.data()+9, "askload.", 8))
              break;
            switch (NameR[17]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_avx2_maskload_d;	 // "86.avx2.maskload.d"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_avx2_maskload_q;	 // "86.avx2.maskload.q"
            }
            break;
          case 'p':	 // 3 strings to match.
            switch (NameR[9]) {
            default: break;
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+10, "ul.hr.sw", 8))
                break;
              return Intrinsic::x86_avx2_pmul_hr_sw;	 // "86.avx2.pmul.hr.sw"
            case 's':	 // 2 strings to match.
              switch (NameR[10]) {
              default: break;
              case 'l':	 // 1 string to match.
                if (memcmp(NameR.data()+11, "l.dq.bs", 7))
                  break;
                return Intrinsic::x86_avx2_psll_dq_bs;	 // "86.avx2.psll.dq.bs"
              case 'r':	 // 1 string to match.
                if (memcmp(NameR.data()+11, "l.dq.bs", 7))
                  break;
                return Intrinsic::x86_avx2_psrl_dq_bs;	 // "86.avx2.psrl.dq.bs"
              }
              break;
            }
            break;
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+9, "perm2i128", 9))
              break;
            return Intrinsic::x86_avx2_vperm2i128;	 // "86.avx2.vperm2i128"
          }
          break;
        case '5':	 // 12 strings to match.
          if (memcmp(NameR.data()+7, "12.", 3))
            break;
          switch (NameR[10]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ovntdqa", 7))
              break;
            return Intrinsic::x86_avx512_movntdqa;	 // "86.avx512.movntdqa"
          case 'p':	 // 5 strings to match.
            if (memcmp(NameR.data()+11, "movzx", 5))
              break;
            switch (NameR[16]) {
            default: break;
            case 'b':	 // 2 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_avx512_pmovzxbd;	 // "86.avx512.pmovzxbd"
              case 'q':	 // 1 string to match.
                return Intrinsic::x86_avx512_pmovzxbq;	 // "86.avx512.pmovzxbq"
              }
              break;
            case 'd':	 // 1 string to match.
              if (NameR[17] != 'q')
                break;
              return Intrinsic::x86_avx512_pmovzxdq;	 // "86.avx512.pmovzxdq"
            case 'w':	 // 2 strings to match.
              switch (NameR[17]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_avx512_pmovzxwd;	 // "86.avx512.pmovzxwd"
              case 'q':	 // 1 string to match.
                return Intrinsic::x86_avx512_pmovzxwq;	 // "86.avx512.pmovzxwq"
              }
              break;
            }
            break;
          case 'r':	 // 6 strings to match.
            if (memcmp(NameR.data()+11, "cp", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "4.s", 3))
                break;
              switch (NameR[17]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_avx512_rcp14_sd;	 // "86.avx512.rcp14.sd"
              case 's':	 // 1 string to match.
                return Intrinsic::x86_avx512_rcp14_ss;	 // "86.avx512.rcp14.ss"
              }
              break;
            case '2':	 // 4 strings to match.
              if (memcmp(NameR.data()+14, "8.", 2))
                break;
              switch (NameR[16]) {
              default: break;
              case 'p':	 // 2 strings to match.
                switch (NameR[17]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_avx512_rcp28_pd;	 // "86.avx512.rcp28.pd"
                case 's':	 // 1 string to match.
                  return Intrinsic::x86_avx512_rcp28_ps;	 // "86.avx512.rcp28.ps"
                }
                break;
              case 's':	 // 2 strings to match.
                switch (NameR[17]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_avx512_rcp28_sd;	 // "86.avx512.rcp28.sd"
                case 's':	 // 1 string to match.
                  return Intrinsic::x86_avx512_rcp28_ss;	 // "86.avx512.rcp28.ss"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 13 strings to match.
        if (memcmp(NameR.data()+4, "se", 2))
          break;
        switch (NameR[6]) {
        default: break;
        case '.':	 // 2 strings to match.
          switch (NameR[7]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "vttss2si64", 10))
              break;
            return Intrinsic::x86_sse_cvttss2si64;	 // "86.sse.cvttss2si64"
          case 'u':	 // 1 string to match.
            if (memcmp(NameR.data()+8, "comineq.ss", 10))
              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 (memcmp(NameR.data()+10, "mineq.sd", 8))
                break;
              return Intrinsic::x86_sse2_comineq_sd;	 // "86.sse2.comineq.sd"
            case 'v':	 // 2 strings to match.
              if (memcmp(NameR.data()+10, "ts", 2))
                break;
              switch (NameR[12]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+13, "2si64", 5))
                  break;
                return Intrinsic::x86_sse2_cvtsd2si64;	 // "86.sse2.cvtsd2si64"
              case 'i':	 // 1 string to match.
                if (memcmp(NameR.data()+13, "642sd", 5))
                  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 (memcmp(NameR.data()+11, "l.dq.bs", 7))
                break;
              return Intrinsic::x86_sse2_psll_dq_bs;	 // "86.sse2.psll.dq.bs"
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+11, "l.dq.bs", 7))
                break;
              return Intrinsic::x86_sse2_psrl_dq_bs;	 // "86.sse2.psrl.dq.bs"
            }
            break;
          case 'u':	 // 5 strings to match.
            if (memcmp(NameR.data()+9, "comi", 4))
              break;
            switch (NameR[13]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "q.sd", 4))
                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 (memcmp(NameR.data()+15, ".sd", 3))
                  break;
                return Intrinsic::x86_sse2_ucomige_sd;	 // "86.sse2.ucomige.sd"
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+15, ".sd", 3))
                  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 (memcmp(NameR.data()+15, ".sd", 3))
                  break;
                return Intrinsic::x86_sse2_ucomile_sd;	 // "86.sse2.ucomile.sd"
              case 't':	 // 1 string to match.
                if (memcmp(NameR.data()+15, ".sd", 3))
                  break;
                return Intrinsic::x86_sse2_ucomilt_sd;	 // "86.sse2.ucomilt.sd"
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 1 string to match.
          if (memcmp(NameR.data()+7, "1.extractps", 11))
            break;
          return Intrinsic::x86_sse41_extractps;	 // "86.sse41.extractps"
        }
        break;
      }
      break;
    case 19:	 // 45 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'a':	 // 30 strings to match.
        switch (NameR[4]) {
        default: break;
        case 'e':	 // 2 strings to match.
          if (memcmp(NameR.data()+5, "sni.aes", 7))
            break;
          switch (NameR[12]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "eclast", 6))
              break;
            return Intrinsic::x86_aesni_aesdeclast;	 // "86.aesni.aesdeclast"
          case 'e':	 // 1 string to match.
            if (memcmp(NameR.data()+13, "nclast", 6))
              break;
            return Intrinsic::x86_aesni_aesenclast;	 // "86.aesni.aesenclast"
          }
          break;
        case 'v':	 // 28 strings to match.
          if (NameR[5] != 'x')
            break;
          switch (NameR[6]) {
          default: break;
          case '.':	 // 8 strings to match.
            switch (NameR[7]) {
            default: break;
            case 'b':	 // 2 strings to match.
              if (memcmp(NameR.data()+8, "lend.p", 6))
                break;
              switch (NameR[14]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+15, ".256", 4))
                  break;
                return Intrinsic::x86_avx_blend_pd_256;	 // "86.avx.blend.pd.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+15, ".256", 4))
                  break;
                return Intrinsic::x86_avx_blend_ps_256;	 // "86.avx.blend.ps.256"
              }
              break;
            case 'm':	 // 2 strings to match.
              if (memcmp(NameR.data()+8, "askstore.p", 10))
                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 'p':	 // 1 string to match.
              if (memcmp(NameR.data()+8, "testnzc.256", 11))
                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 (memcmp(NameR.data()+9, "und.p", 5))
                  break;
                switch (NameR[14]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, ".256", 4))
                    break;
                  return Intrinsic::x86_avx_round_pd_256;	 // "86.avx.round.pd.256"
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, ".256", 4))
                    break;
                  return Intrinsic::x86_avx_round_ps_256;	 // "86.avx.round.ps.256"
                }
                break;
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+9, "qrt.ps.256", 10))
                  break;
                return Intrinsic::x86_avx_rsqrt_ps_256;	 // "86.avx.rsqrt.ps.256"
              }
              break;
            }
            break;
          case '2':	 // 15 strings to match.
            if (NameR[7] != '.')
              break;
            switch (NameR[8]) {
            default: break;
            case 'g':	 // 4 strings to match.
              if (memcmp(NameR.data()+9, "ather.", 6))
                break;
              switch (NameR[15]) {
              default: break;
              case 'd':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, ".p", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_avx2_gather_d_pd;	 // "86.avx2.gather.d.pd"
                case 's':	 // 1 string to match.
                  return Intrinsic::x86_avx2_gather_d_ps;	 // "86.avx2.gather.d.ps"
                }
                break;
              case 'q':	 // 2 strings to match.
                if (memcmp(NameR.data()+16, ".p", 2))
                  break;
                switch (NameR[18]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_avx2_gather_q_pd;	 // "86.avx2.gather.q.pd"
                case 's':	 // 1 string to match.
                  return Intrinsic::x86_avx2_gather_q_ps;	 // "86.avx2.gather.q.ps"
                }
                break;
              }
              break;
            case 'm':	 // 2 strings to match.
              if (memcmp(NameR.data()+9, "askstore.", 9))
                break;
              switch (NameR[18]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_avx2_maskstore_d;	 // "86.avx2.maskstore.d"
              case 'q':	 // 1 string to match.
                return Intrinsic::x86_avx2_maskstore_q;	 // "86.avx2.maskstore.q"
              }
              break;
            case 'p':	 // 8 strings to match.
              switch (NameR[9]) {
              default: break;
              case 'b':	 // 2 strings to match.
                if (memcmp(NameR.data()+10, "lendd.", 6))
                  break;
                switch (NameR[16]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, "28", 2))
                    break;
                  return Intrinsic::x86_avx2_pblendd_128;	 // "86.avx2.pblendd.128"
                case '2':	 // 1 string to match.
                  if (memcmp(NameR.data()+17, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pblendd_256;	 // "86.avx2.pblendd.256"
                }
                break;
              case 'm':	 // 1 string to match.
                if (memcmp(NameR.data()+10, "add.ub.sw", 9))
                  break;
                return Intrinsic::x86_avx2_pmadd_ub_sw;	 // "86.avx2.pmadd.ub.sw"
              case 's':	 // 5 strings to match.
                switch (NameR[10]) {
                default: break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(NameR.data()+11, "lv.", 3))
                    break;
                  switch (NameR[14]) {
                  default: break;
                  case 'd':	 // 1 string to match.
                    if (memcmp(NameR.data()+15, ".256", 4))
                      break;
                    return Intrinsic::x86_avx2_psllv_d_256;	 // "86.avx2.psllv.d.256"
                  case 'q':	 // 1 string to match.
                    if (memcmp(NameR.data()+15, ".256", 4))
                      break;
                    return Intrinsic::x86_avx2_psllv_q_256;	 // "86.avx2.psllv.q.256"
                  }
                  break;
                case 'r':	 // 3 strings to match.
                  switch (NameR[11]) {
                  default: break;
                  case 'a':	 // 1 string to match.
                    if (memcmp(NameR.data()+12, "v.d.256", 7))
                      break;
                    return Intrinsic::x86_avx2_psrav_d_256;	 // "86.avx2.psrav.d.256"
                  case 'l':	 // 2 strings to match.
                    if (memcmp(NameR.data()+12, "v.", 2))
                      break;
                    switch (NameR[14]) {
                    default: break;
                    case 'd':	 // 1 string to match.
                      if (memcmp(NameR.data()+15, ".256", 4))
                        break;
                      return Intrinsic::x86_avx2_psrlv_d_256;	 // "86.avx2.psrlv.d.256"
                    case 'q':	 // 1 string to match.
                      if (memcmp(NameR.data()+15, ".256", 4))
                        break;
                      return Intrinsic::x86_avx2_psrlv_q_256;	 // "86.avx2.psrlv.q.256"
                    }
                    break;
                  }
                  break;
                }
                break;
              }
              break;
            case 'v':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "inserti128", 10))
                break;
              return Intrinsic::x86_avx2_vinserti128;	 // "86.avx2.vinserti128"
            }
            break;
          case '5':	 // 5 strings to match.
            if (memcmp(NameR.data()+7, "12.", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'c':	 // 4 strings to match.
              if (memcmp(NameR.data()+11, "vt", 2))
                break;
              switch (NameR[13]) {
              default: break;
              case 's':	 // 2 strings to match.
                switch (NameR[14]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, "2usi", 4))
                    break;
                  return Intrinsic::x86_avx512_cvtsd2usi;	 // "86.avx512.cvtsd2usi"
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, "2usi", 4))
                    break;
                  return Intrinsic::x86_avx512_cvtss2usi;	 // "86.avx512.cvtss2usi"
                }
                break;
              case 'u':	 // 2 strings to match.
                if (memcmp(NameR.data()+14, "si2s", 4))
                  break;
                switch (NameR[18]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_avx512_cvtusi2sd;	 // "86.avx512.cvtusi2sd"
                case 's':	 // 1 string to match.
                  return Intrinsic::x86_avx512_cvtusi2ss;	 // "86.avx512.cvtusi2ss"
                }
                break;
              }
              break;
            case 'k':	 // 1 string to match.
              if (memcmp(NameR.data()+11, "unpck.bw", 8))
                break;
              return Intrinsic::x86_avx512_kunpck_bw;	 // "86.avx512.kunpck.bw"
            }
            break;
          }
          break;
        }
        break;
      case 'f':	 // 4 strings to match.
        if (memcmp(NameR.data()+4, "ma.vfm", 6))
          break;
        switch (NameR[10]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(NameR.data()+11, "ddsub.p", 7))
            break;
          switch (NameR[18]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::x86_fma_vfmaddsub_pd;	 // "86.fma.vfmaddsub.pd"
          case 's':	 // 1 string to match.
            return Intrinsic::x86_fma_vfmaddsub_ps;	 // "86.fma.vfmaddsub.ps"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+11, "ubadd.p", 7))
            break;
          switch (NameR[18]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::x86_fma_vfmsubadd_pd;	 // "86.fma.vfmsubadd.pd"
          case 's':	 // 1 string to match.
            return Intrinsic::x86_fma_vfmsubadd_ps;	 // "86.fma.vfmsubadd.ps"
          }
          break;
        }
        break;
      case 's':	 // 9 strings to match.
        if (NameR[4] != 's')
          break;
        switch (NameR[5]) {
        default: break;
        case 'e':	 // 5 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 (memcmp(NameR.data()+9, "vttsd2si64", 10))
                break;
              return Intrinsic::x86_sse2_cvttsd2si64;	 // "86.sse2.cvttsd2si64"
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "askmov.dqu", 10))
                break;
              return Intrinsic::x86_sse2_maskmov_dqu;	 // "86.sse2.maskmov.dqu"
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+9, "comineq.sd", 10))
                break;
              return Intrinsic::x86_sse2_ucomineq_sd;	 // "86.sse2.ucomineq.sd"
            }
            break;
          case '4':	 // 2 strings to match.
            switch (NameR[7]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(NameR.data()+8, ".phminposuw", 11))
                break;
              return Intrinsic::x86_sse41_phminposuw;	 // "86.sse41.phminposuw"
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+8, ".crc32.32.8", 11))
                break;
              return Intrinsic::x86_sse42_crc32_32_8;	 // "86.sse42.crc32.32.8"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+6, "e3.p", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'a':	 // 3 strings to match.
            if (memcmp(NameR.data()+11, "bs.", 3))
              break;
            switch (NameR[14]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (memcmp(NameR.data()+15, ".128", 4))
                break;
              return Intrinsic::x86_ssse3_pabs_b_128;	 // "86.ssse3.pabs.b.128"
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+15, ".128", 4))
                break;
              return Intrinsic::x86_ssse3_pabs_d_128;	 // "86.ssse3.pabs.d.128"
            case 'w':	 // 1 string to match.
              if (memcmp(NameR.data()+15, ".128", 4))
                break;
              return Intrinsic::x86_ssse3_pabs_w_128;	 // "86.ssse3.pabs.w.128"
            }
            break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "ul.hr.sw", 8))
              break;
            return Intrinsic::x86_ssse3_pmul_hr_sw;	 // "86.ssse3.pmul.hr.sw"
          }
          break;
        }
        break;
      case 'x':	 // 2 strings to match.
        if (memcmp(NameR.data()+4, "op.vfrcz.p", 10))
          break;
        switch (NameR[14]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+15, ".256", 4))
            break;
          return Intrinsic::x86_xop_vfrcz_pd_256;	 // "86.xop.vfrcz.pd.256"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+15, ".256", 4))
            break;
          return Intrinsic::x86_xop_vfrcz_ps_256;	 // "86.xop.vfrcz.ps.256"
        }
        break;
      }
      break;
    case 20:	 // 56 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'a':	 // 32 strings to match.
        if (memcmp(NameR.data()+4, "vx", 2))
          break;
        switch (NameR[6]) {
        default: break;
        case '.':	 // 19 strings to match.
          switch (NameR[7]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "ddsub.p", 7))
              break;
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+16, ".256", 4))
                break;
              return Intrinsic::x86_avx_addsub_pd_256;	 // "86.avx.addsub.pd.256"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+16, ".256", 4))
                break;
              return Intrinsic::x86_avx_addsub_ps_256;	 // "86.avx.addsub.ps.256"
            }
            break;
          case 'b':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "lendv.p", 7))
              break;
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+16, ".256", 4))
                break;
              return Intrinsic::x86_avx_blendv_pd_256;	 // "86.avx.blendv.pd.256"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+16, ".256", 4))
                break;
              return Intrinsic::x86_avx_blendv_ps_256;	 // "86.avx.blendv.ps.256"
            }
            break;
          case 'c':	 // 4 strings to match.
            if (memcmp(NameR.data()+8, "vt", 2))
              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 (memcmp(NameR.data()+13, "2dq.256", 7))
                  break;
                return Intrinsic::x86_avx_cvt_pd2dq_256;	 // "86.avx.cvt.pd2dq.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+13, "2dq.256", 7))
                  break;
                return Intrinsic::x86_avx_cvt_ps2dq_256;	 // "86.avx.cvt.ps2dq.256"
              }
              break;
            case 'd':	 // 2 strings to match.
              if (memcmp(NameR.data()+11, "q2.p", 4))
                break;
              switch (NameR[15]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".256", 4))
                  break;
                return Intrinsic::x86_avx_cvtdq2_pd_256;	 // "86.avx.cvtdq2.pd.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".256", 4))
                  break;
                return Intrinsic::x86_avx_cvtdq2_ps_256;	 // "86.avx.cvtdq2.ps.256"
              }
              break;
            }
            break;
          case 'm':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "ovmsk.p", 7))
              break;
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+16, ".256", 4))
                break;
              return Intrinsic::x86_avx_movmsk_pd_256;	 // "86.avx.movmsk.pd.256"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+16, ".256", 4))
                break;
              return Intrinsic::x86_avx_movmsk_ps_256;	 // "86.avx.movmsk.ps.256"
            }
            break;
          case 's':	 // 3 strings to match.
            if (memcmp(NameR.data()+8, "toreu.", 6))
              break;
            switch (NameR[14]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+15, "q.256", 5))
                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 (memcmp(NameR.data()+16, ".256", 4))
                  break;
                return Intrinsic::x86_avx_storeu_pd_256;	 // "86.avx.storeu.pd.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".256", 4))
                  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 (memcmp(NameR.data()+9, "ermilvar.p", 10))
                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 (memcmp(NameR.data()+9, "est", 3))
                break;
              switch (NameR[12]) {
              default: break;
              case 'c':	 // 2 strings to match.
                if (memcmp(NameR.data()+13, ".p", 2))
                  break;
                switch (NameR[15]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, ".256", 4))
                    break;
                  return Intrinsic::x86_avx_vtestc_pd_256;	 // "86.avx.vtestc.pd.256"
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, ".256", 4))
                    break;
                  return Intrinsic::x86_avx_vtestc_ps_256;	 // "86.avx.vtestc.ps.256"
                }
                break;
              case 'z':	 // 2 strings to match.
                if (memcmp(NameR.data()+13, ".p", 2))
                  break;
                switch (NameR[15]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, ".256", 4))
                    break;
                  return Intrinsic::x86_avx_vtestz_pd_256;	 // "86.avx.vtestz.pd.256"
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+16, ".256", 4))
                    break;
                  return Intrinsic::x86_avx_vtestz_ps_256;	 // "86.avx.vtestz.ps.256"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case '2':	 // 1 string to match.
          if (memcmp(NameR.data()+7, ".vextracti128", 13))
            break;
          return Intrinsic::x86_avx2_vextracti128;	 // "86.avx2.vextracti128"
        case '5':	 // 12 strings to match.
          if (memcmp(NameR.data()+7, "12.", 3))
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "vtts", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+16, "2usi", 4))
                break;
              return Intrinsic::x86_avx512_cvttsd2usi;	 // "86.avx512.cvttsd2usi"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+16, "2usi", 4))
                break;
              return Intrinsic::x86_avx512_cvttss2usi;	 // "86.avx512.cvttss2usi"
            }
            break;
          case 'k':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "ortest", 6))
              break;
            switch (NameR[17]) {
            default: break;
            case 'c':	 // 1 string to match.
              if (memcmp(NameR.data()+18, ".w", 2))
                break;
              return Intrinsic::x86_avx512_kortestc_w;	 // "86.avx512.kortestc.w"
            case 'z':	 // 1 string to match.
              if (memcmp(NameR.data()+18, ".w", 2))
                break;
              return Intrinsic::x86_avx512_kortestz_w;	 // "86.avx512.kortestz.w"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (NameR[11] != 's')
              break;
            switch (NameR[12]) {
            default: break;
            case 'l':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "l.dq.bs", 7))
                break;
              return Intrinsic::x86_avx512_psll_dq_bs;	 // "86.avx512.psll.dq.bs"
            case 'r':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "l.dq.bs", 7))
                break;
              return Intrinsic::x86_avx512_psrl_dq_bs;	 // "86.avx512.psrl.dq.bs"
            }
            break;
          case 'r':	 // 6 strings to match.
            if (memcmp(NameR.data()+11, "sqrt", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(NameR.data()+16, "4.s", 3))
                break;
              switch (NameR[19]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_avx512_rsqrt14_sd;	 // "86.avx512.rsqrt14.sd"
              case 's':	 // 1 string to match.
                return Intrinsic::x86_avx512_rsqrt14_ss;	 // "86.avx512.rsqrt14.ss"
              }
              break;
            case '2':	 // 4 strings to match.
              if (memcmp(NameR.data()+16, "8.", 2))
                break;
              switch (NameR[18]) {
              default: break;
              case 'p':	 // 2 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_avx512_rsqrt28_pd;	 // "86.avx512.rsqrt28.pd"
                case 's':	 // 1 string to match.
                  return Intrinsic::x86_avx512_rsqrt28_ps;	 // "86.avx512.rsqrt28.ps"
                }
                break;
              case 's':	 // 2 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_avx512_rsqrt28_sd;	 // "86.avx512.rsqrt28.sd"
                case 's':	 // 1 string to match.
                  return Intrinsic::x86_avx512_rsqrt28_ss;	 // "86.avx512.rsqrt28.ss"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'f':	 // 8 strings to match.
        if (memcmp(NameR.data()+4, "ma.vfm", 6))
          break;
        switch (NameR[10]) {
        default: break;
        case 'a':	 // 4 strings to match.
          if (memcmp(NameR.data()+11, "dd.p", 4))
            break;
          switch (NameR[15]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (NameR[16] != '.')
              break;
            switch (NameR[17]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "56", 2))
                break;
              return Intrinsic::x86_fma_vfmadd_pd_256;	 // "86.fma.vfmadd.pd.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "12", 2))
                break;
              return Intrinsic::x86_fma_vfmadd_pd_512;	 // "86.fma.vfmadd.pd.512"
            }
            break;
          case 's':	 // 2 strings to match.
            if (NameR[16] != '.')
              break;
            switch (NameR[17]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "56", 2))
                break;
              return Intrinsic::x86_fma_vfmadd_ps_256;	 // "86.fma.vfmadd.ps.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "12", 2))
                break;
              return Intrinsic::x86_fma_vfmadd_ps_512;	 // "86.fma.vfmadd.ps.512"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+11, "ub.p", 4))
            break;
          switch (NameR[15]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (NameR[16] != '.')
              break;
            switch (NameR[17]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "56", 2))
                break;
              return Intrinsic::x86_fma_vfmsub_pd_256;	 // "86.fma.vfmsub.pd.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "12", 2))
                break;
              return Intrinsic::x86_fma_vfmsub_pd_512;	 // "86.fma.vfmsub.pd.512"
            }
            break;
          case 's':	 // 2 strings to match.
            if (NameR[16] != '.')
              break;
            switch (NameR[17]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "56", 2))
                break;
              return Intrinsic::x86_fma_vfmsub_ps_256;	 // "86.fma.vfmsub.ps.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "12", 2))
                break;
              return Intrinsic::x86_fma_vfmsub_ps_512;	 // "86.fma.vfmsub.ps.512"
            }
            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 (memcmp(NameR.data()+7, ".p", 2))
              break;
            switch (NameR[9]) {
            default: break;
            case 'a':	 // 3 strings to match.
              if (memcmp(NameR.data()+10, "ck", 2))
                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 (memcmp(NameR.data()+15, "w.128", 5))
                    break;
                  return Intrinsic::x86_sse2_packssdw_128;	 // "86.sse2.packssdw.128"
                case 'w':	 // 1 string to match.
                  if (memcmp(NameR.data()+15, "b.128", 5))
                    break;
                  return Intrinsic::x86_sse2_packsswb_128;	 // "86.sse2.packsswb.128"
                }
                break;
              case 'u':	 // 1 string to match.
                if (memcmp(NameR.data()+13, "swb.128", 7))
                  break;
                return Intrinsic::x86_sse2_packuswb_128;	 // "86.sse2.packuswb.128"
              }
              break;
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+10, "ovmskb.128", 10))
                break;
              return Intrinsic::x86_sse2_pmovmskb_128;	 // "86.sse2.pmovmskb.128"
            }
            break;
          case '4':	 // 3 strings to match.
            if (memcmp(NameR.data()+7, "2.crc32.", 8))
              break;
            switch (NameR[15]) {
            default: break;
            case '3':	 // 2 strings to match.
              if (memcmp(NameR.data()+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 (memcmp(NameR.data()+16, "4.64", 4))
                break;
              return Intrinsic::x86_sse42_crc32_64_64;	 // "86.sse42.crc32.64.64"
            }
            break;
          }
          break;
        case 's':	 // 9 strings to match.
          if (memcmp(NameR.data()+6, "e3.p", 4))
            break;
          switch (NameR[10]) {
          default: break;
          case 'h':	 // 4 strings to match.
            switch (NameR[11]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "dd.", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".128", 4))
                  break;
                return Intrinsic::x86_ssse3_phadd_d_128;	 // "86.ssse3.phadd.d.128"
              case 'w':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".128", 4))
                  break;
                return Intrinsic::x86_ssse3_phadd_w_128;	 // "86.ssse3.phadd.w.128"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(NameR.data()+12, "ub.", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".128", 4))
                  break;
                return Intrinsic::x86_ssse3_phsub_d_128;	 // "86.ssse3.phsub.d.128"
              case 'w':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".128", 4))
                  break;
                return Intrinsic::x86_ssse3_phsub_w_128;	 // "86.ssse3.phsub.w.128"
              }
              break;
            }
            break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+11, "add.ub.sw", 9))
              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 (memcmp(NameR.data()+12, "uf.b.128", 8))
                break;
              return Intrinsic::x86_ssse3_pshuf_b_128;	 // "86.ssse3.pshuf.b.128"
            case 'i':	 // 3 strings to match.
              if (memcmp(NameR.data()+12, "gn.", 3))
                break;
              switch (NameR[15]) {
              default: break;
              case 'b':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".128", 4))
                  break;
                return Intrinsic::x86_ssse3_psign_b_128;	 // "86.ssse3.psign.b.128"
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".128", 4))
                  break;
                return Intrinsic::x86_ssse3_psign_d_128;	 // "86.ssse3.psign.d.128"
              case 'w':	 // 1 string to match.
                if (memcmp(NameR.data()+16, ".128", 4))
                  break;
                return Intrinsic::x86_ssse3_psign_w_128;	 // "86.ssse3.psign.w.128"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 21:	 // 28 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'a':	 // 12 strings to match.
        if (memcmp(NameR.data()+4, "vx", 2))
          break;
        switch (NameR[6]) {
        default: break;
        case '.':	 // 4 strings to match.
          if (memcmp(NameR.data()+7, "cvt", 3))
            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 (memcmp(NameR.data()+13, "2.ps.256", 8))
                break;
              return Intrinsic::x86_avx_cvt_pd2_ps_256;	 // "86.avx.cvt.pd2.ps.256"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+13, "2.pd.256", 8))
                break;
              return Intrinsic::x86_avx_cvt_ps2_pd_256;	 // "86.avx.cvt.ps2.pd.256"
            }
            break;
          case 't':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, ".p", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "2dq.256", 7))
                break;
              return Intrinsic::x86_avx_cvtt_pd2dq_256;	 // "86.avx.cvtt.pd2dq.256"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+14, "2dq.256", 7))
                break;
              return Intrinsic::x86_avx_cvtt_ps2dq_256;	 // "86.avx.cvtt.ps2dq.256"
            }
            break;
          }
          break;
        case '5':	 // 8 strings to match.
          if (memcmp(NameR.data()+7, "12.", 3))
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 4 strings to match.
            if (memcmp(NameR.data()+11, "vt", 2))
              break;
            switch (NameR[13]) {
            default: break;
            case 's':	 // 2 strings to match.
              switch (NameR[14]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "2usi64", 6))
                  break;
                return Intrinsic::x86_avx512_cvtsd2usi64;	 // "86.avx512.cvtsd2usi64"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+15, "2usi64", 6))
                  break;
                return Intrinsic::x86_avx512_cvtss2usi64;	 // "86.avx512.cvtss2usi64"
              }
              break;
            case 'u':	 // 2 strings to match.
              if (memcmp(NameR.data()+14, "si642s", 6))
                break;
              switch (NameR[20]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_avx512_cvtusi642sd;	 // "86.avx512.cvtusi642sd"
              case 's':	 // 1 string to match.
                return Intrinsic::x86_avx512_cvtusi642ss;	 // "86.avx512.cvtusi642ss"
              }
              break;
            }
            break;
          case 'r':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "ndscale.s", 9))
              break;
            switch (NameR[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_avx512_rndscale_sd;	 // "86.avx512.rndscale.sd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_avx512_rndscale_ss;	 // "86.avx512.rndscale.ss"
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "qrt.p", 5))
              break;
            switch (NameR[16]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+17, ".512", 4))
                break;
              return Intrinsic::x86_avx512_sqrt_pd_512;	 // "86.avx512.sqrt.pd.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+17, ".512", 4))
                break;
              return Intrinsic::x86_avx512_sqrt_ps_512;	 // "86.avx512.sqrt.ps.512"
            }
            break;
          }
          break;
        }
        break;
      case 'f':	 // 8 strings to match.
        if (memcmp(NameR.data()+4, "ma.vfnm", 7))
          break;
        switch (NameR[11]) {
        default: break;
        case 'a':	 // 4 strings to match.
          if (memcmp(NameR.data()+12, "dd.p", 4))
            break;
          switch (NameR[16]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (NameR[17] != '.')
              break;
            switch (NameR[18]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "56", 2))
                break;
              return Intrinsic::x86_fma_vfnmadd_pd_256;	 // "86.fma.vfnmadd.pd.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "12", 2))
                break;
              return Intrinsic::x86_fma_vfnmadd_pd_512;	 // "86.fma.vfnmadd.pd.512"
            }
            break;
          case 's':	 // 2 strings to match.
            if (NameR[17] != '.')
              break;
            switch (NameR[18]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "56", 2))
                break;
              return Intrinsic::x86_fma_vfnmadd_ps_256;	 // "86.fma.vfnmadd.ps.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "12", 2))
                break;
              return Intrinsic::x86_fma_vfnmadd_ps_512;	 // "86.fma.vfnmadd.ps.512"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+12, "ub.p", 4))
            break;
          switch (NameR[16]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (NameR[17] != '.')
              break;
            switch (NameR[18]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "56", 2))
                break;
              return Intrinsic::x86_fma_vfnmsub_pd_256;	 // "86.fma.vfnmsub.pd.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "12", 2))
                break;
              return Intrinsic::x86_fma_vfnmsub_pd_512;	 // "86.fma.vfnmsub.pd.512"
            }
            break;
          case 's':	 // 2 strings to match.
            if (NameR[17] != '.')
              break;
            switch (NameR[18]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "56", 2))
                break;
              return Intrinsic::x86_fma_vfnmsub_ps_256;	 // "86.fma.vfnmsub.ps.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+19, "12", 2))
                break;
              return Intrinsic::x86_fma_vfnmsub_ps_512;	 // "86.fma.vfnmsub.ps.512"
            }
            break;
          }
          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 (memcmp(NameR.data()+6, "42.pcmp", 7))
            break;
          switch (NameR[13]) {
          default: break;
          case 'e':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "str", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "128", 3))
                break;
              return Intrinsic::x86_sse42_pcmpestri128;	 // "86.sse42.pcmpestri128"
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "128", 3))
                break;
              return Intrinsic::x86_sse42_pcmpestrm128;	 // "86.sse42.pcmpestrm128"
            }
            break;
          case 'i':	 // 2 strings to match.
            if (memcmp(NameR.data()+14, "str", 3))
              break;
            switch (NameR[17]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "128", 3))
                break;
              return Intrinsic::x86_sse42_pcmpistri128;	 // "86.sse42.pcmpistri128"
            case 'm':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "128", 3))
                break;
              return Intrinsic::x86_sse42_pcmpistrm128;	 // "86.sse42.pcmpistrm128"
            }
            break;
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+6, "e3.ph", 5))
            break;
          switch (NameR[11]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "dd.sw.128", 9))
              break;
            return Intrinsic::x86_ssse3_phadd_sw_128;	 // "86.ssse3.phadd.sw.128"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+12, "ub.sw.128", 9))
              break;
            return Intrinsic::x86_ssse3_phsub_sw_128;	 // "86.ssse3.phsub.sw.128"
          }
          break;
        }
        break;
      case 'x':	 // 2 strings to match.
        if (memcmp(NameR.data()+4, "op.vpermil2p", 12))
          break;
        switch (NameR[16]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+17, ".256", 4))
            break;
          return Intrinsic::x86_xop_vpermil2pd_256;	 // "86.xop.vpermil2pd.256"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+17, ".256", 4))
            break;
          return Intrinsic::x86_xop_vpermil2ps_256;	 // "86.xop.vpermil2ps.256"
        }
        break;
      }
      break;
    case 22:	 // 25 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'a':	 // 15 strings to match.
        if (memcmp(NameR.data()+4, "vx", 2))
          break;
        switch (NameR[6]) {
        default: break;
        case '.':	 // 4 strings to match.
          switch (NameR[7]) {
          default: break;
          case 'm':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "askload.p", 9))
              break;
            switch (NameR[17]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+18, ".256", 4))
                break;
              return Intrinsic::x86_avx_maskload_pd_256;	 // "86.avx.maskload.pd.256"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, ".256", 4))
                break;
              return Intrinsic::x86_avx_maskload_ps_256;	 // "86.avx.maskload.ps.256"
            }
            break;
          case 'v':	 // 2 strings to match.
            if (memcmp(NameR.data()+8, "testnzc.p", 9))
              break;
            switch (NameR[17]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+18, ".256", 4))
                break;
              return Intrinsic::x86_avx_vtestnzc_pd_256;	 // "86.avx.vtestnzc.pd.256"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, ".256", 4))
                break;
              return Intrinsic::x86_avx_vtestnzc_ps_256;	 // "86.avx.vtestnzc.ps.256"
            }
            break;
          }
          break;
        case '2':	 // 7 strings to match.
          if (NameR[7] != '.')
            break;
          switch (NameR[8]) {
          default: break;
          case 'g':	 // 4 strings to match.
            if (memcmp(NameR.data()+9, "ather.", 6))
              break;
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (NameR[16] != '.')
                break;
              switch (NameR[17]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+18, ".256", 4))
                  break;
                return Intrinsic::x86_avx2_gather_d_d_256;	 // "86.avx2.gather.d.d.256"
              case 'q':	 // 1 string to match.
                if (memcmp(NameR.data()+18, ".256", 4))
                  break;
                return Intrinsic::x86_avx2_gather_d_q_256;	 // "86.avx2.gather.d.q.256"
              }
              break;
            case 'q':	 // 2 strings to match.
              if (NameR[16] != '.')
                break;
              switch (NameR[17]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+18, ".256", 4))
                  break;
                return Intrinsic::x86_avx2_gather_q_d_256;	 // "86.avx2.gather.q.d.256"
              case 'q':	 // 1 string to match.
                if (memcmp(NameR.data()+18, ".256", 4))
                  break;
                return Intrinsic::x86_avx2_gather_q_q_256;	 // "86.avx2.gather.q.q.256"
              }
              break;
            }
            break;
          case 'm':	 // 2 strings to match.
            if (memcmp(NameR.data()+9, "askload.", 8))
              break;
            switch (NameR[17]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+18, ".256", 4))
                break;
              return Intrinsic::x86_avx2_maskload_d_256;	 // "86.avx2.maskload.d.256"
            case 'q':	 // 1 string to match.
              if (memcmp(NameR.data()+18, ".256", 4))
                break;
              return Intrinsic::x86_avx2_maskload_q_256;	 // "86.avx2.maskload.q.256"
            }
            break;
          case 'v':	 // 1 string to match.
            if (memcmp(NameR.data()+9, "broadcasti128", 13))
              break;
            return Intrinsic::x86_avx2_vbroadcasti128;	 // "86.avx2.vbroadcasti128"
          }
          break;
        case '5':	 // 4 strings to match.
          if (memcmp(NameR.data()+7, "12.", 3))
            break;
          switch (NameR[10]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "vtts", 4))
              break;
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+16, "2usi64", 6))
                break;
              return Intrinsic::x86_avx512_cvttsd2usi64;	 // "86.avx512.cvttsd2usi64"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+16, "2usi64", 6))
                break;
              return Intrinsic::x86_avx512_cvttss2usi64;	 // "86.avx512.cvttss2usi64"
            }
            break;
          case 'r':	 // 2 strings to match.
            if (memcmp(NameR.data()+11, "cp14.p", 6))
              break;
            switch (NameR[17]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+18, ".512", 4))
                break;
              return Intrinsic::x86_avx512_rcp14_pd_512;	 // "86.avx512.rcp14.pd.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+18, ".512", 4))
                break;
              return Intrinsic::x86_avx512_rcp14_ps_512;	 // "86.avx512.rcp14.ps.512"
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 10 strings to match.
        if (memcmp(NameR.data()+4, "se42.pcmp", 9))
          break;
        switch (NameR[13]) {
        default: break;
        case 'e':	 // 5 strings to match.
          if (memcmp(NameR.data()+14, "stri", 4))
            break;
          switch (NameR[18]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+19, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpestria128;	 // "86.sse42.pcmpestria128"
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+19, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpestric128;	 // "86.sse42.pcmpestric128"
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+19, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpestrio128;	 // "86.sse42.pcmpestrio128"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+19, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpestris128;	 // "86.sse42.pcmpestris128"
          case 'z':	 // 1 string to match.
            if (memcmp(NameR.data()+19, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpestriz128;	 // "86.sse42.pcmpestriz128"
          }
          break;
        case 'i':	 // 5 strings to match.
          if (memcmp(NameR.data()+14, "stri", 4))
            break;
          switch (NameR[18]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(NameR.data()+19, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpistria128;	 // "86.sse42.pcmpistria128"
          case 'c':	 // 1 string to match.
            if (memcmp(NameR.data()+19, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpistric128;	 // "86.sse42.pcmpistric128"
          case 'o':	 // 1 string to match.
            if (memcmp(NameR.data()+19, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpistrio128;	 // "86.sse42.pcmpistrio128"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+19, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpistris128;	 // "86.sse42.pcmpistris128"
          case 'z':	 // 1 string to match.
            if (memcmp(NameR.data()+19, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpistriz128;	 // "86.sse42.pcmpistriz128"
          }
          break;
        }
        break;
      }
      break;
    case 23:	 // 25 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'a':	 // 16 strings to match.
        if (memcmp(NameR.data()+4, "vx", 2))
          break;
        switch (NameR[6]) {
        default: break;
        case '.':	 // 2 strings to match.
          if (memcmp(NameR.data()+7, "maskstore.p", 11))
            break;
          switch (NameR[18]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+19, ".256", 4))
              break;
            return Intrinsic::x86_avx_maskstore_pd_256;	 // "86.avx.maskstore.pd.256"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+19, ".256", 4))
              break;
            return Intrinsic::x86_avx_maskstore_ps_256;	 // "86.avx.maskstore.ps.256"
          }
          break;
        case '2':	 // 14 strings to match.
          if (NameR[7] != '.')
            break;
          switch (NameR[8]) {
          default: break;
          case 'g':	 // 4 strings to match.
            if (memcmp(NameR.data()+9, "ather.", 6))
              break;
            switch (NameR[15]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (memcmp(NameR.data()+16, ".p", 2))
                break;
              switch (NameR[18]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+19, ".256", 4))
                  break;
                return Intrinsic::x86_avx2_gather_d_pd_256;	 // "86.avx2.gather.d.pd.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+19, ".256", 4))
                  break;
                return Intrinsic::x86_avx2_gather_d_ps_256;	 // "86.avx2.gather.d.ps.256"
              }
              break;
            case 'q':	 // 2 strings to match.
              if (memcmp(NameR.data()+16, ".p", 2))
                break;
              switch (NameR[18]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+19, ".256", 4))
                  break;
                return Intrinsic::x86_avx2_gather_q_pd_256;	 // "86.avx2.gather.q.pd.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+19, ".256", 4))
                  break;
                return Intrinsic::x86_avx2_gather_q_ps_256;	 // "86.avx2.gather.q.ps.256"
              }
              break;
            }
            break;
          case 'm':	 // 2 strings to match.
            if (memcmp(NameR.data()+9, "askstore.", 9))
              break;
            switch (NameR[18]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+19, ".256", 4))
                break;
              return Intrinsic::x86_avx2_maskstore_d_256;	 // "86.avx2.maskstore.d.256"
            case 'q':	 // 1 string to match.
              if (memcmp(NameR.data()+19, ".256", 4))
                break;
              return Intrinsic::x86_avx2_maskstore_q_256;	 // "86.avx2.maskstore.q.256"
            }
            break;
          case 'p':	 // 8 strings to match.
            if (memcmp(NameR.data()+9, "broadcast", 9))
              break;
            switch (NameR[18]) {
            default: break;
            case 'b':	 // 2 strings to match.
              if (NameR[19] != '.')
                break;
              switch (NameR[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+21, "28", 2))
                  break;
                return Intrinsic::x86_avx2_pbroadcastb_128;	 // "86.avx2.pbroadcastb.128"
              case '2':	 // 1 string to match.
                if (memcmp(NameR.data()+21, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pbroadcastb_256;	 // "86.avx2.pbroadcastb.256"
              }
              break;
            case 'd':	 // 2 strings to match.
              if (NameR[19] != '.')
                break;
              switch (NameR[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+21, "28", 2))
                  break;
                return Intrinsic::x86_avx2_pbroadcastd_128;	 // "86.avx2.pbroadcastd.128"
              case '2':	 // 1 string to match.
                if (memcmp(NameR.data()+21, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pbroadcastd_256;	 // "86.avx2.pbroadcastd.256"
              }
              break;
            case 'q':	 // 2 strings to match.
              if (NameR[19] != '.')
                break;
              switch (NameR[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+21, "28", 2))
                  break;
                return Intrinsic::x86_avx2_pbroadcastq_128;	 // "86.avx2.pbroadcastq.128"
              case '2':	 // 1 string to match.
                if (memcmp(NameR.data()+21, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pbroadcastq_256;	 // "86.avx2.pbroadcastq.256"
              }
              break;
            case 'w':	 // 2 strings to match.
              if (NameR[19] != '.')
                break;
              switch (NameR[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(NameR.data()+21, "28", 2))
                  break;
                return Intrinsic::x86_avx2_pbroadcastw_128;	 // "86.avx2.pbroadcastw.128"
              case '2':	 // 1 string to match.
                if (memcmp(NameR.data()+21, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pbroadcastw_256;	 // "86.avx2.pbroadcastw.256"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'f':	 // 8 strings to match.
        if (memcmp(NameR.data()+4, "ma.vfm", 6))
          break;
        switch (NameR[10]) {
        default: break;
        case 'a':	 // 4 strings to match.
          if (memcmp(NameR.data()+11, "ddsub.p", 7))
            break;
          switch (NameR[18]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (NameR[19] != '.')
              break;
            switch (NameR[20]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "56", 2))
                break;
              return Intrinsic::x86_fma_vfmaddsub_pd_256;	 // "86.fma.vfmaddsub.pd.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "12", 2))
                break;
              return Intrinsic::x86_fma_vfmaddsub_pd_512;	 // "86.fma.vfmaddsub.pd.512"
            }
            break;
          case 's':	 // 2 strings to match.
            if (NameR[19] != '.')
              break;
            switch (NameR[20]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "56", 2))
                break;
              return Intrinsic::x86_fma_vfmaddsub_ps_256;	 // "86.fma.vfmaddsub.ps.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "12", 2))
                break;
              return Intrinsic::x86_fma_vfmaddsub_ps_512;	 // "86.fma.vfmaddsub.ps.512"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(NameR.data()+11, "ubadd.p", 7))
            break;
          switch (NameR[18]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (NameR[19] != '.')
              break;
            switch (NameR[20]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "56", 2))
                break;
              return Intrinsic::x86_fma_vfmsubadd_pd_256;	 // "86.fma.vfmsubadd.pd.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "12", 2))
                break;
              return Intrinsic::x86_fma_vfmsubadd_pd_512;	 // "86.fma.vfmsubadd.pd.512"
            }
            break;
          case 's':	 // 2 strings to match.
            if (NameR[19] != '.')
              break;
            switch (NameR[20]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "56", 2))
                break;
              return Intrinsic::x86_fma_vfmsubadd_ps_256;	 // "86.fma.vfmsubadd.ps.256"
            case '5':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "12", 2))
                break;
              return Intrinsic::x86_fma_vfmsubadd_ps_512;	 // "86.fma.vfmsubadd.ps.512"
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "sse3.pmul.hr.sw.128", 19))
          break;
        return Intrinsic::x86_ssse3_pmul_hr_sw_128;	 // "86.ssse3.pmul.hr.sw.128"
      }
      break;
    case 24:	 // 18 strings to match.
      if (memcmp(NameR.data()+0, "86.", 3))
        break;
      switch (NameR[3]) {
      default: break;
      case 'a':	 // 17 strings to match.
        switch (NameR[4]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(NameR.data()+5, "sni.aeskeygenassist", 19))
            break;
          return Intrinsic::x86_aesni_aeskeygenassist;	 // "86.aesni.aeskeygenassist"
        case 'v':	 // 16 strings to match.
          if (NameR[5] != 'x')
            break;
          switch (NameR[6]) {
          default: break;
          case '.':	 // 5 strings to match.
            if (memcmp(NameR.data()+7, "vperm", 5))
              break;
            switch (NameR[12]) {
            default: break;
            case '2':	 // 3 strings to match.
              if (memcmp(NameR.data()+13, "f128.", 5))
                break;
              switch (NameR[18]) {
              default: break;
              case 'p':	 // 2 strings to match.
                switch (NameR[19]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+20, ".256", 4))
                    break;
                  return Intrinsic::x86_avx_vperm2f128_pd_256;	 // "86.avx.vperm2f128.pd.256"
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+20, ".256", 4))
                    break;
                  return Intrinsic::x86_avx_vperm2f128_ps_256;	 // "86.avx.vperm2f128.ps.256"
                }
                break;
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+19, "i.256", 5))
                  break;
                return Intrinsic::x86_avx_vperm2f128_si_256;	 // "86.avx.vperm2f128.si.256"
              }
              break;
            case 'i':	 // 2 strings to match.
              if (memcmp(NameR.data()+13, "lvar.p", 6))
                break;
              switch (NameR[19]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+20, ".256", 4))
                  break;
                return Intrinsic::x86_avx_vpermilvar_pd_256;	 // "86.avx.vpermilvar.pd.256"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+20, ".256", 4))
                  break;
                return Intrinsic::x86_avx_vpermilvar_ps_256;	 // "86.avx.vpermilvar.ps.256"
              }
              break;
            }
            break;
          case '2':	 // 1 string to match.
            if (memcmp(NameR.data()+7, ".vbroadcast.ss.ps", 17))
              break;
            return Intrinsic::x86_avx2_vbroadcast_ss_ps;	 // "86.avx2.vbroadcast.ss.ps"
          case '5':	 // 10 strings to match.
            if (memcmp(NameR.data()+7, "12.", 3))
              break;
            switch (NameR[10]) {
            default: break;
            case 'g':	 // 8 strings to match.
              if (memcmp(NameR.data()+11, "ather.", 6))
                break;
              switch (NameR[17]) {
              default: break;
              case 'd':	 // 4 strings to match.
                if (NameR[18] != 'p')
                  break;
                switch (NameR[19]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+20, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_gather_dpd_512;	 // "86.avx512.gather.dpd.512"
                case 'i':	 // 1 string to match.
                  if (memcmp(NameR.data()+20, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_gather_dpi_512;	 // "86.avx512.gather.dpi.512"
                case 'q':	 // 1 string to match.
                  if (memcmp(NameR.data()+20, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_gather_dpq_512;	 // "86.avx512.gather.dpq.512"
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+20, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_gather_dps_512;	 // "86.avx512.gather.dps.512"
                }
                break;
              case 'q':	 // 4 strings to match.
                if (NameR[18] != 'p')
                  break;
                switch (NameR[19]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+20, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_gather_qpd_512;	 // "86.avx512.gather.qpd.512"
                case 'i':	 // 1 string to match.
                  if (memcmp(NameR.data()+20, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_gather_qpi_512;	 // "86.avx512.gather.qpi.512"
                case 'q':	 // 1 string to match.
                  if (memcmp(NameR.data()+20, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_gather_qpq_512;	 // "86.avx512.gather.qpq.512"
                case 's':	 // 1 string to match.
                  if (memcmp(NameR.data()+20, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_gather_qps_512;	 // "86.avx512.gather.qps.512"
                }
                break;
              }
              break;
            case 'r':	 // 2 strings to match.
              if (memcmp(NameR.data()+11, "sqrt14.p", 8))
                break;
              switch (NameR[19]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+20, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_rsqrt14_pd_512;	 // "86.avx512.rsqrt14.pd.512"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+20, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_rsqrt14_ps_512;	 // "86.avx512.rsqrt14.ps.512"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 1 string to match.
        if (memcmp(NameR.data()+4, "sse3.pmadd.ub.sw.128", 20))
          break;
        return Intrinsic::x86_ssse3_pmadd_ub_sw_128;	 // "86.ssse3.pmadd.ub.sw.128"
      }
      break;
    case 25:	 // 23 strings to match.
      if (memcmp(NameR.data()+0, "86.avx", 6))
        break;
      switch (NameR[6]) {
      default: break;
      case '.':	 // 3 strings to match.
        if (memcmp(NameR.data()+7, "vinsertf128.", 12))
          break;
        switch (NameR[19]) {
        default: break;
        case 'p':	 // 2 strings to match.
          switch (NameR[20]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+21, ".256", 4))
              break;
            return Intrinsic::x86_avx_vinsertf128_pd_256;	 // "86.avx.vinsertf128.pd.256"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+21, ".256", 4))
              break;
            return Intrinsic::x86_avx_vinsertf128_ps_256;	 // "86.avx.vinsertf128.ps.256"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+20, "i.256", 5))
            break;
          return Intrinsic::x86_avx_vinsertf128_si_256;	 // "86.avx.vinsertf128.si.256"
        }
        break;
      case '5':	 // 20 strings to match.
        if (memcmp(NameR.data()+7, "12.", 3))
          break;
        switch (NameR[10]) {
        default: break;
        case 'm':	 // 10 strings to match.
          if (memcmp(NameR.data()+11, "ask.", 4))
            break;
          switch (NameR[15]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+16, "mp.p", 4))
              break;
            switch (NameR[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+21, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_cmp_pd_512;	 // "86.avx512.mask.cmp.pd.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+21, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_cmp_ps_512;	 // "86.avx512.mask.cmp.ps.512"
            }
            break;
          case 'm':	 // 4 strings to match.
            switch (NameR[16]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(NameR.data()+17, "x.p", 3))
                break;
              switch (NameR[20]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+21, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_max_pd_512;	 // "86.avx512.mask.max.pd.512"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+21, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_max_ps_512;	 // "86.avx512.mask.max.ps.512"
              }
              break;
            case 'i':	 // 2 strings to match.
              if (memcmp(NameR.data()+17, "n.p", 3))
                break;
              switch (NameR[20]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+21, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_min_pd_512;	 // "86.avx512.mask.min.pd.512"
              case 's':	 // 1 string to match.
                if (memcmp(NameR.data()+21, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_min_ps_512;	 // "86.avx512.mask.min.ps.512"
              }
              break;
            }
            break;
          case 'p':	 // 4 strings to match.
            if (NameR[16] != 'a')
              break;
            switch (NameR[17]) {
            default: break;
            case 'b':	 // 2 strings to match.
              if (memcmp(NameR.data()+18, "s.", 2))
                break;
              switch (NameR[20]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+21, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_pabs_d_512;	 // "86.avx512.mask.pabs.d.512"
              case 'q':	 // 1 string to match.
                if (memcmp(NameR.data()+21, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_pabs_q_512;	 // "86.avx512.mask.pabs.q.512"
              }
              break;
            case 'n':	 // 2 strings to match.
              if (memcmp(NameR.data()+18, "d.", 2))
                break;
              switch (NameR[20]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+21, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_pand_d_512;	 // "86.avx512.mask.pand.d.512"
              case 'q':	 // 1 string to match.
                if (memcmp(NameR.data()+21, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_pand_q_512;	 // "86.avx512.mask.pand.q.512"
              }
              break;
            }
            break;
          }
          break;
        case 'p':	 // 2 strings to match.
          if (memcmp(NameR.data()+11, "broadcast", 9))
            break;
          switch (NameR[20]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+21, ".512", 4))
              break;
            return Intrinsic::x86_avx512_pbroadcastd_512;	 // "86.avx512.pbroadcastd.512"
          case 'q':	 // 1 string to match.
            if (memcmp(NameR.data()+21, ".512", 4))
              break;
            return Intrinsic::x86_avx512_pbroadcastq_512;	 // "86.avx512.pbroadcastq.512"
          }
          break;
        case 's':	 // 8 strings to match.
          if (memcmp(NameR.data()+11, "catter.", 7))
            break;
          switch (NameR[18]) {
          default: break;
          case 'd':	 // 4 strings to match.
            if (NameR[19] != 'p')
              break;
            switch (NameR[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+21, ".512", 4))
                break;
              return Intrinsic::x86_avx512_scatter_dpd_512;	 // "86.avx512.scatter.dpd.512"
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+21, ".512", 4))
                break;
              return Intrinsic::x86_avx512_scatter_dpi_512;	 // "86.avx512.scatter.dpi.512"
            case 'q':	 // 1 string to match.
              if (memcmp(NameR.data()+21, ".512", 4))
                break;
              return Intrinsic::x86_avx512_scatter_dpq_512;	 // "86.avx512.scatter.dpq.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+21, ".512", 4))
                break;
              return Intrinsic::x86_avx512_scatter_dps_512;	 // "86.avx512.scatter.dps.512"
            }
            break;
          case 'q':	 // 4 strings to match.
            if (NameR[19] != 'p')
              break;
            switch (NameR[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+21, ".512", 4))
                break;
              return Intrinsic::x86_avx512_scatter_qpd_512;	 // "86.avx512.scatter.qpd.512"
            case 'i':	 // 1 string to match.
              if (memcmp(NameR.data()+21, ".512", 4))
                break;
              return Intrinsic::x86_avx512_scatter_qpi_512;	 // "86.avx512.scatter.qpi.512"
            case 'q':	 // 1 string to match.
              if (memcmp(NameR.data()+21, ".512", 4))
                break;
              return Intrinsic::x86_avx512_scatter_qpq_512;	 // "86.avx512.scatter.qpq.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+21, ".512", 4))
                break;
              return Intrinsic::x86_avx512_scatter_qps_512;	 // "86.avx512.scatter.qps.512"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 26:	 // 22 strings to match.
      if (memcmp(NameR.data()+0, "86.avx", 6))
        break;
      switch (NameR[6]) {
      default: break;
      case '.':	 // 3 strings to match.
        if (memcmp(NameR.data()+7, "vextractf128.", 13))
          break;
        switch (NameR[20]) {
        default: break;
        case 'p':	 // 2 strings to match.
          switch (NameR[21]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+22, ".256", 4))
              break;
            return Intrinsic::x86_avx_vextractf128_pd_256;	 // "86.avx.vextractf128.pd.256"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+22, ".256", 4))
              break;
            return Intrinsic::x86_avx_vextractf128_ps_256;	 // "86.avx.vextractf128.ps.256"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+21, "i.256", 5))
            break;
          return Intrinsic::x86_avx_vextractf128_si_256;	 // "86.avx.vextractf128.si.256"
        }
        break;
      case '5':	 // 19 strings to match.
        if (memcmp(NameR.data()+7, "12.", 3))
          break;
        switch (NameR[10]) {
        default: break;
        case 'g':	 // 4 strings to match.
          if (memcmp(NameR.data()+11, "atherpf.", 8))
            break;
          switch (NameR[19]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (NameR[20] != 'p')
              break;
            switch (NameR[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+22, ".512", 4))
                break;
              return Intrinsic::x86_avx512_gatherpf_dpd_512;	 // "86.avx512.gatherpf.dpd.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+22, ".512", 4))
                break;
              return Intrinsic::x86_avx512_gatherpf_dps_512;	 // "86.avx512.gatherpf.dps.512"
            }
            break;
          case 'q':	 // 2 strings to match.
            if (NameR[20] != 'p')
              break;
            switch (NameR[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+22, ".512", 4))
                break;
              return Intrinsic::x86_avx512_gatherpf_qpd_512;	 // "86.avx512.gatherpf.qpd.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+22, ".512", 4))
                break;
              return Intrinsic::x86_avx512_gatherpf_qps_512;	 // "86.avx512.gatherpf.qps.512"
            }
            break;
          }
          break;
        case 'm':	 // 15 strings to match.
          if (memcmp(NameR.data()+11, "ask.", 4))
            break;
          switch (NameR[15]) {
          default: break;
          case 'b':	 // 2 strings to match.
            if (memcmp(NameR.data()+16, "lend.", 5))
              break;
            switch (NameR[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+22, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_blend_d_512;	 // "86.avx512.mask.blend.d.512"
            case 'q':	 // 1 string to match.
              if (memcmp(NameR.data()+22, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_blend_q_512;	 // "86.avx512.mask.blend.q.512"
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (NameR[16]) {
            default: break;
            case 'o':	 // 2 strings to match.
              if (memcmp(NameR.data()+17, "adu.", 4))
                break;
              switch (NameR[21]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+22, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_loadu_d_512;	 // "86.avx512.mask.loadu.d.512"
              case 'q':	 // 1 string to match.
                if (memcmp(NameR.data()+22, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_loadu_q_512;	 // "86.avx512.mask.loadu.q.512"
              }
              break;
            case 'z':	 // 2 strings to match.
              if (memcmp(NameR.data()+17, "cnt.", 4))
                break;
              switch (NameR[21]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+22, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_lzcnt_d_512;	 // "86.avx512.mask.lzcnt.d.512"
              case 'q':	 // 1 string to match.
                if (memcmp(NameR.data()+22, ".512", 4))
                  break;
                return Intrinsic::x86_avx512_mask_lzcnt_q_512;	 // "86.avx512.mask.lzcnt.q.512"
              }
              break;
            }
            break;
          case 'p':	 // 9 strings to match.
            if (NameR[16] != 'm')
              break;
            switch (NameR[17]) {
            default: break;
            case 'a':	 // 4 strings to match.
              if (NameR[18] != 'x')
                break;
              switch (NameR[19]) {
              default: break;
              case 's':	 // 2 strings to match.
                if (NameR[20] != '.')
                  break;
                switch (NameR[21]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+22, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_mask_pmaxs_d_512;	 // "86.avx512.mask.pmaxs.d.512"
                case 'q':	 // 1 string to match.
                  if (memcmp(NameR.data()+22, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_mask_pmaxs_q_512;	 // "86.avx512.mask.pmaxs.q.512"
                }
                break;
              case 'u':	 // 2 strings to match.
                if (NameR[20] != '.')
                  break;
                switch (NameR[21]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+22, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_mask_pmaxu_d_512;	 // "86.avx512.mask.pmaxu.d.512"
                case 'q':	 // 1 string to match.
                  if (memcmp(NameR.data()+22, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_mask_pmaxu_q_512;	 // "86.avx512.mask.pmaxu.q.512"
                }
                break;
              }
              break;
            case 'i':	 // 4 strings to match.
              if (NameR[18] != 'n')
                break;
              switch (NameR[19]) {
              default: break;
              case 's':	 // 2 strings to match.
                if (NameR[20] != '.')
                  break;
                switch (NameR[21]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+22, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_mask_pmins_d_512;	 // "86.avx512.mask.pmins.d.512"
                case 'q':	 // 1 string to match.
                  if (memcmp(NameR.data()+22, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_mask_pmins_q_512;	 // "86.avx512.mask.pmins.q.512"
                }
                break;
              case 'u':	 // 2 strings to match.
                if (NameR[20] != '.')
                  break;
                switch (NameR[21]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (memcmp(NameR.data()+22, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_mask_pminu_d_512;	 // "86.avx512.mask.pminu.d.512"
                case 'q':	 // 1 string to match.
                  if (memcmp(NameR.data()+22, ".512", 4))
                    break;
                  return Intrinsic::x86_avx512_mask_pminu_q_512;	 // "86.avx512.mask.pminu.q.512"
                }
                break;
              }
              break;
            case 'u':	 // 1 string to match.
              if (memcmp(NameR.data()+18, "l.dq.512", 8))
                break;
              return Intrinsic::x86_avx512_mask_pmul_dq_512;	 // "86.avx512.mask.pmul.dq.512"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 27:	 // 24 strings to match.
      if (memcmp(NameR.data()+0, "86.avx512.", 10))
        break;
      switch (NameR[10]) {
      default: break;
      case 'm':	 // 18 strings to match.
        if (memcmp(NameR.data()+11, "ask.", 4))
          break;
        switch (NameR[15]) {
        default: break;
        case 'b':	 // 2 strings to match.
          if (memcmp(NameR.data()+16, "lend.p", 6))
            break;
          switch (NameR[22]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_blend_pd_512;	 // "86.avx512.mask.blend.pd.512"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_blend_ps_512;	 // "86.avx512.mask.blend.ps.512"
          }
          break;
        case 'c':	 // 5 strings to match.
          if (memcmp(NameR.data()+16, "vt", 2))
            break;
          switch (NameR[18]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (memcmp(NameR.data()+19, "q2p", 3))
              break;
            switch (NameR[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+23, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_cvtdq2pd_512;	 // "86.avx512.mask.cvtdq2pd.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+23, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_cvtdq2ps_512;	 // "86.avx512.mask.cvtdq2ps.512"
            }
            break;
          case 'p':	 // 3 strings to match.
            switch (NameR[19]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (NameR[20] != '2')
                break;
              switch (NameR[21]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "q.512", 5))
                  break;
                return Intrinsic::x86_avx512_mask_cvtpd2dq_512;	 // "86.avx512.mask.cvtpd2dq.512"
              case 'p':	 // 1 string to match.
                if (memcmp(NameR.data()+22, "s.512", 5))
                  break;
                return Intrinsic::x86_avx512_mask_cvtpd2ps_512;	 // "86.avx512.mask.cvtpd2ps.512"
              }
              break;
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "2dq.512", 7))
                break;
              return Intrinsic::x86_avx512_mask_cvtps2dq_512;	 // "86.avx512.mask.cvtps2dq.512"
            }
            break;
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(NameR.data()+16, "oadu.p", 6))
            break;
          switch (NameR[22]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_loadu_pd_512;	 // "86.avx512.mask.loadu.pd.512"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_loadu_ps_512;	 // "86.avx512.mask.loadu.ps.512"
          }
          break;
        case 'p':	 // 5 strings to match.
          switch (NameR[16]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+17, "mpeq.", 5))
              break;
            switch (NameR[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+23, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_pcmpeq_d_512;	 // "86.avx512.mask.pcmpeq.d.512"
            case 'q':	 // 1 string to match.
              if (memcmp(NameR.data()+23, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_pcmpeq_q_512;	 // "86.avx512.mask.pcmpeq.q.512"
            }
            break;
          case 'm':	 // 1 string to match.
            if (memcmp(NameR.data()+17, "ulu.dq.512", 10))
              break;
            return Intrinsic::x86_avx512_mask_pmulu_dq_512;	 // "86.avx512.mask.pmulu.dq.512"
          case 't':	 // 2 strings to match.
            if (memcmp(NameR.data()+17, "estm.", 5))
              break;
            switch (NameR[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+23, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_ptestm_d_512;	 // "86.avx512.mask.ptestm.d.512"
            case 'q':	 // 1 string to match.
              if (memcmp(NameR.data()+23, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_ptestm_q_512;	 // "86.avx512.mask.ptestm.q.512"
            }
            break;
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+16, "toreu.", 6))
            break;
          switch (NameR[22]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_storeu_d_512;	 // "86.avx512.mask.storeu.d.512"
          case 'q':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_storeu_q_512;	 // "86.avx512.mask.storeu.q.512"
          }
          break;
        case 'v':	 // 2 strings to match.
          if (memcmp(NameR.data()+16, "permt.", 6))
            break;
          switch (NameR[22]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_vpermt_d_512;	 // "86.avx512.mask.vpermt.d.512"
          case 'q':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_vpermt_q_512;	 // "86.avx512.mask.vpermt.q.512"
          }
          break;
        }
        break;
      case 's':	 // 4 strings to match.
        if (memcmp(NameR.data()+11, "catterpf.", 9))
          break;
        switch (NameR[20]) {
        default: break;
        case 'd':	 // 2 strings to match.
          if (NameR[21] != 'p')
            break;
          switch (NameR[22]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_scatterpf_dpd_512;	 // "86.avx512.scatterpf.dpd.512"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_scatterpf_dps_512;	 // "86.avx512.scatterpf.dps.512"
          }
          break;
        case 'q':	 // 2 strings to match.
          if (NameR[21] != 'p')
            break;
          switch (NameR[22]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_scatterpf_qpd_512;	 // "86.avx512.scatterpf.qpd.512"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+23, ".512", 4))
              break;
            return Intrinsic::x86_avx512_scatterpf_qps_512;	 // "86.avx512.scatterpf.qps.512"
          }
          break;
        }
        break;
      case 'v':	 // 2 strings to match.
        if (memcmp(NameR.data()+11, "broadcast.s", 11))
          break;
        switch (NameR[22]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+23, ".512", 4))
            break;
          return Intrinsic::x86_avx512_vbroadcast_sd_512;	 // "86.avx512.vbroadcast.sd.512"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+23, ".512", 4))
            break;
          return Intrinsic::x86_avx512_vbroadcast_ss_512;	 // "86.avx512.vbroadcast.ss.512"
        }
        break;
      }
      break;
    case 28:	 // 16 strings to match.
      if (memcmp(NameR.data()+0, "86.avx", 6))
        break;
      switch (NameR[6]) {
      default: break;
      case '.':	 // 2 strings to match.
        if (memcmp(NameR.data()+7, "vbroadcastf128.p", 16))
          break;
        switch (NameR[23]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+24, ".256", 4))
            break;
          return Intrinsic::x86_avx_vbroadcastf128_pd_256;	 // "86.avx.vbroadcastf128.pd.256"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+24, ".256", 4))
            break;
          return Intrinsic::x86_avx_vbroadcastf128_ps_256;	 // "86.avx.vbroadcastf128.ps.256"
        }
        break;
      case '2':	 // 2 strings to match.
        if (memcmp(NameR.data()+7, ".vbroadcast.s", 13))
          break;
        switch (NameR[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+21, ".pd.256", 7))
            break;
          return Intrinsic::x86_avx2_vbroadcast_sd_pd_256;	 // "86.avx2.vbroadcast.sd.pd.256"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+21, ".ps.256", 7))
            break;
          return Intrinsic::x86_avx2_vbroadcast_ss_ps_256;	 // "86.avx2.vbroadcast.ss.ps.256"
        }
        break;
      case '5':	 // 12 strings to match.
        if (memcmp(NameR.data()+7, "12.mask.", 8))
          break;
        switch (NameR[15]) {
        default: break;
        case 'c':	 // 6 strings to match.
          if (memcmp(NameR.data()+16, "vt", 2))
            break;
          switch (NameR[18]) {
          default: break;
          case 'p':	 // 2 strings to match.
            switch (NameR[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "2udq.512", 8))
                break;
              return Intrinsic::x86_avx512_mask_cvtpd2udq_512;	 // "86.avx512.mask.cvtpd2udq.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+20, "2udq.512", 8))
                break;
              return Intrinsic::x86_avx512_mask_cvtps2udq_512;	 // "86.avx512.mask.cvtps2udq.512"
            }
            break;
          case 't':	 // 2 strings to match.
            if (NameR[19] != 'p')
              break;
            switch (NameR[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "2dq.512", 7))
                break;
              return Intrinsic::x86_avx512_mask_cvttpd2dq_512;	 // "86.avx512.mask.cvttpd2dq.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "2dq.512", 7))
                break;
              return Intrinsic::x86_avx512_mask_cvttps2dq_512;	 // "86.avx512.mask.cvttps2dq.512"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(NameR.data()+19, "dq2p", 4))
              break;
            switch (NameR[23]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+24, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_cvtudq2pd_512;	 // "86.avx512.mask.cvtudq2pd.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+24, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_cvtudq2ps_512;	 // "86.avx512.mask.cvtudq2ps.512"
            }
            break;
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(NameR.data()+16, "toreu.p", 7))
            break;
          switch (NameR[23]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+24, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_storeu_pd_512;	 // "86.avx512.mask.storeu.pd.512"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+24, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_storeu_ps_512;	 // "86.avx512.mask.storeu.ps.512"
          }
          break;
        case 'v':	 // 4 strings to match.
          switch (NameR[16]) {
          default: break;
          case 'c':	 // 2 strings to match.
            if (memcmp(NameR.data()+17, "vtp", 3))
              break;
            switch (NameR[20]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "2ps.512", 7))
                break;
              return Intrinsic::x86_avx512_mask_vcvtph2ps_512;	 // "86.avx512.mask.vcvtph2ps.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+21, "2ph.512", 7))
                break;
              return Intrinsic::x86_avx512_mask_vcvtps2ph_512;	 // "86.avx512.mask.vcvtps2ph.512"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (memcmp(NameR.data()+17, "ermt.p", 6))
              break;
            switch (NameR[23]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(NameR.data()+24, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_vpermt_pd_512;	 // "86.avx512.mask.vpermt.pd.512"
            case 's':	 // 1 string to match.
              if (memcmp(NameR.data()+24, ".512", 4))
                break;
              return Intrinsic::x86_avx512_mask_vpermt_ps_512;	 // "86.avx512.mask.vpermt.ps.512"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 29:	 // 6 strings to match.
      if (memcmp(NameR.data()+0, "86.avx512.", 10))
        break;
      switch (NameR[10]) {
      default: break;
      case 'm':	 // 4 strings to match.
        if (memcmp(NameR.data()+11, "ask.c", 5))
          break;
        switch (NameR[16]) {
        default: break;
        case 'o':	 // 2 strings to match.
          if (memcmp(NameR.data()+17, "nflict.", 7))
            break;
          switch (NameR[24]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+25, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_conflict_d_512;	 // "86.avx512.mask.conflict.d.512"
          case 'q':	 // 1 string to match.
            if (memcmp(NameR.data()+25, ".512", 4))
              break;
            return Intrinsic::x86_avx512_mask_conflict_q_512;	 // "86.avx512.mask.conflict.q.512"
          }
          break;
        case 'v':	 // 2 strings to match.
          if (memcmp(NameR.data()+17, "ttp", 3))
            break;
          switch (NameR[20]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(NameR.data()+21, "2udq.512", 8))
              break;
            return Intrinsic::x86_avx512_mask_cvttpd2udq_512;	 // "86.avx512.mask.cvttpd2udq.512"
          case 's':	 // 1 string to match.
            if (memcmp(NameR.data()+21, "2udq.512", 8))
              break;
            return Intrinsic::x86_avx512_mask_cvttps2udq_512;	 // "86.avx512.mask.cvttps2udq.512"
          }
          break;
        }
        break;
      case 'p':	 // 2 strings to match.
        if (memcmp(NameR.data()+11, "broadcast", 9))
          break;
        switch (NameR[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+21, ".i32.512", 8))
            break;
          return Intrinsic::x86_avx512_pbroadcastd_i32_512;	 // "86.avx512.pbroadcastd.i32.512"
        case 'q':	 // 1 string to match.
          if (memcmp(NameR.data()+21, ".i64.512", 8))
            break;
          return Intrinsic::x86_avx512_pbroadcastq_i64_512;	 // "86.avx512.pbroadcastq.i64.512"
        }
        break;
      }
      break;
    case 30:	 // 4 strings to match.
      if (memcmp(NameR.data()+0, "86.avx512.", 10))
        break;
      switch (NameR[10]) {
      default: break;
      case 'm':	 // 2 strings to match.
        if (memcmp(NameR.data()+11, "ask.rndscale.p", 14))
          break;
        switch (NameR[25]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+26, ".512", 4))
            break;
          return Intrinsic::x86_avx512_mask_rndscale_pd_512;	 // "86.avx512.mask.rndscale.pd.512"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+26, ".512", 4))
            break;
          return Intrinsic::x86_avx512_mask_rndscale_ps_512;	 // "86.avx512.mask.rndscale.ps.512"
        }
        break;
      case 'v':	 // 2 strings to match.
        if (memcmp(NameR.data()+11, "broadcast.s", 11))
          break;
        switch (NameR[22]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(NameR.data()+23, ".pd.512", 7))
            break;
          return Intrinsic::x86_avx512_vbroadcast_sd_pd_512;	 // "86.avx512.vbroadcast.sd.pd.512"
        case 's':	 // 1 string to match.
          if (memcmp(NameR.data()+23, ".ps.512", 7))
            break;
          return Intrinsic::x86_avx512_vbroadcast_ss_ps_512;	 // "86.avx512.vbroadcast.ss.ps.512"
        }
        break;
      }
      break;
    case 35:	 // 3 strings to match.
      if (memcmp(NameR.data()+0, "86.avx512.mask.pbroadcast.", 26))
        break;
      switch (NameR[26]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(NameR.data()+27, ".gpr.512", 8))
          break;
        return Intrinsic::x86_avx512_mask_pbroadcast_d_gpr_512;	 // "86.avx512.mask.pbroadcast.d.gpr.512"
      case 'q':	 // 2 strings to match.
        if (NameR[27] != '.')
          break;
        switch (NameR[28]) {
        default: break;
        case 'g':	 // 1 string to match.
          if (memcmp(NameR.data()+29, "pr.512", 6))
            break;
          return Intrinsic::x86_avx512_mask_pbroadcast_q_gpr_512;	 // "86.avx512.mask.pbroadcast.q.gpr.512"
        case 'm':	 // 1 string to match.
          if (memcmp(NameR.data()+29, "em.512", 6))
            break;
          return Intrinsic::x86_avx512_mask_pbroadcast_q_mem_512;	 // "86.avx512.mask.pbroadcast.q.mem.512"
        }
        break;
      }
      break;
    }
    break;  // end of 'x' case.
  }
#endif

// Global intrinsic function declaration type table.
#ifdef GET_INTRINSIC_GENERATOR_GLOBAL
static const unsigned IIT_Table[] = {
  0x1F1F1F1F, 0x1F1F1F1F, (1U<<31) | 19, 0x1F1F, 0x1F1F, 0x1F1F, 0x41F1F, 
  0x0, 0x444, 0x444, 0x444, 0x444, 0x544, 0x444, 0x444, 
  0x544, 0x2C2C2C, 0x2C2C2C, 0x2C2C, 0x2C2C, 0x4A44A4A, 0x44, 0x4A44A4A, 
  0x4A44A4A, 0x4A4A4A4A, 0x4A4A4A, 0x4A4A4A4A, 0x4A4A4A4A, 0x4A4A4A, 0x4A4A4A4A, 0x40, 
  0x40, 0x40, 0x40, (1U<<31) | 332, 0x3F5, (1U<<31) | 332, 0x3F5, 0xF0F, 
  (1U<<31) | 400, 0x2F2F2F, 0x2F2F, 0x2F2F2F, 0x5F5F0F, 0x5F5F0F, 0x6F1F, 0x5F0F, 
  0x5F0F, 0x5F0F, 0x5F0F, 0x5F0F, 0x5F0F, 0x5F0F, 0x5F0F, 0x6F2F, 
  0x5F0F, 0x5F0F, 0x2F2F2F, 0x1F1F1F, 0x2F2F2F, 0x6F1F, 0x2F2F2F, 0x6F1F, 
  0x2F2F2F, 0x1F1F1F, 0x2F2F2F, 0x6F1F, 0x2F2F2F, 0x6F1F, 0x1F1F1F, 0x1F1F, 
  0x1F1F1F, 0x1F1F, 0x1F1F, 0x1F1F, 0x1F1F1F, (1U<<31) | 1673, (1U<<31) | 1663, (1U<<31) | 1651, 
  (1U<<31) | 1673, (1U<<31) | 1743, (1U<<31) | 1673, (1U<<31) | 1663, (1U<<31) | 1726, (1U<<31) | 1663, (1U<<31) | 1651, (1U<<31) | 1705, 
  (1U<<31) | 1651, 0x2F2F2F, (1U<<31) | 412, 0x552C, (1U<<31) | 400, 0x2F2F, (1U<<31) | 454, (1U<<31) | 400, 
  0x2F2F2F, 0x6F2F, 0x6F0F, 0x6F0F, 0x4F0F, 0x4F0F, 0x4F0F, 0x2F2F2F, 
  (1U<<31) | 407, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x6F0F, 0x2F2F2F, 0x2F2F2F, 0x6F0F, 
  (1U<<31) | 412, 0xF0F, 0xF0F0F, 0xF0F0F, (1U<<31) | 412, 0x445, 0xF0F, 0xF0F0F, 
  0xF0F0F, (1U<<31) | 454, (1U<<31) | 454, 0xF0F0F, 0xF0F0F, (1U<<31) | 454, (1U<<31) | 454, 0xF0F0F, 
  (1U<<31) | 14, (1U<<31) | 14, 0x2F2F2F, 0xF0F0F, 0xF0F0F, (1U<<31) | 646, 0x7F2F2F0, (1U<<31) | 1629, 
  (1U<<31) | 1639, 0x7F2F2F0, 0x7F52F2F0, (1U<<31) | 1629, (1U<<31) | 1681, (1U<<31) | 1639, (1U<<31) | 1692, (1U<<31) | 400, 
  0xF0F0F, 0x2F2C2F, 0x2F2C2C2F, (1U<<31) | 368, (1U<<31) | 353, 0x2F2C2F2F, (1U<<31) | 379, (1U<<31) | 366, 
  (1U<<31) | 351, 0x2F2F2F, 0x6F2F, 0x6F0F, 0x6F0F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 
  0x2F2F2F, 0x6F0F, 0x2F2F2F, 0x2F2F2F, 0x6F0F, (1U<<31) | 412, 0xF0F0F, 0xF0F0F, 
  (1U<<31) | 454, 0xF0F0F, (1U<<31) | 454, 0xF0F0F, (1U<<31) | 14, 0x2F2F, 0x2F2F2F, 0xF0F0F, 
  0x2F2F, 0xF0F0F, (1U<<31) | 646, 0xF0F0F, 0x52F56F2F, 0x45F0F, 0x45F0F, 0x7A3A, 
  0x44F1F, 0x44F1F, 0x3A7A, 0x42F2F2F, 0x42F2F2F, 0xF0F, 0xF0F0F, 0x1F1F1F, 
  0x87, 0x2E554, 0x3F54, 0x2E554, 0x3F54, 0xF0F0F, 0x2E2E, (1U<<31) | 569, 
  0x4444440, 0x4444440, 0x0, 0x444, 0x444, 0x444, 0x444, 0x444, 
  0x444, 0x40, 0x40, 0x4, 0x40, 0x40, 0x3F4, (1U<<31) | 326, 
  0x3F4, (1U<<31) | 326, 0x4444440, 0x4444440, 0x444440, 0x444440, 0x444444, 0x444444, 
  0x2C2C2C, 0x2C2C2C, 0x2C2C, 0x2C2C, 0x4A44A4A, 0x44, 0x4A44A4A, 0x4A44A4A, 
  0x4A4A4A4A, 0x4A4A4A, 0x4A4A4A4A, 0x4A4A4A4A, 0x4A4A4A, 0x4A4A4A4A, 0x2F2F2F, 0x2F2F2F, 
  0x2F2F, 0x6F6F2F, 0x6F6F2F, 0x2F2F2F2F, 0x2F2F, 0x2F2F, 0x2F2F, 0x6F2F, 
  0x6F2F, 0x45F0F, 0x45F0F, 0x7A3A, 0x44F1F, 0x44F1F, 0x3A7A, 0x6F2F, 
  0x6F2F, 0x6F2F, 0x6F2F, 0x6F2F, 0x6F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 
  0x2F2F2F, 0x42E2F, (1U<<31) | 613, (1U<<31) | 709, (1U<<31) | 602, (1U<<31) | 735, (1U<<31) | 589, (1U<<31) | 767, 
  0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, (1U<<31) | 412, (1U<<31) | 412, 
  (1U<<31) | 412, 0x2F2F2F, 0x6F2F2F, 0x6F2F2F, 0x2F2F2F, 0x6F2F, 0x6F2F, 0x2F2F2F, 
  0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, (1U<<31) | 412, 
  (1U<<31) | 395, (1U<<31) | 395, (1U<<31) | 395, 0x2F2F, 0x2F2F2F, (1U<<31) | 400, (1U<<31) | 400, (1U<<31) | 400, 
  0x2F2F2F, 0x2F2F2F, (1U<<31) | 400, (1U<<31) | 400, (1U<<31) | 400, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 
  0x2F2F2F, 0x2F2F2F, (1U<<31) | 400, 0x2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F, 
  0x2F2F, 0x2F2F, 0x2F2F, 0x2F2F, 0x2F2F, (1U<<31) | 400, 0x2F2F2F, 0x2F2F2F, 
  0x2F2F, 0x2F2F2F, (1U<<31) | 400, 0x2F2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x42F2E0, 0x42F2F2E0, 
  (1U<<31) | 699, (1U<<31) | 622, (1U<<31) | 723, (1U<<31) | 633, (1U<<31) | 753, 0x2B2B2B, 0x2B2B2B2B, (1U<<31) | 315, 
  (1U<<31) | 313, 0x2B2B2B2B, (1U<<31) | 315, (1U<<31) | 313, (1U<<31) | 311, 0x444, 0x444, 0x44, 
  0x40, 0x444, 0x3F44, 0x2E444, 0x3F44, 0x2E444, 0x2E, 0x40, 
  0x444, 0x1F7, 0x1F7, 0xF0F, 0x1F1F, 0x2E2E0, 0x31F, 0x1F3, 
  0x445F1F, 0x444F1F, 0x444F1F, 0x445F0F, 0x444F0F, 0x444F0F, 0x445F0F, 0x444F0F, 
  0x444F0F, 0x1F1F1F, 0x1F1F, 0x10F0F, 0xF0F, 0x10F0F, 0x0, (1U<<31) | 1818, 
  (1U<<31) | 1813, 0x0, 0x0, 0x42E, 0x2E40, 0x2E50, 0x40, 0x2E0, 
  0x2E0, 0x2E, 0x2E4, 0x2E4, 0x0, 0x1F1F, 0x1F1F, 0xF0F0F, 
  (1U<<31) | 1830, (1U<<31) | 1822, (1U<<31) | 1838, 0x1F1F, 0x1F1F, 0x4, 0x1F1F1F1F, 0x1F1F1F1F, 
  0x42E, 0x2EE2E2E, 0x2E2EE0, 0x2EE2E2E0, 0x44, 0x55, 0x44, 0x444, 
  0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 
  0x444, 0x444, 0x444, 0x444, 0x444, 0x555, 0x555, 0x444, 
  0x545, 0x444, 0x444, 0x555, 0x44, 0x44, 0x444, 0x444, 
  0x444, 0x444, 0x445, 0x445, 0x444, 0x555, 0x444, 0x555, 
  0x444, 0x555, 0x444, 0x555, 0x44, 0x55, 0x44, 0x44, 
  0x55, 0x444, 0x444, 0x555, 0x54, 0x54, 0x44, 0x44, 
  0x44, 0x44, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 
  0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x555, 
  0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 
  0x444, 0x444, 0x444, 0x44, 0x44, 0x44, 0x45, 0x44, 
  0x444, 0x444, 0x55, 0x45, 0x44, 0x55, 0x55, 0x55, 
  0x55, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 
  0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 
  0x555, 0x555, 0x555, 0x555, 0x555, 0x551, 0x551, 0x551, 
  0x551, 0x551, 0x551, 0x551, 0x551, 0x55, 0x555, 0x555, 
  0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 
  0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 
  0x555, 0x5555, 0x555, 0x5555, 0x555, 0x555, 0x555, 0x555, 
  0x555, 0x555, 0x555, 0x555, 0x444, 0x555, 0x44, 0x44, 
  0x444, 0x555, 0x445, 0x445, 0x541, 0x441, 0x441, 0x441, 
  0x441, 0x441, 0x441, 0x441, 0x441, 0x441, 0x441, 0x441, 
  0x441, 0x445, 0x445, 0x444, 0x444, 0x444, 0x444, 0x555, 
  0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 
  0x451, 0x551, 0x451, 0x551, 0x451, 0x451, 0x451, 0x451, 
  0x451, 0x451, 0x451, 0x451, 0x4555, 0x4555, 0x4555, 0x4555, 
  0x4555, 0x4555, 0x4555, 0x4555, 0x554, 0x41, 0x441, 0x441, 
  0x41, 0x441, 0x441, 0x441, 0x441, 0x441, 0x551, 0x441, 
  0x441, 0x441, 0x441, 0x551, 0x441, 0x441, 0x551, 0x441, 
  0x441, 0x45, 0x4444, 0x4444, 0x4444, 0x4444, 0x41, 0x441, 
  0x441, 0x41, 0x44, 0x41, 0x444, 0x5545, 0x441, 0x4441, 
  0x4441, 0x4441, 0x4441, 0x441, 0x441, 0x441, 0x441, 0x441, 
  0x441, 0x441, 0x441, 0x441, 0x441, 0x441, 0x4441, 0x4441, 
  0x4441, 0x4441, 0x58, 0x57, 0x85, 0x85, 0x87, 0x85, 
  0x85, 0x84, 0x84, 0x84, 0x84, 0x75, 0x75, 0x78, 
  0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x58, 0x57, 
  0x48, 0x47, 0x48, 0x47, 0x888, 0x481, 0x881, 0x881, 
  0x881, 0x881, 0x888, 0x888, 0x88, 0x8888, 0x8888, 0x48888, 
  0x8888, 0x8888, 0x48, 0x48, 0x888, 0x888, 0x888, 0x888, 
  0x777, 0x471, 0x771, 0x771, 0x771, 0x771, 0x777, 0x777, 
  0x77, 0x7777, 0x7777, 0x47777, 0x7777, 0x7777, 0x47, 0x47, 
  0x777, 0x777, 0x777, 0x777, 0x4444, 0x4444, 0x4455, 0x4455, 
  0x4455, 0x4455, 0x4455, 0x4455, 0x445, 0x445, 0x444, 0x444, 
  0x444, 0x444, 0x445, 0x445, 0x445, 0x445, 0x4455, 0x4455, 
  0x4455, 0x4455, 0x4455, 0x4455, 0x444, 0x445, 0x4455, 0x4455, 
  0x445, 0x444, 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444, 
  0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 
  0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 
  0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 
  0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 
  0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 
  0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 
  0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 
  0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 
  0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 
  0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 
  0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 
  0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 
  0x444, 0x444, 0x444, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 
  0x4455, 0x4455, 0x4455, 0x445, 0x445, 0x445, 0x445, 0x445, 
  0x445, 0x445, 0x445, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 
  0x4455, 0x4455, 0x4455, 0x445, 0x445, 0x445, 0x445, 0x445, 
  0x445, 0x445, 0x445, 0x444, 0x444, 0x444, 0x4444, 0x4444, 
  0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444, 
  0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x4444, 0x4444, 
  0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x4455, 
  0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x445, 
  0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x4455, 
  0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x444, 
  0x4444, 0x4444, 0x4444, 0x555, 0x555, 0x5555, 0x5555, 0x555, 
  0x555, 0x555, 0x555, 0x5555, 0x5555, 0x554, 0x554, 0x555, 
  0x555, 0x4455, 0x5555, 0x5555, 0x5555, 0x4455, 0x4455, 0x4455, 
  0x4455, 0x555, 0x555, 0x445, 0x444, 0x445, 0x444, 0x445, 
  0x445, 0x554, 0x554, 0x5555, 0x5555, 0x5555, 0x5555, 0x555, 
  0x555, 0x555, 0x555, 0x4555, 0x455, 0x454, 0x5555, 0x555, 
  0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x454, 0x454, 0x454, 
  0x454, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 
  0x4444, 0x4444, 0x4444, 0x4444, 0x445, 0x4455, 0x445, 0x4455, 
  0x5555, 0x5555, 0x555, 0x555, 0x5555, 0x5555, 0x555, 0x555, 
  0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x555, 0x4455, 0x4455, 
  0x445, 0x445, 0x5555, 0x5555, 0x555, 0x555, 0x4444, 0x455, 
  0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 
  0x4444, 0x4444, 0x444, 0x4444, 0x455, 0x455, 0x455, 0x4555, 
  0x4555, 0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 
  0x4444, 0x444, 0x455, 0x455, 0x455, 0x4555, 0x4555, 0x4555, 
  0x4555, 0x455, 0x455, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 
  0x444, 0x444, 0x454, 0x455, 0x455, 0x455, 0x4555, 0x4555, 
  0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 
  0x444, 0x454, 0x455, 0x455, 0x44, 0x55, 0x44, 0x54, 
  0x44, 0x54, 0x44, 0x44, 0x54, 0x444, 0x444, 0x44, 
  0x54, 0x44, 0x54, 0x55, 0x4444, 0x544, 0x4455, 0x555, 
  0x44444, 0x5444, 0x44555, 0x5555, 0x55, 0x555, 0x455, 0x4555, 
  0x4555, 0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 
  0x4444, 0x455, 0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 
  0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x455, 
  0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x444, 
  0x4444, 0x4444, 0x4444, 0x4444, 0x455, 0x455, 0x445, 0x554, 
  0x444, 0x444, 0x555, 0x555, 0x555, 0x555, 0x44, 0x44, 
  0x44444, 0x44444, 0x44444, 0x44444, 0x444, 0x444, 0x441, 0x441, 
  0x4555, 0x4555, 0x455, 0x455, 0x4555, 0x54, 0x54, 0x54, 
  0x55, 0x54, 0x55, 0x54, 0x55, 0x54, 0x55, 0x44, 
  0x45, 0x4555, 0x4555, 0x45, 0x45, 0x54, 0x555, 0x54, 
  0x555, 0x45, 0x45, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 
  0x444, 0x454, 0x54, 0x4444, 0x544, 0x4455, 0x555, 0x444, 
  0x441, 0x441, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 
  0x4444, 0x4444, 0x4444, 0x4455, 0x44555, 0x555, 0x555, 0x555, 
  0x555, 0x555, 0x555, 0x454, 0x454, 0x54, 0x455, 0x44, 
  0x442E2E2E, 0x2E2E2E0, (1U<<31) | 338, (1U<<31) | 339, 0x2E50, 0x2E50, 0x1F1F, 0x1F1F, 
  0x1F1F, 0x42E0, (1U<<31) | 29, (1U<<31) | 29, 0x144F23F0, 0x3939, 0x2A2A, 0x44, 
  0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x393939, 0x393939, 0x444, 0x393939, 
  0x393939, 0x444, 0x444, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 
  0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x444, 
  0x393939, 0x2A2A2A, 0x393939, 0x2A2A2A, 0x2A2A2A, 0x2A2A2A, 0x2C2C2C, 0x595959, 
  0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 0x444, 0x2C2C2C, 
  0x42C2C, 0x4444, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 
  0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 
  0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 
  0x3B3B3B, 0x4A4A4A, 0x4444, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 
  0x45959, 0x43B3B, 0x44A4A, 0x2C2C2C2C, 0x59595959, 0x3B3B3B3B, 0x4A4A4A4A, 0x42C2C2C, 
  0x4595959, 0x43B3B3B, 0x44A4A4A, 0x2C2C2C2C, 0x59595959, 0x3B3B3B3B, 0x4A4A4A4A, 0x42C2C2C, 
  0x4595959, 0x43B3B3B, 0x44A4A4A, 0x44, 0x2C2C2C2C, 0x42C2C2C, 0x2C2C2C2C, 0x42C2C2C, 
  0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 
  0x2C4, 0x594, 0x3B4, 0x2C4, 0x4A4, 0x4, 0x2C2C2C2C, 0x42C2C2C, 
  0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 
  0x2C4, 0x594, 0x3B4, 0x2C4, 0x4A4, 0x2C2C2C, 0x595959, 0x3B3B3B, 
  0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 0x44, 0x2C2C2C, 0x595959, 
  0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 
  0x43B3B, 0x44A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 0x2C2C2C, 0x595959, 
  0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 
  0x43B3B, 0x44A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 0x39390, 0x39390, 
  0x39390, 0x2A2A4, 0x2A2A4, 0x2A2A4, 0x2A2A4, 0x2A2A4, 0x2A2A4, 0x2A2A0, 
  0x2A2A0, 0x2A2A0, 0x42C4, 0x4595, 0x43B4, 0x44A4, 0x42C4, 0x4595, 
  0x43B4, 0x44A4, 0x440, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 
  0x595959, 0x3B3B3B, 0x4A4A4A, 0x4555, 0x4A4A59, 0x2C2C3B, 0x3B3B4A, 0x4A4A59, 
  0x2C2C3B, 0x3B3B4A, 0x393955, 0x4A4A5959, 0x2C2C3B3B, 0x3B3B4A4A, 0x4A4A5959, 0x2C2C3B3B, 
  0x3B3B4A4A, 0x393955, 0x4455, 0x393955, 0x393955, 0x2A2A55, 0x2A2A55, 0x393955, 
  0x393955, 0x393955, 0x4455, 0x393955, 0x393955, 0x2A2A55, 0x2A2A55, 0x4A4A5959, 
  0x2C2C3B3B, 0x3B3B4A4A, 0x4A4A5959, 0x2C2C3B3B, 0x3B3B4A4A, 0x393955, 0x454, 0x454, 
  0x454, 0x454, 0x454, 0x454, 0x898989, 0x7A7A7A, 0x898959, 0x7A7A4A, 
  0x898959, 0x7A7A4A, 0x8959, 0x7A4A, 0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 
  0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 
  0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 0x898989, 0x7A7A7A, 
  0x7A7A6B, 0x89897A, 0x598989, 0x4A7A7A, 0x7A89, 0x6B7A, 0x7A89, 0x6B7A, 
  0x5989, 0x4A7A, 0x5989, 0x4A7A, 0x4A89, 0x3B7A, 0x4A89, 0x3B7A, 
  0x42C, 0x559, 0x43B, 0x44A, 0x8989, 0x7A7A, (1U<<31) | 1756, 0x7A7A7A7A, 
  0x898989, 0x7A7A7A, 0x898989, 0x7A7A7A, 0x898989, 0x7A7A7A, 0x898989, 0x7A7A7A, 
  (1U<<31) | 1756, 0x7A7A7A7A, 0x898989, 0x7A7A7A, 0x8989, 0x7A7A, 0x8989, 0x7A7A, 
  0x8989, 0x7A7A, 0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 
  0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 0x8989, 0x7A7A, 
  0x898989, 0x7A7A7A, 0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 
  0x898959, 0x7A7A4A, 0x898959, 0x7A7A4A, 0x8959, 0x7A4A, 0x8959, 0x7A4A, 
  0x7A7A3B, 0x89894A, 0x8959, 0x7A4A, 0x8959, 0x7A4A, 0x4A4A59, 0x2C2C3B, 
  0x3B3B4A, 0x4A4A59, 0x2C2C3B, 0x3B3B4A, 0x4A4A59, 0x2C2C3B, 0x3B3B4A, 0x4A4A59, 
  0x2C2C3B, 0x3B3B4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 
  0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 
  0x3B3B3B, 0x4A4A4A, 0x442C2C, 0x545959, 0x443B3B, 0x444A4A, 0x444, 0x2C42C2C, 
  0x5945959, 0x3B43B3B, 0x4A44A4A, 0x42E4, 0x42E2C, 0x42E59, 0x42E3B, 0x42E4A, 
  0x42C, 0x459, 0x43B, 0x44A, 0x42E4, 0x4444, 0x42E4, 0x4455, 
  0x3B3B3B3B, 0x4A4A4A4A, 0x3B3B3B3B, 0x4A4A4A4A, 0x4455, 0x2C2C2C2C, 0x59595959, 0x3B3B3B3B, 
  0x4A4A4A4A, 0x393955, 0x393955, 0x393955, 0x393955, 0x2C2C2C, 0x595959, 0x3B3B3B, 
  0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 
  0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 0x42C2C, 0x45959, 0x43B3B, 
  0x44A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 
  0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 
  0x44A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 
  0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x444, 0x2C2C, 0x4455, 
  0x3B3B3B3B, 0x4A4A4A4A, 0x3B3B3B3B, 0x4A4A4A4A, 0x4455, 0x2C2C2C2C, 0x59595959, 0x3B3B3B3B, 
  0x4A4A4A4A, 0x455, 0x393939, 0x3B3B3B, 0x4A4A4A, 0x393939, 0x39394, 0x39394, 
  0x392A39, 0x392A39, 0x393939, 0x444, 0x393939, 0x444, 0x3B3B3B, 0x4A4A4A, 
  0x393955, 0x393955, 0x445, 0x445, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 
  0x2C2C, 0x5959, 0x3B3B, 0x4A4A, 0x2C2C, 0x5959, 0x3B3B, 0x4A4A, 
  0x2C2C2C, 0x42C2C, 0x2C2C2C, 0x42C2C, 0x393939, 0x2C2C2C, 0x595959, 0x3B3B3B, 
  0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C, 0x5959, 0x3B3B, 
  0x4A4A, 0x393939, 0x2A2A2A, 0x394, 0x394, 0x2A39, 0x2A39, 0x2A39, 
  0x2A39, 0x2A39, 0x2A39, 0x2A39, 0x2A39, 0x39392A, 0x44439, 0x44439, 
  0x4439, 0x39392A, 0x4439, 0x39392A, 0x4444, 0x2A4, 0x44, 0x439, 
  0x42A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 0x42C2C, 0x45959, 0x43B3B, 
  0x44A4A, 0x42C2C, 0x43B3B, 0x44A4A, 0x455, 0x43939, 0x42A2A, 0x43939, 
  0x444, 0x43939, 0x42A2A, 0x43939, 0x42A2A, 0x444, 0x43939, 0x42A2A, 
  0x42C2C2C, 0x4595959, 0x43B3B3B, 0x44A4A4A, 0x42C2C2C, 0x4595959, 0x43B3B3B, 0x44A4A4A, 
  0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 
  0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 
  0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 
  0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 
  0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 
  0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 0x44A4A, 
  0x42E2C0, 0x42E590, 0x42E3B0, 0x42E4A0, 0x393939, 0x393939, 0x444, 0x393939, 
  0x393939, 0x444, 0x444, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 
  0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 
  0x595959, 0x3B3B3B, 0x4A4A4A, 0x393939, 0x2A2A2A, 0x393939, 0x2A2A2A, 0x2A2A2A, 
  0x2A2A2A, 0x2C2C2C, 0x595959, 0x3B3B3B, 0x4A4A4A, 0x42C2C, 0x45959, 0x43B3B, 
  0x44A4A, 0x2C2C2C2C, 0x59595959, 0x3B3B3B3B, 0x4A4A4A4A, 0x440, 0x2C2C2C, 0x42C2C, 
  0x1F1F, 0x44, 0x55, 0x888, 0x777, 0x777, 0x888, 0x777, 
  0x777, 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x73F7, 
  0x43F4, 0x43F4, 0x0, 0x44, 0x44, 0x44, 0x85, 0x74, 
  0x47, 0x58, 0x44, 0x55, 0x88, 0x77, 0x77, 0x44, 
  0x54, 0x3F0, 0x3F0, 0x77, 0x77, 0x87, 0x87, 0x87, 
  0x87, 0x87, 0x87, 0x87, 0x87, 0x84, 0x84, 0x84, 
  0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x84, 
  0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x777, 
  0x777, 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x888, 
  0x777, 0x777, 0x888, 0x777, 0x777, 0x88, 0x77, 0x77, 
  0x73, 0x73, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 
  0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 
  0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 
  0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 
  0x75, 0x75, 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 
  0x8888, 0x7777, 0x7777, 0x8888, 0x7777, 0x7777, 0x8888, 0x7777, 
  0x7777, 0x8888, 0x7777, 0x7777, 0x888, 0x777, 0x777, 0x888, 
  0x777, 0x777, 0x37, 0x48, 0x48, 0x48, 0x48, 0x47, 
  0x47, 0x47, 0x47, 0x2E1, 0x2E1, 0x2E1, 0x2E1, 0x51, 
  0x51, 0x51, 0x7F1F, 0x7F0F, 0x7F3F, 0x7F1F, 0x7F0F, 0x7F3F, 
  0x88, 0x77, 0x77, 0x58, 0x58, 0x58, 0x58, 0x57, 
  0x57, 0x57, 0x57, 0x448, 0x444, 0x555, 0x444, 0x555, 
  0x0, 0x0, 0x0, 0x444, 0x555, 0x444, 0x555, 0x88, 
  0x77, 0x33, 0x44, 0x55, 0x7F3F, 0x444, 0x444, 0x888, 
  0x777, 0x777, 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 
  0x888, 0x777, 0x777, 0x444, 0x555, 0x444, 0x555, 0x44, 
  0x54, 0x4444, 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F, 
  0x7F3F, 0x7F3F, 0x7F3F, 0x88, 0x88, 0x77, 0x77, 0x88, 
  0x77, 0x77, 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x3F4, 0x444, 0x455, 
  0x455, 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 0x4444, 
  0x4444, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 
  0x77, 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 0x88, 
  0x77, 0x77, 0x88, 0x77, 0x77, 0x4453, 0x4453, 0x4453, 
  0x4454, 0x4454, 0x4454, 0x4455, 0x4455, 0x4455, 0x4453, 0x4453, 
  0x4453, (1U<<31) | 891, (1U<<31) | 891, (1U<<31) | 891, (1U<<31) | 907, (1U<<31) | 907, (1U<<31) | 907, (1U<<31) | 924, 
  (1U<<31) | 924, (1U<<31) | 924, (1U<<31) | 891, (1U<<31) | 891, (1U<<31) | 891, (1U<<31) | 882, (1U<<31) | 882, (1U<<31) | 882, 
  (1U<<31) | 898, (1U<<31) | 898, (1U<<31) | 898, (1U<<31) | 882, (1U<<31) | 882, (1U<<31) | 882, 0x453, 0x453, 
  0x453, 0x454, 0x454, 0x454, 0x455, 0x455, 0x455, 0x453, 
  0x453, 0x453, (1U<<31) | 987, (1U<<31) | 987, (1U<<31) | 987, (1U<<31) | 1001, (1U<<31) | 1001, (1U<<31) | 1001, 
  (1U<<31) | 1016, (1U<<31) | 1016, (1U<<31) | 1016, (1U<<31) | 987, (1U<<31) | 987, (1U<<31) | 987, (1U<<31) | 979, (1U<<31) | 979, 
  (1U<<31) | 979, (1U<<31) | 993, (1U<<31) | 993, (1U<<31) | 993, (1U<<31) | 979, (1U<<31) | 979, (1U<<31) | 979, 0x44453, 
  0x44453, 0x44453, 0x44454, 0x44454, 0x44454, 0x44455, 0x44455, 0x44455, 
  0x44453, 0x44453, 0x44453, (1U<<31) | 816, (1U<<31) | 816, (1U<<31) | 816, (1U<<31) | 834, (1U<<31) | 834, 
  (1U<<31) | 834, (1U<<31) | 853, (1U<<31) | 853, (1U<<31) | 853, (1U<<31) | 816, (1U<<31) | 816, (1U<<31) | 816, (1U<<31) | 806, 
  (1U<<31) | 806, (1U<<31) | 806, (1U<<31) | 824, (1U<<31) | 824, (1U<<31) | 824, (1U<<31) | 806, (1U<<31) | 806, (1U<<31) | 806, 
  0x4453, 0x4453, 0x4453, 0x4454, 0x4454, 0x4454, 0x4455, 0x4455, 
  0x4455, 0x4453, 0x4453, 0x4453, (1U<<31) | 891, (1U<<31) | 891, (1U<<31) | 891, (1U<<31) | 907, 
  (1U<<31) | 907, (1U<<31) | 907, (1U<<31) | 924, (1U<<31) | 924, (1U<<31) | 924, (1U<<31) | 891, (1U<<31) | 891, (1U<<31) | 891, 
  (1U<<31) | 882, (1U<<31) | 882, (1U<<31) | 882, (1U<<31) | 898, (1U<<31) | 898, (1U<<31) | 898, (1U<<31) | 882, (1U<<31) | 882, 
  (1U<<31) | 882, 0x44453, 0x44453, 0x44453, 0x44454, 0x44454, 0x44454, 0x44455, 
  0x44455, 0x44455, 0x44453, 0x44453, 0x44453, (1U<<31) | 816, (1U<<31) | 816, (1U<<31) | 816, 
  (1U<<31) | 834, (1U<<31) | 834, (1U<<31) | 834, (1U<<31) | 853, (1U<<31) | 853, (1U<<31) | 853, (1U<<31) | 816, (1U<<31) | 816, 
  (1U<<31) | 816, (1U<<31) | 806, (1U<<31) | 806, (1U<<31) | 806, (1U<<31) | 824, (1U<<31) | 824, (1U<<31) | 824, (1U<<31) | 806, 
  (1U<<31) | 806, (1U<<31) | 806, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 
  0x34450, 0x34450, 0x34450, 0x44450, 0x44450, 0x44450, 0x54450, 0x54450, 
  0x54450, 0x34450, 0x34450, 0x34450, 0x334450, 0x334450, 0x334450, 0x444450, 
  0x444450, 0x444450, 0x554450, 0x554450, 0x554450, 0x334450, 0x334450, 0x334450, 
  0x33334450, 0x33334450, 0x33334450, 0x44444450, 0x44444450, 0x44444450, 0x33334450, 0x33334450, 
  0x33334450, 0x3450, 0x3450, 0x3450, 0x4450, 0x4450, 0x4450, 0x5450, 
  0x5450, 0x5450, 0x3450, 0x3450, 0x3450, 0x33450, 0x33450, 0x33450, 
  0x44450, 0x44450, 0x44450, 0x55450, 0x55450, 0x55450, 0x33450, 0x33450, 
  0x33450, 0x3333450, 0x3333450, 0x3333450, 0x4444450, 0x4444450, 0x4444450, 0x3333450, 
  0x3333450, 0x3333450, 0x344450, 0x344450, 0x344450, 0x444450, 0x444450, 0x444450, 
  0x544450, 0x544450, 0x544450, 0x344450, 0x344450, 0x344450, 0x3344450, 0x3344450, 
  0x3344450, 0x4444450, 0x4444450, 0x4444450, 0x5544450, 0x5544450, 0x5544450, 0x3344450, 
  0x3344450, 0x3344450, (1U<<31) | 419, (1U<<31) | 419, (1U<<31) | 419, (1U<<31) | 789, (1U<<31) | 789, (1U<<31) | 789, 
  (1U<<31) | 419, (1U<<31) | 419, (1U<<31) | 419, 0x34450, 0x34450, 0x34450, 0x44450, 0x44450, 
  0x44450, 0x54450, 0x54450, 0x54450, 0x34450, 0x34450, 0x34450, 0x334450, 
  0x334450, 0x334450, 0x444450, 0x444450, 0x444450, 0x554450, 0x554450, 0x554450, 
  0x334450, 0x334450, 0x334450, 0x33334450, 0x33334450, 0x33334450, 0x44444450, 0x44444450, 
  0x44444450, 0x33334450, 0x33334450, 0x33334450, 0x344450, 0x344450, 0x344450, 0x444450, 
  0x444450, 0x444450, 0x544450, 0x544450, 0x544450, 0x344450, 0x344450, 0x344450, 
  0x3344450, 0x3344450, 0x3344450, 0x4444450, 0x4444450, 0x4444450, 0x5544450, 0x5544450, 
  0x5544450, 0x3344450, 0x3344450, 0x3344450, (1U<<31) | 419, (1U<<31) | 419, (1U<<31) | 419, (1U<<31) | 789, 
  (1U<<31) | 789, (1U<<31) | 789, (1U<<31) | 419, (1U<<31) | 419, (1U<<31) | 419, 0x34450, 0x44450, 0x34450, 
  0x334450, 0x444450, 0x334450, 0x33334450, 0x44444450, 0x33334450, 0x3450, 0x4450, 
  0x3450, 0x33450, 0x44450, 0x33450, 0x3333450, 0x4444450, 0x3333450, 0x344450, 
  0x444450, 0x344450, 0x3344450, 0x4444450, 0x3344450, (1U<<31) | 419, (1U<<31) | 789, (1U<<31) | 419, 
  0x34450, 0x44450, 0x34450, 0x334450, 0x444450, 0x334450, 0x33334450, 0x44444450, 
  0x33334450, 0x344450, 0x444450, 0x344450, 0x3344450, 0x4444450, 0x3344450, (1U<<31) | 419, 
  (1U<<31) | 789, (1U<<31) | 419, 0x55, (1U<<31) | 1286, (1U<<31) | 1274, (1U<<31) | 1274, (1U<<31) | 1204, (1U<<31) | 1193, 
  (1U<<31) | 1193, (1U<<31) | 1130, (1U<<31) | 931, (1U<<31) | 1120, (1U<<31) | 914, (1U<<31) | 1120, (1U<<31) | 914, (1U<<31) | 1330, 
  (1U<<31) | 1319, (1U<<31) | 1319, (1U<<31) | 1244, (1U<<31) | 1234, (1U<<31) | 1234, (1U<<31) | 1166, (1U<<31) | 1022, (1U<<31) | 1157, 
  (1U<<31) | 1007, (1U<<31) | 1157, (1U<<31) | 1007, (1U<<31) | 1476, (1U<<31) | 1461, (1U<<31) | 1461, (1U<<31) | 1286, (1U<<31) | 1274, 
  (1U<<31) | 1274, (1U<<31) | 1204, (1U<<31) | 861, (1U<<31) | 1193, (1U<<31) | 842, (1U<<31) | 1193, (1U<<31) | 842, (1U<<31) | 1532, 
  (1U<<31) | 1518, (1U<<31) | 1518, (1U<<31) | 1330, (1U<<31) | 1319, (1U<<31) | 1319, (1U<<31) | 1244, (1U<<31) | 931, (1U<<31) | 1234, 
  (1U<<31) | 914, (1U<<31) | 1234, (1U<<31) | 914, (1U<<31) | 1592, (1U<<31) | 1575, (1U<<31) | 1575, (1U<<31) | 1424, (1U<<31) | 1412, 
  (1U<<31) | 1412, (1U<<31) | 1330, (1U<<31) | 861, (1U<<31) | 1319, (1U<<31) | 842, (1U<<31) | 1319, (1U<<31) | 842, (1U<<31) | 1376, 
  (1U<<31) | 1363, (1U<<31) | 1363, (1U<<31) | 1286, (1U<<31) | 1274, (1U<<31) | 1274, (1U<<31) | 1424, (1U<<31) | 1412, (1U<<31) | 1412, 
  (1U<<31) | 1330, (1U<<31) | 1319, (1U<<31) | 1319, (1U<<31) | 1298, (1U<<31) | 1263, (1U<<31) | 1263, (1U<<31) | 1215, (1U<<31) | 1183, 
  (1U<<31) | 1183, (1U<<31) | 1140, (1U<<31) | 941, (1U<<31) | 1111, (1U<<31) | 898, (1U<<31) | 1111, (1U<<31) | 898, (1U<<31) | 1341, 
  (1U<<31) | 1309, (1U<<31) | 1309, (1U<<31) | 1254, (1U<<31) | 1225, (1U<<31) | 1225, (1U<<31) | 1175, (1U<<31) | 1031, (1U<<31) | 1149, 
  (1U<<31) | 993, (1U<<31) | 1149, (1U<<31) | 993, (1U<<31) | 1491, (1U<<31) | 1447, (1U<<31) | 1447, (1U<<31) | 1298, (1U<<31) | 1263, 
  (1U<<31) | 1263, (1U<<31) | 1215, (1U<<31) | 872, (1U<<31) | 1183, (1U<<31) | 824, (1U<<31) | 1183, (1U<<31) | 824, (1U<<31) | 1546, 
  (1U<<31) | 1505, (1U<<31) | 1505, (1U<<31) | 1341, (1U<<31) | 1309, (1U<<31) | 1309, (1U<<31) | 1254, (1U<<31) | 941, (1U<<31) | 1225, 
  (1U<<31) | 898, (1U<<31) | 1225, (1U<<31) | 898, (1U<<31) | 1609, (1U<<31) | 1559, (1U<<31) | 1559, (1U<<31) | 1436, (1U<<31) | 1401, 
  (1U<<31) | 1401, (1U<<31) | 1341, (1U<<31) | 872, (1U<<31) | 1309, (1U<<31) | 824, (1U<<31) | 1309, (1U<<31) | 824, (1U<<31) | 1389, 
  (1U<<31) | 1351, (1U<<31) | 1351, (1U<<31) | 1298, (1U<<31) | 1263, (1U<<31) | 1263, (1U<<31) | 1436, (1U<<31) | 1401, (1U<<31) | 1401, 
  (1U<<31) | 1341, (1U<<31) | 1309, (1U<<31) | 1309, (1U<<31) | 449, 0x3F5, (1U<<31) | 1244, (1U<<31) | 1234, (1U<<31) | 1234, 
  (1U<<31) | 1244, (1U<<31) | 1234, (1U<<31) | 1234, (1U<<31) | 1244, (1U<<31) | 1234, (1U<<31) | 1234, (1U<<31) | 1244, (1U<<31) | 1234, 
  (1U<<31) | 1234, (1U<<31) | 1254, (1U<<31) | 1225, (1U<<31) | 1225, (1U<<31) | 1254, (1U<<31) | 1225, (1U<<31) | 1225, (1U<<31) | 1254, 
  (1U<<31) | 1225, (1U<<31) | 1225, (1U<<31) | 1254, (1U<<31) | 1225, (1U<<31) | 1225, 0x88, 0x77, 0x77, 
  0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 
  0x48, 0x48, 0x48, 0x48, 0x47, 0x47, 0x47, 0x47, 
  0x58, 0x58, 0x58, 0x58, 0x57, 0x57, 0x57, 0x57, 
  0x17F0F, 0x40, 0x1F1F1F, 0x41F1F, 0x40, 0x0, 0x442E0, 0x442E0, 
  0x442E0, 0x442E0, 0x2E2C, 0x2E3B, 0x2E4A, 0x2E2C, 0x2E2C, 0x2E4A, 
  0x2E4A, 0x3B, 0x4A0, 0x2E2C0, 0x2E3B0, 0x2E4A0, 0x2E4A0, 0x2E4A0, 
  0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 
  0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x44A7A, 0x44A7A, 0x7A7A4A, 
  0x7A7A44, 0x7A7A4A, 0x7A7A44, 0x2C2C2C, 0x2C2C44, 0x3B3B3B, 0x3B3B44, 0x4A4A4A, 
  0x4A4A44, 0x7A7A4A, 0x7A7A44, 0x7A7A4A, 0x7A7A44, 0x2C2C2C, 0x2C2C44, 0x3B3B3B, 
  0x3B3B44, 0x4A4A4A, 0x4A4A44, 0x2C2C2C, 0x2C2C44, 0x3B3B3B, 0x3B3B44, 0x4A4A4A, 
  0x4A4A44, 0x47A4A, 0x47A4A, 0x7A7A, 0x7A7A, 0x7A7A7A7A, 0x7A7A7A, 0x2C2C2C, 
  0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x3B3B3B3B, 0x3B3B3B3B, 0x7A7A7A, 
  0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x3B3B3B3B, 0x4A2C2C4A, 
  0x4A3B3B4A, 0x4A3B3B4A, 0x4A2C2C4A, 0x4A3B3B4A, 0x4A3B3B4A, 0x2C2C3B, 0x3B3B4A, 0x2C2C3B, 
  0x3B3B4A, 0x2C2C3B, 0x3B3B4A, 0x2C2C3B, 0x3B3B4A, 0x7A7A7A7A, 0x2C4A4A4A, 0x4A4A3B, 
  0x3B3B2C, 0x3B3B2C, 0x4A4A2C, 0x4A4A3B, 0x3B3B2C, 0x4A4A3B, 0x7A7A, 0x7A7A, 
  0x7A7A, 0x7A7A, 0x7A7A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x7A7A, 0x4A4A4A4A, 
  0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x4A4A4A, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 
  0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x4A4A4A, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 
  0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x4A4A4A, 0x4A2C4A, 0x4A3B4A, 0x4A2C4A, 
  0x4A4A4A, 0x3B4A, 0x2C3B, 0x3B4A, 0x3B4A, 0x2C3B, 0x3B4A, 0x2E0, 
  0x2E0, 0x2E0, 0x2E0, 0x2E0, 0x2E0, 0x2E0, 0x2E0, 0x1, 
  0xF0, 0x0, 0x4442E0, (1U<<31) | 579, 0x40, 0x4, 0x5, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 
  0x4, 0x4, 0x4, 0x4, 0x4, (1U<<31) | 1809, 0x5, 0x42E, 
  0x1F1F, 0x1F1F, (1U<<31) | 0, 0x2E4, 0x42E0, 0x42E4, 0x1F1F, (1U<<31) | 0, 
  0x1F1F, (1U<<31) | 0, 0x2EE2E0, 0x2EE0, 0x2E0, 0x2E, 0x0, 0x1F1F, 
  (1U<<31) | 0, (1U<<31) | 0, (1U<<31) | 0, 0x2E2E0, 0x2E0, 0x42E2E2E0, 0x2E0, (1U<<31) | 9, 
  (1U<<31) | 1805, (1U<<31) | 1802, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, 
  (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1802, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1802, (1U<<31) | 1805, 
  (1U<<31) | 1805, (1U<<31) | 1802, (1U<<31) | 1805, (1U<<31) | 1802, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1802, (1U<<31) | 1802, 
  0x595959, 0x595959, 0x595959, 0x595959, 0x5959, 0x25959, (1U<<31) | 49, (1U<<31) | 85, 
  (1U<<31) | 233, (1U<<31) | 267, (1U<<31) | 165, (1U<<31) | 211, (1U<<31) | 97, (1U<<31) | 121, (1U<<31) | 61, (1U<<31) | 73, 
  (1U<<31) | 245, (1U<<31) | 279, (1U<<31) | 177, (1U<<31) | 189, (1U<<31) | 109, (1U<<31) | 133, 0x4A2E4A, 0x4B2E4B, 
  0x592E59, 0x5A2E5A, 0x4A4A2E0, 0x4B4B2E0, 0x59592E0, 0x5A5A2E0, 0x2E5A, 0x42D2D3C, 
  0x2D2D, 0x4B4B, 0x3C3C, 0x4B4B3C, 0x3C3C2D, 0x4B4B3C, 0x3C3C2D, 0x2D2D2D, 
  0x3C3C3C, 0x2D2D2D, 0x3C3C3C, 0x2D2D2D, 0x3C3C3C, 0x44A4A4A, 0x44B4B4B, 0x2D2D2D2D, 
  0x43C3C3C, 0x2C2C, 0x2C2D, 0x4A4A, 0x4A4B, 0x5959, 0x595A, 0x3B3B, 
  0x3B3C, 0x4B4B4B, 0x7B7B7B, 0x4B4B4B, 0x3C3C3C, 0x3C3C3C, 0x4B4B4B, 0x3C3C3C, 
  0x3C3C3C, 0x2D2D3C, 0x3C3C4B, 0x2D2D2D, 0x4B4B4B, 0x3C3C3C, 0x2D2D2D, 0x4B4B4B, 
  0x3C3C3C, 0x2D2D2D, 0x4B4B4B, 0x3C3C3C, 0x2D2D2D, 0x4B4B4B, 0x3C3C3C, 0x2D4, 
  0x2C4B, 0x2C5A, 0x2C3C, 0x4A5A, 0x3B4B, 0x3B5A, 0x2C4B, 0x2C5A, 
  0x2C3C, 0x4A5A, 0x3B4B, 0x3B5A, 0x4B4B5A, 0x3C3C3C, 0x3C3C3C, 0x3C3C3C, 
  0x4B4B5A, 0x2D2D5A, 0x2D2D2D, 0x2D2D2D, 0x4B4B4B, 0x3C3C3C, 0x4A4B4B, 0x45A5A, 
  0x45A5A, 0x595A5A, 0x3B3C3C, 0x44B4B, 0x45A5A, 0x43C3C, 0x4A4A4A, 0x4B4B4B, 
  0x595959, 0x5A5A5A, 0x4A4B4B, 0x3B3C3C, 0x44B4B, 0x43C3C, 0x4A4A4A, 0x4B4B4B, 
  0x4A4B4B, 0x45A5A, 0x45A5A, 0x595A5A, 0x3B3C3C, 0x44B4B, 0x45A5A, 0x43C3C, 
  0x4A4A4A, 0x4B4B4B, 0x595959, 0x5A5A5A, 0x2D2D2D, 0x3C3C3C, 0x2D2D2D, 0x3C3C3C, 
  0x898A, 0x7A7A, 0x7A7B, 0x2E5A, 0x25A59, 0x2595A5A, 0x25A5A5A, 0x894, 
  0x895, 0x7A4, 0x7A5, 0x894, 0x895, 0x7A4, 0x7A5, 0x48989, 
  0x47A7A, 0x58989, 0x57A7A, (1U<<31) | 471, (1U<<31) | 652, (1U<<31) | 460, (1U<<31) | 663, (1U<<31) | 515, 
  (1U<<31) | 482, (1U<<31) | 493, (1U<<31) | 504, 0x442E4B20, 0x442E4C30, 0x442E5B20, 0x442E5B20, 0x333, 
  0x333, 0x33, 0x333, 0x334, 0x334, 0x333, 0x333, 0x333, 
  0x34C4C4C, 0x28B8B8B, 0x37C7C7C, 0x25B5B5B, 0x4248B8B2, 0x4347C7C3, 0x34C4C4C, 0x25B5B5B, 
  0x28B4B8B, 0x437C4C7C, 0x424B8B4B, 0x427B8B7B, 0x424B8B4B, 0x434C7C4C, 0x434C7C4C, 0x424B8B4B, 
  0x424B8B4B, 0x434C7C4C, 0x434C7C4C, 0x28B4B8B, 0x437C4C7C, 0x34C2E4C, 0x28B2E8B, 0x37C2E7C, 
  0x25B2E5B, 0x34C4C4C, 0x25B5B5B, (1U<<31) | 558, (1U<<31) | 684, (1U<<31) | 558, (1U<<31) | 684, 0x34C4C4C, 
  0x25B5B5B, (1U<<31) | 429, (1U<<31) | 155, 0x34C44C, 0x25B55B, 0x25B55B, 0x34C4C3, 0x25B5B2, 
  (1U<<31) | 429, (1U<<31) | 155, (1U<<31) | 429, (1U<<31) | 155, (1U<<31) | 429, (1U<<31) | 155, (1U<<31) | 429, (1U<<31) | 155, 
  (1U<<31) | 145, (1U<<31) | 145, 0x34C4C3, 0x25B5B2, (1U<<31) | 548, (1U<<31) | 674, 0x34C2E0, 0x28B2E0, 
  0x37C2E0, 0x25B2E0, 0x437C3C7C, 0x33C47C3C, (1U<<31) | 429, (1U<<31) | 301, (1U<<31) | 439, (1U<<31) | 155, 
  0x2E5B, 0x4A4C, 0x44C, 0x595B, 0x55B, 0x2C4C, 0x2C5B, 0x4B5B, 
  0x3C4C, 0x3B5B, 0x45B5B, 0x45B5B, 0x45B5B, 0x45B5B, 0x28B8B8B, 0x37C7C7C, 
  (1U<<31) | 257, (1U<<31) | 201, 0x428B8B8B, 0x437C7C7C, (1U<<31) | 537, (1U<<31) | 526, 0x4898989, 0x47A7A7A, 
  0x28B8B8B, 0x37C7C7C, (1U<<31) | 257, (1U<<31) | 201, 0x428B8B8B, 0x437C7C7C, (1U<<31) | 537, (1U<<31) | 526, 
  (1U<<31) | 1083, (1U<<31) | 960, (1U<<31) | 1039, (1U<<31) | 1073, (1U<<31) | 1093, (1U<<31) | 950, (1U<<31) | 1049, (1U<<31) | 1063, 
  0x442E4B20, 0x442E4C30, 0x442E5B20, 0x442E5B20, 0x8B8B, 0x7C7C, 0x898989, 0x7A7A7A, 
  0x2E8B, 0x898B, 0x2E7C, 0x7A7C, 0x8A8A8A, 0x7B7B7B, 0x48A8A8A, 0x47B7B7B, 
  (1U<<31) | 1769, 0x7B7B7B7B, 0x28A8A8A, 0x27B7B7B, 0x8A7A, 0x8A4A, 0x7A8A, 0x7B4B, 
  0x4A8A, 0x4B7B, 0x8A4A, 0x7B4B, 0x47B7B7B, 0x8A8A8A, 0x7B7B7B, 0x8A8A8A, 
  0x7B7B7B, 0x2E2D, 0x892E89, 0x8A2E8A, 0x7A2E7A, 0x7B2E7B, 0x89892E0, 0x8A8A2E0, 
  0x7A7A2E0, 0x7B7B2E0, 0x8A8A8A, 0x7B7B7B, 0x8A8A8A, 0x7B7B7B, 0x8A4, 0x7B4, 
  0x5A5A4, 0x5A5A4, 0x5A5A4, 0x7B7B, 0x48A8A, 0x47B7B, 0x7B7B, 0x8A8A, 
  0x7B7B, 0x2D2E0, 0x8A2E0, 0x7B2E0, 0x2E8A, 0x2E7B, 0x28A89, 0x27B7A, 
  0x24B4A, 0x2898A8A, 0x27A7B7B, 0x24A4B4B, 0x28A8A8A, 0x27B7B7B, 0x24B4B4B, 0x598989, 
  0x5A8A8A, 0x4A7A7A, 0x4B7B7B, 0x89894, 0x8A8A4, 0x7A7A4, 0x7B7B4, 0x89894, 
  0x8A8A4, 0x7A7A4, 0x7B7B4, 0x89894, 0x8A8A4, 0x7A7A4, 0x7B7B4, 0x0, 
  0x0, 0x444, 0x555, 0x444, 0x555, 0x444, 0x555, 0x444, 
  0x555, (1U<<31) | 1756, (1U<<31) | 1769, (1U<<31) | 1778, 0x7A7A7A7A, 0x7B7B7B7B, 0x7C7C7C7C, (1U<<31) | 1756, 
  0x7A7A7A7A, (1U<<31) | 1756, (1U<<31) | 1769, (1U<<31) | 1778, 0x7A7A7A7A, 0x7B7B7B7B, 0x7C7C7C7C, (1U<<31) | 1756, 
  (1U<<31) | 1769, (1U<<31) | 1778, 0x7A7A7A7A, 0x7B7B7B7B, 0x7C7C7C7C, (1U<<31) | 1756, 0x7A7A7A7A, (1U<<31) | 1756, 
  (1U<<31) | 1769, (1U<<31) | 1778, 0x7A7A7A7A, 0x7B7B7B7B, 0x7C7C7C7C, (1U<<31) | 1756, (1U<<31) | 1769, (1U<<31) | 1778, 
  0x7A7A7A7A, 0x7B7B7B7B, 0x7C7C7C7C, (1U<<31) | 1756, 0x7A7A7A7A, (1U<<31) | 1756, (1U<<31) | 1769, (1U<<31) | 1778, 
  0x7A7A7A7A, 0x7B7B7B7B, 0x7C7C7C7C, (1U<<31) | 1756, 0x7A7A7A7A, 0x20, 0x0, 0x0, 
  (1U<<31) | 345, (1U<<31) | 1800, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, 
  (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 390, (1U<<31) | 1805, (1U<<31) | 1805, 
  (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, 
  (1U<<31) | 1103, (1U<<31) | 970, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1787, 
  (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, 
  (1U<<31) | 1805, (1U<<31) | 1107, (1U<<31) | 1107, (1U<<31) | 1107, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1107, (1U<<31) | 1107, 
  (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1107, (1U<<31) | 1107, (1U<<31) | 1107, (1U<<31) | 1805, (1U<<31) | 1805, 
  (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, 
  (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, (1U<<31) | 1805, 0x2595959, 0x4, 0x5, 
  0x4, 0x5, 0x45, (1U<<31) | 695, (1U<<31) | 975, (1U<<31) | 1059, (1U<<31) | 695, (1U<<31) | 975, 
  (1U<<31) | 1059, 0x5, 0x2E5, 0x4A4A4A, 0x4A4A4A, 0x4A4A4A, 0x24A4A4A, 0x4A4A4A, 
  0x4A4A4A, 0x4A4A4A4A, 0x898989, 0x2E0, 0x2898989, 0x2898989, 0x89894, 0x89894, 
  0x89894, 0x89894, 0x89894, 0x89894, 0x4A89, 0x4A7A, 0x894A, 0x897A, 
  0x7A4A, 0x7A89, 0x894, 0x895, 0x897A7A, 0x48989, 0x58989, 0x7A8989, 
  0x894A, 0x7A4A, 0x894, 0x895, 0x898989, 0x0, 0x2E2C2C0, 0x898989, 
  0x898989, 0x0, 0x898989, 0x898989, 0x894, 0x898989, 0x4A4A3B, 0x3B3B2C, 
  0x3B3B2C, 0x2C2C2C, 0x3B3B3B, 0x2C2C2C, 0x3B3B3B, 0x0, 0x2C2C2C, 0x3B3B3B, 
  0x3B3B4A, 0x3B3B3B, 0x2C2C2C, 0x3B3B3B, 0x2C2C2C, 0x2C4, 0x3B3B3B, 0x3B3B3B, 
  0x4A4A59, 0x2C2C59, 0x24A4A, 0x23B3B, 0x23B3B, 0x4A4A4A, 0x45959, 0x45959, 
  0x595959, 0x3B3B3B, 0x44A4A, 0x45959, 0x43B3B, 0x4A4A4A, 0x3B3B3B, 0x44A4A, 
  0x43B3B, 0x4A4A4A, 0x45959, 0x45959, 0x595959, 0x3B3B3B, 0x44A4A, 0x45959, 
  0x43B3B, 0x2C2C2C, 0x3B3B3B, 0x2C2C2C, 0x3B3B3B, 0x8989, 0x8989, 0x4A2E0, 
  0x2C2E0, 0x892E0, 0x898989, 0x89894, 0x89894, 0x89894, 0x89894, 0x89894, 
  0x89894, 0x898989, 0x7A7A7A, 0x898989, 0x7A7A7A, 0x898989, 0x7A7A7A, 0x2E2C, 
  0x442E0, 0x440, 0x4898989, 0x47A7A7A, (1U<<31) | 1756, 0x7A7A7A7A, 0x4898989, 0x47A7A7A, 
  0x47A4, 0x47A7A7A, 0x2E59, 0x42C2C3B, 0x4A4A3B, 0x2C2C2C2C, 0x43B3B3B, 0x42C4, 
  0x44A4, 0x4595, 0x3B3B, 0x2C2C2C, 0x4A4A4A, 0x4A4A4A, 0x3B3B3B, 0x2C2C2C, 
  0x4A4A4A, 0x4A4A4A, 0x3B3B3B, 0x2C4A, 0x2C59, 0x2C3B, 0x4A59, 0x3B4A, 
  0x3B59, 0x2C4A, 0x2C59, 0x2C3B, 0x4A59, 0x3B4A, 0x3B59, 0x4A4A59, 
  0x59594, 0x59594, 0x59594, 0x48989, 0x47A7A, 0x4898989, 0x47A7A7A, 0x344, 
  0x444, 0x244, 0x555, 0x242C42C4, 0x242C42C4, 0x242C42C4, 0x242C42C4, 0x242C42C4, 
  0x242C42C4, (1U<<31) | 39, 0x22C2C4, 0x22C2C4, 0x22C2C4, 0x22C2C4, 0x22C2C4, 0x22C2C4, 
  0x22C2C2C, 0x2C5959, 0x225959, 0x595959, 0x22595959, 0x892E0, 0x7A2E0, 0x7A7A7A, 
  0x27A7A7A, 0x27A7A7A, 0x7A7A4, 0x7A7A4, 0x7A7A4, 0x7A7A4, 0x7A7A4, 0x7A7A4, 
  (1U<<31) | 1765, (1U<<31) | 1796, (1U<<31) | 1790, (1U<<31) | 1625, 0x47A7A, 0x57A7A, 0x7A4, 0x7A5, 
  (1U<<31) | 1765, (1U<<31) | 1625, 0x7A4, 0x7A5, 0x7A7A7A, 0x2E0, 0x7A7A7A, 0x7A7A7A, 
  0x7A7A7A, 0x7A7A7A, 0x7A4, 0x7A7A7A, (1U<<31) | 391, 0x7A7A, 0x7A7A, 0x7A7A, 
  0x7A7A, 0x0, 0x7A7A, 0x7A7A, 0x2E0, 0x7A2E0, 0x7A7A7A, 0x7A7A4, 
  0x7A7A4, 0x7A7A4, 0x7A7A4, 0x7A7A4, 0x7A7A4, (1U<<31) | 1802, 0x2C2C, (1U<<31) | 1802, 
  0x4A4A, (1U<<31) | 1802, 0x3B3B, (1U<<31) | 1805, 0x4A4A4A, (1U<<31) | 1805, 0x3B3B3B, (1U<<31) | 1805, 
  0x3B3B3B, (1U<<31) | 1805, 0x4A4A4A, (1U<<31) | 1805, 0x3B3B3B, (1U<<31) | 1805, 0x3B3B3B, (1U<<31) | 1805, 
  0x2C2C3B, (1U<<31) | 1805, 0x3B3B3B, (1U<<31) | 1805, 0x2C2C2C, (1U<<31) | 1805, 0x2C2C2C, (1U<<31) | 1805, 
  0x4A4A4A, (1U<<31) | 1805, 0x3B3B3B, 0x444, 0x555, 0x3B7A, 0x3B7B, 0x47A3B, 
  0x47B3B, 0x40, 0x50, 0x40, 0x50, 0x20, 0x4, 0x0, 
  0x8989, 0x8A8A, 0x7A7A, 0x7B7B, 0x8989, 0x7A7A, 0x59595959, 0x5A5A5A5A, 
  0x22C2C2C, 0x24A4A4A, 0x2595959, 0x22C2C2C, 0x24A4A4A, 0x2595959, 0x23B3B3B, 0x23B3B3B, 
  (1U<<31) | 257, (1U<<31) | 291, (1U<<31) | 201, (1U<<31) | 223, 0x2C4A, 0x2C59, 0x2C3B, 0x4A59, 
  0x2C4A, 0x2C59, 0x2C3B, 0x4A59, 0x3B4A, 0x3B59, 0x3B4A, 0x3B59, 
  0x2C3B, 0x4A59, 0x3B4A, 0x4A4A4A4A, 0x594A4A59, 0x594A4A59, 0x4A4A4A4A, 0x594A4A59, 
  0x594A4A59, 0x4A3B3B4A, 0x3B3B3B3B, 0x4A3B3B4A, 0x3B3B3B3B, 0x4A3B3B4A, 0x4A3B3B4A, 0x2C2C2C2C, 
  0x2C2C2C, 0x22C2C, 0x4A4A4A, 0x24A4A, 0x595959, 0x25959, 0x3B3B3B, 0x23B3B, 
  0x2C2C2C, 0x4A4A4A, 0x595959, 0x3B3B3B, 0x2C2C2C, 0x4A4A4A, 0x595959, 0x3B3B3B, 
  0x4, 0x44, 0x2E2E, 0x43F0, 0x0, 0x3F0, 0x40, 0x4444, 
  (1U<<31) | 799, 0x3F0, 0x3F0, 0x3F4, 0x3F0, 0x4, 0x4, 0x4, 
  0x44, 0x43F, 0x7F3F, 0x3F4, 0x3F4, 0x3F4, 0x2E3F0, 0x2E3F0, 
  0x2E3F0, 0x2E3F0, 0x2E3F0, 0x43F4, 0x3F4, 0x3F0, 0x3F0, 0x43F0, 
  0x43F0, 0x43F4, 0x43F0, 0x3F4, 0x43F0, 0x7F3F0, 0x43F0, 0x2E3F0, 
  0x440, 0x43F0, 0x43F0, 0x7F3F0, 0x40, 0x43F0, 0x2E3F0, 0x444, 
  0x0, 0x3F0, 0x3F4, 0x3F4, 0x2E, 0x444, 0
};

static const unsigned char IIT_LongEncodingTable[] = {
  /* 0 */ 19, 15, 0, 1, 15, 0, 15, 0, 0,
  /* 9 */ 0, 17, 15, 0, 0,
  /* 14 */ 15, 0, 23, 0, 0,
  /* 19 */ 19, 15, 1, 1, 15, 1, 15, 1, 1, 0,
  /* 29 */ 0, 15, 3, 15, 7, 15, 8, 4, 1, 0,
  /* 39 */ 12, 2, 12, 2, 4, 12, 2, 4, 2, 0,
  /* 49 */ 10, 4, 10, 4, 14, 2, 10, 4, 10, 4, 2, 0,
  /* 61 */ 10, 4, 10, 4, 14, 2, 9, 5, 10, 4, 2, 0,
  /* 73 */ 10, 4, 10, 4, 14, 2, 10, 5, 10, 4, 2, 0,
  /* 85 */ 11, 4, 11, 4, 14, 2, 11, 4, 11, 4, 2, 0,
  /* 97 */ 9, 5, 9, 5, 14, 2, 10, 4, 9, 5, 2, 0,
  /* 109 */ 9, 5, 9, 5, 14, 2, 9, 5, 9, 5, 2, 0,
  /* 121 */ 10, 5, 10, 5, 14, 2, 10, 4, 10, 5, 2, 0,
  /* 133 */ 10, 5, 10, 5, 14, 2, 10, 5, 10, 5, 2, 0,
  /* 145 */ 11, 5, 12, 4, 12, 4, 11, 5, 2, 0,
  /* 155 */ 11, 5, 11, 5, 11, 5, 11, 5, 2, 0,
  /* 165 */ 10, 7, 10, 7, 14, 2, 10, 4, 10, 7, 2, 0,
  /* 177 */ 10, 7, 10, 7, 14, 2, 9, 5, 10, 7, 2, 0,
  /* 189 */ 10, 7, 10, 7, 14, 2, 10, 5, 10, 7, 2, 0,
  /* 201 */ 10, 7, 10, 7, 10, 7, 10, 7, 2, 0,
  /* 211 */ 11, 7, 11, 7, 14, 2, 11, 4, 11, 7, 2, 0,
  /* 223 */ 11, 7, 11, 7, 11, 7, 11, 7, 2, 0,
  /* 233 */ 9, 8, 9, 8, 14, 2, 10, 4, 9, 8, 2, 0,
  /* 245 */ 9, 8, 9, 8, 14, 2, 9, 5, 9, 8, 2, 0,
  /* 257 */ 9, 8, 9, 8, 9, 8, 9, 8, 2, 0,
  /* 267 */ 10, 8, 10, 8, 14, 2, 10, 4, 10, 8, 2, 0,
  /* 279 */ 10, 8, 10, 8, 14, 2, 10, 5, 10, 8, 2, 0,
  /* 291 */ 10, 8, 10, 8, 10, 8, 10, 8, 2, 0,
  /* 301 */ 11, 8, 11, 5, 11, 8, 11, 8, 2, 0,
  /* 311 */ 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 0,
  /* 326 */ 19, 4, 4, 14, 2, 0,
  /* 332 */ 19, 5, 5, 14, 2, 0,
  /* 338 */ 0, 14, 18, 5, 14, 2, 0,
  /* 345 */ 0, 16, 16, 14, 2, 0,
  /* 351 */ 15, 2, 15, 2, 12, 2, 12, 2, 12, 2, 12, 2, 15, 2, 0,
  /* 366 */ 15, 2, 15, 2, 12, 2, 12, 2, 12, 2, 15, 2, 0,
  /* 379 */ 15, 2, 15, 2, 12, 2, 12, 2, 15, 2, 0,
  /* 390 */ 16, 16, 16, 2, 0,
  /* 395 */ 15, 2, 23, 2, 0,
  /* 400 */ 15, 2, 23, 2, 23, 2, 0,
  /* 407 */ 15, 2, 24, 2, 0,
  /* 412 */ 15, 2, 24, 2, 24, 2, 0,
  /* 419 */ 0, 5, 4, 4, 4, 3, 3, 3, 3, 0,
  /* 429 */ 12, 4, 12, 4, 12, 4, 12, 4, 3, 0,
  /* 439 */ 12, 7, 12, 4, 12, 7, 12, 7, 3, 0,
  /* 449 */ 5, 17, 15, 3, 0,
  /* 454 */ 15, 0, 23, 0, 4, 0,
  /* 460 */ 11, 5, 11, 5, 14, 2, 11, 4, 2, 4, 0,
  /* 471 */ 11, 8, 11, 8, 14, 2, 11, 4, 2, 4, 0,
  /* 482 */ 11, 4, 11, 4, 14, 2, 11, 5, 2, 4, 0,
  /* 493 */ 11, 5, 11, 5, 14, 2, 11, 5, 2, 4, 0,
  /* 504 */ 11, 7, 11, 7, 14, 2, 11, 5, 2, 4, 0,
  /* 515 */ 11, 8, 11, 8, 14, 2, 11, 5, 2, 4, 0,
  /* 526 */ 10, 7, 10, 7, 10, 7, 10, 7, 2, 4, 0,
  /* 537 */ 9, 8, 9, 8, 9, 8, 9, 8, 2, 4, 0,
  /* 548 */ 11, 8, 11, 8, 4, 11, 8, 2, 4, 0,
  /* 558 */ 11, 8, 11, 8, 11, 8, 11, 8, 2, 4, 0,
  /* 569 */ 15, 0, 15, 0, 14, 2, 14, 2, 4, 0,
  /* 579 */ 15, 3, 15, 3, 14, 2, 14, 2, 4, 0,
  /* 589 */ 21, 15, 2, 15, 2, 15, 2, 15, 2, 14, 2, 4, 0,
  /* 602 */ 20, 15, 2, 15, 2, 15, 2, 14, 2, 4, 0,
  /* 613 */ 19, 15, 2, 15, 2, 14, 2, 4, 0,
  /* 622 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 4, 0,
  /* 633 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 15, 2, 4, 0,
  /* 646 */ 15, 2, 24, 2, 4, 0,
  /* 652 */ 12, 4, 12, 4, 14, 2, 12, 4, 3, 4, 0,
  /* 663 */ 12, 7, 12, 7, 14, 2, 12, 4, 3, 4, 0,
  /* 674 */ 12, 7, 12, 7, 4, 12, 7, 3, 4, 0,
  /* 684 */ 12, 7, 12, 7, 12, 7, 12, 7, 3, 4, 0,
  /* 695 */ 19, 3, 4, 0,
  /* 699 */ 0, 14, 2, 15, 2, 15, 2, 4, 4, 0,
  /* 709 */ 19, 15, 2, 15, 2, 14, 2, 15, 2, 15, 2, 4, 4, 0,
  /* 723 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  /* 735 */ 20, 15, 2, 15, 2, 15, 2, 14, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  /* 753 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  /* 767 */ 21, 15, 2, 15, 2, 15, 2, 15, 2, 14, 2, 15, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  /* 789 */ 0, 5, 4, 4, 4, 4, 4, 4, 4, 0,
  /* 799 */ 19, 4, 4, 4, 4, 4, 0,
  /* 806 */ 21, 3, 3, 3, 3, 5, 4, 4, 4, 0,
  /* 816 */ 19, 3, 3, 5, 4, 4, 4, 0,
  /* 824 */ 21, 4, 4, 4, 4, 5, 4, 4, 4, 0,
  /* 834 */ 19, 4, 4, 5, 4, 4, 4, 0,
  /* 842 */ 21, 4, 4, 4, 4, 5, 5, 4, 4, 4, 0,
  /* 853 */ 19, 5, 5, 5, 4, 4, 4, 0,
  /* 861 */ 21, 7, 7, 7, 7, 5, 5, 4, 4, 4, 0,
  /* 872 */ 21, 7, 7, 7, 7, 5, 4, 4, 4, 0,
  /* 882 */ 21, 3, 3, 3, 3, 5, 4, 4, 0,
  /* 891 */ 19, 3, 3, 5, 4, 4, 0,
  /* 898 */ 21, 4, 4, 4, 4, 5, 4, 4, 0,
  /* 907 */ 19, 4, 4, 5, 4, 4, 0,
  /* 914 */ 21, 4, 4, 4, 4, 5, 5, 4, 4, 0,
  /* 924 */ 19, 5, 5, 5, 4, 4, 0,
  /* 931 */ 21, 7, 7, 7, 7, 5, 5, 4, 4, 0,
  /* 941 */ 21, 7, 7, 7, 7, 5, 4, 4, 0,
  /* 950 */ 0, 14, 2, 2, 11, 5, 11, 4, 4, 0,
  /* 960 */ 0, 14, 2, 3, 12, 4, 12, 4, 4, 0,
  /* 970 */ 16, 16, 4, 4, 0,
  /* 975 */ 19, 4, 4, 0,
  /* 979 */ 21, 3, 3, 3, 3, 5, 4, 0,
  /* 987 */ 19, 3, 3, 5, 4, 0,
  /* 993 */ 21, 4, 4, 4, 4, 5, 4, 0,
  /* 1001 */ 19, 4, 4, 5, 4, 0,
  /* 1007 */ 21, 4, 4, 4, 4, 5, 5, 4, 0,
  /* 1016 */ 19, 5, 5, 5, 4, 0,
  /* 1022 */ 21, 7, 7, 7, 7, 5, 5, 4, 0,
  /* 1031 */ 21, 7, 7, 7, 7, 5, 4, 0,
  /* 1039 */ 0, 14, 2, 2, 11, 4, 11, 5, 4, 0,
  /* 1049 */ 0, 14, 2, 2, 11, 5, 11, 5, 4, 0,
  /* 1059 */ 19, 5, 4, 0,
  /* 1063 */ 0, 14, 2, 2, 11, 5, 11, 7, 4, 0,
  /* 1073 */ 0, 14, 2, 3, 12, 4, 12, 7, 4, 0,
  /* 1083 */ 0, 14, 2, 2, 11, 4, 11, 8, 4, 0,
  /* 1093 */ 0, 14, 2, 2, 11, 5, 11, 8, 4, 0,
  /* 1103 */ 4, 16, 4, 0,
  /* 1107 */ 16, 16, 4, 0,
  /* 1111 */ 21, 4, 4, 4, 4, 5, 4, 7, 0,
  /* 1120 */ 21, 4, 4, 4, 4, 5, 5, 4, 7, 0,
  /* 1130 */ 21, 7, 7, 7, 7, 5, 5, 4, 7, 0,
  /* 1140 */ 21, 7, 7, 7, 7, 5, 4, 7, 0,
  /* 1149 */ 21, 4, 4, 4, 4, 5, 7, 0,
  /* 1157 */ 21, 4, 4, 4, 4, 5, 5, 7, 0,
  /* 1166 */ 21, 7, 7, 7, 7, 5, 5, 7, 0,
  /* 1175 */ 21, 7, 7, 7, 7, 5, 7, 0,
  /* 1183 */ 21, 4, 4, 4, 4, 5, 4, 7, 7, 0,
  /* 1193 */ 21, 4, 4, 4, 4, 5, 5, 4, 7, 7, 0,
  /* 1204 */ 21, 7, 7, 7, 7, 5, 5, 4, 7, 7, 0,
  /* 1215 */ 21, 7, 7, 7, 7, 5, 4, 7, 7, 0,
  /* 1225 */ 21, 4, 4, 4, 4, 5, 7, 7, 0,
  /* 1234 */ 21, 4, 4, 4, 4, 5, 5, 7, 7, 0,
  /* 1244 */ 21, 7, 7, 7, 7, 5, 5, 7, 7, 0,
  /* 1254 */ 21, 7, 7, 7, 7, 5, 7, 7, 0,
  /* 1263 */ 21, 4, 4, 4, 4, 5, 4, 7, 7, 7, 0,
  /* 1274 */ 21, 4, 4, 4, 4, 5, 5, 4, 7, 7, 7, 0,
  /* 1286 */ 21, 7, 7, 7, 7, 5, 5, 4, 7, 7, 7, 0,
  /* 1298 */ 21, 7, 7, 7, 7, 5, 4, 7, 7, 7, 0,
  /* 1309 */ 21, 4, 4, 4, 4, 5, 7, 7, 7, 0,
  /* 1319 */ 21, 4, 4, 4, 4, 5, 5, 7, 7, 7, 0,
  /* 1330 */ 21, 7, 7, 7, 7, 5, 5, 7, 7, 7, 0,
  /* 1341 */ 21, 7, 7, 7, 7, 5, 7, 7, 7, 0,
  /* 1351 */ 21, 4, 4, 4, 4, 5, 4, 7, 7, 7, 7, 0,
  /* 1363 */ 21, 4, 4, 4, 4, 5, 5, 4, 7, 7, 7, 7, 0,
  /* 1376 */ 21, 7, 7, 7, 7, 5, 5, 4, 7, 7, 7, 7, 0,
  /* 1389 */ 21, 7, 7, 7, 7, 5, 4, 7, 7, 7, 7, 0,
  /* 1401 */ 21, 4, 4, 4, 4, 5, 7, 7, 7, 7, 0,
  /* 1412 */ 21, 4, 4, 4, 4, 5, 5, 7, 7, 7, 7, 0,
  /* 1424 */ 21, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 0,
  /* 1436 */ 21, 7, 7, 7, 7, 5, 7, 7, 7, 7, 0,
  /* 1447 */ 21, 4, 4, 4, 4, 5, 4, 7, 7, 7, 7, 7, 7, 0,
  /* 1461 */ 21, 4, 4, 4, 4, 5, 5, 4, 7, 7, 7, 7, 7, 7, 0,
  /* 1476 */ 21, 7, 7, 7, 7, 5, 5, 4, 7, 7, 7, 7, 7, 7, 0,
  /* 1491 */ 21, 7, 7, 7, 7, 5, 4, 7, 7, 7, 7, 7, 7, 0,
  /* 1505 */ 21, 4, 4, 4, 4, 5, 7, 7, 7, 7, 7, 7, 0,
  /* 1518 */ 21, 4, 4, 4, 4, 5, 5, 7, 7, 7, 7, 7, 7, 0,
  /* 1532 */ 21, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 7, 0,
  /* 1546 */ 21, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 0,
  /* 1559 */ 21, 4, 4, 4, 4, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
  /* 1575 */ 21, 4, 4, 4, 4, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
  /* 1592 */ 21, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
  /* 1609 */ 21, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0,
  /* 1625 */ 16, 10, 7, 0,
  /* 1629 */ 0, 15, 2, 15, 2, 15, 2, 15, 7, 0,
  /* 1639 */ 0, 15, 2, 15, 2, 15, 2, 15, 2, 15, 7, 0,
  /* 1651 */ 21, 15, 2, 15, 2, 15, 2, 15, 2, 15, 7, 0,
  /* 1663 */ 20, 15, 2, 15, 2, 15, 2, 15, 7, 0,
  /* 1673 */ 19, 15, 2, 15, 2, 15, 7, 0,
  /* 1681 */ 0, 15, 2, 15, 2, 15, 2, 5, 15, 7, 0,
  /* 1692 */ 0, 15, 2, 15, 2, 15, 2, 15, 2, 5, 15, 7, 0,
  /* 1705 */ 21, 15, 2, 15, 2, 15, 2, 15, 2, 15, 2, 15, 2, 15, 2, 15, 2, 5, 15, 7, 0,
  /* 1726 */ 20, 15, 2, 15, 2, 15, 2, 15, 2, 15, 2, 15, 2, 5, 15, 7, 0,
  /* 1743 */ 19, 15, 2, 15, 2, 15, 2, 15, 2, 5, 15, 7, 0,
  /* 1756 */ 9, 8, 9, 8, 9, 8, 9, 8, 0,
  /* 1765 */ 16, 9, 8, 0,
  /* 1769 */ 10, 8, 10, 8, 10, 8, 10, 8, 0,
  /* 1778 */ 11, 8, 11, 8, 11, 8, 11, 8, 0,
  /* 1787 */ 4, 16, 0,
  /* 1790 */ 10, 7, 10, 7, 16, 0,
  /* 1796 */ 9, 8, 16, 0,
  /* 1800 */ 0, 14, 16, 16, 0,
  /* 1805 */ 16, 16, 16, 0,
  /* 1809 */ 15, 0, 17, 0,
  /* 1813 */ 0, 17, 5, 17, 0,
  /* 1818 */ 0, 17, 17, 0,
  /* 1822 */ 0, 5, 4, 14, 2, 4, 27, 0,
  /* 1830 */ 5, 5, 4, 14, 2, 4, 27, 0,
  /* 1838 */ 0, 5, 4, 27, 0,
  255
};

#endif

// Add parameter attributes that are not common to all intrinsics.
#ifdef GET_INTRINSIC_ATTRIBUTES
AttributeSet Intrinsic::getAttributes(LLVMContext &C, ID id) {
  static const uint8_t IntrinsicsToAttributesMap[] = {
    1, // llvm.AMDGPU.div.fixup
    1, // llvm.AMDGPU.div.fmas
    1, // llvm.AMDGPU.div.scale
    1, // llvm.AMDGPU.rcp
    1, // llvm.AMDGPU.rsq
    1, // llvm.AMDGPU.rsq.clamped
    1, // llvm.AMDGPU.trig.preop
    2, // llvm.aarch64.clrex
    1, // llvm.aarch64.crc32b
    1, // llvm.aarch64.crc32cb
    1, // llvm.aarch64.crc32ch
    1, // llvm.aarch64.crc32cw
    1, // llvm.aarch64.crc32cx
    1, // llvm.aarch64.crc32h
    1, // llvm.aarch64.crc32w
    1, // llvm.aarch64.crc32x
    1, // llvm.aarch64.crypto.aesd
    1, // llvm.aarch64.crypto.aese
    1, // llvm.aarch64.crypto.aesimc
    1, // llvm.aarch64.crypto.aesmc
    1, // llvm.aarch64.crypto.sha1c
    1, // llvm.aarch64.crypto.sha1h
    1, // llvm.aarch64.crypto.sha1m
    1, // llvm.aarch64.crypto.sha1p
    1, // llvm.aarch64.crypto.sha1su0
    1, // llvm.aarch64.crypto.sha1su1
    1, // llvm.aarch64.crypto.sha256h
    1, // llvm.aarch64.crypto.sha256h2
    1, // llvm.aarch64.crypto.sha256su0
    1, // llvm.aarch64.crypto.sha256su1
    2, // llvm.aarch64.dmb
    2, // llvm.aarch64.dsb
    2, // llvm.aarch64.hint
    2, // llvm.aarch64.isb
    2, // llvm.aarch64.ldaxp
    2, // llvm.aarch64.ldaxr
    2, // llvm.aarch64.ldxp
    2, // llvm.aarch64.ldxr
    1, // llvm.aarch64.neon.abs
    1, // llvm.aarch64.neon.addhn
    1, // llvm.aarch64.neon.addp
    1, // llvm.aarch64.neon.cls
    1, // llvm.aarch64.neon.fabd
    1, // llvm.aarch64.neon.facge
    1, // llvm.aarch64.neon.facgt
    1, // llvm.aarch64.neon.faddv
    1, // llvm.aarch64.neon.fcvtas
    1, // llvm.aarch64.neon.fcvtau
    1, // llvm.aarch64.neon.fcvtms
    1, // llvm.aarch64.neon.fcvtmu
    1, // llvm.aarch64.neon.fcvtns
    1, // llvm.aarch64.neon.fcvtnu
    1, // llvm.aarch64.neon.fcvtps
    1, // llvm.aarch64.neon.fcvtpu
    1, // llvm.aarch64.neon.fcvtxn
    1, // llvm.aarch64.neon.fcvtzs
    1, // llvm.aarch64.neon.fcvtzu
    1, // llvm.aarch64.neon.fmax
    1, // llvm.aarch64.neon.fmaxnm
    1, // llvm.aarch64.neon.fmaxnmp
    1, // llvm.aarch64.neon.fmaxnmv
    1, // llvm.aarch64.neon.fmaxp
    1, // llvm.aarch64.neon.fmaxv
    1, // llvm.aarch64.neon.fmin
    1, // llvm.aarch64.neon.fminnm
    1, // llvm.aarch64.neon.fminnmp
    1, // llvm.aarch64.neon.fminnmv
    1, // llvm.aarch64.neon.fminp
    1, // llvm.aarch64.neon.fminv
    1, // llvm.aarch64.neon.fmulx
    1, // llvm.aarch64.neon.frecpe
    1, // llvm.aarch64.neon.frecps
    1, // llvm.aarch64.neon.frecpx
    1, // llvm.aarch64.neon.frintn
    1, // llvm.aarch64.neon.frsqrte
    1, // llvm.aarch64.neon.frsqrts
    3, // llvm.aarch64.neon.ld1x2
    3, // llvm.aarch64.neon.ld1x3
    3, // llvm.aarch64.neon.ld1x4
    3, // llvm.aarch64.neon.ld2
    3, // llvm.aarch64.neon.ld2lane
    3, // llvm.aarch64.neon.ld2r
    3, // llvm.aarch64.neon.ld3
    3, // llvm.aarch64.neon.ld3lane
    3, // llvm.aarch64.neon.ld3r
    3, // llvm.aarch64.neon.ld4
    3, // llvm.aarch64.neon.ld4lane
    3, // llvm.aarch64.neon.ld4r
    1, // llvm.aarch64.neon.pmul
    1, // llvm.aarch64.neon.pmull
    1, // llvm.aarch64.neon.pmull64
    1, // llvm.aarch64.neon.raddhn
    1, // llvm.aarch64.neon.rbit
    1, // llvm.aarch64.neon.rshrn
    1, // llvm.aarch64.neon.rsubhn
    1, // llvm.aarch64.neon.sabd
    1, // llvm.aarch64.neon.saddlp
    1, // llvm.aarch64.neon.saddlv
    1, // llvm.aarch64.neon.saddv
    1, // llvm.aarch64.neon.scalar.sqxtn
    1, // llvm.aarch64.neon.scalar.sqxtun
    1, // llvm.aarch64.neon.scalar.uqxtn
    1, // llvm.aarch64.neon.shadd
    1, // llvm.aarch64.neon.shll
    1, // llvm.aarch64.neon.shsub
    1, // llvm.aarch64.neon.smax
    1, // llvm.aarch64.neon.smaxp
    1, // llvm.aarch64.neon.smaxv
    1, // llvm.aarch64.neon.smin
    1, // llvm.aarch64.neon.sminp
    1, // llvm.aarch64.neon.sminv
    1, // llvm.aarch64.neon.smull
    1, // llvm.aarch64.neon.sqabs
    1, // llvm.aarch64.neon.sqadd
    1, // llvm.aarch64.neon.sqdmulh
    1, // llvm.aarch64.neon.sqdmull
    1, // llvm.aarch64.neon.sqdmulls.scalar
    1, // llvm.aarch64.neon.sqneg
    1, // llvm.aarch64.neon.sqrdmulh
    1, // llvm.aarch64.neon.sqrshl
    1, // llvm.aarch64.neon.sqrshrn
    1, // llvm.aarch64.neon.sqrshrun
    1, // llvm.aarch64.neon.sqshl
    1, // llvm.aarch64.neon.sqshlu
    1, // llvm.aarch64.neon.sqshrn
    1, // llvm.aarch64.neon.sqshrun
    1, // llvm.aarch64.neon.sqsub
    1, // llvm.aarch64.neon.sqxtn
    1, // llvm.aarch64.neon.sqxtun
    1, // llvm.aarch64.neon.srhadd
    1, // llvm.aarch64.neon.srshl
    1, // llvm.aarch64.neon.sshl
    1, // llvm.aarch64.neon.sshll
    4, // llvm.aarch64.neon.st1x2
    5, // llvm.aarch64.neon.st1x3
    6, // llvm.aarch64.neon.st1x4
    4, // llvm.aarch64.neon.st2
    5, // llvm.aarch64.neon.st2lane
    5, // llvm.aarch64.neon.st3
    6, // llvm.aarch64.neon.st3lane
    6, // llvm.aarch64.neon.st4
    7, // llvm.aarch64.neon.st4lane
    1, // llvm.aarch64.neon.subhn
    1, // llvm.aarch64.neon.suqadd
    1, // llvm.aarch64.neon.tbl1
    1, // llvm.aarch64.neon.tbl2
    1, // llvm.aarch64.neon.tbl3
    1, // llvm.aarch64.neon.tbl4
    1, // llvm.aarch64.neon.tbx1
    1, // llvm.aarch64.neon.tbx2
    1, // llvm.aarch64.neon.tbx3
    1, // llvm.aarch64.neon.tbx4
    1, // llvm.aarch64.neon.uabd
    1, // llvm.aarch64.neon.uaddlp
    1, // llvm.aarch64.neon.uaddlv
    1, // llvm.aarch64.neon.uaddv
    1, // llvm.aarch64.neon.uhadd
    1, // llvm.aarch64.neon.uhsub
    1, // llvm.aarch64.neon.umax
    1, // llvm.aarch64.neon.umaxp
    1, // llvm.aarch64.neon.umaxv
    1, // llvm.aarch64.neon.umin
    1, // llvm.aarch64.neon.uminp
    1, // llvm.aarch64.neon.uminv
    1, // llvm.aarch64.neon.umull
    1, // llvm.aarch64.neon.uqadd
    1, // llvm.aarch64.neon.uqrshl
    1, // llvm.aarch64.neon.uqrshrn
    1, // llvm.aarch64.neon.uqshl
    1, // llvm.aarch64.neon.uqshrn
    1, // llvm.aarch64.neon.uqsub
    1, // llvm.aarch64.neon.uqxtn
    1, // llvm.aarch64.neon.urecpe
    1, // llvm.aarch64.neon.urhadd
    1, // llvm.aarch64.neon.urshl
    1, // llvm.aarch64.neon.ursqrte
    1, // llvm.aarch64.neon.ushl
    1, // llvm.aarch64.neon.ushll
    1, // llvm.aarch64.neon.usqadd
    1, // llvm.aarch64.neon.vcopy.lane
    1, // llvm.aarch64.neon.vcvtfp2fxs
    1, // llvm.aarch64.neon.vcvtfp2fxu
    1, // llvm.aarch64.neon.vcvtfp2hf
    1, // llvm.aarch64.neon.vcvtfxs2fp
    1, // llvm.aarch64.neon.vcvtfxu2fp
    1, // llvm.aarch64.neon.vcvthf2fp
    1, // llvm.aarch64.neon.vsli
    1, // llvm.aarch64.neon.vsri
    1, // llvm.aarch64.rbit
    1, // llvm.aarch64.sdiv
    1, // llvm.aarch64.sisd.fabd
    1, // llvm.aarch64.sisd.fcvtxn
    2, // llvm.aarch64.stlxp
    2, // llvm.aarch64.stlxr
    2, // llvm.aarch64.stxp
    2, // llvm.aarch64.stxr
    1, // llvm.aarch64.udiv
    3, // llvm.adjust.trampoline
    2, // llvm.annotation
    2, // llvm.arm.cdp
    2, // llvm.arm.cdp2
    2, // llvm.arm.clrex
    1, // llvm.arm.crc32b
    1, // llvm.arm.crc32cb
    1, // llvm.arm.crc32ch
    1, // llvm.arm.crc32cw
    1, // llvm.arm.crc32h
    1, // llvm.arm.crc32w
    2, // llvm.arm.dmb
    2, // llvm.arm.dsb
    1, // llvm.arm.get.fpscr
    2, // llvm.arm.hint
    2, // llvm.arm.isb
    2, // llvm.arm.ldaex
    2, // llvm.arm.ldaexd
    2, // llvm.arm.ldrex
    2, // llvm.arm.ldrexd
    2, // llvm.arm.mcr
    2, // llvm.arm.mcr2
    2, // llvm.arm.mcrr
    2, // llvm.arm.mcrr2
    2, // llvm.arm.mrc
    2, // llvm.arm.mrc2
    1, // llvm.arm.neon.aesd
    1, // llvm.arm.neon.aese
    1, // llvm.arm.neon.aesimc
    1, // llvm.arm.neon.aesmc
    1, // llvm.arm.neon.sha1c
    1, // llvm.arm.neon.sha1h
    1, // llvm.arm.neon.sha1m
    1, // llvm.arm.neon.sha1p
    1, // llvm.arm.neon.sha1su0
    1, // llvm.arm.neon.sha1su1
    1, // llvm.arm.neon.sha256h
    1, // llvm.arm.neon.sha256h2
    1, // llvm.arm.neon.sha256su0
    1, // llvm.arm.neon.sha256su1
    1, // llvm.arm.neon.vabds
    1, // llvm.arm.neon.vabdu
    1, // llvm.arm.neon.vabs
    1, // llvm.arm.neon.vacge
    1, // llvm.arm.neon.vacgt
    1, // llvm.arm.neon.vbsl
    1, // llvm.arm.neon.vcls
    1, // llvm.arm.neon.vclz
    1, // llvm.arm.neon.vcnt
    1, // llvm.arm.neon.vcvtas
    1, // llvm.arm.neon.vcvtau
    1, // llvm.arm.neon.vcvtfp2fxs
    1, // llvm.arm.neon.vcvtfp2fxu
    1, // llvm.arm.neon.vcvtfp2hf
    1, // llvm.arm.neon.vcvtfxs2fp
    1, // llvm.arm.neon.vcvtfxu2fp
    1, // llvm.arm.neon.vcvthf2fp
    1, // llvm.arm.neon.vcvtms
    1, // llvm.arm.neon.vcvtmu
    1, // llvm.arm.neon.vcvtns
    1, // llvm.arm.neon.vcvtnu
    1, // llvm.arm.neon.vcvtps
    1, // llvm.arm.neon.vcvtpu
    1, // llvm.arm.neon.vhadds
    1, // llvm.arm.neon.vhaddu
    1, // llvm.arm.neon.vhsubs
    1, // llvm.arm.neon.vhsubu
    3, // llvm.arm.neon.vld1
    3, // llvm.arm.neon.vld2
    3, // llvm.arm.neon.vld2lane
    3, // llvm.arm.neon.vld3
    3, // llvm.arm.neon.vld3lane
    3, // llvm.arm.neon.vld4
    3, // llvm.arm.neon.vld4lane
    1, // llvm.arm.neon.vmaxnm
    1, // llvm.arm.neon.vmaxs
    1, // llvm.arm.neon.vmaxu
    1, // llvm.arm.neon.vminnm
    1, // llvm.arm.neon.vmins
    1, // llvm.arm.neon.vminu
    1, // llvm.arm.neon.vmullp
    1, // llvm.arm.neon.vmulls
    1, // llvm.arm.neon.vmullu
    1, // llvm.arm.neon.vmulp
    1, // llvm.arm.neon.vpadals
    1, // llvm.arm.neon.vpadalu
    1, // llvm.arm.neon.vpadd
    1, // llvm.arm.neon.vpaddls
    1, // llvm.arm.neon.vpaddlu
    1, // llvm.arm.neon.vpmaxs
    1, // llvm.arm.neon.vpmaxu
    1, // llvm.arm.neon.vpmins
    1, // llvm.arm.neon.vpminu
    1, // llvm.arm.neon.vqabs
    1, // llvm.arm.neon.vqadds
    1, // llvm.arm.neon.vqaddu
    1, // llvm.arm.neon.vqdmulh
    1, // llvm.arm.neon.vqdmull
    1, // llvm.arm.neon.vqmovns
    1, // llvm.arm.neon.vqmovnsu
    1, // llvm.arm.neon.vqmovnu
    1, // llvm.arm.neon.vqneg
    1, // llvm.arm.neon.vqrdmulh
    1, // llvm.arm.neon.vqrshiftns
    1, // llvm.arm.neon.vqrshiftnsu
    1, // llvm.arm.neon.vqrshiftnu
    1, // llvm.arm.neon.vqrshifts
    1, // llvm.arm.neon.vqrshiftu
    1, // llvm.arm.neon.vqshiftns
    1, // llvm.arm.neon.vqshiftnsu
    1, // llvm.arm.neon.vqshiftnu
    1, // llvm.arm.neon.vqshifts
    1, // llvm.arm.neon.vqshiftsu
    1, // llvm.arm.neon.vqshiftu
    1, // llvm.arm.neon.vqsubs
    1, // llvm.arm.neon.vqsubu
    1, // llvm.arm.neon.vraddhn
    1, // llvm.arm.neon.vrecpe
    1, // llvm.arm.neon.vrecps
    1, // llvm.arm.neon.vrhadds
    1, // llvm.arm.neon.vrhaddu
    1, // llvm.arm.neon.vrinta
    1, // llvm.arm.neon.vrintm
    1, // llvm.arm.neon.vrintn
    1, // llvm.arm.neon.vrintp
    1, // llvm.arm.neon.vrintx
    1, // llvm.arm.neon.vrintz
    1, // llvm.arm.neon.vrshiftn
    1, // llvm.arm.neon.vrshifts
    1, // llvm.arm.neon.vrshiftu
    1, // llvm.arm.neon.vrsqrte
    1, // llvm.arm.neon.vrsqrts
    1, // llvm.arm.neon.vrsubhn
    1, // llvm.arm.neon.vshiftins
    1, // llvm.arm.neon.vshifts
    1, // llvm.arm.neon.vshiftu
    2, // llvm.arm.neon.vst1
    2, // llvm.arm.neon.vst2
    2, // llvm.arm.neon.vst2lane
    2, // llvm.arm.neon.vst3
    2, // llvm.arm.neon.vst3lane
    2, // llvm.arm.neon.vst4
    2, // llvm.arm.neon.vst4lane
    1, // llvm.arm.neon.vtbl1
    1, // llvm.arm.neon.vtbl2
    1, // llvm.arm.neon.vtbl3
    1, // llvm.arm.neon.vtbl4
    1, // llvm.arm.neon.vtbx1
    1, // llvm.arm.neon.vtbx2
    1, // llvm.arm.neon.vtbx3
    1, // llvm.arm.neon.vtbx4
    1, // llvm.arm.qadd
    1, // llvm.arm.qsub
    1, // llvm.arm.rbit
    2, // llvm.arm.set.fpscr
    1, // llvm.arm.ssat
    2, // llvm.arm.stlex
    2, // llvm.arm.stlexd
    2, // llvm.arm.strex
    2, // llvm.arm.strexd
    1, // llvm.arm.thread.pointer
    2, // llvm.arm.undefined
    1, // llvm.arm.usat
    1, // llvm.arm.vcvtr
    1, // llvm.arm.vcvtru
    1, // llvm.bswap
    1, // llvm.ceil
    2, // llvm.clear_cache
    1, // llvm.convert.from.fp16
    1, // llvm.convert.to.fp16
    2, // llvm.convertff
    2, // llvm.convertfsi
    2, // llvm.convertfui
    2, // llvm.convertsif
    2, // llvm.convertss
    2, // llvm.convertsu
    2, // llvm.convertuif
    2, // llvm.convertus
    2, // llvm.convertuu
    1, // llvm.copysign
    1, // llvm.cos
    1, // llvm.ctlz
    1, // llvm.ctpop
    1, // llvm.cttz
    8, // llvm.cuda.syncthreads
    1, // llvm.dbg.declare
    1, // llvm.dbg.value
    2, // llvm.debugtrap
    1, // llvm.donothing
    2, // llvm.eh.dwarf.cfa
    2, // llvm.eh.return.i32
    2, // llvm.eh.return.i64
    1, // llvm.eh.sjlj.callsite
    2, // llvm.eh.sjlj.functioncontext
    9, // llvm.eh.sjlj.longjmp
    1, // llvm.eh.sjlj.lsda
    2, // llvm.eh.sjlj.setjmp
    1, // llvm.eh.typeid.for
    2, // llvm.eh.unwind.init
    1, // llvm.exp
    1, // llvm.exp2
    1, // llvm.expect
    2, // llvm.experimental.patchpoint.i64
    2, // llvm.experimental.patchpoint.void
    10, // llvm.experimental.stackmap
    1, // llvm.fabs
    1, // llvm.floor
    2, // llvm.flt.rounds
    1, // llvm.fma
    1, // llvm.fmuladd
    1, // llvm.frameaddress
    3, // llvm.gcread
    2, // llvm.gcroot
    11, // llvm.gcwrite
    1, // llvm.hexagon.A2.abs
    1, // llvm.hexagon.A2.absp
    1, // llvm.hexagon.A2.abssat
    1, // llvm.hexagon.A2.add
    1, // llvm.hexagon.A2.addh.h16.hh
    1, // llvm.hexagon.A2.addh.h16.hl
    1, // llvm.hexagon.A2.addh.h16.lh
    1, // llvm.hexagon.A2.addh.h16.ll
    1, // llvm.hexagon.A2.addh.h16.sat.hh
    1, // llvm.hexagon.A2.addh.h16.sat.hl
    1, // llvm.hexagon.A2.addh.h16.sat.lh
    1, // llvm.hexagon.A2.addh.h16.sat.ll
    1, // llvm.hexagon.A2.addh.l16.hl
    1, // llvm.hexagon.A2.addh.l16.ll
    1, // llvm.hexagon.A2.addh.l16.sat.hl
    1, // llvm.hexagon.A2.addh.l16.sat.ll
    1, // llvm.hexagon.A2.addi
    1, // llvm.hexagon.A2.addp
    1, // llvm.hexagon.A2.addpsat
    1, // llvm.hexagon.A2.addsat
    1, // llvm.hexagon.A2.addsp
    1, // llvm.hexagon.A2.and
    1, // llvm.hexagon.A2.andir
    1, // llvm.hexagon.A2.andp
    1, // llvm.hexagon.A2.aslh
    1, // llvm.hexagon.A2.asrh
    1, // llvm.hexagon.A2.combine.hh
    1, // llvm.hexagon.A2.combine.hl
    1, // llvm.hexagon.A2.combine.lh
    1, // llvm.hexagon.A2.combine.ll
    1, // llvm.hexagon.A2.combineii
    1, // llvm.hexagon.A2.combinew
    1, // llvm.hexagon.A2.max
    1, // llvm.hexagon.A2.maxp
    1, // llvm.hexagon.A2.maxu
    1, // llvm.hexagon.A2.maxup
    1, // llvm.hexagon.A2.min
    1, // llvm.hexagon.A2.minp
    1, // llvm.hexagon.A2.minu
    1, // llvm.hexagon.A2.minup
    1, // llvm.hexagon.A2.neg
    1, // llvm.hexagon.A2.negp
    1, // llvm.hexagon.A2.negsat
    1, // llvm.hexagon.A2.not
    1, // llvm.hexagon.A2.notp
    1, // llvm.hexagon.A2.or
    1, // llvm.hexagon.A2.orir
    1, // llvm.hexagon.A2.orp
    1, // llvm.hexagon.A2.roundsat
    1, // llvm.hexagon.A2.sat
    1, // llvm.hexagon.A2.satb
    1, // llvm.hexagon.A2.sath
    1, // llvm.hexagon.A2.satub
    1, // llvm.hexagon.A2.satuh
    1, // llvm.hexagon.A2.sub
    1, // llvm.hexagon.A2.subh.h16.hh
    1, // llvm.hexagon.A2.subh.h16.hl
    1, // llvm.hexagon.A2.subh.h16.lh
    1, // llvm.hexagon.A2.subh.h16.ll
    1, // llvm.hexagon.A2.subh.h16.sat.hh
    1, // llvm.hexagon.A2.subh.h16.sat.hl
    1, // llvm.hexagon.A2.subh.h16.sat.lh
    1, // llvm.hexagon.A2.subh.h16.sat.ll
    1, // llvm.hexagon.A2.subh.l16.hl
    1, // llvm.hexagon.A2.subh.l16.ll
    1, // llvm.hexagon.A2.subh.l16.sat.hl
    1, // llvm.hexagon.A2.subh.l16.sat.ll
    1, // llvm.hexagon.A2.subp
    1, // llvm.hexagon.A2.subri
    1, // llvm.hexagon.A2.subsat
    1, // llvm.hexagon.A2.svaddh
    1, // llvm.hexagon.A2.svaddhs
    1, // llvm.hexagon.A2.svadduhs
    1, // llvm.hexagon.A2.svavgh
    1, // llvm.hexagon.A2.svavghs
    1, // llvm.hexagon.A2.svnavgh
    1, // llvm.hexagon.A2.svsubh
    1, // llvm.hexagon.A2.svsubhs
    1, // llvm.hexagon.A2.svsubuhs
    1, // llvm.hexagon.A2.swiz
    1, // llvm.hexagon.A2.sxtb
    1, // llvm.hexagon.A2.sxth
    1, // llvm.hexagon.A2.sxtw
    1, // llvm.hexagon.A2.tfr
    1, // llvm.hexagon.A2.tfrih
    1, // llvm.hexagon.A2.tfril
    1, // llvm.hexagon.A2.tfrp
    1, // llvm.hexagon.A2.tfrpi
    1, // llvm.hexagon.A2.tfrsi
    1, // llvm.hexagon.A2.vabsh
    1, // llvm.hexagon.A2.vabshsat
    1, // llvm.hexagon.A2.vabsw
    1, // llvm.hexagon.A2.vabswsat
    1, // llvm.hexagon.A2.vaddb.map
    1, // llvm.hexagon.A2.vaddh
    1, // llvm.hexagon.A2.vaddhs
    1, // llvm.hexagon.A2.vaddub
    1, // llvm.hexagon.A2.vaddubs
    1, // llvm.hexagon.A2.vadduhs
    1, // llvm.hexagon.A2.vaddw
    1, // llvm.hexagon.A2.vaddws
    1, // llvm.hexagon.A2.vavgh
    1, // llvm.hexagon.A2.vavghcr
    1, // llvm.hexagon.A2.vavghr
    1, // llvm.hexagon.A2.vavgub
    1, // llvm.hexagon.A2.vavgubr
    1, // llvm.hexagon.A2.vavguh
    1, // llvm.hexagon.A2.vavguhr
    1, // llvm.hexagon.A2.vavguw
    1, // llvm.hexagon.A2.vavguwr
    1, // llvm.hexagon.A2.vavgw
    1, // llvm.hexagon.A2.vavgwcr
    1, // llvm.hexagon.A2.vavgwr
    1, // llvm.hexagon.A2.vcmpbeq
    1, // llvm.hexagon.A2.vcmpbgtu
    1, // llvm.hexagon.A2.vcmpheq
    1, // llvm.hexagon.A2.vcmphgt
    1, // llvm.hexagon.A2.vcmphgtu
    1, // llvm.hexagon.A2.vcmpweq
    1, // llvm.hexagon.A2.vcmpwgt
    1, // llvm.hexagon.A2.vcmpwgtu
    1, // llvm.hexagon.A2.vconj
    1, // llvm.hexagon.A2.vmaxb
    1, // llvm.hexagon.A2.vmaxh
    1, // llvm.hexagon.A2.vmaxub
    1, // llvm.hexagon.A2.vmaxuh
    1, // llvm.hexagon.A2.vmaxuw
    1, // llvm.hexagon.A2.vmaxw
    1, // llvm.hexagon.A2.vminb
    1, // llvm.hexagon.A2.vminh
    1, // llvm.hexagon.A2.vminub
    1, // llvm.hexagon.A2.vminuh
    1, // llvm.hexagon.A2.vminuw
    1, // llvm.hexagon.A2.vminw
    1, // llvm.hexagon.A2.vnavgh
    1, // llvm.hexagon.A2.vnavghcr
    1, // llvm.hexagon.A2.vnavghr
    1, // llvm.hexagon.A2.vnavgw
    1, // llvm.hexagon.A2.vnavgwcr
    1, // llvm.hexagon.A2.vnavgwr
    1, // llvm.hexagon.A2.vraddub
    1, // llvm.hexagon.A2.vraddub.acc
    1, // llvm.hexagon.A2.vrsadub
    1, // llvm.hexagon.A2.vrsadub.acc
    1, // llvm.hexagon.A2.vsubb.map
    1, // llvm.hexagon.A2.vsubh
    1, // llvm.hexagon.A2.vsubhs
    1, // llvm.hexagon.A2.vsubub
    1, // llvm.hexagon.A2.vsububs
    1, // llvm.hexagon.A2.vsubuhs
    1, // llvm.hexagon.A2.vsubw
    1, // llvm.hexagon.A2.vsubws
    1, // llvm.hexagon.A2.xor
    1, // llvm.hexagon.A2.xorp
    1, // llvm.hexagon.A2.zxtb
    1, // llvm.hexagon.A2.zxth
    1, // llvm.hexagon.A4.andn
    1, // llvm.hexagon.A4.andnp
    1, // llvm.hexagon.A4.bitsplit
    1, // llvm.hexagon.A4.bitspliti
    1, // llvm.hexagon.A4.boundscheck
    1, // llvm.hexagon.A4.cmpbeq
    1, // llvm.hexagon.A4.cmpbeqi
    1, // llvm.hexagon.A4.cmpbgt
    1, // llvm.hexagon.A4.cmpbgti
    1, // llvm.hexagon.A4.cmpbgtu
    1, // llvm.hexagon.A4.cmpbgtui
    1, // llvm.hexagon.A4.cmpheq
    1, // llvm.hexagon.A4.cmpheqi
    1, // llvm.hexagon.A4.cmphgt
    1, // llvm.hexagon.A4.cmphgti
    1, // llvm.hexagon.A4.cmphgtu
    1, // llvm.hexagon.A4.cmphgtui
    1, // llvm.hexagon.A4.combineir
    1, // llvm.hexagon.A4.combineri
    1, // llvm.hexagon.A4.cround.ri
    1, // llvm.hexagon.A4.cround.rr
    1, // llvm.hexagon.A4.modwrapu
    1, // llvm.hexagon.A4.orn
    1, // llvm.hexagon.A4.ornp
    1, // llvm.hexagon.A4.rcmpeq
    1, // llvm.hexagon.A4.rcmpeqi
    1, // llvm.hexagon.A4.rcmpneq
    1, // llvm.hexagon.A4.rcmpneqi
    1, // llvm.hexagon.A4.round.ri
    1, // llvm.hexagon.A4.round.ri.sat
    1, // llvm.hexagon.A4.round.rr
    1, // llvm.hexagon.A4.round.rr.sat
    1, // llvm.hexagon.A4.tlbmatch
    1, // llvm.hexagon.A4.vcmpbeq.any
    1, // llvm.hexagon.A4.vcmpbeqi
    1, // llvm.hexagon.A4.vcmpbgt
    1, // llvm.hexagon.A4.vcmpbgti
    1, // llvm.hexagon.A4.vcmpbgtui
    1, // llvm.hexagon.A4.vcmpheqi
    1, // llvm.hexagon.A4.vcmphgti
    1, // llvm.hexagon.A4.vcmphgtui
    1, // llvm.hexagon.A4.vcmpweqi
    1, // llvm.hexagon.A4.vcmpwgti
    1, // llvm.hexagon.A4.vcmpwgtui
    1, // llvm.hexagon.A4.vrmaxh
    1, // llvm.hexagon.A4.vrmaxuh
    1, // llvm.hexagon.A4.vrmaxuw
    1, // llvm.hexagon.A4.vrmaxw
    1, // llvm.hexagon.A4.vrminh
    1, // llvm.hexagon.A4.vrminuh
    1, // llvm.hexagon.A4.vrminuw
    1, // llvm.hexagon.A4.vrminw
    1, // llvm.hexagon.A5.vaddhubs
    1, // llvm.hexagon.C2.all8
    1, // llvm.hexagon.C2.and
    1, // llvm.hexagon.C2.andn
    1, // llvm.hexagon.C2.any8
    1, // llvm.hexagon.C2.bitsclr
    1, // llvm.hexagon.C2.bitsclri
    1, // llvm.hexagon.C2.bitsset
    1, // llvm.hexagon.C2.cmpeq
    1, // llvm.hexagon.C2.cmpeqi
    1, // llvm.hexagon.C2.cmpeqp
    1, // llvm.hexagon.C2.cmpgei
    1, // llvm.hexagon.C2.cmpgeui
    1, // llvm.hexagon.C2.cmpgt
    1, // llvm.hexagon.C2.cmpgti
    1, // llvm.hexagon.C2.cmpgtp
    1, // llvm.hexagon.C2.cmpgtu
    1, // llvm.hexagon.C2.cmpgtui
    1, // llvm.hexagon.C2.cmpgtup
    1, // llvm.hexagon.C2.cmplt
    1, // llvm.hexagon.C2.cmpltu
    1, // llvm.hexagon.C2.mask
    1, // llvm.hexagon.C2.mux
    1, // llvm.hexagon.C2.muxii
    1, // llvm.hexagon.C2.muxir
    1, // llvm.hexagon.C2.muxri
    1, // llvm.hexagon.C2.not
    1, // llvm.hexagon.C2.or
    1, // llvm.hexagon.C2.orn
    1, // llvm.hexagon.C2.pxfer.map
    1, // llvm.hexagon.C2.tfrpr
    1, // llvm.hexagon.C2.tfrrp
    1, // llvm.hexagon.C2.vitpack
    1, // llvm.hexagon.C2.vmux
    1, // llvm.hexagon.C2.xor
    1, // llvm.hexagon.C4.and.and
    1, // llvm.hexagon.C4.and.andn
    1, // llvm.hexagon.C4.and.or
    1, // llvm.hexagon.C4.and.orn
    1, // llvm.hexagon.C4.cmplte
    1, // llvm.hexagon.C4.cmpltei
    1, // llvm.hexagon.C4.cmplteu
    1, // llvm.hexagon.C4.cmplteui
    1, // llvm.hexagon.C4.cmpneq
    1, // llvm.hexagon.C4.cmpneqi
    1, // llvm.hexagon.C4.fastcorner9
    1, // llvm.hexagon.C4.fastcorner9.not
    1, // llvm.hexagon.C4.nbitsclr
    1, // llvm.hexagon.C4.nbitsclri
    1, // llvm.hexagon.C4.nbitsset
    1, // llvm.hexagon.C4.or.and
    1, // llvm.hexagon.C4.or.andn
    1, // llvm.hexagon.C4.or.or
    1, // llvm.hexagon.C4.or.orn
    1, // llvm.hexagon.F2.conv.d2df
    1, // llvm.hexagon.F2.conv.d2sf
    1, // llvm.hexagon.F2.conv.df2d
    1, // llvm.hexagon.F2.conv.df2d.chop
    1, // llvm.hexagon.F2.conv.df2sf
    1, // llvm.hexagon.F2.conv.df2ud
    1, // llvm.hexagon.F2.conv.df2ud.chop
    1, // llvm.hexagon.F2.conv.df2uw
    1, // llvm.hexagon.F2.conv.df2uw.chop
    1, // llvm.hexagon.F2.conv.df2w
    1, // llvm.hexagon.F2.conv.df2w.chop
    1, // llvm.hexagon.F2.conv.sf2d
    1, // llvm.hexagon.F2.conv.sf2d.chop
    1, // llvm.hexagon.F2.conv.sf2df
    1, // llvm.hexagon.F2.conv.sf2ud
    1, // llvm.hexagon.F2.conv.sf2ud.chop
    1, // llvm.hexagon.F2.conv.sf2uw
    1, // llvm.hexagon.F2.conv.sf2uw.chop
    1, // llvm.hexagon.F2.conv.sf2w
    1, // llvm.hexagon.F2.conv.sf2w.chop
    1, // llvm.hexagon.F2.conv.ud2df
    1, // llvm.hexagon.F2.conv.ud2sf
    1, // llvm.hexagon.F2.conv.uw2df
    1, // llvm.hexagon.F2.conv.uw2sf
    1, // llvm.hexagon.F2.conv.w2df
    1, // llvm.hexagon.F2.conv.w2sf
    1, // llvm.hexagon.F2.dfadd
    1, // llvm.hexagon.F2.dfclass
    1, // llvm.hexagon.F2.dfcmpeq
    1, // llvm.hexagon.F2.dfcmpge
    1, // llvm.hexagon.F2.dfcmpgt
    1, // llvm.hexagon.F2.dfcmpuo
    1, // llvm.hexagon.F2.dffixupd
    1, // llvm.hexagon.F2.dffixupn
    1, // llvm.hexagon.F2.dffixupr
    1, // llvm.hexagon.F2.dffma
    1, // llvm.hexagon.F2.dffma.lib
    1, // llvm.hexagon.F2.dffma.sc
    1, // llvm.hexagon.F2.dffms
    1, // llvm.hexagon.F2.dffms.lib
    1, // llvm.hexagon.F2.dfimm.n
    1, // llvm.hexagon.F2.dfimm.p
    1, // llvm.hexagon.F2.dfmax
    1, // llvm.hexagon.F2.dfmin
    1, // llvm.hexagon.F2.dfmpy
    1, // llvm.hexagon.F2.dfsub
    1, // llvm.hexagon.F2.sfadd
    1, // llvm.hexagon.F2.sfclass
    1, // llvm.hexagon.F2.sfcmpeq
    1, // llvm.hexagon.F2.sfcmpge
    1, // llvm.hexagon.F2.sfcmpgt
    1, // llvm.hexagon.F2.sfcmpuo
    1, // llvm.hexagon.F2.sffixupd
    1, // llvm.hexagon.F2.sffixupn
    1, // llvm.hexagon.F2.sffixupr
    1, // llvm.hexagon.F2.sffma
    1, // llvm.hexagon.F2.sffma.lib
    1, // llvm.hexagon.F2.sffma.sc
    1, // llvm.hexagon.F2.sffms
    1, // llvm.hexagon.F2.sffms.lib
    1, // llvm.hexagon.F2.sfimm.n
    1, // llvm.hexagon.F2.sfimm.p
    1, // llvm.hexagon.F2.sfmax
    1, // llvm.hexagon.F2.sfmin
    1, // llvm.hexagon.F2.sfmpy
    1, // llvm.hexagon.F2.sfsub
    1, // llvm.hexagon.M2.acci
    1, // llvm.hexagon.M2.accii
    1, // llvm.hexagon.M2.cmaci.s0
    1, // llvm.hexagon.M2.cmacr.s0
    1, // llvm.hexagon.M2.cmacs.s0
    1, // llvm.hexagon.M2.cmacs.s1
    1, // llvm.hexagon.M2.cmacsc.s0
    1, // llvm.hexagon.M2.cmacsc.s1
    1, // llvm.hexagon.M2.cmpyi.s0
    1, // llvm.hexagon.M2.cmpyr.s0
    1, // llvm.hexagon.M2.cmpyrs.s0
    1, // llvm.hexagon.M2.cmpyrs.s1
    1, // llvm.hexagon.M2.cmpyrsc.s0
    1, // llvm.hexagon.M2.cmpyrsc.s1
    1, // llvm.hexagon.M2.cmpys.s0
    1, // llvm.hexagon.M2.cmpys.s1
    1, // llvm.hexagon.M2.cmpysc.s0
    1, // llvm.hexagon.M2.cmpysc.s1
    1, // llvm.hexagon.M2.cnacs.s0
    1, // llvm.hexagon.M2.cnacs.s1
    1, // llvm.hexagon.M2.cnacsc.s0
    1, // llvm.hexagon.M2.cnacsc.s1
    1, // llvm.hexagon.M2.dpmpyss.acc.s0
    1, // llvm.hexagon.M2.dpmpyss.nac.s0
    1, // llvm.hexagon.M2.dpmpyss.rnd.s0
    1, // llvm.hexagon.M2.dpmpyss.s0
    1, // llvm.hexagon.M2.dpmpyuu.acc.s0
    1, // llvm.hexagon.M2.dpmpyuu.nac.s0
    1, // llvm.hexagon.M2.dpmpyuu.s0
    1, // llvm.hexagon.M2.hmmpyh.rs1
    1, // llvm.hexagon.M2.hmmpyh.s1
    1, // llvm.hexagon.M2.hmmpyl.rs1
    1, // llvm.hexagon.M2.hmmpyl.s1
    1, // llvm.hexagon.M2.maci
    1, // llvm.hexagon.M2.macsin
    1, // llvm.hexagon.M2.macsip
    1, // llvm.hexagon.M2.mmachs.rs0
    1, // llvm.hexagon.M2.mmachs.rs1
    1, // llvm.hexagon.M2.mmachs.s0
    1, // llvm.hexagon.M2.mmachs.s1
    1, // llvm.hexagon.M2.mmacls.rs0
    1, // llvm.hexagon.M2.mmacls.rs1
    1, // llvm.hexagon.M2.mmacls.s0
    1, // llvm.hexagon.M2.mmacls.s1
    1, // llvm.hexagon.M2.mmacuhs.rs0
    1, // llvm.hexagon.M2.mmacuhs.rs1
    1, // llvm.hexagon.M2.mmacuhs.s0
    1, // llvm.hexagon.M2.mmacuhs.s1
    1, // llvm.hexagon.M2.mmaculs.rs0
    1, // llvm.hexagon.M2.mmaculs.rs1
    1, // llvm.hexagon.M2.mmaculs.s0
    1, // llvm.hexagon.M2.mmaculs.s1
    1, // llvm.hexagon.M2.mmpyh.rs0
    1, // llvm.hexagon.M2.mmpyh.rs1
    1, // llvm.hexagon.M2.mmpyh.s0
    1, // llvm.hexagon.M2.mmpyh.s1
    1, // llvm.hexagon.M2.mmpyl.rs0
    1, // llvm.hexagon.M2.mmpyl.rs1
    1, // llvm.hexagon.M2.mmpyl.s0
    1, // llvm.hexagon.M2.mmpyl.s1
    1, // llvm.hexagon.M2.mmpyuh.rs0
    1, // llvm.hexagon.M2.mmpyuh.rs1
    1, // llvm.hexagon.M2.mmpyuh.s0
    1, // llvm.hexagon.M2.mmpyuh.s1
    1, // llvm.hexagon.M2.mmpyul.rs0
    1, // llvm.hexagon.M2.mmpyul.rs1
    1, // llvm.hexagon.M2.mmpyul.s0
    1, // llvm.hexagon.M2.mmpyul.s1
    1, // llvm.hexagon.M2.mpy.acc.hh.s0
    1, // llvm.hexagon.M2.mpy.acc.hh.s1
    1, // llvm.hexagon.M2.mpy.acc.hl.s0
    1, // llvm.hexagon.M2.mpy.acc.hl.s1
    1, // llvm.hexagon.M2.mpy.acc.lh.s0
    1, // llvm.hexagon.M2.mpy.acc.lh.s1
    1, // llvm.hexagon.M2.mpy.acc.ll.s0
    1, // llvm.hexagon.M2.mpy.acc.ll.s1
    1, // llvm.hexagon.M2.mpy.acc.sat.hh.s0
    1, // llvm.hexagon.M2.mpy.acc.sat.hh.s1
    1, // llvm.hexagon.M2.mpy.acc.sat.hl.s0
    1, // llvm.hexagon.M2.mpy.acc.sat.hl.s1
    1, // llvm.hexagon.M2.mpy.acc.sat.lh.s0
    1, // llvm.hexagon.M2.mpy.acc.sat.lh.s1
    1, // llvm.hexagon.M2.mpy.acc.sat.ll.s0
    1, // llvm.hexagon.M2.mpy.acc.sat.ll.s1
    1, // llvm.hexagon.M2.mpy.hh.s0
    1, // llvm.hexagon.M2.mpy.hh.s1
    1, // llvm.hexagon.M2.mpy.hl.s0
    1, // llvm.hexagon.M2.mpy.hl.s1
    1, // llvm.hexagon.M2.mpy.lh.s0
    1, // llvm.hexagon.M2.mpy.lh.s1
    1, // llvm.hexagon.M2.mpy.ll.s0
    1, // llvm.hexagon.M2.mpy.ll.s1
    1, // llvm.hexagon.M2.mpy.nac.hh.s0
    1, // llvm.hexagon.M2.mpy.nac.hh.s1
    1, // llvm.hexagon.M2.mpy.nac.hl.s0
    1, // llvm.hexagon.M2.mpy.nac.hl.s1
    1, // llvm.hexagon.M2.mpy.nac.lh.s0
    1, // llvm.hexagon.M2.mpy.nac.lh.s1
    1, // llvm.hexagon.M2.mpy.nac.ll.s0
    1, // llvm.hexagon.M2.mpy.nac.ll.s1
    1, // llvm.hexagon.M2.mpy.nac.sat.hh.s0
    1, // llvm.hexagon.M2.mpy.nac.sat.hh.s1
    1, // llvm.hexagon.M2.mpy.nac.sat.hl.s0
    1, // llvm.hexagon.M2.mpy.nac.sat.hl.s1
    1, // llvm.hexagon.M2.mpy.nac.sat.lh.s0
    1, // llvm.hexagon.M2.mpy.nac.sat.lh.s1
    1, // llvm.hexagon.M2.mpy.nac.sat.ll.s0
    1, // llvm.hexagon.M2.mpy.nac.sat.ll.s1
    1, // llvm.hexagon.M2.mpy.rnd.hh.s0
    1, // llvm.hexagon.M2.mpy.rnd.hh.s1
    1, // llvm.hexagon.M2.mpy.rnd.hl.s0
    1, // llvm.hexagon.M2.mpy.rnd.hl.s1
    1, // llvm.hexagon.M2.mpy.rnd.lh.s0
    1, // llvm.hexagon.M2.mpy.rnd.lh.s1
    1, // llvm.hexagon.M2.mpy.rnd.ll.s0
    1, // llvm.hexagon.M2.mpy.rnd.ll.s1
    1, // llvm.hexagon.M2.mpy.sat.hh.s0
    1, // llvm.hexagon.M2.mpy.sat.hh.s1
    1, // llvm.hexagon.M2.mpy.sat.hl.s0
    1, // llvm.hexagon.M2.mpy.sat.hl.s1
    1, // llvm.hexagon.M2.mpy.sat.lh.s0
    1, // llvm.hexagon.M2.mpy.sat.lh.s1
    1, // llvm.hexagon.M2.mpy.sat.ll.s0
    1, // llvm.hexagon.M2.mpy.sat.ll.s1
    1, // llvm.hexagon.M2.mpy.sat.rnd.hh.s0
    1, // llvm.hexagon.M2.mpy.sat.rnd.hh.s1
    1, // llvm.hexagon.M2.mpy.sat.rnd.hl.s0
    1, // llvm.hexagon.M2.mpy.sat.rnd.hl.s1
    1, // llvm.hexagon.M2.mpy.sat.rnd.lh.s0
    1, // llvm.hexagon.M2.mpy.sat.rnd.lh.s1
    1, // llvm.hexagon.M2.mpy.sat.rnd.ll.s0
    1, // llvm.hexagon.M2.mpy.sat.rnd.ll.s1
    1, // llvm.hexagon.M2.mpy.up
    1, // llvm.hexagon.M2.mpy.up.s1
    1, // llvm.hexagon.M2.mpy.up.s1.sat
    1, // llvm.hexagon.M2.mpyd.acc.hh.s0
    1, // llvm.hexagon.M2.mpyd.acc.hh.s1
    1, // llvm.hexagon.M2.mpyd.acc.hl.s0
    1, // llvm.hexagon.M2.mpyd.acc.hl.s1
    1, // llvm.hexagon.M2.mpyd.acc.lh.s0
    1, // llvm.hexagon.M2.mpyd.acc.lh.s1
    1, // llvm.hexagon.M2.mpyd.acc.ll.s0
    1, // llvm.hexagon.M2.mpyd.acc.ll.s1
    1, // llvm.hexagon.M2.mpyd.hh.s0
    1, // llvm.hexagon.M2.mpyd.hh.s1
    1, // llvm.hexagon.M2.mpyd.hl.s0
    1, // llvm.hexagon.M2.mpyd.hl.s1
    1, // llvm.hexagon.M2.mpyd.lh.s0
    1, // llvm.hexagon.M2.mpyd.lh.s1
    1, // llvm.hexagon.M2.mpyd.ll.s0
    1, // llvm.hexagon.M2.mpyd.ll.s1
    1, // llvm.hexagon.M2.mpyd.nac.hh.s0
    1, // llvm.hexagon.M2.mpyd.nac.hh.s1
    1, // llvm.hexagon.M2.mpyd.nac.hl.s0
    1, // llvm.hexagon.M2.mpyd.nac.hl.s1
    1, // llvm.hexagon.M2.mpyd.nac.lh.s0
    1, // llvm.hexagon.M2.mpyd.nac.lh.s1
    1, // llvm.hexagon.M2.mpyd.nac.ll.s0
    1, // llvm.hexagon.M2.mpyd.nac.ll.s1
    1, // llvm.hexagon.M2.mpyd.rnd.hh.s0
    1, // llvm.hexagon.M2.mpyd.rnd.hh.s1
    1, // llvm.hexagon.M2.mpyd.rnd.hl.s0
    1, // llvm.hexagon.M2.mpyd.rnd.hl.s1
    1, // llvm.hexagon.M2.mpyd.rnd.lh.s0
    1, // llvm.hexagon.M2.mpyd.rnd.lh.s1
    1, // llvm.hexagon.M2.mpyd.rnd.ll.s0
    1, // llvm.hexagon.M2.mpyd.rnd.ll.s1
    1, // llvm.hexagon.M2.mpyi
    1, // llvm.hexagon.M2.mpysmi
    1, // llvm.hexagon.M2.mpysu.up
    1, // llvm.hexagon.M2.mpyu.acc.hh.s0
    1, // llvm.hexagon.M2.mpyu.acc.hh.s1
    1, // llvm.hexagon.M2.mpyu.acc.hl.s0
    1, // llvm.hexagon.M2.mpyu.acc.hl.s1
    1, // llvm.hexagon.M2.mpyu.acc.lh.s0
    1, // llvm.hexagon.M2.mpyu.acc.lh.s1
    1, // llvm.hexagon.M2.mpyu.acc.ll.s0
    1, // llvm.hexagon.M2.mpyu.acc.ll.s1
    1, // llvm.hexagon.M2.mpyu.hh.s0
    1, // llvm.hexagon.M2.mpyu.hh.s1
    1, // llvm.hexagon.M2.mpyu.hl.s0
    1, // llvm.hexagon.M2.mpyu.hl.s1
    1, // llvm.hexagon.M2.mpyu.lh.s0
    1, // llvm.hexagon.M2.mpyu.lh.s1
    1, // llvm.hexagon.M2.mpyu.ll.s0
    1, // llvm.hexagon.M2.mpyu.ll.s1
    1, // llvm.hexagon.M2.mpyu.nac.hh.s0
    1, // llvm.hexagon.M2.mpyu.nac.hh.s1
    1, // llvm.hexagon.M2.mpyu.nac.hl.s0
    1, // llvm.hexagon.M2.mpyu.nac.hl.s1
    1, // llvm.hexagon.M2.mpyu.nac.lh.s0
    1, // llvm.hexagon.M2.mpyu.nac.lh.s1
    1, // llvm.hexagon.M2.mpyu.nac.ll.s0
    1, // llvm.hexagon.M2.mpyu.nac.ll.s1
    1, // llvm.hexagon.M2.mpyu.up
    1, // llvm.hexagon.M2.mpyud.acc.hh.s0
    1, // llvm.hexagon.M2.mpyud.acc.hh.s1
    1, // llvm.hexagon.M2.mpyud.acc.hl.s0
    1, // llvm.hexagon.M2.mpyud.acc.hl.s1
    1, // llvm.hexagon.M2.mpyud.acc.lh.s0
    1, // llvm.hexagon.M2.mpyud.acc.lh.s1
    1, // llvm.hexagon.M2.mpyud.acc.ll.s0
    1, // llvm.hexagon.M2.mpyud.acc.ll.s1
    1, // llvm.hexagon.M2.mpyud.hh.s0
    1, // llvm.hexagon.M2.mpyud.hh.s1
    1, // llvm.hexagon.M2.mpyud.hl.s0
    1, // llvm.hexagon.M2.mpyud.hl.s1
    1, // llvm.hexagon.M2.mpyud.lh.s0
    1, // llvm.hexagon.M2.mpyud.lh.s1
    1, // llvm.hexagon.M2.mpyud.ll.s0
    1, // llvm.hexagon.M2.mpyud.ll.s1
    1, // llvm.hexagon.M2.mpyud.nac.hh.s0
    1, // llvm.hexagon.M2.mpyud.nac.hh.s1
    1, // llvm.hexagon.M2.mpyud.nac.hl.s0
    1, // llvm.hexagon.M2.mpyud.nac.hl.s1
    1, // llvm.hexagon.M2.mpyud.nac.lh.s0
    1, // llvm.hexagon.M2.mpyud.nac.lh.s1
    1, // llvm.hexagon.M2.mpyud.nac.ll.s0
    1, // llvm.hexagon.M2.mpyud.nac.ll.s1
    1, // llvm.hexagon.M2.mpyui
    1, // llvm.hexagon.M2.nacci
    1, // llvm.hexagon.M2.naccii
    1, // llvm.hexagon.M2.subacc
    1, // llvm.hexagon.M2.vabsdiffh
    1, // llvm.hexagon.M2.vabsdiffw
    1, // llvm.hexagon.M2.vcmac.s0.sat.i
    1, // llvm.hexagon.M2.vcmac.s0.sat.r
    1, // llvm.hexagon.M2.vcmpy.s0.sat.i
    1, // llvm.hexagon.M2.vcmpy.s0.sat.r
    1, // llvm.hexagon.M2.vcmpy.s1.sat.i
    1, // llvm.hexagon.M2.vcmpy.s1.sat.r
    1, // llvm.hexagon.M2.vdmacs.s0
    1, // llvm.hexagon.M2.vdmacs.s1
    1, // llvm.hexagon.M2.vdmpyrs.s0
    1, // llvm.hexagon.M2.vdmpyrs.s1
    1, // llvm.hexagon.M2.vdmpys.s0
    1, // llvm.hexagon.M2.vdmpys.s1
    1, // llvm.hexagon.M2.vmac2
    1, // llvm.hexagon.M2.vmac2es
    1, // llvm.hexagon.M2.vmac2es.s0
    1, // llvm.hexagon.M2.vmac2es.s1
    1, // llvm.hexagon.M2.vmac2s.s0
    1, // llvm.hexagon.M2.vmac2s.s1
    1, // llvm.hexagon.M2.vmac2su.s0
    1, // llvm.hexagon.M2.vmac2su.s1
    1, // llvm.hexagon.M2.vmpy2es.s0
    1, // llvm.hexagon.M2.vmpy2es.s1
    1, // llvm.hexagon.M2.vmpy2s.s0
    1, // llvm.hexagon.M2.vmpy2s.s0pack
    1, // llvm.hexagon.M2.vmpy2s.s1
    1, // llvm.hexagon.M2.vmpy2s.s1pack
    1, // llvm.hexagon.M2.vmpy2su.s0
    1, // llvm.hexagon.M2.vmpy2su.s1
    1, // llvm.hexagon.M2.vraddh
    1, // llvm.hexagon.M2.vradduh
    1, // llvm.hexagon.M2.vrcmaci.s0
    1, // llvm.hexagon.M2.vrcmaci.s0c
    1, // llvm.hexagon.M2.vrcmacr.s0
    1, // llvm.hexagon.M2.vrcmacr.s0c
    1, // llvm.hexagon.M2.vrcmpyi.s0
    1, // llvm.hexagon.M2.vrcmpyi.s0c
    1, // llvm.hexagon.M2.vrcmpyr.s0
    1, // llvm.hexagon.M2.vrcmpyr.s0c
    1, // llvm.hexagon.M2.vrcmpys.acc.s1
    1, // llvm.hexagon.M2.vrcmpys.s1
    1, // llvm.hexagon.M2.vrcmpys.s1rp
    1, // llvm.hexagon.M2.vrmac.s0
    1, // llvm.hexagon.M2.vrmpy.s0
    1, // llvm.hexagon.M2.xor.xacc
    1, // llvm.hexagon.M4.and.and
    1, // llvm.hexagon.M4.and.andn
    1, // llvm.hexagon.M4.and.or
    1, // llvm.hexagon.M4.and.xor
    1, // llvm.hexagon.M4.cmpyi.wh
    1, // llvm.hexagon.M4.cmpyi.whc
    1, // llvm.hexagon.M4.cmpyr.wh
    1, // llvm.hexagon.M4.cmpyr.whc
    1, // llvm.hexagon.M4.mac.up.s1.sat
    1, // llvm.hexagon.M4.mpyri.addi
    1, // llvm.hexagon.M4.mpyri.addr
    1, // llvm.hexagon.M4.mpyri.addr.u2
    1, // llvm.hexagon.M4.mpyrr.addi
    1, // llvm.hexagon.M4.mpyrr.addr
    1, // llvm.hexagon.M4.nac.up.s1.sat
    1, // llvm.hexagon.M4.or.and
    1, // llvm.hexagon.M4.or.andn
    1, // llvm.hexagon.M4.or.or
    1, // llvm.hexagon.M4.or.xor
    1, // llvm.hexagon.M4.pmpyw
    1, // llvm.hexagon.M4.pmpyw.acc
    1, // llvm.hexagon.M4.vpmpyh
    1, // llvm.hexagon.M4.vpmpyh.acc
    1, // llvm.hexagon.M4.vrmpyeh.acc.s0
    1, // llvm.hexagon.M4.vrmpyeh.acc.s1
    1, // llvm.hexagon.M4.vrmpyeh.s0
    1, // llvm.hexagon.M4.vrmpyeh.s1
    1, // llvm.hexagon.M4.vrmpyoh.acc.s0
    1, // llvm.hexagon.M4.vrmpyoh.acc.s1
    1, // llvm.hexagon.M4.vrmpyoh.s0
    1, // llvm.hexagon.M4.vrmpyoh.s1
    1, // llvm.hexagon.M4.xor.and
    1, // llvm.hexagon.M4.xor.andn
    1, // llvm.hexagon.M4.xor.or
    1, // llvm.hexagon.M4.xor.xacc
    1, // llvm.hexagon.M5.vdmacbsu
    1, // llvm.hexagon.M5.vdmpybsu
    1, // llvm.hexagon.M5.vmacbsu
    1, // llvm.hexagon.M5.vmacbuu
    1, // llvm.hexagon.M5.vmpybsu
    1, // llvm.hexagon.M5.vmpybuu
    1, // llvm.hexagon.M5.vrmacbsu
    1, // llvm.hexagon.M5.vrmacbuu
    1, // llvm.hexagon.M5.vrmpybsu
    1, // llvm.hexagon.M5.vrmpybuu
    1, // llvm.hexagon.S2.addasl.rrri
    1, // llvm.hexagon.S2.asl.i.p
    1, // llvm.hexagon.S2.asl.i.p.acc
    1, // llvm.hexagon.S2.asl.i.p.and
    1, // llvm.hexagon.S2.asl.i.p.nac
    1, // llvm.hexagon.S2.asl.i.p.or
    1, // llvm.hexagon.S2.asl.i.p.xacc
    1, // llvm.hexagon.S2.asl.i.r
    1, // llvm.hexagon.S2.asl.i.r.acc
    1, // llvm.hexagon.S2.asl.i.r.and
    1, // llvm.hexagon.S2.asl.i.r.nac
    1, // llvm.hexagon.S2.asl.i.r.or
    1, // llvm.hexagon.S2.asl.i.r.sat
    1, // llvm.hexagon.S2.asl.i.r.xacc
    1, // llvm.hexagon.S2.asl.i.vh
    1, // llvm.hexagon.S2.asl.i.vw
    1, // llvm.hexagon.S2.asl.r.p
    1, // llvm.hexagon.S2.asl.r.p.acc
    1, // llvm.hexagon.S2.asl.r.p.and
    1, // llvm.hexagon.S2.asl.r.p.nac
    1, // llvm.hexagon.S2.asl.r.p.or
    1, // llvm.hexagon.S2.asl.r.p.xor
    1, // llvm.hexagon.S2.asl.r.r
    1, // llvm.hexagon.S2.asl.r.r.acc
    1, // llvm.hexagon.S2.asl.r.r.and
    1, // llvm.hexagon.S2.asl.r.r.nac
    1, // llvm.hexagon.S2.asl.r.r.or
    1, // llvm.hexagon.S2.asl.r.r.sat
    1, // llvm.hexagon.S2.asl.r.vh
    1, // llvm.hexagon.S2.asl.r.vw
    1, // llvm.hexagon.S2.asr.i.p
    1, // llvm.hexagon.S2.asr.i.p.acc
    1, // llvm.hexagon.S2.asr.i.p.and
    1, // llvm.hexagon.S2.asr.i.p.nac
    1, // llvm.hexagon.S2.asr.i.p.or
    1, // llvm.hexagon.S2.asr.i.p.rnd
    1, // llvm.hexagon.S2.asr.i.p.rnd.goodsyntax
    1, // llvm.hexagon.S2.asr.i.r
    1, // llvm.hexagon.S2.asr.i.r.acc
    1, // llvm.hexagon.S2.asr.i.r.and
    1, // llvm.hexagon.S2.asr.i.r.nac
    1, // llvm.hexagon.S2.asr.i.r.or
    1, // llvm.hexagon.S2.asr.i.r.rnd
    1, // llvm.hexagon.S2.asr.i.r.rnd.goodsyntax
    1, // llvm.hexagon.S2.asr.i.svw.trun
    1, // llvm.hexagon.S2.asr.i.vh
    1, // llvm.hexagon.S2.asr.i.vw
    1, // llvm.hexagon.S2.asr.r.p
    1, // llvm.hexagon.S2.asr.r.p.acc
    1, // llvm.hexagon.S2.asr.r.p.and
    1, // llvm.hexagon.S2.asr.r.p.nac
    1, // llvm.hexagon.S2.asr.r.p.or
    1, // llvm.hexagon.S2.asr.r.p.xor
    1, // llvm.hexagon.S2.asr.r.r
    1, // llvm.hexagon.S2.asr.r.r.acc
    1, // llvm.hexagon.S2.asr.r.r.and
    1, // llvm.hexagon.S2.asr.r.r.nac
    1, // llvm.hexagon.S2.asr.r.r.or
    1, // llvm.hexagon.S2.asr.r.r.sat
    1, // llvm.hexagon.S2.asr.r.svw.trun
    1, // llvm.hexagon.S2.asr.r.vh
    1, // llvm.hexagon.S2.asr.r.vw
    1, // llvm.hexagon.S2.brev
    1, // llvm.hexagon.S2.brevp
    1, // llvm.hexagon.S2.cl0
    1, // llvm.hexagon.S2.cl0p
    1, // llvm.hexagon.S2.cl1
    1, // llvm.hexagon.S2.cl1p
    1, // llvm.hexagon.S2.clb
    1, // llvm.hexagon.S2.clbnorm
    1, // llvm.hexagon.S2.clbp
    1, // llvm.hexagon.S2.clrbit.i
    1, // llvm.hexagon.S2.clrbit.r
    1, // llvm.hexagon.S2.ct0
    1, // llvm.hexagon.S2.ct0p
    1, // llvm.hexagon.S2.ct1
    1, // llvm.hexagon.S2.ct1p
    1, // llvm.hexagon.S2.deinterleave
    1, // llvm.hexagon.S2.extractu
    1, // llvm.hexagon.S2.extractu.rp
    1, // llvm.hexagon.S2.extractup
    1, // llvm.hexagon.S2.extractup.rp
    1, // llvm.hexagon.S2.insert
    1, // llvm.hexagon.S2.insert.rp
    1, // llvm.hexagon.S2.insertp
    1, // llvm.hexagon.S2.insertp.rp
    1, // llvm.hexagon.S2.interleave
    1, // llvm.hexagon.S2.lfsp
    1, // llvm.hexagon.S2.lsl.r.p
    1, // llvm.hexagon.S2.lsl.r.p.acc
    1, // llvm.hexagon.S2.lsl.r.p.and
    1, // llvm.hexagon.S2.lsl.r.p.nac
    1, // llvm.hexagon.S2.lsl.r.p.or
    1, // llvm.hexagon.S2.lsl.r.p.xor
    1, // llvm.hexagon.S2.lsl.r.r
    1, // llvm.hexagon.S2.lsl.r.r.acc
    1, // llvm.hexagon.S2.lsl.r.r.and
    1, // llvm.hexagon.S2.lsl.r.r.nac
    1, // llvm.hexagon.S2.lsl.r.r.or
    1, // llvm.hexagon.S2.lsl.r.vh
    1, // llvm.hexagon.S2.lsl.r.vw
    1, // llvm.hexagon.S2.lsr.i.p
    1, // llvm.hexagon.S2.lsr.i.p.acc
    1, // llvm.hexagon.S2.lsr.i.p.and
    1, // llvm.hexagon.S2.lsr.i.p.nac
    1, // llvm.hexagon.S2.lsr.i.p.or
    1, // llvm.hexagon.S2.lsr.i.p.xacc
    1, // llvm.hexagon.S2.lsr.i.r
    1, // llvm.hexagon.S2.lsr.i.r.acc
    1, // llvm.hexagon.S2.lsr.i.r.and
    1, // llvm.hexagon.S2.lsr.i.r.nac
    1, // llvm.hexagon.S2.lsr.i.r.or
    1, // llvm.hexagon.S2.lsr.i.r.xacc
    1, // llvm.hexagon.S2.lsr.i.vh
    1, // llvm.hexagon.S2.lsr.i.vw
    1, // llvm.hexagon.S2.lsr.r.p
    1, // llvm.hexagon.S2.lsr.r.p.acc
    1, // llvm.hexagon.S2.lsr.r.p.and
    1, // llvm.hexagon.S2.lsr.r.p.nac
    1, // llvm.hexagon.S2.lsr.r.p.or
    1, // llvm.hexagon.S2.lsr.r.p.xor
    1, // llvm.hexagon.S2.lsr.r.r
    1, // llvm.hexagon.S2.lsr.r.r.acc
    1, // llvm.hexagon.S2.lsr.r.r.and
    1, // llvm.hexagon.S2.lsr.r.r.nac
    1, // llvm.hexagon.S2.lsr.r.r.or
    1, // llvm.hexagon.S2.lsr.r.vh
    1, // llvm.hexagon.S2.lsr.r.vw
    1, // llvm.hexagon.S2.packhl
    1, // llvm.hexagon.S2.parityp
    1, // llvm.hexagon.S2.setbit.i
    1, // llvm.hexagon.S2.setbit.r
    1, // llvm.hexagon.S2.shuffeb
    1, // llvm.hexagon.S2.shuffeh
    1, // llvm.hexagon.S2.shuffob
    1, // llvm.hexagon.S2.shuffoh
    1, // llvm.hexagon.S2.svsathb
    1, // llvm.hexagon.S2.svsathub
    1, // llvm.hexagon.S2.tableidxb.goodsyntax
    1, // llvm.hexagon.S2.tableidxd.goodsyntax
    1, // llvm.hexagon.S2.tableidxh.goodsyntax
    1, // llvm.hexagon.S2.tableidxw.goodsyntax
    1, // llvm.hexagon.S2.togglebit.i
    1, // llvm.hexagon.S2.togglebit.r
    1, // llvm.hexagon.S2.tstbit.i
    1, // llvm.hexagon.S2.tstbit.r
    1, // llvm.hexagon.S2.valignib
    1, // llvm.hexagon.S2.valignrb
    1, // llvm.hexagon.S2.vcnegh
    1, // llvm.hexagon.S2.vcrotate
    1, // llvm.hexagon.S2.vrcnegh
    1, // llvm.hexagon.S2.vrndpackwh
    1, // llvm.hexagon.S2.vrndpackwhs
    1, // llvm.hexagon.S2.vsathb
    1, // llvm.hexagon.S2.vsathb.nopack
    1, // llvm.hexagon.S2.vsathub
    1, // llvm.hexagon.S2.vsathub.nopack
    1, // llvm.hexagon.S2.vsatwh
    1, // llvm.hexagon.S2.vsatwh.nopack
    1, // llvm.hexagon.S2.vsatwuh
    1, // llvm.hexagon.S2.vsatwuh.nopack
    1, // llvm.hexagon.S2.vsplatrb
    1, // llvm.hexagon.S2.vsplatrh
    1, // llvm.hexagon.S2.vspliceib
    1, // llvm.hexagon.S2.vsplicerb
    1, // llvm.hexagon.S2.vsxtbh
    1, // llvm.hexagon.S2.vsxthw
    1, // llvm.hexagon.S2.vtrunehb
    1, // llvm.hexagon.S2.vtrunewh
    1, // llvm.hexagon.S2.vtrunohb
    1, // llvm.hexagon.S2.vtrunowh
    1, // llvm.hexagon.S2.vzxtbh
    1, // llvm.hexagon.S2.vzxthw
    1, // llvm.hexagon.S4.addaddi
    1, // llvm.hexagon.S4.addi.asl.ri
    1, // llvm.hexagon.S4.addi.lsr.ri
    1, // llvm.hexagon.S4.andi.asl.ri
    1, // llvm.hexagon.S4.andi.lsr.ri
    1, // llvm.hexagon.S4.clbaddi
    1, // llvm.hexagon.S4.clbpaddi
    1, // llvm.hexagon.S4.clbpnorm
    1, // llvm.hexagon.S4.extract
    1, // llvm.hexagon.S4.extract.rp
    1, // llvm.hexagon.S4.extractp
    1, // llvm.hexagon.S4.extractp.rp
    1, // llvm.hexagon.S4.lsli
    1, // llvm.hexagon.S4.ntstbit.i
    1, // llvm.hexagon.S4.ntstbit.r
    1, // llvm.hexagon.S4.or.andi
    1, // llvm.hexagon.S4.or.andix
    1, // llvm.hexagon.S4.or.ori
    1, // llvm.hexagon.S4.ori.asl.ri
    1, // llvm.hexagon.S4.ori.lsr.ri
    1, // llvm.hexagon.S4.parity
    1, // llvm.hexagon.S4.subaddi
    1, // llvm.hexagon.S4.subi.asl.ri
    1, // llvm.hexagon.S4.subi.lsr.ri
    1, // llvm.hexagon.S4.vrcrotate
    1, // llvm.hexagon.S4.vrcrotate.acc
    1, // llvm.hexagon.S4.vxaddsubh
    1, // llvm.hexagon.S4.vxaddsubhr
    1, // llvm.hexagon.S4.vxaddsubw
    1, // llvm.hexagon.S4.vxsubaddh
    1, // llvm.hexagon.S4.vxsubaddhr
    1, // llvm.hexagon.S4.vxsubaddw
    1, // llvm.hexagon.S5.asrhub.rnd.sat.goodsyntax
    1, // llvm.hexagon.S5.asrhub.sat
    1, // llvm.hexagon.S5.popcountp
    1, // llvm.hexagon.S5.vasrhrnd.goodsyntax
    1, // llvm.hexagon.SI.to.SXTHI.asrh
    2, // llvm.hexagon.circ.ldd
    12, // llvm.init.trampoline
    4, // llvm.invariant.end
    13, // llvm.invariant.start
    13, // llvm.lifetime.end
    13, // llvm.lifetime.start
    1, // llvm.log
    1, // llvm.log10
    1, // llvm.log2
    9, // llvm.longjmp
    14, // llvm.memcpy
    14, // llvm.memmove
    12, // llvm.memset
    2, // llvm.mips.absq.s.ph
    2, // llvm.mips.absq.s.qb
    2, // llvm.mips.absq.s.w
    1, // llvm.mips.add.a.b
    1, // llvm.mips.add.a.d
    1, // llvm.mips.add.a.h
    1, // llvm.mips.add.a.w
    1, // llvm.mips.addq.ph
    1, // llvm.mips.addq.s.ph
    2, // llvm.mips.addq.s.w
    1, // llvm.mips.addqh.ph
    1, // llvm.mips.addqh.r.ph
    1, // llvm.mips.addqh.r.w
    1, // llvm.mips.addqh.w
    1, // llvm.mips.adds.a.b
    1, // llvm.mips.adds.a.d
    1, // llvm.mips.adds.a.h
    1, // llvm.mips.adds.a.w
    1, // llvm.mips.adds.s.b
    1, // llvm.mips.adds.s.d
    1, // llvm.mips.adds.s.h
    1, // llvm.mips.adds.s.w
    1, // llvm.mips.adds.u.b
    1, // llvm.mips.adds.u.d
    1, // llvm.mips.adds.u.h
    1, // llvm.mips.adds.u.w
    2, // llvm.mips.addsc
    2, // llvm.mips.addu.ph
    1, // llvm.mips.addu.qb
    2, // llvm.mips.addu.s.ph
    1, // llvm.mips.addu.s.qb
    1, // llvm.mips.adduh.qb
    1, // llvm.mips.adduh.r.qb
    1, // llvm.mips.addv.b
    1, // llvm.mips.addv.d
    1, // llvm.mips.addv.h
    1, // llvm.mips.addv.w
    1, // llvm.mips.addvi.b
    1, // llvm.mips.addvi.d
    1, // llvm.mips.addvi.h
    1, // llvm.mips.addvi.w
    2, // llvm.mips.addwc
    1, // llvm.mips.and.v
    1, // llvm.mips.andi.b
    1, // llvm.mips.append
    1, // llvm.mips.asub.s.b
    1, // llvm.mips.asub.s.d
    1, // llvm.mips.asub.s.h
    1, // llvm.mips.asub.s.w
    1, // llvm.mips.asub.u.b
    1, // llvm.mips.asub.u.d
    1, // llvm.mips.asub.u.h
    1, // llvm.mips.asub.u.w
    1, // llvm.mips.ave.s.b
    1, // llvm.mips.ave.s.d
    1, // llvm.mips.ave.s.h
    1, // llvm.mips.ave.s.w
    1, // llvm.mips.ave.u.b
    1, // llvm.mips.ave.u.d
    1, // llvm.mips.ave.u.h
    1, // llvm.mips.ave.u.w
    1, // llvm.mips.aver.s.b
    1, // llvm.mips.aver.s.d
    1, // llvm.mips.aver.s.h
    1, // llvm.mips.aver.s.w
    1, // llvm.mips.aver.u.b
    1, // llvm.mips.aver.u.d
    1, // llvm.mips.aver.u.h
    1, // llvm.mips.aver.u.w
    1, // llvm.mips.balign
    1, // llvm.mips.bclr.b
    1, // llvm.mips.bclr.d
    1, // llvm.mips.bclr.h
    1, // llvm.mips.bclr.w
    1, // llvm.mips.bclri.b
    1, // llvm.mips.bclri.d
    1, // llvm.mips.bclri.h
    1, // llvm.mips.bclri.w
    1, // llvm.mips.binsl.b
    1, // llvm.mips.binsl.d
    1, // llvm.mips.binsl.h
    1, // llvm.mips.binsl.w
    1, // llvm.mips.binsli.b
    1, // llvm.mips.binsli.d
    1, // llvm.mips.binsli.h
    1, // llvm.mips.binsli.w
    1, // llvm.mips.binsr.b
    1, // llvm.mips.binsr.d
    1, // llvm.mips.binsr.h
    1, // llvm.mips.binsr.w
    1, // llvm.mips.binsri.b
    1, // llvm.mips.binsri.d
    1, // llvm.mips.binsri.h
    1, // llvm.mips.binsri.w
    1, // llvm.mips.bitrev
    1, // llvm.mips.bmnz.v
    1, // llvm.mips.bmnzi.b
    1, // llvm.mips.bmz.v
    1, // llvm.mips.bmzi.b
    1, // llvm.mips.bneg.b
    1, // llvm.mips.bneg.d
    1, // llvm.mips.bneg.h
    1, // llvm.mips.bneg.w
    1, // llvm.mips.bnegi.b
    1, // llvm.mips.bnegi.d
    1, // llvm.mips.bnegi.h
    1, // llvm.mips.bnegi.w
    1, // llvm.mips.bnz.b
    1, // llvm.mips.bnz.d
    1, // llvm.mips.bnz.h
    1, // llvm.mips.bnz.v
    1, // llvm.mips.bnz.w
    3, // llvm.mips.bposge32
    1, // llvm.mips.bsel.v
    1, // llvm.mips.bseli.b
    1, // llvm.mips.bset.b
    1, // llvm.mips.bset.d
    1, // llvm.mips.bset.h
    1, // llvm.mips.bset.w
    1, // llvm.mips.bseti.b
    1, // llvm.mips.bseti.d
    1, // llvm.mips.bseti.h
    1, // llvm.mips.bseti.w
    1, // llvm.mips.bz.b
    1, // llvm.mips.bz.d
    1, // llvm.mips.bz.h
    1, // llvm.mips.bz.v
    1, // llvm.mips.bz.w
    1, // llvm.mips.ceq.b
    1, // llvm.mips.ceq.d
    1, // llvm.mips.ceq.h
    1, // llvm.mips.ceq.w
    1, // llvm.mips.ceqi.b
    1, // llvm.mips.ceqi.d
    1, // llvm.mips.ceqi.h
    1, // llvm.mips.ceqi.w
    2, // llvm.mips.cfcmsa
    1, // llvm.mips.cle.s.b
    1, // llvm.mips.cle.s.d
    1, // llvm.mips.cle.s.h
    1, // llvm.mips.cle.s.w
    1, // llvm.mips.cle.u.b
    1, // llvm.mips.cle.u.d
    1, // llvm.mips.cle.u.h
    1, // llvm.mips.cle.u.w
    1, // llvm.mips.clei.s.b
    1, // llvm.mips.clei.s.d
    1, // llvm.mips.clei.s.h
    1, // llvm.mips.clei.s.w
    1, // llvm.mips.clei.u.b
    1, // llvm.mips.clei.u.d
    1, // llvm.mips.clei.u.h
    1, // llvm.mips.clei.u.w
    1, // llvm.mips.clt.s.b
    1, // llvm.mips.clt.s.d
    1, // llvm.mips.clt.s.h
    1, // llvm.mips.clt.s.w
    1, // llvm.mips.clt.u.b
    1, // llvm.mips.clt.u.d
    1, // llvm.mips.clt.u.h
    1, // llvm.mips.clt.u.w
    1, // llvm.mips.clti.s.b
    1, // llvm.mips.clti.s.d
    1, // llvm.mips.clti.s.h
    1, // llvm.mips.clti.s.w
    1, // llvm.mips.clti.u.b
    1, // llvm.mips.clti.u.d
    1, // llvm.mips.clti.u.h
    1, // llvm.mips.clti.u.w
    2, // llvm.mips.cmp.eq.ph
    2, // llvm.mips.cmp.le.ph
    2, // llvm.mips.cmp.lt.ph
    2, // llvm.mips.cmpgdu.eq.qb
    2, // llvm.mips.cmpgdu.le.qb
    2, // llvm.mips.cmpgdu.lt.qb
    2, // llvm.mips.cmpgu.eq.qb
    2, // llvm.mips.cmpgu.le.qb
    2, // llvm.mips.cmpgu.lt.qb
    2, // llvm.mips.cmpu.eq.qb
    2, // llvm.mips.cmpu.le.qb
    2, // llvm.mips.cmpu.lt.qb
    1, // llvm.mips.copy.s.b
    1, // llvm.mips.copy.s.d
    1, // llvm.mips.copy.s.h
    1, // llvm.mips.copy.s.w
    1, // llvm.mips.copy.u.b
    1, // llvm.mips.copy.u.d
    1, // llvm.mips.copy.u.h
    1, // llvm.mips.copy.u.w
    2, // llvm.mips.ctcmsa
    1, // llvm.mips.div.s.b
    1, // llvm.mips.div.s.d
    1, // llvm.mips.div.s.h
    1, // llvm.mips.div.s.w
    1, // llvm.mips.div.u.b
    1, // llvm.mips.div.u.d
    1, // llvm.mips.div.u.h
    1, // llvm.mips.div.u.w
    1, // llvm.mips.dlsa
    1, // llvm.mips.dotp.s.d
    1, // llvm.mips.dotp.s.h
    1, // llvm.mips.dotp.s.w
    1, // llvm.mips.dotp.u.d
    1, // llvm.mips.dotp.u.h
    1, // llvm.mips.dotp.u.w
    1, // llvm.mips.dpa.w.ph
    1, // llvm.mips.dpadd.s.d
    1, // llvm.mips.dpadd.s.h
    1, // llvm.mips.dpadd.s.w
    1, // llvm.mips.dpadd.u.d
    1, // llvm.mips.dpadd.u.h
    1, // llvm.mips.dpadd.u.w
    2, // llvm.mips.dpaq.s.w.ph
    2, // llvm.mips.dpaq.sa.l.w
    2, // llvm.mips.dpaqx.s.w.ph
    2, // llvm.mips.dpaqx.sa.w.ph
    1, // llvm.mips.dpau.h.qbl
    1, // llvm.mips.dpau.h.qbr
    1, // llvm.mips.dpax.w.ph
    1, // llvm.mips.dps.w.ph
    2, // llvm.mips.dpsq.s.w.ph
    2, // llvm.mips.dpsq.sa.l.w
    2, // llvm.mips.dpsqx.s.w.ph
    2, // llvm.mips.dpsqx.sa.w.ph
    1, // llvm.mips.dpsu.h.qbl
    1, // llvm.mips.dpsu.h.qbr
    1, // llvm.mips.dpsub.s.d
    1, // llvm.mips.dpsub.s.h
    1, // llvm.mips.dpsub.s.w
    1, // llvm.mips.dpsub.u.d
    1, // llvm.mips.dpsub.u.h
    1, // llvm.mips.dpsub.u.w
    1, // llvm.mips.dpsx.w.ph
    2, // llvm.mips.extp
    2, // llvm.mips.extpdp
    2, // llvm.mips.extr.r.w
    2, // llvm.mips.extr.rs.w
    2, // llvm.mips.extr.s.h
    2, // llvm.mips.extr.w
    1, // llvm.mips.fadd.d
    1, // llvm.mips.fadd.w
    1, // llvm.mips.fcaf.d
    1, // llvm.mips.fcaf.w
    1, // llvm.mips.fceq.d
    1, // llvm.mips.fceq.w
    1, // llvm.mips.fclass.d
    1, // llvm.mips.fclass.w
    1, // llvm.mips.fcle.d
    1, // llvm.mips.fcle.w
    1, // llvm.mips.fclt.d
    1, // llvm.mips.fclt.w
    1, // llvm.mips.fcne.d
    1, // llvm.mips.fcne.w
    1, // llvm.mips.fcor.d
    1, // llvm.mips.fcor.w
    1, // llvm.mips.fcueq.d
    1, // llvm.mips.fcueq.w
    1, // llvm.mips.fcule.d
    1, // llvm.mips.fcule.w
    1, // llvm.mips.fcult.d
    1, // llvm.mips.fcult.w
    1, // llvm.mips.fcun.d
    1, // llvm.mips.fcun.w
    1, // llvm.mips.fcune.d
    1, // llvm.mips.fcune.w
    1, // llvm.mips.fdiv.d
    1, // llvm.mips.fdiv.w
    1, // llvm.mips.fexdo.h
    1, // llvm.mips.fexdo.w
    1, // llvm.mips.fexp2.d
    1, // llvm.mips.fexp2.w
    1, // llvm.mips.fexupl.d
    1, // llvm.mips.fexupl.w
    1, // llvm.mips.fexupr.d
    1, // llvm.mips.fexupr.w
    1, // llvm.mips.ffint.s.d
    1, // llvm.mips.ffint.s.w
    1, // llvm.mips.ffint.u.d
    1, // llvm.mips.ffint.u.w
    1, // llvm.mips.ffql.d
    1, // llvm.mips.ffql.w
    1, // llvm.mips.ffqr.d
    1, // llvm.mips.ffqr.w
    1, // llvm.mips.fill.b
    1, // llvm.mips.fill.d
    1, // llvm.mips.fill.h
    1, // llvm.mips.fill.w
    1, // llvm.mips.flog2.d
    1, // llvm.mips.flog2.w
    1, // llvm.mips.fmadd.d
    1, // llvm.mips.fmadd.w
    1, // llvm.mips.fmax.a.d
    1, // llvm.mips.fmax.a.w
    1, // llvm.mips.fmax.d
    1, // llvm.mips.fmax.w
    1, // llvm.mips.fmin.a.d
    1, // llvm.mips.fmin.a.w
    1, // llvm.mips.fmin.d
    1, // llvm.mips.fmin.w
    1, // llvm.mips.fmsub.d
    1, // llvm.mips.fmsub.w
    1, // llvm.mips.fmul.d
    1, // llvm.mips.fmul.w
    1, // llvm.mips.frcp.d
    1, // llvm.mips.frcp.w
    1, // llvm.mips.frint.d
    1, // llvm.mips.frint.w
    1, // llvm.mips.frsqrt.d
    1, // llvm.mips.frsqrt.w
    1, // llvm.mips.fsaf.d
    1, // llvm.mips.fsaf.w
    1, // llvm.mips.fseq.d
    1, // llvm.mips.fseq.w
    1, // llvm.mips.fsle.d
    1, // llvm.mips.fsle.w
    1, // llvm.mips.fslt.d
    1, // llvm.mips.fslt.w
    1, // llvm.mips.fsne.d
    1, // llvm.mips.fsne.w
    1, // llvm.mips.fsor.d
    1, // llvm.mips.fsor.w
    1, // llvm.mips.fsqrt.d
    1, // llvm.mips.fsqrt.w
    1, // llvm.mips.fsub.d
    1, // llvm.mips.fsub.w
    1, // llvm.mips.fsueq.d
    1, // llvm.mips.fsueq.w
    1, // llvm.mips.fsule.d
    1, // llvm.mips.fsule.w
    1, // llvm.mips.fsult.d
    1, // llvm.mips.fsult.w
    1, // llvm.mips.fsun.d
    1, // llvm.mips.fsun.w
    1, // llvm.mips.fsune.d
    1, // llvm.mips.fsune.w
    1, // llvm.mips.ftint.s.d
    1, // llvm.mips.ftint.s.w
    1, // llvm.mips.ftint.u.d
    1, // llvm.mips.ftint.u.w
    1, // llvm.mips.ftq.h
    1, // llvm.mips.ftq.w
    1, // llvm.mips.ftrunc.s.d
    1, // llvm.mips.ftrunc.s.w
    1, // llvm.mips.ftrunc.u.d
    1, // llvm.mips.ftrunc.u.w
    1, // llvm.mips.hadd.s.d
    1, // llvm.mips.hadd.s.h
    1, // llvm.mips.hadd.s.w
    1, // llvm.mips.hadd.u.d
    1, // llvm.mips.hadd.u.h
    1, // llvm.mips.hadd.u.w
    1, // llvm.mips.hsub.s.d
    1, // llvm.mips.hsub.s.h
    1, // llvm.mips.hsub.s.w
    1, // llvm.mips.hsub.u.d
    1, // llvm.mips.hsub.u.h
    1, // llvm.mips.hsub.u.w
    1, // llvm.mips.ilvev.b
    1, // llvm.mips.ilvev.d
    1, // llvm.mips.ilvev.h
    1, // llvm.mips.ilvev.w
    1, // llvm.mips.ilvl.b
    1, // llvm.mips.ilvl.d
    1, // llvm.mips.ilvl.h
    1, // llvm.mips.ilvl.w
    1, // llvm.mips.ilvod.b
    1, // llvm.mips.ilvod.d
    1, // llvm.mips.ilvod.h
    1, // llvm.mips.ilvod.w
    1, // llvm.mips.ilvr.b
    1, // llvm.mips.ilvr.d
    1, // llvm.mips.ilvr.h
    1, // llvm.mips.ilvr.w
    1, // llvm.mips.insert.b
    1, // llvm.mips.insert.d
    1, // llvm.mips.insert.h
    1, // llvm.mips.insert.w
    3, // llvm.mips.insv
    1, // llvm.mips.insve.b
    1, // llvm.mips.insve.d
    1, // llvm.mips.insve.h
    1, // llvm.mips.insve.w
    3, // llvm.mips.lbux
    3, // llvm.mips.ld.b
    3, // llvm.mips.ld.d
    3, // llvm.mips.ld.h
    3, // llvm.mips.ld.w
    1, // llvm.mips.ldi.b
    1, // llvm.mips.ldi.d
    1, // llvm.mips.ldi.h
    1, // llvm.mips.ldi.w
    3, // llvm.mips.lhx
    1, // llvm.mips.lsa
    3, // llvm.mips.lwx
    1, // llvm.mips.madd
    1, // llvm.mips.madd.q.h
    1, // llvm.mips.madd.q.w
    1, // llvm.mips.maddr.q.h
    1, // llvm.mips.maddr.q.w
    1, // llvm.mips.maddu
    1, // llvm.mips.maddv.b
    1, // llvm.mips.maddv.d
    1, // llvm.mips.maddv.h
    1, // llvm.mips.maddv.w
    2, // llvm.mips.maq.s.w.phl
    2, // llvm.mips.maq.s.w.phr
    2, // llvm.mips.maq.sa.w.phl
    2, // llvm.mips.maq.sa.w.phr
    1, // llvm.mips.max.a.b
    1, // llvm.mips.max.a.d
    1, // llvm.mips.max.a.h
    1, // llvm.mips.max.a.w
    1, // llvm.mips.max.s.b
    1, // llvm.mips.max.s.d
    1, // llvm.mips.max.s.h
    1, // llvm.mips.max.s.w
    1, // llvm.mips.max.u.b
    1, // llvm.mips.max.u.d
    1, // llvm.mips.max.u.h
    1, // llvm.mips.max.u.w
    1, // llvm.mips.maxi.s.b
    1, // llvm.mips.maxi.s.d
    1, // llvm.mips.maxi.s.h
    1, // llvm.mips.maxi.s.w
    1, // llvm.mips.maxi.u.b
    1, // llvm.mips.maxi.u.d
    1, // llvm.mips.maxi.u.h
    1, // llvm.mips.maxi.u.w
    1, // llvm.mips.min.a.b
    1, // llvm.mips.min.a.d
    1, // llvm.mips.min.a.h
    1, // llvm.mips.min.a.w
    1, // llvm.mips.min.s.b
    1, // llvm.mips.min.s.d
    1, // llvm.mips.min.s.h
    1, // llvm.mips.min.s.w
    1, // llvm.mips.min.u.b
    1, // llvm.mips.min.u.d
    1, // llvm.mips.min.u.h
    1, // llvm.mips.min.u.w
    1, // llvm.mips.mini.s.b
    1, // llvm.mips.mini.s.d
    1, // llvm.mips.mini.s.h
    1, // llvm.mips.mini.s.w
    1, // llvm.mips.mini.u.b
    1, // llvm.mips.mini.u.d
    1, // llvm.mips.mini.u.h
    1, // llvm.mips.mini.u.w
    1, // llvm.mips.mod.s.b
    1, // llvm.mips.mod.s.d
    1, // llvm.mips.mod.s.h
    1, // llvm.mips.mod.s.w
    1, // llvm.mips.mod.u.b
    1, // llvm.mips.mod.u.d
    1, // llvm.mips.mod.u.h
    1, // llvm.mips.mod.u.w
    1, // llvm.mips.modsub
    1, // llvm.mips.move.v
    1, // llvm.mips.msub
    1, // llvm.mips.msub.q.h
    1, // llvm.mips.msub.q.w
    1, // llvm.mips.msubr.q.h
    1, // llvm.mips.msubr.q.w
    1, // llvm.mips.msubu
    1, // llvm.mips.msubv.b
    1, // llvm.mips.msubv.d
    1, // llvm.mips.msubv.h
    1, // llvm.mips.msubv.w
    2, // llvm.mips.mthlip
    2, // llvm.mips.mul.ph
    1, // llvm.mips.mul.q.h
    1, // llvm.mips.mul.q.w
    2, // llvm.mips.mul.s.ph
    2, // llvm.mips.muleq.s.w.phl
    2, // llvm.mips.muleq.s.w.phr
    2, // llvm.mips.muleu.s.ph.qbl
    2, // llvm.mips.muleu.s.ph.qbr
    2, // llvm.mips.mulq.rs.ph
    2, // llvm.mips.mulq.rs.w
    2, // llvm.mips.mulq.s.ph
    2, // llvm.mips.mulq.s.w
    1, // llvm.mips.mulr.q.h
    1, // llvm.mips.mulr.q.w
    1, // llvm.mips.mulsa.w.ph
    2, // llvm.mips.mulsaq.s.w.ph
    1, // llvm.mips.mult
    1, // llvm.mips.multu
    1, // llvm.mips.mulv.b
    1, // llvm.mips.mulv.d
    1, // llvm.mips.mulv.h
    1, // llvm.mips.mulv.w
    1, // llvm.mips.nloc.b
    1, // llvm.mips.nloc.d
    1, // llvm.mips.nloc.h
    1, // llvm.mips.nloc.w
    1, // llvm.mips.nlzc.b
    1, // llvm.mips.nlzc.d
    1, // llvm.mips.nlzc.h
    1, // llvm.mips.nlzc.w
    1, // llvm.mips.nor.v
    1, // llvm.mips.nori.b
    1, // llvm.mips.or.v
    1, // llvm.mips.ori.b
    1, // llvm.mips.packrl.ph
    1, // llvm.mips.pckev.b
    1, // llvm.mips.pckev.d
    1, // llvm.mips.pckev.h
    1, // llvm.mips.pckev.w
    1, // llvm.mips.pckod.b
    1, // llvm.mips.pckod.d
    1, // llvm.mips.pckod.h
    1, // llvm.mips.pckod.w
    1, // llvm.mips.pcnt.b
    1, // llvm.mips.pcnt.d
    1, // llvm.mips.pcnt.h
    1, // llvm.mips.pcnt.w
    3, // llvm.mips.pick.ph
    3, // llvm.mips.pick.qb
    1, // llvm.mips.preceq.w.phl
    1, // llvm.mips.preceq.w.phr
    1, // llvm.mips.precequ.ph.qbl
    1, // llvm.mips.precequ.ph.qbla
    1, // llvm.mips.precequ.ph.qbr
    1, // llvm.mips.precequ.ph.qbra
    1, // llvm.mips.preceu.ph.qbl
    1, // llvm.mips.preceu.ph.qbla
    1, // llvm.mips.preceu.ph.qbr
    1, // llvm.mips.preceu.ph.qbra
    2, // llvm.mips.precr.qb.ph
    1, // llvm.mips.precr.sra.ph.w
    1, // llvm.mips.precr.sra.r.ph.w
    1, // llvm.mips.precrq.ph.w
    1, // llvm.mips.precrq.qb.ph
    2, // llvm.mips.precrq.rs.ph.w
    2, // llvm.mips.precrqu.s.qb.ph
    1, // llvm.mips.prepend
    1, // llvm.mips.raddu.w.qb
    3, // llvm.mips.rddsp
    1, // llvm.mips.repl.ph
    1, // llvm.mips.repl.qb
    1, // llvm.mips.sat.s.b
    1, // llvm.mips.sat.s.d
    1, // llvm.mips.sat.s.h
    1, // llvm.mips.sat.s.w
    1, // llvm.mips.sat.u.b
    1, // llvm.mips.sat.u.d
    1, // llvm.mips.sat.u.h
    1, // llvm.mips.sat.u.w
    1, // llvm.mips.shf.b
    1, // llvm.mips.shf.h
    1, // llvm.mips.shf.w
    1, // llvm.mips.shilo
    2, // llvm.mips.shll.ph
    2, // llvm.mips.shll.qb
    2, // llvm.mips.shll.s.ph
    2, // llvm.mips.shll.s.w
    1, // llvm.mips.shra.ph
    1, // llvm.mips.shra.qb
    1, // llvm.mips.shra.r.ph
    1, // llvm.mips.shra.r.qb
    1, // llvm.mips.shra.r.w
    1, // llvm.mips.shrl.ph
    1, // llvm.mips.shrl.qb
    1, // llvm.mips.sld.b
    1, // llvm.mips.sld.d
    1, // llvm.mips.sld.h
    1, // llvm.mips.sld.w
    1, // llvm.mips.sldi.b
    1, // llvm.mips.sldi.d
    1, // llvm.mips.sldi.h
    1, // llvm.mips.sldi.w
    1, // llvm.mips.sll.b
    1, // llvm.mips.sll.d
    1, // llvm.mips.sll.h
    1, // llvm.mips.sll.w
    1, // llvm.mips.slli.b
    1, // llvm.mips.slli.d
    1, // llvm.mips.slli.h
    1, // llvm.mips.slli.w
    1, // llvm.mips.splat.b
    1, // llvm.mips.splat.d
    1, // llvm.mips.splat.h
    1, // llvm.mips.splat.w
    1, // llvm.mips.splati.b
    1, // llvm.mips.splati.d
    1, // llvm.mips.splati.h
    1, // llvm.mips.splati.w
    1, // llvm.mips.sra.b
    1, // llvm.mips.sra.d
    1, // llvm.mips.sra.h
    1, // llvm.mips.sra.w
    1, // llvm.mips.srai.b
    1, // llvm.mips.srai.d
    1, // llvm.mips.srai.h
    1, // llvm.mips.srai.w
    1, // llvm.mips.srar.b
    1, // llvm.mips.srar.d
    1, // llvm.mips.srar.h
    1, // llvm.mips.srar.w
    1, // llvm.mips.srari.b
    1, // llvm.mips.srari.d
    1, // llvm.mips.srari.h
    1, // llvm.mips.srari.w
    1, // llvm.mips.srl.b
    1, // llvm.mips.srl.d
    1, // llvm.mips.srl.h
    1, // llvm.mips.srl.w
    1, // llvm.mips.srli.b
    1, // llvm.mips.srli.d
    1, // llvm.mips.srli.h
    1, // llvm.mips.srli.w
    1, // llvm.mips.srlr.b
    1, // llvm.mips.srlr.d
    1, // llvm.mips.srlr.h
    1, // llvm.mips.srlr.w
    1, // llvm.mips.srlri.b
    1, // llvm.mips.srlri.d
    1, // llvm.mips.srlri.h
    1, // llvm.mips.srlri.w
    2, // llvm.mips.st.b
    2, // llvm.mips.st.d
    2, // llvm.mips.st.h
    2, // llvm.mips.st.w
    1, // llvm.mips.subq.ph
    1, // llvm.mips.subq.s.ph
    2, // llvm.mips.subq.s.w
    1, // llvm.mips.subqh.ph
    1, // llvm.mips.subqh.r.ph
    1, // llvm.mips.subqh.r.w
    1, // llvm.mips.subqh.w
    1, // llvm.mips.subs.s.b
    1, // llvm.mips.subs.s.d
    1, // llvm.mips.subs.s.h
    1, // llvm.mips.subs.s.w
    1, // llvm.mips.subs.u.b
    1, // llvm.mips.subs.u.d
    1, // llvm.mips.subs.u.h
    1, // llvm.mips.subs.u.w
    1, // llvm.mips.subsus.u.b
    1, // llvm.mips.subsus.u.d
    1, // llvm.mips.subsus.u.h
    1, // llvm.mips.subsus.u.w
    1, // llvm.mips.subsuu.s.b
    1, // llvm.mips.subsuu.s.d
    1, // llvm.mips.subsuu.s.h
    1, // llvm.mips.subsuu.s.w
    2, // llvm.mips.subu.ph
    1, // llvm.mips.subu.qb
    2, // llvm.mips.subu.s.ph
    1, // llvm.mips.subu.s.qb
    1, // llvm.mips.subuh.qb
    1, // llvm.mips.subuh.r.qb
    1, // llvm.mips.subv.b
    1, // llvm.mips.subv.d
    1, // llvm.mips.subv.h
    1, // llvm.mips.subv.w
    1, // llvm.mips.subvi.b
    1, // llvm.mips.subvi.d
    1, // llvm.mips.subvi.h
    1, // llvm.mips.subvi.w
    1, // llvm.mips.vshf.b
    1, // llvm.mips.vshf.d
    1, // llvm.mips.vshf.h
    1, // llvm.mips.vshf.w
    2, // llvm.mips.wrdsp
    1, // llvm.mips.xor.v
    1, // llvm.mips.xori.b
    1, // llvm.nearbyint
    1, // llvm.nvvm.abs.i
    1, // llvm.nvvm.abs.ll
    1, // llvm.nvvm.add.rm.d
    1, // llvm.nvvm.add.rm.f
    1, // llvm.nvvm.add.rm.ftz.f
    1, // llvm.nvvm.add.rn.d
    1, // llvm.nvvm.add.rn.f
    1, // llvm.nvvm.add.rn.ftz.f
    1, // llvm.nvvm.add.rp.d
    1, // llvm.nvvm.add.rp.f
    1, // llvm.nvvm.add.rp.ftz.f
    1, // llvm.nvvm.add.rz.d
    1, // llvm.nvvm.add.rz.f
    1, // llvm.nvvm.add.rz.ftz.f
    12, // llvm.nvvm.atomic.load.add.f32
    12, // llvm.nvvm.atomic.load.dec.32
    12, // llvm.nvvm.atomic.load.inc.32
    8, // llvm.nvvm.barrier0
    8, // llvm.nvvm.barrier0.and
    8, // llvm.nvvm.barrier0.or
    8, // llvm.nvvm.barrier0.popc
    1, // llvm.nvvm.bitcast.d2ll
    1, // llvm.nvvm.bitcast.f2i
    1, // llvm.nvvm.bitcast.i2f
    1, // llvm.nvvm.bitcast.ll2d
    1, // llvm.nvvm.brev32
    1, // llvm.nvvm.brev64
    1, // llvm.nvvm.ceil.d
    1, // llvm.nvvm.ceil.f
    1, // llvm.nvvm.ceil.ftz.f
    1, // llvm.nvvm.clz.i
    1, // llvm.nvvm.clz.ll
    2, // llvm.nvvm.compiler.error
    2, // llvm.nvvm.compiler.warn
    1, // llvm.nvvm.cos.approx.f
    1, // llvm.nvvm.cos.approx.ftz.f
    1, // llvm.nvvm.d2f.rm
    1, // llvm.nvvm.d2f.rm.ftz
    1, // llvm.nvvm.d2f.rn
    1, // llvm.nvvm.d2f.rn.ftz
    1, // llvm.nvvm.d2f.rp
    1, // llvm.nvvm.d2f.rp.ftz
    1, // llvm.nvvm.d2f.rz
    1, // llvm.nvvm.d2f.rz.ftz
    1, // llvm.nvvm.d2i.hi
    1, // llvm.nvvm.d2i.lo
    1, // llvm.nvvm.d2i.rm
    1, // llvm.nvvm.d2i.rn
    1, // llvm.nvvm.d2i.rp
    1, // llvm.nvvm.d2i.rz
    1, // llvm.nvvm.d2ll.rm
    1, // llvm.nvvm.d2ll.rn
    1, // llvm.nvvm.d2ll.rp
    1, // llvm.nvvm.d2ll.rz
    1, // llvm.nvvm.d2ui.rm
    1, // llvm.nvvm.d2ui.rn
    1, // llvm.nvvm.d2ui.rp
    1, // llvm.nvvm.d2ui.rz
    1, // llvm.nvvm.d2ull.rm
    1, // llvm.nvvm.d2ull.rn
    1, // llvm.nvvm.d2ull.rp
    1, // llvm.nvvm.d2ull.rz
    1, // llvm.nvvm.div.approx.f
    1, // llvm.nvvm.div.approx.ftz.f
    1, // llvm.nvvm.div.rm.d
    1, // llvm.nvvm.div.rm.f
    1, // llvm.nvvm.div.rm.ftz.f
    1, // llvm.nvvm.div.rn.d
    1, // llvm.nvvm.div.rn.f
    1, // llvm.nvvm.div.rn.ftz.f
    1, // llvm.nvvm.div.rp.d
    1, // llvm.nvvm.div.rp.f
    1, // llvm.nvvm.div.rp.ftz.f
    1, // llvm.nvvm.div.rz.d
    1, // llvm.nvvm.div.rz.f
    1, // llvm.nvvm.div.rz.ftz.f
    1, // llvm.nvvm.ex2.approx.d
    1, // llvm.nvvm.ex2.approx.f
    1, // llvm.nvvm.ex2.approx.ftz.f
    1, // llvm.nvvm.f2h.rn
    1, // llvm.nvvm.f2h.rn.ftz
    1, // llvm.nvvm.f2i.rm
    1, // llvm.nvvm.f2i.rm.ftz
    1, // llvm.nvvm.f2i.rn
    1, // llvm.nvvm.f2i.rn.ftz
    1, // llvm.nvvm.f2i.rp
    1, // llvm.nvvm.f2i.rp.ftz
    1, // llvm.nvvm.f2i.rz
    1, // llvm.nvvm.f2i.rz.ftz
    1, // llvm.nvvm.f2ll.rm
    1, // llvm.nvvm.f2ll.rm.ftz
    1, // llvm.nvvm.f2ll.rn
    1, // llvm.nvvm.f2ll.rn.ftz
    1, // llvm.nvvm.f2ll.rp
    1, // llvm.nvvm.f2ll.rp.ftz
    1, // llvm.nvvm.f2ll.rz
    1, // llvm.nvvm.f2ll.rz.ftz
    1, // llvm.nvvm.f2ui.rm
    1, // llvm.nvvm.f2ui.rm.ftz
    1, // llvm.nvvm.f2ui.rn
    1, // llvm.nvvm.f2ui.rn.ftz
    1, // llvm.nvvm.f2ui.rp
    1, // llvm.nvvm.f2ui.rp.ftz
    1, // llvm.nvvm.f2ui.rz
    1, // llvm.nvvm.f2ui.rz.ftz
    1, // llvm.nvvm.f2ull.rm
    1, // llvm.nvvm.f2ull.rm.ftz
    1, // llvm.nvvm.f2ull.rn
    1, // llvm.nvvm.f2ull.rn.ftz
    1, // llvm.nvvm.f2ull.rp
    1, // llvm.nvvm.f2ull.rp.ftz
    1, // llvm.nvvm.f2ull.rz
    1, // llvm.nvvm.f2ull.rz.ftz
    1, // llvm.nvvm.fabs.d
    1, // llvm.nvvm.fabs.f
    1, // llvm.nvvm.fabs.ftz.f
    1, // llvm.nvvm.floor.d
    1, // llvm.nvvm.floor.f
    1, // llvm.nvvm.floor.ftz.f
    1, // llvm.nvvm.fma.rm.d
    1, // llvm.nvvm.fma.rm.f
    1, // llvm.nvvm.fma.rm.ftz.f
    1, // llvm.nvvm.fma.rn.d
    1, // llvm.nvvm.fma.rn.f
    1, // llvm.nvvm.fma.rn.ftz.f
    1, // llvm.nvvm.fma.rp.d
    1, // llvm.nvvm.fma.rp.f
    1, // llvm.nvvm.fma.rp.ftz.f
    1, // llvm.nvvm.fma.rz.d
    1, // llvm.nvvm.fma.rz.f
    1, // llvm.nvvm.fma.rz.ftz.f
    1, // llvm.nvvm.fmax.d
    1, // llvm.nvvm.fmax.f
    1, // llvm.nvvm.fmax.ftz.f
    1, // llvm.nvvm.fmin.d
    1, // llvm.nvvm.fmin.f
    1, // llvm.nvvm.fmin.ftz.f
    1, // llvm.nvvm.h2f
    1, // llvm.nvvm.i2d.rm
    1, // llvm.nvvm.i2d.rn
    1, // llvm.nvvm.i2d.rp
    1, // llvm.nvvm.i2d.rz
    1, // llvm.nvvm.i2f.rm
    1, // llvm.nvvm.i2f.rn
    1, // llvm.nvvm.i2f.rp
    1, // llvm.nvvm.i2f.rz
    1, // llvm.nvvm.isspacep.const
    1, // llvm.nvvm.isspacep.global
    1, // llvm.nvvm.isspacep.local
    1, // llvm.nvvm.isspacep.shared
    1, // llvm.nvvm.istypep.sampler
    1, // llvm.nvvm.istypep.surface
    1, // llvm.nvvm.istypep.texture
    15, // llvm.nvvm.ldg.global.f
    15, // llvm.nvvm.ldg.global.i
    15, // llvm.nvvm.ldg.global.p
    15, // llvm.nvvm.ldu.global.f
    15, // llvm.nvvm.ldu.global.i
    15, // llvm.nvvm.ldu.global.p
    1, // llvm.nvvm.lg2.approx.d
    1, // llvm.nvvm.lg2.approx.f
    1, // llvm.nvvm.lg2.approx.ftz.f
    1, // llvm.nvvm.ll2d.rm
    1, // llvm.nvvm.ll2d.rn
    1, // llvm.nvvm.ll2d.rp
    1, // llvm.nvvm.ll2d.rz
    1, // llvm.nvvm.ll2f.rm
    1, // llvm.nvvm.ll2f.rn
    1, // llvm.nvvm.ll2f.rp
    1, // llvm.nvvm.ll2f.rz
    1, // llvm.nvvm.lohi.i2d
    1, // llvm.nvvm.max.i
    1, // llvm.nvvm.max.ll
    1, // llvm.nvvm.max.ui
    1, // llvm.nvvm.max.ull
    2, // llvm.nvvm.membar.cta
    2, // llvm.nvvm.membar.gl
    2, // llvm.nvvm.membar.sys
    1, // llvm.nvvm.min.i
    1, // llvm.nvvm.min.ll
    1, // llvm.nvvm.min.ui
    1, // llvm.nvvm.min.ull
    1, // llvm.nvvm.move.double
    1, // llvm.nvvm.move.float
    1, // llvm.nvvm.move.i16
    1, // llvm.nvvm.move.i32
    1, // llvm.nvvm.move.i64
    16, // llvm.nvvm.move.ptr
    1, // llvm.nvvm.mul24.i
    1, // llvm.nvvm.mul24.ui
    1, // llvm.nvvm.mul.rm.d
    1, // llvm.nvvm.mul.rm.f
    1, // llvm.nvvm.mul.rm.ftz.f
    1, // llvm.nvvm.mul.rn.d
    1, // llvm.nvvm.mul.rn.f
    1, // llvm.nvvm.mul.rn.ftz.f
    1, // llvm.nvvm.mul.rp.d
    1, // llvm.nvvm.mul.rp.f
    1, // llvm.nvvm.mul.rp.ftz.f
    1, // llvm.nvvm.mul.rz.d
    1, // llvm.nvvm.mul.rz.f
    1, // llvm.nvvm.mul.rz.ftz.f
    1, // llvm.nvvm.mulhi.i
    1, // llvm.nvvm.mulhi.ll
    1, // llvm.nvvm.mulhi.ui
    1, // llvm.nvvm.mulhi.ull
    1, // llvm.nvvm.popc.i
    1, // llvm.nvvm.popc.ll
    1, // llvm.nvvm.prmt
    1, // llvm.nvvm.ptr.constant.to.gen
    1, // llvm.nvvm.ptr.gen.to.constant
    1, // llvm.nvvm.ptr.gen.to.global
    1, // llvm.nvvm.ptr.gen.to.local
    1, // llvm.nvvm.ptr.gen.to.param
    1, // llvm.nvvm.ptr.gen.to.shared
    1, // llvm.nvvm.ptr.global.to.gen
    1, // llvm.nvvm.ptr.local.to.gen
    1, // llvm.nvvm.ptr.shared.to.gen
    1, // llvm.nvvm.rcp.approx.ftz.d
    1, // llvm.nvvm.rcp.rm.d
    1, // llvm.nvvm.rcp.rm.f
    1, // llvm.nvvm.rcp.rm.ftz.f
    1, // llvm.nvvm.rcp.rn.d
    1, // llvm.nvvm.rcp.rn.f
    1, // llvm.nvvm.rcp.rn.ftz.f
    1, // llvm.nvvm.rcp.rp.d
    1, // llvm.nvvm.rcp.rp.f
    1, // llvm.nvvm.rcp.rp.ftz.f
    1, // llvm.nvvm.rcp.rz.d
    1, // llvm.nvvm.rcp.rz.f
    1, // llvm.nvvm.rcp.rz.ftz.f
    1, // llvm.nvvm.read.ptx.sreg.ctaid.x
    1, // llvm.nvvm.read.ptx.sreg.ctaid.y
    1, // llvm.nvvm.read.ptx.sreg.ctaid.z
    1, // llvm.nvvm.read.ptx.sreg.envreg0
    1, // llvm.nvvm.read.ptx.sreg.envreg1
    1, // llvm.nvvm.read.ptx.sreg.envreg10
    1, // llvm.nvvm.read.ptx.sreg.envreg11
    1, // llvm.nvvm.read.ptx.sreg.envreg12
    1, // llvm.nvvm.read.ptx.sreg.envreg13
    1, // llvm.nvvm.read.ptx.sreg.envreg14
    1, // llvm.nvvm.read.ptx.sreg.envreg15
    1, // llvm.nvvm.read.ptx.sreg.envreg16
    1, // llvm.nvvm.read.ptx.sreg.envreg17
    1, // llvm.nvvm.read.ptx.sreg.envreg18
    1, // llvm.nvvm.read.ptx.sreg.envreg19
    1, // llvm.nvvm.read.ptx.sreg.envreg2
    1, // llvm.nvvm.read.ptx.sreg.envreg20
    1, // llvm.nvvm.read.ptx.sreg.envreg21
    1, // llvm.nvvm.read.ptx.sreg.envreg22
    1, // llvm.nvvm.read.ptx.sreg.envreg23
    1, // llvm.nvvm.read.ptx.sreg.envreg24
    1, // llvm.nvvm.read.ptx.sreg.envreg25
    1, // llvm.nvvm.read.ptx.sreg.envreg26
    1, // llvm.nvvm.read.ptx.sreg.envreg27
    1, // llvm.nvvm.read.ptx.sreg.envreg28
    1, // llvm.nvvm.read.ptx.sreg.envreg29
    1, // llvm.nvvm.read.ptx.sreg.envreg3
    1, // llvm.nvvm.read.ptx.sreg.envreg30
    1, // llvm.nvvm.read.ptx.sreg.envreg31
    1, // llvm.nvvm.read.ptx.sreg.envreg4
    1, // llvm.nvvm.read.ptx.sreg.envreg5
    1, // llvm.nvvm.read.ptx.sreg.envreg6
    1, // llvm.nvvm.read.ptx.sreg.envreg7
    1, // llvm.nvvm.read.ptx.sreg.envreg8
    1, // llvm.nvvm.read.ptx.sreg.envreg9
    1, // llvm.nvvm.read.ptx.sreg.nctaid.x
    1, // llvm.nvvm.read.ptx.sreg.nctaid.y
    1, // llvm.nvvm.read.ptx.sreg.nctaid.z
    1, // llvm.nvvm.read.ptx.sreg.ntid.x
    1, // llvm.nvvm.read.ptx.sreg.ntid.y
    1, // llvm.nvvm.read.ptx.sreg.ntid.z
    1, // llvm.nvvm.read.ptx.sreg.tid.x
    1, // llvm.nvvm.read.ptx.sreg.tid.y
    1, // llvm.nvvm.read.ptx.sreg.tid.z
    1, // llvm.nvvm.read.ptx.sreg.warpsize
    1, // llvm.nvvm.reflect
    1, // llvm.nvvm.rotate.b32
    1, // llvm.nvvm.rotate.b64
    1, // llvm.nvvm.rotate.right.b64
    1, // llvm.nvvm.round.d
    1, // llvm.nvvm.round.f
    1, // llvm.nvvm.round.ftz.f
    1, // llvm.nvvm.rsqrt.approx.d
    1, // llvm.nvvm.rsqrt.approx.f
    1, // llvm.nvvm.rsqrt.approx.ftz.f
    1, // llvm.nvvm.sad.i
    1, // llvm.nvvm.sad.ui
    1, // llvm.nvvm.saturate.d
    1, // llvm.nvvm.saturate.f
    1, // llvm.nvvm.saturate.ftz.f
    1, // llvm.nvvm.sin.approx.f
    1, // llvm.nvvm.sin.approx.ftz.f
    1, // llvm.nvvm.sqrt.approx.f
    1, // llvm.nvvm.sqrt.approx.ftz.f
    1, // llvm.nvvm.sqrt.f
    1, // llvm.nvvm.sqrt.rm.d
    1, // llvm.nvvm.sqrt.rm.f
    1, // llvm.nvvm.sqrt.rm.ftz.f
    1, // llvm.nvvm.sqrt.rn.d
    1, // llvm.nvvm.sqrt.rn.f
    1, // llvm.nvvm.sqrt.rn.ftz.f
    1, // llvm.nvvm.sqrt.rp.d
    1, // llvm.nvvm.sqrt.rp.f
    1, // llvm.nvvm.sqrt.rp.ftz.f
    1, // llvm.nvvm.sqrt.rz.d
    1, // llvm.nvvm.sqrt.rz.f
    1, // llvm.nvvm.sqrt.rz.ftz.f
    2, // llvm.nvvm.suld.1d.array.i16.clamp
    2, // llvm.nvvm.suld.1d.array.i16.trap
    2, // llvm.nvvm.suld.1d.array.i16.zero
    2, // llvm.nvvm.suld.1d.array.i32.clamp
    2, // llvm.nvvm.suld.1d.array.i32.trap
    2, // llvm.nvvm.suld.1d.array.i32.zero
    2, // llvm.nvvm.suld.1d.array.i64.clamp
    2, // llvm.nvvm.suld.1d.array.i64.trap
    2, // llvm.nvvm.suld.1d.array.i64.zero
    2, // llvm.nvvm.suld.1d.array.i8.clamp
    2, // llvm.nvvm.suld.1d.array.i8.trap
    2, // llvm.nvvm.suld.1d.array.i8.zero
    2, // llvm.nvvm.suld.1d.array.v2i16.clamp
    2, // llvm.nvvm.suld.1d.array.v2i16.trap
    2, // llvm.nvvm.suld.1d.array.v2i16.zero
    2, // llvm.nvvm.suld.1d.array.v2i32.clamp
    2, // llvm.nvvm.suld.1d.array.v2i32.trap
    2, // llvm.nvvm.suld.1d.array.v2i32.zero
    2, // llvm.nvvm.suld.1d.array.v2i64.clamp
    2, // llvm.nvvm.suld.1d.array.v2i64.trap
    2, // llvm.nvvm.suld.1d.array.v2i64.zero
    2, // llvm.nvvm.suld.1d.array.v2i8.clamp
    2, // llvm.nvvm.suld.1d.array.v2i8.trap
    2, // llvm.nvvm.suld.1d.array.v2i8.zero
    2, // llvm.nvvm.suld.1d.array.v4i16.clamp
    2, // llvm.nvvm.suld.1d.array.v4i16.trap
    2, // llvm.nvvm.suld.1d.array.v4i16.zero
    2, // llvm.nvvm.suld.1d.array.v4i32.clamp
    2, // llvm.nvvm.suld.1d.array.v4i32.trap
    2, // llvm.nvvm.suld.1d.array.v4i32.zero
    2, // llvm.nvvm.suld.1d.array.v4i8.clamp
    2, // llvm.nvvm.suld.1d.array.v4i8.trap
    2, // llvm.nvvm.suld.1d.array.v4i8.zero
    2, // llvm.nvvm.suld.1d.i16.clamp
    2, // llvm.nvvm.suld.1d.i16.trap
    2, // llvm.nvvm.suld.1d.i16.zero
    2, // llvm.nvvm.suld.1d.i32.clamp
    2, // llvm.nvvm.suld.1d.i32.trap
    2, // llvm.nvvm.suld.1d.i32.zero
    2, // llvm.nvvm.suld.1d.i64.clamp
    2, // llvm.nvvm.suld.1d.i64.trap
    2, // llvm.nvvm.suld.1d.i64.zero
    2, // llvm.nvvm.suld.1d.i8.clamp
    2, // llvm.nvvm.suld.1d.i8.trap
    2, // llvm.nvvm.suld.1d.i8.zero
    2, // llvm.nvvm.suld.1d.v2i16.clamp
    2, // llvm.nvvm.suld.1d.v2i16.trap
    2, // llvm.nvvm.suld.1d.v2i16.zero
    2, // llvm.nvvm.suld.1d.v2i32.clamp
    2, // llvm.nvvm.suld.1d.v2i32.trap
    2, // llvm.nvvm.suld.1d.v2i32.zero
    2, // llvm.nvvm.suld.1d.v2i64.clamp
    2, // llvm.nvvm.suld.1d.v2i64.trap
    2, // llvm.nvvm.suld.1d.v2i64.zero
    2, // llvm.nvvm.suld.1d.v2i8.clamp
    2, // llvm.nvvm.suld.1d.v2i8.trap
    2, // llvm.nvvm.suld.1d.v2i8.zero
    2, // llvm.nvvm.suld.1d.v4i16.clamp
    2, // llvm.nvvm.suld.1d.v4i16.trap
    2, // llvm.nvvm.suld.1d.v4i16.zero
    2, // llvm.nvvm.suld.1d.v4i32.clamp
    2, // llvm.nvvm.suld.1d.v4i32.trap
    2, // llvm.nvvm.suld.1d.v4i32.zero
    2, // llvm.nvvm.suld.1d.v4i8.clamp
    2, // llvm.nvvm.suld.1d.v4i8.trap
    2, // llvm.nvvm.suld.1d.v4i8.zero
    2, // llvm.nvvm.suld.2d.array.i16.clamp
    2, // llvm.nvvm.suld.2d.array.i16.trap
    2, // llvm.nvvm.suld.2d.array.i16.zero
    2, // llvm.nvvm.suld.2d.array.i32.clamp
    2, // llvm.nvvm.suld.2d.array.i32.trap
    2, // llvm.nvvm.suld.2d.array.i32.zero
    2, // llvm.nvvm.suld.2d.array.i64.clamp
    2, // llvm.nvvm.suld.2d.array.i64.trap
    2, // llvm.nvvm.suld.2d.array.i64.zero
    2, // llvm.nvvm.suld.2d.array.i8.clamp
    2, // llvm.nvvm.suld.2d.array.i8.trap
    2, // llvm.nvvm.suld.2d.array.i8.zero
    2, // llvm.nvvm.suld.2d.array.v2i16.clamp
    2, // llvm.nvvm.suld.2d.array.v2i16.trap
    2, // llvm.nvvm.suld.2d.array.v2i16.zero
    2, // llvm.nvvm.suld.2d.array.v2i32.clamp
    2, // llvm.nvvm.suld.2d.array.v2i32.trap
    2, // llvm.nvvm.suld.2d.array.v2i32.zero
    2, // llvm.nvvm.suld.2d.array.v2i64.clamp
    2, // llvm.nvvm.suld.2d.array.v2i64.trap
    2, // llvm.nvvm.suld.2d.array.v2i64.zero
    2, // llvm.nvvm.suld.2d.array.v2i8.clamp
    2, // llvm.nvvm.suld.2d.array.v2i8.trap
    2, // llvm.nvvm.suld.2d.array.v2i8.zero
    2, // llvm.nvvm.suld.2d.array.v4i16.clamp
    2, // llvm.nvvm.suld.2d.array.v4i16.trap
    2, // llvm.nvvm.suld.2d.array.v4i16.zero
    2, // llvm.nvvm.suld.2d.array.v4i32.clamp
    2, // llvm.nvvm.suld.2d.array.v4i32.trap
    2, // llvm.nvvm.suld.2d.array.v4i32.zero
    2, // llvm.nvvm.suld.2d.array.v4i8.clamp
    2, // llvm.nvvm.suld.2d.array.v4i8.trap
    2, // llvm.nvvm.suld.2d.array.v4i8.zero
    2, // llvm.nvvm.suld.2d.i16.clamp
    2, // llvm.nvvm.suld.2d.i16.trap
    2, // llvm.nvvm.suld.2d.i16.zero
    2, // llvm.nvvm.suld.2d.i32.clamp
    2, // llvm.nvvm.suld.2d.i32.trap
    2, // llvm.nvvm.suld.2d.i32.zero
    2, // llvm.nvvm.suld.2d.i64.clamp
    2, // llvm.nvvm.suld.2d.i64.trap
    2, // llvm.nvvm.suld.2d.i64.zero
    2, // llvm.nvvm.suld.2d.i8.clamp
    2, // llvm.nvvm.suld.2d.i8.trap
    2, // llvm.nvvm.suld.2d.i8.zero
    2, // llvm.nvvm.suld.2d.v2i16.clamp
    2, // llvm.nvvm.suld.2d.v2i16.trap
    2, // llvm.nvvm.suld.2d.v2i16.zero
    2, // llvm.nvvm.suld.2d.v2i32.clamp
    2, // llvm.nvvm.suld.2d.v2i32.trap
    2, // llvm.nvvm.suld.2d.v2i32.zero
    2, // llvm.nvvm.suld.2d.v2i64.clamp
    2, // llvm.nvvm.suld.2d.v2i64.trap
    2, // llvm.nvvm.suld.2d.v2i64.zero
    2, // llvm.nvvm.suld.2d.v2i8.clamp
    2, // llvm.nvvm.suld.2d.v2i8.trap
    2, // llvm.nvvm.suld.2d.v2i8.zero
    2, // llvm.nvvm.suld.2d.v4i16.clamp
    2, // llvm.nvvm.suld.2d.v4i16.trap
    2, // llvm.nvvm.suld.2d.v4i16.zero
    2, // llvm.nvvm.suld.2d.v4i32.clamp
    2, // llvm.nvvm.suld.2d.v4i32.trap
    2, // llvm.nvvm.suld.2d.v4i32.zero
    2, // llvm.nvvm.suld.2d.v4i8.clamp
    2, // llvm.nvvm.suld.2d.v4i8.trap
    2, // llvm.nvvm.suld.2d.v4i8.zero
    2, // llvm.nvvm.suld.3d.i16.clamp
    2, // llvm.nvvm.suld.3d.i16.trap
    2, // llvm.nvvm.suld.3d.i16.zero
    2, // llvm.nvvm.suld.3d.i32.clamp
    2, // llvm.nvvm.suld.3d.i32.trap
    2, // llvm.nvvm.suld.3d.i32.zero
    2, // llvm.nvvm.suld.3d.i64.clamp
    2, // llvm.nvvm.suld.3d.i64.trap
    2, // llvm.nvvm.suld.3d.i64.zero
    2, // llvm.nvvm.suld.3d.i8.clamp
    2, // llvm.nvvm.suld.3d.i8.trap
    2, // llvm.nvvm.suld.3d.i8.zero
    2, // llvm.nvvm.suld.3d.v2i16.clamp
    2, // llvm.nvvm.suld.3d.v2i16.trap
    2, // llvm.nvvm.suld.3d.v2i16.zero
    2, // llvm.nvvm.suld.3d.v2i32.clamp
    2, // llvm.nvvm.suld.3d.v2i32.trap
    2, // llvm.nvvm.suld.3d.v2i32.zero
    2, // llvm.nvvm.suld.3d.v2i64.clamp
    2, // llvm.nvvm.suld.3d.v2i64.trap
    2, // llvm.nvvm.suld.3d.v2i64.zero
    2, // llvm.nvvm.suld.3d.v2i8.clamp
    2, // llvm.nvvm.suld.3d.v2i8.trap
    2, // llvm.nvvm.suld.3d.v2i8.zero
    2, // llvm.nvvm.suld.3d.v4i16.clamp
    2, // llvm.nvvm.suld.3d.v4i16.trap
    2, // llvm.nvvm.suld.3d.v4i16.zero
    2, // llvm.nvvm.suld.3d.v4i32.clamp
    2, // llvm.nvvm.suld.3d.v4i32.trap
    2, // llvm.nvvm.suld.3d.v4i32.zero
    2, // llvm.nvvm.suld.3d.v4i8.clamp
    2, // llvm.nvvm.suld.3d.v4i8.trap
    2, // llvm.nvvm.suld.3d.v4i8.zero
    1, // llvm.nvvm.suq.array.size
    1, // llvm.nvvm.suq.channel.data.type
    1, // llvm.nvvm.suq.channel.order
    1, // llvm.nvvm.suq.depth
    1, // llvm.nvvm.suq.height
    1, // llvm.nvvm.suq.width
    2, // llvm.nvvm.sust.b.1d.array.i16.clamp
    2, // llvm.nvvm.sust.b.1d.array.i16.trap
    2, // llvm.nvvm.sust.b.1d.array.i16.zero
    2, // llvm.nvvm.sust.b.1d.array.i32.clamp
    2, // llvm.nvvm.sust.b.1d.array.i32.trap
    2, // llvm.nvvm.sust.b.1d.array.i32.zero
    2, // llvm.nvvm.sust.b.1d.array.i64.clamp
    2, // llvm.nvvm.sust.b.1d.array.i64.trap
    2, // llvm.nvvm.sust.b.1d.array.i64.zero
    2, // llvm.nvvm.sust.b.1d.array.i8.clamp
    2, // llvm.nvvm.sust.b.1d.array.i8.trap
    2, // llvm.nvvm.sust.b.1d.array.i8.zero
    2, // llvm.nvvm.sust.b.1d.array.v2i16.clamp
    2, // llvm.nvvm.sust.b.1d.array.v2i16.trap
    2, // llvm.nvvm.sust.b.1d.array.v2i16.zero
    2, // llvm.nvvm.sust.b.1d.array.v2i32.clamp
    2, // llvm.nvvm.sust.b.1d.array.v2i32.trap
    2, // llvm.nvvm.sust.b.1d.array.v2i32.zero
    2, // llvm.nvvm.sust.b.1d.array.v2i64.clamp
    2, // llvm.nvvm.sust.b.1d.array.v2i64.trap
    2, // llvm.nvvm.sust.b.1d.array.v2i64.zero
    2, // llvm.nvvm.sust.b.1d.array.v2i8.clamp
    2, // llvm.nvvm.sust.b.1d.array.v2i8.trap
    2, // llvm.nvvm.sust.b.1d.array.v2i8.zero
    2, // llvm.nvvm.sust.b.1d.array.v4i16.clamp
    2, // llvm.nvvm.sust.b.1d.array.v4i16.trap
    2, // llvm.nvvm.sust.b.1d.array.v4i16.zero
    2, // llvm.nvvm.sust.b.1d.array.v4i32.clamp
    2, // llvm.nvvm.sust.b.1d.array.v4i32.trap
    2, // llvm.nvvm.sust.b.1d.array.v4i32.zero
    2, // llvm.nvvm.sust.b.1d.array.v4i8.clamp
    2, // llvm.nvvm.sust.b.1d.array.v4i8.trap
    2, // llvm.nvvm.sust.b.1d.array.v4i8.zero
    2, // llvm.nvvm.sust.b.1d.i16.clamp
    2, // llvm.nvvm.sust.b.1d.i16.trap
    2, // llvm.nvvm.sust.b.1d.i16.zero
    2, // llvm.nvvm.sust.b.1d.i32.clamp
    2, // llvm.nvvm.sust.b.1d.i32.trap
    2, // llvm.nvvm.sust.b.1d.i32.zero
    2, // llvm.nvvm.sust.b.1d.i64.clamp
    2, // llvm.nvvm.sust.b.1d.i64.trap
    2, // llvm.nvvm.sust.b.1d.i64.zero
    2, // llvm.nvvm.sust.b.1d.i8.clamp
    2, // llvm.nvvm.sust.b.1d.i8.trap
    2, // llvm.nvvm.sust.b.1d.i8.zero
    2, // llvm.nvvm.sust.b.1d.v2i16.clamp
    2, // llvm.nvvm.sust.b.1d.v2i16.trap
    2, // llvm.nvvm.sust.b.1d.v2i16.zero
    2, // llvm.nvvm.sust.b.1d.v2i32.clamp
    2, // llvm.nvvm.sust.b.1d.v2i32.trap
    2, // llvm.nvvm.sust.b.1d.v2i32.zero
    2, // llvm.nvvm.sust.b.1d.v2i64.clamp
    2, // llvm.nvvm.sust.b.1d.v2i64.trap
    2, // llvm.nvvm.sust.b.1d.v2i64.zero
    2, // llvm.nvvm.sust.b.1d.v2i8.clamp
    2, // llvm.nvvm.sust.b.1d.v2i8.trap
    2, // llvm.nvvm.sust.b.1d.v2i8.zero
    2, // llvm.nvvm.sust.b.1d.v4i16.clamp
    2, // llvm.nvvm.sust.b.1d.v4i16.trap
    2, // llvm.nvvm.sust.b.1d.v4i16.zero
    2, // llvm.nvvm.sust.b.1d.v4i32.clamp
    2, // llvm.nvvm.sust.b.1d.v4i32.trap
    2, // llvm.nvvm.sust.b.1d.v4i32.zero
    2, // llvm.nvvm.sust.b.1d.v4i8.clamp
    2, // llvm.nvvm.sust.b.1d.v4i8.trap
    2, // llvm.nvvm.sust.b.1d.v4i8.zero
    2, // llvm.nvvm.sust.b.2d.array.i16.clamp
    2, // llvm.nvvm.sust.b.2d.array.i16.trap
    2, // llvm.nvvm.sust.b.2d.array.i16.zero
    2, // llvm.nvvm.sust.b.2d.array.i32.clamp
    2, // llvm.nvvm.sust.b.2d.array.i32.trap
    2, // llvm.nvvm.sust.b.2d.array.i32.zero
    2, // llvm.nvvm.sust.b.2d.array.i64.clamp
    2, // llvm.nvvm.sust.b.2d.array.i64.trap
    2, // llvm.nvvm.sust.b.2d.array.i64.zero
    2, // llvm.nvvm.sust.b.2d.array.i8.clamp
    2, // llvm.nvvm.sust.b.2d.array.i8.trap
    2, // llvm.nvvm.sust.b.2d.array.i8.zero
    2, // llvm.nvvm.sust.b.2d.array.v2i16.clamp
    2, // llvm.nvvm.sust.b.2d.array.v2i16.trap
    2, // llvm.nvvm.sust.b.2d.array.v2i16.zero
    2, // llvm.nvvm.sust.b.2d.array.v2i32.clamp
    2, // llvm.nvvm.sust.b.2d.array.v2i32.trap
    2, // llvm.nvvm.sust.b.2d.array.v2i32.zero
    2, // llvm.nvvm.sust.b.2d.array.v2i64.clamp
    2, // llvm.nvvm.sust.b.2d.array.v2i64.trap
    2, // llvm.nvvm.sust.b.2d.array.v2i64.zero
    2, // llvm.nvvm.sust.b.2d.array.v2i8.clamp
    2, // llvm.nvvm.sust.b.2d.array.v2i8.trap
    2, // llvm.nvvm.sust.b.2d.array.v2i8.zero
    2, // llvm.nvvm.sust.b.2d.array.v4i16.clamp
    2, // llvm.nvvm.sust.b.2d.array.v4i16.trap
    2, // llvm.nvvm.sust.b.2d.array.v4i16.zero
    2, // llvm.nvvm.sust.b.2d.array.v4i32.clamp
    2, // llvm.nvvm.sust.b.2d.array.v4i32.trap
    2, // llvm.nvvm.sust.b.2d.array.v4i32.zero
    2, // llvm.nvvm.sust.b.2d.array.v4i8.clamp
    2, // llvm.nvvm.sust.b.2d.array.v4i8.trap
    2, // llvm.nvvm.sust.b.2d.array.v4i8.zero
    2, // llvm.nvvm.sust.b.2d.i16.clamp
    2, // llvm.nvvm.sust.b.2d.i16.trap
    2, // llvm.nvvm.sust.b.2d.i16.zero
    2, // llvm.nvvm.sust.b.2d.i32.clamp
    2, // llvm.nvvm.sust.b.2d.i32.trap
    2, // llvm.nvvm.sust.b.2d.i32.zero
    2, // llvm.nvvm.sust.b.2d.i64.clamp
    2, // llvm.nvvm.sust.b.2d.i64.trap
    2, // llvm.nvvm.sust.b.2d.i64.zero
    2, // llvm.nvvm.sust.b.2d.i8.clamp
    2, // llvm.nvvm.sust.b.2d.i8.trap
    2, // llvm.nvvm.sust.b.2d.i8.zero
    2, // llvm.nvvm.sust.b.2d.v2i16.clamp
    2, // llvm.nvvm.sust.b.2d.v2i16.trap
    2, // llvm.nvvm.sust.b.2d.v2i16.zero
    2, // llvm.nvvm.sust.b.2d.v2i32.clamp
    2, // llvm.nvvm.sust.b.2d.v2i32.trap
    2, // llvm.nvvm.sust.b.2d.v2i32.zero
    2, // llvm.nvvm.sust.b.2d.v2i64.clamp
    2, // llvm.nvvm.sust.b.2d.v2i64.trap
    2, // llvm.nvvm.sust.b.2d.v2i64.zero
    2, // llvm.nvvm.sust.b.2d.v2i8.clamp
    2, // llvm.nvvm.sust.b.2d.v2i8.trap
    2, // llvm.nvvm.sust.b.2d.v2i8.zero
    2, // llvm.nvvm.sust.b.2d.v4i16.clamp
    2, // llvm.nvvm.sust.b.2d.v4i16.trap
    2, // llvm.nvvm.sust.b.2d.v4i16.zero
    2, // llvm.nvvm.sust.b.2d.v4i32.clamp
    2, // llvm.nvvm.sust.b.2d.v4i32.trap
    2, // llvm.nvvm.sust.b.2d.v4i32.zero
    2, // llvm.nvvm.sust.b.2d.v4i8.clamp
    2, // llvm.nvvm.sust.b.2d.v4i8.trap
    2, // llvm.nvvm.sust.b.2d.v4i8.zero
    2, // llvm.nvvm.sust.b.3d.i16.clamp
    2, // llvm.nvvm.sust.b.3d.i16.trap
    2, // llvm.nvvm.sust.b.3d.i16.zero
    2, // llvm.nvvm.sust.b.3d.i32.clamp
    2, // llvm.nvvm.sust.b.3d.i32.trap
    2, // llvm.nvvm.sust.b.3d.i32.zero
    2, // llvm.nvvm.sust.b.3d.i64.clamp
    2, // llvm.nvvm.sust.b.3d.i64.trap
    2, // llvm.nvvm.sust.b.3d.i64.zero
    2, // llvm.nvvm.sust.b.3d.i8.clamp
    2, // llvm.nvvm.sust.b.3d.i8.trap
    2, // llvm.nvvm.sust.b.3d.i8.zero
    2, // llvm.nvvm.sust.b.3d.v2i16.clamp
    2, // llvm.nvvm.sust.b.3d.v2i16.trap
    2, // llvm.nvvm.sust.b.3d.v2i16.zero
    2, // llvm.nvvm.sust.b.3d.v2i32.clamp
    2, // llvm.nvvm.sust.b.3d.v2i32.trap
    2, // llvm.nvvm.sust.b.3d.v2i32.zero
    2, // llvm.nvvm.sust.b.3d.v2i64.clamp
    2, // llvm.nvvm.sust.b.3d.v2i64.trap
    2, // llvm.nvvm.sust.b.3d.v2i64.zero
    2, // llvm.nvvm.sust.b.3d.v2i8.clamp
    2, // llvm.nvvm.sust.b.3d.v2i8.trap
    2, // llvm.nvvm.sust.b.3d.v2i8.zero
    2, // llvm.nvvm.sust.b.3d.v4i16.clamp
    2, // llvm.nvvm.sust.b.3d.v4i16.trap
    2, // llvm.nvvm.sust.b.3d.v4i16.zero
    2, // llvm.nvvm.sust.b.3d.v4i32.clamp
    2, // llvm.nvvm.sust.b.3d.v4i32.trap
    2, // llvm.nvvm.sust.b.3d.v4i32.zero
    2, // llvm.nvvm.sust.b.3d.v4i8.clamp
    2, // llvm.nvvm.sust.b.3d.v4i8.trap
    2, // llvm.nvvm.sust.b.3d.v4i8.zero
    2, // llvm.nvvm.sust.p.1d.array.i16.trap
    2, // llvm.nvvm.sust.p.1d.array.i32.trap
    2, // llvm.nvvm.sust.p.1d.array.i8.trap
    2, // llvm.nvvm.sust.p.1d.array.v2i16.trap
    2, // llvm.nvvm.sust.p.1d.array.v2i32.trap
    2, // llvm.nvvm.sust.p.1d.array.v2i8.trap
    2, // llvm.nvvm.sust.p.1d.array.v4i16.trap
    2, // llvm.nvvm.sust.p.1d.array.v4i32.trap
    2, // llvm.nvvm.sust.p.1d.array.v4i8.trap
    2, // llvm.nvvm.sust.p.1d.i16.trap
    2, // llvm.nvvm.sust.p.1d.i32.trap
    2, // llvm.nvvm.sust.p.1d.i8.trap
    2, // llvm.nvvm.sust.p.1d.v2i16.trap
    2, // llvm.nvvm.sust.p.1d.v2i32.trap
    2, // llvm.nvvm.sust.p.1d.v2i8.trap
    2, // llvm.nvvm.sust.p.1d.v4i16.trap
    2, // llvm.nvvm.sust.p.1d.v4i32.trap
    2, // llvm.nvvm.sust.p.1d.v4i8.trap
    2, // llvm.nvvm.sust.p.2d.array.i16.trap
    2, // llvm.nvvm.sust.p.2d.array.i32.trap
    2, // llvm.nvvm.sust.p.2d.array.i8.trap
    2, // llvm.nvvm.sust.p.2d.array.v2i16.trap
    2, // llvm.nvvm.sust.p.2d.array.v2i32.trap
    2, // llvm.nvvm.sust.p.2d.array.v2i8.trap
    2, // llvm.nvvm.sust.p.2d.array.v4i16.trap
    2, // llvm.nvvm.sust.p.2d.array.v4i32.trap
    2, // llvm.nvvm.sust.p.2d.array.v4i8.trap
    2, // llvm.nvvm.sust.p.2d.i16.trap
    2, // llvm.nvvm.sust.p.2d.i32.trap
    2, // llvm.nvvm.sust.p.2d.i8.trap
    2, // llvm.nvvm.sust.p.2d.v2i16.trap
    2, // llvm.nvvm.sust.p.2d.v2i32.trap
    2, // llvm.nvvm.sust.p.2d.v2i8.trap
    2, // llvm.nvvm.sust.p.2d.v4i16.trap
    2, // llvm.nvvm.sust.p.2d.v4i32.trap
    2, // llvm.nvvm.sust.p.2d.v4i8.trap
    2, // llvm.nvvm.sust.p.3d.i16.trap
    2, // llvm.nvvm.sust.p.3d.i32.trap
    2, // llvm.nvvm.sust.p.3d.i8.trap
    2, // llvm.nvvm.sust.p.3d.v2i16.trap
    2, // llvm.nvvm.sust.p.3d.v2i32.trap
    2, // llvm.nvvm.sust.p.3d.v2i8.trap
    2, // llvm.nvvm.sust.p.3d.v4i16.trap
    2, // llvm.nvvm.sust.p.3d.v4i32.trap
    2, // llvm.nvvm.sust.p.3d.v4i8.trap
    1, // llvm.nvvm.swap.lo.hi.b64
    2, // llvm.nvvm.tex.1d.array.grad.v4f32.f32
    2, // llvm.nvvm.tex.1d.array.grad.v4s32.f32
    2, // llvm.nvvm.tex.1d.array.grad.v4u32.f32
    2, // llvm.nvvm.tex.1d.array.level.v4f32.f32
    2, // llvm.nvvm.tex.1d.array.level.v4s32.f32
    2, // llvm.nvvm.tex.1d.array.level.v4u32.f32
    2, // llvm.nvvm.tex.1d.array.v4f32.f32
    2, // llvm.nvvm.tex.1d.array.v4f32.s32
    2, // llvm.nvvm.tex.1d.array.v4s32.f32
    2, // llvm.nvvm.tex.1d.array.v4s32.s32
    2, // llvm.nvvm.tex.1d.array.v4u32.f32
    2, // llvm.nvvm.tex.1d.array.v4u32.s32
    2, // llvm.nvvm.tex.1d.grad.v4f32.f32
    2, // llvm.nvvm.tex.1d.grad.v4s32.f32
    2, // llvm.nvvm.tex.1d.grad.v4u32.f32
    2, // llvm.nvvm.tex.1d.level.v4f32.f32
    2, // llvm.nvvm.tex.1d.level.v4s32.f32
    2, // llvm.nvvm.tex.1d.level.v4u32.f32
    2, // llvm.nvvm.tex.1d.v4f32.f32
    2, // llvm.nvvm.tex.1d.v4f32.s32
    2, // llvm.nvvm.tex.1d.v4s32.f32
    2, // llvm.nvvm.tex.1d.v4s32.s32
    2, // llvm.nvvm.tex.1d.v4u32.f32
    2, // llvm.nvvm.tex.1d.v4u32.s32
    2, // llvm.nvvm.tex.2d.array.grad.v4f32.f32
    2, // llvm.nvvm.tex.2d.array.grad.v4s32.f32
    2, // llvm.nvvm.tex.2d.array.grad.v4u32.f32
    2, // llvm.nvvm.tex.2d.array.level.v4f32.f32
    2, // llvm.nvvm.tex.2d.array.level.v4s32.f32
    2, // llvm.nvvm.tex.2d.array.level.v4u32.f32
    2, // llvm.nvvm.tex.2d.array.v4f32.f32
    2, // llvm.nvvm.tex.2d.array.v4f32.s32
    2, // llvm.nvvm.tex.2d.array.v4s32.f32
    2, // llvm.nvvm.tex.2d.array.v4s32.s32
    2, // llvm.nvvm.tex.2d.array.v4u32.f32
    2, // llvm.nvvm.tex.2d.array.v4u32.s32
    2, // llvm.nvvm.tex.2d.grad.v4f32.f32
    2, // llvm.nvvm.tex.2d.grad.v4s32.f32
    2, // llvm.nvvm.tex.2d.grad.v4u32.f32
    2, // llvm.nvvm.tex.2d.level.v4f32.f32
    2, // llvm.nvvm.tex.2d.level.v4s32.f32
    2, // llvm.nvvm.tex.2d.level.v4u32.f32
    2, // llvm.nvvm.tex.2d.v4f32.f32
    2, // llvm.nvvm.tex.2d.v4f32.s32
    2, // llvm.nvvm.tex.2d.v4s32.f32
    2, // llvm.nvvm.tex.2d.v4s32.s32
    2, // llvm.nvvm.tex.2d.v4u32.f32
    2, // llvm.nvvm.tex.2d.v4u32.s32
    2, // llvm.nvvm.tex.3d.grad.v4f32.f32
    2, // llvm.nvvm.tex.3d.grad.v4s32.f32
    2, // llvm.nvvm.tex.3d.grad.v4u32.f32
    2, // llvm.nvvm.tex.3d.level.v4f32.f32
    2, // llvm.nvvm.tex.3d.level.v4s32.f32
    2, // llvm.nvvm.tex.3d.level.v4u32.f32
    2, // llvm.nvvm.tex.3d.v4f32.f32
    2, // llvm.nvvm.tex.3d.v4f32.s32
    2, // llvm.nvvm.tex.3d.v4s32.f32
    2, // llvm.nvvm.tex.3d.v4s32.s32
    2, // llvm.nvvm.tex.3d.v4u32.f32
    2, // llvm.nvvm.tex.3d.v4u32.s32
    2, // llvm.nvvm.tex.cube.array.level.v4f32.f32
    2, // llvm.nvvm.tex.cube.array.level.v4s32.f32
    2, // llvm.nvvm.tex.cube.array.level.v4u32.f32
    2, // llvm.nvvm.tex.cube.array.v4f32.f32
    2, // llvm.nvvm.tex.cube.array.v4s32.f32
    2, // llvm.nvvm.tex.cube.array.v4u32.f32
    2, // llvm.nvvm.tex.cube.level.v4f32.f32
    2, // llvm.nvvm.tex.cube.level.v4s32.f32
    2, // llvm.nvvm.tex.cube.level.v4u32.f32
    2, // llvm.nvvm.tex.cube.v4f32.f32
    2, // llvm.nvvm.tex.cube.v4s32.f32
    2, // llvm.nvvm.tex.cube.v4u32.f32
    2, // llvm.nvvm.tex.unified.1d.array.grad.v4f32.f32
    2, // llvm.nvvm.tex.unified.1d.array.grad.v4s32.f32
    2, // llvm.nvvm.tex.unified.1d.array.grad.v4u32.f32
    2, // llvm.nvvm.tex.unified.1d.array.level.v4f32.f32
    2, // llvm.nvvm.tex.unified.1d.array.level.v4s32.f32
    2, // llvm.nvvm.tex.unified.1d.array.level.v4u32.f32
    2, // llvm.nvvm.tex.unified.1d.array.v4f32.f32
    2, // llvm.nvvm.tex.unified.1d.array.v4f32.s32
    2, // llvm.nvvm.tex.unified.1d.array.v4s32.f32
    2, // llvm.nvvm.tex.unified.1d.array.v4s32.s32
    2, // llvm.nvvm.tex.unified.1d.array.v4u32.f32
    2, // llvm.nvvm.tex.unified.1d.array.v4u32.s32
    2, // llvm.nvvm.tex.unified.1d.grad.v4f32.f32
    2, // llvm.nvvm.tex.unified.1d.grad.v4s32.f32
    2, // llvm.nvvm.tex.unified.1d.grad.v4u32.f32
    2, // llvm.nvvm.tex.unified.1d.level.v4f32.f32
    2, // llvm.nvvm.tex.unified.1d.level.v4s32.f32
    2, // llvm.nvvm.tex.unified.1d.level.v4u32.f32
    2, // llvm.nvvm.tex.unified.1d.v4f32.f32
    2, // llvm.nvvm.tex.unified.1d.v4f32.s32
    2, // llvm.nvvm.tex.unified.1d.v4s32.f32
    2, // llvm.nvvm.tex.unified.1d.v4s32.s32
    2, // llvm.nvvm.tex.unified.1d.v4u32.f32
    2, // llvm.nvvm.tex.unified.1d.v4u32.s32
    2, // llvm.nvvm.tex.unified.2d.array.grad.v4f32.f32
    2, // llvm.nvvm.tex.unified.2d.array.grad.v4s32.f32
    2, // llvm.nvvm.tex.unified.2d.array.grad.v4u32.f32
    2, // llvm.nvvm.tex.unified.2d.array.level.v4f32.f32
    2, // llvm.nvvm.tex.unified.2d.array.level.v4s32.f32
    2, // llvm.nvvm.tex.unified.2d.array.level.v4u32.f32
    2, // llvm.nvvm.tex.unified.2d.array.v4f32.f32
    2, // llvm.nvvm.tex.unified.2d.array.v4f32.s32
    2, // llvm.nvvm.tex.unified.2d.array.v4s32.f32
    2, // llvm.nvvm.tex.unified.2d.array.v4s32.s32
    2, // llvm.nvvm.tex.unified.2d.array.v4u32.f32
    2, // llvm.nvvm.tex.unified.2d.array.v4u32.s32
    2, // llvm.nvvm.tex.unified.2d.grad.v4f32.f32
    2, // llvm.nvvm.tex.unified.2d.grad.v4s32.f32
    2, // llvm.nvvm.tex.unified.2d.grad.v4u32.f32
    2, // llvm.nvvm.tex.unified.2d.level.v4f32.f32
    2, // llvm.nvvm.tex.unified.2d.level.v4s32.f32
    2, // llvm.nvvm.tex.unified.2d.level.v4u32.f32
    2, // llvm.nvvm.tex.unified.2d.v4f32.f32
    2, // llvm.nvvm.tex.unified.2d.v4f32.s32
    2, // llvm.nvvm.tex.unified.2d.v4s32.f32
    2, // llvm.nvvm.tex.unified.2d.v4s32.s32
    2, // llvm.nvvm.tex.unified.2d.v4u32.f32
    2, // llvm.nvvm.tex.unified.2d.v4u32.s32
    2, // llvm.nvvm.tex.unified.3d.grad.v4f32.f32
    2, // llvm.nvvm.tex.unified.3d.grad.v4s32.f32
    2, // llvm.nvvm.tex.unified.3d.grad.v4u32.f32
    2, // llvm.nvvm.tex.unified.3d.level.v4f32.f32
    2, // llvm.nvvm.tex.unified.3d.level.v4s32.f32
    2, // llvm.nvvm.tex.unified.3d.level.v4u32.f32
    2, // llvm.nvvm.tex.unified.3d.v4f32.f32
    2, // llvm.nvvm.tex.unified.3d.v4f32.s32
    2, // llvm.nvvm.tex.unified.3d.v4s32.f32
    2, // llvm.nvvm.tex.unified.3d.v4s32.s32
    2, // llvm.nvvm.tex.unified.3d.v4u32.f32
    2, // llvm.nvvm.tex.unified.3d.v4u32.s32
    2, // llvm.nvvm.tex.unified.cube.array.level.v4f32.f32
    2, // llvm.nvvm.tex.unified.cube.array.level.v4s32.f32
    2, // llvm.nvvm.tex.unified.cube.array.level.v4u32.f32
    2, // llvm.nvvm.tex.unified.cube.array.v4f32.f32
    2, // llvm.nvvm.tex.unified.cube.array.v4s32.f32
    2, // llvm.nvvm.tex.unified.cube.array.v4u32.f32
    2, // llvm.nvvm.tex.unified.cube.level.v4f32.f32
    2, // llvm.nvvm.tex.unified.cube.level.v4s32.f32
    2, // llvm.nvvm.tex.unified.cube.level.v4u32.f32
    2, // llvm.nvvm.tex.unified.cube.v4f32.f32
    2, // llvm.nvvm.tex.unified.cube.v4s32.f32
    2, // llvm.nvvm.tex.unified.cube.v4u32.f32
    1, // llvm.nvvm.texsurf.handle
    1, // llvm.nvvm.texsurf.handle.internal
    2, // llvm.nvvm.tld4.a.2d.v4f32.f32
    2, // llvm.nvvm.tld4.a.2d.v4s32.f32
    2, // llvm.nvvm.tld4.a.2d.v4u32.f32
    2, // llvm.nvvm.tld4.b.2d.v4f32.f32
    2, // llvm.nvvm.tld4.b.2d.v4s32.f32
    2, // llvm.nvvm.tld4.b.2d.v4u32.f32
    2, // llvm.nvvm.tld4.g.2d.v4f32.f32
    2, // llvm.nvvm.tld4.g.2d.v4s32.f32
    2, // llvm.nvvm.tld4.g.2d.v4u32.f32
    2, // llvm.nvvm.tld4.r.2d.v4f32.f32
    2, // llvm.nvvm.tld4.r.2d.v4s32.f32
    2, // llvm.nvvm.tld4.r.2d.v4u32.f32
    2, // llvm.nvvm.tld4.unified.a.2d.v4f32.f32
    2, // llvm.nvvm.tld4.unified.a.2d.v4s32.f32
    2, // llvm.nvvm.tld4.unified.a.2d.v4u32.f32
    2, // llvm.nvvm.tld4.unified.b.2d.v4f32.f32
    2, // llvm.nvvm.tld4.unified.b.2d.v4s32.f32
    2, // llvm.nvvm.tld4.unified.b.2d.v4u32.f32
    2, // llvm.nvvm.tld4.unified.g.2d.v4f32.f32
    2, // llvm.nvvm.tld4.unified.g.2d.v4s32.f32
    2, // llvm.nvvm.tld4.unified.g.2d.v4u32.f32
    2, // llvm.nvvm.tld4.unified.r.2d.v4f32.f32
    2, // llvm.nvvm.tld4.unified.r.2d.v4s32.f32
    2, // llvm.nvvm.tld4.unified.r.2d.v4u32.f32
    1, // llvm.nvvm.trunc.d
    1, // llvm.nvvm.trunc.f
    1, // llvm.nvvm.trunc.ftz.f
    1, // llvm.nvvm.txq.array.size
    1, // llvm.nvvm.txq.channel.data.type
    1, // llvm.nvvm.txq.channel.order
    1, // llvm.nvvm.txq.depth
    1, // llvm.nvvm.txq.height
    1, // llvm.nvvm.txq.num.mipmap.levels
    1, // llvm.nvvm.txq.num.samples
    1, // llvm.nvvm.txq.width
    1, // llvm.nvvm.ui2d.rm
    1, // llvm.nvvm.ui2d.rn
    1, // llvm.nvvm.ui2d.rp
    1, // llvm.nvvm.ui2d.rz
    1, // llvm.nvvm.ui2f.rm
    1, // llvm.nvvm.ui2f.rn
    1, // llvm.nvvm.ui2f.rp
    1, // llvm.nvvm.ui2f.rz
    1, // llvm.nvvm.ull2d.rm
    1, // llvm.nvvm.ull2d.rn
    1, // llvm.nvvm.ull2d.rp
    1, // llvm.nvvm.ull2d.rz
    1, // llvm.nvvm.ull2f.rm
    1, // llvm.nvvm.ull2f.rn
    1, // llvm.nvvm.ull2f.rp
    1, // llvm.nvvm.ull2f.rz
    1, // llvm.objectsize
    2, // llvm.pcmarker
    1, // llvm.pow
    1, // llvm.powi
    2, // llvm.ppc.altivec.dss
    2, // llvm.ppc.altivec.dssall
    2, // llvm.ppc.altivec.dst
    2, // llvm.ppc.altivec.dstst
    2, // llvm.ppc.altivec.dststt
    2, // llvm.ppc.altivec.dstt
    3, // llvm.ppc.altivec.lvebx
    3, // llvm.ppc.altivec.lvehx
    3, // llvm.ppc.altivec.lvewx
    1, // llvm.ppc.altivec.lvsl
    1, // llvm.ppc.altivec.lvsr
    3, // llvm.ppc.altivec.lvx
    3, // llvm.ppc.altivec.lvxl
    3, // llvm.ppc.altivec.mfvscr
    2, // llvm.ppc.altivec.mtvscr
    2, // llvm.ppc.altivec.stvebx
    2, // llvm.ppc.altivec.stvehx
    2, // llvm.ppc.altivec.stvewx
    2, // llvm.ppc.altivec.stvx
    2, // llvm.ppc.altivec.stvxl
    1, // llvm.ppc.altivec.vaddcuw
    1, // llvm.ppc.altivec.vaddsbs
    1, // llvm.ppc.altivec.vaddshs
    1, // llvm.ppc.altivec.vaddsws
    1, // llvm.ppc.altivec.vaddubs
    1, // llvm.ppc.altivec.vadduhs
    1, // llvm.ppc.altivec.vadduws
    1, // llvm.ppc.altivec.vavgsb
    1, // llvm.ppc.altivec.vavgsh
    1, // llvm.ppc.altivec.vavgsw
    1, // llvm.ppc.altivec.vavgub
    1, // llvm.ppc.altivec.vavguh
    1, // llvm.ppc.altivec.vavguw
    1, // llvm.ppc.altivec.vcfsx
    1, // llvm.ppc.altivec.vcfux
    1, // llvm.ppc.altivec.vcmpbfp
    1, // llvm.ppc.altivec.vcmpbfp.p
    1, // llvm.ppc.altivec.vcmpeqfp
    1, // llvm.ppc.altivec.vcmpeqfp.p
    1, // llvm.ppc.altivec.vcmpequb
    1, // llvm.ppc.altivec.vcmpequb.p
    1, // llvm.ppc.altivec.vcmpequh
    1, // llvm.ppc.altivec.vcmpequh.p
    1, // llvm.ppc.altivec.vcmpequw
    1, // llvm.ppc.altivec.vcmpequw.p
    1, // llvm.ppc.altivec.vcmpgefp
    1, // llvm.ppc.altivec.vcmpgefp.p
    1, // llvm.ppc.altivec.vcmpgtfp
    1, // llvm.ppc.altivec.vcmpgtfp.p
    1, // llvm.ppc.altivec.vcmpgtsb
    1, // llvm.ppc.altivec.vcmpgtsb.p
    1, // llvm.ppc.altivec.vcmpgtsh
    1, // llvm.ppc.altivec.vcmpgtsh.p
    1, // llvm.ppc.altivec.vcmpgtsw
    1, // llvm.ppc.altivec.vcmpgtsw.p
    1, // llvm.ppc.altivec.vcmpgtub
    1, // llvm.ppc.altivec.vcmpgtub.p
    1, // llvm.ppc.altivec.vcmpgtuh
    1, // llvm.ppc.altivec.vcmpgtuh.p
    1, // llvm.ppc.altivec.vcmpgtuw
    1, // llvm.ppc.altivec.vcmpgtuw.p
    1, // llvm.ppc.altivec.vctsxs
    1, // llvm.ppc.altivec.vctuxs
    1, // llvm.ppc.altivec.vexptefp
    1, // llvm.ppc.altivec.vlogefp
    1, // llvm.ppc.altivec.vmaddfp
    1, // llvm.ppc.altivec.vmaxfp
    1, // llvm.ppc.altivec.vmaxsb
    1, // llvm.ppc.altivec.vmaxsh
    1, // llvm.ppc.altivec.vmaxsw
    1, // llvm.ppc.altivec.vmaxub
    1, // llvm.ppc.altivec.vmaxuh
    1, // llvm.ppc.altivec.vmaxuw
    1, // llvm.ppc.altivec.vmhaddshs
    1, // llvm.ppc.altivec.vmhraddshs
    1, // llvm.ppc.altivec.vminfp
    1, // llvm.ppc.altivec.vminsb
    1, // llvm.ppc.altivec.vminsh
    1, // llvm.ppc.altivec.vminsw
    1, // llvm.ppc.altivec.vminub
    1, // llvm.ppc.altivec.vminuh
    1, // llvm.ppc.altivec.vminuw
    1, // llvm.ppc.altivec.vmladduhm
    1, // llvm.ppc.altivec.vmsummbm
    1, // llvm.ppc.altivec.vmsumshm
    1, // llvm.ppc.altivec.vmsumshs
    1, // llvm.ppc.altivec.vmsumubm
    1, // llvm.ppc.altivec.vmsumuhm
    1, // llvm.ppc.altivec.vmsumuhs
    1, // llvm.ppc.altivec.vmulesb
    1, // llvm.ppc.altivec.vmulesh
    1, // llvm.ppc.altivec.vmuleub
    1, // llvm.ppc.altivec.vmuleuh
    1, // llvm.ppc.altivec.vmulosb
    1, // llvm.ppc.altivec.vmulosh
    1, // llvm.ppc.altivec.vmuloub
    1, // llvm.ppc.altivec.vmulouh
    1, // llvm.ppc.altivec.vnmsubfp
    1, // llvm.ppc.altivec.vperm
    1, // llvm.ppc.altivec.vpkpx
    1, // llvm.ppc.altivec.vpkshss
    1, // llvm.ppc.altivec.vpkshus
    1, // llvm.ppc.altivec.vpkswss
    1, // llvm.ppc.altivec.vpkswus
    1, // llvm.ppc.altivec.vpkuhus
    1, // llvm.ppc.altivec.vpkuwus
    1, // llvm.ppc.altivec.vrefp
    1, // llvm.ppc.altivec.vrfim
    1, // llvm.ppc.altivec.vrfin
    1, // llvm.ppc.altivec.vrfip
    1, // llvm.ppc.altivec.vrfiz
    1, // llvm.ppc.altivec.vrlb
    1, // llvm.ppc.altivec.vrlh
    1, // llvm.ppc.altivec.vrlw
    1, // llvm.ppc.altivec.vrsqrtefp
    1, // llvm.ppc.altivec.vsel
    1, // llvm.ppc.altivec.vsl
    1, // llvm.ppc.altivec.vslb
    1, // llvm.ppc.altivec.vslh
    1, // llvm.ppc.altivec.vslo
    1, // llvm.ppc.altivec.vslw
    1, // llvm.ppc.altivec.vsr
    1, // llvm.ppc.altivec.vsrab
    1, // llvm.ppc.altivec.vsrah
    1, // llvm.ppc.altivec.vsraw
    1, // llvm.ppc.altivec.vsrb
    1, // llvm.ppc.altivec.vsrh
    1, // llvm.ppc.altivec.vsro
    1, // llvm.ppc.altivec.vsrw
    1, // llvm.ppc.altivec.vsubcuw
    1, // llvm.ppc.altivec.vsubsbs
    1, // llvm.ppc.altivec.vsubshs
    1, // llvm.ppc.altivec.vsubsws
    1, // llvm.ppc.altivec.vsububs
    1, // llvm.ppc.altivec.vsubuhs
    1, // llvm.ppc.altivec.vsubuws
    1, // llvm.ppc.altivec.vsum2sws
    1, // llvm.ppc.altivec.vsum4sbs
    1, // llvm.ppc.altivec.vsum4shs
    1, // llvm.ppc.altivec.vsum4ubs
    1, // llvm.ppc.altivec.vsumsws
    1, // llvm.ppc.altivec.vupkhpx
    1, // llvm.ppc.altivec.vupkhsb
    1, // llvm.ppc.altivec.vupkhsh
    1, // llvm.ppc.altivec.vupklpx
    1, // llvm.ppc.altivec.vupklsb
    1, // llvm.ppc.altivec.vupklsh
    2, // llvm.ppc.dcba
    2, // llvm.ppc.dcbf
    2, // llvm.ppc.dcbi
    2, // llvm.ppc.dcbst
    12, // llvm.ppc.dcbt
    2, // llvm.ppc.dcbtst
    2, // llvm.ppc.dcbz
    2, // llvm.ppc.dcbzl
    2, // llvm.ppc.is.decremented.ctr.nonzero
    2, // llvm.ppc.mtctr
    2, // llvm.ppc.sync
    12, // llvm.prefetch
    2, // llvm.ptr.annotation
    2, // llvm.ptx.bar.sync
    1, // llvm.ptx.read.clock
    1, // llvm.ptx.read.clock64
    1, // llvm.ptx.read.ctaid.w
    1, // llvm.ptx.read.ctaid.x
    1, // llvm.ptx.read.ctaid.y
    1, // llvm.ptx.read.ctaid.z
    1, // llvm.ptx.read.gridid
    1, // llvm.ptx.read.laneid
    1, // llvm.ptx.read.lanemask.eq
    1, // llvm.ptx.read.lanemask.ge
    1, // llvm.ptx.read.lanemask.gt
    1, // llvm.ptx.read.lanemask.le
    1, // llvm.ptx.read.lanemask.lt
    1, // llvm.ptx.read.nctaid.w
    1, // llvm.ptx.read.nctaid.x
    1, // llvm.ptx.read.nctaid.y
    1, // llvm.ptx.read.nctaid.z
    1, // llvm.ptx.read.nsmid
    1, // llvm.ptx.read.ntid.w
    1, // llvm.ptx.read.ntid.x
    1, // llvm.ptx.read.ntid.y
    1, // llvm.ptx.read.ntid.z
    1, // llvm.ptx.read.nwarpid
    1, // llvm.ptx.read.pm0
    1, // llvm.ptx.read.pm1
    1, // llvm.ptx.read.pm2
    1, // llvm.ptx.read.pm3
    1, // llvm.ptx.read.smid
    1, // llvm.ptx.read.tid.w
    1, // llvm.ptx.read.tid.x
    1, // llvm.ptx.read.tid.y
    1, // llvm.ptx.read.tid.z
    1, // llvm.ptx.read.warpid
    1, // llvm.r600.read.global.size.x
    1, // llvm.r600.read.global.size.y
    1, // llvm.r600.read.global.size.z
    1, // llvm.r600.read.local.size.x
    1, // llvm.r600.read.local.size.y
    1, // llvm.r600.read.local.size.z
    1, // llvm.r600.read.ngroups.x
    1, // llvm.r600.read.ngroups.y
    1, // llvm.r600.read.ngroups.z
    1, // llvm.r600.read.tgid.x
    1, // llvm.r600.read.tgid.y
    1, // llvm.r600.read.tgid.z
    1, // llvm.r600.read.tidig.x
    1, // llvm.r600.read.tidig.y
    1, // llvm.r600.read.tidig.z
    1, // llvm.read_register
    2, // llvm.readcyclecounter
    1, // llvm.returnaddress
    1, // llvm.rint
    1, // llvm.round
    1, // llvm.sadd.with.overflow
    2, // llvm.setjmp
    9, // llvm.siglongjmp
    2, // llvm.sigsetjmp
    1, // llvm.sin
    1, // llvm.smul.with.overflow
    1, // llvm.sqrt
    1, // llvm.ssub.with.overflow
    2, // llvm.stackprotector
    2, // llvm.stackprotectorcheck
    2, // llvm.stackrestore
    2, // llvm.stacksave
    9, // llvm.trap
    1, // llvm.trunc
    1, // llvm.uadd.with.overflow
    1, // llvm.umul.with.overflow
    1, // llvm.usub.with.overflow
    2, // llvm.va_copy
    2, // llvm.va_end
    2, // llvm.var.annotation
    2, // llvm.va_start
    2, // llvm.write_register
    1, // llvm.x86.3dnow.pavgusb
    1, // llvm.x86.3dnow.pf2id
    1, // llvm.x86.3dnow.pfacc
    1, // llvm.x86.3dnow.pfadd
    1, // llvm.x86.3dnow.pfcmpeq
    1, // llvm.x86.3dnow.pfcmpge
    1, // llvm.x86.3dnow.pfcmpgt
    1, // llvm.x86.3dnow.pfmax
    1, // llvm.x86.3dnow.pfmin
    1, // llvm.x86.3dnow.pfmul
    1, // llvm.x86.3dnow.pfrcp
    1, // llvm.x86.3dnow.pfrcpit1
    1, // llvm.x86.3dnow.pfrcpit2
    1, // llvm.x86.3dnow.pfrsqit1
    1, // llvm.x86.3dnow.pfrsqrt
    1, // llvm.x86.3dnow.pfsub
    1, // llvm.x86.3dnow.pfsubr
    1, // llvm.x86.3dnow.pi2fd
    1, // llvm.x86.3dnow.pmulhrw
    1, // llvm.x86.3dnowa.pf2iw
    1, // llvm.x86.3dnowa.pfnacc
    1, // llvm.x86.3dnowa.pfpnacc
    1, // llvm.x86.3dnowa.pi2fw
    1, // llvm.x86.3dnowa.pswapd
    1, // llvm.x86.aesni.aesdec
    1, // llvm.x86.aesni.aesdeclast
    1, // llvm.x86.aesni.aesenc
    1, // llvm.x86.aesni.aesenclast
    1, // llvm.x86.aesni.aesimc
    1, // llvm.x86.aesni.aeskeygenassist
    3, // llvm.x86.avx2.gather.d.d
    3, // llvm.x86.avx2.gather.d.d.256
    3, // llvm.x86.avx2.gather.d.pd
    3, // llvm.x86.avx2.gather.d.pd.256
    3, // llvm.x86.avx2.gather.d.ps
    3, // llvm.x86.avx2.gather.d.ps.256
    3, // llvm.x86.avx2.gather.d.q
    3, // llvm.x86.avx2.gather.d.q.256
    3, // llvm.x86.avx2.gather.q.d
    3, // llvm.x86.avx2.gather.q.d.256
    3, // llvm.x86.avx2.gather.q.pd
    3, // llvm.x86.avx2.gather.q.pd.256
    3, // llvm.x86.avx2.gather.q.ps
    3, // llvm.x86.avx2.gather.q.ps.256
    3, // llvm.x86.avx2.gather.q.q
    3, // llvm.x86.avx2.gather.q.q.256
    3, // llvm.x86.avx2.maskload.d
    3, // llvm.x86.avx2.maskload.d.256
    3, // llvm.x86.avx2.maskload.q
    3, // llvm.x86.avx2.maskload.q.256
    2, // llvm.x86.avx2.maskstore.d
    2, // llvm.x86.avx2.maskstore.d.256
    2, // llvm.x86.avx2.maskstore.q
    2, // llvm.x86.avx2.maskstore.q.256
    3, // llvm.x86.avx2.movntdqa
    1, // llvm.x86.avx2.mpsadbw
    1, // llvm.x86.avx2.pabs.b
    1, // llvm.x86.avx2.pabs.d
    1, // llvm.x86.avx2.pabs.w
    1, // llvm.x86.avx2.packssdw
    1, // llvm.x86.avx2.packsswb
    1, // llvm.x86.avx2.packusdw
    1, // llvm.x86.avx2.packuswb
    1, // llvm.x86.avx2.padds.b
    1, // llvm.x86.avx2.padds.w
    1, // llvm.x86.avx2.paddus.b
    1, // llvm.x86.avx2.paddus.w
    1, // llvm.x86.avx2.pavg.b
    1, // llvm.x86.avx2.pavg.w
    1, // llvm.x86.avx2.pblendd.128
    1, // llvm.x86.avx2.pblendd.256
    1, // llvm.x86.avx2.pblendvb
    1, // llvm.x86.avx2.pblendw
    1, // llvm.x86.avx2.pbroadcastb.128
    1, // llvm.x86.avx2.pbroadcastb.256
    1, // llvm.x86.avx2.pbroadcastd.128
    1, // llvm.x86.avx2.pbroadcastd.256
    1, // llvm.x86.avx2.pbroadcastq.128
    1, // llvm.x86.avx2.pbroadcastq.256
    1, // llvm.x86.avx2.pbroadcastw.128
    1, // llvm.x86.avx2.pbroadcastw.256
    1, // llvm.x86.avx2.permd
    1, // llvm.x86.avx2.permps
    1, // llvm.x86.avx2.phadd.d
    1, // llvm.x86.avx2.phadd.sw
    1, // llvm.x86.avx2.phadd.w
    1, // llvm.x86.avx2.phsub.d
    1, // llvm.x86.avx2.phsub.sw
    1, // llvm.x86.avx2.phsub.w
    1, // llvm.x86.avx2.pmadd.ub.sw
    1, // llvm.x86.avx2.pmadd.wd
    1, // llvm.x86.avx2.pmaxs.b
    1, // llvm.x86.avx2.pmaxs.d
    1, // llvm.x86.avx2.pmaxs.w
    1, // llvm.x86.avx2.pmaxu.b
    1, // llvm.x86.avx2.pmaxu.d
    1, // llvm.x86.avx2.pmaxu.w
    1, // llvm.x86.avx2.pmins.b
    1, // llvm.x86.avx2.pmins.d
    1, // llvm.x86.avx2.pmins.w
    1, // llvm.x86.avx2.pminu.b
    1, // llvm.x86.avx2.pminu.d
    1, // llvm.x86.avx2.pminu.w
    1, // llvm.x86.avx2.pmovmskb
    1, // llvm.x86.avx2.pmovsxbd
    1, // llvm.x86.avx2.pmovsxbq
    1, // llvm.x86.avx2.pmovsxbw
    1, // llvm.x86.avx2.pmovsxdq
    1, // llvm.x86.avx2.pmovsxwd
    1, // llvm.x86.avx2.pmovsxwq
    1, // llvm.x86.avx2.pmovzxbd
    1, // llvm.x86.avx2.pmovzxbq
    1, // llvm.x86.avx2.pmovzxbw
    1, // llvm.x86.avx2.pmovzxdq
    1, // llvm.x86.avx2.pmovzxwd
    1, // llvm.x86.avx2.pmovzxwq
    1, // llvm.x86.avx2.pmul.dq
    1, // llvm.x86.avx2.pmul.hr.sw
    1, // llvm.x86.avx2.pmulh.w
    1, // llvm.x86.avx2.pmulhu.w
    1, // llvm.x86.avx2.pmulu.dq
    1, // llvm.x86.avx2.psad.bw
    1, // llvm.x86.avx2.pshuf.b
    1, // llvm.x86.avx2.psign.b
    1, // llvm.x86.avx2.psign.d
    1, // llvm.x86.avx2.psign.w
    1, // llvm.x86.avx2.psll.d
    1, // llvm.x86.avx2.psll.dq
    1, // llvm.x86.avx2.psll.dq.bs
    1, // llvm.x86.avx2.psll.q
    1, // llvm.x86.avx2.psll.w
    1, // llvm.x86.avx2.pslli.d
    1, // llvm.x86.avx2.pslli.q
    1, // llvm.x86.avx2.pslli.w
    1, // llvm.x86.avx2.psllv.d
    1, // llvm.x86.avx2.psllv.d.256
    1, // llvm.x86.avx2.psllv.q
    1, // llvm.x86.avx2.psllv.q.256
    1, // llvm.x86.avx2.psra.d
    1, // llvm.x86.avx2.psra.w
    1, // llvm.x86.avx2.psrai.d
    1, // llvm.x86.avx2.psrai.w
    1, // llvm.x86.avx2.psrav.d
    1, // llvm.x86.avx2.psrav.d.256
    1, // llvm.x86.avx2.psrl.d
    1, // llvm.x86.avx2.psrl.dq
    1, // llvm.x86.avx2.psrl.dq.bs
    1, // llvm.x86.avx2.psrl.q
    1, // llvm.x86.avx2.psrl.w
    1, // llvm.x86.avx2.psrli.d
    1, // llvm.x86.avx2.psrli.q
    1, // llvm.x86.avx2.psrli.w
    1, // llvm.x86.avx2.psrlv.d
    1, // llvm.x86.avx2.psrlv.d.256
    1, // llvm.x86.avx2.psrlv.q
    1, // llvm.x86.avx2.psrlv.q.256
    1, // llvm.x86.avx2.psubs.b
    1, // llvm.x86.avx2.psubs.w
    1, // llvm.x86.avx2.psubus.b
    1, // llvm.x86.avx2.psubus.w
    1, // llvm.x86.avx2.vbroadcast.sd.pd.256
    1, // llvm.x86.avx2.vbroadcast.ss.ps
    1, // llvm.x86.avx2.vbroadcast.ss.ps.256
    3, // llvm.x86.avx2.vbroadcasti128
    1, // llvm.x86.avx2.vextracti128
    1, // llvm.x86.avx2.vinserti128
    1, // llvm.x86.avx2.vperm2i128
    1, // llvm.x86.avx512.cvtsd2usi
    1, // llvm.x86.avx512.cvtsd2usi64
    1, // llvm.x86.avx512.cvtss2usi
    1, // llvm.x86.avx512.cvtss2usi64
    1, // llvm.x86.avx512.cvttsd2usi
    1, // llvm.x86.avx512.cvttsd2usi64
    1, // llvm.x86.avx512.cvttss2usi
    1, // llvm.x86.avx512.cvttss2usi64
    1, // llvm.x86.avx512.cvtusi2sd
    1, // llvm.x86.avx512.cvtusi2ss
    1, // llvm.x86.avx512.cvtusi642sd
    1, // llvm.x86.avx512.cvtusi642ss
    3, // llvm.x86.avx512.gather.dpd.512
    3, // llvm.x86.avx512.gather.dpi.512
    3, // llvm.x86.avx512.gather.dpq.512
    3, // llvm.x86.avx512.gather.dps.512
    3, // llvm.x86.avx512.gather.qpd.512
    3, // llvm.x86.avx512.gather.qpi.512
    3, // llvm.x86.avx512.gather.qpq.512
    3, // llvm.x86.avx512.gather.qps.512
    2, // llvm.x86.avx512.gatherpf.dpd.512
    2, // llvm.x86.avx512.gatherpf.dps.512
    2, // llvm.x86.avx512.gatherpf.qpd.512
    2, // llvm.x86.avx512.gatherpf.qps.512
    1, // llvm.x86.avx512.kand.w
    1, // llvm.x86.avx512.kandn.w
    1, // llvm.x86.avx512.knot.w
    1, // llvm.x86.avx512.kor.w
    1, // llvm.x86.avx512.kortestc.w
    1, // llvm.x86.avx512.kortestz.w
    1, // llvm.x86.avx512.kunpck.bw
    1, // llvm.x86.avx512.kxnor.w
    1, // llvm.x86.avx512.kxor.w
    1, // llvm.x86.avx512.mask.blend.d.512
    1, // llvm.x86.avx512.mask.blend.pd.512
    1, // llvm.x86.avx512.mask.blend.ps.512
    1, // llvm.x86.avx512.mask.blend.q.512
    1, // llvm.x86.avx512.mask.cmp.pd.512
    1, // llvm.x86.avx512.mask.cmp.ps.512
    2, // llvm.x86.avx512.mask.conflict.d.512
    2, // llvm.x86.avx512.mask.conflict.q.512
    1, // llvm.x86.avx512.mask.cvtdq2pd.512
    1, // llvm.x86.avx512.mask.cvtdq2ps.512
    1, // llvm.x86.avx512.mask.cvtpd2dq.512
    1, // llvm.x86.avx512.mask.cvtpd2ps.512
    1, // llvm.x86.avx512.mask.cvtpd2udq.512
    1, // llvm.x86.avx512.mask.cvtps2dq.512
    1, // llvm.x86.avx512.mask.cvtps2udq.512
    1, // llvm.x86.avx512.mask.cvttpd2dq.512
    1, // llvm.x86.avx512.mask.cvttpd2udq.512
    1, // llvm.x86.avx512.mask.cvttps2dq.512
    1, // llvm.x86.avx512.mask.cvttps2udq.512
    1, // llvm.x86.avx512.mask.cvtudq2pd.512
    1, // llvm.x86.avx512.mask.cvtudq2ps.512
    3, // llvm.x86.avx512.mask.loadu.d.512
    3, // llvm.x86.avx512.mask.loadu.pd.512
    3, // llvm.x86.avx512.mask.loadu.ps.512
    3, // llvm.x86.avx512.mask.loadu.q.512
    2, // llvm.x86.avx512.mask.lzcnt.d.512
    2, // llvm.x86.avx512.mask.lzcnt.q.512
    1, // llvm.x86.avx512.mask.max.pd.512
    1, // llvm.x86.avx512.mask.max.ps.512
    1, // llvm.x86.avx512.mask.min.pd.512
    1, // llvm.x86.avx512.mask.min.ps.512
    1, // llvm.x86.avx512.mask.pabs.d.512
    1, // llvm.x86.avx512.mask.pabs.q.512
    1, // llvm.x86.avx512.mask.pand.d.512
    1, // llvm.x86.avx512.mask.pand.q.512
    1, // llvm.x86.avx512.mask.pbroadcast.d.gpr.512
    1, // llvm.x86.avx512.mask.pbroadcast.q.gpr.512
    1, // llvm.x86.avx512.mask.pbroadcast.q.mem.512
    1, // llvm.x86.avx512.mask.pcmpeq.d.512
    1, // llvm.x86.avx512.mask.pcmpeq.q.512
    1, // llvm.x86.avx512.mask.pmaxs.d.512
    1, // llvm.x86.avx512.mask.pmaxs.q.512
    1, // llvm.x86.avx512.mask.pmaxu.d.512
    1, // llvm.x86.avx512.mask.pmaxu.q.512
    1, // llvm.x86.avx512.mask.pmins.d.512
    1, // llvm.x86.avx512.mask.pmins.q.512
    1, // llvm.x86.avx512.mask.pminu.d.512
    1, // llvm.x86.avx512.mask.pminu.q.512
    1, // llvm.x86.avx512.mask.pmul.dq.512
    1, // llvm.x86.avx512.mask.pmulu.dq.512
    1, // llvm.x86.avx512.mask.ptestm.d.512
    1, // llvm.x86.avx512.mask.ptestm.q.512
    1, // llvm.x86.avx512.mask.rndscale.pd.512
    1, // llvm.x86.avx512.mask.rndscale.ps.512
    2, // llvm.x86.avx512.mask.storeu.d.512
    2, // llvm.x86.avx512.mask.storeu.pd.512
    2, // llvm.x86.avx512.mask.storeu.ps.512
    2, // llvm.x86.avx512.mask.storeu.q.512
    1, // llvm.x86.avx512.mask.vcvtph2ps.512
    1, // llvm.x86.avx512.mask.vcvtps2ph.512
    1, // llvm.x86.avx512.mask.vpermt.d.512
    1, // llvm.x86.avx512.mask.vpermt.pd.512
    1, // llvm.x86.avx512.mask.vpermt.ps.512
    1, // llvm.x86.avx512.mask.vpermt.q.512
    3, // llvm.x86.avx512.movntdqa
    1, // llvm.x86.avx512.pbroadcastd.512
    1, // llvm.x86.avx512.pbroadcastd.i32.512
    1, // llvm.x86.avx512.pbroadcastq.512
    1, // llvm.x86.avx512.pbroadcastq.i64.512
    1, // llvm.x86.avx512.pmovzxbd
    1, // llvm.x86.avx512.pmovzxbq
    1, // llvm.x86.avx512.pmovzxdq
    1, // llvm.x86.avx512.pmovzxwd
    1, // llvm.x86.avx512.pmovzxwq
    1, // llvm.x86.avx512.psll.dq
    1, // llvm.x86.avx512.psll.dq.bs
    1, // llvm.x86.avx512.psrl.dq
    1, // llvm.x86.avx512.psrl.dq.bs
    1, // llvm.x86.avx512.rcp14.pd.512
    1, // llvm.x86.avx512.rcp14.ps.512
    1, // llvm.x86.avx512.rcp14.sd
    1, // llvm.x86.avx512.rcp14.ss
    1, // llvm.x86.avx512.rcp28.pd
    1, // llvm.x86.avx512.rcp28.ps
    1, // llvm.x86.avx512.rcp28.sd
    1, // llvm.x86.avx512.rcp28.ss
    1, // llvm.x86.avx512.rndscale.sd
    1, // llvm.x86.avx512.rndscale.ss
    1, // llvm.x86.avx512.rsqrt14.pd.512
    1, // llvm.x86.avx512.rsqrt14.ps.512
    1, // llvm.x86.avx512.rsqrt14.sd
    1, // llvm.x86.avx512.rsqrt14.ss
    1, // llvm.x86.avx512.rsqrt28.pd
    1, // llvm.x86.avx512.rsqrt28.ps
    1, // llvm.x86.avx512.rsqrt28.sd
    1, // llvm.x86.avx512.rsqrt28.ss
    2, // llvm.x86.avx512.scatter.dpd.512
    2, // llvm.x86.avx512.scatter.dpi.512
    2, // llvm.x86.avx512.scatter.dpq.512
    2, // llvm.x86.avx512.scatter.dps.512
    2, // llvm.x86.avx512.scatter.qpd.512
    2, // llvm.x86.avx512.scatter.qpi.512
    2, // llvm.x86.avx512.scatter.qpq.512
    2, // llvm.x86.avx512.scatter.qps.512
    2, // llvm.x86.avx512.scatterpf.dpd.512
    2, // llvm.x86.avx512.scatterpf.dps.512
    2, // llvm.x86.avx512.scatterpf.qpd.512
    2, // llvm.x86.avx512.scatterpf.qps.512
    1, // llvm.x86.avx512.sqrt.pd.512
    1, // llvm.x86.avx512.sqrt.ps.512
    1, // llvm.x86.avx512.sqrt.sd
    1, // llvm.x86.avx512.sqrt.ss
    3, // llvm.x86.avx512.vbroadcast.sd.512
    1, // llvm.x86.avx512.vbroadcast.sd.pd.512
    3, // llvm.x86.avx512.vbroadcast.ss.512
    1, // llvm.x86.avx512.vbroadcast.ss.ps.512
    1, // llvm.x86.avx.addsub.pd.256
    1, // llvm.x86.avx.addsub.ps.256
    1, // llvm.x86.avx.blend.pd.256
    1, // llvm.x86.avx.blend.ps.256
    1, // llvm.x86.avx.blendv.pd.256
    1, // llvm.x86.avx.blendv.ps.256
    1, // llvm.x86.avx.cmp.pd.256
    1, // llvm.x86.avx.cmp.ps.256
    1, // llvm.x86.avx.cvt.pd2.ps.256
    1, // llvm.x86.avx.cvt.pd2dq.256
    1, // llvm.x86.avx.cvt.ps2.pd.256
    1, // llvm.x86.avx.cvt.ps2dq.256
    1, // llvm.x86.avx.cvtdq2.pd.256
    1, // llvm.x86.avx.cvtdq2.ps.256
    1, // llvm.x86.avx.cvtt.pd2dq.256
    1, // llvm.x86.avx.cvtt.ps2dq.256
    1, // llvm.x86.avx.dp.ps.256
    1, // llvm.x86.avx.hadd.pd.256
    1, // llvm.x86.avx.hadd.ps.256
    1, // llvm.x86.avx.hsub.pd.256
    1, // llvm.x86.avx.hsub.ps.256
    3, // llvm.x86.avx.ldu.dq.256
    3, // llvm.x86.avx.maskload.pd
    3, // llvm.x86.avx.maskload.pd.256
    3, // llvm.x86.avx.maskload.ps
    3, // llvm.x86.avx.maskload.ps.256
    2, // llvm.x86.avx.maskstore.pd
    2, // llvm.x86.avx.maskstore.pd.256
    2, // llvm.x86.avx.maskstore.ps
    2, // llvm.x86.avx.maskstore.ps.256
    1, // llvm.x86.avx.max.pd.256
    1, // llvm.x86.avx.max.ps.256
    1, // llvm.x86.avx.min.pd.256
    1, // llvm.x86.avx.min.ps.256
    1, // llvm.x86.avx.movmsk.pd.256
    1, // llvm.x86.avx.movmsk.ps.256
    1, // llvm.x86.avx.ptestc.256
    1, // llvm.x86.avx.ptestnzc.256
    1, // llvm.x86.avx.ptestz.256
    1, // llvm.x86.avx.rcp.ps.256
    1, // llvm.x86.avx.round.pd.256
    1, // llvm.x86.avx.round.ps.256
    1, // llvm.x86.avx.rsqrt.ps.256
    1, // llvm.x86.avx.sqrt.pd.256
    1, // llvm.x86.avx.sqrt.ps.256
    2, // llvm.x86.avx.storeu.dq.256
    2, // llvm.x86.avx.storeu.pd.256
    2, // llvm.x86.avx.storeu.ps.256
    3, // llvm.x86.avx.vbroadcastf128.pd.256
    3, // llvm.x86.avx.vbroadcastf128.ps.256
    1, // llvm.x86.avx.vextractf128.pd.256
    1, // llvm.x86.avx.vextractf128.ps.256
    1, // llvm.x86.avx.vextractf128.si.256
    1, // llvm.x86.avx.vinsertf128.pd.256
    1, // llvm.x86.avx.vinsertf128.ps.256
    1, // llvm.x86.avx.vinsertf128.si.256
    1, // llvm.x86.avx.vperm2f128.pd.256
    1, // llvm.x86.avx.vperm2f128.ps.256
    1, // llvm.x86.avx.vperm2f128.si.256
    1, // llvm.x86.avx.vpermilvar.pd
    1, // llvm.x86.avx.vpermilvar.pd.256
    1, // llvm.x86.avx.vpermilvar.ps
    1, // llvm.x86.avx.vpermilvar.ps.256
    1, // llvm.x86.avx.vtestc.pd
    1, // llvm.x86.avx.vtestc.pd.256
    1, // llvm.x86.avx.vtestc.ps
    1, // llvm.x86.avx.vtestc.ps.256
    1, // llvm.x86.avx.vtestnzc.pd
    1, // llvm.x86.avx.vtestnzc.pd.256
    1, // llvm.x86.avx.vtestnzc.ps
    1, // llvm.x86.avx.vtestnzc.ps.256
    1, // llvm.x86.avx.vtestz.pd
    1, // llvm.x86.avx.vtestz.pd.256
    1, // llvm.x86.avx.vtestz.ps
    1, // llvm.x86.avx.vtestz.ps.256
    2, // llvm.x86.avx.vzeroall
    2, // llvm.x86.avx.vzeroupper
    1, // llvm.x86.bmi.bextr.32
    1, // llvm.x86.bmi.bextr.64
    1, // llvm.x86.bmi.bzhi.32
    1, // llvm.x86.bmi.bzhi.64
    1, // llvm.x86.bmi.pdep.32
    1, // llvm.x86.bmi.pdep.64
    1, // llvm.x86.bmi.pext.32
    1, // llvm.x86.bmi.pext.64
    1, // llvm.x86.fma.vfmadd.pd
    1, // llvm.x86.fma.vfmadd.pd.256
    1, // llvm.x86.fma.vfmadd.pd.512
    1, // llvm.x86.fma.vfmadd.ps
    1, // llvm.x86.fma.vfmadd.ps.256
    1, // llvm.x86.fma.vfmadd.ps.512
    1, // llvm.x86.fma.vfmadd.sd
    1, // llvm.x86.fma.vfmadd.ss
    1, // llvm.x86.fma.vfmaddsub.pd
    1, // llvm.x86.fma.vfmaddsub.pd.256
    1, // llvm.x86.fma.vfmaddsub.pd.512
    1, // llvm.x86.fma.vfmaddsub.ps
    1, // llvm.x86.fma.vfmaddsub.ps.256
    1, // llvm.x86.fma.vfmaddsub.ps.512
    1, // llvm.x86.fma.vfmsub.pd
    1, // llvm.x86.fma.vfmsub.pd.256
    1, // llvm.x86.fma.vfmsub.pd.512
    1, // llvm.x86.fma.vfmsub.ps
    1, // llvm.x86.fma.vfmsub.ps.256
    1, // llvm.x86.fma.vfmsub.ps.512
    1, // llvm.x86.fma.vfmsub.sd
    1, // llvm.x86.fma.vfmsub.ss
    1, // llvm.x86.fma.vfmsubadd.pd
    1, // llvm.x86.fma.vfmsubadd.pd.256
    1, // llvm.x86.fma.vfmsubadd.pd.512
    1, // llvm.x86.fma.vfmsubadd.ps
    1, // llvm.x86.fma.vfmsubadd.ps.256
    1, // llvm.x86.fma.vfmsubadd.ps.512
    1, // llvm.x86.fma.vfnmadd.pd
    1, // llvm.x86.fma.vfnmadd.pd.256
    1, // llvm.x86.fma.vfnmadd.pd.512
    1, // llvm.x86.fma.vfnmadd.ps
    1, // llvm.x86.fma.vfnmadd.ps.256
    1, // llvm.x86.fma.vfnmadd.ps.512
    1, // llvm.x86.fma.vfnmadd.sd
    1, // llvm.x86.fma.vfnmadd.ss
    1, // llvm.x86.fma.vfnmsub.pd
    1, // llvm.x86.fma.vfnmsub.pd.256
    1, // llvm.x86.fma.vfnmsub.pd.512
    1, // llvm.x86.fma.vfnmsub.ps
    1, // llvm.x86.fma.vfnmsub.ps.256
    1, // llvm.x86.fma.vfnmsub.ps.512
    1, // llvm.x86.fma.vfnmsub.sd
    1, // llvm.x86.fma.vfnmsub.ss
    2, // llvm.x86.int
    2, // llvm.x86.mmx.emms
    2, // llvm.x86.mmx.femms
    2, // llvm.x86.mmx.maskmovq
    2, // llvm.x86.mmx.movnt.dq
    1, // llvm.x86.mmx.packssdw
    1, // llvm.x86.mmx.packsswb
    1, // llvm.x86.mmx.packuswb
    1, // llvm.x86.mmx.padd.b
    1, // llvm.x86.mmx.padd.d
    1, // llvm.x86.mmx.padd.q
    1, // llvm.x86.mmx.padd.w
    1, // llvm.x86.mmx.padds.b
    1, // llvm.x86.mmx.padds.w
    1, // llvm.x86.mmx.paddus.b
    1, // llvm.x86.mmx.paddus.w
    1, // llvm.x86.mmx.palignr.b
    1, // llvm.x86.mmx.pand
    1, // llvm.x86.mmx.pandn
    1, // llvm.x86.mmx.pavg.b
    1, // llvm.x86.mmx.pavg.w
    1, // llvm.x86.mmx.pcmpeq.b
    1, // llvm.x86.mmx.pcmpeq.d
    1, // llvm.x86.mmx.pcmpeq.w
    1, // llvm.x86.mmx.pcmpgt.b
    1, // llvm.x86.mmx.pcmpgt.d
    1, // llvm.x86.mmx.pcmpgt.w
    1, // llvm.x86.mmx.pextr.w
    1, // llvm.x86.mmx.pinsr.w
    1, // llvm.x86.mmx.pmadd.wd
    1, // llvm.x86.mmx.pmaxs.w
    1, // llvm.x86.mmx.pmaxu.b
    1, // llvm.x86.mmx.pmins.w
    1, // llvm.x86.mmx.pminu.b
    1, // llvm.x86.mmx.pmovmskb
    1, // llvm.x86.mmx.pmulh.w
    1, // llvm.x86.mmx.pmulhu.w
    1, // llvm.x86.mmx.pmull.w
    1, // llvm.x86.mmx.pmulu.dq
    1, // llvm.x86.mmx.por
    1, // llvm.x86.mmx.psad.bw
    1, // llvm.x86.mmx.psll.d
    1, // llvm.x86.mmx.psll.q
    1, // llvm.x86.mmx.psll.w
    1, // llvm.x86.mmx.pslli.d
    1, // llvm.x86.mmx.pslli.q
    1, // llvm.x86.mmx.pslli.w
    1, // llvm.x86.mmx.psra.d
    1, // llvm.x86.mmx.psra.w
    1, // llvm.x86.mmx.psrai.d
    1, // llvm.x86.mmx.psrai.w
    1, // llvm.x86.mmx.psrl.d
    1, // llvm.x86.mmx.psrl.q
    1, // llvm.x86.mmx.psrl.w
    1, // llvm.x86.mmx.psrli.d
    1, // llvm.x86.mmx.psrli.q
    1, // llvm.x86.mmx.psrli.w
    1, // llvm.x86.mmx.psub.b
    1, // llvm.x86.mmx.psub.d
    1, // llvm.x86.mmx.psub.q
    1, // llvm.x86.mmx.psub.w
    1, // llvm.x86.mmx.psubs.b
    1, // llvm.x86.mmx.psubs.w
    1, // llvm.x86.mmx.psubus.b
    1, // llvm.x86.mmx.psubus.w
    1, // llvm.x86.mmx.punpckhbw
    1, // llvm.x86.mmx.punpckhdq
    1, // llvm.x86.mmx.punpckhwd
    1, // llvm.x86.mmx.punpcklbw
    1, // llvm.x86.mmx.punpckldq
    1, // llvm.x86.mmx.punpcklwd
    1, // llvm.x86.mmx.pxor
    1, // llvm.x86.pclmulqdq
    2, // llvm.x86.rdfsbase.32
    2, // llvm.x86.rdfsbase.64
    2, // llvm.x86.rdgsbase.32
    2, // llvm.x86.rdgsbase.64
    2, // llvm.x86.rdpmc
    2, // llvm.x86.rdrand.16
    2, // llvm.x86.rdrand.32
    2, // llvm.x86.rdrand.64
    2, // llvm.x86.rdseed.16
    2, // llvm.x86.rdseed.32
    2, // llvm.x86.rdseed.64
    2, // llvm.x86.rdtsc
    2, // llvm.x86.rdtscp
    1, // llvm.x86.sha1msg1
    1, // llvm.x86.sha1msg2
    1, // llvm.x86.sha1nexte
    1, // llvm.x86.sha1rnds4
    1, // llvm.x86.sha256msg1
    1, // llvm.x86.sha256msg2
    1, // llvm.x86.sha256rnds2
    1, // llvm.x86.sse2.add.sd
    2, // llvm.x86.sse2.clflush
    1, // llvm.x86.sse2.cmp.pd
    1, // llvm.x86.sse2.cmp.sd
    1, // llvm.x86.sse2.comieq.sd
    1, // llvm.x86.sse2.comige.sd
    1, // llvm.x86.sse2.comigt.sd
    1, // llvm.x86.sse2.comile.sd
    1, // llvm.x86.sse2.comilt.sd
    1, // llvm.x86.sse2.comineq.sd
    1, // llvm.x86.sse2.cvtdq2pd
    1, // llvm.x86.sse2.cvtdq2ps
    1, // llvm.x86.sse2.cvtpd2dq
    1, // llvm.x86.sse2.cvtpd2ps
    1, // llvm.x86.sse2.cvtps2dq
    1, // llvm.x86.sse2.cvtps2pd
    1, // llvm.x86.sse2.cvtsd2si
    1, // llvm.x86.sse2.cvtsd2si64
    1, // llvm.x86.sse2.cvtsd2ss
    1, // llvm.x86.sse2.cvtsi2sd
    1, // llvm.x86.sse2.cvtsi642sd
    1, // llvm.x86.sse2.cvtss2sd
    1, // llvm.x86.sse2.cvttpd2dq
    1, // llvm.x86.sse2.cvttps2dq
    1, // llvm.x86.sse2.cvttsd2si
    1, // llvm.x86.sse2.cvttsd2si64
    1, // llvm.x86.sse2.div.sd
    2, // llvm.x86.sse2.lfence
    2, // llvm.x86.sse2.maskmov.dqu
    1, // llvm.x86.sse2.max.pd
    1, // llvm.x86.sse2.max.sd
    2, // llvm.x86.sse2.mfence
    1, // llvm.x86.sse2.min.pd
    1, // llvm.x86.sse2.min.sd
    1, // llvm.x86.sse2.movmsk.pd
    1, // llvm.x86.sse2.mul.sd
    1, // llvm.x86.sse2.packssdw.128
    1, // llvm.x86.sse2.packsswb.128
    1, // llvm.x86.sse2.packuswb.128
    1, // llvm.x86.sse2.padds.b
    1, // llvm.x86.sse2.padds.w
    1, // llvm.x86.sse2.paddus.b
    1, // llvm.x86.sse2.paddus.w
    2, // llvm.x86.sse2.pause
    1, // llvm.x86.sse2.pavg.b
    1, // llvm.x86.sse2.pavg.w
    1, // llvm.x86.sse2.pmadd.wd
    1, // llvm.x86.sse2.pmaxs.w
    1, // llvm.x86.sse2.pmaxu.b
    1, // llvm.x86.sse2.pmins.w
    1, // llvm.x86.sse2.pminu.b
    1, // llvm.x86.sse2.pmovmskb.128
    1, // llvm.x86.sse2.pmulh.w
    1, // llvm.x86.sse2.pmulhu.w
    1, // llvm.x86.sse2.pmulu.dq
    1, // llvm.x86.sse2.psad.bw
    1, // llvm.x86.sse2.pshuf.d
    1, // llvm.x86.sse2.pshufh.w
    1, // llvm.x86.sse2.pshufl.w
    1, // llvm.x86.sse2.psll.d
    1, // llvm.x86.sse2.psll.dq
    1, // llvm.x86.sse2.psll.dq.bs
    1, // llvm.x86.sse2.psll.q
    1, // llvm.x86.sse2.psll.w
    1, // llvm.x86.sse2.pslli.d
    1, // llvm.x86.sse2.pslli.q
    1, // llvm.x86.sse2.pslli.w
    1, // llvm.x86.sse2.psra.d
    1, // llvm.x86.sse2.psra.w
    1, // llvm.x86.sse2.psrai.d
    1, // llvm.x86.sse2.psrai.w
    1, // llvm.x86.sse2.psrl.d
    1, // llvm.x86.sse2.psrl.dq
    1, // llvm.x86.sse2.psrl.dq.bs
    1, // llvm.x86.sse2.psrl.q
    1, // llvm.x86.sse2.psrl.w
    1, // llvm.x86.sse2.psrli.d
    1, // llvm.x86.sse2.psrli.q
    1, // llvm.x86.sse2.psrli.w
    1, // llvm.x86.sse2.psubs.b
    1, // llvm.x86.sse2.psubs.w
    1, // llvm.x86.sse2.psubus.b
    1, // llvm.x86.sse2.psubus.w
    1, // llvm.x86.sse2.sqrt.pd
    1, // llvm.x86.sse2.sqrt.sd
    2, // llvm.x86.sse2.storel.dq
    2, // llvm.x86.sse2.storeu.dq
    2, // llvm.x86.sse2.storeu.pd
    1, // llvm.x86.sse2.sub.sd
    1, // llvm.x86.sse2.ucomieq.sd
    1, // llvm.x86.sse2.ucomige.sd
    1, // llvm.x86.sse2.ucomigt.sd
    1, // llvm.x86.sse2.ucomile.sd
    1, // llvm.x86.sse2.ucomilt.sd
    1, // llvm.x86.sse2.ucomineq.sd
    1, // llvm.x86.sse3.addsub.pd
    1, // llvm.x86.sse3.addsub.ps
    1, // llvm.x86.sse3.hadd.pd
    1, // llvm.x86.sse3.hadd.ps
    1, // llvm.x86.sse3.hsub.pd
    1, // llvm.x86.sse3.hsub.ps
    3, // llvm.x86.sse3.ldu.dq
    2, // llvm.x86.sse3.monitor
    2, // llvm.x86.sse3.mwait
    1, // llvm.x86.sse41.blendpd
    1, // llvm.x86.sse41.blendps
    1, // llvm.x86.sse41.blendvpd
    1, // llvm.x86.sse41.blendvps
    1, // llvm.x86.sse41.dppd
    1, // llvm.x86.sse41.dpps
    1, // llvm.x86.sse41.extractps
    1, // llvm.x86.sse41.insertps
    3, // llvm.x86.sse41.movntdqa
    1, // llvm.x86.sse41.mpsadbw
    1, // llvm.x86.sse41.packusdw
    1, // llvm.x86.sse41.pblendvb
    1, // llvm.x86.sse41.pblendw
    1, // llvm.x86.sse41.pextrb
    1, // llvm.x86.sse41.pextrd
    1, // llvm.x86.sse41.pextrq
    1, // llvm.x86.sse41.phminposuw
    1, // llvm.x86.sse41.pmaxsb
    1, // llvm.x86.sse41.pmaxsd
    1, // llvm.x86.sse41.pmaxud
    1, // llvm.x86.sse41.pmaxuw
    1, // llvm.x86.sse41.pminsb
    1, // llvm.x86.sse41.pminsd
    1, // llvm.x86.sse41.pminud
    1, // llvm.x86.sse41.pminuw
    1, // llvm.x86.sse41.pmovsxbd
    1, // llvm.x86.sse41.pmovsxbq
    1, // llvm.x86.sse41.pmovsxbw
    1, // llvm.x86.sse41.pmovsxdq
    1, // llvm.x86.sse41.pmovsxwd
    1, // llvm.x86.sse41.pmovsxwq
    1, // llvm.x86.sse41.pmovzxbd
    1, // llvm.x86.sse41.pmovzxbq
    1, // llvm.x86.sse41.pmovzxbw
    1, // llvm.x86.sse41.pmovzxdq
    1, // llvm.x86.sse41.pmovzxwd
    1, // llvm.x86.sse41.pmovzxwq
    1, // llvm.x86.sse41.pmuldq
    1, // llvm.x86.sse41.ptestc
    1, // llvm.x86.sse41.ptestnzc
    1, // llvm.x86.sse41.ptestz
    1, // llvm.x86.sse41.round.pd
    1, // llvm.x86.sse41.round.ps
    1, // llvm.x86.sse41.round.sd
    1, // llvm.x86.sse41.round.ss
    1, // llvm.x86.sse42.crc32.32.16
    1, // llvm.x86.sse42.crc32.32.32
    1, // llvm.x86.sse42.crc32.32.8
    1, // llvm.x86.sse42.crc32.64.64
    1, // llvm.x86.sse42.pcmpestri128
    1, // llvm.x86.sse42.pcmpestria128
    1, // llvm.x86.sse42.pcmpestric128
    1, // llvm.x86.sse42.pcmpestrio128
    1, // llvm.x86.sse42.pcmpestris128
    1, // llvm.x86.sse42.pcmpestriz128
    1, // llvm.x86.sse42.pcmpestrm128
    1, // llvm.x86.sse42.pcmpistri128
    1, // llvm.x86.sse42.pcmpistria128
    1, // llvm.x86.sse42.pcmpistric128
    1, // llvm.x86.sse42.pcmpistrio128
    1, // llvm.x86.sse42.pcmpistris128
    1, // llvm.x86.sse42.pcmpistriz128
    1, // llvm.x86.sse42.pcmpistrm128
    1, // llvm.x86.sse4a.extrq
    1, // llvm.x86.sse4a.extrqi
    1, // llvm.x86.sse4a.insertq
    1, // llvm.x86.sse4a.insertqi
    2, // llvm.x86.sse4a.movnt.sd
    2, // llvm.x86.sse4a.movnt.ss
    1, // llvm.x86.sse.add.ss
    1, // llvm.x86.sse.cmp.ps
    1, // llvm.x86.sse.cmp.ss
    1, // llvm.x86.sse.comieq.ss
    1, // llvm.x86.sse.comige.ss
    1, // llvm.x86.sse.comigt.ss
    1, // llvm.x86.sse.comile.ss
    1, // llvm.x86.sse.comilt.ss
    1, // llvm.x86.sse.comineq.ss
    1, // llvm.x86.sse.cvtpd2pi
    1, // llvm.x86.sse.cvtpi2pd
    1, // llvm.x86.sse.cvtpi2ps
    1, // llvm.x86.sse.cvtps2pi
    1, // llvm.x86.sse.cvtsi2ss
    1, // llvm.x86.sse.cvtsi642ss
    1, // llvm.x86.sse.cvtss2si
    1, // llvm.x86.sse.cvtss2si64
    1, // llvm.x86.sse.cvttpd2pi
    1, // llvm.x86.sse.cvttps2pi
    1, // llvm.x86.sse.cvttss2si
    1, // llvm.x86.sse.cvttss2si64
    1, // llvm.x86.sse.div.ss
    2, // llvm.x86.sse.ldmxcsr
    1, // llvm.x86.sse.max.ps
    1, // llvm.x86.sse.max.ss
    1, // llvm.x86.sse.min.ps
    1, // llvm.x86.sse.min.ss
    1, // llvm.x86.sse.movmsk.ps
    1, // llvm.x86.sse.mul.ss
    1, // llvm.x86.sse.pshuf.w
    1, // llvm.x86.sse.rcp.ps
    1, // llvm.x86.sse.rcp.ss
    1, // llvm.x86.sse.rsqrt.ps
    1, // llvm.x86.sse.rsqrt.ss
    2, // llvm.x86.sse.sfence
    1, // llvm.x86.sse.sqrt.ps
    1, // llvm.x86.sse.sqrt.ss
    2, // llvm.x86.sse.stmxcsr
    2, // llvm.x86.sse.storeu.ps
    1, // llvm.x86.sse.sub.ss
    1, // llvm.x86.sse.ucomieq.ss
    1, // llvm.x86.sse.ucomige.ss
    1, // llvm.x86.sse.ucomigt.ss
    1, // llvm.x86.sse.ucomile.ss
    1, // llvm.x86.sse.ucomilt.ss
    1, // llvm.x86.sse.ucomineq.ss
    1, // llvm.x86.ssse3.pabs.b
    1, // llvm.x86.ssse3.pabs.b.128
    1, // llvm.x86.ssse3.pabs.d
    1, // llvm.x86.ssse3.pabs.d.128
    1, // llvm.x86.ssse3.pabs.w
    1, // llvm.x86.ssse3.pabs.w.128
    1, // llvm.x86.ssse3.phadd.d
    1, // llvm.x86.ssse3.phadd.d.128
    1, // llvm.x86.ssse3.phadd.sw
    1, // llvm.x86.ssse3.phadd.sw.128
    1, // llvm.x86.ssse3.phadd.w
    1, // llvm.x86.ssse3.phadd.w.128
    1, // llvm.x86.ssse3.phsub.d
    1, // llvm.x86.ssse3.phsub.d.128
    1, // llvm.x86.ssse3.phsub.sw
    1, // llvm.x86.ssse3.phsub.sw.128
    1, // llvm.x86.ssse3.phsub.w
    1, // llvm.x86.ssse3.phsub.w.128
    1, // llvm.x86.ssse3.pmadd.ub.sw
    1, // llvm.x86.ssse3.pmadd.ub.sw.128
    1, // llvm.x86.ssse3.pmul.hr.sw
    1, // llvm.x86.ssse3.pmul.hr.sw.128
    1, // llvm.x86.ssse3.pshuf.b
    1, // llvm.x86.ssse3.pshuf.b.128
    1, // llvm.x86.ssse3.psign.b
    1, // llvm.x86.ssse3.psign.b.128
    1, // llvm.x86.ssse3.psign.d
    1, // llvm.x86.ssse3.psign.d.128
    1, // llvm.x86.ssse3.psign.w
    1, // llvm.x86.ssse3.psign.w.128
    1, // llvm.x86.tbm.bextri.u32
    1, // llvm.x86.tbm.bextri.u64
    1, // llvm.x86.vcvtph2ps.128
    1, // llvm.x86.vcvtph2ps.256
    1, // llvm.x86.vcvtps2ph.128
    1, // llvm.x86.vcvtps2ph.256
    2, // llvm.x86.wrfsbase.32
    2, // llvm.x86.wrfsbase.64
    2, // llvm.x86.wrgsbase.32
    2, // llvm.x86.wrgsbase.64
    9, // llvm.x86.xabort
    2, // llvm.x86.xbegin
    2, // llvm.x86.xend
    1, // llvm.x86.xop.vfrcz.pd
    1, // llvm.x86.xop.vfrcz.pd.256
    1, // llvm.x86.xop.vfrcz.ps
    1, // llvm.x86.xop.vfrcz.ps.256
    1, // llvm.x86.xop.vfrcz.sd
    1, // llvm.x86.xop.vfrcz.ss
    1, // llvm.x86.xop.vpcmov
    1, // llvm.x86.xop.vpcmov.256
    1, // llvm.x86.xop.vpcomb
    1, // llvm.x86.xop.vpcomd
    1, // llvm.x86.xop.vpcomq
    1, // llvm.x86.xop.vpcomub
    1, // llvm.x86.xop.vpcomud
    1, // llvm.x86.xop.vpcomuq
    1, // llvm.x86.xop.vpcomuw
    1, // llvm.x86.xop.vpcomw
    1, // llvm.x86.xop.vpermil2pd
    1, // llvm.x86.xop.vpermil2pd.256
    1, // llvm.x86.xop.vpermil2ps
    1, // llvm.x86.xop.vpermil2ps.256
    1, // llvm.x86.xop.vphaddbd
    1, // llvm.x86.xop.vphaddbq
    1, // llvm.x86.xop.vphaddbw
    1, // llvm.x86.xop.vphadddq
    1, // llvm.x86.xop.vphaddubd
    1, // llvm.x86.xop.vphaddubq
    1, // llvm.x86.xop.vphaddubw
    1, // llvm.x86.xop.vphaddudq
    1, // llvm.x86.xop.vphadduwd
    1, // llvm.x86.xop.vphadduwq
    1, // llvm.x86.xop.vphaddwd
    1, // llvm.x86.xop.vphaddwq
    1, // llvm.x86.xop.vphsubbw
    1, // llvm.x86.xop.vphsubdq
    1, // llvm.x86.xop.vphsubwd
    1, // llvm.x86.xop.vpmacsdd
    1, // llvm.x86.xop.vpmacsdqh
    1, // llvm.x86.xop.vpmacsdql
    1, // llvm.x86.xop.vpmacssdd
    1, // llvm.x86.xop.vpmacssdqh
    1, // llvm.x86.xop.vpmacssdql
    1, // llvm.x86.xop.vpmacsswd
    1, // llvm.x86.xop.vpmacssww
    1, // llvm.x86.xop.vpmacswd
    1, // llvm.x86.xop.vpmacsww
    1, // llvm.x86.xop.vpmadcsswd
    1, // llvm.x86.xop.vpmadcswd
    1, // llvm.x86.xop.vpperm
    1, // llvm.x86.xop.vprotb
    1, // llvm.x86.xop.vprotbi
    1, // llvm.x86.xop.vprotd
    1, // llvm.x86.xop.vprotdi
    1, // llvm.x86.xop.vprotq
    1, // llvm.x86.xop.vprotqi
    1, // llvm.x86.xop.vprotw
    1, // llvm.x86.xop.vprotwi
    1, // llvm.x86.xop.vpshab
    1, // llvm.x86.xop.vpshad
    1, // llvm.x86.xop.vpshaq
    1, // llvm.x86.xop.vpshaw
    1, // llvm.x86.xop.vpshlb
    1, // llvm.x86.xop.vpshld
    1, // llvm.x86.xop.vpshlq
    1, // llvm.x86.xop.vpshlw
    2, // llvm.x86.xtest
    1, // llvm.xcore.bitrev
    2, // llvm.xcore.checkevent
    12, // llvm.xcore.chkct
    2, // llvm.xcore.clre
    12, // llvm.xcore.clrpt
    2, // llvm.xcore.clrsr
    1, // llvm.xcore.crc32
    1, // llvm.xcore.crc8
    12, // llvm.xcore.edu
    12, // llvm.xcore.eeu
    12, // llvm.xcore.endin
    12, // llvm.xcore.freer
    2, // llvm.xcore.geted
    2, // llvm.xcore.getet
    1, // llvm.xcore.getid
    2, // llvm.xcore.getps
    2, // llvm.xcore.getr
    12, // llvm.xcore.getst
    12, // llvm.xcore.getts
    12, // llvm.xcore.in
    12, // llvm.xcore.inct
    12, // llvm.xcore.initcp
    12, // llvm.xcore.initdp
    12, // llvm.xcore.initlr
    12, // llvm.xcore.initpc
    12, // llvm.xcore.initsp
    12, // llvm.xcore.inshr
    12, // llvm.xcore.int
    12, // llvm.xcore.mjoin
    12, // llvm.xcore.msync
    12, // llvm.xcore.out
    12, // llvm.xcore.outct
    12, // llvm.xcore.outshr
    12, // llvm.xcore.outt
    12, // llvm.xcore.peek
    12, // llvm.xcore.setc
    17, // llvm.xcore.setclk
    12, // llvm.xcore.setd
    12, // llvm.xcore.setev
    2, // llvm.xcore.setps
    12, // llvm.xcore.setpsc
    12, // llvm.xcore.setpt
    17, // llvm.xcore.setrdy
    2, // llvm.xcore.setsr
    12, // llvm.xcore.settw
    12, // llvm.xcore.setv
    1, // llvm.xcore.sext
    2, // llvm.xcore.ssync
    12, // llvm.xcore.syncr
    12, // llvm.xcore.testct
    12, // llvm.xcore.testwct
    3, // llvm.xcore.waitevent
    1, // llvm.xcore.zext
  };

  AttributeSet AS[4];
  unsigned NumAttrs = 0;
  if (id != 0) {
    switch(IntrinsicsToAttributesMap[id - 1]) {
    default: llvm_unreachable("Invalid attribute number");
    case 1: {
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::ReadNone};
      AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 1;
      break;
      }
    case 16: {
      const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 1, AttrParam1);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::ReadNone};
      AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 2;
      break;
      }
    case 3: {
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::ReadOnly};
      AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 1;
      break;
      }
    case 15: {
      const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 1, AttrParam1);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::ReadOnly};
      AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 2;
      break;
      }
    case 2: {
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
      AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 1;
      break;
      }
    case 12: {
      const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 1, AttrParam1);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
      AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 2;
      break;
      }
    case 17: {
      const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 1, AttrParam1);
      const Attribute::AttrKind AttrParam2[]= {Attribute::NoCapture};
      AS[1] = AttributeSet::get(C, 2, AttrParam2);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
      AS[2] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 3;
      break;
      }
    case 14: {
      const Attribute::AttrKind AttrParam1[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 1, AttrParam1);
      const Attribute::AttrKind AttrParam2[]= {Attribute::NoCapture,Attribute::ReadOnly};
      AS[1] = AttributeSet::get(C, 2, AttrParam2);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
      AS[2] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 3;
      break;
      }
    case 13: {
      const Attribute::AttrKind AttrParam2[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 2, AttrParam2);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
      AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 2;
      break;
      }
    case 11: {
      const Attribute::AttrKind AttrParam2[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 2, AttrParam2);
      const Attribute::AttrKind AttrParam3[]= {Attribute::NoCapture};
      AS[1] = AttributeSet::get(C, 3, AttrParam3);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
      AS[2] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 3;
      break;
      }
    case 4: {
      const Attribute::AttrKind AttrParam3[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 3, AttrParam3);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
      AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 2;
      break;
      }
    case 5: {
      const Attribute::AttrKind AttrParam4[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 4, AttrParam4);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
      AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 2;
      break;
      }
    case 6: {
      const Attribute::AttrKind AttrParam5[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 5, AttrParam5);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
      AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 2;
      break;
      }
    case 7: {
      const Attribute::AttrKind AttrParam6[]= {Attribute::NoCapture};
      AS[0] = AttributeSet::get(C, 6, AttrParam6);
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind};
      AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 2;
      break;
      }
    case 9: {
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::NoReturn};
      AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 1;
      break;
      }
    case 8: {
      const Attribute::AttrKind Atts[] = {Attribute::NoUnwind,Attribute::NoDuplicate};
      AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, Atts);
      NumAttrs = 1;
      break;
      }
    case 10: {
      return AttributeSet();
      }
    }
  }
  return AttributeSet::get(C, ArrayRef<AttributeSet>(AS, NumAttrs));
}
#endif // GET_INTRINSIC_ATTRIBUTES

// Determine intrinsic alias analysis mod/ref behavior.
#ifdef GET_INTRINSIC_MODREF_BEHAVIOR
assert(iid <= Intrinsic::xcore_zext && "Unknown intrinsic.");

static const uint8_t IntrinsicModRefBehavior[] = {
  /* invalid */ UnknownModRefBehavior,
  /* AMDGPU_div_fixup */ DoesNotAccessMemory,
  /* AMDGPU_div_fmas */ DoesNotAccessMemory,
  /* AMDGPU_div_scale */ DoesNotAccessMemory,
  /* AMDGPU_rcp */ DoesNotAccessMemory,
  /* AMDGPU_rsq */ DoesNotAccessMemory,
  /* AMDGPU_rsq_clamped */ DoesNotAccessMemory,
  /* AMDGPU_trig_preop */ DoesNotAccessMemory,
  /* aarch64_clrex */ UnknownModRefBehavior,
  /* aarch64_crc32b */ DoesNotAccessMemory,
  /* aarch64_crc32cb */ DoesNotAccessMemory,
  /* aarch64_crc32ch */ DoesNotAccessMemory,
  /* aarch64_crc32cw */ DoesNotAccessMemory,
  /* aarch64_crc32cx */ DoesNotAccessMemory,
  /* aarch64_crc32h */ DoesNotAccessMemory,
  /* aarch64_crc32w */ DoesNotAccessMemory,
  /* aarch64_crc32x */ DoesNotAccessMemory,
  /* aarch64_crypto_aesd */ DoesNotAccessMemory,
  /* aarch64_crypto_aese */ DoesNotAccessMemory,
  /* aarch64_crypto_aesimc */ DoesNotAccessMemory,
  /* aarch64_crypto_aesmc */ DoesNotAccessMemory,
  /* aarch64_crypto_sha1c */ DoesNotAccessMemory,
  /* aarch64_crypto_sha1h */ DoesNotAccessMemory,
  /* aarch64_crypto_sha1m */ DoesNotAccessMemory,
  /* aarch64_crypto_sha1p */ DoesNotAccessMemory,
  /* aarch64_crypto_sha1su0 */ DoesNotAccessMemory,
  /* aarch64_crypto_sha1su1 */ DoesNotAccessMemory,
  /* aarch64_crypto_sha256h */ DoesNotAccessMemory,
  /* aarch64_crypto_sha256h2 */ DoesNotAccessMemory,
  /* aarch64_crypto_sha256su0 */ DoesNotAccessMemory,
  /* aarch64_crypto_sha256su1 */ DoesNotAccessMemory,
  /* aarch64_dmb */ UnknownModRefBehavior,
  /* aarch64_dsb */ UnknownModRefBehavior,
  /* aarch64_hint */ UnknownModRefBehavior,
  /* aarch64_isb */ UnknownModRefBehavior,
  /* aarch64_ldaxp */ UnknownModRefBehavior,
  /* aarch64_ldaxr */ UnknownModRefBehavior,
  /* aarch64_ldxp */ UnknownModRefBehavior,
  /* aarch64_ldxr */ UnknownModRefBehavior,
  /* aarch64_neon_abs */ DoesNotAccessMemory,
  /* aarch64_neon_addhn */ DoesNotAccessMemory,
  /* aarch64_neon_addp */ DoesNotAccessMemory,
  /* aarch64_neon_cls */ DoesNotAccessMemory,
  /* aarch64_neon_fabd */ DoesNotAccessMemory,
  /* aarch64_neon_facge */ DoesNotAccessMemory,
  /* aarch64_neon_facgt */ DoesNotAccessMemory,
  /* aarch64_neon_faddv */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtas */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtau */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtms */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtmu */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtns */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtnu */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtps */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtpu */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtxn */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtzs */ DoesNotAccessMemory,
  /* aarch64_neon_fcvtzu */ DoesNotAccessMemory,
  /* aarch64_neon_fmax */ DoesNotAccessMemory,
  /* aarch64_neon_fmaxnm */ DoesNotAccessMemory,
  /* aarch64_neon_fmaxnmp */ DoesNotAccessMemory,
  /* aarch64_neon_fmaxnmv */ DoesNotAccessMemory,
  /* aarch64_neon_fmaxp */ DoesNotAccessMemory,
  /* aarch64_neon_fmaxv */ DoesNotAccessMemory,
  /* aarch64_neon_fmin */ DoesNotAccessMemory,
  /* aarch64_neon_fminnm */ DoesNotAccessMemory,
  /* aarch64_neon_fminnmp */ DoesNotAccessMemory,
  /* aarch64_neon_fminnmv */ DoesNotAccessMemory,
  /* aarch64_neon_fminp */ DoesNotAccessMemory,
  /* aarch64_neon_fminv */ DoesNotAccessMemory,
  /* aarch64_neon_fmulx */ DoesNotAccessMemory,
  /* aarch64_neon_frecpe */ DoesNotAccessMemory,
  /* aarch64_neon_frecps */ DoesNotAccessMemory,
  /* aarch64_neon_frecpx */ DoesNotAccessMemory,
  /* aarch64_neon_frintn */ DoesNotAccessMemory,
  /* aarch64_neon_frsqrte */ DoesNotAccessMemory,
  /* aarch64_neon_frsqrts */ DoesNotAccessMemory,
  /* aarch64_neon_ld1x2 */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld1x3 */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld1x4 */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld2 */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld2lane */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld2r */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld3 */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld3lane */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld3r */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld4 */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld4lane */ OnlyReadsArgumentPointees,
  /* aarch64_neon_ld4r */ OnlyReadsArgumentPointees,
  /* aarch64_neon_pmul */ DoesNotAccessMemory,
  /* aarch64_neon_pmull */ DoesNotAccessMemory,
  /* aarch64_neon_pmull64 */ DoesNotAccessMemory,
  /* aarch64_neon_raddhn */ DoesNotAccessMemory,
  /* aarch64_neon_rbit */ DoesNotAccessMemory,
  /* aarch64_neon_rshrn */ DoesNotAccessMemory,
  /* aarch64_neon_rsubhn */ DoesNotAccessMemory,
  /* aarch64_neon_sabd */ DoesNotAccessMemory,
  /* aarch64_neon_saddlp */ DoesNotAccessMemory,
  /* aarch64_neon_saddlv */ DoesNotAccessMemory,
  /* aarch64_neon_saddv */ DoesNotAccessMemory,
  /* aarch64_neon_scalar_sqxtn */ DoesNotAccessMemory,
  /* aarch64_neon_scalar_sqxtun */ DoesNotAccessMemory,
  /* aarch64_neon_scalar_uqxtn */ DoesNotAccessMemory,
  /* aarch64_neon_shadd */ DoesNotAccessMemory,
  /* aarch64_neon_shll */ DoesNotAccessMemory,
  /* aarch64_neon_shsub */ DoesNotAccessMemory,
  /* aarch64_neon_smax */ DoesNotAccessMemory,
  /* aarch64_neon_smaxp */ DoesNotAccessMemory,
  /* aarch64_neon_smaxv */ DoesNotAccessMemory,
  /* aarch64_neon_smin */ DoesNotAccessMemory,
  /* aarch64_neon_sminp */ DoesNotAccessMemory,
  /* aarch64_neon_sminv */ DoesNotAccessMemory,
  /* aarch64_neon_smull */ DoesNotAccessMemory,
  /* aarch64_neon_sqabs */ DoesNotAccessMemory,
  /* aarch64_neon_sqadd */ DoesNotAccessMemory,
  /* aarch64_neon_sqdmulh */ DoesNotAccessMemory,
  /* aarch64_neon_sqdmull */ DoesNotAccessMemory,
  /* aarch64_neon_sqdmulls_scalar */ DoesNotAccessMemory,
  /* aarch64_neon_sqneg */ DoesNotAccessMemory,
  /* aarch64_neon_sqrdmulh */ DoesNotAccessMemory,
  /* aarch64_neon_sqrshl */ DoesNotAccessMemory,
  /* aarch64_neon_sqrshrn */ DoesNotAccessMemory,
  /* aarch64_neon_sqrshrun */ DoesNotAccessMemory,
  /* aarch64_neon_sqshl */ DoesNotAccessMemory,
  /* aarch64_neon_sqshlu */ DoesNotAccessMemory,
  /* aarch64_neon_sqshrn */ DoesNotAccessMemory,
  /* aarch64_neon_sqshrun */ DoesNotAccessMemory,
  /* aarch64_neon_sqsub */ DoesNotAccessMemory,
  /* aarch64_neon_sqxtn */ DoesNotAccessMemory,
  /* aarch64_neon_sqxtun */ DoesNotAccessMemory,
  /* aarch64_neon_srhadd */ DoesNotAccessMemory,
  /* aarch64_neon_srshl */ DoesNotAccessMemory,
  /* aarch64_neon_sshl */ DoesNotAccessMemory,
  /* aarch64_neon_sshll */ DoesNotAccessMemory,
  /* aarch64_neon_st1x2 */ OnlyAccessesArgumentPointees,
  /* aarch64_neon_st1x3 */ OnlyAccessesArgumentPointees,
  /* aarch64_neon_st1x4 */ OnlyAccessesArgumentPointees,
  /* aarch64_neon_st2 */ OnlyAccessesArgumentPointees,
  /* aarch64_neon_st2lane */ OnlyAccessesArgumentPointees,
  /* aarch64_neon_st3 */ OnlyAccessesArgumentPointees,
  /* aarch64_neon_st3lane */ OnlyAccessesArgumentPointees,
  /* aarch64_neon_st4 */ OnlyAccessesArgumentPointees,
  /* aarch64_neon_st4lane */ OnlyAccessesArgumentPointees,
  /* aarch64_neon_subhn */ DoesNotAccessMemory,
  /* aarch64_neon_suqadd */ DoesNotAccessMemory,
  /* aarch64_neon_tbl1 */ DoesNotAccessMemory,
  /* aarch64_neon_tbl2 */ DoesNotAccessMemory,
  /* aarch64_neon_tbl3 */ DoesNotAccessMemory,
  /* aarch64_neon_tbl4 */ DoesNotAccessMemory,
  /* aarch64_neon_tbx1 */ DoesNotAccessMemory,
  /* aarch64_neon_tbx2 */ DoesNotAccessMemory,
  /* aarch64_neon_tbx3 */ DoesNotAccessMemory,
  /* aarch64_neon_tbx4 */ DoesNotAccessMemory,
  /* aarch64_neon_uabd */ DoesNotAccessMemory,
  /* aarch64_neon_uaddlp */ DoesNotAccessMemory,
  /* aarch64_neon_uaddlv */ DoesNotAccessMemory,
  /* aarch64_neon_uaddv */ DoesNotAccessMemory,
  /* aarch64_neon_uhadd */ DoesNotAccessMemory,
  /* aarch64_neon_uhsub */ DoesNotAccessMemory,
  /* aarch64_neon_umax */ DoesNotAccessMemory,
  /* aarch64_neon_umaxp */ DoesNotAccessMemory,
  /* aarch64_neon_umaxv */ DoesNotAccessMemory,
  /* aarch64_neon_umin */ DoesNotAccessMemory,
  /* aarch64_neon_uminp */ DoesNotAccessMemory,
  /* aarch64_neon_uminv */ DoesNotAccessMemory,
  /* aarch64_neon_umull */ DoesNotAccessMemory,
  /* aarch64_neon_uqadd */ DoesNotAccessMemory,
  /* aarch64_neon_uqrshl */ DoesNotAccessMemory,
  /* aarch64_neon_uqrshrn */ DoesNotAccessMemory,
  /* aarch64_neon_uqshl */ DoesNotAccessMemory,
  /* aarch64_neon_uqshrn */ DoesNotAccessMemory,
  /* aarch64_neon_uqsub */ DoesNotAccessMemory,
  /* aarch64_neon_uqxtn */ DoesNotAccessMemory,
  /* aarch64_neon_urecpe */ DoesNotAccessMemory,
  /* aarch64_neon_urhadd */ DoesNotAccessMemory,
  /* aarch64_neon_urshl */ DoesNotAccessMemory,
  /* aarch64_neon_ursqrte */ DoesNotAccessMemory,
  /* aarch64_neon_ushl */ DoesNotAccessMemory,
  /* aarch64_neon_ushll */ DoesNotAccessMemory,
  /* aarch64_neon_usqadd */ DoesNotAccessMemory,
  /* aarch64_neon_vcopy_lane */ DoesNotAccessMemory,
  /* aarch64_neon_vcvtfp2fxs */ DoesNotAccessMemory,
  /* aarch64_neon_vcvtfp2fxu */ DoesNotAccessMemory,
  /* aarch64_neon_vcvtfp2hf */ DoesNotAccessMemory,
  /* aarch64_neon_vcvtfxs2fp */ DoesNotAccessMemory,
  /* aarch64_neon_vcvtfxu2fp */ DoesNotAccessMemory,
  /* aarch64_neon_vcvthf2fp */ DoesNotAccessMemory,
  /* aarch64_neon_vsli */ DoesNotAccessMemory,
  /* aarch64_neon_vsri */ DoesNotAccessMemory,
  /* aarch64_rbit */ DoesNotAccessMemory,
  /* aarch64_sdiv */ DoesNotAccessMemory,
  /* aarch64_sisd_fabd */ DoesNotAccessMemory,
  /* aarch64_sisd_fcvtxn */ DoesNotAccessMemory,
  /* aarch64_stlxp */ UnknownModRefBehavior,
  /* aarch64_stlxr */ UnknownModRefBehavior,
  /* aarch64_stxp */ UnknownModRefBehavior,
  /* aarch64_stxr */ UnknownModRefBehavior,
  /* aarch64_udiv */ DoesNotAccessMemory,
  /* adjust_trampoline */ OnlyReadsArgumentPointees,
  /* annotation */ UnknownModRefBehavior,
  /* arm_cdp */ UnknownModRefBehavior,
  /* arm_cdp2 */ UnknownModRefBehavior,
  /* arm_clrex */ UnknownModRefBehavior,
  /* arm_crc32b */ DoesNotAccessMemory,
  /* arm_crc32cb */ DoesNotAccessMemory,
  /* arm_crc32ch */ DoesNotAccessMemory,
  /* arm_crc32cw */ DoesNotAccessMemory,
  /* arm_crc32h */ DoesNotAccessMemory,
  /* arm_crc32w */ DoesNotAccessMemory,
  /* arm_dmb */ UnknownModRefBehavior,
  /* arm_dsb */ UnknownModRefBehavior,
  /* arm_get_fpscr */ DoesNotAccessMemory,
  /* arm_hint */ UnknownModRefBehavior,
  /* arm_isb */ UnknownModRefBehavior,
  /* arm_ldaex */ UnknownModRefBehavior,
  /* arm_ldaexd */ UnknownModRefBehavior,
  /* arm_ldrex */ UnknownModRefBehavior,
  /* arm_ldrexd */ UnknownModRefBehavior,
  /* arm_mcr */ UnknownModRefBehavior,
  /* arm_mcr2 */ UnknownModRefBehavior,
  /* arm_mcrr */ UnknownModRefBehavior,
  /* arm_mcrr2 */ UnknownModRefBehavior,
  /* arm_mrc */ UnknownModRefBehavior,
  /* arm_mrc2 */ UnknownModRefBehavior,
  /* arm_neon_aesd */ DoesNotAccessMemory,
  /* arm_neon_aese */ DoesNotAccessMemory,
  /* arm_neon_aesimc */ DoesNotAccessMemory,
  /* arm_neon_aesmc */ DoesNotAccessMemory,
  /* arm_neon_sha1c */ DoesNotAccessMemory,
  /* arm_neon_sha1h */ DoesNotAccessMemory,
  /* arm_neon_sha1m */ DoesNotAccessMemory,
  /* arm_neon_sha1p */ DoesNotAccessMemory,
  /* arm_neon_sha1su0 */ DoesNotAccessMemory,
  /* arm_neon_sha1su1 */ DoesNotAccessMemory,
  /* arm_neon_sha256h */ DoesNotAccessMemory,
  /* arm_neon_sha256h2 */ DoesNotAccessMemory,
  /* arm_neon_sha256su0 */ DoesNotAccessMemory,
  /* arm_neon_sha256su1 */ DoesNotAccessMemory,
  /* arm_neon_vabds */ DoesNotAccessMemory,
  /* arm_neon_vabdu */ DoesNotAccessMemory,
  /* arm_neon_vabs */ DoesNotAccessMemory,
  /* arm_neon_vacge */ DoesNotAccessMemory,
  /* arm_neon_vacgt */ DoesNotAccessMemory,
  /* arm_neon_vbsl */ DoesNotAccessMemory,
  /* arm_neon_vcls */ DoesNotAccessMemory,
  /* arm_neon_vclz */ DoesNotAccessMemory,
  /* arm_neon_vcnt */ DoesNotAccessMemory,
  /* arm_neon_vcvtas */ DoesNotAccessMemory,
  /* arm_neon_vcvtau */ DoesNotAccessMemory,
  /* arm_neon_vcvtfp2fxs */ DoesNotAccessMemory,
  /* arm_neon_vcvtfp2fxu */ DoesNotAccessMemory,
  /* arm_neon_vcvtfp2hf */ DoesNotAccessMemory,
  /* arm_neon_vcvtfxs2fp */ DoesNotAccessMemory,
  /* arm_neon_vcvtfxu2fp */ DoesNotAccessMemory,
  /* arm_neon_vcvthf2fp */ DoesNotAccessMemory,
  /* arm_neon_vcvtms */ DoesNotAccessMemory,
  /* arm_neon_vcvtmu */ DoesNotAccessMemory,
  /* arm_neon_vcvtns */ DoesNotAccessMemory,
  /* arm_neon_vcvtnu */ DoesNotAccessMemory,
  /* arm_neon_vcvtps */ DoesNotAccessMemory,
  /* arm_neon_vcvtpu */ DoesNotAccessMemory,
  /* arm_neon_vhadds */ DoesNotAccessMemory,
  /* arm_neon_vhaddu */ DoesNotAccessMemory,
  /* arm_neon_vhsubs */ DoesNotAccessMemory,
  /* arm_neon_vhsubu */ DoesNotAccessMemory,
  /* arm_neon_vld1 */ OnlyReadsArgumentPointees,
  /* arm_neon_vld2 */ OnlyReadsArgumentPointees,
  /* arm_neon_vld2lane */ OnlyReadsArgumentPointees,
  /* arm_neon_vld3 */ OnlyReadsArgumentPointees,
  /* arm_neon_vld3lane */ OnlyReadsArgumentPointees,
  /* arm_neon_vld4 */ OnlyReadsArgumentPointees,
  /* arm_neon_vld4lane */ OnlyReadsArgumentPointees,
  /* arm_neon_vmaxnm */ DoesNotAccessMemory,
  /* arm_neon_vmaxs */ DoesNotAccessMemory,
  /* arm_neon_vmaxu */ DoesNotAccessMemory,
  /* arm_neon_vminnm */ DoesNotAccessMemory,
  /* arm_neon_vmins */ DoesNotAccessMemory,
  /* arm_neon_vminu */ DoesNotAccessMemory,
  /* arm_neon_vmullp */ DoesNotAccessMemory,
  /* arm_neon_vmulls */ DoesNotAccessMemory,
  /* arm_neon_vmullu */ DoesNotAccessMemory,
  /* arm_neon_vmulp */ DoesNotAccessMemory,
  /* arm_neon_vpadals */ DoesNotAccessMemory,
  /* arm_neon_vpadalu */ DoesNotAccessMemory,
  /* arm_neon_vpadd */ DoesNotAccessMemory,
  /* arm_neon_vpaddls */ DoesNotAccessMemory,
  /* arm_neon_vpaddlu */ DoesNotAccessMemory,
  /* arm_neon_vpmaxs */ DoesNotAccessMemory,
  /* arm_neon_vpmaxu */ DoesNotAccessMemory,
  /* arm_neon_vpmins */ DoesNotAccessMemory,
  /* arm_neon_vpminu */ DoesNotAccessMemory,
  /* arm_neon_vqabs */ DoesNotAccessMemory,
  /* arm_neon_vqadds */ DoesNotAccessMemory,
  /* arm_neon_vqaddu */ DoesNotAccessMemory,
  /* arm_neon_vqdmulh */ DoesNotAccessMemory,
  /* arm_neon_vqdmull */ DoesNotAccessMemory,
  /* arm_neon_vqmovns */ DoesNotAccessMemory,
  /* arm_neon_vqmovnsu */ DoesNotAccessMemory,
  /* arm_neon_vqmovnu */ DoesNotAccessMemory,
  /* arm_neon_vqneg */ DoesNotAccessMemory,
  /* arm_neon_vqrdmulh */ DoesNotAccessMemory,
  /* arm_neon_vqrshiftns */ DoesNotAccessMemory,
  /* arm_neon_vqrshiftnsu */ DoesNotAccessMemory,
  /* arm_neon_vqrshiftnu */ DoesNotAccessMemory,
  /* arm_neon_vqrshifts */ DoesNotAccessMemory,
  /* arm_neon_vqrshiftu */ DoesNotAccessMemory,
  /* arm_neon_vqshiftns */ DoesNotAccessMemory,
  /* arm_neon_vqshiftnsu */ DoesNotAccessMemory,
  /* arm_neon_vqshiftnu */ DoesNotAccessMemory,
  /* arm_neon_vqshifts */ DoesNotAccessMemory,
  /* arm_neon_vqshiftsu */ DoesNotAccessMemory,
  /* arm_neon_vqshiftu */ DoesNotAccessMemory,
  /* arm_neon_vqsubs */ DoesNotAccessMemory,
  /* arm_neon_vqsubu */ DoesNotAccessMemory,
  /* arm_neon_vraddhn */ DoesNotAccessMemory,
  /* arm_neon_vrecpe */ DoesNotAccessMemory,
  /* arm_neon_vrecps */ DoesNotAccessMemory,
  /* arm_neon_vrhadds */ DoesNotAccessMemory,
  /* arm_neon_vrhaddu */ DoesNotAccessMemory,
  /* arm_neon_vrinta */ DoesNotAccessMemory,
  /* arm_neon_vrintm */ DoesNotAccessMemory,
  /* arm_neon_vrintn */ DoesNotAccessMemory,
  /* arm_neon_vrintp */ DoesNotAccessMemory,
  /* arm_neon_vrintx */ DoesNotAccessMemory,
  /* arm_neon_vrintz */ DoesNotAccessMemory,
  /* arm_neon_vrshiftn */ DoesNotAccessMemory,
  /* arm_neon_vrshifts */ DoesNotAccessMemory,
  /* arm_neon_vrshiftu */ DoesNotAccessMemory,
  /* arm_neon_vrsqrte */ DoesNotAccessMemory,
  /* arm_neon_vrsqrts */ DoesNotAccessMemory,
  /* arm_neon_vrsubhn */ DoesNotAccessMemory,
  /* arm_neon_vshiftins */ DoesNotAccessMemory,
  /* arm_neon_vshifts */ DoesNotAccessMemory,
  /* arm_neon_vshiftu */ DoesNotAccessMemory,
  /* arm_neon_vst1 */ OnlyAccessesArgumentPointees,
  /* arm_neon_vst2 */ OnlyAccessesArgumentPointees,
  /* arm_neon_vst2lane */ OnlyAccessesArgumentPointees,
  /* arm_neon_vst3 */ OnlyAccessesArgumentPointees,
  /* arm_neon_vst3lane */ OnlyAccessesArgumentPointees,
  /* arm_neon_vst4 */ OnlyAccessesArgumentPointees,
  /* arm_neon_vst4lane */ OnlyAccessesArgumentPointees,
  /* arm_neon_vtbl1 */ DoesNotAccessMemory,
  /* arm_neon_vtbl2 */ DoesNotAccessMemory,
  /* arm_neon_vtbl3 */ DoesNotAccessMemory,
  /* arm_neon_vtbl4 */ DoesNotAccessMemory,
  /* arm_neon_vtbx1 */ DoesNotAccessMemory,
  /* arm_neon_vtbx2 */ DoesNotAccessMemory,
  /* arm_neon_vtbx3 */ DoesNotAccessMemory,
  /* arm_neon_vtbx4 */ DoesNotAccessMemory,
  /* arm_qadd */ DoesNotAccessMemory,
  /* arm_qsub */ DoesNotAccessMemory,
  /* arm_rbit */ DoesNotAccessMemory,
  /* arm_set_fpscr */ UnknownModRefBehavior,
  /* arm_ssat */ DoesNotAccessMemory,
  /* arm_stlex */ UnknownModRefBehavior,
  /* arm_stlexd */ UnknownModRefBehavior,
  /* arm_strex */ UnknownModRefBehavior,
  /* arm_strexd */ UnknownModRefBehavior,
  /* arm_thread_pointer */ DoesNotAccessMemory,
  /* arm_undefined */ UnknownModRefBehavior,
  /* arm_usat */ DoesNotAccessMemory,
  /* arm_vcvtr */ DoesNotAccessMemory,
  /* arm_vcvtru */ DoesNotAccessMemory,
  /* bswap */ DoesNotAccessMemory,
  /* ceil */ DoesNotAccessMemory,
  /* clear_cache */ UnknownModRefBehavior,
  /* convert_from_fp16 */ DoesNotAccessMemory,
  /* convert_to_fp16 */ DoesNotAccessMemory,
  /* convertff */ UnknownModRefBehavior,
  /* convertfsi */ UnknownModRefBehavior,
  /* convertfui */ UnknownModRefBehavior,
  /* convertsif */ UnknownModRefBehavior,
  /* convertss */ UnknownModRefBehavior,
  /* convertsu */ UnknownModRefBehavior,
  /* convertuif */ UnknownModRefBehavior,
  /* convertus */ UnknownModRefBehavior,
  /* convertuu */ UnknownModRefBehavior,
  /* copysign */ DoesNotAccessMemory,
  /* cos */ DoesNotAccessMemory,
  /* ctlz */ DoesNotAccessMemory,
  /* ctpop */ DoesNotAccessMemory,
  /* cttz */ DoesNotAccessMemory,
  /* cuda_syncthreads */ UnknownModRefBehavior,
  /* dbg_declare */ DoesNotAccessMemory,
  /* dbg_value */ DoesNotAccessMemory,
  /* debugtrap */ UnknownModRefBehavior,
  /* donothing */ DoesNotAccessMemory,
  /* eh_dwarf_cfa */ UnknownModRefBehavior,
  /* eh_return_i32 */ UnknownModRefBehavior,
  /* eh_return_i64 */ UnknownModRefBehavior,
  /* eh_sjlj_callsite */ DoesNotAccessMemory,
  /* eh_sjlj_functioncontext */ UnknownModRefBehavior,
  /* eh_sjlj_longjmp */ UnknownModRefBehavior,
  /* eh_sjlj_lsda */ DoesNotAccessMemory,
  /* eh_sjlj_setjmp */ UnknownModRefBehavior,
  /* eh_typeid_for */ DoesNotAccessMemory,
  /* eh_unwind_init */ UnknownModRefBehavior,
  /* exp */ DoesNotAccessMemory,
  /* exp2 */ DoesNotAccessMemory,
  /* expect */ DoesNotAccessMemory,
  /* experimental_patchpoint_i64 */ UnknownModRefBehavior,
  /* experimental_patchpoint_void */ UnknownModRefBehavior,
  /* experimental_stackmap */ UnknownModRefBehavior,
  /* fabs */ DoesNotAccessMemory,
  /* floor */ DoesNotAccessMemory,
  /* flt_rounds */ UnknownModRefBehavior,
  /* fma */ DoesNotAccessMemory,
  /* fmuladd */ DoesNotAccessMemory,
  /* frameaddress */ DoesNotAccessMemory,
  /* gcread */ OnlyReadsArgumentPointees,
  /* gcroot */ UnknownModRefBehavior,
  /* gcwrite */ OnlyAccessesArgumentPointees,
  /* hexagon_A2_abs */ DoesNotAccessMemory,
  /* hexagon_A2_absp */ DoesNotAccessMemory,
  /* hexagon_A2_abssat */ DoesNotAccessMemory,
  /* hexagon_A2_add */ DoesNotAccessMemory,
  /* hexagon_A2_addh_h16_hh */ DoesNotAccessMemory,
  /* hexagon_A2_addh_h16_hl */ DoesNotAccessMemory,
  /* hexagon_A2_addh_h16_lh */ DoesNotAccessMemory,
  /* hexagon_A2_addh_h16_ll */ DoesNotAccessMemory,
  /* hexagon_A2_addh_h16_sat_hh */ DoesNotAccessMemory,
  /* hexagon_A2_addh_h16_sat_hl */ DoesNotAccessMemory,
  /* hexagon_A2_addh_h16_sat_lh */ DoesNotAccessMemory,
  /* hexagon_A2_addh_h16_sat_ll */ DoesNotAccessMemory,
  /* hexagon_A2_addh_l16_hl */ DoesNotAccessMemory,
  /* hexagon_A2_addh_l16_ll */ DoesNotAccessMemory,
  /* hexagon_A2_addh_l16_sat_hl */ DoesNotAccessMemory,
  /* hexagon_A2_addh_l16_sat_ll */ DoesNotAccessMemory,
  /* hexagon_A2_addi */ DoesNotAccessMemory,
  /* hexagon_A2_addp */ DoesNotAccessMemory,
  /* hexagon_A2_addpsat */ DoesNotAccessMemory,
  /* hexagon_A2_addsat */ DoesNotAccessMemory,
  /* hexagon_A2_addsp */ DoesNotAccessMemory,
  /* hexagon_A2_and */ DoesNotAccessMemory,
  /* hexagon_A2_andir */ DoesNotAccessMemory,
  /* hexagon_A2_andp */ DoesNotAccessMemory,
  /* hexagon_A2_aslh */ DoesNotAccessMemory,
  /* hexagon_A2_asrh */ DoesNotAccessMemory,
  /* hexagon_A2_combine_hh */ DoesNotAccessMemory,
  /* hexagon_A2_combine_hl */ DoesNotAccessMemory,
  /* hexagon_A2_combine_lh */ DoesNotAccessMemory,
  /* hexagon_A2_combine_ll */ DoesNotAccessMemory,
  /* hexagon_A2_combineii */ DoesNotAccessMemory,
  /* hexagon_A2_combinew */ DoesNotAccessMemory,
  /* hexagon_A2_max */ DoesNotAccessMemory,
  /* hexagon_A2_maxp */ DoesNotAccessMemory,
  /* hexagon_A2_maxu */ DoesNotAccessMemory,
  /* hexagon_A2_maxup */ DoesNotAccessMemory,
  /* hexagon_A2_min */ DoesNotAccessMemory,
  /* hexagon_A2_minp */ DoesNotAccessMemory,
  /* hexagon_A2_minu */ DoesNotAccessMemory,
  /* hexagon_A2_minup */ DoesNotAccessMemory,
  /* hexagon_A2_neg */ DoesNotAccessMemory,
  /* hexagon_A2_negp */ DoesNotAccessMemory,
  /* hexagon_A2_negsat */ DoesNotAccessMemory,
  /* hexagon_A2_not */ DoesNotAccessMemory,
  /* hexagon_A2_notp */ DoesNotAccessMemory,
  /* hexagon_A2_or */ DoesNotAccessMemory,
  /* hexagon_A2_orir */ DoesNotAccessMemory,
  /* hexagon_A2_orp */ DoesNotAccessMemory,
  /* hexagon_A2_roundsat */ DoesNotAccessMemory,
  /* hexagon_A2_sat */ DoesNotAccessMemory,
  /* hexagon_A2_satb */ DoesNotAccessMemory,
  /* hexagon_A2_sath */ DoesNotAccessMemory,
  /* hexagon_A2_satub */ DoesNotAccessMemory,
  /* hexagon_A2_satuh */ DoesNotAccessMemory,
  /* hexagon_A2_sub */ DoesNotAccessMemory,
  /* hexagon_A2_subh_h16_hh */ DoesNotAccessMemory,
  /* hexagon_A2_subh_h16_hl */ DoesNotAccessMemory,
  /* hexagon_A2_subh_h16_lh */ DoesNotAccessMemory,
  /* hexagon_A2_subh_h16_ll */ DoesNotAccessMemory,
  /* hexagon_A2_subh_h16_sat_hh */ DoesNotAccessMemory,
  /* hexagon_A2_subh_h16_sat_hl */ DoesNotAccessMemory,
  /* hexagon_A2_subh_h16_sat_lh */ DoesNotAccessMemory,
  /* hexagon_A2_subh_h16_sat_ll */ DoesNotAccessMemory,
  /* hexagon_A2_subh_l16_hl */ DoesNotAccessMemory,
  /* hexagon_A2_subh_l16_ll */ DoesNotAccessMemory,
  /* hexagon_A2_subh_l16_sat_hl */ DoesNotAccessMemory,
  /* hexagon_A2_subh_l16_sat_ll */ DoesNotAccessMemory,
  /* hexagon_A2_subp */ DoesNotAccessMemory,
  /* hexagon_A2_subri */ DoesNotAccessMemory,
  /* hexagon_A2_subsat */ DoesNotAccessMemory,
  /* hexagon_A2_svaddh */ DoesNotAccessMemory,
  /* hexagon_A2_svaddhs */ DoesNotAccessMemory,
  /* hexagon_A2_svadduhs */ DoesNotAccessMemory,
  /* hexagon_A2_svavgh */ DoesNotAccessMemory,
  /* hexagon_A2_svavghs */ DoesNotAccessMemory,
  /* hexagon_A2_svnavgh */ DoesNotAccessMemory,
  /* hexagon_A2_svsubh */ DoesNotAccessMemory,
  /* hexagon_A2_svsubhs */ DoesNotAccessMemory,
  /* hexagon_A2_svsubuhs */ DoesNotAccessMemory,
  /* hexagon_A2_swiz */ DoesNotAccessMemory,
  /* hexagon_A2_sxtb */ DoesNotAccessMemory,
  /* hexagon_A2_sxth */ DoesNotAccessMemory,
  /* hexagon_A2_sxtw */ DoesNotAccessMemory,
  /* hexagon_A2_tfr */ DoesNotAccessMemory,
  /* hexagon_A2_tfrih */ DoesNotAccessMemory,
  /* hexagon_A2_tfril */ DoesNotAccessMemory,
  /* hexagon_A2_tfrp */ DoesNotAccessMemory,
  /* hexagon_A2_tfrpi */ DoesNotAccessMemory,
  /* hexagon_A2_tfrsi */ DoesNotAccessMemory,
  /* hexagon_A2_vabsh */ DoesNotAccessMemory,
  /* hexagon_A2_vabshsat */ DoesNotAccessMemory,
  /* hexagon_A2_vabsw */ DoesNotAccessMemory,
  /* hexagon_A2_vabswsat */ DoesNotAccessMemory,
  /* hexagon_A2_vaddb_map */ DoesNotAccessMemory,
  /* hexagon_A2_vaddh */ DoesNotAccessMemory,
  /* hexagon_A2_vaddhs */ DoesNotAccessMemory,
  /* hexagon_A2_vaddub */ DoesNotAccessMemory,
  /* hexagon_A2_vaddubs */ DoesNotAccessMemory,
  /* hexagon_A2_vadduhs */ DoesNotAccessMemory,
  /* hexagon_A2_vaddw */ DoesNotAccessMemory,
  /* hexagon_A2_vaddws */ DoesNotAccessMemory,
  /* hexagon_A2_vavgh */ DoesNotAccessMemory,
  /* hexagon_A2_vavghcr */ DoesNotAccessMemory,
  /* hexagon_A2_vavghr */ DoesNotAccessMemory,
  /* hexagon_A2_vavgub */ DoesNotAccessMemory,
  /* hexagon_A2_vavgubr */ DoesNotAccessMemory,
  /* hexagon_A2_vavguh */ DoesNotAccessMemory,
  /* hexagon_A2_vavguhr */ DoesNotAccessMemory,
  /* hexagon_A2_vavguw */ DoesNotAccessMemory,
  /* hexagon_A2_vavguwr */ DoesNotAccessMemory,
  /* hexagon_A2_vavgw */ DoesNotAccessMemory,
  /* hexagon_A2_vavgwcr */ DoesNotAccessMemory,
  /* hexagon_A2_vavgwr */ DoesNotAccessMemory,
  /* hexagon_A2_vcmpbeq */ DoesNotAccessMemory,
  /* hexagon_A2_vcmpbgtu */ DoesNotAccessMemory,
  /* hexagon_A2_vcmpheq */ DoesNotAccessMemory,
  /* hexagon_A2_vcmphgt */ DoesNotAccessMemory,
  /* hexagon_A2_vcmphgtu */ DoesNotAccessMemory,
  /* hexagon_A2_vcmpweq */ DoesNotAccessMemory,
  /* hexagon_A2_vcmpwgt */ DoesNotAccessMemory,
  /* hexagon_A2_vcmpwgtu */ DoesNotAccessMemory,
  /* hexagon_A2_vconj */ DoesNotAccessMemory,
  /* hexagon_A2_vmaxb */ DoesNotAccessMemory,
  /* hexagon_A2_vmaxh */ DoesNotAccessMemory,
  /* hexagon_A2_vmaxub */ DoesNotAccessMemory,
  /* hexagon_A2_vmaxuh */ DoesNotAccessMemory,
  /* hexagon_A2_vmaxuw */ DoesNotAccessMemory,
  /* hexagon_A2_vmaxw */ DoesNotAccessMemory,
  /* hexagon_A2_vminb */ DoesNotAccessMemory,
  /* hexagon_A2_vminh */ DoesNotAccessMemory,
  /* hexagon_A2_vminub */ DoesNotAccessMemory,
  /* hexagon_A2_vminuh */ DoesNotAccessMemory,
  /* hexagon_A2_vminuw */ DoesNotAccessMemory,
  /* hexagon_A2_vminw */ DoesNotAccessMemory,
  /* hexagon_A2_vnavgh */ DoesNotAccessMemory,
  /* hexagon_A2_vnavghcr */ DoesNotAccessMemory,
  /* hexagon_A2_vnavghr */ DoesNotAccessMemory,
  /* hexagon_A2_vnavgw */ DoesNotAccessMemory,
  /* hexagon_A2_vnavgwcr */ DoesNotAccessMemory,
  /* hexagon_A2_vnavgwr */ DoesNotAccessMemory,
  /* hexagon_A2_vraddub */ DoesNotAccessMemory,
  /* hexagon_A2_vraddub_acc */ DoesNotAccessMemory,
  /* hexagon_A2_vrsadub */ DoesNotAccessMemory,
  /* hexagon_A2_vrsadub_acc */ DoesNotAccessMemory,
  /* hexagon_A2_vsubb_map */ DoesNotAccessMemory,
  /* hexagon_A2_vsubh */ DoesNotAccessMemory,
  /* hexagon_A2_vsubhs */ DoesNotAccessMemory,
  /* hexagon_A2_vsubub */ DoesNotAccessMemory,
  /* hexagon_A2_vsububs */ DoesNotAccessMemory,
  /* hexagon_A2_vsubuhs */ DoesNotAccessMemory,
  /* hexagon_A2_vsubw */ DoesNotAccessMemory,
  /* hexagon_A2_vsubws */ DoesNotAccessMemory,
  /* hexagon_A2_xor */ DoesNotAccessMemory,
  /* hexagon_A2_xorp */ DoesNotAccessMemory,
  /* hexagon_A2_zxtb */ DoesNotAccessMemory,
  /* hexagon_A2_zxth */ DoesNotAccessMemory,
  /* hexagon_A4_andn */ DoesNotAccessMemory,
  /* hexagon_A4_andnp */ DoesNotAccessMemory,
  /* hexagon_A4_bitsplit */ DoesNotAccessMemory,
  /* hexagon_A4_bitspliti */ DoesNotAccessMemory,
  /* hexagon_A4_boundscheck */ DoesNotAccessMemory,
  /* hexagon_A4_cmpbeq */ DoesNotAccessMemory,
  /* hexagon_A4_cmpbeqi */ DoesNotAccessMemory,
  /* hexagon_A4_cmpbgt */ DoesNotAccessMemory,
  /* hexagon_A4_cmpbgti */ DoesNotAccessMemory,
  /* hexagon_A4_cmpbgtu */ DoesNotAccessMemory,
  /* hexagon_A4_cmpbgtui */ DoesNotAccessMemory,
  /* hexagon_A4_cmpheq */ DoesNotAccessMemory,
  /* hexagon_A4_cmpheqi */ DoesNotAccessMemory,
  /* hexagon_A4_cmphgt */ DoesNotAccessMemory,
  /* hexagon_A4_cmphgti */ DoesNotAccessMemory,
  /* hexagon_A4_cmphgtu */ DoesNotAccessMemory,
  /* hexagon_A4_cmphgtui */ DoesNotAccessMemory,
  /* hexagon_A4_combineir */ DoesNotAccessMemory,
  /* hexagon_A4_combineri */ DoesNotAccessMemory,
  /* hexagon_A4_cround_ri */ DoesNotAccessMemory,
  /* hexagon_A4_cround_rr */ DoesNotAccessMemory,
  /* hexagon_A4_modwrapu */ DoesNotAccessMemory,
  /* hexagon_A4_orn */ DoesNotAccessMemory,
  /* hexagon_A4_ornp */ DoesNotAccessMemory,
  /* hexagon_A4_rcmpeq */ DoesNotAccessMemory,
  /* hexagon_A4_rcmpeqi */ DoesNotAccessMemory,
  /* hexagon_A4_rcmpneq */ DoesNotAccessMemory,
  /* hexagon_A4_rcmpneqi */ DoesNotAccessMemory,
  /* hexagon_A4_round_ri */ DoesNotAccessMemory,
  /* hexagon_A4_round_ri_sat */ DoesNotAccessMemory,
  /* hexagon_A4_round_rr */ DoesNotAccessMemory,
  /* hexagon_A4_round_rr_sat */ DoesNotAccessMemory,
  /* hexagon_A4_tlbmatch */ DoesNotAccessMemory,
  /* hexagon_A4_vcmpbeq_any */ DoesNotAccessMemory,
  /* hexagon_A4_vcmpbeqi */ DoesNotAccessMemory,
  /* hexagon_A4_vcmpbgt */ DoesNotAccessMemory,
  /* hexagon_A4_vcmpbgti */ DoesNotAccessMemory,
  /* hexagon_A4_vcmpbgtui */ DoesNotAccessMemory,
  /* hexagon_A4_vcmpheqi */ DoesNotAccessMemory,
  /* hexagon_A4_vcmphgti */ DoesNotAccessMemory,
  /* hexagon_A4_vcmphgtui */ DoesNotAccessMemory,
  /* hexagon_A4_vcmpweqi */ DoesNotAccessMemory,
  /* hexagon_A4_vcmpwgti */ DoesNotAccessMemory,
  /* hexagon_A4_vcmpwgtui */ DoesNotAccessMemory,
  /* hexagon_A4_vrmaxh */ DoesNotAccessMemory,
  /* hexagon_A4_vrmaxuh */ DoesNotAccessMemory,
  /* hexagon_A4_vrmaxuw */ DoesNotAccessMemory,
  /* hexagon_A4_vrmaxw */ DoesNotAccessMemory,
  /* hexagon_A4_vrminh */ DoesNotAccessMemory,
  /* hexagon_A4_vrminuh */ DoesNotAccessMemory,
  /* hexagon_A4_vrminuw */ DoesNotAccessMemory,
  /* hexagon_A4_vrminw */ DoesNotAccessMemory,
  /* hexagon_A5_vaddhubs */ DoesNotAccessMemory,
  /* hexagon_C2_all8 */ DoesNotAccessMemory,
  /* hexagon_C2_and */ DoesNotAccessMemory,
  /* hexagon_C2_andn */ DoesNotAccessMemory,
  /* hexagon_C2_any8 */ DoesNotAccessMemory,
  /* hexagon_C2_bitsclr */ DoesNotAccessMemory,
  /* hexagon_C2_bitsclri */ DoesNotAccessMemory,
  /* hexagon_C2_bitsset */ DoesNotAccessMemory,
  /* hexagon_C2_cmpeq */ DoesNotAccessMemory,
  /* hexagon_C2_cmpeqi */ DoesNotAccessMemory,
  /* hexagon_C2_cmpeqp */ DoesNotAccessMemory,
  /* hexagon_C2_cmpgei */ DoesNotAccessMemory,
  /* hexagon_C2_cmpgeui */ DoesNotAccessMemory,
  /* hexagon_C2_cmpgt */ DoesNotAccessMemory,
  /* hexagon_C2_cmpgti */ DoesNotAccessMemory,
  /* hexagon_C2_cmpgtp */ DoesNotAccessMemory,
  /* hexagon_C2_cmpgtu */ DoesNotAccessMemory,
  /* hexagon_C2_cmpgtui */ DoesNotAccessMemory,
  /* hexagon_C2_cmpgtup */ DoesNotAccessMemory,
  /* hexagon_C2_cmplt */ DoesNotAccessMemory,
  /* hexagon_C2_cmpltu */ DoesNotAccessMemory,
  /* hexagon_C2_mask */ DoesNotAccessMemory,
  /* hexagon_C2_mux */ DoesNotAccessMemory,
  /* hexagon_C2_muxii */ DoesNotAccessMemory,
  /* hexagon_C2_muxir */ DoesNotAccessMemory,
  /* hexagon_C2_muxri */ DoesNotAccessMemory,
  /* hexagon_C2_not */ DoesNotAccessMemory,
  /* hexagon_C2_or */ DoesNotAccessMemory,
  /* hexagon_C2_orn */ DoesNotAccessMemory,
  /* hexagon_C2_pxfer_map */ DoesNotAccessMemory,
  /* hexagon_C2_tfrpr */ DoesNotAccessMemory,
  /* hexagon_C2_tfrrp */ DoesNotAccessMemory,
  /* hexagon_C2_vitpack */ DoesNotAccessMemory,
  /* hexagon_C2_vmux */ DoesNotAccessMemory,
  /* hexagon_C2_xor */ DoesNotAccessMemory,
  /* hexagon_C4_and_and */ DoesNotAccessMemory,
  /* hexagon_C4_and_andn */ DoesNotAccessMemory,
  /* hexagon_C4_and_or */ DoesNotAccessMemory,
  /* hexagon_C4_and_orn */ DoesNotAccessMemory,
  /* hexagon_C4_cmplte */ DoesNotAccessMemory,
  /* hexagon_C4_cmpltei */ DoesNotAccessMemory,
  /* hexagon_C4_cmplteu */ DoesNotAccessMemory,
  /* hexagon_C4_cmplteui */ DoesNotAccessMemory,
  /* hexagon_C4_cmpneq */ DoesNotAccessMemory,
  /* hexagon_C4_cmpneqi */ DoesNotAccessMemory,
  /* hexagon_C4_fastcorner9 */ DoesNotAccessMemory,
  /* hexagon_C4_fastcorner9_not */ DoesNotAccessMemory,
  /* hexagon_C4_nbitsclr */ DoesNotAccessMemory,
  /* hexagon_C4_nbitsclri */ DoesNotAccessMemory,
  /* hexagon_C4_nbitsset */ DoesNotAccessMemory,
  /* hexagon_C4_or_and */ DoesNotAccessMemory,
  /* hexagon_C4_or_andn */ DoesNotAccessMemory,
  /* hexagon_C4_or_or */ DoesNotAccessMemory,
  /* hexagon_C4_or_orn */ DoesNotAccessMemory,
  /* hexagon_F2_conv_d2df */ DoesNotAccessMemory,
  /* hexagon_F2_conv_d2sf */ DoesNotAccessMemory,
  /* hexagon_F2_conv_df2d */ DoesNotAccessMemory,
  /* hexagon_F2_conv_df2d_chop */ DoesNotAccessMemory,
  /* hexagon_F2_conv_df2sf */ DoesNotAccessMemory,
  /* hexagon_F2_conv_df2ud */ DoesNotAccessMemory,
  /* hexagon_F2_conv_df2ud_chop */ DoesNotAccessMemory,
  /* hexagon_F2_conv_df2uw */ DoesNotAccessMemory,
  /* hexagon_F2_conv_df2uw_chop */ DoesNotAccessMemory,
  /* hexagon_F2_conv_df2w */ DoesNotAccessMemory,
  /* hexagon_F2_conv_df2w_chop */ DoesNotAccessMemory,
  /* hexagon_F2_conv_sf2d */ DoesNotAccessMemory,
  /* hexagon_F2_conv_sf2d_chop */ DoesNotAccessMemory,
  /* hexagon_F2_conv_sf2df */ DoesNotAccessMemory,
  /* hexagon_F2_conv_sf2ud */ DoesNotAccessMemory,
  /* hexagon_F2_conv_sf2ud_chop */ DoesNotAccessMemory,
  /* hexagon_F2_conv_sf2uw */ DoesNotAccessMemory,
  /* hexagon_F2_conv_sf2uw_chop */ DoesNotAccessMemory,
  /* hexagon_F2_conv_sf2w */ DoesNotAccessMemory,
  /* hexagon_F2_conv_sf2w_chop */ DoesNotAccessMemory,
  /* hexagon_F2_conv_ud2df */ DoesNotAccessMemory,
  /* hexagon_F2_conv_ud2sf */ DoesNotAccessMemory,
  /* hexagon_F2_conv_uw2df */ DoesNotAccessMemory,
  /* hexagon_F2_conv_uw2sf */ DoesNotAccessMemory,
  /* hexagon_F2_conv_w2df */ DoesNotAccessMemory,
  /* hexagon_F2_conv_w2sf */ DoesNotAccessMemory,
  /* hexagon_F2_dfadd */ DoesNotAccessMemory,
  /* hexagon_F2_dfclass */ DoesNotAccessMemory,
  /* hexagon_F2_dfcmpeq */ DoesNotAccessMemory,
  /* hexagon_F2_dfcmpge */ DoesNotAccessMemory,
  /* hexagon_F2_dfcmpgt */ DoesNotAccessMemory,
  /* hexagon_F2_dfcmpuo */ DoesNotAccessMemory,
  /* hexagon_F2_dffixupd */ DoesNotAccessMemory,
  /* hexagon_F2_dffixupn */ DoesNotAccessMemory,
  /* hexagon_F2_dffixupr */ DoesNotAccessMemory,
  /* hexagon_F2_dffma */ DoesNotAccessMemory,
  /* hexagon_F2_dffma_lib */ DoesNotAccessMemory,
  /* hexagon_F2_dffma_sc */ DoesNotAccessMemory,
  /* hexagon_F2_dffms */ DoesNotAccessMemory,
  /* hexagon_F2_dffms_lib */ DoesNotAccessMemory,
  /* hexagon_F2_dfimm_n */ DoesNotAccessMemory,
  /* hexagon_F2_dfimm_p */ DoesNotAccessMemory,
  /* hexagon_F2_dfmax */ DoesNotAccessMemory,
  /* hexagon_F2_dfmin */ DoesNotAccessMemory,
  /* hexagon_F2_dfmpy */ DoesNotAccessMemory,
  /* hexagon_F2_dfsub */ DoesNotAccessMemory,
  /* hexagon_F2_sfadd */ DoesNotAccessMemory,
  /* hexagon_F2_sfclass */ DoesNotAccessMemory,
  /* hexagon_F2_sfcmpeq */ DoesNotAccessMemory,
  /* hexagon_F2_sfcmpge */ DoesNotAccessMemory,
  /* hexagon_F2_sfcmpgt */ DoesNotAccessMemory,
  /* hexagon_F2_sfcmpuo */ DoesNotAccessMemory,
  /* hexagon_F2_sffixupd */ DoesNotAccessMemory,
  /* hexagon_F2_sffixupn */ DoesNotAccessMemory,
  /* hexagon_F2_sffixupr */ DoesNotAccessMemory,
  /* hexagon_F2_sffma */ DoesNotAccessMemory,
  /* hexagon_F2_sffma_lib */ DoesNotAccessMemory,
  /* hexagon_F2_sffma_sc */ DoesNotAccessMemory,
  /* hexagon_F2_sffms */ DoesNotAccessMemory,
  /* hexagon_F2_sffms_lib */ DoesNotAccessMemory,
  /* hexagon_F2_sfimm_n */ DoesNotAccessMemory,
  /* hexagon_F2_sfimm_p */ DoesNotAccessMemory,
  /* hexagon_F2_sfmax */ DoesNotAccessMemory,
  /* hexagon_F2_sfmin */ DoesNotAccessMemory,
  /* hexagon_F2_sfmpy */ DoesNotAccessMemory,
  /* hexagon_F2_sfsub */ DoesNotAccessMemory,
  /* hexagon_M2_acci */ DoesNotAccessMemory,
  /* hexagon_M2_accii */ DoesNotAccessMemory,
  /* hexagon_M2_cmaci_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cmacr_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cmacs_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cmacs_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_cmacsc_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cmacsc_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_cmpyi_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cmpyr_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cmpyrs_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cmpyrs_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_cmpyrsc_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cmpyrsc_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_cmpys_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cmpys_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_cmpysc_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cmpysc_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_cnacs_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cnacs_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_cnacsc_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_cnacsc_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_dpmpyss_acc_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_dpmpyss_nac_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_dpmpyss_rnd_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_dpmpyss_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_dpmpyuu_acc_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_dpmpyuu_nac_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_dpmpyuu_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_hmmpyh_rs1 */ DoesNotAccessMemory,
  /* hexagon_M2_hmmpyh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_hmmpyl_rs1 */ DoesNotAccessMemory,
  /* hexagon_M2_hmmpyl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_maci */ DoesNotAccessMemory,
  /* hexagon_M2_macsin */ DoesNotAccessMemory,
  /* hexagon_M2_macsip */ DoesNotAccessMemory,
  /* hexagon_M2_mmachs_rs0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmachs_rs1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmachs_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmachs_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmacls_rs0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmacls_rs1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmacls_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmacls_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmacuhs_rs0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmacuhs_rs1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmacuhs_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmacuhs_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmaculs_rs0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmaculs_rs1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmaculs_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmaculs_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyh_rs0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyh_rs1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyl_rs0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyl_rs1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyuh_rs0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyuh_rs1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyuh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyuh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyul_rs0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyul_rs1 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyul_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mmpyul_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_sat_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_sat_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_sat_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_sat_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_sat_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_sat_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_sat_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_acc_sat_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_sat_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_sat_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_sat_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_sat_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_sat_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_sat_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_sat_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_nac_sat_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_rnd_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_rnd_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_rnd_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_rnd_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_rnd_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_rnd_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_rnd_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_rnd_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_rnd_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_rnd_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_rnd_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_rnd_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_rnd_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_rnd_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_rnd_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_sat_rnd_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_up */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_up_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpy_up_s1_sat */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_acc_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_acc_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_acc_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_acc_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_acc_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_acc_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_acc_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_acc_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_nac_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_nac_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_nac_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_nac_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_nac_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_nac_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_nac_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_nac_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_rnd_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_rnd_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_rnd_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_rnd_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_rnd_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_rnd_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_rnd_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyd_rnd_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyi */ DoesNotAccessMemory,
  /* hexagon_M2_mpysmi */ DoesNotAccessMemory,
  /* hexagon_M2_mpysu_up */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_acc_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_acc_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_acc_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_acc_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_acc_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_acc_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_acc_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_acc_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_nac_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_nac_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_nac_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_nac_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_nac_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_nac_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_nac_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_nac_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyu_up */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_acc_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_acc_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_acc_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_acc_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_acc_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_acc_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_acc_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_acc_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_nac_hh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_nac_hh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_nac_hl_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_nac_hl_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_nac_lh_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_nac_lh_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_nac_ll_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyud_nac_ll_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_mpyui */ DoesNotAccessMemory,
  /* hexagon_M2_nacci */ DoesNotAccessMemory,
  /* hexagon_M2_naccii */ DoesNotAccessMemory,
  /* hexagon_M2_subacc */ DoesNotAccessMemory,
  /* hexagon_M2_vabsdiffh */ DoesNotAccessMemory,
  /* hexagon_M2_vabsdiffw */ DoesNotAccessMemory,
  /* hexagon_M2_vcmac_s0_sat_i */ DoesNotAccessMemory,
  /* hexagon_M2_vcmac_s0_sat_r */ DoesNotAccessMemory,
  /* hexagon_M2_vcmpy_s0_sat_i */ DoesNotAccessMemory,
  /* hexagon_M2_vcmpy_s0_sat_r */ DoesNotAccessMemory,
  /* hexagon_M2_vcmpy_s1_sat_i */ DoesNotAccessMemory,
  /* hexagon_M2_vcmpy_s1_sat_r */ DoesNotAccessMemory,
  /* hexagon_M2_vdmacs_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vdmacs_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vdmpyrs_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vdmpyrs_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vdmpys_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vdmpys_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vmac2 */ DoesNotAccessMemory,
  /* hexagon_M2_vmac2es */ DoesNotAccessMemory,
  /* hexagon_M2_vmac2es_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vmac2es_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vmac2s_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vmac2s_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vmac2su_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vmac2su_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vmpy2es_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vmpy2es_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vmpy2s_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vmpy2s_s0pack */ DoesNotAccessMemory,
  /* hexagon_M2_vmpy2s_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vmpy2s_s1pack */ DoesNotAccessMemory,
  /* hexagon_M2_vmpy2su_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vmpy2su_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vraddh */ DoesNotAccessMemory,
  /* hexagon_M2_vradduh */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmaci_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmaci_s0c */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmacr_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmacr_s0c */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmpyi_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmpyi_s0c */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmpyr_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmpyr_s0c */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmpys_acc_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmpys_s1 */ DoesNotAccessMemory,
  /* hexagon_M2_vrcmpys_s1rp */ DoesNotAccessMemory,
  /* hexagon_M2_vrmac_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_vrmpy_s0 */ DoesNotAccessMemory,
  /* hexagon_M2_xor_xacc */ DoesNotAccessMemory,
  /* hexagon_M4_and_and */ DoesNotAccessMemory,
  /* hexagon_M4_and_andn */ DoesNotAccessMemory,
  /* hexagon_M4_and_or */ DoesNotAccessMemory,
  /* hexagon_M4_and_xor */ DoesNotAccessMemory,
  /* hexagon_M4_cmpyi_wh */ DoesNotAccessMemory,
  /* hexagon_M4_cmpyi_whc */ DoesNotAccessMemory,
  /* hexagon_M4_cmpyr_wh */ DoesNotAccessMemory,
  /* hexagon_M4_cmpyr_whc */ DoesNotAccessMemory,
  /* hexagon_M4_mac_up_s1_sat */ DoesNotAccessMemory,
  /* hexagon_M4_mpyri_addi */ DoesNotAccessMemory,
  /* hexagon_M4_mpyri_addr */ DoesNotAccessMemory,
  /* hexagon_M4_mpyri_addr_u2 */ DoesNotAccessMemory,
  /* hexagon_M4_mpyrr_addi */ DoesNotAccessMemory,
  /* hexagon_M4_mpyrr_addr */ DoesNotAccessMemory,
  /* hexagon_M4_nac_up_s1_sat */ DoesNotAccessMemory,
  /* hexagon_M4_or_and */ DoesNotAccessMemory,
  /* hexagon_M4_or_andn */ DoesNotAccessMemory,
  /* hexagon_M4_or_or */ DoesNotAccessMemory,
  /* hexagon_M4_or_xor */ DoesNotAccessMemory,
  /* hexagon_M4_pmpyw */ DoesNotAccessMemory,
  /* hexagon_M4_pmpyw_acc */ DoesNotAccessMemory,
  /* hexagon_M4_vpmpyh */ DoesNotAccessMemory,
  /* hexagon_M4_vpmpyh_acc */ DoesNotAccessMemory,
  /* hexagon_M4_vrmpyeh_acc_s0 */ DoesNotAccessMemory,
  /* hexagon_M4_vrmpyeh_acc_s1 */ DoesNotAccessMemory,
  /* hexagon_M4_vrmpyeh_s0 */ DoesNotAccessMemory,
  /* hexagon_M4_vrmpyeh_s1 */ DoesNotAccessMemory,
  /* hexagon_M4_vrmpyoh_acc_s0 */ DoesNotAccessMemory,
  /* hexagon_M4_vrmpyoh_acc_s1 */ DoesNotAccessMemory,
  /* hexagon_M4_vrmpyoh_s0 */ DoesNotAccessMemory,
  /* hexagon_M4_vrmpyoh_s1 */ DoesNotAccessMemory,
  /* hexagon_M4_xor_and */ DoesNotAccessMemory,
  /* hexagon_M4_xor_andn */ DoesNotAccessMemory,
  /* hexagon_M4_xor_or */ DoesNotAccessMemory,
  /* hexagon_M4_xor_xacc */ DoesNotAccessMemory,
  /* hexagon_M5_vdmacbsu */ DoesNotAccessMemory,
  /* hexagon_M5_vdmpybsu */ DoesNotAccessMemory,
  /* hexagon_M5_vmacbsu */ DoesNotAccessMemory,
  /* hexagon_M5_vmacbuu */ DoesNotAccessMemory,
  /* hexagon_M5_vmpybsu */ DoesNotAccessMemory,
  /* hexagon_M5_vmpybuu */ DoesNotAccessMemory,
  /* hexagon_M5_vrmacbsu */ DoesNotAccessMemory,
  /* hexagon_M5_vrmacbuu */ DoesNotAccessMemory,
  /* hexagon_M5_vrmpybsu */ DoesNotAccessMemory,
  /* hexagon_M5_vrmpybuu */ DoesNotAccessMemory,
  /* hexagon_S2_addasl_rrri */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_p */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_p_acc */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_p_and */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_p_nac */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_p_or */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_p_xacc */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_r */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_r_acc */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_r_and */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_r_nac */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_r_or */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_r_sat */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_r_xacc */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_vh */ DoesNotAccessMemory,
  /* hexagon_S2_asl_i_vw */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_p */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_p_acc */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_p_and */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_p_nac */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_p_or */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_p_xor */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_r */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_r_acc */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_r_and */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_r_nac */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_r_or */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_r_sat */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_vh */ DoesNotAccessMemory,
  /* hexagon_S2_asl_r_vw */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_p */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_p_acc */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_p_and */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_p_nac */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_p_or */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_p_rnd */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_p_rnd_goodsyntax */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_r */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_r_acc */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_r_and */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_r_nac */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_r_or */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_r_rnd */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_r_rnd_goodsyntax */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_svw_trun */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_vh */ DoesNotAccessMemory,
  /* hexagon_S2_asr_i_vw */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_p */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_p_acc */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_p_and */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_p_nac */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_p_or */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_p_xor */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_r */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_r_acc */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_r_and */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_r_nac */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_r_or */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_r_sat */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_svw_trun */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_vh */ DoesNotAccessMemory,
  /* hexagon_S2_asr_r_vw */ DoesNotAccessMemory,
  /* hexagon_S2_brev */ DoesNotAccessMemory,
  /* hexagon_S2_brevp */ DoesNotAccessMemory,
  /* hexagon_S2_cl0 */ DoesNotAccessMemory,
  /* hexagon_S2_cl0p */ DoesNotAccessMemory,
  /* hexagon_S2_cl1 */ DoesNotAccessMemory,
  /* hexagon_S2_cl1p */ DoesNotAccessMemory,
  /* hexagon_S2_clb */ DoesNotAccessMemory,
  /* hexagon_S2_clbnorm */ DoesNotAccessMemory,
  /* hexagon_S2_clbp */ DoesNotAccessMemory,
  /* hexagon_S2_clrbit_i */ DoesNotAccessMemory,
  /* hexagon_S2_clrbit_r */ DoesNotAccessMemory,
  /* hexagon_S2_ct0 */ DoesNotAccessMemory,
  /* hexagon_S2_ct0p */ DoesNotAccessMemory,
  /* hexagon_S2_ct1 */ DoesNotAccessMemory,
  /* hexagon_S2_ct1p */ DoesNotAccessMemory,
  /* hexagon_S2_deinterleave */ DoesNotAccessMemory,
  /* hexagon_S2_extractu */ DoesNotAccessMemory,
  /* hexagon_S2_extractu_rp */ DoesNotAccessMemory,
  /* hexagon_S2_extractup */ DoesNotAccessMemory,
  /* hexagon_S2_extractup_rp */ DoesNotAccessMemory,
  /* hexagon_S2_insert */ DoesNotAccessMemory,
  /* hexagon_S2_insert_rp */ DoesNotAccessMemory,
  /* hexagon_S2_insertp */ DoesNotAccessMemory,
  /* hexagon_S2_insertp_rp */ DoesNotAccessMemory,
  /* hexagon_S2_interleave */ DoesNotAccessMemory,
  /* hexagon_S2_lfsp */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_p */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_p_acc */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_p_and */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_p_nac */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_p_or */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_p_xor */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_r */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_r_acc */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_r_and */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_r_nac */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_r_or */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_vh */ DoesNotAccessMemory,
  /* hexagon_S2_lsl_r_vw */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_p */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_p_acc */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_p_and */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_p_nac */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_p_or */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_p_xacc */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_r */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_r_acc */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_r_and */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_r_nac */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_r_or */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_r_xacc */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_vh */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_i_vw */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_p */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_p_acc */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_p_and */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_p_nac */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_p_or */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_p_xor */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_r */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_r_acc */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_r_and */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_r_nac */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_r_or */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_vh */ DoesNotAccessMemory,
  /* hexagon_S2_lsr_r_vw */ DoesNotAccessMemory,
  /* hexagon_S2_packhl */ DoesNotAccessMemory,
  /* hexagon_S2_parityp */ DoesNotAccessMemory,
  /* hexagon_S2_setbit_i */ DoesNotAccessMemory,
  /* hexagon_S2_setbit_r */ DoesNotAccessMemory,
  /* hexagon_S2_shuffeb */ DoesNotAccessMemory,
  /* hexagon_S2_shuffeh */ DoesNotAccessMemory,
  /* hexagon_S2_shuffob */ DoesNotAccessMemory,
  /* hexagon_S2_shuffoh */ DoesNotAccessMemory,
  /* hexagon_S2_svsathb */ DoesNotAccessMemory,
  /* hexagon_S2_svsathub */ DoesNotAccessMemory,
  /* hexagon_S2_tableidxb_goodsyntax */ DoesNotAccessMemory,
  /* hexagon_S2_tableidxd_goodsyntax */ DoesNotAccessMemory,
  /* hexagon_S2_tableidxh_goodsyntax */ DoesNotAccessMemory,
  /* hexagon_S2_tableidxw_goodsyntax */ DoesNotAccessMemory,
  /* hexagon_S2_togglebit_i */ DoesNotAccessMemory,
  /* hexagon_S2_togglebit_r */ DoesNotAccessMemory,
  /* hexagon_S2_tstbit_i */ DoesNotAccessMemory,
  /* hexagon_S2_tstbit_r */ DoesNotAccessMemory,
  /* hexagon_S2_valignib */ DoesNotAccessMemory,
  /* hexagon_S2_valignrb */ DoesNotAccessMemory,
  /* hexagon_S2_vcnegh */ DoesNotAccessMemory,
  /* hexagon_S2_vcrotate */ DoesNotAccessMemory,
  /* hexagon_S2_vrcnegh */ DoesNotAccessMemory,
  /* hexagon_S2_vrndpackwh */ DoesNotAccessMemory,
  /* hexagon_S2_vrndpackwhs */ DoesNotAccessMemory,
  /* hexagon_S2_vsathb */ DoesNotAccessMemory,
  /* hexagon_S2_vsathb_nopack */ DoesNotAccessMemory,
  /* hexagon_S2_vsathub */ DoesNotAccessMemory,
  /* hexagon_S2_vsathub_nopack */ DoesNotAccessMemory,
  /* hexagon_S2_vsatwh */ DoesNotAccessMemory,
  /* hexagon_S2_vsatwh_nopack */ DoesNotAccessMemory,
  /* hexagon_S2_vsatwuh */ DoesNotAccessMemory,
  /* hexagon_S2_vsatwuh_nopack */ DoesNotAccessMemory,
  /* hexagon_S2_vsplatrb */ DoesNotAccessMemory,
  /* hexagon_S2_vsplatrh */ DoesNotAccessMemory,
  /* hexagon_S2_vspliceib */ DoesNotAccessMemory,
  /* hexagon_S2_vsplicerb */ DoesNotAccessMemory,
  /* hexagon_S2_vsxtbh */ DoesNotAccessMemory,
  /* hexagon_S2_vsxthw */ DoesNotAccessMemory,
  /* hexagon_S2_vtrunehb */ DoesNotAccessMemory,
  /* hexagon_S2_vtrunewh */ DoesNotAccessMemory,
  /* hexagon_S2_vtrunohb */ DoesNotAccessMemory,
  /* hexagon_S2_vtrunowh */ DoesNotAccessMemory,
  /* hexagon_S2_vzxtbh */ DoesNotAccessMemory,
  /* hexagon_S2_vzxthw */ DoesNotAccessMemory,
  /* hexagon_S4_addaddi */ DoesNotAccessMemory,
  /* hexagon_S4_addi_asl_ri */ DoesNotAccessMemory,
  /* hexagon_S4_addi_lsr_ri */ DoesNotAccessMemory,
  /* hexagon_S4_andi_asl_ri */ DoesNotAccessMemory,
  /* hexagon_S4_andi_lsr_ri */ DoesNotAccessMemory,
  /* hexagon_S4_clbaddi */ DoesNotAccessMemory,
  /* hexagon_S4_clbpaddi */ DoesNotAccessMemory,
  /* hexagon_S4_clbpnorm */ DoesNotAccessMemory,
  /* hexagon_S4_extract */ DoesNotAccessMemory,
  /* hexagon_S4_extract_rp */ DoesNotAccessMemory,
  /* hexagon_S4_extractp */ DoesNotAccessMemory,
  /* hexagon_S4_extractp_rp */ DoesNotAccessMemory,
  /* hexagon_S4_lsli */ DoesNotAccessMemory,
  /* hexagon_S4_ntstbit_i */ DoesNotAccessMemory,
  /* hexagon_S4_ntstbit_r */ DoesNotAccessMemory,
  /* hexagon_S4_or_andi */ DoesNotAccessMemory,
  /* hexagon_S4_or_andix */ DoesNotAccessMemory,
  /* hexagon_S4_or_ori */ DoesNotAccessMemory,
  /* hexagon_S4_ori_asl_ri */ DoesNotAccessMemory,
  /* hexagon_S4_ori_lsr_ri */ DoesNotAccessMemory,
  /* hexagon_S4_parity */ DoesNotAccessMemory,
  /* hexagon_S4_subaddi */ DoesNotAccessMemory,
  /* hexagon_S4_subi_asl_ri */ DoesNotAccessMemory,
  /* hexagon_S4_subi_lsr_ri */ DoesNotAccessMemory,
  /* hexagon_S4_vrcrotate */ DoesNotAccessMemory,
  /* hexagon_S4_vrcrotate_acc */ DoesNotAccessMemory,
  /* hexagon_S4_vxaddsubh */ DoesNotAccessMemory,
  /* hexagon_S4_vxaddsubhr */ DoesNotAccessMemory,
  /* hexagon_S4_vxaddsubw */ DoesNotAccessMemory,
  /* hexagon_S4_vxsubaddh */ DoesNotAccessMemory,
  /* hexagon_S4_vxsubaddhr */ DoesNotAccessMemory,
  /* hexagon_S4_vxsubaddw */ DoesNotAccessMemory,
  /* hexagon_S5_asrhub_rnd_sat_goodsyntax */ DoesNotAccessMemory,
  /* hexagon_S5_asrhub_sat */ DoesNotAccessMemory,
  /* hexagon_S5_popcountp */ DoesNotAccessMemory,
  /* hexagon_S5_vasrhrnd_goodsyntax */ DoesNotAccessMemory,
  /* hexagon_SI_to_SXTHI_asrh */ DoesNotAccessMemory,
  /* hexagon_circ_ldd */ OnlyAccessesArgumentPointees,
  /* init_trampoline */ OnlyAccessesArgumentPointees,
  /* invariant_end */ OnlyAccessesArgumentPointees,
  /* invariant_start */ OnlyAccessesArgumentPointees,
  /* lifetime_end */ OnlyAccessesArgumentPointees,
  /* lifetime_start */ OnlyAccessesArgumentPointees,
  /* log */ DoesNotAccessMemory,
  /* log10 */ DoesNotAccessMemory,
  /* log2 */ DoesNotAccessMemory,
  /* longjmp */ UnknownModRefBehavior,
  /* memcpy */ OnlyAccessesArgumentPointees,
  /* memmove */ OnlyAccessesArgumentPointees,
  /* memset */ OnlyAccessesArgumentPointees,
  /* mips_absq_s_ph */ UnknownModRefBehavior,
  /* mips_absq_s_qb */ UnknownModRefBehavior,
  /* mips_absq_s_w */ UnknownModRefBehavior,
  /* mips_add_a_b */ DoesNotAccessMemory,
  /* mips_add_a_d */ DoesNotAccessMemory,
  /* mips_add_a_h */ DoesNotAccessMemory,
  /* mips_add_a_w */ DoesNotAccessMemory,
  /* mips_addq_ph */ DoesNotAccessMemory,
  /* mips_addq_s_ph */ DoesNotAccessMemory,
  /* mips_addq_s_w */ UnknownModRefBehavior,
  /* mips_addqh_ph */ DoesNotAccessMemory,
  /* mips_addqh_r_ph */ DoesNotAccessMemory,
  /* mips_addqh_r_w */ DoesNotAccessMemory,
  /* mips_addqh_w */ DoesNotAccessMemory,
  /* mips_adds_a_b */ DoesNotAccessMemory,
  /* mips_adds_a_d */ DoesNotAccessMemory,
  /* mips_adds_a_h */ DoesNotAccessMemory,
  /* mips_adds_a_w */ DoesNotAccessMemory,
  /* mips_adds_s_b */ DoesNotAccessMemory,
  /* mips_adds_s_d */ DoesNotAccessMemory,
  /* mips_adds_s_h */ DoesNotAccessMemory,
  /* mips_adds_s_w */ DoesNotAccessMemory,
  /* mips_adds_u_b */ DoesNotAccessMemory,
  /* mips_adds_u_d */ DoesNotAccessMemory,
  /* mips_adds_u_h */ DoesNotAccessMemory,
  /* mips_adds_u_w */ DoesNotAccessMemory,
  /* mips_addsc */ UnknownModRefBehavior,
  /* mips_addu_ph */ UnknownModRefBehavior,
  /* mips_addu_qb */ DoesNotAccessMemory,
  /* mips_addu_s_ph */ UnknownModRefBehavior,
  /* mips_addu_s_qb */ DoesNotAccessMemory,
  /* mips_adduh_qb */ DoesNotAccessMemory,
  /* mips_adduh_r_qb */ DoesNotAccessMemory,
  /* mips_addv_b */ DoesNotAccessMemory,
  /* mips_addv_d */ DoesNotAccessMemory,
  /* mips_addv_h */ DoesNotAccessMemory,
  /* mips_addv_w */ DoesNotAccessMemory,
  /* mips_addvi_b */ DoesNotAccessMemory,
  /* mips_addvi_d */ DoesNotAccessMemory,
  /* mips_addvi_h */ DoesNotAccessMemory,
  /* mips_addvi_w */ DoesNotAccessMemory,
  /* mips_addwc */ UnknownModRefBehavior,
  /* mips_and_v */ DoesNotAccessMemory,
  /* mips_andi_b */ DoesNotAccessMemory,
  /* mips_append */ DoesNotAccessMemory,
  /* mips_asub_s_b */ DoesNotAccessMemory,
  /* mips_asub_s_d */ DoesNotAccessMemory,
  /* mips_asub_s_h */ DoesNotAccessMemory,
  /* mips_asub_s_w */ DoesNotAccessMemory,
  /* mips_asub_u_b */ DoesNotAccessMemory,
  /* mips_asub_u_d */ DoesNotAccessMemory,
  /* mips_asub_u_h */ DoesNotAccessMemory,
  /* mips_asub_u_w */ DoesNotAccessMemory,
  /* mips_ave_s_b */ DoesNotAccessMemory,
  /* mips_ave_s_d */ DoesNotAccessMemory,
  /* mips_ave_s_h */ DoesNotAccessMemory,
  /* mips_ave_s_w */ DoesNotAccessMemory,
  /* mips_ave_u_b */ DoesNotAccessMemory,
  /* mips_ave_u_d */ DoesNotAccessMemory,
  /* mips_ave_u_h */ DoesNotAccessMemory,
  /* mips_ave_u_w */ DoesNotAccessMemory,
  /* mips_aver_s_b */ DoesNotAccessMemory,
  /* mips_aver_s_d */ DoesNotAccessMemory,
  /* mips_aver_s_h */ DoesNotAccessMemory,
  /* mips_aver_s_w */ DoesNotAccessMemory,
  /* mips_aver_u_b */ DoesNotAccessMemory,
  /* mips_aver_u_d */ DoesNotAccessMemory,
  /* mips_aver_u_h */ DoesNotAccessMemory,
  /* mips_aver_u_w */ DoesNotAccessMemory,
  /* mips_balign */ DoesNotAccessMemory,
  /* mips_bclr_b */ DoesNotAccessMemory,
  /* mips_bclr_d */ DoesNotAccessMemory,
  /* mips_bclr_h */ DoesNotAccessMemory,
  /* mips_bclr_w */ DoesNotAccessMemory,
  /* mips_bclri_b */ DoesNotAccessMemory,
  /* mips_bclri_d */ DoesNotAccessMemory,
  /* mips_bclri_h */ DoesNotAccessMemory,
  /* mips_bclri_w */ DoesNotAccessMemory,
  /* mips_binsl_b */ DoesNotAccessMemory,
  /* mips_binsl_d */ DoesNotAccessMemory,
  /* mips_binsl_h */ DoesNotAccessMemory,
  /* mips_binsl_w */ DoesNotAccessMemory,
  /* mips_binsli_b */ DoesNotAccessMemory,
  /* mips_binsli_d */ DoesNotAccessMemory,
  /* mips_binsli_h */ DoesNotAccessMemory,
  /* mips_binsli_w */ DoesNotAccessMemory,
  /* mips_binsr_b */ DoesNotAccessMemory,
  /* mips_binsr_d */ DoesNotAccessMemory,
  /* mips_binsr_h */ DoesNotAccessMemory,
  /* mips_binsr_w */ DoesNotAccessMemory,
  /* mips_binsri_b */ DoesNotAccessMemory,
  /* mips_binsri_d */ DoesNotAccessMemory,
  /* mips_binsri_h */ DoesNotAccessMemory,
  /* mips_binsri_w */ DoesNotAccessMemory,
  /* mips_bitrev */ DoesNotAccessMemory,
  /* mips_bmnz_v */ DoesNotAccessMemory,
  /* mips_bmnzi_b */ DoesNotAccessMemory,
  /* mips_bmz_v */ DoesNotAccessMemory,
  /* mips_bmzi_b */ DoesNotAccessMemory,
  /* mips_bneg_b */ DoesNotAccessMemory,
  /* mips_bneg_d */ DoesNotAccessMemory,
  /* mips_bneg_h */ DoesNotAccessMemory,
  /* mips_bneg_w */ DoesNotAccessMemory,
  /* mips_bnegi_b */ DoesNotAccessMemory,
  /* mips_bnegi_d */ DoesNotAccessMemory,
  /* mips_bnegi_h */ DoesNotAccessMemory,
  /* mips_bnegi_w */ DoesNotAccessMemory,
  /* mips_bnz_b */ DoesNotAccessMemory,
  /* mips_bnz_d */ DoesNotAccessMemory,
  /* mips_bnz_h */ DoesNotAccessMemory,
  /* mips_bnz_v */ DoesNotAccessMemory,
  /* mips_bnz_w */ DoesNotAccessMemory,
  /* mips_bposge32 */ OnlyReadsMemory,
  /* mips_bsel_v */ DoesNotAccessMemory,
  /* mips_bseli_b */ DoesNotAccessMemory,
  /* mips_bset_b */ DoesNotAccessMemory,
  /* mips_bset_d */ DoesNotAccessMemory,
  /* mips_bset_h */ DoesNotAccessMemory,
  /* mips_bset_w */ DoesNotAccessMemory,
  /* mips_bseti_b */ DoesNotAccessMemory,
  /* mips_bseti_d */ DoesNotAccessMemory,
  /* mips_bseti_h */ DoesNotAccessMemory,
  /* mips_bseti_w */ DoesNotAccessMemory,
  /* mips_bz_b */ DoesNotAccessMemory,
  /* mips_bz_d */ DoesNotAccessMemory,
  /* mips_bz_h */ DoesNotAccessMemory,
  /* mips_bz_v */ DoesNotAccessMemory,
  /* mips_bz_w */ DoesNotAccessMemory,
  /* mips_ceq_b */ DoesNotAccessMemory,
  /* mips_ceq_d */ DoesNotAccessMemory,
  /* mips_ceq_h */ DoesNotAccessMemory,
  /* mips_ceq_w */ DoesNotAccessMemory,
  /* mips_ceqi_b */ DoesNotAccessMemory,
  /* mips_ceqi_d */ DoesNotAccessMemory,
  /* mips_ceqi_h */ DoesNotAccessMemory,
  /* mips_ceqi_w */ DoesNotAccessMemory,
  /* mips_cfcmsa */ UnknownModRefBehavior,
  /* mips_cle_s_b */ DoesNotAccessMemory,
  /* mips_cle_s_d */ DoesNotAccessMemory,
  /* mips_cle_s_h */ DoesNotAccessMemory,
  /* mips_cle_s_w */ DoesNotAccessMemory,
  /* mips_cle_u_b */ DoesNotAccessMemory,
  /* mips_cle_u_d */ DoesNotAccessMemory,
  /* mips_cle_u_h */ DoesNotAccessMemory,
  /* mips_cle_u_w */ DoesNotAccessMemory,
  /* mips_clei_s_b */ DoesNotAccessMemory,
  /* mips_clei_s_d */ DoesNotAccessMemory,
  /* mips_clei_s_h */ DoesNotAccessMemory,
  /* mips_clei_s_w */ DoesNotAccessMemory,
  /* mips_clei_u_b */ DoesNotAccessMemory,
  /* mips_clei_u_d */ DoesNotAccessMemory,
  /* mips_clei_u_h */ DoesNotAccessMemory,
  /* mips_clei_u_w */ DoesNotAccessMemory,
  /* mips_clt_s_b */ DoesNotAccessMemory,
  /* mips_clt_s_d */ DoesNotAccessMemory,
  /* mips_clt_s_h */ DoesNotAccessMemory,
  /* mips_clt_s_w */ DoesNotAccessMemory,
  /* mips_clt_u_b */ DoesNotAccessMemory,
  /* mips_clt_u_d */ DoesNotAccessMemory,
  /* mips_clt_u_h */ DoesNotAccessMemory,
  /* mips_clt_u_w */ DoesNotAccessMemory,
  /* mips_clti_s_b */ DoesNotAccessMemory,
  /* mips_clti_s_d */ DoesNotAccessMemory,
  /* mips_clti_s_h */ DoesNotAccessMemory,
  /* mips_clti_s_w */ DoesNotAccessMemory,
  /* mips_clti_u_b */ DoesNotAccessMemory,
  /* mips_clti_u_d */ DoesNotAccessMemory,
  /* mips_clti_u_h */ DoesNotAccessMemory,
  /* mips_clti_u_w */ DoesNotAccessMemory,
  /* mips_cmp_eq_ph */ UnknownModRefBehavior,
  /* mips_cmp_le_ph */ UnknownModRefBehavior,
  /* mips_cmp_lt_ph */ UnknownModRefBehavior,
  /* mips_cmpgdu_eq_qb */ UnknownModRefBehavior,
  /* mips_cmpgdu_le_qb */ UnknownModRefBehavior,
  /* mips_cmpgdu_lt_qb */ UnknownModRefBehavior,
  /* mips_cmpgu_eq_qb */ UnknownModRefBehavior,
  /* mips_cmpgu_le_qb */ UnknownModRefBehavior,
  /* mips_cmpgu_lt_qb */ UnknownModRefBehavior,
  /* mips_cmpu_eq_qb */ UnknownModRefBehavior,
  /* mips_cmpu_le_qb */ UnknownModRefBehavior,
  /* mips_cmpu_lt_qb */ UnknownModRefBehavior,
  /* mips_copy_s_b */ DoesNotAccessMemory,
  /* mips_copy_s_d */ DoesNotAccessMemory,
  /* mips_copy_s_h */ DoesNotAccessMemory,
  /* mips_copy_s_w */ DoesNotAccessMemory,
  /* mips_copy_u_b */ DoesNotAccessMemory,
  /* mips_copy_u_d */ DoesNotAccessMemory,
  /* mips_copy_u_h */ DoesNotAccessMemory,
  /* mips_copy_u_w */ DoesNotAccessMemory,
  /* mips_ctcmsa */ UnknownModRefBehavior,
  /* mips_div_s_b */ DoesNotAccessMemory,
  /* mips_div_s_d */ DoesNotAccessMemory,
  /* mips_div_s_h */ DoesNotAccessMemory,
  /* mips_div_s_w */ DoesNotAccessMemory,
  /* mips_div_u_b */ DoesNotAccessMemory,
  /* mips_div_u_d */ DoesNotAccessMemory,
  /* mips_div_u_h */ DoesNotAccessMemory,
  /* mips_div_u_w */ DoesNotAccessMemory,
  /* mips_dlsa */ DoesNotAccessMemory,
  /* mips_dotp_s_d */ DoesNotAccessMemory,
  /* mips_dotp_s_h */ DoesNotAccessMemory,
  /* mips_dotp_s_w */ DoesNotAccessMemory,
  /* mips_dotp_u_d */ DoesNotAccessMemory,
  /* mips_dotp_u_h */ DoesNotAccessMemory,
  /* mips_dotp_u_w */ DoesNotAccessMemory,
  /* mips_dpa_w_ph */ DoesNotAccessMemory,
  /* mips_dpadd_s_d */ DoesNotAccessMemory,
  /* mips_dpadd_s_h */ DoesNotAccessMemory,
  /* mips_dpadd_s_w */ DoesNotAccessMemory,
  /* mips_dpadd_u_d */ DoesNotAccessMemory,
  /* mips_dpadd_u_h */ DoesNotAccessMemory,
  /* mips_dpadd_u_w */ DoesNotAccessMemory,
  /* mips_dpaq_s_w_ph */ UnknownModRefBehavior,
  /* mips_dpaq_sa_l_w */ UnknownModRefBehavior,
  /* mips_dpaqx_s_w_ph */ UnknownModRefBehavior,
  /* mips_dpaqx_sa_w_ph */ UnknownModRefBehavior,
  /* mips_dpau_h_qbl */ DoesNotAccessMemory,
  /* mips_dpau_h_qbr */ DoesNotAccessMemory,
  /* mips_dpax_w_ph */ DoesNotAccessMemory,
  /* mips_dps_w_ph */ DoesNotAccessMemory,
  /* mips_dpsq_s_w_ph */ UnknownModRefBehavior,
  /* mips_dpsq_sa_l_w */ UnknownModRefBehavior,
  /* mips_dpsqx_s_w_ph */ UnknownModRefBehavior,
  /* mips_dpsqx_sa_w_ph */ UnknownModRefBehavior,
  /* mips_dpsu_h_qbl */ DoesNotAccessMemory,
  /* mips_dpsu_h_qbr */ DoesNotAccessMemory,
  /* mips_dpsub_s_d */ DoesNotAccessMemory,
  /* mips_dpsub_s_h */ DoesNotAccessMemory,
  /* mips_dpsub_s_w */ DoesNotAccessMemory,
  /* mips_dpsub_u_d */ DoesNotAccessMemory,
  /* mips_dpsub_u_h */ DoesNotAccessMemory,
  /* mips_dpsub_u_w */ DoesNotAccessMemory,
  /* mips_dpsx_w_ph */ DoesNotAccessMemory,
  /* mips_extp */ UnknownModRefBehavior,
  /* mips_extpdp */ UnknownModRefBehavior,
  /* mips_extr_r_w */ UnknownModRefBehavior,
  /* mips_extr_rs_w */ UnknownModRefBehavior,
  /* mips_extr_s_h */ UnknownModRefBehavior,
  /* mips_extr_w */ UnknownModRefBehavior,
  /* mips_fadd_d */ DoesNotAccessMemory,
  /* mips_fadd_w */ DoesNotAccessMemory,
  /* mips_fcaf_d */ DoesNotAccessMemory,
  /* mips_fcaf_w */ DoesNotAccessMemory,
  /* mips_fceq_d */ DoesNotAccessMemory,
  /* mips_fceq_w */ DoesNotAccessMemory,
  /* mips_fclass_d */ DoesNotAccessMemory,
  /* mips_fclass_w */ DoesNotAccessMemory,
  /* mips_fcle_d */ DoesNotAccessMemory,
  /* mips_fcle_w */ DoesNotAccessMemory,
  /* mips_fclt_d */ DoesNotAccessMemory,
  /* mips_fclt_w */ DoesNotAccessMemory,
  /* mips_fcne_d */ DoesNotAccessMemory,
  /* mips_fcne_w */ DoesNotAccessMemory,
  /* mips_fcor_d */ DoesNotAccessMemory,
  /* mips_fcor_w */ DoesNotAccessMemory,
  /* mips_fcueq_d */ DoesNotAccessMemory,
  /* mips_fcueq_w */ DoesNotAccessMemory,
  /* mips_fcule_d */ DoesNotAccessMemory,
  /* mips_fcule_w */ DoesNotAccessMemory,
  /* mips_fcult_d */ DoesNotAccessMemory,
  /* mips_fcult_w */ DoesNotAccessMemory,
  /* mips_fcun_d */ DoesNotAccessMemory,
  /* mips_fcun_w */ DoesNotAccessMemory,
  /* mips_fcune_d */ DoesNotAccessMemory,
  /* mips_fcune_w */ DoesNotAccessMemory,
  /* mips_fdiv_d */ DoesNotAccessMemory,
  /* mips_fdiv_w */ DoesNotAccessMemory,
  /* mips_fexdo_h */ DoesNotAccessMemory,
  /* mips_fexdo_w */ DoesNotAccessMemory,
  /* mips_fexp2_d */ DoesNotAccessMemory,
  /* mips_fexp2_w */ DoesNotAccessMemory,
  /* mips_fexupl_d */ DoesNotAccessMemory,
  /* mips_fexupl_w */ DoesNotAccessMemory,
  /* mips_fexupr_d */ DoesNotAccessMemory,
  /* mips_fexupr_w */ DoesNotAccessMemory,
  /* mips_ffint_s_d */ DoesNotAccessMemory,
  /* mips_ffint_s_w */ DoesNotAccessMemory,
  /* mips_ffint_u_d */ DoesNotAccessMemory,
  /* mips_ffint_u_w */ DoesNotAccessMemory,
  /* mips_ffql_d */ DoesNotAccessMemory,
  /* mips_ffql_w */ DoesNotAccessMemory,
  /* mips_ffqr_d */ DoesNotAccessMemory,
  /* mips_ffqr_w */ DoesNotAccessMemory,
  /* mips_fill_b */ DoesNotAccessMemory,
  /* mips_fill_d */ DoesNotAccessMemory,
  /* mips_fill_h */ DoesNotAccessMemory,
  /* mips_fill_w */ DoesNotAccessMemory,
  /* mips_flog2_d */ DoesNotAccessMemory,
  /* mips_flog2_w */ DoesNotAccessMemory,
  /* mips_fmadd_d */ DoesNotAccessMemory,
  /* mips_fmadd_w */ DoesNotAccessMemory,
  /* mips_fmax_a_d */ DoesNotAccessMemory,
  /* mips_fmax_a_w */ DoesNotAccessMemory,
  /* mips_fmax_d */ DoesNotAccessMemory,
  /* mips_fmax_w */ DoesNotAccessMemory,
  /* mips_fmin_a_d */ DoesNotAccessMemory,
  /* mips_fmin_a_w */ DoesNotAccessMemory,
  /* mips_fmin_d */ DoesNotAccessMemory,
  /* mips_fmin_w */ DoesNotAccessMemory,
  /* mips_fmsub_d */ DoesNotAccessMemory,
  /* mips_fmsub_w */ DoesNotAccessMemory,
  /* mips_fmul_d */ DoesNotAccessMemory,
  /* mips_fmul_w */ DoesNotAccessMemory,
  /* mips_frcp_d */ DoesNotAccessMemory,
  /* mips_frcp_w */ DoesNotAccessMemory,
  /* mips_frint_d */ DoesNotAccessMemory,
  /* mips_frint_w */ DoesNotAccessMemory,
  /* mips_frsqrt_d */ DoesNotAccessMemory,
  /* mips_frsqrt_w */ DoesNotAccessMemory,
  /* mips_fsaf_d */ DoesNotAccessMemory,
  /* mips_fsaf_w */ DoesNotAccessMemory,
  /* mips_fseq_d */ DoesNotAccessMemory,
  /* mips_fseq_w */ DoesNotAccessMemory,
  /* mips_fsle_d */ DoesNotAccessMemory,
  /* mips_fsle_w */ DoesNotAccessMemory,
  /* mips_fslt_d */ DoesNotAccessMemory,
  /* mips_fslt_w */ DoesNotAccessMemory,
  /* mips_fsne_d */ DoesNotAccessMemory,
  /* mips_fsne_w */ DoesNotAccessMemory,
  /* mips_fsor_d */ DoesNotAccessMemory,
  /* mips_fsor_w */ DoesNotAccessMemory,
  /* mips_fsqrt_d */ DoesNotAccessMemory,
  /* mips_fsqrt_w */ DoesNotAccessMemory,
  /* mips_fsub_d */ DoesNotAccessMemory,
  /* mips_fsub_w */ DoesNotAccessMemory,
  /* mips_fsueq_d */ DoesNotAccessMemory,
  /* mips_fsueq_w */ DoesNotAccessMemory,
  /* mips_fsule_d */ DoesNotAccessMemory,
  /* mips_fsule_w */ DoesNotAccessMemory,
  /* mips_fsult_d */ DoesNotAccessMemory,
  /* mips_fsult_w */ DoesNotAccessMemory,
  /* mips_fsun_d */ DoesNotAccessMemory,
  /* mips_fsun_w */ DoesNotAccessMemory,
  /* mips_fsune_d */ DoesNotAccessMemory,
  /* mips_fsune_w */ DoesNotAccessMemory,
  /* mips_ftint_s_d */ DoesNotAccessMemory,
  /* mips_ftint_s_w */ DoesNotAccessMemory,
  /* mips_ftint_u_d */ DoesNotAccessMemory,
  /* mips_ftint_u_w */ DoesNotAccessMemory,
  /* mips_ftq_h */ DoesNotAccessMemory,
  /* mips_ftq_w */ DoesNotAccessMemory,
  /* mips_ftrunc_s_d */ DoesNotAccessMemory,
  /* mips_ftrunc_s_w */ DoesNotAccessMemory,
  /* mips_ftrunc_u_d */ DoesNotAccessMemory,
  /* mips_ftrunc_u_w */ DoesNotAccessMemory,
  /* mips_hadd_s_d */ DoesNotAccessMemory,
  /* mips_hadd_s_h */ DoesNotAccessMemory,
  /* mips_hadd_s_w */ DoesNotAccessMemory,
  /* mips_hadd_u_d */ DoesNotAccessMemory,
  /* mips_hadd_u_h */ DoesNotAccessMemory,
  /* mips_hadd_u_w */ DoesNotAccessMemory,
  /* mips_hsub_s_d */ DoesNotAccessMemory,
  /* mips_hsub_s_h */ DoesNotAccessMemory,
  /* mips_hsub_s_w */ DoesNotAccessMemory,
  /* mips_hsub_u_d */ DoesNotAccessMemory,
  /* mips_hsub_u_h */ DoesNotAccessMemory,
  /* mips_hsub_u_w */ DoesNotAccessMemory,
  /* mips_ilvev_b */ DoesNotAccessMemory,
  /* mips_ilvev_d */ DoesNotAccessMemory,
  /* mips_ilvev_h */ DoesNotAccessMemory,
  /* mips_ilvev_w */ DoesNotAccessMemory,
  /* mips_ilvl_b */ DoesNotAccessMemory,
  /* mips_ilvl_d */ DoesNotAccessMemory,
  /* mips_ilvl_h */ DoesNotAccessMemory,
  /* mips_ilvl_w */ DoesNotAccessMemory,
  /* mips_ilvod_b */ DoesNotAccessMemory,
  /* mips_ilvod_d */ DoesNotAccessMemory,
  /* mips_ilvod_h */ DoesNotAccessMemory,
  /* mips_ilvod_w */ DoesNotAccessMemory,
  /* mips_ilvr_b */ DoesNotAccessMemory,
  /* mips_ilvr_d */ DoesNotAccessMemory,
  /* mips_ilvr_h */ DoesNotAccessMemory,
  /* mips_ilvr_w */ DoesNotAccessMemory,
  /* mips_insert_b */ DoesNotAccessMemory,
  /* mips_insert_d */ DoesNotAccessMemory,
  /* mips_insert_h */ DoesNotAccessMemory,
  /* mips_insert_w */ DoesNotAccessMemory,
  /* mips_insv */ OnlyReadsMemory,
  /* mips_insve_b */ DoesNotAccessMemory,
  /* mips_insve_d */ DoesNotAccessMemory,
  /* mips_insve_h */ DoesNotAccessMemory,
  /* mips_insve_w */ DoesNotAccessMemory,
  /* mips_lbux */ OnlyReadsArgumentPointees,
  /* mips_ld_b */ OnlyReadsArgumentPointees,
  /* mips_ld_d */ OnlyReadsArgumentPointees,
  /* mips_ld_h */ OnlyReadsArgumentPointees,
  /* mips_ld_w */ OnlyReadsArgumentPointees,
  /* mips_ldi_b */ DoesNotAccessMemory,
  /* mips_ldi_d */ DoesNotAccessMemory,
  /* mips_ldi_h */ DoesNotAccessMemory,
  /* mips_ldi_w */ DoesNotAccessMemory,
  /* mips_lhx */ OnlyReadsArgumentPointees,
  /* mips_lsa */ DoesNotAccessMemory,
  /* mips_lwx */ OnlyReadsArgumentPointees,
  /* mips_madd */ DoesNotAccessMemory,
  /* mips_madd_q_h */ DoesNotAccessMemory,
  /* mips_madd_q_w */ DoesNotAccessMemory,
  /* mips_maddr_q_h */ DoesNotAccessMemory,
  /* mips_maddr_q_w */ DoesNotAccessMemory,
  /* mips_maddu */ DoesNotAccessMemory,
  /* mips_maddv_b */ DoesNotAccessMemory,
  /* mips_maddv_d */ DoesNotAccessMemory,
  /* mips_maddv_h */ DoesNotAccessMemory,
  /* mips_maddv_w */ DoesNotAccessMemory,
  /* mips_maq_s_w_phl */ UnknownModRefBehavior,
  /* mips_maq_s_w_phr */ UnknownModRefBehavior,
  /* mips_maq_sa_w_phl */ UnknownModRefBehavior,
  /* mips_maq_sa_w_phr */ UnknownModRefBehavior,
  /* mips_max_a_b */ DoesNotAccessMemory,
  /* mips_max_a_d */ DoesNotAccessMemory,
  /* mips_max_a_h */ DoesNotAccessMemory,
  /* mips_max_a_w */ DoesNotAccessMemory,
  /* mips_max_s_b */ DoesNotAccessMemory,
  /* mips_max_s_d */ DoesNotAccessMemory,
  /* mips_max_s_h */ DoesNotAccessMemory,
  /* mips_max_s_w */ DoesNotAccessMemory,
  /* mips_max_u_b */ DoesNotAccessMemory,
  /* mips_max_u_d */ DoesNotAccessMemory,
  /* mips_max_u_h */ DoesNotAccessMemory,
  /* mips_max_u_w */ DoesNotAccessMemory,
  /* mips_maxi_s_b */ DoesNotAccessMemory,
  /* mips_maxi_s_d */ DoesNotAccessMemory,
  /* mips_maxi_s_h */ DoesNotAccessMemory,
  /* mips_maxi_s_w */ DoesNotAccessMemory,
  /* mips_maxi_u_b */ DoesNotAccessMemory,
  /* mips_maxi_u_d */ DoesNotAccessMemory,
  /* mips_maxi_u_h */ DoesNotAccessMemory,
  /* mips_maxi_u_w */ DoesNotAccessMemory,
  /* mips_min_a_b */ DoesNotAccessMemory,
  /* mips_min_a_d */ DoesNotAccessMemory,
  /* mips_min_a_h */ DoesNotAccessMemory,
  /* mips_min_a_w */ DoesNotAccessMemory,
  /* mips_min_s_b */ DoesNotAccessMemory,
  /* mips_min_s_d */ DoesNotAccessMemory,
  /* mips_min_s_h */ DoesNotAccessMemory,
  /* mips_min_s_w */ DoesNotAccessMemory,
  /* mips_min_u_b */ DoesNotAccessMemory,
  /* mips_min_u_d */ DoesNotAccessMemory,
  /* mips_min_u_h */ DoesNotAccessMemory,
  /* mips_min_u_w */ DoesNotAccessMemory,
  /* mips_mini_s_b */ DoesNotAccessMemory,
  /* mips_mini_s_d */ DoesNotAccessMemory,
  /* mips_mini_s_h */ DoesNotAccessMemory,
  /* mips_mini_s_w */ DoesNotAccessMemory,
  /* mips_mini_u_b */ DoesNotAccessMemory,
  /* mips_mini_u_d */ DoesNotAccessMemory,
  /* mips_mini_u_h */ DoesNotAccessMemory,
  /* mips_mini_u_w */ DoesNotAccessMemory,
  /* mips_mod_s_b */ DoesNotAccessMemory,
  /* mips_mod_s_d */ DoesNotAccessMemory,
  /* mips_mod_s_h */ DoesNotAccessMemory,
  /* mips_mod_s_w */ DoesNotAccessMemory,
  /* mips_mod_u_b */ DoesNotAccessMemory,
  /* mips_mod_u_d */ DoesNotAccessMemory,
  /* mips_mod_u_h */ DoesNotAccessMemory,
  /* mips_mod_u_w */ DoesNotAccessMemory,
  /* mips_modsub */ DoesNotAccessMemory,
  /* mips_move_v */ DoesNotAccessMemory,
  /* mips_msub */ DoesNotAccessMemory,
  /* mips_msub_q_h */ DoesNotAccessMemory,
  /* mips_msub_q_w */ DoesNotAccessMemory,
  /* mips_msubr_q_h */ DoesNotAccessMemory,
  /* mips_msubr_q_w */ DoesNotAccessMemory,
  /* mips_msubu */ DoesNotAccessMemory,
  /* mips_msubv_b */ DoesNotAccessMemory,
  /* mips_msubv_d */ DoesNotAccessMemory,
  /* mips_msubv_h */ DoesNotAccessMemory,
  /* mips_msubv_w */ DoesNotAccessMemory,
  /* mips_mthlip */ UnknownModRefBehavior,
  /* mips_mul_ph */ UnknownModRefBehavior,
  /* mips_mul_q_h */ DoesNotAccessMemory,
  /* mips_mul_q_w */ DoesNotAccessMemory,
  /* mips_mul_s_ph */ UnknownModRefBehavior,
  /* mips_muleq_s_w_phl */ UnknownModRefBehavior,
  /* mips_muleq_s_w_phr */ UnknownModRefBehavior,
  /* mips_muleu_s_ph_qbl */ UnknownModRefBehavior,
  /* mips_muleu_s_ph_qbr */ UnknownModRefBehavior,
  /* mips_mulq_rs_ph */ UnknownModRefBehavior,
  /* mips_mulq_rs_w */ UnknownModRefBehavior,
  /* mips_mulq_s_ph */ UnknownModRefBehavior,
  /* mips_mulq_s_w */ UnknownModRefBehavior,
  /* mips_mulr_q_h */ DoesNotAccessMemory,
  /* mips_mulr_q_w */ DoesNotAccessMemory,
  /* mips_mulsa_w_ph */ DoesNotAccessMemory,
  /* mips_mulsaq_s_w_ph */ UnknownModRefBehavior,
  /* mips_mult */ DoesNotAccessMemory,
  /* mips_multu */ DoesNotAccessMemory,
  /* mips_mulv_b */ DoesNotAccessMemory,
  /* mips_mulv_d */ DoesNotAccessMemory,
  /* mips_mulv_h */ DoesNotAccessMemory,
  /* mips_mulv_w */ DoesNotAccessMemory,
  /* mips_nloc_b */ DoesNotAccessMemory,
  /* mips_nloc_d */ DoesNotAccessMemory,
  /* mips_nloc_h */ DoesNotAccessMemory,
  /* mips_nloc_w */ DoesNotAccessMemory,
  /* mips_nlzc_b */ DoesNotAccessMemory,
  /* mips_nlzc_d */ DoesNotAccessMemory,
  /* mips_nlzc_h */ DoesNotAccessMemory,
  /* mips_nlzc_w */ DoesNotAccessMemory,
  /* mips_nor_v */ DoesNotAccessMemory,
  /* mips_nori_b */ DoesNotAccessMemory,
  /* mips_or_v */ DoesNotAccessMemory,
  /* mips_ori_b */ DoesNotAccessMemory,
  /* mips_packrl_ph */ DoesNotAccessMemory,
  /* mips_pckev_b */ DoesNotAccessMemory,
  /* mips_pckev_d */ DoesNotAccessMemory,
  /* mips_pckev_h */ DoesNotAccessMemory,
  /* mips_pckev_w */ DoesNotAccessMemory,
  /* mips_pckod_b */ DoesNotAccessMemory,
  /* mips_pckod_d */ DoesNotAccessMemory,
  /* mips_pckod_h */ DoesNotAccessMemory,
  /* mips_pckod_w */ DoesNotAccessMemory,
  /* mips_pcnt_b */ DoesNotAccessMemory,
  /* mips_pcnt_d */ DoesNotAccessMemory,
  /* mips_pcnt_h */ DoesNotAccessMemory,
  /* mips_pcnt_w */ DoesNotAccessMemory,
  /* mips_pick_ph */ OnlyReadsMemory,
  /* mips_pick_qb */ OnlyReadsMemory,
  /* mips_preceq_w_phl */ DoesNotAccessMemory,
  /* mips_preceq_w_phr */ DoesNotAccessMemory,
  /* mips_precequ_ph_qbl */ DoesNotAccessMemory,
  /* mips_precequ_ph_qbla */ DoesNotAccessMemory,
  /* mips_precequ_ph_qbr */ DoesNotAccessMemory,
  /* mips_precequ_ph_qbra */ DoesNotAccessMemory,
  /* mips_preceu_ph_qbl */ DoesNotAccessMemory,
  /* mips_preceu_ph_qbla */ DoesNotAccessMemory,
  /* mips_preceu_ph_qbr */ DoesNotAccessMemory,
  /* mips_preceu_ph_qbra */ DoesNotAccessMemory,
  /* mips_precr_qb_ph */ UnknownModRefBehavior,
  /* mips_precr_sra_ph_w */ DoesNotAccessMemory,
  /* mips_precr_sra_r_ph_w */ DoesNotAccessMemory,
  /* mips_precrq_ph_w */ DoesNotAccessMemory,
  /* mips_precrq_qb_ph */ DoesNotAccessMemory,
  /* mips_precrq_rs_ph_w */ UnknownModRefBehavior,
  /* mips_precrqu_s_qb_ph */ UnknownModRefBehavior,
  /* mips_prepend */ DoesNotAccessMemory,
  /* mips_raddu_w_qb */ DoesNotAccessMemory,
  /* mips_rddsp */ OnlyReadsMemory,
  /* mips_repl_ph */ DoesNotAccessMemory,
  /* mips_repl_qb */ DoesNotAccessMemory,
  /* mips_sat_s_b */ DoesNotAccessMemory,
  /* mips_sat_s_d */ DoesNotAccessMemory,
  /* mips_sat_s_h */ DoesNotAccessMemory,
  /* mips_sat_s_w */ DoesNotAccessMemory,
  /* mips_sat_u_b */ DoesNotAccessMemory,
  /* mips_sat_u_d */ DoesNotAccessMemory,
  /* mips_sat_u_h */ DoesNotAccessMemory,
  /* mips_sat_u_w */ DoesNotAccessMemory,
  /* mips_shf_b */ DoesNotAccessMemory,
  /* mips_shf_h */ DoesNotAccessMemory,
  /* mips_shf_w */ DoesNotAccessMemory,
  /* mips_shilo */ DoesNotAccessMemory,
  /* mips_shll_ph */ UnknownModRefBehavior,
  /* mips_shll_qb */ UnknownModRefBehavior,
  /* mips_shll_s_ph */ UnknownModRefBehavior,
  /* mips_shll_s_w */ UnknownModRefBehavior,
  /* mips_shra_ph */ DoesNotAccessMemory,
  /* mips_shra_qb */ DoesNotAccessMemory,
  /* mips_shra_r_ph */ DoesNotAccessMemory,
  /* mips_shra_r_qb */ DoesNotAccessMemory,
  /* mips_shra_r_w */ DoesNotAccessMemory,
  /* mips_shrl_ph */ DoesNotAccessMemory,
  /* mips_shrl_qb */ DoesNotAccessMemory,
  /* mips_sld_b */ DoesNotAccessMemory,
  /* mips_sld_d */ DoesNotAccessMemory,
  /* mips_sld_h */ DoesNotAccessMemory,
  /* mips_sld_w */ DoesNotAccessMemory,
  /* mips_sldi_b */ DoesNotAccessMemory,
  /* mips_sldi_d */ DoesNotAccessMemory,
  /* mips_sldi_h */ DoesNotAccessMemory,
  /* mips_sldi_w */ DoesNotAccessMemory,
  /* mips_sll_b */ DoesNotAccessMemory,
  /* mips_sll_d */ DoesNotAccessMemory,
  /* mips_sll_h */ DoesNotAccessMemory,
  /* mips_sll_w */ DoesNotAccessMemory,
  /* mips_slli_b */ DoesNotAccessMemory,
  /* mips_slli_d */ DoesNotAccessMemory,
  /* mips_slli_h */ DoesNotAccessMemory,
  /* mips_slli_w */ DoesNotAccessMemory,
  /* mips_splat_b */ DoesNotAccessMemory,
  /* mips_splat_d */ DoesNotAccessMemory,
  /* mips_splat_h */ DoesNotAccessMemory,
  /* mips_splat_w */ DoesNotAccessMemory,
  /* mips_splati_b */ DoesNotAccessMemory,
  /* mips_splati_d */ DoesNotAccessMemory,
  /* mips_splati_h */ DoesNotAccessMemory,
  /* mips_splati_w */ DoesNotAccessMemory,
  /* mips_sra_b */ DoesNotAccessMemory,
  /* mips_sra_d */ DoesNotAccessMemory,
  /* mips_sra_h */ DoesNotAccessMemory,
  /* mips_sra_w */ DoesNotAccessMemory,
  /* mips_srai_b */ DoesNotAccessMemory,
  /* mips_srai_d */ DoesNotAccessMemory,
  /* mips_srai_h */ DoesNotAccessMemory,
  /* mips_srai_w */ DoesNotAccessMemory,
  /* mips_srar_b */ DoesNotAccessMemory,
  /* mips_srar_d */ DoesNotAccessMemory,
  /* mips_srar_h */ DoesNotAccessMemory,
  /* mips_srar_w */ DoesNotAccessMemory,
  /* mips_srari_b */ DoesNotAccessMemory,
  /* mips_srari_d */ DoesNotAccessMemory,
  /* mips_srari_h */ DoesNotAccessMemory,
  /* mips_srari_w */ DoesNotAccessMemory,
  /* mips_srl_b */ DoesNotAccessMemory,
  /* mips_srl_d */ DoesNotAccessMemory,
  /* mips_srl_h */ DoesNotAccessMemory,
  /* mips_srl_w */ DoesNotAccessMemory,
  /* mips_srli_b */ DoesNotAccessMemory,
  /* mips_srli_d */ DoesNotAccessMemory,
  /* mips_srli_h */ DoesNotAccessMemory,
  /* mips_srli_w */ DoesNotAccessMemory,
  /* mips_srlr_b */ DoesNotAccessMemory,
  /* mips_srlr_d */ DoesNotAccessMemory,
  /* mips_srlr_h */ DoesNotAccessMemory,
  /* mips_srlr_w */ DoesNotAccessMemory,
  /* mips_srlri_b */ DoesNotAccessMemory,
  /* mips_srlri_d */ DoesNotAccessMemory,
  /* mips_srlri_h */ DoesNotAccessMemory,
  /* mips_srlri_w */ DoesNotAccessMemory,
  /* mips_st_b */ OnlyAccessesArgumentPointees,
  /* mips_st_d */ OnlyAccessesArgumentPointees,
  /* mips_st_h */ OnlyAccessesArgumentPointees,
  /* mips_st_w */ OnlyAccessesArgumentPointees,
  /* mips_subq_ph */ DoesNotAccessMemory,
  /* mips_subq_s_ph */ DoesNotAccessMemory,
  /* mips_subq_s_w */ UnknownModRefBehavior,
  /* mips_subqh_ph */ DoesNotAccessMemory,
  /* mips_subqh_r_ph */ DoesNotAccessMemory,
  /* mips_subqh_r_w */ DoesNotAccessMemory,
  /* mips_subqh_w */ DoesNotAccessMemory,
  /* mips_subs_s_b */ DoesNotAccessMemory,
  /* mips_subs_s_d */ DoesNotAccessMemory,
  /* mips_subs_s_h */ DoesNotAccessMemory,
  /* mips_subs_s_w */ DoesNotAccessMemory,
  /* mips_subs_u_b */ DoesNotAccessMemory,
  /* mips_subs_u_d */ DoesNotAccessMemory,
  /* mips_subs_u_h */ DoesNotAccessMemory,
  /* mips_subs_u_w */ DoesNotAccessMemory,
  /* mips_subsus_u_b */ DoesNotAccessMemory,
  /* mips_subsus_u_d */ DoesNotAccessMemory,
  /* mips_subsus_u_h */ DoesNotAccessMemory,
  /* mips_subsus_u_w */ DoesNotAccessMemory,
  /* mips_subsuu_s_b */ DoesNotAccessMemory,
  /* mips_subsuu_s_d */ DoesNotAccessMemory,
  /* mips_subsuu_s_h */ DoesNotAccessMemory,
  /* mips_subsuu_s_w */ DoesNotAccessMemory,
  /* mips_subu_ph */ UnknownModRefBehavior,
  /* mips_subu_qb */ DoesNotAccessMemory,
  /* mips_subu_s_ph */ UnknownModRefBehavior,
  /* mips_subu_s_qb */ DoesNotAccessMemory,
  /* mips_subuh_qb */ DoesNotAccessMemory,
  /* mips_subuh_r_qb */ DoesNotAccessMemory,
  /* mips_subv_b */ DoesNotAccessMemory,
  /* mips_subv_d */ DoesNotAccessMemory,
  /* mips_subv_h */ DoesNotAccessMemory,
  /* mips_subv_w */ DoesNotAccessMemory,
  /* mips_subvi_b */ DoesNotAccessMemory,
  /* mips_subvi_d */ DoesNotAccessMemory,
  /* mips_subvi_h */ DoesNotAccessMemory,
  /* mips_subvi_w */ DoesNotAccessMemory,
  /* mips_vshf_b */ DoesNotAccessMemory,
  /* mips_vshf_d */ DoesNotAccessMemory,
  /* mips_vshf_h */ DoesNotAccessMemory,
  /* mips_vshf_w */ DoesNotAccessMemory,
  /* mips_wrdsp */ UnknownModRefBehavior,
  /* mips_xor_v */ DoesNotAccessMemory,
  /* mips_xori_b */ DoesNotAccessMemory,
  /* nearbyint */ DoesNotAccessMemory,
  /* nvvm_abs_i */ DoesNotAccessMemory,
  /* nvvm_abs_ll */ DoesNotAccessMemory,
  /* nvvm_add_rm_d */ DoesNotAccessMemory,
  /* nvvm_add_rm_f */ DoesNotAccessMemory,
  /* nvvm_add_rm_ftz_f */ DoesNotAccessMemory,
  /* nvvm_add_rn_d */ DoesNotAccessMemory,
  /* nvvm_add_rn_f */ DoesNotAccessMemory,
  /* nvvm_add_rn_ftz_f */ DoesNotAccessMemory,
  /* nvvm_add_rp_d */ DoesNotAccessMemory,
  /* nvvm_add_rp_f */ DoesNotAccessMemory,
  /* nvvm_add_rp_ftz_f */ DoesNotAccessMemory,
  /* nvvm_add_rz_d */ DoesNotAccessMemory,
  /* nvvm_add_rz_f */ DoesNotAccessMemory,
  /* nvvm_add_rz_ftz_f */ DoesNotAccessMemory,
  /* nvvm_atomic_load_add_f32 */ OnlyAccessesArgumentPointees,
  /* nvvm_atomic_load_dec_32 */ OnlyAccessesArgumentPointees,
  /* nvvm_atomic_load_inc_32 */ OnlyAccessesArgumentPointees,
  /* nvvm_barrier0 */ UnknownModRefBehavior,
  /* nvvm_barrier0_and */ UnknownModRefBehavior,
  /* nvvm_barrier0_or */ UnknownModRefBehavior,
  /* nvvm_barrier0_popc */ UnknownModRefBehavior,
  /* nvvm_bitcast_d2ll */ DoesNotAccessMemory,
  /* nvvm_bitcast_f2i */ DoesNotAccessMemory,
  /* nvvm_bitcast_i2f */ DoesNotAccessMemory,
  /* nvvm_bitcast_ll2d */ DoesNotAccessMemory,
  /* nvvm_brev32 */ DoesNotAccessMemory,
  /* nvvm_brev64 */ DoesNotAccessMemory,
  /* nvvm_ceil_d */ DoesNotAccessMemory,
  /* nvvm_ceil_f */ DoesNotAccessMemory,
  /* nvvm_ceil_ftz_f */ DoesNotAccessMemory,
  /* nvvm_clz_i */ DoesNotAccessMemory,
  /* nvvm_clz_ll */ DoesNotAccessMemory,
  /* nvvm_compiler_error */ UnknownModRefBehavior,
  /* nvvm_compiler_warn */ UnknownModRefBehavior,
  /* nvvm_cos_approx_f */ DoesNotAccessMemory,
  /* nvvm_cos_approx_ftz_f */ DoesNotAccessMemory,
  /* nvvm_d2f_rm */ DoesNotAccessMemory,
  /* nvvm_d2f_rm_ftz */ DoesNotAccessMemory,
  /* nvvm_d2f_rn */ DoesNotAccessMemory,
  /* nvvm_d2f_rn_ftz */ DoesNotAccessMemory,
  /* nvvm_d2f_rp */ DoesNotAccessMemory,
  /* nvvm_d2f_rp_ftz */ DoesNotAccessMemory,
  /* nvvm_d2f_rz */ DoesNotAccessMemory,
  /* nvvm_d2f_rz_ftz */ DoesNotAccessMemory,
  /* nvvm_d2i_hi */ DoesNotAccessMemory,
  /* nvvm_d2i_lo */ DoesNotAccessMemory,
  /* nvvm_d2i_rm */ DoesNotAccessMemory,
  /* nvvm_d2i_rn */ DoesNotAccessMemory,
  /* nvvm_d2i_rp */ DoesNotAccessMemory,
  /* nvvm_d2i_rz */ DoesNotAccessMemory,
  /* nvvm_d2ll_rm */ DoesNotAccessMemory,
  /* nvvm_d2ll_rn */ DoesNotAccessMemory,
  /* nvvm_d2ll_rp */ DoesNotAccessMemory,
  /* nvvm_d2ll_rz */ DoesNotAccessMemory,
  /* nvvm_d2ui_rm */ DoesNotAccessMemory,
  /* nvvm_d2ui_rn */ DoesNotAccessMemory,
  /* nvvm_d2ui_rp */ DoesNotAccessMemory,
  /* nvvm_d2ui_rz */ DoesNotAccessMemory,
  /* nvvm_d2ull_rm */ DoesNotAccessMemory,
  /* nvvm_d2ull_rn */ DoesNotAccessMemory,
  /* nvvm_d2ull_rp */ DoesNotAccessMemory,
  /* nvvm_d2ull_rz */ DoesNotAccessMemory,
  /* nvvm_div_approx_f */ DoesNotAccessMemory,
  /* nvvm_div_approx_ftz_f */ DoesNotAccessMemory,
  /* nvvm_div_rm_d */ DoesNotAccessMemory,
  /* nvvm_div_rm_f */ DoesNotAccessMemory,
  /* nvvm_div_rm_ftz_f */ DoesNotAccessMemory,
  /* nvvm_div_rn_d */ DoesNotAccessMemory,
  /* nvvm_div_rn_f */ DoesNotAccessMemory,
  /* nvvm_div_rn_ftz_f */ DoesNotAccessMemory,
  /* nvvm_div_rp_d */ DoesNotAccessMemory,
  /* nvvm_div_rp_f */ DoesNotAccessMemory,
  /* nvvm_div_rp_ftz_f */ DoesNotAccessMemory,
  /* nvvm_div_rz_d */ DoesNotAccessMemory,
  /* nvvm_div_rz_f */ DoesNotAccessMemory,
  /* nvvm_div_rz_ftz_f */ DoesNotAccessMemory,
  /* nvvm_ex2_approx_d */ DoesNotAccessMemory,
  /* nvvm_ex2_approx_f */ DoesNotAccessMemory,
  /* nvvm_ex2_approx_ftz_f */ DoesNotAccessMemory,
  /* nvvm_f2h_rn */ DoesNotAccessMemory,
  /* nvvm_f2h_rn_ftz */ DoesNotAccessMemory,
  /* nvvm_f2i_rm */ DoesNotAccessMemory,
  /* nvvm_f2i_rm_ftz */ DoesNotAccessMemory,
  /* nvvm_f2i_rn */ DoesNotAccessMemory,
  /* nvvm_f2i_rn_ftz */ DoesNotAccessMemory,
  /* nvvm_f2i_rp */ DoesNotAccessMemory,
  /* nvvm_f2i_rp_ftz */ DoesNotAccessMemory,
  /* nvvm_f2i_rz */ DoesNotAccessMemory,
  /* nvvm_f2i_rz_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ll_rm */ DoesNotAccessMemory,
  /* nvvm_f2ll_rm_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ll_rn */ DoesNotAccessMemory,
  /* nvvm_f2ll_rn_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ll_rp */ DoesNotAccessMemory,
  /* nvvm_f2ll_rp_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ll_rz */ DoesNotAccessMemory,
  /* nvvm_f2ll_rz_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ui_rm */ DoesNotAccessMemory,
  /* nvvm_f2ui_rm_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ui_rn */ DoesNotAccessMemory,
  /* nvvm_f2ui_rn_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ui_rp */ DoesNotAccessMemory,
  /* nvvm_f2ui_rp_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ui_rz */ DoesNotAccessMemory,
  /* nvvm_f2ui_rz_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ull_rm */ DoesNotAccessMemory,
  /* nvvm_f2ull_rm_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ull_rn */ DoesNotAccessMemory,
  /* nvvm_f2ull_rn_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ull_rp */ DoesNotAccessMemory,
  /* nvvm_f2ull_rp_ftz */ DoesNotAccessMemory,
  /* nvvm_f2ull_rz */ DoesNotAccessMemory,
  /* nvvm_f2ull_rz_ftz */ DoesNotAccessMemory,
  /* nvvm_fabs_d */ DoesNotAccessMemory,
  /* nvvm_fabs_f */ DoesNotAccessMemory,
  /* nvvm_fabs_ftz_f */ DoesNotAccessMemory,
  /* nvvm_floor_d */ DoesNotAccessMemory,
  /* nvvm_floor_f */ DoesNotAccessMemory,
  /* nvvm_floor_ftz_f */ DoesNotAccessMemory,
  /* nvvm_fma_rm_d */ DoesNotAccessMemory,
  /* nvvm_fma_rm_f */ DoesNotAccessMemory,
  /* nvvm_fma_rm_ftz_f */ DoesNotAccessMemory,
  /* nvvm_fma_rn_d */ DoesNotAccessMemory,
  /* nvvm_fma_rn_f */ DoesNotAccessMemory,
  /* nvvm_fma_rn_ftz_f */ DoesNotAccessMemory,
  /* nvvm_fma_rp_d */ DoesNotAccessMemory,
  /* nvvm_fma_rp_f */ DoesNotAccessMemory,
  /* nvvm_fma_rp_ftz_f */ DoesNotAccessMemory,
  /* nvvm_fma_rz_d */ DoesNotAccessMemory,
  /* nvvm_fma_rz_f */ DoesNotAccessMemory,
  /* nvvm_fma_rz_ftz_f */ DoesNotAccessMemory,
  /* nvvm_fmax_d */ DoesNotAccessMemory,
  /* nvvm_fmax_f */ DoesNotAccessMemory,
  /* nvvm_fmax_ftz_f */ DoesNotAccessMemory,
  /* nvvm_fmin_d */ DoesNotAccessMemory,
  /* nvvm_fmin_f */ DoesNotAccessMemory,
  /* nvvm_fmin_ftz_f */ DoesNotAccessMemory,
  /* nvvm_h2f */ DoesNotAccessMemory,
  /* nvvm_i2d_rm */ DoesNotAccessMemory,
  /* nvvm_i2d_rn */ DoesNotAccessMemory,
  /* nvvm_i2d_rp */ DoesNotAccessMemory,
  /* nvvm_i2d_rz */ DoesNotAccessMemory,
  /* nvvm_i2f_rm */ DoesNotAccessMemory,
  /* nvvm_i2f_rn */ DoesNotAccessMemory,
  /* nvvm_i2f_rp */ DoesNotAccessMemory,
  /* nvvm_i2f_rz */ DoesNotAccessMemory,
  /* nvvm_isspacep_const */ DoesNotAccessMemory,
  /* nvvm_isspacep_global */ DoesNotAccessMemory,
  /* nvvm_isspacep_local */ DoesNotAccessMemory,
  /* nvvm_isspacep_shared */ DoesNotAccessMemory,
  /* nvvm_istypep_sampler */ DoesNotAccessMemory,
  /* nvvm_istypep_surface */ DoesNotAccessMemory,
  /* nvvm_istypep_texture */ DoesNotAccessMemory,
  /* nvvm_ldg_global_f */ OnlyReadsMemory,
  /* nvvm_ldg_global_i */ OnlyReadsMemory,
  /* nvvm_ldg_global_p */ OnlyReadsMemory,
  /* nvvm_ldu_global_f */ OnlyReadsMemory,
  /* nvvm_ldu_global_i */ OnlyReadsMemory,
  /* nvvm_ldu_global_p */ OnlyReadsMemory,
  /* nvvm_lg2_approx_d */ DoesNotAccessMemory,
  /* nvvm_lg2_approx_f */ DoesNotAccessMemory,
  /* nvvm_lg2_approx_ftz_f */ DoesNotAccessMemory,
  /* nvvm_ll2d_rm */ DoesNotAccessMemory,
  /* nvvm_ll2d_rn */ DoesNotAccessMemory,
  /* nvvm_ll2d_rp */ DoesNotAccessMemory,
  /* nvvm_ll2d_rz */ DoesNotAccessMemory,
  /* nvvm_ll2f_rm */ DoesNotAccessMemory,
  /* nvvm_ll2f_rn */ DoesNotAccessMemory,
  /* nvvm_ll2f_rp */ DoesNotAccessMemory,
  /* nvvm_ll2f_rz */ DoesNotAccessMemory,
  /* nvvm_lohi_i2d */ DoesNotAccessMemory,
  /* nvvm_max_i */ DoesNotAccessMemory,
  /* nvvm_max_ll */ DoesNotAccessMemory,
  /* nvvm_max_ui */ DoesNotAccessMemory,
  /* nvvm_max_ull */ DoesNotAccessMemory,
  /* nvvm_membar_cta */ UnknownModRefBehavior,
  /* nvvm_membar_gl */ UnknownModRefBehavior,
  /* nvvm_membar_sys */ UnknownModRefBehavior,
  /* nvvm_min_i */ DoesNotAccessMemory,
  /* nvvm_min_ll */ DoesNotAccessMemory,
  /* nvvm_min_ui */ DoesNotAccessMemory,
  /* nvvm_min_ull */ DoesNotAccessMemory,
  /* nvvm_move_double */ DoesNotAccessMemory,
  /* nvvm_move_float */ DoesNotAccessMemory,
  /* nvvm_move_i16 */ DoesNotAccessMemory,
  /* nvvm_move_i32 */ DoesNotAccessMemory,
  /* nvvm_move_i64 */ DoesNotAccessMemory,
  /* nvvm_move_ptr */ DoesNotAccessMemory,
  /* nvvm_mul24_i */ DoesNotAccessMemory,
  /* nvvm_mul24_ui */ DoesNotAccessMemory,
  /* nvvm_mul_rm_d */ DoesNotAccessMemory,
  /* nvvm_mul_rm_f */ DoesNotAccessMemory,
  /* nvvm_mul_rm_ftz_f */ DoesNotAccessMemory,
  /* nvvm_mul_rn_d */ DoesNotAccessMemory,
  /* nvvm_mul_rn_f */ DoesNotAccessMemory,
  /* nvvm_mul_rn_ftz_f */ DoesNotAccessMemory,
  /* nvvm_mul_rp_d */ DoesNotAccessMemory,
  /* nvvm_mul_rp_f */ DoesNotAccessMemory,
  /* nvvm_mul_rp_ftz_f */ DoesNotAccessMemory,
  /* nvvm_mul_rz_d */ DoesNotAccessMemory,
  /* nvvm_mul_rz_f */ DoesNotAccessMemory,
  /* nvvm_mul_rz_ftz_f */ DoesNotAccessMemory,
  /* nvvm_mulhi_i */ DoesNotAccessMemory,
  /* nvvm_mulhi_ll */ DoesNotAccessMemory,
  /* nvvm_mulhi_ui */ DoesNotAccessMemory,
  /* nvvm_mulhi_ull */ DoesNotAccessMemory,
  /* nvvm_popc_i */ DoesNotAccessMemory,
  /* nvvm_popc_ll */ DoesNotAccessMemory,
  /* nvvm_prmt */ DoesNotAccessMemory,
  /* nvvm_ptr_constant_to_gen */ DoesNotAccessMemory,
  /* nvvm_ptr_gen_to_constant */ DoesNotAccessMemory,
  /* nvvm_ptr_gen_to_global */ DoesNotAccessMemory,
  /* nvvm_ptr_gen_to_local */ DoesNotAccessMemory,
  /* nvvm_ptr_gen_to_param */ DoesNotAccessMemory,
  /* nvvm_ptr_gen_to_shared */ DoesNotAccessMemory,
  /* nvvm_ptr_global_to_gen */ DoesNotAccessMemory,
  /* nvvm_ptr_local_to_gen */ DoesNotAccessMemory,
  /* nvvm_ptr_shared_to_gen */ DoesNotAccessMemory,
  /* nvvm_rcp_approx_ftz_d */ DoesNotAccessMemory,
  /* nvvm_rcp_rm_d */ DoesNotAccessMemory,
  /* nvvm_rcp_rm_f */ DoesNotAccessMemory,
  /* nvvm_rcp_rm_ftz_f */ DoesNotAccessMemory,
  /* nvvm_rcp_rn_d */ DoesNotAccessMemory,
  /* nvvm_rcp_rn_f */ DoesNotAccessMemory,
  /* nvvm_rcp_rn_ftz_f */ DoesNotAccessMemory,
  /* nvvm_rcp_rp_d */ DoesNotAccessMemory,
  /* nvvm_rcp_rp_f */ DoesNotAccessMemory,
  /* nvvm_rcp_rp_ftz_f */ DoesNotAccessMemory,
  /* nvvm_rcp_rz_d */ DoesNotAccessMemory,
  /* nvvm_rcp_rz_f */ DoesNotAccessMemory,
  /* nvvm_rcp_rz_ftz_f */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_ctaid_x */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_ctaid_y */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_ctaid_z */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg0 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg1 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg10 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg11 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg12 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg13 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg14 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg15 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg16 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg17 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg18 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg19 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg2 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg20 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg21 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg22 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg23 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg24 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg25 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg26 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg27 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg28 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg29 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg3 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg30 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg31 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg4 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg5 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg6 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg7 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg8 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_envreg9 */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_nctaid_x */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_nctaid_y */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_nctaid_z */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_ntid_x */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_ntid_y */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_ntid_z */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_tid_x */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_tid_y */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_tid_z */ DoesNotAccessMemory,
  /* nvvm_read_ptx_sreg_warpsize */ DoesNotAccessMemory,
  /* nvvm_reflect */ DoesNotAccessMemory,
  /* nvvm_rotate_b32 */ DoesNotAccessMemory,
  /* nvvm_rotate_b64 */ DoesNotAccessMemory,
  /* nvvm_rotate_right_b64 */ DoesNotAccessMemory,
  /* nvvm_round_d */ DoesNotAccessMemory,
  /* nvvm_round_f */ DoesNotAccessMemory,
  /* nvvm_round_ftz_f */ DoesNotAccessMemory,
  /* nvvm_rsqrt_approx_d */ DoesNotAccessMemory,
  /* nvvm_rsqrt_approx_f */ DoesNotAccessMemory,
  /* nvvm_rsqrt_approx_ftz_f */ DoesNotAccessMemory,
  /* nvvm_sad_i */ DoesNotAccessMemory,
  /* nvvm_sad_ui */ DoesNotAccessMemory,
  /* nvvm_saturate_d */ DoesNotAccessMemory,
  /* nvvm_saturate_f */ DoesNotAccessMemory,
  /* nvvm_saturate_ftz_f */ DoesNotAccessMemory,
  /* nvvm_sin_approx_f */ DoesNotAccessMemory,
  /* nvvm_sin_approx_ftz_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_approx_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_approx_ftz_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_rm_d */ DoesNotAccessMemory,
  /* nvvm_sqrt_rm_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_rm_ftz_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_rn_d */ DoesNotAccessMemory,
  /* nvvm_sqrt_rn_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_rn_ftz_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_rp_d */ DoesNotAccessMemory,
  /* nvvm_sqrt_rp_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_rp_ftz_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_rz_d */ DoesNotAccessMemory,
  /* nvvm_sqrt_rz_f */ DoesNotAccessMemory,
  /* nvvm_sqrt_rz_ftz_f */ DoesNotAccessMemory,
  /* nvvm_suld_1d_array_i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i64_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i64_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i64_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i64_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i64_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i64_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v2i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v4i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v4i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v4i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v4i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v4i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_array_v4i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i64_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i64_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i64_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i64_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i64_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i64_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v2i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v4i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v4i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v4i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v4i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v4i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_1d_v4i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i64_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i64_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i64_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i64_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i64_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i64_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v2i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v4i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v4i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v4i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v4i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v4i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_array_v4i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i64_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i64_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i64_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i64_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i64_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i64_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v2i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v4i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v4i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v4i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v4i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v4i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_2d_v4i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i64_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i64_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i64_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i64_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i64_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i64_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v2i8_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v4i16_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v4i16_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v4i32_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v4i32_zero */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v4i8_clamp */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_suld_3d_v4i8_zero */ UnknownModRefBehavior,
  /* nvvm_suq_array_size */ DoesNotAccessMemory,
  /* nvvm_suq_channel_data_type */ DoesNotAccessMemory,
  /* nvvm_suq_channel_order */ DoesNotAccessMemory,
  /* nvvm_suq_depth */ DoesNotAccessMemory,
  /* nvvm_suq_height */ DoesNotAccessMemory,
  /* nvvm_suq_width */ DoesNotAccessMemory,
  /* nvvm_sust_b_1d_array_i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i64_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i64_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i64_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i64_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i64_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i64_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v2i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v4i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v4i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v4i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v4i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v4i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_array_v4i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i64_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i64_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i64_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i64_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i64_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i64_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v2i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v4i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v4i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v4i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v4i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v4i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_1d_v4i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i64_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i64_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i64_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i64_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i64_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i64_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v2i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v4i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v4i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v4i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v4i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v4i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_array_v4i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i64_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i64_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i64_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i64_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i64_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i64_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v2i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v4i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v4i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v4i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v4i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v4i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_2d_v4i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i64_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i64_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i64_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i64_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i64_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i64_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v2i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v4i16_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v4i16_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v4i32_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v4i32_zero */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v4i8_clamp */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_b_3d_v4i8_zero */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_array_i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_array_i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_array_i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_array_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_array_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_array_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_array_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_array_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_array_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_1d_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_array_i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_array_i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_array_i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_array_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_array_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_array_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_array_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_array_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_array_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_2d_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_3d_i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_3d_i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_3d_i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_3d_v2i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_3d_v2i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_3d_v2i8_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_3d_v4i16_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_3d_v4i32_trap */ UnknownModRefBehavior,
  /* nvvm_sust_p_3d_v4i8_trap */ UnknownModRefBehavior,
  /* nvvm_swap_lo_hi_b64 */ DoesNotAccessMemory,
  /* nvvm_tex_1d_array_grad_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_grad_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_grad_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_v4f32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_v4s32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_array_v4u32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_grad_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_grad_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_grad_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_v4f32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_v4s32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_1d_v4u32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_grad_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_grad_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_grad_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_v4f32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_v4s32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_array_v4u32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_grad_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_grad_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_grad_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_v4f32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_v4s32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_2d_v4u32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_grad_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_grad_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_grad_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_v4f32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_v4s32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_3d_v4u32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_array_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_array_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_array_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_array_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_array_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_array_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_cube_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_grad_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_grad_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_grad_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_v4f32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_v4s32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_array_v4u32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_grad_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_grad_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_grad_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_v4f32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_v4s32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_1d_v4u32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_grad_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_grad_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_grad_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_v4f32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_v4s32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_array_v4u32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_grad_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_grad_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_grad_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_v4f32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_v4s32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_2d_v4u32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_grad_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_grad_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_grad_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_v4f32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_v4s32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_3d_v4u32_s32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_array_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_array_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_array_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_array_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_array_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_array_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_level_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_level_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_level_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tex_unified_cube_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_texsurf_handle */ DoesNotAccessMemory,
  /* nvvm_texsurf_handle_internal */ DoesNotAccessMemory,
  /* nvvm_tld4_a_2d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_a_2d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_a_2d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_b_2d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_b_2d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_b_2d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_g_2d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_g_2d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_g_2d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_r_2d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_r_2d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_r_2d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_a_2d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_a_2d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_a_2d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_b_2d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_b_2d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_b_2d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_g_2d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_g_2d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_g_2d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_r_2d_v4f32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_r_2d_v4s32_f32 */ UnknownModRefBehavior,
  /* nvvm_tld4_unified_r_2d_v4u32_f32 */ UnknownModRefBehavior,
  /* nvvm_trunc_d */ DoesNotAccessMemory,
  /* nvvm_trunc_f */ DoesNotAccessMemory,
  /* nvvm_trunc_ftz_f */ DoesNotAccessMemory,
  /* nvvm_txq_array_size */ DoesNotAccessMemory,
  /* nvvm_txq_channel_data_type */ DoesNotAccessMemory,
  /* nvvm_txq_channel_order */ DoesNotAccessMemory,
  /* nvvm_txq_depth */ DoesNotAccessMemory,
  /* nvvm_txq_height */ DoesNotAccessMemory,
  /* nvvm_txq_num_mipmap_levels */ DoesNotAccessMemory,
  /* nvvm_txq_num_samples */ DoesNotAccessMemory,
  /* nvvm_txq_width */ DoesNotAccessMemory,
  /* nvvm_ui2d_rm */ DoesNotAccessMemory,
  /* nvvm_ui2d_rn */ DoesNotAccessMemory,
  /* nvvm_ui2d_rp */ DoesNotAccessMemory,
  /* nvvm_ui2d_rz */ DoesNotAccessMemory,
  /* nvvm_ui2f_rm */ DoesNotAccessMemory,
  /* nvvm_ui2f_rn */ DoesNotAccessMemory,
  /* nvvm_ui2f_rp */ DoesNotAccessMemory,
  /* nvvm_ui2f_rz */ DoesNotAccessMemory,
  /* nvvm_ull2d_rm */ DoesNotAccessMemory,
  /* nvvm_ull2d_rn */ DoesNotAccessMemory,
  /* nvvm_ull2d_rp */ DoesNotAccessMemory,
  /* nvvm_ull2d_rz */ DoesNotAccessMemory,
  /* nvvm_ull2f_rm */ DoesNotAccessMemory,
  /* nvvm_ull2f_rn */ DoesNotAccessMemory,
  /* nvvm_ull2f_rp */ DoesNotAccessMemory,
  /* nvvm_ull2f_rz */ DoesNotAccessMemory,
  /* objectsize */ DoesNotAccessMemory,
  /* pcmarker */ UnknownModRefBehavior,
  /* pow */ DoesNotAccessMemory,
  /* powi */ DoesNotAccessMemory,
  /* ppc_altivec_dss */ UnknownModRefBehavior,
  /* ppc_altivec_dssall */ UnknownModRefBehavior,
  /* ppc_altivec_dst */ UnknownModRefBehavior,
  /* ppc_altivec_dstst */ UnknownModRefBehavior,
  /* ppc_altivec_dststt */ UnknownModRefBehavior,
  /* ppc_altivec_dstt */ UnknownModRefBehavior,
  /* ppc_altivec_lvebx */ OnlyReadsArgumentPointees,
  /* ppc_altivec_lvehx */ OnlyReadsArgumentPointees,
  /* ppc_altivec_lvewx */ OnlyReadsArgumentPointees,
  /* ppc_altivec_lvsl */ DoesNotAccessMemory,
  /* ppc_altivec_lvsr */ DoesNotAccessMemory,
  /* ppc_altivec_lvx */ OnlyReadsArgumentPointees,
  /* ppc_altivec_lvxl */ OnlyReadsArgumentPointees,
  /* ppc_altivec_mfvscr */ OnlyReadsMemory,
  /* ppc_altivec_mtvscr */ UnknownModRefBehavior,
  /* ppc_altivec_stvebx */ OnlyAccessesArgumentPointees,
  /* ppc_altivec_stvehx */ OnlyAccessesArgumentPointees,
  /* ppc_altivec_stvewx */ OnlyAccessesArgumentPointees,
  /* ppc_altivec_stvx */ OnlyAccessesArgumentPointees,
  /* ppc_altivec_stvxl */ OnlyAccessesArgumentPointees,
  /* ppc_altivec_vaddcuw */ DoesNotAccessMemory,
  /* ppc_altivec_vaddsbs */ DoesNotAccessMemory,
  /* ppc_altivec_vaddshs */ DoesNotAccessMemory,
  /* ppc_altivec_vaddsws */ DoesNotAccessMemory,
  /* ppc_altivec_vaddubs */ DoesNotAccessMemory,
  /* ppc_altivec_vadduhs */ DoesNotAccessMemory,
  /* ppc_altivec_vadduws */ DoesNotAccessMemory,
  /* ppc_altivec_vavgsb */ DoesNotAccessMemory,
  /* ppc_altivec_vavgsh */ DoesNotAccessMemory,
  /* ppc_altivec_vavgsw */ DoesNotAccessMemory,
  /* ppc_altivec_vavgub */ DoesNotAccessMemory,
  /* ppc_altivec_vavguh */ DoesNotAccessMemory,
  /* ppc_altivec_vavguw */ DoesNotAccessMemory,
  /* ppc_altivec_vcfsx */ DoesNotAccessMemory,
  /* ppc_altivec_vcfux */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpbfp */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpbfp_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpeqfp */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpeqfp_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpequb */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpequb_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpequh */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpequh_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpequw */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpequw_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgefp */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgefp_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtfp */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtfp_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtsb */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtsb_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtsh */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtsh_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtsw */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtsw_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtub */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtub_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtuh */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtuh_p */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtuw */ DoesNotAccessMemory,
  /* ppc_altivec_vcmpgtuw_p */ DoesNotAccessMemory,
  /* ppc_altivec_vctsxs */ DoesNotAccessMemory,
  /* ppc_altivec_vctuxs */ DoesNotAccessMemory,
  /* ppc_altivec_vexptefp */ DoesNotAccessMemory,
  /* ppc_altivec_vlogefp */ DoesNotAccessMemory,
  /* ppc_altivec_vmaddfp */ DoesNotAccessMemory,
  /* ppc_altivec_vmaxfp */ DoesNotAccessMemory,
  /* ppc_altivec_vmaxsb */ DoesNotAccessMemory,
  /* ppc_altivec_vmaxsh */ DoesNotAccessMemory,
  /* ppc_altivec_vmaxsw */ DoesNotAccessMemory,
  /* ppc_altivec_vmaxub */ DoesNotAccessMemory,
  /* ppc_altivec_vmaxuh */ DoesNotAccessMemory,
  /* ppc_altivec_vmaxuw */ DoesNotAccessMemory,
  /* ppc_altivec_vmhaddshs */ DoesNotAccessMemory,
  /* ppc_altivec_vmhraddshs */ DoesNotAccessMemory,
  /* ppc_altivec_vminfp */ DoesNotAccessMemory,
  /* ppc_altivec_vminsb */ DoesNotAccessMemory,
  /* ppc_altivec_vminsh */ DoesNotAccessMemory,
  /* ppc_altivec_vminsw */ DoesNotAccessMemory,
  /* ppc_altivec_vminub */ DoesNotAccessMemory,
  /* ppc_altivec_vminuh */ DoesNotAccessMemory,
  /* ppc_altivec_vminuw */ DoesNotAccessMemory,
  /* ppc_altivec_vmladduhm */ DoesNotAccessMemory,
  /* ppc_altivec_vmsummbm */ DoesNotAccessMemory,
  /* ppc_altivec_vmsumshm */ DoesNotAccessMemory,
  /* ppc_altivec_vmsumshs */ DoesNotAccessMemory,
  /* ppc_altivec_vmsumubm */ DoesNotAccessMemory,
  /* ppc_altivec_vmsumuhm */ DoesNotAccessMemory,
  /* ppc_altivec_vmsumuhs */ DoesNotAccessMemory,
  /* ppc_altivec_vmulesb */ DoesNotAccessMemory,
  /* ppc_altivec_vmulesh */ DoesNotAccessMemory,
  /* ppc_altivec_vmuleub */ DoesNotAccessMemory,
  /* ppc_altivec_vmuleuh */ DoesNotAccessMemory,
  /* ppc_altivec_vmulosb */ DoesNotAccessMemory,
  /* ppc_altivec_vmulosh */ DoesNotAccessMemory,
  /* ppc_altivec_vmuloub */ DoesNotAccessMemory,
  /* ppc_altivec_vmulouh */ DoesNotAccessMemory,
  /* ppc_altivec_vnmsubfp */ DoesNotAccessMemory,
  /* ppc_altivec_vperm */ DoesNotAccessMemory,
  /* ppc_altivec_vpkpx */ DoesNotAccessMemory,
  /* ppc_altivec_vpkshss */ DoesNotAccessMemory,
  /* ppc_altivec_vpkshus */ DoesNotAccessMemory,
  /* ppc_altivec_vpkswss */ DoesNotAccessMemory,
  /* ppc_altivec_vpkswus */ DoesNotAccessMemory,
  /* ppc_altivec_vpkuhus */ DoesNotAccessMemory,
  /* ppc_altivec_vpkuwus */ DoesNotAccessMemory,
  /* ppc_altivec_vrefp */ DoesNotAccessMemory,
  /* ppc_altivec_vrfim */ DoesNotAccessMemory,
  /* ppc_altivec_vrfin */ DoesNotAccessMemory,
  /* ppc_altivec_vrfip */ DoesNotAccessMemory,
  /* ppc_altivec_vrfiz */ DoesNotAccessMemory,
  /* ppc_altivec_vrlb */ DoesNotAccessMemory,
  /* ppc_altivec_vrlh */ DoesNotAccessMemory,
  /* ppc_altivec_vrlw */ DoesNotAccessMemory,
  /* ppc_altivec_vrsqrtefp */ DoesNotAccessMemory,
  /* ppc_altivec_vsel */ DoesNotAccessMemory,
  /* ppc_altivec_vsl */ DoesNotAccessMemory,
  /* ppc_altivec_vslb */ DoesNotAccessMemory,
  /* ppc_altivec_vslh */ DoesNotAccessMemory,
  /* ppc_altivec_vslo */ DoesNotAccessMemory,
  /* ppc_altivec_vslw */ DoesNotAccessMemory,
  /* ppc_altivec_vsr */ DoesNotAccessMemory,
  /* ppc_altivec_vsrab */ DoesNotAccessMemory,
  /* ppc_altivec_vsrah */ DoesNotAccessMemory,
  /* ppc_altivec_vsraw */ DoesNotAccessMemory,
  /* ppc_altivec_vsrb */ DoesNotAccessMemory,
  /* ppc_altivec_vsrh */ DoesNotAccessMemory,
  /* ppc_altivec_vsro */ DoesNotAccessMemory,
  /* ppc_altivec_vsrw */ DoesNotAccessMemory,
  /* ppc_altivec_vsubcuw */ DoesNotAccessMemory,
  /* ppc_altivec_vsubsbs */ DoesNotAccessMemory,
  /* ppc_altivec_vsubshs */ DoesNotAccessMemory,
  /* ppc_altivec_vsubsws */ DoesNotAccessMemory,
  /* ppc_altivec_vsububs */ DoesNotAccessMemory,
  /* ppc_altivec_vsubuhs */ DoesNotAccessMemory,
  /* ppc_altivec_vsubuws */ DoesNotAccessMemory,
  /* ppc_altivec_vsum2sws */ DoesNotAccessMemory,
  /* ppc_altivec_vsum4sbs */ DoesNotAccessMemory,
  /* ppc_altivec_vsum4shs */ DoesNotAccessMemory,
  /* ppc_altivec_vsum4ubs */ DoesNotAccessMemory,
  /* ppc_altivec_vsumsws */ DoesNotAccessMemory,
  /* ppc_altivec_vupkhpx */ DoesNotAccessMemory,
  /* ppc_altivec_vupkhsb */ DoesNotAccessMemory,
  /* ppc_altivec_vupkhsh */ DoesNotAccessMemory,
  /* ppc_altivec_vupklpx */ DoesNotAccessMemory,
  /* ppc_altivec_vupklsb */ DoesNotAccessMemory,
  /* ppc_altivec_vupklsh */ DoesNotAccessMemory,
  /* ppc_dcba */ UnknownModRefBehavior,
  /* ppc_dcbf */ UnknownModRefBehavior,
  /* ppc_dcbi */ UnknownModRefBehavior,
  /* ppc_dcbst */ UnknownModRefBehavior,
  /* ppc_dcbt */ OnlyAccessesArgumentPointees,
  /* ppc_dcbtst */ UnknownModRefBehavior,
  /* ppc_dcbz */ UnknownModRefBehavior,
  /* ppc_dcbzl */ UnknownModRefBehavior,
  /* ppc_is_decremented_ctr_nonzero */ UnknownModRefBehavior,
  /* ppc_mtctr */ UnknownModRefBehavior,
  /* ppc_sync */ UnknownModRefBehavior,
  /* prefetch */ OnlyAccessesArgumentPointees,
  /* ptr_annotation */ UnknownModRefBehavior,
  /* ptx_bar_sync */ UnknownModRefBehavior,
  /* ptx_read_clock */ DoesNotAccessMemory,
  /* ptx_read_clock64 */ DoesNotAccessMemory,
  /* ptx_read_ctaid_w */ DoesNotAccessMemory,
  /* ptx_read_ctaid_x */ DoesNotAccessMemory,
  /* ptx_read_ctaid_y */ DoesNotAccessMemory,
  /* ptx_read_ctaid_z */ DoesNotAccessMemory,
  /* ptx_read_gridid */ DoesNotAccessMemory,
  /* ptx_read_laneid */ DoesNotAccessMemory,
  /* ptx_read_lanemask_eq */ DoesNotAccessMemory,
  /* ptx_read_lanemask_ge */ DoesNotAccessMemory,
  /* ptx_read_lanemask_gt */ DoesNotAccessMemory,
  /* ptx_read_lanemask_le */ DoesNotAccessMemory,
  /* ptx_read_lanemask_lt */ DoesNotAccessMemory,
  /* ptx_read_nctaid_w */ DoesNotAccessMemory,
  /* ptx_read_nctaid_x */ DoesNotAccessMemory,
  /* ptx_read_nctaid_y */ DoesNotAccessMemory,
  /* ptx_read_nctaid_z */ DoesNotAccessMemory,
  /* ptx_read_nsmid */ DoesNotAccessMemory,
  /* ptx_read_ntid_w */ DoesNotAccessMemory,
  /* ptx_read_ntid_x */ DoesNotAccessMemory,
  /* ptx_read_ntid_y */ DoesNotAccessMemory,
  /* ptx_read_ntid_z */ DoesNotAccessMemory,
  /* ptx_read_nwarpid */ DoesNotAccessMemory,
  /* ptx_read_pm0 */ DoesNotAccessMemory,
  /* ptx_read_pm1 */ DoesNotAccessMemory,
  /* ptx_read_pm2 */ DoesNotAccessMemory,
  /* ptx_read_pm3 */ DoesNotAccessMemory,
  /* ptx_read_smid */ DoesNotAccessMemory,
  /* ptx_read_tid_w */ DoesNotAccessMemory,
  /* ptx_read_tid_x */ DoesNotAccessMemory,
  /* ptx_read_tid_y */ DoesNotAccessMemory,
  /* ptx_read_tid_z */ DoesNotAccessMemory,
  /* ptx_read_warpid */ DoesNotAccessMemory,
  /* r600_read_global_size_x */ DoesNotAccessMemory,
  /* r600_read_global_size_y */ DoesNotAccessMemory,
  /* r600_read_global_size_z */ DoesNotAccessMemory,
  /* r600_read_local_size_x */ DoesNotAccessMemory,
  /* r600_read_local_size_y */ DoesNotAccessMemory,
  /* r600_read_local_size_z */ DoesNotAccessMemory,
  /* r600_read_ngroups_x */ DoesNotAccessMemory,
  /* r600_read_ngroups_y */ DoesNotAccessMemory,
  /* r600_read_ngroups_z */ DoesNotAccessMemory,
  /* r600_read_tgid_x */ DoesNotAccessMemory,
  /* r600_read_tgid_y */ DoesNotAccessMemory,
  /* r600_read_tgid_z */ DoesNotAccessMemory,
  /* r600_read_tidig_x */ DoesNotAccessMemory,
  /* r600_read_tidig_y */ DoesNotAccessMemory,
  /* r600_read_tidig_z */ DoesNotAccessMemory,
  /* read_register */ DoesNotAccessMemory,
  /* readcyclecounter */ UnknownModRefBehavior,
  /* returnaddress */ DoesNotAccessMemory,
  /* rint */ DoesNotAccessMemory,
  /* round */ DoesNotAccessMemory,
  /* sadd_with_overflow */ DoesNotAccessMemory,
  /* setjmp */ UnknownModRefBehavior,
  /* siglongjmp */ UnknownModRefBehavior,
  /* sigsetjmp */ UnknownModRefBehavior,
  /* sin */ DoesNotAccessMemory,
  /* smul_with_overflow */ DoesNotAccessMemory,
  /* sqrt */ DoesNotAccessMemory,
  /* ssub_with_overflow */ DoesNotAccessMemory,
  /* stackprotector */ UnknownModRefBehavior,
  /* stackprotectorcheck */ OnlyAccessesArgumentPointees,
  /* stackrestore */ UnknownModRefBehavior,
  /* stacksave */ UnknownModRefBehavior,
  /* trap */ UnknownModRefBehavior,
  /* trunc */ DoesNotAccessMemory,
  /* uadd_with_overflow */ DoesNotAccessMemory,
  /* umul_with_overflow */ DoesNotAccessMemory,
  /* usub_with_overflow */ DoesNotAccessMemory,
  /* vacopy */ UnknownModRefBehavior,
  /* vaend */ UnknownModRefBehavior,
  /* var_annotation */ UnknownModRefBehavior,
  /* vastart */ UnknownModRefBehavior,
  /* write_register */ UnknownModRefBehavior,
  /* x86_3dnow_pavgusb */ DoesNotAccessMemory,
  /* x86_3dnow_pf2id */ DoesNotAccessMemory,
  /* x86_3dnow_pfacc */ DoesNotAccessMemory,
  /* x86_3dnow_pfadd */ DoesNotAccessMemory,
  /* x86_3dnow_pfcmpeq */ DoesNotAccessMemory,
  /* x86_3dnow_pfcmpge */ DoesNotAccessMemory,
  /* x86_3dnow_pfcmpgt */ DoesNotAccessMemory,
  /* x86_3dnow_pfmax */ DoesNotAccessMemory,
  /* x86_3dnow_pfmin */ DoesNotAccessMemory,
  /* x86_3dnow_pfmul */ DoesNotAccessMemory,
  /* x86_3dnow_pfrcp */ DoesNotAccessMemory,
  /* x86_3dnow_pfrcpit1 */ DoesNotAccessMemory,
  /* x86_3dnow_pfrcpit2 */ DoesNotAccessMemory,
  /* x86_3dnow_pfrsqit1 */ DoesNotAccessMemory,
  /* x86_3dnow_pfrsqrt */ DoesNotAccessMemory,
  /* x86_3dnow_pfsub */ DoesNotAccessMemory,
  /* x86_3dnow_pfsubr */ DoesNotAccessMemory,
  /* x86_3dnow_pi2fd */ DoesNotAccessMemory,
  /* x86_3dnow_pmulhrw */ DoesNotAccessMemory,
  /* x86_3dnowa_pf2iw */ DoesNotAccessMemory,
  /* x86_3dnowa_pfnacc */ DoesNotAccessMemory,
  /* x86_3dnowa_pfpnacc */ DoesNotAccessMemory,
  /* x86_3dnowa_pi2fw */ DoesNotAccessMemory,
  /* x86_3dnowa_pswapd */ DoesNotAccessMemory,
  /* x86_aesni_aesdec */ DoesNotAccessMemory,
  /* x86_aesni_aesdeclast */ DoesNotAccessMemory,
  /* x86_aesni_aesenc */ DoesNotAccessMemory,
  /* x86_aesni_aesenclast */ DoesNotAccessMemory,
  /* x86_aesni_aesimc */ DoesNotAccessMemory,
  /* x86_aesni_aeskeygenassist */ DoesNotAccessMemory,
  /* x86_avx2_gather_d_d */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_d_d_256 */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_d_pd */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_d_pd_256 */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_d_ps */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_d_ps_256 */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_d_q */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_d_q_256 */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_q_d */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_q_d_256 */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_q_pd */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_q_pd_256 */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_q_ps */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_q_ps_256 */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_q_q */ OnlyReadsArgumentPointees,
  /* x86_avx2_gather_q_q_256 */ OnlyReadsArgumentPointees,
  /* x86_avx2_maskload_d */ OnlyReadsArgumentPointees,
  /* x86_avx2_maskload_d_256 */ OnlyReadsArgumentPointees,
  /* x86_avx2_maskload_q */ OnlyReadsArgumentPointees,
  /* x86_avx2_maskload_q_256 */ OnlyReadsArgumentPointees,
  /* x86_avx2_maskstore_d */ OnlyAccessesArgumentPointees,
  /* x86_avx2_maskstore_d_256 */ OnlyAccessesArgumentPointees,
  /* x86_avx2_maskstore_q */ OnlyAccessesArgumentPointees,
  /* x86_avx2_maskstore_q_256 */ OnlyAccessesArgumentPointees,
  /* x86_avx2_movntdqa */ OnlyReadsMemory,
  /* x86_avx2_mpsadbw */ DoesNotAccessMemory,
  /* x86_avx2_pabs_b */ DoesNotAccessMemory,
  /* x86_avx2_pabs_d */ DoesNotAccessMemory,
  /* x86_avx2_pabs_w */ DoesNotAccessMemory,
  /* x86_avx2_packssdw */ DoesNotAccessMemory,
  /* x86_avx2_packsswb */ DoesNotAccessMemory,
  /* x86_avx2_packusdw */ DoesNotAccessMemory,
  /* x86_avx2_packuswb */ DoesNotAccessMemory,
  /* x86_avx2_padds_b */ DoesNotAccessMemory,
  /* x86_avx2_padds_w */ DoesNotAccessMemory,
  /* x86_avx2_paddus_b */ DoesNotAccessMemory,
  /* x86_avx2_paddus_w */ DoesNotAccessMemory,
  /* x86_avx2_pavg_b */ DoesNotAccessMemory,
  /* x86_avx2_pavg_w */ DoesNotAccessMemory,
  /* x86_avx2_pblendd_128 */ DoesNotAccessMemory,
  /* x86_avx2_pblendd_256 */ DoesNotAccessMemory,
  /* x86_avx2_pblendvb */ DoesNotAccessMemory,
  /* x86_avx2_pblendw */ DoesNotAccessMemory,
  /* x86_avx2_pbroadcastb_128 */ DoesNotAccessMemory,
  /* x86_avx2_pbroadcastb_256 */ DoesNotAccessMemory,
  /* x86_avx2_pbroadcastd_128 */ DoesNotAccessMemory,
  /* x86_avx2_pbroadcastd_256 */ DoesNotAccessMemory,
  /* x86_avx2_pbroadcastq_128 */ DoesNotAccessMemory,
  /* x86_avx2_pbroadcastq_256 */ DoesNotAccessMemory,
  /* x86_avx2_pbroadcastw_128 */ DoesNotAccessMemory,
  /* x86_avx2_pbroadcastw_256 */ DoesNotAccessMemory,
  /* x86_avx2_permd */ DoesNotAccessMemory,
  /* x86_avx2_permps */ DoesNotAccessMemory,
  /* x86_avx2_phadd_d */ DoesNotAccessMemory,
  /* x86_avx2_phadd_sw */ DoesNotAccessMemory,
  /* x86_avx2_phadd_w */ DoesNotAccessMemory,
  /* x86_avx2_phsub_d */ DoesNotAccessMemory,
  /* x86_avx2_phsub_sw */ DoesNotAccessMemory,
  /* x86_avx2_phsub_w */ DoesNotAccessMemory,
  /* x86_avx2_pmadd_ub_sw */ DoesNotAccessMemory,
  /* x86_avx2_pmadd_wd */ DoesNotAccessMemory,
  /* x86_avx2_pmaxs_b */ DoesNotAccessMemory,
  /* x86_avx2_pmaxs_d */ DoesNotAccessMemory,
  /* x86_avx2_pmaxs_w */ DoesNotAccessMemory,
  /* x86_avx2_pmaxu_b */ DoesNotAccessMemory,
  /* x86_avx2_pmaxu_d */ DoesNotAccessMemory,
  /* x86_avx2_pmaxu_w */ DoesNotAccessMemory,
  /* x86_avx2_pmins_b */ DoesNotAccessMemory,
  /* x86_avx2_pmins_d */ DoesNotAccessMemory,
  /* x86_avx2_pmins_w */ DoesNotAccessMemory,
  /* x86_avx2_pminu_b */ DoesNotAccessMemory,
  /* x86_avx2_pminu_d */ DoesNotAccessMemory,
  /* x86_avx2_pminu_w */ DoesNotAccessMemory,
  /* x86_avx2_pmovmskb */ DoesNotAccessMemory,
  /* x86_avx2_pmovsxbd */ DoesNotAccessMemory,
  /* x86_avx2_pmovsxbq */ DoesNotAccessMemory,
  /* x86_avx2_pmovsxbw */ DoesNotAccessMemory,
  /* x86_avx2_pmovsxdq */ DoesNotAccessMemory,
  /* x86_avx2_pmovsxwd */ DoesNotAccessMemory,
  /* x86_avx2_pmovsxwq */ DoesNotAccessMemory,
  /* x86_avx2_pmovzxbd */ DoesNotAccessMemory,
  /* x86_avx2_pmovzxbq */ DoesNotAccessMemory,
  /* x86_avx2_pmovzxbw */ DoesNotAccessMemory,
  /* x86_avx2_pmovzxdq */ DoesNotAccessMemory,
  /* x86_avx2_pmovzxwd */ DoesNotAccessMemory,
  /* x86_avx2_pmovzxwq */ DoesNotAccessMemory,
  /* x86_avx2_pmul_dq */ DoesNotAccessMemory,
  /* x86_avx2_pmul_hr_sw */ DoesNotAccessMemory,
  /* x86_avx2_pmulh_w */ DoesNotAccessMemory,
  /* x86_avx2_pmulhu_w */ DoesNotAccessMemory,
  /* x86_avx2_pmulu_dq */ DoesNotAccessMemory,
  /* x86_avx2_psad_bw */ DoesNotAccessMemory,
  /* x86_avx2_pshuf_b */ DoesNotAccessMemory,
  /* x86_avx2_psign_b */ DoesNotAccessMemory,
  /* x86_avx2_psign_d */ DoesNotAccessMemory,
  /* x86_avx2_psign_w */ DoesNotAccessMemory,
  /* x86_avx2_psll_d */ DoesNotAccessMemory,
  /* x86_avx2_psll_dq */ DoesNotAccessMemory,
  /* x86_avx2_psll_dq_bs */ DoesNotAccessMemory,
  /* x86_avx2_psll_q */ DoesNotAccessMemory,
  /* x86_avx2_psll_w */ DoesNotAccessMemory,
  /* x86_avx2_pslli_d */ DoesNotAccessMemory,
  /* x86_avx2_pslli_q */ DoesNotAccessMemory,
  /* x86_avx2_pslli_w */ DoesNotAccessMemory,
  /* x86_avx2_psllv_d */ DoesNotAccessMemory,
  /* x86_avx2_psllv_d_256 */ DoesNotAccessMemory,
  /* x86_avx2_psllv_q */ DoesNotAccessMemory,
  /* x86_avx2_psllv_q_256 */ DoesNotAccessMemory,
  /* x86_avx2_psra_d */ DoesNotAccessMemory,
  /* x86_avx2_psra_w */ DoesNotAccessMemory,
  /* x86_avx2_psrai_d */ DoesNotAccessMemory,
  /* x86_avx2_psrai_w */ DoesNotAccessMemory,
  /* x86_avx2_psrav_d */ DoesNotAccessMemory,
  /* x86_avx2_psrav_d_256 */ DoesNotAccessMemory,
  /* x86_avx2_psrl_d */ DoesNotAccessMemory,
  /* x86_avx2_psrl_dq */ DoesNotAccessMemory,
  /* x86_avx2_psrl_dq_bs */ DoesNotAccessMemory,
  /* x86_avx2_psrl_q */ DoesNotAccessMemory,
  /* x86_avx2_psrl_w */ DoesNotAccessMemory,
  /* x86_avx2_psrli_d */ DoesNotAccessMemory,
  /* x86_avx2_psrli_q */ DoesNotAccessMemory,
  /* x86_avx2_psrli_w */ DoesNotAccessMemory,
  /* x86_avx2_psrlv_d */ DoesNotAccessMemory,
  /* x86_avx2_psrlv_d_256 */ DoesNotAccessMemory,
  /* x86_avx2_psrlv_q */ DoesNotAccessMemory,
  /* x86_avx2_psrlv_q_256 */ DoesNotAccessMemory,
  /* x86_avx2_psubs_b */ DoesNotAccessMemory,
  /* x86_avx2_psubs_w */ DoesNotAccessMemory,
  /* x86_avx2_psubus_b */ DoesNotAccessMemory,
  /* x86_avx2_psubus_w */ DoesNotAccessMemory,
  /* x86_avx2_vbroadcast_sd_pd_256 */ DoesNotAccessMemory,
  /* x86_avx2_vbroadcast_ss_ps */ DoesNotAccessMemory,
  /* x86_avx2_vbroadcast_ss_ps_256 */ DoesNotAccessMemory,
  /* x86_avx2_vbroadcasti128 */ OnlyReadsArgumentPointees,
  /* x86_avx2_vextracti128 */ DoesNotAccessMemory,
  /* x86_avx2_vinserti128 */ DoesNotAccessMemory,
  /* x86_avx2_vperm2i128 */ DoesNotAccessMemory,
  /* x86_avx512_cvtsd2usi */ DoesNotAccessMemory,
  /* x86_avx512_cvtsd2usi64 */ DoesNotAccessMemory,
  /* x86_avx512_cvtss2usi */ DoesNotAccessMemory,
  /* x86_avx512_cvtss2usi64 */ DoesNotAccessMemory,
  /* x86_avx512_cvttsd2usi */ DoesNotAccessMemory,
  /* x86_avx512_cvttsd2usi64 */ DoesNotAccessMemory,
  /* x86_avx512_cvttss2usi */ DoesNotAccessMemory,
  /* x86_avx512_cvttss2usi64 */ DoesNotAccessMemory,
  /* x86_avx512_cvtusi2sd */ DoesNotAccessMemory,
  /* x86_avx512_cvtusi2ss */ DoesNotAccessMemory,
  /* x86_avx512_cvtusi642sd */ DoesNotAccessMemory,
  /* x86_avx512_cvtusi642ss */ DoesNotAccessMemory,
  /* x86_avx512_gather_dpd_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_gather_dpi_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_gather_dpq_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_gather_dps_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_gather_qpd_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_gather_qpi_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_gather_qpq_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_gather_qps_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_gatherpf_dpd_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_gatherpf_dps_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_gatherpf_qpd_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_gatherpf_qps_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_kand_w */ DoesNotAccessMemory,
  /* x86_avx512_kandn_w */ DoesNotAccessMemory,
  /* x86_avx512_knot_w */ DoesNotAccessMemory,
  /* x86_avx512_kor_w */ DoesNotAccessMemory,
  /* x86_avx512_kortestc_w */ DoesNotAccessMemory,
  /* x86_avx512_kortestz_w */ DoesNotAccessMemory,
  /* x86_avx512_kunpck_bw */ DoesNotAccessMemory,
  /* x86_avx512_kxnor_w */ DoesNotAccessMemory,
  /* x86_avx512_kxor_w */ DoesNotAccessMemory,
  /* x86_avx512_mask_blend_d_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_blend_pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_blend_ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_blend_q_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cmp_pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cmp_ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_conflict_d_512 */ UnknownModRefBehavior,
  /* x86_avx512_mask_conflict_q_512 */ UnknownModRefBehavior,
  /* x86_avx512_mask_cvtdq2pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvtdq2ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvtpd2dq_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvtpd2ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvtpd2udq_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvtps2dq_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvtps2udq_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvttpd2dq_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvttpd2udq_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvttps2dq_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvttps2udq_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvtudq2pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_cvtudq2ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_loadu_d_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_mask_loadu_pd_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_mask_loadu_ps_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_mask_loadu_q_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_mask_lzcnt_d_512 */ UnknownModRefBehavior,
  /* x86_avx512_mask_lzcnt_q_512 */ UnknownModRefBehavior,
  /* x86_avx512_mask_max_pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_max_ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_min_pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_min_ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pabs_d_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pabs_q_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pand_d_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pand_q_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pbroadcast_d_gpr_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pbroadcast_q_gpr_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pbroadcast_q_mem_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pcmpeq_d_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pcmpeq_q_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pmaxs_d_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pmaxs_q_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pmaxu_d_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pmaxu_q_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pmins_d_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pmins_q_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pminu_d_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pminu_q_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pmul_dq_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_pmulu_dq_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_ptestm_d_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_ptestm_q_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_rndscale_pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_rndscale_ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_storeu_d_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_mask_storeu_pd_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_mask_storeu_ps_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_mask_storeu_q_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_mask_vcvtph2ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_vcvtps2ph_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_vpermt_d_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_vpermt_pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_vpermt_ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_mask_vpermt_q_512 */ DoesNotAccessMemory,
  /* x86_avx512_movntdqa */ OnlyReadsMemory,
  /* x86_avx512_pbroadcastd_512 */ DoesNotAccessMemory,
  /* x86_avx512_pbroadcastd_i32_512 */ DoesNotAccessMemory,
  /* x86_avx512_pbroadcastq_512 */ DoesNotAccessMemory,
  /* x86_avx512_pbroadcastq_i64_512 */ DoesNotAccessMemory,
  /* x86_avx512_pmovzxbd */ DoesNotAccessMemory,
  /* x86_avx512_pmovzxbq */ DoesNotAccessMemory,
  /* x86_avx512_pmovzxdq */ DoesNotAccessMemory,
  /* x86_avx512_pmovzxwd */ DoesNotAccessMemory,
  /* x86_avx512_pmovzxwq */ DoesNotAccessMemory,
  /* x86_avx512_psll_dq */ DoesNotAccessMemory,
  /* x86_avx512_psll_dq_bs */ DoesNotAccessMemory,
  /* x86_avx512_psrl_dq */ DoesNotAccessMemory,
  /* x86_avx512_psrl_dq_bs */ DoesNotAccessMemory,
  /* x86_avx512_rcp14_pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_rcp14_ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_rcp14_sd */ DoesNotAccessMemory,
  /* x86_avx512_rcp14_ss */ DoesNotAccessMemory,
  /* x86_avx512_rcp28_pd */ DoesNotAccessMemory,
  /* x86_avx512_rcp28_ps */ DoesNotAccessMemory,
  /* x86_avx512_rcp28_sd */ DoesNotAccessMemory,
  /* x86_avx512_rcp28_ss */ DoesNotAccessMemory,
  /* x86_avx512_rndscale_sd */ DoesNotAccessMemory,
  /* x86_avx512_rndscale_ss */ DoesNotAccessMemory,
  /* x86_avx512_rsqrt14_pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_rsqrt14_ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_rsqrt14_sd */ DoesNotAccessMemory,
  /* x86_avx512_rsqrt14_ss */ DoesNotAccessMemory,
  /* x86_avx512_rsqrt28_pd */ DoesNotAccessMemory,
  /* x86_avx512_rsqrt28_ps */ DoesNotAccessMemory,
  /* x86_avx512_rsqrt28_sd */ DoesNotAccessMemory,
  /* x86_avx512_rsqrt28_ss */ DoesNotAccessMemory,
  /* x86_avx512_scatter_dpd_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatter_dpi_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatter_dpq_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatter_dps_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatter_qpd_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatter_qpi_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatter_qpq_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatter_qps_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatterpf_dpd_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatterpf_dps_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatterpf_qpd_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_scatterpf_qps_512 */ OnlyAccessesArgumentPointees,
  /* x86_avx512_sqrt_pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_sqrt_ps_512 */ DoesNotAccessMemory,
  /* x86_avx512_sqrt_sd */ DoesNotAccessMemory,
  /* x86_avx512_sqrt_ss */ DoesNotAccessMemory,
  /* x86_avx512_vbroadcast_sd_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_vbroadcast_sd_pd_512 */ DoesNotAccessMemory,
  /* x86_avx512_vbroadcast_ss_512 */ OnlyReadsArgumentPointees,
  /* x86_avx512_vbroadcast_ss_ps_512 */ DoesNotAccessMemory,
  /* x86_avx_addsub_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_addsub_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_blend_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_blend_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_blendv_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_blendv_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_cmp_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_cmp_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_cvt_pd2_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_cvt_pd2dq_256 */ DoesNotAccessMemory,
  /* x86_avx_cvt_ps2_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_cvt_ps2dq_256 */ DoesNotAccessMemory,
  /* x86_avx_cvtdq2_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_cvtdq2_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_cvtt_pd2dq_256 */ DoesNotAccessMemory,
  /* x86_avx_cvtt_ps2dq_256 */ DoesNotAccessMemory,
  /* x86_avx_dp_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_hadd_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_hadd_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_hsub_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_hsub_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_ldu_dq_256 */ OnlyReadsMemory,
  /* x86_avx_maskload_pd */ OnlyReadsArgumentPointees,
  /* x86_avx_maskload_pd_256 */ OnlyReadsArgumentPointees,
  /* x86_avx_maskload_ps */ OnlyReadsArgumentPointees,
  /* x86_avx_maskload_ps_256 */ OnlyReadsArgumentPointees,
  /* x86_avx_maskstore_pd */ OnlyAccessesArgumentPointees,
  /* x86_avx_maskstore_pd_256 */ OnlyAccessesArgumentPointees,
  /* x86_avx_maskstore_ps */ OnlyAccessesArgumentPointees,
  /* x86_avx_maskstore_ps_256 */ OnlyAccessesArgumentPointees,
  /* x86_avx_max_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_max_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_min_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_min_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_movmsk_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_movmsk_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_ptestc_256 */ DoesNotAccessMemory,
  /* x86_avx_ptestnzc_256 */ DoesNotAccessMemory,
  /* x86_avx_ptestz_256 */ DoesNotAccessMemory,
  /* x86_avx_rcp_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_round_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_round_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_rsqrt_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_sqrt_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_sqrt_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_storeu_dq_256 */ OnlyAccessesArgumentPointees,
  /* x86_avx_storeu_pd_256 */ OnlyAccessesArgumentPointees,
  /* x86_avx_storeu_ps_256 */ OnlyAccessesArgumentPointees,
  /* x86_avx_vbroadcastf128_pd_256 */ OnlyReadsArgumentPointees,
  /* x86_avx_vbroadcastf128_ps_256 */ OnlyReadsArgumentPointees,
  /* x86_avx_vextractf128_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_vextractf128_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_vextractf128_si_256 */ DoesNotAccessMemory,
  /* x86_avx_vinsertf128_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_vinsertf128_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_vinsertf128_si_256 */ DoesNotAccessMemory,
  /* x86_avx_vperm2f128_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_vperm2f128_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_vperm2f128_si_256 */ DoesNotAccessMemory,
  /* x86_avx_vpermilvar_pd */ DoesNotAccessMemory,
  /* x86_avx_vpermilvar_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_vpermilvar_ps */ DoesNotAccessMemory,
  /* x86_avx_vpermilvar_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_vtestc_pd */ DoesNotAccessMemory,
  /* x86_avx_vtestc_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_vtestc_ps */ DoesNotAccessMemory,
  /* x86_avx_vtestc_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_vtestnzc_pd */ DoesNotAccessMemory,
  /* x86_avx_vtestnzc_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_vtestnzc_ps */ DoesNotAccessMemory,
  /* x86_avx_vtestnzc_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_vtestz_pd */ DoesNotAccessMemory,
  /* x86_avx_vtestz_pd_256 */ DoesNotAccessMemory,
  /* x86_avx_vtestz_ps */ DoesNotAccessMemory,
  /* x86_avx_vtestz_ps_256 */ DoesNotAccessMemory,
  /* x86_avx_vzeroall */ UnknownModRefBehavior,
  /* x86_avx_vzeroupper */ UnknownModRefBehavior,
  /* x86_bmi_bextr_32 */ DoesNotAccessMemory,
  /* x86_bmi_bextr_64 */ DoesNotAccessMemory,
  /* x86_bmi_bzhi_32 */ DoesNotAccessMemory,
  /* x86_bmi_bzhi_64 */ DoesNotAccessMemory,
  /* x86_bmi_pdep_32 */ DoesNotAccessMemory,
  /* x86_bmi_pdep_64 */ DoesNotAccessMemory,
  /* x86_bmi_pext_32 */ DoesNotAccessMemory,
  /* x86_bmi_pext_64 */ DoesNotAccessMemory,
  /* x86_fma_vfmadd_pd */ DoesNotAccessMemory,
  /* x86_fma_vfmadd_pd_256 */ DoesNotAccessMemory,
  /* x86_fma_vfmadd_pd_512 */ DoesNotAccessMemory,
  /* x86_fma_vfmadd_ps */ DoesNotAccessMemory,
  /* x86_fma_vfmadd_ps_256 */ DoesNotAccessMemory,
  /* x86_fma_vfmadd_ps_512 */ DoesNotAccessMemory,
  /* x86_fma_vfmadd_sd */ DoesNotAccessMemory,
  /* x86_fma_vfmadd_ss */ DoesNotAccessMemory,
  /* x86_fma_vfmaddsub_pd */ DoesNotAccessMemory,
  /* x86_fma_vfmaddsub_pd_256 */ DoesNotAccessMemory,
  /* x86_fma_vfmaddsub_pd_512 */ DoesNotAccessMemory,
  /* x86_fma_vfmaddsub_ps */ DoesNotAccessMemory,
  /* x86_fma_vfmaddsub_ps_256 */ DoesNotAccessMemory,
  /* x86_fma_vfmaddsub_ps_512 */ DoesNotAccessMemory,
  /* x86_fma_vfmsub_pd */ DoesNotAccessMemory,
  /* x86_fma_vfmsub_pd_256 */ DoesNotAccessMemory,
  /* x86_fma_vfmsub_pd_512 */ DoesNotAccessMemory,
  /* x86_fma_vfmsub_ps */ DoesNotAccessMemory,
  /* x86_fma_vfmsub_ps_256 */ DoesNotAccessMemory,
  /* x86_fma_vfmsub_ps_512 */ DoesNotAccessMemory,
  /* x86_fma_vfmsub_sd */ DoesNotAccessMemory,
  /* x86_fma_vfmsub_ss */ DoesNotAccessMemory,
  /* x86_fma_vfmsubadd_pd */ DoesNotAccessMemory,
  /* x86_fma_vfmsubadd_pd_256 */ DoesNotAccessMemory,
  /* x86_fma_vfmsubadd_pd_512 */ DoesNotAccessMemory,
  /* x86_fma_vfmsubadd_ps */ DoesNotAccessMemory,
  /* x86_fma_vfmsubadd_ps_256 */ DoesNotAccessMemory,
  /* x86_fma_vfmsubadd_ps_512 */ DoesNotAccessMemory,
  /* x86_fma_vfnmadd_pd */ DoesNotAccessMemory,
  /* x86_fma_vfnmadd_pd_256 */ DoesNotAccessMemory,
  /* x86_fma_vfnmadd_pd_512 */ DoesNotAccessMemory,
  /* x86_fma_vfnmadd_ps */ DoesNotAccessMemory,
  /* x86_fma_vfnmadd_ps_256 */ DoesNotAccessMemory,
  /* x86_fma_vfnmadd_ps_512 */ DoesNotAccessMemory,
  /* x86_fma_vfnmadd_sd */ DoesNotAccessMemory,
  /* x86_fma_vfnmadd_ss */ DoesNotAccessMemory,
  /* x86_fma_vfnmsub_pd */ DoesNotAccessMemory,
  /* x86_fma_vfnmsub_pd_256 */ DoesNotAccessMemory,
  /* x86_fma_vfnmsub_pd_512 */ DoesNotAccessMemory,
  /* x86_fma_vfnmsub_ps */ DoesNotAccessMemory,
  /* x86_fma_vfnmsub_ps_256 */ DoesNotAccessMemory,
  /* x86_fma_vfnmsub_ps_512 */ DoesNotAccessMemory,
  /* x86_fma_vfnmsub_sd */ DoesNotAccessMemory,
  /* x86_fma_vfnmsub_ss */ DoesNotAccessMemory,
  /* x86_int */ UnknownModRefBehavior,
  /* x86_mmx_emms */ UnknownModRefBehavior,
  /* x86_mmx_femms */ UnknownModRefBehavior,
  /* x86_mmx_maskmovq */ UnknownModRefBehavior,
  /* x86_mmx_movnt_dq */ UnknownModRefBehavior,
  /* x86_mmx_packssdw */ DoesNotAccessMemory,
  /* x86_mmx_packsswb */ DoesNotAccessMemory,
  /* x86_mmx_packuswb */ DoesNotAccessMemory,
  /* x86_mmx_padd_b */ DoesNotAccessMemory,
  /* x86_mmx_padd_d */ DoesNotAccessMemory,
  /* x86_mmx_padd_q */ DoesNotAccessMemory,
  /* x86_mmx_padd_w */ DoesNotAccessMemory,
  /* x86_mmx_padds_b */ DoesNotAccessMemory,
  /* x86_mmx_padds_w */ DoesNotAccessMemory,
  /* x86_mmx_paddus_b */ DoesNotAccessMemory,
  /* x86_mmx_paddus_w */ DoesNotAccessMemory,
  /* x86_mmx_palignr_b */ DoesNotAccessMemory,
  /* x86_mmx_pand */ DoesNotAccessMemory,
  /* x86_mmx_pandn */ DoesNotAccessMemory,
  /* x86_mmx_pavg_b */ DoesNotAccessMemory,
  /* x86_mmx_pavg_w */ DoesNotAccessMemory,
  /* x86_mmx_pcmpeq_b */ DoesNotAccessMemory,
  /* x86_mmx_pcmpeq_d */ DoesNotAccessMemory,
  /* x86_mmx_pcmpeq_w */ DoesNotAccessMemory,
  /* x86_mmx_pcmpgt_b */ DoesNotAccessMemory,
  /* x86_mmx_pcmpgt_d */ DoesNotAccessMemory,
  /* x86_mmx_pcmpgt_w */ DoesNotAccessMemory,
  /* x86_mmx_pextr_w */ DoesNotAccessMemory,
  /* x86_mmx_pinsr_w */ DoesNotAccessMemory,
  /* x86_mmx_pmadd_wd */ DoesNotAccessMemory,
  /* x86_mmx_pmaxs_w */ DoesNotAccessMemory,
  /* x86_mmx_pmaxu_b */ DoesNotAccessMemory,
  /* x86_mmx_pmins_w */ DoesNotAccessMemory,
  /* x86_mmx_pminu_b */ DoesNotAccessMemory,
  /* x86_mmx_pmovmskb */ DoesNotAccessMemory,
  /* x86_mmx_pmulh_w */ DoesNotAccessMemory,
  /* x86_mmx_pmulhu_w */ DoesNotAccessMemory,
  /* x86_mmx_pmull_w */ DoesNotAccessMemory,
  /* x86_mmx_pmulu_dq */ DoesNotAccessMemory,
  /* x86_mmx_por */ DoesNotAccessMemory,
  /* x86_mmx_psad_bw */ DoesNotAccessMemory,
  /* x86_mmx_psll_d */ DoesNotAccessMemory,
  /* x86_mmx_psll_q */ DoesNotAccessMemory,
  /* x86_mmx_psll_w */ DoesNotAccessMemory,
  /* x86_mmx_pslli_d */ DoesNotAccessMemory,
  /* x86_mmx_pslli_q */ DoesNotAccessMemory,
  /* x86_mmx_pslli_w */ DoesNotAccessMemory,
  /* x86_mmx_psra_d */ DoesNotAccessMemory,
  /* x86_mmx_psra_w */ DoesNotAccessMemory,
  /* x86_mmx_psrai_d */ DoesNotAccessMemory,
  /* x86_mmx_psrai_w */ DoesNotAccessMemory,
  /* x86_mmx_psrl_d */ DoesNotAccessMemory,
  /* x86_mmx_psrl_q */ DoesNotAccessMemory,
  /* x86_mmx_psrl_w */ DoesNotAccessMemory,
  /* x86_mmx_psrli_d */ DoesNotAccessMemory,
  /* x86_mmx_psrli_q */ DoesNotAccessMemory,
  /* x86_mmx_psrli_w */ DoesNotAccessMemory,
  /* x86_mmx_psub_b */ DoesNotAccessMemory,
  /* x86_mmx_psub_d */ DoesNotAccessMemory,
  /* x86_mmx_psub_q */ DoesNotAccessMemory,
  /* x86_mmx_psub_w */ DoesNotAccessMemory,
  /* x86_mmx_psubs_b */ DoesNotAccessMemory,
  /* x86_mmx_psubs_w */ DoesNotAccessMemory,
  /* x86_mmx_psubus_b */ DoesNotAccessMemory,
  /* x86_mmx_psubus_w */ DoesNotAccessMemory,
  /* x86_mmx_punpckhbw */ DoesNotAccessMemory,
  /* x86_mmx_punpckhdq */ DoesNotAccessMemory,
  /* x86_mmx_punpckhwd */ DoesNotAccessMemory,
  /* x86_mmx_punpcklbw */ DoesNotAccessMemory,
  /* x86_mmx_punpckldq */ DoesNotAccessMemory,
  /* x86_mmx_punpcklwd */ DoesNotAccessMemory,
  /* x86_mmx_pxor */ DoesNotAccessMemory,
  /* x86_pclmulqdq */ DoesNotAccessMemory,
  /* x86_rdfsbase_32 */ UnknownModRefBehavior,
  /* x86_rdfsbase_64 */ UnknownModRefBehavior,
  /* x86_rdgsbase_32 */ UnknownModRefBehavior,
  /* x86_rdgsbase_64 */ UnknownModRefBehavior,
  /* x86_rdpmc */ UnknownModRefBehavior,
  /* x86_rdrand_16 */ UnknownModRefBehavior,
  /* x86_rdrand_32 */ UnknownModRefBehavior,
  /* x86_rdrand_64 */ UnknownModRefBehavior,
  /* x86_rdseed_16 */ UnknownModRefBehavior,
  /* x86_rdseed_32 */ UnknownModRefBehavior,
  /* x86_rdseed_64 */ UnknownModRefBehavior,
  /* x86_rdtsc */ UnknownModRefBehavior,
  /* x86_rdtscp */ OnlyAccessesArgumentPointees,
  /* x86_sha1msg1 */ DoesNotAccessMemory,
  /* x86_sha1msg2 */ DoesNotAccessMemory,
  /* x86_sha1nexte */ DoesNotAccessMemory,
  /* x86_sha1rnds4 */ DoesNotAccessMemory,
  /* x86_sha256msg1 */ DoesNotAccessMemory,
  /* x86_sha256msg2 */ DoesNotAccessMemory,
  /* x86_sha256rnds2 */ DoesNotAccessMemory,
  /* x86_sse2_add_sd */ DoesNotAccessMemory,
  /* x86_sse2_clflush */ UnknownModRefBehavior,
  /* x86_sse2_cmp_pd */ DoesNotAccessMemory,
  /* x86_sse2_cmp_sd */ DoesNotAccessMemory,
  /* x86_sse2_comieq_sd */ DoesNotAccessMemory,
  /* x86_sse2_comige_sd */ DoesNotAccessMemory,
  /* x86_sse2_comigt_sd */ DoesNotAccessMemory,
  /* x86_sse2_comile_sd */ DoesNotAccessMemory,
  /* x86_sse2_comilt_sd */ DoesNotAccessMemory,
  /* x86_sse2_comineq_sd */ DoesNotAccessMemory,
  /* x86_sse2_cvtdq2pd */ DoesNotAccessMemory,
  /* x86_sse2_cvtdq2ps */ DoesNotAccessMemory,
  /* x86_sse2_cvtpd2dq */ DoesNotAccessMemory,
  /* x86_sse2_cvtpd2ps */ DoesNotAccessMemory,
  /* x86_sse2_cvtps2dq */ DoesNotAccessMemory,
  /* x86_sse2_cvtps2pd */ DoesNotAccessMemory,
  /* x86_sse2_cvtsd2si */ DoesNotAccessMemory,
  /* x86_sse2_cvtsd2si64 */ DoesNotAccessMemory,
  /* x86_sse2_cvtsd2ss */ DoesNotAccessMemory,
  /* x86_sse2_cvtsi2sd */ DoesNotAccessMemory,
  /* x86_sse2_cvtsi642sd */ DoesNotAccessMemory,
  /* x86_sse2_cvtss2sd */ DoesNotAccessMemory,
  /* x86_sse2_cvttpd2dq */ DoesNotAccessMemory,
  /* x86_sse2_cvttps2dq */ DoesNotAccessMemory,
  /* x86_sse2_cvttsd2si */ DoesNotAccessMemory,
  /* x86_sse2_cvttsd2si64 */ DoesNotAccessMemory,
  /* x86_sse2_div_sd */ DoesNotAccessMemory,
  /* x86_sse2_lfence */ UnknownModRefBehavior,
  /* x86_sse2_maskmov_dqu */ UnknownModRefBehavior,
  /* x86_sse2_max_pd */ DoesNotAccessMemory,
  /* x86_sse2_max_sd */ DoesNotAccessMemory,
  /* x86_sse2_mfence */ UnknownModRefBehavior,
  /* x86_sse2_min_pd */ DoesNotAccessMemory,
  /* x86_sse2_min_sd */ DoesNotAccessMemory,
  /* x86_sse2_movmsk_pd */ DoesNotAccessMemory,
  /* x86_sse2_mul_sd */ DoesNotAccessMemory,
  /* x86_sse2_packssdw_128 */ DoesNotAccessMemory,
  /* x86_sse2_packsswb_128 */ DoesNotAccessMemory,
  /* x86_sse2_packuswb_128 */ DoesNotAccessMemory,
  /* x86_sse2_padds_b */ DoesNotAccessMemory,
  /* x86_sse2_padds_w */ DoesNotAccessMemory,
  /* x86_sse2_paddus_b */ DoesNotAccessMemory,
  /* x86_sse2_paddus_w */ DoesNotAccessMemory,
  /* x86_sse2_pause */ UnknownModRefBehavior,
  /* x86_sse2_pavg_b */ DoesNotAccessMemory,
  /* x86_sse2_pavg_w */ DoesNotAccessMemory,
  /* x86_sse2_pmadd_wd */ DoesNotAccessMemory,
  /* x86_sse2_pmaxs_w */ DoesNotAccessMemory,
  /* x86_sse2_pmaxu_b */ DoesNotAccessMemory,
  /* x86_sse2_pmins_w */ DoesNotAccessMemory,
  /* x86_sse2_pminu_b */ DoesNotAccessMemory,
  /* x86_sse2_pmovmskb_128 */ DoesNotAccessMemory,
  /* x86_sse2_pmulh_w */ DoesNotAccessMemory,
  /* x86_sse2_pmulhu_w */ DoesNotAccessMemory,
  /* x86_sse2_pmulu_dq */ DoesNotAccessMemory,
  /* x86_sse2_psad_bw */ DoesNotAccessMemory,
  /* x86_sse2_pshuf_d */ DoesNotAccessMemory,
  /* x86_sse2_pshufh_w */ DoesNotAccessMemory,
  /* x86_sse2_pshufl_w */ DoesNotAccessMemory,
  /* x86_sse2_psll_d */ DoesNotAccessMemory,
  /* x86_sse2_psll_dq */ DoesNotAccessMemory,
  /* x86_sse2_psll_dq_bs */ DoesNotAccessMemory,
  /* x86_sse2_psll_q */ DoesNotAccessMemory,
  /* x86_sse2_psll_w */ DoesNotAccessMemory,
  /* x86_sse2_pslli_d */ DoesNotAccessMemory,
  /* x86_sse2_pslli_q */ DoesNotAccessMemory,
  /* x86_sse2_pslli_w */ DoesNotAccessMemory,
  /* x86_sse2_psra_d */ DoesNotAccessMemory,
  /* x86_sse2_psra_w */ DoesNotAccessMemory,
  /* x86_sse2_psrai_d */ DoesNotAccessMemory,
  /* x86_sse2_psrai_w */ DoesNotAccessMemory,
  /* x86_sse2_psrl_d */ DoesNotAccessMemory,
  /* x86_sse2_psrl_dq */ DoesNotAccessMemory,
  /* x86_sse2_psrl_dq_bs */ DoesNotAccessMemory,
  /* x86_sse2_psrl_q */ DoesNotAccessMemory,
  /* x86_sse2_psrl_w */ DoesNotAccessMemory,
  /* x86_sse2_psrli_d */ DoesNotAccessMemory,
  /* x86_sse2_psrli_q */ DoesNotAccessMemory,
  /* x86_sse2_psrli_w */ DoesNotAccessMemory,
  /* x86_sse2_psubs_b */ DoesNotAccessMemory,
  /* x86_sse2_psubs_w */ DoesNotAccessMemory,
  /* x86_sse2_psubus_b */ DoesNotAccessMemory,
  /* x86_sse2_psubus_w */ DoesNotAccessMemory,
  /* x86_sse2_sqrt_pd */ DoesNotAccessMemory,
  /* x86_sse2_sqrt_sd */ DoesNotAccessMemory,
  /* x86_sse2_storel_dq */ OnlyAccessesArgumentPointees,
  /* x86_sse2_storeu_dq */ OnlyAccessesArgumentPointees,
  /* x86_sse2_storeu_pd */ OnlyAccessesArgumentPointees,
  /* x86_sse2_sub_sd */ DoesNotAccessMemory,
  /* x86_sse2_ucomieq_sd */ DoesNotAccessMemory,
  /* x86_sse2_ucomige_sd */ DoesNotAccessMemory,
  /* x86_sse2_ucomigt_sd */ DoesNotAccessMemory,
  /* x86_sse2_ucomile_sd */ DoesNotAccessMemory,
  /* x86_sse2_ucomilt_sd */ DoesNotAccessMemory,
  /* x86_sse2_ucomineq_sd */ DoesNotAccessMemory,
  /* x86_sse3_addsub_pd */ DoesNotAccessMemory,
  /* x86_sse3_addsub_ps */ DoesNotAccessMemory,
  /* x86_sse3_hadd_pd */ DoesNotAccessMemory,
  /* x86_sse3_hadd_ps */ DoesNotAccessMemory,
  /* x86_sse3_hsub_pd */ DoesNotAccessMemory,
  /* x86_sse3_hsub_ps */ DoesNotAccessMemory,
  /* x86_sse3_ldu_dq */ OnlyReadsMemory,
  /* x86_sse3_monitor */ UnknownModRefBehavior,
  /* x86_sse3_mwait */ UnknownModRefBehavior,
  /* x86_sse41_blendpd */ DoesNotAccessMemory,
  /* x86_sse41_blendps */ DoesNotAccessMemory,
  /* x86_sse41_blendvpd */ DoesNotAccessMemory,
  /* x86_sse41_blendvps */ DoesNotAccessMemory,
  /* x86_sse41_dppd */ DoesNotAccessMemory,
  /* x86_sse41_dpps */ DoesNotAccessMemory,
  /* x86_sse41_extractps */ DoesNotAccessMemory,
  /* x86_sse41_insertps */ DoesNotAccessMemory,
  /* x86_sse41_movntdqa */ OnlyReadsMemory,
  /* x86_sse41_mpsadbw */ DoesNotAccessMemory,
  /* x86_sse41_packusdw */ DoesNotAccessMemory,
  /* x86_sse41_pblendvb */ DoesNotAccessMemory,
  /* x86_sse41_pblendw */ DoesNotAccessMemory,
  /* x86_sse41_pextrb */ DoesNotAccessMemory,
  /* x86_sse41_pextrd */ DoesNotAccessMemory,
  /* x86_sse41_pextrq */ DoesNotAccessMemory,
  /* x86_sse41_phminposuw */ DoesNotAccessMemory,
  /* x86_sse41_pmaxsb */ DoesNotAccessMemory,
  /* x86_sse41_pmaxsd */ DoesNotAccessMemory,
  /* x86_sse41_pmaxud */ DoesNotAccessMemory,
  /* x86_sse41_pmaxuw */ DoesNotAccessMemory,
  /* x86_sse41_pminsb */ DoesNotAccessMemory,
  /* x86_sse41_pminsd */ DoesNotAccessMemory,
  /* x86_sse41_pminud */ DoesNotAccessMemory,
  /* x86_sse41_pminuw */ DoesNotAccessMemory,
  /* x86_sse41_pmovsxbd */ DoesNotAccessMemory,
  /* x86_sse41_pmovsxbq */ DoesNotAccessMemory,
  /* x86_sse41_pmovsxbw */ DoesNotAccessMemory,
  /* x86_sse41_pmovsxdq */ DoesNotAccessMemory,
  /* x86_sse41_pmovsxwd */ DoesNotAccessMemory,
  /* x86_sse41_pmovsxwq */ DoesNotAccessMemory,
  /* x86_sse41_pmovzxbd */ DoesNotAccessMemory,
  /* x86_sse41_pmovzxbq */ DoesNotAccessMemory,
  /* x86_sse41_pmovzxbw */ DoesNotAccessMemory,
  /* x86_sse41_pmovzxdq */ DoesNotAccessMemory,
  /* x86_sse41_pmovzxwd */ DoesNotAccessMemory,
  /* x86_sse41_pmovzxwq */ DoesNotAccessMemory,
  /* x86_sse41_pmuldq */ DoesNotAccessMemory,
  /* x86_sse41_ptestc */ DoesNotAccessMemory,
  /* x86_sse41_ptestnzc */ DoesNotAccessMemory,
  /* x86_sse41_ptestz */ DoesNotAccessMemory,
  /* x86_sse41_round_pd */ DoesNotAccessMemory,
  /* x86_sse41_round_ps */ DoesNotAccessMemory,
  /* x86_sse41_round_sd */ DoesNotAccessMemory,
  /* x86_sse41_round_ss */ DoesNotAccessMemory,
  /* x86_sse42_crc32_32_16 */ DoesNotAccessMemory,
  /* x86_sse42_crc32_32_32 */ DoesNotAccessMemory,
  /* x86_sse42_crc32_32_8 */ DoesNotAccessMemory,
  /* x86_sse42_crc32_64_64 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpestri128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpestria128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpestric128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpestrio128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpestris128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpestriz128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpestrm128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpistri128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpistria128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpistric128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpistrio128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpistris128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpistriz128 */ DoesNotAccessMemory,
  /* x86_sse42_pcmpistrm128 */ DoesNotAccessMemory,
  /* x86_sse4a_extrq */ DoesNotAccessMemory,
  /* x86_sse4a_extrqi */ DoesNotAccessMemory,
  /* x86_sse4a_insertq */ DoesNotAccessMemory,
  /* x86_sse4a_insertqi */ DoesNotAccessMemory,
  /* x86_sse4a_movnt_sd */ UnknownModRefBehavior,
  /* x86_sse4a_movnt_ss */ UnknownModRefBehavior,
  /* x86_sse_add_ss */ DoesNotAccessMemory,
  /* x86_sse_cmp_ps */ DoesNotAccessMemory,
  /* x86_sse_cmp_ss */ DoesNotAccessMemory,
  /* x86_sse_comieq_ss */ DoesNotAccessMemory,
  /* x86_sse_comige_ss */ DoesNotAccessMemory,
  /* x86_sse_comigt_ss */ DoesNotAccessMemory,
  /* x86_sse_comile_ss */ DoesNotAccessMemory,
  /* x86_sse_comilt_ss */ DoesNotAccessMemory,
  /* x86_sse_comineq_ss */ DoesNotAccessMemory,
  /* x86_sse_cvtpd2pi */ DoesNotAccessMemory,
  /* x86_sse_cvtpi2pd */ DoesNotAccessMemory,
  /* x86_sse_cvtpi2ps */ DoesNotAccessMemory,
  /* x86_sse_cvtps2pi */ DoesNotAccessMemory,
  /* x86_sse_cvtsi2ss */ DoesNotAccessMemory,
  /* x86_sse_cvtsi642ss */ DoesNotAccessMemory,
  /* x86_sse_cvtss2si */ DoesNotAccessMemory,
  /* x86_sse_cvtss2si64 */ DoesNotAccessMemory,
  /* x86_sse_cvttpd2pi */ DoesNotAccessMemory,
  /* x86_sse_cvttps2pi */ DoesNotAccessMemory,
  /* x86_sse_cvttss2si */ DoesNotAccessMemory,
  /* x86_sse_cvttss2si64 */ DoesNotAccessMemory,
  /* x86_sse_div_ss */ DoesNotAccessMemory,
  /* x86_sse_ldmxcsr */ UnknownModRefBehavior,
  /* x86_sse_max_ps */ DoesNotAccessMemory,
  /* x86_sse_max_ss */ DoesNotAccessMemory,
  /* x86_sse_min_ps */ DoesNotAccessMemory,
  /* x86_sse_min_ss */ DoesNotAccessMemory,
  /* x86_sse_movmsk_ps */ DoesNotAccessMemory,
  /* x86_sse_mul_ss */ DoesNotAccessMemory,
  /* x86_sse_pshuf_w */ DoesNotAccessMemory,
  /* x86_sse_rcp_ps */ DoesNotAccessMemory,
  /* x86_sse_rcp_ss */ DoesNotAccessMemory,
  /* x86_sse_rsqrt_ps */ DoesNotAccessMemory,
  /* x86_sse_rsqrt_ss */ DoesNotAccessMemory,
  /* x86_sse_sfence */ UnknownModRefBehavior,
  /* x86_sse_sqrt_ps */ DoesNotAccessMemory,
  /* x86_sse_sqrt_ss */ DoesNotAccessMemory,
  /* x86_sse_stmxcsr */ UnknownModRefBehavior,
  /* x86_sse_storeu_ps */ OnlyAccessesArgumentPointees,
  /* x86_sse_sub_ss */ DoesNotAccessMemory,
  /* x86_sse_ucomieq_ss */ DoesNotAccessMemory,
  /* x86_sse_ucomige_ss */ DoesNotAccessMemory,
  /* x86_sse_ucomigt_ss */ DoesNotAccessMemory,
  /* x86_sse_ucomile_ss */ DoesNotAccessMemory,
  /* x86_sse_ucomilt_ss */ DoesNotAccessMemory,
  /* x86_sse_ucomineq_ss */ DoesNotAccessMemory,
  /* x86_ssse3_pabs_b */ DoesNotAccessMemory,
  /* x86_ssse3_pabs_b_128 */ DoesNotAccessMemory,
  /* x86_ssse3_pabs_d */ DoesNotAccessMemory,
  /* x86_ssse3_pabs_d_128 */ DoesNotAccessMemory,
  /* x86_ssse3_pabs_w */ DoesNotAccessMemory,
  /* x86_ssse3_pabs_w_128 */ DoesNotAccessMemory,
  /* x86_ssse3_phadd_d */ DoesNotAccessMemory,
  /* x86_ssse3_phadd_d_128 */ DoesNotAccessMemory,
  /* x86_ssse3_phadd_sw */ DoesNotAccessMemory,
  /* x86_ssse3_phadd_sw_128 */ DoesNotAccessMemory,
  /* x86_ssse3_phadd_w */ DoesNotAccessMemory,
  /* x86_ssse3_phadd_w_128 */ DoesNotAccessMemory,
  /* x86_ssse3_phsub_d */ DoesNotAccessMemory,
  /* x86_ssse3_phsub_d_128 */ DoesNotAccessMemory,
  /* x86_ssse3_phsub_sw */ DoesNotAccessMemory,
  /* x86_ssse3_phsub_sw_128 */ DoesNotAccessMemory,
  /* x86_ssse3_phsub_w */ DoesNotAccessMemory,
  /* x86_ssse3_phsub_w_128 */ DoesNotAccessMemory,
  /* x86_ssse3_pmadd_ub_sw */ DoesNotAccessMemory,
  /* x86_ssse3_pmadd_ub_sw_128 */ DoesNotAccessMemory,
  /* x86_ssse3_pmul_hr_sw */ DoesNotAccessMemory,
  /* x86_ssse3_pmul_hr_sw_128 */ DoesNotAccessMemory,
  /* x86_ssse3_pshuf_b */ DoesNotAccessMemory,
  /* x86_ssse3_pshuf_b_128 */ DoesNotAccessMemory,
  /* x86_ssse3_psign_b */ DoesNotAccessMemory,
  /* x86_ssse3_psign_b_128 */ DoesNotAccessMemory,
  /* x86_ssse3_psign_d */ DoesNotAccessMemory,
  /* x86_ssse3_psign_d_128 */ DoesNotAccessMemory,
  /* x86_ssse3_psign_w */ DoesNotAccessMemory,
  /* x86_ssse3_psign_w_128 */ DoesNotAccessMemory,
  /* x86_tbm_bextri_u32 */ DoesNotAccessMemory,
  /* x86_tbm_bextri_u64 */ DoesNotAccessMemory,
  /* x86_vcvtph2ps_128 */ DoesNotAccessMemory,
  /* x86_vcvtph2ps_256 */ DoesNotAccessMemory,
  /* x86_vcvtps2ph_128 */ DoesNotAccessMemory,
  /* x86_vcvtps2ph_256 */ DoesNotAccessMemory,
  /* x86_wrfsbase_32 */ UnknownModRefBehavior,
  /* x86_wrfsbase_64 */ UnknownModRefBehavior,
  /* x86_wrgsbase_32 */ UnknownModRefBehavior,
  /* x86_wrgsbase_64 */ UnknownModRefBehavior,
  /* x86_xabort */ UnknownModRefBehavior,
  /* x86_xbegin */ UnknownModRefBehavior,
  /* x86_xend */ UnknownModRefBehavior,
  /* x86_xop_vfrcz_pd */ DoesNotAccessMemory,
  /* x86_xop_vfrcz_pd_256 */ DoesNotAccessMemory,
  /* x86_xop_vfrcz_ps */ DoesNotAccessMemory,
  /* x86_xop_vfrcz_ps_256 */ DoesNotAccessMemory,
  /* x86_xop_vfrcz_sd */ DoesNotAccessMemory,
  /* x86_xop_vfrcz_ss */ DoesNotAccessMemory,
  /* x86_xop_vpcmov */ DoesNotAccessMemory,
  /* x86_xop_vpcmov_256 */ DoesNotAccessMemory,
  /* x86_xop_vpcomb */ DoesNotAccessMemory,
  /* x86_xop_vpcomd */ DoesNotAccessMemory,
  /* x86_xop_vpcomq */ DoesNotAccessMemory,
  /* x86_xop_vpcomub */ DoesNotAccessMemory,
  /* x86_xop_vpcomud */ DoesNotAccessMemory,
  /* x86_xop_vpcomuq */ DoesNotAccessMemory,
  /* x86_xop_vpcomuw */ DoesNotAccessMemory,
  /* x86_xop_vpcomw */ DoesNotAccessMemory,
  /* x86_xop_vpermil2pd */ DoesNotAccessMemory,
  /* x86_xop_vpermil2pd_256 */ DoesNotAccessMemory,
  /* x86_xop_vpermil2ps */ DoesNotAccessMemory,
  /* x86_xop_vpermil2ps_256 */ DoesNotAccessMemory,
  /* x86_xop_vphaddbd */ DoesNotAccessMemory,
  /* x86_xop_vphaddbq */ DoesNotAccessMemory,
  /* x86_xop_vphaddbw */ DoesNotAccessMemory,
  /* x86_xop_vphadddq */ DoesNotAccessMemory,
  /* x86_xop_vphaddubd */ DoesNotAccessMemory,
  /* x86_xop_vphaddubq */ DoesNotAccessMemory,
  /* x86_xop_vphaddubw */ DoesNotAccessMemory,
  /* x86_xop_vphaddudq */ DoesNotAccessMemory,
  /* x86_xop_vphadduwd */ DoesNotAccessMemory,
  /* x86_xop_vphadduwq */ DoesNotAccessMemory,
  /* x86_xop_vphaddwd */ DoesNotAccessMemory,
  /* x86_xop_vphaddwq */ DoesNotAccessMemory,
  /* x86_xop_vphsubbw */ DoesNotAccessMemory,
  /* x86_xop_vphsubdq */ DoesNotAccessMemory,
  /* x86_xop_vphsubwd */ DoesNotAccessMemory,
  /* x86_xop_vpmacsdd */ DoesNotAccessMemory,
  /* x86_xop_vpmacsdqh */ DoesNotAccessMemory,
  /* x86_xop_vpmacsdql */ DoesNotAccessMemory,
  /* x86_xop_vpmacssdd */ DoesNotAccessMemory,
  /* x86_xop_vpmacssdqh */ DoesNotAccessMemory,
  /* x86_xop_vpmacssdql */ DoesNotAccessMemory,
  /* x86_xop_vpmacsswd */ DoesNotAccessMemory,
  /* x86_xop_vpmacssww */ DoesNotAccessMemory,
  /* x86_xop_vpmacswd */ DoesNotAccessMemory,
  /* x86_xop_vpmacsww */ DoesNotAccessMemory,
  /* x86_xop_vpmadcsswd */ DoesNotAccessMemory,
  /* x86_xop_vpmadcswd */ DoesNotAccessMemory,
  /* x86_xop_vpperm */ DoesNotAccessMemory,
  /* x86_xop_vprotb */ DoesNotAccessMemory,
  /* x86_xop_vprotbi */ DoesNotAccessMemory,
  /* x86_xop_vprotd */ DoesNotAccessMemory,
  /* x86_xop_vprotdi */ DoesNotAccessMemory,
  /* x86_xop_vprotq */ DoesNotAccessMemory,
  /* x86_xop_vprotqi */ DoesNotAccessMemory,
  /* x86_xop_vprotw */ DoesNotAccessMemory,
  /* x86_xop_vprotwi */ DoesNotAccessMemory,
  /* x86_xop_vpshab */ DoesNotAccessMemory,
  /* x86_xop_vpshad */ DoesNotAccessMemory,
  /* x86_xop_vpshaq */ DoesNotAccessMemory,
  /* x86_xop_vpshaw */ DoesNotAccessMemory,
  /* x86_xop_vpshlb */ DoesNotAccessMemory,
  /* x86_xop_vpshld */ DoesNotAccessMemory,
  /* x86_xop_vpshlq */ DoesNotAccessMemory,
  /* x86_xop_vpshlw */ DoesNotAccessMemory,
  /* x86_xtest */ UnknownModRefBehavior,
  /* xcore_bitrev */ DoesNotAccessMemory,
  /* xcore_checkevent */ UnknownModRefBehavior,
  /* xcore_chkct */ UnknownModRefBehavior,
  /* xcore_clre */ UnknownModRefBehavior,
  /* xcore_clrpt */ UnknownModRefBehavior,
  /* xcore_clrsr */ UnknownModRefBehavior,
  /* xcore_crc32 */ DoesNotAccessMemory,
  /* xcore_crc8 */ DoesNotAccessMemory,
  /* xcore_edu */ UnknownModRefBehavior,
  /* xcore_eeu */ UnknownModRefBehavior,
  /* xcore_endin */ UnknownModRefBehavior,
  /* xcore_freer */ UnknownModRefBehavior,
  /* xcore_geted */ UnknownModRefBehavior,
  /* xcore_getet */ UnknownModRefBehavior,
  /* xcore_getid */ DoesNotAccessMemory,
  /* xcore_getps */ UnknownModRefBehavior,
  /* xcore_getr */ UnknownModRefBehavior,
  /* xcore_getst */ UnknownModRefBehavior,
  /* xcore_getts */ UnknownModRefBehavior,
  /* xcore_in */ UnknownModRefBehavior,
  /* xcore_inct */ UnknownModRefBehavior,
  /* xcore_initcp */ UnknownModRefBehavior,
  /* xcore_initdp */ UnknownModRefBehavior,
  /* xcore_initlr */ UnknownModRefBehavior,
  /* xcore_initpc */ UnknownModRefBehavior,
  /* xcore_initsp */ UnknownModRefBehavior,
  /* xcore_inshr */ UnknownModRefBehavior,
  /* xcore_int */ UnknownModRefBehavior,
  /* xcore_mjoin */ UnknownModRefBehavior,
  /* xcore_msync */ UnknownModRefBehavior,
  /* xcore_out */ UnknownModRefBehavior,
  /* xcore_outct */ UnknownModRefBehavior,
  /* xcore_outshr */ UnknownModRefBehavior,
  /* xcore_outt */ UnknownModRefBehavior,
  /* xcore_peek */ UnknownModRefBehavior,
  /* xcore_setc */ UnknownModRefBehavior,
  /* xcore_setclk */ UnknownModRefBehavior,
  /* xcore_setd */ UnknownModRefBehavior,
  /* xcore_setev */ UnknownModRefBehavior,
  /* xcore_setps */ UnknownModRefBehavior,
  /* xcore_setpsc */ UnknownModRefBehavior,
  /* xcore_setpt */ UnknownModRefBehavior,
  /* xcore_setrdy */ UnknownModRefBehavior,
  /* xcore_setsr */ UnknownModRefBehavior,
  /* xcore_settw */ UnknownModRefBehavior,
  /* xcore_setv */ UnknownModRefBehavior,
  /* xcore_sext */ DoesNotAccessMemory,
  /* xcore_ssync */ UnknownModRefBehavior,
  /* xcore_syncr */ UnknownModRefBehavior,
  /* xcore_testct */ UnknownModRefBehavior,
  /* xcore_testwct */ UnknownModRefBehavior,
  /* xcore_waitevent */ OnlyReadsMemory,
  /* xcore_zext */ DoesNotAccessMemory,
};

return static_cast<ModRefBehavior>(IntrinsicModRefBehavior[iid]);
#endif // GET_INTRINSIC_MODREF_BEHAVIOR

// 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 10:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_h2f", 10))
      break;
    return Intrinsic::nvvm_h2f;	 // "__nvvm_h2f"
  case 11:	 // 2 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
      break;
    switch (BuiltinName[7]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "ar0", 3))
        break;
      return Intrinsic::nvvm_barrier0;	 // "__nvvm_bar0"
    case 'p':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "rmt", 3))
        break;
      return Intrinsic::nvvm_prmt;	 // "__nvvm_prmt"
    }
    break;
  case 12:	 // 5 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
      break;
    switch (BuiltinName[7]) {
    default: break;
    case 'a':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "bs_i", 4))
        break;
      return Intrinsic::nvvm_abs_i;	 // "__nvvm_abs_i"
    case 'c':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "lz_i", 4))
        break;
      return Intrinsic::nvvm_clz_i;	 // "__nvvm_clz_i"
    case 'm':	 // 2 strings to match.
      switch (BuiltinName[8]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+9, "x_i", 3))
          break;
        return Intrinsic::nvvm_max_i;	 // "__nvvm_max_i"
      case 'i':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+9, "n_i", 3))
          break;
        return Intrinsic::nvvm_min_i;	 // "__nvvm_min_i"
      }
      break;
    case 's':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "ad_i", 4))
        break;
      return Intrinsic::nvvm_sad_i;	 // "__nvvm_sad_i"
    }
    break;
  case 13:	 // 43 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'n':	 // 42 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "bs_ll", 5))
          break;
        return Intrinsic::nvvm_abs_ll;	 // "__nvvm_abs_ll"
      case 'b':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+8, "rev", 3))
          break;
        switch (BuiltinName[11]) {
        default: break;
        case '3':	 // 1 string to match.
          if (BuiltinName[12] != '2')
            break;
          return Intrinsic::nvvm_brev32;	 // "__nvvm_brev32"
        case '6':	 // 1 string to match.
          if (BuiltinName[12] != '4')
            break;
          return Intrinsic::nvvm_brev64;	 // "__nvvm_brev64"
        }
        break;
      case 'c':	 // 3 strings to match.
        switch (BuiltinName[8]) {
        default: break;
        case 'e':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+9, "il_", 3))
            break;
          switch (BuiltinName[12]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_ceil_d;	 // "__nvvm_ceil_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_ceil_f;	 // "__nvvm_ceil_f"
          }
          break;
        case 'l':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "z_ll", 4))
            break;
          return Intrinsic::nvvm_clz_ll;	 // "__nvvm_clz_ll"
        }
        break;
      case 'd':	 // 10 strings to match.
        if (BuiltinName[8] != '2')
          break;
        switch (BuiltinName[9]) {
        default: break;
        case 'f':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+10, "_r", 2))
            break;
          switch (BuiltinName[12]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_d2f_rm;	 // "__nvvm_d2f_rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_d2f_rn;	 // "__nvvm_d2f_rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_d2f_rp;	 // "__nvvm_d2f_rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_d2f_rz;	 // "__nvvm_d2f_rz"
          }
          break;
        case 'i':	 // 6 strings to match.
          if (BuiltinName[10] != '_')
            break;
          switch (BuiltinName[11]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (BuiltinName[12] != 'i')
              break;
            return Intrinsic::nvvm_d2i_hi;	 // "__nvvm_d2i_hi"
          case 'l':	 // 1 string to match.
            if (BuiltinName[12] != 'o')
              break;
            return Intrinsic::nvvm_d2i_lo;	 // "__nvvm_d2i_lo"
          case 'r':	 // 4 strings to match.
            switch (BuiltinName[12]) {
            default: break;
            case 'm':	 // 1 string to match.
              return Intrinsic::nvvm_d2i_rm;	 // "__nvvm_d2i_rm"
            case 'n':	 // 1 string to match.
              return Intrinsic::nvvm_d2i_rn;	 // "__nvvm_d2i_rn"
            case 'p':	 // 1 string to match.
              return Intrinsic::nvvm_d2i_rp;	 // "__nvvm_d2i_rp"
            case 'z':	 // 1 string to match.
              return Intrinsic::nvvm_d2i_rz;	 // "__nvvm_d2i_rz"
            }
            break;
          }
          break;
        }
        break;
      case 'f':	 // 11 strings to match.
        switch (BuiltinName[8]) {
        default: break;
        case '2':	 // 5 strings to match.
          switch (BuiltinName[9]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+10, "_rn", 3))
              break;
            return Intrinsic::nvvm_f2h_rn;	 // "__nvvm_f2h_rn"
          case 'i':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+10, "_r", 2))
              break;
            switch (BuiltinName[12]) {
            default: break;
            case 'm':	 // 1 string to match.
              return Intrinsic::nvvm_f2i_rm;	 // "__nvvm_f2i_rm"
            case 'n':	 // 1 string to match.
              return Intrinsic::nvvm_f2i_rn;	 // "__nvvm_f2i_rn"
            case 'p':	 // 1 string to match.
              return Intrinsic::nvvm_f2i_rp;	 // "__nvvm_f2i_rp"
            case 'z':	 // 1 string to match.
              return Intrinsic::nvvm_f2i_rz;	 // "__nvvm_f2i_rz"
            }
            break;
          }
          break;
        case 'a':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+9, "bs_", 3))
            break;
          switch (BuiltinName[12]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_fabs_d;	 // "__nvvm_fabs_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_fabs_f;	 // "__nvvm_fabs_f"
          }
          break;
        case 'm':	 // 4 strings to match.
          switch (BuiltinName[9]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+10, "x_", 2))
              break;
            switch (BuiltinName[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_fmax_d;	 // "__nvvm_fmax_d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_fmax_f;	 // "__nvvm_fmax_f"
            }
            break;
          case 'i':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+10, "n_", 2))
              break;
            switch (BuiltinName[12]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::nvvm_fmin_d;	 // "__nvvm_fmin_d"
            case 'f':	 // 1 string to match.
              return Intrinsic::nvvm_fmin_f;	 // "__nvvm_fmin_f"
            }
            break;
          }
          break;
        }
        break;
      case 'i':	 // 8 strings to match.
        if (BuiltinName[8] != '2')
          break;
        switch (BuiltinName[9]) {
        default: break;
        case 'd':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+10, "_r", 2))
            break;
          switch (BuiltinName[12]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_i2d_rm;	 // "__nvvm_i2d_rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_i2d_rn;	 // "__nvvm_i2d_rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_i2d_rp;	 // "__nvvm_i2d_rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_i2d_rz;	 // "__nvvm_i2d_rz"
          }
          break;
        case 'f':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+10, "_r", 2))
            break;
          switch (BuiltinName[12]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_i2f_rm;	 // "__nvvm_i2f_rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_i2f_rn;	 // "__nvvm_i2f_rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_i2f_rp;	 // "__nvvm_i2f_rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_i2f_rz;	 // "__nvvm_i2f_rz"
          }
          break;
        }
        break;
      case 'm':	 // 4 strings to match.
        switch (BuiltinName[8]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+9, "x_", 2))
            break;
          switch (BuiltinName[11]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (BuiltinName[12] != 'l')
              break;
            return Intrinsic::nvvm_max_ll;	 // "__nvvm_max_ll"
          case 'u':	 // 1 string to match.
            if (BuiltinName[12] != 'i')
              break;
            return Intrinsic::nvvm_max_ui;	 // "__nvvm_max_ui"
          }
          break;
        case 'i':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+9, "n_", 2))
            break;
          switch (BuiltinName[11]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (BuiltinName[12] != 'l')
              break;
            return Intrinsic::nvvm_min_ll;	 // "__nvvm_min_ll"
          case 'u':	 // 1 string to match.
            if (BuiltinName[12] != 'i')
              break;
            return Intrinsic::nvvm_min_ui;	 // "__nvvm_min_ui"
          }
          break;
        }
        break;
      case 'p':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "opc_i", 5))
          break;
        return Intrinsic::nvvm_popc_i;	 // "__nvvm_popc_i"
      case 's':	 // 2 strings to match.
        switch (BuiltinName[8]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "d_ui", 4))
            break;
          return Intrinsic::nvvm_sad_ui;	 // "__nvvm_sad_ui"
        case 'q':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "rt_f", 4))
            break;
          return Intrinsic::nvvm_sqrt_f;	 // "__nvvm_sqrt_f"
        }
        break;
      }
      break;
    case 's':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+3, "yncthreads", 10))
        break;
      return Intrinsic::cuda_syncthreads;	 // "__syncthreads"
    }
    break;
  case 14:	 // 45 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_trap", 11))
        break;
      return Intrinsic::trap;	 // "__builtin_trap"
    case 'n':	 // 44 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 'b':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "ar0_or", 6))
          break;
        return Intrinsic::nvvm_barrier0_or;	 // "__nvvm_bar0_or"
      case 'd':	 // 8 strings to match.
        if (BuiltinName[8] != '2')
          break;
        switch (BuiltinName[9]) {
        default: break;
        case 'l':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+10, "l_r", 3))
            break;
          switch (BuiltinName[13]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_d2ll_rm;	 // "__nvvm_d2ll_rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_d2ll_rn;	 // "__nvvm_d2ll_rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_d2ll_rp;	 // "__nvvm_d2ll_rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_d2ll_rz;	 // "__nvvm_d2ll_rz"
          }
          break;
        case 'u':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+10, "i_r", 3))
            break;
          switch (BuiltinName[13]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_d2ui_rm;	 // "__nvvm_d2ui_rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_d2ui_rn;	 // "__nvvm_d2ui_rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_d2ui_rp;	 // "__nvvm_d2ui_rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_d2ui_rz;	 // "__nvvm_d2ui_rz"
          }
          break;
        }
        break;
      case 'f':	 // 10 strings to match.
        switch (BuiltinName[8]) {
        default: break;
        case '2':	 // 8 strings to match.
          switch (BuiltinName[9]) {
          default: break;
          case 'l':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+10, "l_r", 3))
              break;
            switch (BuiltinName[13]) {
            default: break;
            case 'm':	 // 1 string to match.
              return Intrinsic::nvvm_f2ll_rm;	 // "__nvvm_f2ll_rm"
            case 'n':	 // 1 string to match.
              return Intrinsic::nvvm_f2ll_rn;	 // "__nvvm_f2ll_rn"
            case 'p':	 // 1 string to match.
              return Intrinsic::nvvm_f2ll_rp;	 // "__nvvm_f2ll_rp"
            case 'z':	 // 1 string to match.
              return Intrinsic::nvvm_f2ll_rz;	 // "__nvvm_f2ll_rz"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+10, "i_r", 3))
              break;
            switch (BuiltinName[13]) {
            default: break;
            case 'm':	 // 1 string to match.
              return Intrinsic::nvvm_f2ui_rm;	 // "__nvvm_f2ui_rm"
            case 'n':	 // 1 string to match.
              return Intrinsic::nvvm_f2ui_rn;	 // "__nvvm_f2ui_rn"
            case 'p':	 // 1 string to match.
              return Intrinsic::nvvm_f2ui_rp;	 // "__nvvm_f2ui_rp"
            case 'z':	 // 1 string to match.
              return Intrinsic::nvvm_f2ui_rz;	 // "__nvvm_f2ui_rz"
            }
            break;
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+9, "oor_", 4))
            break;
          switch (BuiltinName[13]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_floor_d;	 // "__nvvm_floor_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_floor_f;	 // "__nvvm_floor_f"
          }
          break;
        }
        break;
      case 'l':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+8, "l2", 2))
          break;
        switch (BuiltinName[10]) {
        default: break;
        case 'd':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+11, "_r", 2))
            break;
          switch (BuiltinName[13]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_ll2d_rm;	 // "__nvvm_ll2d_rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_ll2d_rn;	 // "__nvvm_ll2d_rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_ll2d_rp;	 // "__nvvm_ll2d_rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_ll2d_rz;	 // "__nvvm_ll2d_rz"
          }
          break;
        case 'f':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+11, "_r", 2))
            break;
          switch (BuiltinName[13]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_ll2f_rm;	 // "__nvvm_ll2f_rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_ll2f_rn;	 // "__nvvm_ll2f_rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_ll2f_rp;	 // "__nvvm_ll2f_rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_ll2f_rz;	 // "__nvvm_ll2f_rz"
          }
          break;
        }
        break;
      case 'm':	 // 4 strings to match.
        switch (BuiltinName[8]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "x_ull", 5))
            break;
          return Intrinsic::nvvm_max_ull;	 // "__nvvm_max_ull"
        case 'i':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "n_ull", 5))
            break;
          return Intrinsic::nvvm_min_ull;	 // "__nvvm_min_ull"
        case 'u':	 // 2 strings to match.
          if (BuiltinName[9] != 'l')
            break;
          switch (BuiltinName[10]) {
          default: break;
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+11, "4_i", 3))
              break;
            return Intrinsic::nvvm_mul24_i;	 // "__nvvm_mul24_i"
          case 'h':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+11, "i_i", 3))
              break;
            return Intrinsic::nvvm_mulhi_i;	 // "__nvvm_mulhi_i"
          }
          break;
        }
        break;
      case 'p':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "opc_ll", 6))
          break;
        return Intrinsic::nvvm_popc_ll;	 // "__nvvm_popc_ll"
      case 'r':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+8, "ound_", 5))
          break;
        switch (BuiltinName[13]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_round_d;	 // "__nvvm_round_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_round_f;	 // "__nvvm_round_f"
        }
        break;
      case 't':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+8, "runc_", 5))
          break;
        switch (BuiltinName[13]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_trunc_d;	 // "__nvvm_trunc_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_trunc_f;	 // "__nvvm_trunc_f"
        }
        break;
      case 'u':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+8, "i2", 2))
          break;
        switch (BuiltinName[10]) {
        default: break;
        case 'd':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+11, "_r", 2))
            break;
          switch (BuiltinName[13]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_ui2d_rm;	 // "__nvvm_ui2d_rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_ui2d_rn;	 // "__nvvm_ui2d_rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_ui2d_rp;	 // "__nvvm_ui2d_rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_ui2d_rz;	 // "__nvvm_ui2d_rz"
          }
          break;
        case 'f':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+11, "_r", 2))
            break;
          switch (BuiltinName[13]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::nvvm_ui2f_rm;	 // "__nvvm_ui2f_rm"
          case 'n':	 // 1 string to match.
            return Intrinsic::nvvm_ui2f_rn;	 // "__nvvm_ui2f_rn"
          case 'p':	 // 1 string to match.
            return Intrinsic::nvvm_ui2f_rp;	 // "__nvvm_ui2f_rp"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_ui2f_rz;	 // "__nvvm_ui2f_rz"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 15:	 // 61 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
      break;
    switch (BuiltinName[7]) {
    default: break;
    case 'a':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+8, "dd_r", 4))
        break;
      switch (BuiltinName[12]) {
      default: break;
      case 'm':	 // 2 strings to match.
        if (BuiltinName[13] != '_')
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_add_rm_d;	 // "__nvvm_add_rm_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_add_rm_f;	 // "__nvvm_add_rm_f"
        }
        break;
      case 'n':	 // 2 strings to match.
        if (BuiltinName[13] != '_')
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_add_rn_d;	 // "__nvvm_add_rn_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_add_rn_f;	 // "__nvvm_add_rn_f"
        }
        break;
      case 'p':	 // 2 strings to match.
        if (BuiltinName[13] != '_')
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_add_rp_d;	 // "__nvvm_add_rp_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_add_rp_f;	 // "__nvvm_add_rp_f"
        }
        break;
      case 'z':	 // 2 strings to match.
        if (BuiltinName[13] != '_')
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_add_rz_d;	 // "__nvvm_add_rz_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_add_rz_f;	 // "__nvvm_add_rz_f"
        }
        break;
      }
      break;
    case 'b':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "ar0_and", 7))
        break;
      return Intrinsic::nvvm_barrier0_and;	 // "__nvvm_bar0_and"
    case 'd':	 // 12 strings to match.
      switch (BuiltinName[8]) {
      default: break;
      case '2':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+9, "ull_r", 5))
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'm':	 // 1 string to match.
          return Intrinsic::nvvm_d2ull_rm;	 // "__nvvm_d2ull_rm"
        case 'n':	 // 1 string to match.
          return Intrinsic::nvvm_d2ull_rn;	 // "__nvvm_d2ull_rn"
        case 'p':	 // 1 string to match.
          return Intrinsic::nvvm_d2ull_rp;	 // "__nvvm_d2ull_rp"
        case 'z':	 // 1 string to match.
          return Intrinsic::nvvm_d2ull_rz;	 // "__nvvm_d2ull_rz"
        }
        break;
      case 'i':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+9, "v_r", 3))
          break;
        switch (BuiltinName[12]) {
        default: break;
        case 'm':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_div_rm_d;	 // "__nvvm_div_rm_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_div_rm_f;	 // "__nvvm_div_rm_f"
          }
          break;
        case 'n':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_div_rn_d;	 // "__nvvm_div_rn_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_div_rn_f;	 // "__nvvm_div_rn_f"
          }
          break;
        case 'p':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_div_rp_d;	 // "__nvvm_div_rp_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_div_rp_f;	 // "__nvvm_div_rp_f"
          }
          break;
        case 'z':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_div_rz_d;	 // "__nvvm_div_rz_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_div_rz_f;	 // "__nvvm_div_rz_f"
          }
          break;
        }
        break;
      }
      break;
    case 'f':	 // 12 strings to match.
      switch (BuiltinName[8]) {
      default: break;
      case '2':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+9, "ull_r", 5))
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'm':	 // 1 string to match.
          return Intrinsic::nvvm_f2ull_rm;	 // "__nvvm_f2ull_rm"
        case 'n':	 // 1 string to match.
          return Intrinsic::nvvm_f2ull_rn;	 // "__nvvm_f2ull_rn"
        case 'p':	 // 1 string to match.
          return Intrinsic::nvvm_f2ull_rp;	 // "__nvvm_f2ull_rp"
        case 'z':	 // 1 string to match.
          return Intrinsic::nvvm_f2ull_rz;	 // "__nvvm_f2ull_rz"
        }
        break;
      case 'm':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+9, "a_r", 3))
          break;
        switch (BuiltinName[12]) {
        default: break;
        case 'm':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_fma_rm_d;	 // "__nvvm_fma_rm_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_fma_rm_f;	 // "__nvvm_fma_rm_f"
          }
          break;
        case 'n':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_fma_rn_d;	 // "__nvvm_fma_rn_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_fma_rn_f;	 // "__nvvm_fma_rn_f"
          }
          break;
        case 'p':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_fma_rp_d;	 // "__nvvm_fma_rp_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_fma_rp_f;	 // "__nvvm_fma_rp_f"
          }
          break;
        case 'z':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_fma_rz_d;	 // "__nvvm_fma_rz_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_fma_rz_f;	 // "__nvvm_fma_rz_f"
          }
          break;
        }
        break;
      }
      break;
    case 'l':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "ohi_i2d", 7))
        break;
      return Intrinsic::nvvm_lohi_i2d;	 // "__nvvm_lohi_i2d"
    case 'm':	 // 11 strings to match.
      if (memcmp(BuiltinName.data()+8, "ul", 2))
        break;
      switch (BuiltinName[10]) {
      default: break;
      case '2':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+11, "4_ui", 4))
          break;
        return Intrinsic::nvvm_mul24_ui;	 // "__nvvm_mul24_ui"
      case '_':	 // 8 strings to match.
        if (BuiltinName[11] != 'r')
          break;
        switch (BuiltinName[12]) {
        default: break;
        case 'm':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_mul_rm_d;	 // "__nvvm_mul_rm_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_mul_rm_f;	 // "__nvvm_mul_rm_f"
          }
          break;
        case 'n':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_mul_rn_d;	 // "__nvvm_mul_rn_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_mul_rn_f;	 // "__nvvm_mul_rn_f"
          }
          break;
        case 'p':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_mul_rp_d;	 // "__nvvm_mul_rp_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_mul_rp_f;	 // "__nvvm_mul_rp_f"
          }
          break;
        case 'z':	 // 2 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_mul_rz_d;	 // "__nvvm_mul_rz_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_mul_rz_f;	 // "__nvvm_mul_rz_f"
          }
          break;
        }
        break;
      case 'h':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+11, "i_", 2))
          break;
        switch (BuiltinName[13]) {
        default: break;
        case 'l':	 // 1 string to match.
          if (BuiltinName[14] != 'l')
            break;
          return Intrinsic::nvvm_mulhi_ll;	 // "__nvvm_mulhi_ll"
        case 'u':	 // 1 string to match.
          if (BuiltinName[14] != 'i')
            break;
          return Intrinsic::nvvm_mulhi_ui;	 // "__nvvm_mulhi_ui"
        }
        break;
      }
      break;
    case 'r':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+8, "cp_r", 4))
        break;
      switch (BuiltinName[12]) {
      default: break;
      case 'm':	 // 2 strings to match.
        if (BuiltinName[13] != '_')
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_rcp_rm_d;	 // "__nvvm_rcp_rm_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_rcp_rm_f;	 // "__nvvm_rcp_rm_f"
        }
        break;
      case 'n':	 // 2 strings to match.
        if (BuiltinName[13] != '_')
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_rcp_rn_d;	 // "__nvvm_rcp_rn_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_rcp_rn_f;	 // "__nvvm_rcp_rn_f"
        }
        break;
      case 'p':	 // 2 strings to match.
        if (BuiltinName[13] != '_')
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_rcp_rp_d;	 // "__nvvm_rcp_rp_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_rcp_rp_f;	 // "__nvvm_rcp_rp_f"
        }
        break;
      case 'z':	 // 2 strings to match.
        if (BuiltinName[13] != '_')
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_rcp_rz_d;	 // "__nvvm_rcp_rz_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_rcp_rz_f;	 // "__nvvm_rcp_rz_f"
        }
        break;
      }
      break;
    case 'u':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+8, "ll2", 3))
        break;
      switch (BuiltinName[11]) {
      default: break;
      case 'd':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+12, "_r", 2))
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'm':	 // 1 string to match.
          return Intrinsic::nvvm_ull2d_rm;	 // "__nvvm_ull2d_rm"
        case 'n':	 // 1 string to match.
          return Intrinsic::nvvm_ull2d_rn;	 // "__nvvm_ull2d_rn"
        case 'p':	 // 1 string to match.
          return Intrinsic::nvvm_ull2d_rp;	 // "__nvvm_ull2d_rp"
        case 'z':	 // 1 string to match.
          return Intrinsic::nvvm_ull2d_rz;	 // "__nvvm_ull2d_rz"
        }
        break;
      case 'f':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+12, "_r", 2))
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'm':	 // 1 string to match.
          return Intrinsic::nvvm_ull2f_rm;	 // "__nvvm_ull2f_rm"
        case 'n':	 // 1 string to match.
          return Intrinsic::nvvm_ull2f_rn;	 // "__nvvm_ull2f_rn"
        case 'p':	 // 1 string to match.
          return Intrinsic::nvvm_ull2f_rp;	 // "__nvvm_ull2f_rp"
        case 'z':	 // 1 string to match.
          return Intrinsic::nvvm_ull2f_rz;	 // "__nvvm_ull2f_rz"
        }
        break;
      }
      break;
    }
    break;
  case 16:	 // 15 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
      break;
    switch (BuiltinName[7]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "ar0_popc", 8))
        break;
      return Intrinsic::nvvm_barrier0_popc;	 // "__nvvm_bar0_popc"
    case 'm':	 // 2 strings to match.
      switch (BuiltinName[8]) {
      default: break;
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+9, "mbar_gl", 7))
          break;
        return Intrinsic::nvvm_membar_gl;	 // "__nvvm_membar_gl"
      case 'u':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+9, "lhi_ull", 7))
          break;
        return Intrinsic::nvvm_mulhi_ull;	 // "__nvvm_mulhi_ull"
      }
      break;
    case 's':	 // 10 strings to match.
      switch (BuiltinName[8]) {
      default: break;
      case 'q':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+9, "rt_r", 4))
          break;
        switch (BuiltinName[13]) {
        default: break;
        case 'm':	 // 2 strings to match.
          if (BuiltinName[14] != '_')
            break;
          switch (BuiltinName[15]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_sqrt_rm_d;	 // "__nvvm_sqrt_rm_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_sqrt_rm_f;	 // "__nvvm_sqrt_rm_f"
          }
          break;
        case 'n':	 // 2 strings to match.
          if (BuiltinName[14] != '_')
            break;
          switch (BuiltinName[15]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_sqrt_rn_d;	 // "__nvvm_sqrt_rn_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_sqrt_rn_f;	 // "__nvvm_sqrt_rn_f"
          }
          break;
        case 'p':	 // 2 strings to match.
          if (BuiltinName[14] != '_')
            break;
          switch (BuiltinName[15]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_sqrt_rp_d;	 // "__nvvm_sqrt_rp_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_sqrt_rp_f;	 // "__nvvm_sqrt_rp_f"
          }
          break;
        case 'z':	 // 2 strings to match.
          if (BuiltinName[14] != '_')
            break;
          switch (BuiltinName[15]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::nvvm_sqrt_rz_d;	 // "__nvvm_sqrt_rz_d"
          case 'f':	 // 1 string to match.
            return Intrinsic::nvvm_sqrt_rz_f;	 // "__nvvm_sqrt_rz_f"
          }
          break;
        }
        break;
      case 'u':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+9, "q_", 2))
          break;
        switch (BuiltinName[11]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+12, "epth", 4))
            break;
          return Intrinsic::nvvm_suq_depth;	 // "__nvvm_suq_depth"
        case 'w':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+12, "idth", 4))
            break;
          return Intrinsic::nvvm_suq_width;	 // "__nvvm_suq_width"
        }
        break;
      }
      break;
    case 't':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+8, "xq_", 3))
        break;
      switch (BuiltinName[11]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+12, "epth", 4))
          break;
        return Intrinsic::nvvm_txq_depth;	 // "__nvvm_txq_depth"
      case 'w':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+12, "idth", 4))
          break;
        return Intrinsic::nvvm_txq_width;	 // "__nvvm_txq_width"
      }
      break;
    }
    break;
  case 17:	 // 21 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
      break;
    switch (BuiltinName[7]) {
    default: break;
    case 'c':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "eil_ftz_f", 9))
        break;
      return Intrinsic::nvvm_ceil_ftz_f;	 // "__nvvm_ceil_ftz_f"
    case 'd':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+8, "2f_r", 4))
        break;
      switch (BuiltinName[12]) {
      default: break;
      case 'm':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+13, "_ftz", 4))
          break;
        return Intrinsic::nvvm_d2f_rm_ftz;	 // "__nvvm_d2f_rm_ftz"
      case 'n':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+13, "_ftz", 4))
          break;
        return Intrinsic::nvvm_d2f_rn_ftz;	 // "__nvvm_d2f_rn_ftz"
      case 'p':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+13, "_ftz", 4))
          break;
        return Intrinsic::nvvm_d2f_rp_ftz;	 // "__nvvm_d2f_rp_ftz"
      case 'z':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+13, "_ftz", 4))
          break;
        return Intrinsic::nvvm_d2f_rz_ftz;	 // "__nvvm_d2f_rz_ftz"
      }
      break;
    case 'f':	 // 8 strings to match.
      switch (BuiltinName[8]) {
      default: break;
      case '2':	 // 5 strings to match.
        switch (BuiltinName[9]) {
        default: break;
        case 'h':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+10, "_rn_ftz", 7))
            break;
          return Intrinsic::nvvm_f2h_rn_ftz;	 // "__nvvm_f2h_rn_ftz"
        case 'i':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+10, "_r", 2))
            break;
          switch (BuiltinName[12]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2i_rm_ftz;	 // "__nvvm_f2i_rm_ftz"
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2i_rn_ftz;	 // "__nvvm_f2i_rn_ftz"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2i_rp_ftz;	 // "__nvvm_f2i_rp_ftz"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2i_rz_ftz;	 // "__nvvm_f2i_rz_ftz"
          }
          break;
        }
        break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+9, "bs_ftz_f", 8))
          break;
        return Intrinsic::nvvm_fabs_ftz_f;	 // "__nvvm_fabs_ftz_f"
      case 'm':	 // 2 strings to match.
        switch (BuiltinName[9]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+10, "x_ftz_f", 7))
            break;
          return Intrinsic::nvvm_fmax_ftz_f;	 // "__nvvm_fmax_ftz_f"
        case 'i':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+10, "n_ftz_f", 7))
            break;
          return Intrinsic::nvvm_fmin_ftz_f;	 // "__nvvm_fmin_ftz_f"
        }
        break;
      }
      break;
    case 'm':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+8, "embar_", 6))
        break;
      switch (BuiltinName[14]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+15, "ta", 2))
          break;
        return Intrinsic::nvvm_membar_cta;	 // "__nvvm_membar_cta"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+15, "ys", 2))
          break;
        return Intrinsic::nvvm_membar_sys;	 // "__nvvm_membar_sys"
      }
      break;
    case 'r':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+8, "otate_b", 7))
        break;
      switch (BuiltinName[15]) {
      default: break;
      case '3':	 // 1 string to match.
        if (BuiltinName[16] != '2')
          break;
        return Intrinsic::nvvm_rotate_b32;	 // "__nvvm_rotate_b32"
      case '6':	 // 1 string to match.
        if (BuiltinName[16] != '4')
          break;
        return Intrinsic::nvvm_rotate_b64;	 // "__nvvm_rotate_b64"
      }
      break;
    case 's':	 // 3 strings to match.
      switch (BuiltinName[8]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+9, "turate_", 7))
          break;
        switch (BuiltinName[16]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_saturate_d;	 // "__nvvm_saturate_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_saturate_f;	 // "__nvvm_saturate_f"
        }
        break;
      case 'u':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+9, "q_height", 8))
          break;
        return Intrinsic::nvvm_suq_height;	 // "__nvvm_suq_height"
      }
      break;
    case 't':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "xq_height", 9))
        break;
      return Intrinsic::nvvm_txq_height;	 // "__nvvm_txq_height"
    }
    break;
  case 18:	 // 13 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
      break;
    switch (BuiltinName[7]) {
    default: break;
    case 'b':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+8, "itcast_", 7))
        break;
      switch (BuiltinName[15]) {
      default: break;
      case 'f':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "2i", 2))
          break;
        return Intrinsic::nvvm_bitcast_f2i;	 // "__nvvm_bitcast_f2i"
      case 'i':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "2f", 2))
          break;
        return Intrinsic::nvvm_bitcast_i2f;	 // "__nvvm_bitcast_i2f"
      }
      break;
    case 'f':	 // 9 strings to match.
      switch (BuiltinName[8]) {
      default: break;
      case '2':	 // 8 strings to match.
        switch (BuiltinName[9]) {
        default: break;
        case 'l':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+10, "l_r", 3))
            break;
          switch (BuiltinName[13]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+14, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ll_rm_ftz;	 // "__nvvm_f2ll_rm_ftz"
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+14, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ll_rn_ftz;	 // "__nvvm_f2ll_rn_ftz"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+14, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ll_rp_ftz;	 // "__nvvm_f2ll_rp_ftz"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+14, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ll_rz_ftz;	 // "__nvvm_f2ll_rz_ftz"
          }
          break;
        case 'u':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+10, "i_r", 3))
            break;
          switch (BuiltinName[13]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+14, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ui_rm_ftz;	 // "__nvvm_f2ui_rm_ftz"
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+14, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ui_rn_ftz;	 // "__nvvm_f2ui_rn_ftz"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+14, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ui_rp_ftz;	 // "__nvvm_f2ui_rp_ftz"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+14, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ui_rz_ftz;	 // "__nvvm_f2ui_rz_ftz"
          }
          break;
        }
        break;
      case 'l':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+9, "oor_ftz_f", 9))
          break;
        return Intrinsic::nvvm_floor_ftz_f;	 // "__nvvm_floor_ftz_f"
      }
      break;
    case 'r':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "ound_ftz_f", 10))
        break;
      return Intrinsic::nvvm_round_ftz_f;	 // "__nvvm_round_ftz_f"
    case 't':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+8, "runc_ftz_f", 10))
        break;
      return Intrinsic::nvvm_trunc_ftz_f;	 // "__nvvm_trunc_ftz_f"
    }
    break;
  case 19:	 // 34 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_debugtrap", 16))
        break;
      return Intrinsic::debugtrap;	 // "__builtin_debugtrap"
    case 'n':	 // 33 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 'a':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+8, "dd_r", 4))
          break;
        switch (BuiltinName[12]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_add_rm_ftz_f;	 // "__nvvm_add_rm_ftz_f"
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_add_rn_ftz_f;	 // "__nvvm_add_rn_ftz_f"
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_add_rp_ftz_f;	 // "__nvvm_add_rp_ftz_f"
        case 'z':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_add_rz_ftz_f;	 // "__nvvm_add_rz_ftz_f"
        }
        break;
      case 'b':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+8, "itcast_", 7))
          break;
        switch (BuiltinName[15]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+16, "2ll", 3))
            break;
          return Intrinsic::nvvm_bitcast_d2ll;	 // "__nvvm_bitcast_d2ll"
        case 'l':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+16, "l2d", 3))
            break;
          return Intrinsic::nvvm_bitcast_ll2d;	 // "__nvvm_bitcast_ll2d"
        }
        break;
      case 'c':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "os_approx_f", 11))
          break;
        return Intrinsic::nvvm_cos_approx_f;	 // "__nvvm_cos_approx_f"
      case 'd':	 // 5 strings to match.
        if (memcmp(BuiltinName.data()+8, "iv_", 3))
          break;
        switch (BuiltinName[11]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+12, "pprox_f", 7))
            break;
          return Intrinsic::nvvm_div_approx_f;	 // "__nvvm_div_approx_f"
        case 'r':	 // 4 strings to match.
          switch (BuiltinName[12]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
              break;
            return Intrinsic::nvvm_div_rm_ftz_f;	 // "__nvvm_div_rm_ftz_f"
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
              break;
            return Intrinsic::nvvm_div_rn_ftz_f;	 // "__nvvm_div_rn_ftz_f"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
              break;
            return Intrinsic::nvvm_div_rp_ftz_f;	 // "__nvvm_div_rp_ftz_f"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
              break;
            return Intrinsic::nvvm_div_rz_ftz_f;	 // "__nvvm_div_rz_ftz_f"
          }
          break;
        }
        break;
      case 'e':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+8, "x2_approx_", 10))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_ex2_approx_d;	 // "__nvvm_ex2_approx_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_ex2_approx_f;	 // "__nvvm_ex2_approx_f"
        }
        break;
      case 'f':	 // 8 strings to match.
        switch (BuiltinName[8]) {
        default: break;
        case '2':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+9, "ull_r", 5))
            break;
          switch (BuiltinName[14]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+15, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ull_rm_ftz;	 // "__nvvm_f2ull_rm_ftz"
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+15, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ull_rn_ftz;	 // "__nvvm_f2ull_rn_ftz"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+15, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ull_rp_ftz;	 // "__nvvm_f2ull_rp_ftz"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+15, "_ftz", 4))
              break;
            return Intrinsic::nvvm_f2ull_rz_ftz;	 // "__nvvm_f2ull_rz_ftz"
          }
          break;
        case 'm':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+9, "a_r", 3))
            break;
          switch (BuiltinName[12]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
              break;
            return Intrinsic::nvvm_fma_rm_ftz_f;	 // "__nvvm_fma_rm_ftz_f"
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
              break;
            return Intrinsic::nvvm_fma_rn_ftz_f;	 // "__nvvm_fma_rn_ftz_f"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
              break;
            return Intrinsic::nvvm_fma_rp_ftz_f;	 // "__nvvm_fma_rp_ftz_f"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
              break;
            return Intrinsic::nvvm_fma_rz_ftz_f;	 // "__nvvm_fma_rz_ftz_f"
          }
          break;
        }
        break;
      case 'l':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+8, "g2_approx_", 10))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_lg2_approx_d;	 // "__nvvm_lg2_approx_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_lg2_approx_f;	 // "__nvvm_lg2_approx_f"
        }
        break;
      case 'm':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+8, "ul_r", 4))
          break;
        switch (BuiltinName[12]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_mul_rm_ftz_f;	 // "__nvvm_mul_rm_ftz_f"
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_mul_rn_ftz_f;	 // "__nvvm_mul_rn_ftz_f"
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_mul_rp_ftz_f;	 // "__nvvm_mul_rp_ftz_f"
        case 'z':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_mul_rz_ftz_f;	 // "__nvvm_mul_rz_ftz_f"
        }
        break;
      case 'r':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+8, "cp_r", 4))
          break;
        switch (BuiltinName[12]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_rcp_rm_ftz_f;	 // "__nvvm_rcp_rm_ftz_f"
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_rcp_rn_ftz_f;	 // "__nvvm_rcp_rn_ftz_f"
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_rcp_rp_ftz_f;	 // "__nvvm_rcp_rp_ftz_f"
        case 'z':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_rcp_rz_ftz_f;	 // "__nvvm_rcp_rz_ftz_f"
        }
        break;
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "in_approx_f", 11))
          break;
        return Intrinsic::nvvm_sin_approx_f;	 // "__nvvm_sin_approx_f"
      }
      break;
    }
    break;
  case 20:	 // 7 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
        break;
      switch (BuiltinName[10]) {
      default: break;
      case 'f':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+11, "lt_rounds", 9))
          break;
        return Intrinsic::flt_rounds;	 // "__builtin_flt_rounds"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+11, "tack_save", 9))
          break;
        return Intrinsic::stacksave;	 // "__builtin_stack_save"
      }
      break;
    case 'n':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_sqrt_", 9))
        break;
      switch (BuiltinName[12]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+13, "pprox_f", 7))
          break;
        return Intrinsic::nvvm_sqrt_approx_f;	 // "__nvvm_sqrt_approx_f"
      case 'r':	 // 4 strings to match.
        switch (BuiltinName[13]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_sqrt_rm_ftz_f;	 // "__nvvm_sqrt_rm_ftz_f"
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_sqrt_rn_ftz_f;	 // "__nvvm_sqrt_rn_ftz_f"
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_sqrt_rp_ftz_f;	 // "__nvvm_sqrt_rp_ftz_f"
        case 'z':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
            break;
          return Intrinsic::nvvm_sqrt_rz_ftz_f;	 // "__nvvm_sqrt_rz_ftz_f"
        }
        break;
      }
      break;
    }
    break;
  case 21:	 // 28 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 20 strings to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
        break;
      switch (BuiltinName[10]) {
      default: break;
      case 'i':	 // 18 strings to match.
        if (memcmp(BuiltinName.data()+11, "a32_vp", 6))
          break;
        switch (BuiltinName[17]) {
        default: break;
        case 'c':	 // 5 strings to match.
          switch (BuiltinName[18]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+19, "ov", 2))
              break;
            return Intrinsic::x86_xop_vpcmov;	 // "__builtin_ia32_vpcmov"
          case 'o':	 // 4 strings to match.
            if (BuiltinName[19] != 'm')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomb;	 // "__builtin_ia32_vpcomb"
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomd;	 // "__builtin_ia32_vpcomd"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomq;	 // "__builtin_ia32_vpcomq"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomw;	 // "__builtin_ia32_vpcomw"
            }
            break;
          }
          break;
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "erm", 3))
            break;
          return Intrinsic::x86_xop_vpperm;	 // "__builtin_ia32_vpperm"
        case 'r':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+18, "ot", 2))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::x86_xop_vprotb;	 // "__builtin_ia32_vprotb"
          case 'd':	 // 1 string to match.
            return Intrinsic::x86_xop_vprotd;	 // "__builtin_ia32_vprotd"
          case 'q':	 // 1 string to match.
            return Intrinsic::x86_xop_vprotq;	 // "__builtin_ia32_vprotq"
          case 'w':	 // 1 string to match.
            return Intrinsic::x86_xop_vprotw;	 // "__builtin_ia32_vprotw"
          }
          break;
        case 's':	 // 8 strings to match.
          if (BuiltinName[18] != 'h')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'a':	 // 4 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshab;	 // "__builtin_ia32_vpshab"
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshad;	 // "__builtin_ia32_vpshad"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshaq;	 // "__builtin_ia32_vpshaq"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshaw;	 // "__builtin_ia32_vpshaw"
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshlb;	 // "__builtin_ia32_vpshlb"
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshld;	 // "__builtin_ia32_vpshld"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshlq;	 // "__builtin_ia32_vpshlq"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vpshlw;	 // "__builtin_ia32_vpshlw"
            }
            break;
          }
          break;
        }
        break;
      case 'o':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+11, "bject_size", 10))
          break;
        return Intrinsic::objectsize;	 // "__builtin_object_size"
      case 'u':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+11, "nwind_init", 10))
          break;
        return Intrinsic::eh_unwind_init;	 // "__builtin_unwind_init"
      }
      break;
    case 'n':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 'i':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+8, "sspacep_", 8))
          break;
        switch (BuiltinName[16]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "onst", 4))
            break;
          return Intrinsic::nvvm_isspacep_const;	 // "__nvvm_isspacep_const"
        case 'l':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "ocal", 4))
            break;
          return Intrinsic::nvvm_isspacep_local;	 // "__nvvm_isspacep_local"
        }
        break;
      case 'r':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+8, "sqrt_approx_", 12))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::nvvm_rsqrt_approx_d;	 // "__nvvm_rsqrt_approx_d"
        case 'f':	 // 1 string to match.
          return Intrinsic::nvvm_rsqrt_approx_f;	 // "__nvvm_rsqrt_approx_f"
        }
        break;
      case 's':	 // 3 strings to match.
        switch (BuiltinName[8]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "turate_ftz_f", 12))
            break;
          return Intrinsic::nvvm_saturate_ftz_f;	 // "__nvvm_saturate_ftz_f"
        case 'u':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "q_array_size", 12))
            break;
          return Intrinsic::nvvm_suq_array_size;	 // "__nvvm_suq_array_size"
        case 'w':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "ap_lo_hi_b64", 12))
            break;
          return Intrinsic::nvvm_swap_lo_hi_b64;	 // "__nvvm_swap_lo_hi_b64"
        }
        break;
      case 't':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "xq_array_size", 13))
          break;
        return Intrinsic::nvvm_txq_array_size;	 // "__nvvm_txq_array_size"
      }
      break;
    }
    break;
  case 22:	 // 23 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 17 strings to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
        break;
      switch (BuiltinName[10]) {
      default: break;
      case 'i':	 // 12 strings to match.
        if (memcmp(BuiltinName.data()+11, "a32_v", 5))
          break;
        switch (BuiltinName[16]) {
        default: break;
        case 'f':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+17, "rcz", 3))
            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_xop_vfrcz_pd;	 // "__builtin_ia32_vfrczpd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_xop_vfrcz_ps;	 // "__builtin_ia32_vfrczps"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vfrcz_sd;	 // "__builtin_ia32_vfrczsd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_xop_vfrcz_ss;	 // "__builtin_ia32_vfrczss"
            }
            break;
          }
          break;
        case 'p':	 // 8 strings to match.
          switch (BuiltinName[17]) {
          default: break;
          case 'c':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+18, "omu", 3))
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomub;	 // "__builtin_ia32_vpcomub"
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomud;	 // "__builtin_ia32_vpcomud"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomuq;	 // "__builtin_ia32_vpcomuq"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vpcomuw;	 // "__builtin_ia32_vpcomuw"
            }
            break;
          case 'r':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+18, "ot", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (BuiltinName[21] != 'i')
                break;
              return Intrinsic::x86_xop_vprotbi;	 // "__builtin_ia32_vprotbi"
            case 'd':	 // 1 string to match.
              if (BuiltinName[21] != 'i')
                break;
              return Intrinsic::x86_xop_vprotdi;	 // "__builtin_ia32_vprotdi"
            case 'q':	 // 1 string to match.
              if (BuiltinName[21] != 'i')
                break;
              return Intrinsic::x86_xop_vprotqi;	 // "__builtin_ia32_vprotqi"
            case 'w':	 // 1 string to match.
              if (BuiltinName[21] != 'i')
                break;
              return Intrinsic::x86_xop_vprotwi;	 // "__builtin_ia32_vprotwi"
            }
            break;
          }
          break;
        }
        break;
      case 'p':	 // 5 strings to match.
        if (memcmp(BuiltinName.data()+11, "tx_", 3))
          break;
        switch (BuiltinName[14]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+15, "ar_sync", 7))
            break;
          return Intrinsic::ptx_bar_sync;	 // "__builtin_ptx_bar_sync"
        case 'r':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+15, "ead_pm", 6))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::ptx_read_pm0;	 // "__builtin_ptx_read_pm0"
          case '1':	 // 1 string to match.
            return Intrinsic::ptx_read_pm1;	 // "__builtin_ptx_read_pm1"
          case '2':	 // 1 string to match.
            return Intrinsic::ptx_read_pm2;	 // "__builtin_ptx_read_pm2"
          case '3':	 // 1 string to match.
            return Intrinsic::ptx_read_pm3;	 // "__builtin_ptx_read_pm3"
          }
          break;
        }
        break;
      }
      break;
    case 'n':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 'i':	 // 5 strings to match.
        if (BuiltinName[8] != 's')
          break;
        switch (BuiltinName[9]) {
        default: break;
        case 's':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+10, "pacep_", 6))
            break;
          switch (BuiltinName[16]) {
          default: break;
          case 'g':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+17, "lobal", 5))
              break;
            return Intrinsic::nvvm_isspacep_global;	 // "__nvvm_isspacep_global"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+17, "hared", 5))
              break;
            return Intrinsic::nvvm_isspacep_shared;	 // "__nvvm_isspacep_shared"
          }
          break;
        case 't':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+10, "ypep_", 5))
            break;
          switch (BuiltinName[15]) {
          default: break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[16]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+17, "mpler", 5))
                break;
              return Intrinsic::nvvm_istypep_sampler;	 // "__nvvm_istypep_sampler"
            case 'u':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+17, "rface", 5))
                break;
              return Intrinsic::nvvm_istypep_surface;	 // "__nvvm_istypep_surface"
            }
            break;
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+16, "exture", 6))
              break;
            return Intrinsic::nvvm_istypep_texture;	 // "__nvvm_istypep_texture"
          }
          break;
        }
        break;
      case 't':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "xq_num_samples", 14))
          break;
        return Intrinsic::nvvm_txq_num_samples;	 // "__nvvm_txq_num_samples"
      }
      break;
    }
    break;
  case 23:	 // 21 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 14 strings to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
        break;
      switch (BuiltinName[10]) {
      default: break;
      case 'i':	 // 12 strings to match.
        if (memcmp(BuiltinName.data()+11, "a32_vp", 6))
          break;
        switch (BuiltinName[17]) {
        default: break;
        case 'h':	 // 9 strings to match.
          switch (BuiltinName[18]) {
          default: break;
          case 'a':	 // 6 strings to match.
            if (memcmp(BuiltinName.data()+19, "dd", 2))
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 3 strings to match.
              switch (BuiltinName[22]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_xop_vphaddbd;	 // "__builtin_ia32_vphaddbd"
              case 'q':	 // 1 string to match.
                return Intrinsic::x86_xop_vphaddbq;	 // "__builtin_ia32_vphaddbq"
              case 'w':	 // 1 string to match.
                return Intrinsic::x86_xop_vphaddbw;	 // "__builtin_ia32_vphaddbw"
              }
              break;
            case 'd':	 // 1 string to match.
              if (BuiltinName[22] != 'q')
                break;
              return Intrinsic::x86_xop_vphadddq;	 // "__builtin_ia32_vphadddq"
            case 'w':	 // 2 strings to match.
              switch (BuiltinName[22]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_xop_vphaddwd;	 // "__builtin_ia32_vphaddwd"
              case 'q':	 // 1 string to match.
                return Intrinsic::x86_xop_vphaddwq;	 // "__builtin_ia32_vphaddwq"
              }
              break;
            }
            break;
          case 's':	 // 3 strings to match.
            if (memcmp(BuiltinName.data()+19, "ub", 2))
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (BuiltinName[22] != 'w')
                break;
              return Intrinsic::x86_xop_vphsubbw;	 // "__builtin_ia32_vphsubbw"
            case 'd':	 // 1 string to match.
              if (BuiltinName[22] != 'q')
                break;
              return Intrinsic::x86_xop_vphsubdq;	 // "__builtin_ia32_vphsubdq"
            case 'w':	 // 1 string to match.
              if (BuiltinName[22] != 'd')
                break;
              return Intrinsic::x86_xop_vphsubwd;	 // "__builtin_ia32_vphsubwd"
            }
            break;
          }
          break;
        case 'm':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+18, "acs", 3))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (BuiltinName[22] != 'd')
              break;
            return Intrinsic::x86_xop_vpmacsdd;	 // "__builtin_ia32_vpmacsdd"
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vpmacswd;	 // "__builtin_ia32_vpmacswd"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vpmacsww;	 // "__builtin_ia32_vpmacsww"
            }
            break;
          }
          break;
        }
        break;
      case 'p':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+11, "tx_read_smid", 12))
          break;
        return Intrinsic::ptx_read_smid;	 // "__builtin_ptx_read_smid"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+11, "tack_restore", 12))
          break;
        return Intrinsic::stackrestore;	 // "__builtin_stack_restore"
      }
      break;
    case 'n':	 // 7 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "os_approx_ftz_f", 15))
          break;
        return Intrinsic::nvvm_cos_approx_ftz_f;	 // "__nvvm_cos_approx_ftz_f"
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "iv_approx_ftz_f", 15))
          break;
        return Intrinsic::nvvm_div_approx_ftz_f;	 // "__nvvm_div_approx_ftz_f"
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "x2_approx_ftz_f", 15))
          break;
        return Intrinsic::nvvm_ex2_approx_ftz_f;	 // "__nvvm_ex2_approx_ftz_f"
      case 'l':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "g2_approx_ftz_f", 15))
          break;
        return Intrinsic::nvvm_lg2_approx_ftz_f;	 // "__nvvm_lg2_approx_ftz_f"
      case 'r':	 // 2 strings to match.
        switch (BuiltinName[8]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "p_approx_ftz_d", 14))
            break;
          return Intrinsic::nvvm_rcp_approx_ftz_d;	 // "__nvvm_rcp_approx_ftz_d"
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "tate_right_b64", 14))
            break;
          return Intrinsic::nvvm_rotate_right_b64;	 // "__nvvm_rotate_right_b64"
        }
        break;
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "in_approx_ftz_f", 15))
          break;
        return Intrinsic::nvvm_sin_approx_ftz_f;	 // "__nvvm_sin_approx_ftz_f"
      }
      break;
    }
    break;
  case 24:	 // 30 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 18 strings to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
        break;
      switch (BuiltinName[10]) {
      default: break;
      case 'i':	 // 12 strings to match.
        if (memcmp(BuiltinName.data()+11, "a32_vp", 6))
          break;
        switch (BuiltinName[17]) {
        default: break;
        case 'h':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+18, "addu", 4))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case 'b':	 // 3 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vphaddubd;	 // "__builtin_ia32_vphaddubd"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vphaddubq;	 // "__builtin_ia32_vphaddubq"
            case 'w':	 // 1 string to match.
              return Intrinsic::x86_xop_vphaddubw;	 // "__builtin_ia32_vphaddubw"
            }
            break;
          case 'd':	 // 1 string to match.
            if (BuiltinName[23] != 'q')
              break;
            return Intrinsic::x86_xop_vphaddudq;	 // "__builtin_ia32_vphaddudq"
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_xop_vphadduwd;	 // "__builtin_ia32_vphadduwd"
            case 'q':	 // 1 string to match.
              return Intrinsic::x86_xop_vphadduwq;	 // "__builtin_ia32_vphadduwq"
            }
            break;
          }
          break;
        case 'm':	 // 6 strings to match.
          if (BuiltinName[18] != 'a')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'c':	 // 5 strings to match.
            if (BuiltinName[20] != 's')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (BuiltinName[22] != 'q')
                break;
              switch (BuiltinName[23]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::x86_xop_vpmacsdqh;	 // "__builtin_ia32_vpmacsdqh"
              case 'l':	 // 1 string to match.
                return Intrinsic::x86_xop_vpmacsdql;	 // "__builtin_ia32_vpmacsdql"
              }
              break;
            case 's':	 // 3 strings to match.
              switch (BuiltinName[22]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (BuiltinName[23] != 'd')
                  break;
                return Intrinsic::x86_xop_vpmacssdd;	 // "__builtin_ia32_vpmacssdd"
              case 'w':	 // 2 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::x86_xop_vpmacsswd;	 // "__builtin_ia32_vpmacsswd"
                case 'w':	 // 1 string to match.
                  return Intrinsic::x86_xop_vpmacssww;	 // "__builtin_ia32_vpmacssww"
                }
                break;
              }
              break;
            }
            break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "cswd", 4))
              break;
            return Intrinsic::x86_xop_vpmadcswd;	 // "__builtin_ia32_vpmadcswd"
          }
          break;
        }
        break;
      case 'p':	 // 6 strings to match.
        if (memcmp(BuiltinName.data()+11, "tx_read_", 8))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "lock", 4))
            break;
          return Intrinsic::ptx_read_clock;	 // "__builtin_ptx_read_clock"
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "smid", 4))
            break;
          return Intrinsic::ptx_read_nsmid;	 // "__builtin_ptx_read_nsmid"
        case 't':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+20, "id_", 3))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'w':	 // 1 string to match.
            return Intrinsic::ptx_read_tid_w;	 // "__builtin_ptx_read_tid_w"
          case 'x':	 // 1 string to match.
            return Intrinsic::ptx_read_tid_x;	 // "__builtin_ptx_read_tid_x"
          case 'y':	 // 1 string to match.
            return Intrinsic::ptx_read_tid_y;	 // "__builtin_ptx_read_tid_y"
          case 'z':	 // 1 string to match.
            return Intrinsic::ptx_read_tid_z;	 // "__builtin_ptx_read_tid_z"
          }
          break;
        }
        break;
      }
      break;
    case 'n':	 // 12 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 's':	 // 11 strings to match.
        switch (BuiltinName[8]) {
        default: break;
        case 'q':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+9, "rt_approx_ftz_f", 15))
            break;
          return Intrinsic::nvvm_sqrt_approx_ftz_f;	 // "__nvvm_sqrt_approx_ftz_f"
        case 'u':	 // 10 strings to match.
          switch (BuiltinName[9]) {
          default: break;
          case 'q':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+10, "_channel_order", 14))
              break;
            return Intrinsic::nvvm_suq_channel_order;	 // "__nvvm_suq_channel_order"
          case 's':	 // 9 strings to match.
            if (memcmp(BuiltinName.data()+10, "t_", 2))
              break;
            switch (BuiltinName[12]) {
            default: break;
            case 'b':	 // 6 strings to match.
              if (BuiltinName[13] != '_')
                break;
              switch (BuiltinName[14]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+15, "d_i8_", 5))
                  break;
                switch (BuiltinName[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i8_trap;	 // "__nvvm_sust_b_1d_i8_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_i8_zero;	 // "__nvvm_sust_b_1d_i8_zero"
                }
                break;
              case '2':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+15, "d_i8_", 5))
                  break;
                switch (BuiltinName[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i8_trap;	 // "__nvvm_sust_b_2d_i8_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_i8_zero;	 // "__nvvm_sust_b_2d_i8_zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+15, "d_i8_", 5))
                  break;
                switch (BuiltinName[20]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+21, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i8_trap;	 // "__nvvm_sust_b_3d_i8_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+21, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_i8_zero;	 // "__nvvm_sust_b_3d_i8_zero"
                }
                break;
              }
              break;
            case 'p':	 // 3 strings to match.
              if (BuiltinName[13] != '_')
                break;
              switch (BuiltinName[14]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+15, "d_i8_trap", 9))
                  break;
                return Intrinsic::nvvm_sust_p_1d_i8_trap;	 // "__nvvm_sust_p_1d_i8_trap"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+15, "d_i8_trap", 9))
                  break;
                return Intrinsic::nvvm_sust_p_2d_i8_trap;	 // "__nvvm_sust_p_2d_i8_trap"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+15, "d_i8_trap", 9))
                  break;
                return Intrinsic::nvvm_sust_p_3d_i8_trap;	 // "__nvvm_sust_p_3d_i8_trap"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "xq_channel_order", 16))
          break;
        return Intrinsic::nvvm_txq_channel_order;	 // "__nvvm_txq_channel_order"
      }
      break;
    }
    break;
  case 25:	 // 44 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 16 strings to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
        break;
      switch (BuiltinName[10]) {
      default: break;
      case 'i':	 // 9 strings to match.
        switch (BuiltinName[11]) {
        default: break;
        case 'a':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+12, "32_v", 4))
            break;
          switch (BuiltinName[16]) {
          default: break;
          case 'f':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "rczp", 4))
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "256", 3))
                break;
              return Intrinsic::x86_xop_vfrcz_pd_256;	 // "__builtin_ia32_vfrczpd256"
            case 's':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "256", 3))
                break;
              return Intrinsic::x86_xop_vfrcz_ps_256;	 // "__builtin_ia32_vfrczps256"
            }
            break;
          case 'p':	 // 6 strings to match.
            switch (BuiltinName[17]) {
            default: break;
            case 'c':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+18, "mov_256", 7))
                break;
              return Intrinsic::x86_xop_vpcmov_256;	 // "__builtin_ia32_vpcmov_256"
            case 'e':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+18, "rmil2p", 6))
                break;
              switch (BuiltinName[24]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::x86_xop_vpermil2pd;	 // "__builtin_ia32_vpermil2pd"
              case 's':	 // 1 string to match.
                return Intrinsic::x86_xop_vpermil2ps;	 // "__builtin_ia32_vpermil2ps"
              }
              break;
            case 'm':	 // 3 strings to match.
              if (BuiltinName[18] != 'a')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'c':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+20, "ssdq", 4))
                  break;
                switch (BuiltinName[24]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::x86_xop_vpmacssdqh;	 // "__builtin_ia32_vpmacssdqh"
                case 'l':	 // 1 string to match.
                  return Intrinsic::x86_xop_vpmacssdql;	 // "__builtin_ia32_vpmacssdql"
                }
                break;
              case 'd':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+20, "csswd", 5))
                  break;
                return Intrinsic::x86_xop_vpmadcsswd;	 // "__builtin_ia32_vpmadcsswd"
              }
              break;
            }
            break;
          }
          break;
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+12, "it_trampoline", 13))
            break;
          return Intrinsic::init_trampoline;	 // "__builtin_init_trampoline"
        }
        break;
      case 'p':	 // 7 strings to match.
        if (memcmp(BuiltinName.data()+11, "tx_read_", 8))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'g':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "ridid", 5))
            break;
          return Intrinsic::ptx_read_gridid;	 // "__builtin_ptx_read_gridid"
        case 'l':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "aneid", 5))
            break;
          return Intrinsic::ptx_read_laneid;	 // "__builtin_ptx_read_laneid"
        case 'n':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+20, "tid_", 4))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'w':	 // 1 string to match.
            return Intrinsic::ptx_read_ntid_w;	 // "__builtin_ptx_read_ntid_w"
          case 'x':	 // 1 string to match.
            return Intrinsic::ptx_read_ntid_x;	 // "__builtin_ptx_read_ntid_x"
          case 'y':	 // 1 string to match.
            return Intrinsic::ptx_read_ntid_y;	 // "__builtin_ptx_read_ntid_y"
          case 'z':	 // 1 string to match.
            return Intrinsic::ptx_read_ntid_z;	 // "__builtin_ptx_read_ntid_z"
          }
          break;
        case 'w':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "arpid", 5))
            break;
          return Intrinsic::ptx_read_warpid;	 // "__builtin_ptx_read_warpid"
        }
        break;
      }
      break;
    case 'n':	 // 28 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 'r':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+8, "sqrt_approx_ftz_f", 17))
          break;
        return Intrinsic::nvvm_rsqrt_approx_ftz_f;	 // "__nvvm_rsqrt_approx_ftz_f"
      case 's':	 // 27 strings to match.
        if (memcmp(BuiltinName.data()+8, "ust_", 4))
          break;
        switch (BuiltinName[12]) {
        default: break;
        case 'b':	 // 21 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case '1':	 // 7 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_i", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+19, "6_", 2))
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "rap", 3))
                  break;
                return Intrinsic::nvvm_sust_b_1d_i16_trap;	 // "__nvvm_sust_b_1d_i16_trap"
              case 'z':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "ero", 3))
                  break;
                return Intrinsic::nvvm_sust_b_1d_i16_zero;	 // "__nvvm_sust_b_1d_i16_zero"
              }
              break;
            case '3':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+19, "2_", 2))
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "rap", 3))
                  break;
                return Intrinsic::nvvm_sust_b_1d_i32_trap;	 // "__nvvm_sust_b_1d_i32_trap"
              case 'z':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "ero", 3))
                  break;
                return Intrinsic::nvvm_sust_b_1d_i32_zero;	 // "__nvvm_sust_b_1d_i32_zero"
              }
              break;
            case '6':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+19, "4_", 2))
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "rap", 3))
                  break;
                return Intrinsic::nvvm_sust_b_1d_i64_trap;	 // "__nvvm_sust_b_1d_i64_trap"
              case 'z':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "ero", 3))
                  break;
                return Intrinsic::nvvm_sust_b_1d_i64_zero;	 // "__nvvm_sust_b_1d_i64_zero"
              }
              break;
            case '8':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "_clamp", 6))
                break;
              return Intrinsic::nvvm_sust_b_1d_i8_clamp;	 // "__nvvm_sust_b_1d_i8_clamp"
            }
            break;
          case '2':	 // 7 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_i", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+19, "6_", 2))
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "rap", 3))
                  break;
                return Intrinsic::nvvm_sust_b_2d_i16_trap;	 // "__nvvm_sust_b_2d_i16_trap"
              case 'z':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "ero", 3))
                  break;
                return Intrinsic::nvvm_sust_b_2d_i16_zero;	 // "__nvvm_sust_b_2d_i16_zero"
              }
              break;
            case '3':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+19, "2_", 2))
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "rap", 3))
                  break;
                return Intrinsic::nvvm_sust_b_2d_i32_trap;	 // "__nvvm_sust_b_2d_i32_trap"
              case 'z':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "ero", 3))
                  break;
                return Intrinsic::nvvm_sust_b_2d_i32_zero;	 // "__nvvm_sust_b_2d_i32_zero"
              }
              break;
            case '6':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+19, "4_", 2))
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "rap", 3))
                  break;
                return Intrinsic::nvvm_sust_b_2d_i64_trap;	 // "__nvvm_sust_b_2d_i64_trap"
              case 'z':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "ero", 3))
                  break;
                return Intrinsic::nvvm_sust_b_2d_i64_zero;	 // "__nvvm_sust_b_2d_i64_zero"
              }
              break;
            case '8':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "_clamp", 6))
                break;
              return Intrinsic::nvvm_sust_b_2d_i8_clamp;	 // "__nvvm_sust_b_2d_i8_clamp"
            }
            break;
          case '3':	 // 7 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_i", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '1':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+19, "6_", 2))
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "rap", 3))
                  break;
                return Intrinsic::nvvm_sust_b_3d_i16_trap;	 // "__nvvm_sust_b_3d_i16_trap"
              case 'z':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "ero", 3))
                  break;
                return Intrinsic::nvvm_sust_b_3d_i16_zero;	 // "__nvvm_sust_b_3d_i16_zero"
              }
              break;
            case '3':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+19, "2_", 2))
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "rap", 3))
                  break;
                return Intrinsic::nvvm_sust_b_3d_i32_trap;	 // "__nvvm_sust_b_3d_i32_trap"
              case 'z':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "ero", 3))
                  break;
                return Intrinsic::nvvm_sust_b_3d_i32_zero;	 // "__nvvm_sust_b_3d_i32_zero"
              }
              break;
            case '6':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+19, "4_", 2))
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 't':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "rap", 3))
                  break;
                return Intrinsic::nvvm_sust_b_3d_i64_trap;	 // "__nvvm_sust_b_3d_i64_trap"
              case 'z':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "ero", 3))
                  break;
                return Intrinsic::nvvm_sust_b_3d_i64_zero;	 // "__nvvm_sust_b_3d_i64_zero"
              }
              break;
            case '8':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "_clamp", 6))
                break;
              return Intrinsic::nvvm_sust_b_3d_i8_clamp;	 // "__nvvm_sust_b_3d_i8_clamp"
            }
            break;
          }
          break;
        case 'p':	 // 6 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_i", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "6_trap", 6))
                break;
              return Intrinsic::nvvm_sust_p_1d_i16_trap;	 // "__nvvm_sust_p_1d_i16_trap"
            case '3':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "2_trap", 6))
                break;
              return Intrinsic::nvvm_sust_p_1d_i32_trap;	 // "__nvvm_sust_p_1d_i32_trap"
            }
            break;
          case '2':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_i", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "6_trap", 6))
                break;
              return Intrinsic::nvvm_sust_p_2d_i16_trap;	 // "__nvvm_sust_p_2d_i16_trap"
            case '3':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "2_trap", 6))
                break;
              return Intrinsic::nvvm_sust_p_2d_i32_trap;	 // "__nvvm_sust_p_2d_i32_trap"
            }
            break;
          case '3':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_i", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "6_trap", 6))
                break;
              return Intrinsic::nvvm_sust_p_3d_i16_trap;	 // "__nvvm_sust_p_3d_i16_trap"
            case '3':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "2_trap", 6))
                break;
              return Intrinsic::nvvm_sust_p_3d_i32_trap;	 // "__nvvm_sust_p_3d_i32_trap"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 26:	 // 36 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_ptx_read_", 16))
        break;
      switch (BuiltinName[19]) {
      default: break;
      case 'c':	 // 5 strings to match.
        switch (BuiltinName[20]) {
        default: break;
        case 'l':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "ock64", 5))
            break;
          return Intrinsic::ptx_read_clock64;	 // "__builtin_ptx_read_clock64"
        case 't':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+21, "aid_", 4))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'w':	 // 1 string to match.
            return Intrinsic::ptx_read_ctaid_w;	 // "__builtin_ptx_read_ctaid_w"
          case 'x':	 // 1 string to match.
            return Intrinsic::ptx_read_ctaid_x;	 // "__builtin_ptx_read_ctaid_x"
          case 'y':	 // 1 string to match.
            return Intrinsic::ptx_read_ctaid_y;	 // "__builtin_ptx_read_ctaid_y"
          case 'z':	 // 1 string to match.
            return Intrinsic::ptx_read_ctaid_z;	 // "__builtin_ptx_read_ctaid_z"
          }
          break;
        }
        break;
      case 'n':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "warpid", 6))
          break;
        return Intrinsic::ptx_read_nwarpid;	 // "__builtin_ptx_read_nwarpid"
      }
      break;
    case 'n':	 // 30 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 'r':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+8, "ead_ptx_sreg_tid_", 17))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'x':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_tid_x;	 // "__nvvm_read_ptx_sreg_tid_x"
        case 'y':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_tid_y;	 // "__nvvm_read_ptx_sreg_tid_y"
        case 'z':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_tid_z;	 // "__nvvm_read_ptx_sreg_tid_z"
        }
        break;
      case 's':	 // 27 strings to match.
        if (memcmp(BuiltinName.data()+8, "ust_", 4))
          break;
        switch (BuiltinName[12]) {
        default: break;
        case 'b':	 // 21 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case '1':	 // 7 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_", 2))
              break;
            switch (BuiltinName[17]) {
            default: break;
            case 'i':	 // 3 strings to match.
              switch (BuiltinName[18]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+19, "6_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_i16_clamp;	 // "__nvvm_sust_b_1d_i16_clamp"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+19, "2_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_i32_clamp;	 // "__nvvm_sust_b_1d_i32_clamp"
              case '6':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+19, "4_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_i64_clamp;	 // "__nvvm_sust_b_1d_i64_clamp"
              }
              break;
            case 'v':	 // 4 strings to match.
              switch (BuiltinName[18]) {
              default: break;
              case '2':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+19, "i8_", 3))
                  break;
                switch (BuiltinName[22]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i8_trap;	 // "__nvvm_sust_b_1d_v2i8_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i8_zero;	 // "__nvvm_sust_b_1d_v2i8_zero"
                }
                break;
              case '4':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+19, "i8_", 3))
                  break;
                switch (BuiltinName[22]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v4i8_trap;	 // "__nvvm_sust_b_1d_v4i8_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v4i8_zero;	 // "__nvvm_sust_b_1d_v4i8_zero"
                }
                break;
              }
              break;
            }
            break;
          case '2':	 // 7 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_", 2))
              break;
            switch (BuiltinName[17]) {
            default: break;
            case 'i':	 // 3 strings to match.
              switch (BuiltinName[18]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+19, "6_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_i16_clamp;	 // "__nvvm_sust_b_2d_i16_clamp"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+19, "2_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_i32_clamp;	 // "__nvvm_sust_b_2d_i32_clamp"
              case '6':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+19, "4_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_i64_clamp;	 // "__nvvm_sust_b_2d_i64_clamp"
              }
              break;
            case 'v':	 // 4 strings to match.
              switch (BuiltinName[18]) {
              default: break;
              case '2':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+19, "i8_", 3))
                  break;
                switch (BuiltinName[22]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i8_trap;	 // "__nvvm_sust_b_2d_v2i8_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i8_zero;	 // "__nvvm_sust_b_2d_v2i8_zero"
                }
                break;
              case '4':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+19, "i8_", 3))
                  break;
                switch (BuiltinName[22]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v4i8_trap;	 // "__nvvm_sust_b_2d_v4i8_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v4i8_zero;	 // "__nvvm_sust_b_2d_v4i8_zero"
                }
                break;
              }
              break;
            }
            break;
          case '3':	 // 7 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_", 2))
              break;
            switch (BuiltinName[17]) {
            default: break;
            case 'i':	 // 3 strings to match.
              switch (BuiltinName[18]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+19, "6_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_i16_clamp;	 // "__nvvm_sust_b_3d_i16_clamp"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+19, "2_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_i32_clamp;	 // "__nvvm_sust_b_3d_i32_clamp"
              case '6':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+19, "4_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_i64_clamp;	 // "__nvvm_sust_b_3d_i64_clamp"
              }
              break;
            case 'v':	 // 4 strings to match.
              switch (BuiltinName[18]) {
              default: break;
              case '2':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+19, "i8_", 3))
                  break;
                switch (BuiltinName[22]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i8_trap;	 // "__nvvm_sust_b_3d_v2i8_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i8_zero;	 // "__nvvm_sust_b_3d_v2i8_zero"
                }
                break;
              case '4':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+19, "i8_", 3))
                  break;
                switch (BuiltinName[22]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v4i8_trap;	 // "__nvvm_sust_b_3d_v4i8_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+23, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v4i8_zero;	 // "__nvvm_sust_b_3d_v4i8_zero"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 'p':	 // 6 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "i8_trap", 7))
                break;
              return Intrinsic::nvvm_sust_p_1d_v2i8_trap;	 // "__nvvm_sust_p_1d_v2i8_trap"
            case '4':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "i8_trap", 7))
                break;
              return Intrinsic::nvvm_sust_p_1d_v4i8_trap;	 // "__nvvm_sust_p_1d_v4i8_trap"
            }
            break;
          case '2':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "i8_trap", 7))
                break;
              return Intrinsic::nvvm_sust_p_2d_v2i8_trap;	 // "__nvvm_sust_p_2d_v2i8_trap"
            case '4':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "i8_trap", 7))
                break;
              return Intrinsic::nvvm_sust_p_2d_v4i8_trap;	 // "__nvvm_sust_p_2d_v4i8_trap"
            }
            break;
          case '3':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "i8_trap", 7))
                break;
              return Intrinsic::nvvm_sust_p_3d_v2i8_trap;	 // "__nvvm_sust_p_3d_v2i8_trap"
            case '4':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+19, "i8_trap", 7))
                break;
              return Intrinsic::nvvm_sust_p_3d_v4i8_trap;	 // "__nvvm_sust_p_3d_v4i8_trap"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 27:	 // 56 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
        break;
      switch (BuiltinName[10]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+11, "djust_trampoline", 16))
          break;
        return Intrinsic::adjust_trampoline;	 // "__builtin_adjust_trampoline"
      case 'p':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+11, "tx_read_nctaid_", 15))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'w':	 // 1 string to match.
          return Intrinsic::ptx_read_nctaid_w;	 // "__builtin_ptx_read_nctaid_w"
        case 'x':	 // 1 string to match.
          return Intrinsic::ptx_read_nctaid_x;	 // "__builtin_ptx_read_nctaid_x"
        case 'y':	 // 1 string to match.
          return Intrinsic::ptx_read_nctaid_y;	 // "__builtin_ptx_read_nctaid_y"
        case 'z':	 // 1 string to match.
          return Intrinsic::ptx_read_nctaid_z;	 // "__builtin_ptx_read_nctaid_z"
        }
        break;
      }
      break;
    case 'n':	 // 51 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 'r':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+8, "ead_ptx_sreg_ntid_", 18))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'x':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_ntid_x;	 // "__nvvm_read_ptx_sreg_ntid_x"
        case 'y':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_ntid_y;	 // "__nvvm_read_ptx_sreg_ntid_y"
        case 'z':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_ntid_z;	 // "__nvvm_read_ptx_sreg_ntid_z"
        }
        break;
      case 's':	 // 48 strings to match.
        if (memcmp(BuiltinName.data()+8, "ust_", 4))
          break;
        switch (BuiltinName[12]) {
        default: break;
        case 'b':	 // 36 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case '1':	 // 12 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "6_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i16_trap;	 // "__nvvm_sust_b_1d_v2i16_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i16_zero;	 // "__nvvm_sust_b_1d_v2i16_zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "2_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i32_trap;	 // "__nvvm_sust_b_1d_v2i32_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i32_zero;	 // "__nvvm_sust_b_1d_v2i32_zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "4_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i64_trap;	 // "__nvvm_sust_b_1d_v2i64_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v2i64_zero;	 // "__nvvm_sust_b_1d_v2i64_zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "_clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v2i8_clamp;	 // "__nvvm_sust_b_1d_v2i8_clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "6_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v4i16_trap;	 // "__nvvm_sust_b_1d_v4i16_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v4i16_zero;	 // "__nvvm_sust_b_1d_v4i16_zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "2_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v4i32_trap;	 // "__nvvm_sust_b_1d_v4i32_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_1d_v4i32_zero;	 // "__nvvm_sust_b_1d_v4i32_zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "_clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v4i8_clamp;	 // "__nvvm_sust_b_1d_v4i8_clamp"
              }
              break;
            }
            break;
          case '2':	 // 12 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "6_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i16_trap;	 // "__nvvm_sust_b_2d_v2i16_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i16_zero;	 // "__nvvm_sust_b_2d_v2i16_zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "2_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i32_trap;	 // "__nvvm_sust_b_2d_v2i32_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i32_zero;	 // "__nvvm_sust_b_2d_v2i32_zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "4_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i64_trap;	 // "__nvvm_sust_b_2d_v2i64_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v2i64_zero;	 // "__nvvm_sust_b_2d_v2i64_zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "_clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v2i8_clamp;	 // "__nvvm_sust_b_2d_v2i8_clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "6_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v4i16_trap;	 // "__nvvm_sust_b_2d_v4i16_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v4i16_zero;	 // "__nvvm_sust_b_2d_v4i16_zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "2_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v4i32_trap;	 // "__nvvm_sust_b_2d_v4i32_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_2d_v4i32_zero;	 // "__nvvm_sust_b_2d_v4i32_zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "_clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v4i8_clamp;	 // "__nvvm_sust_b_2d_v4i8_clamp"
              }
              break;
            }
            break;
          case '3':	 // 12 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 7 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "6_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i16_trap;	 // "__nvvm_sust_b_3d_v2i16_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i16_zero;	 // "__nvvm_sust_b_3d_v2i16_zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "2_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i32_trap;	 // "__nvvm_sust_b_3d_v2i32_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i32_zero;	 // "__nvvm_sust_b_3d_v2i32_zero"
                }
                break;
              case '6':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "4_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i64_trap;	 // "__nvvm_sust_b_3d_v2i64_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v2i64_zero;	 // "__nvvm_sust_b_3d_v2i64_zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "_clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v2i8_clamp;	 // "__nvvm_sust_b_3d_v2i8_clamp"
              }
              break;
            case '4':	 // 5 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "6_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v4i16_trap;	 // "__nvvm_sust_b_3d_v4i16_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v4i16_zero;	 // "__nvvm_sust_b_3d_v4i16_zero"
                }
                break;
              case '3':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+21, "2_", 2))
                  break;
                switch (BuiltinName[23]) {
                default: break;
                case 't':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "rap", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v4i32_trap;	 // "__nvvm_sust_b_3d_v4i32_trap"
                case 'z':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "ero", 3))
                    break;
                  return Intrinsic::nvvm_sust_b_3d_v4i32_zero;	 // "__nvvm_sust_b_3d_v4i32_zero"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "_clamp", 6))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v4i8_clamp;	 // "__nvvm_sust_b_3d_v4i8_clamp"
              }
              break;
            }
            break;
          }
          break;
        case 'p':	 // 12 strings to match.
          if (BuiltinName[13] != '_')
            break;
          switch (BuiltinName[14]) {
          default: break;
          case '1':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 2 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_v2i16_trap;	 // "__nvvm_sust_p_1d_v2i16_trap"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_v2i32_trap;	 // "__nvvm_sust_p_1d_v2i32_trap"
              }
              break;
            case '4':	 // 2 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_v4i16_trap;	 // "__nvvm_sust_p_1d_v4i16_trap"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_1d_v4i32_trap;	 // "__nvvm_sust_p_1d_v4i32_trap"
              }
              break;
            }
            break;
          case '2':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 2 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_v2i16_trap;	 // "__nvvm_sust_p_2d_v2i16_trap"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_v2i32_trap;	 // "__nvvm_sust_p_2d_v2i32_trap"
              }
              break;
            case '4':	 // 2 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_v4i16_trap;	 // "__nvvm_sust_p_2d_v4i16_trap"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_2d_v4i32_trap;	 // "__nvvm_sust_p_2d_v4i32_trap"
              }
              break;
            }
            break;
          case '3':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 2 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_3d_v2i16_trap;	 // "__nvvm_sust_p_3d_v2i16_trap"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_3d_v2i32_trap;	 // "__nvvm_sust_p_3d_v2i32_trap"
              }
              break;
            case '4':	 // 2 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_3d_v4i16_trap;	 // "__nvvm_sust_p_3d_v4i16_trap"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_trap", 6))
                  break;
                return Intrinsic::nvvm_sust_p_3d_v4i32_trap;	 // "__nvvm_sust_p_3d_v4i32_trap"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 28:	 // 33 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_ia32_vpermil2p", 21))
        break;
      switch (BuiltinName[24]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+25, "256", 3))
          break;
        return Intrinsic::x86_xop_vpermil2pd_256;	 // "__builtin_ia32_vpermil2pd256"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+25, "256", 3))
          break;
        return Intrinsic::x86_xop_vpermil2ps_256;	 // "__builtin_ia32_vpermil2ps256"
      }
      break;
    case 'n':	 // 31 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_", 4))
        break;
      switch (BuiltinName[7]) {
      default: break;
      case 'r':	 // 13 strings to match.
        if (memcmp(BuiltinName.data()+8, "ead_ptx_sreg_", 13))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'c':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+22, "taid_", 5))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 'x':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_ctaid_x;	 // "__nvvm_read_ptx_sreg_ctaid_x"
          case 'y':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_ctaid_y;	 // "__nvvm_read_ptx_sreg_ctaid_y"
          case 'z':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_ctaid_z;	 // "__nvvm_read_ptx_sreg_ctaid_z"
          }
          break;
        case 'e':	 // 10 strings to match.
          if (memcmp(BuiltinName.data()+22, "nvreg", 5))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg0;	 // "__nvvm_read_ptx_sreg_envreg0"
          case '1':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg1;	 // "__nvvm_read_ptx_sreg_envreg1"
          case '2':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg2;	 // "__nvvm_read_ptx_sreg_envreg2"
          case '3':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg3;	 // "__nvvm_read_ptx_sreg_envreg3"
          case '4':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg4;	 // "__nvvm_read_ptx_sreg_envreg4"
          case '5':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg5;	 // "__nvvm_read_ptx_sreg_envreg5"
          case '6':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg6;	 // "__nvvm_read_ptx_sreg_envreg6"
          case '7':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg7;	 // "__nvvm_read_ptx_sreg_envreg7"
          case '8':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg8;	 // "__nvvm_read_ptx_sreg_envreg8"
          case '9':	 // 1 string to match.
            return Intrinsic::nvvm_read_ptx_sreg_envreg9;	 // "__nvvm_read_ptx_sreg_envreg9"
          }
          break;
        }
        break;
      case 's':	 // 16 strings to match.
        if (BuiltinName[8] != 'u')
          break;
        switch (BuiltinName[9]) {
        default: break;
        case 'q':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+10, "_channel_data_type", 18))
            break;
          return Intrinsic::nvvm_suq_channel_data_type;	 // "__nvvm_suq_channel_data_type"
        case 's':	 // 15 strings to match.
          if (memcmp(BuiltinName.data()+10, "t_b_", 4))
            break;
          switch (BuiltinName[14]) {
          default: break;
          case '1':	 // 5 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 3 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v2i16_clamp;	 // "__nvvm_sust_b_1d_v2i16_clamp"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v2i32_clamp;	 // "__nvvm_sust_b_1d_v2i32_clamp"
              case '6':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "4_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v2i64_clamp;	 // "__nvvm_sust_b_1d_v2i64_clamp"
              }
              break;
            case '4':	 // 2 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v4i16_clamp;	 // "__nvvm_sust_b_1d_v4i16_clamp"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_1d_v4i32_clamp;	 // "__nvvm_sust_b_1d_v4i32_clamp"
              }
              break;
            }
            break;
          case '2':	 // 5 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 3 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v2i16_clamp;	 // "__nvvm_sust_b_2d_v2i16_clamp"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v2i32_clamp;	 // "__nvvm_sust_b_2d_v2i32_clamp"
              case '6':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "4_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v2i64_clamp;	 // "__nvvm_sust_b_2d_v2i64_clamp"
              }
              break;
            case '4':	 // 2 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v4i16_clamp;	 // "__nvvm_sust_b_2d_v4i16_clamp"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_2d_v4i32_clamp;	 // "__nvvm_sust_b_2d_v4i32_clamp"
              }
              break;
            }
            break;
          case '3':	 // 5 strings to match.
            if (memcmp(BuiltinName.data()+15, "d_v", 3))
              break;
            switch (BuiltinName[18]) {
            default: break;
            case '2':	 // 3 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v2i16_clamp;	 // "__nvvm_sust_b_3d_v2i16_clamp"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v2i32_clamp;	 // "__nvvm_sust_b_3d_v2i32_clamp"
              case '6':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "4_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v2i64_clamp;	 // "__nvvm_sust_b_3d_v2i64_clamp"
              }
              break;
            case '4':	 // 2 strings to match.
              if (BuiltinName[19] != 'i')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "6_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v4i16_clamp;	 // "__nvvm_sust_b_3d_v4i16_clamp"
              case '3':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "2_clamp", 7))
                  break;
                return Intrinsic::nvvm_sust_b_3d_v4i32_clamp;	 // "__nvvm_sust_b_3d_v4i32_clamp"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+8, "xq_", 3))
          break;
        switch (BuiltinName[11]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+12, "hannel_data_type", 16))
            break;
          return Intrinsic::nvvm_txq_channel_data_type;	 // "__nvvm_txq_channel_data_type"
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+12, "um_mipmap_levels", 16))
            break;
          return Intrinsic::nvvm_txq_num_mipmap_levels;	 // "__nvvm_txq_num_mipmap_levels"
        }
        break;
      }
      break;
    }
    break;
  case 29:	 // 26 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_read_ptx_sreg_", 21))
      break;
    switch (BuiltinName[21]) {
    default: break;
    case 'e':	 // 22 strings to match.
      if (memcmp(BuiltinName.data()+22, "nvreg", 5))
        break;
      switch (BuiltinName[27]) {
      default: break;
      case '1':	 // 10 strings to match.
        switch (BuiltinName[28]) {
        default: break;
        case '0':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg10;	 // "__nvvm_read_ptx_sreg_envreg10"
        case '1':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg11;	 // "__nvvm_read_ptx_sreg_envreg11"
        case '2':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg12;	 // "__nvvm_read_ptx_sreg_envreg12"
        case '3':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg13;	 // "__nvvm_read_ptx_sreg_envreg13"
        case '4':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg14;	 // "__nvvm_read_ptx_sreg_envreg14"
        case '5':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg15;	 // "__nvvm_read_ptx_sreg_envreg15"
        case '6':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg16;	 // "__nvvm_read_ptx_sreg_envreg16"
        case '7':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg17;	 // "__nvvm_read_ptx_sreg_envreg17"
        case '8':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg18;	 // "__nvvm_read_ptx_sreg_envreg18"
        case '9':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg19;	 // "__nvvm_read_ptx_sreg_envreg19"
        }
        break;
      case '2':	 // 10 strings to match.
        switch (BuiltinName[28]) {
        default: break;
        case '0':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg20;	 // "__nvvm_read_ptx_sreg_envreg20"
        case '1':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg21;	 // "__nvvm_read_ptx_sreg_envreg21"
        case '2':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg22;	 // "__nvvm_read_ptx_sreg_envreg22"
        case '3':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg23;	 // "__nvvm_read_ptx_sreg_envreg23"
        case '4':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg24;	 // "__nvvm_read_ptx_sreg_envreg24"
        case '5':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg25;	 // "__nvvm_read_ptx_sreg_envreg25"
        case '6':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg26;	 // "__nvvm_read_ptx_sreg_envreg26"
        case '7':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg27;	 // "__nvvm_read_ptx_sreg_envreg27"
        case '8':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg28;	 // "__nvvm_read_ptx_sreg_envreg28"
        case '9':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg29;	 // "__nvvm_read_ptx_sreg_envreg29"
        }
        break;
      case '3':	 // 2 strings to match.
        switch (BuiltinName[28]) {
        default: break;
        case '0':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg30;	 // "__nvvm_read_ptx_sreg_envreg30"
        case '1':	 // 1 string to match.
          return Intrinsic::nvvm_read_ptx_sreg_envreg31;	 // "__nvvm_read_ptx_sreg_envreg31"
        }
        break;
      }
      break;
    case 'n':	 // 3 strings to match.
      if (memcmp(BuiltinName.data()+22, "ctaid_", 6))
        break;
      switch (BuiltinName[28]) {
      default: break;
      case 'x':	 // 1 string to match.
        return Intrinsic::nvvm_read_ptx_sreg_nctaid_x;	 // "__nvvm_read_ptx_sreg_nctaid_x"
      case 'y':	 // 1 string to match.
        return Intrinsic::nvvm_read_ptx_sreg_nctaid_y;	 // "__nvvm_read_ptx_sreg_nctaid_y"
      case 'z':	 // 1 string to match.
        return Intrinsic::nvvm_read_ptx_sreg_nctaid_z;	 // "__nvvm_read_ptx_sreg_nctaid_z"
      }
      break;
    case 'w':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+22, "arpsize", 7))
        break;
      return Intrinsic::nvvm_read_ptx_sreg_warpsize;	 // "__nvvm_read_ptx_sreg_warpsize"
    }
    break;
  case 30:	 // 11 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'b':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+3, "uiltin_ptx_read_lanemask_", 25))
        break;
      switch (BuiltinName[28]) {
      default: break;
      case 'e':	 // 1 string to match.
        if (BuiltinName[29] != 'q')
          break;
        return Intrinsic::ptx_read_lanemask_eq;	 // "__builtin_ptx_read_lanemask_eq"
      case 'g':	 // 2 strings to match.
        switch (BuiltinName[29]) {
        default: break;
        case 'e':	 // 1 string to match.
          return Intrinsic::ptx_read_lanemask_ge;	 // "__builtin_ptx_read_lanemask_ge"
        case 't':	 // 1 string to match.
          return Intrinsic::ptx_read_lanemask_gt;	 // "__builtin_ptx_read_lanemask_gt"
        }
        break;
      case 'l':	 // 2 strings to match.
        switch (BuiltinName[29]) {
        default: break;
        case 'e':	 // 1 string to match.
          return Intrinsic::ptx_read_lanemask_le;	 // "__builtin_ptx_read_lanemask_le"
        case 't':	 // 1 string to match.
          return Intrinsic::ptx_read_lanemask_lt;	 // "__builtin_ptx_read_lanemask_lt"
        }
        break;
      }
      break;
    case 'n':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+3, "vvm_sust_", 9))
        break;
      switch (BuiltinName[12]) {
      default: break;
      case 'b':	 // 4 strings to match.
        if (BuiltinName[13] != '_')
          break;
        switch (BuiltinName[14]) {
        default: break;
        case '1':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+15, "d_array_i8_", 11))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "rap", 3))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i8_trap;	 // "__nvvm_sust_b_1d_array_i8_trap"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "ero", 3))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i8_zero;	 // "__nvvm_sust_b_1d_array_i8_zero"
          }
          break;
        case '2':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+15, "d_array_i8_", 11))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "rap", 3))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i8_trap;	 // "__nvvm_sust_b_2d_array_i8_trap"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "ero", 3))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i8_zero;	 // "__nvvm_sust_b_2d_array_i8_zero"
          }
          break;
        }
        break;
      case 'p':	 // 2 strings to match.
        if (BuiltinName[13] != '_')
          break;
        switch (BuiltinName[14]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+15, "d_array_i8_trap", 15))
            break;
          return Intrinsic::nvvm_sust_p_1d_array_i8_trap;	 // "__nvvm_sust_p_1d_array_i8_trap"
        case '2':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+15, "d_array_i8_trap", 15))
            break;
          return Intrinsic::nvvm_sust_p_2d_array_i8_trap;	 // "__nvvm_sust_p_2d_array_i8_trap"
        }
        break;
      }
      break;
    }
    break;
  case 31:	 // 18 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_sust_", 12))
      break;
    switch (BuiltinName[12]) {
    default: break;
    case 'b':	 // 14 strings to match.
      if (BuiltinName[13] != '_')
        break;
      switch (BuiltinName[14]) {
      default: break;
      case '1':	 // 7 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_i", 9))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '1':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+25, "6_", 2))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "rap", 3))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i16_trap;	 // "__nvvm_sust_b_1d_array_i16_trap"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "ero", 3))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i16_zero;	 // "__nvvm_sust_b_1d_array_i16_zero"
          }
          break;
        case '3':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+25, "2_", 2))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "rap", 3))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i32_trap;	 // "__nvvm_sust_b_1d_array_i32_trap"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "ero", 3))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i32_zero;	 // "__nvvm_sust_b_1d_array_i32_zero"
          }
          break;
        case '6':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+25, "4_", 2))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "rap", 3))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i64_trap;	 // "__nvvm_sust_b_1d_array_i64_trap"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "ero", 3))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i64_zero;	 // "__nvvm_sust_b_1d_array_i64_zero"
          }
          break;
        case '8':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "_clamp", 6))
            break;
          return Intrinsic::nvvm_sust_b_1d_array_i8_clamp;	 // "__nvvm_sust_b_1d_array_i8_clamp"
        }
        break;
      case '2':	 // 7 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_i", 9))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '1':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+25, "6_", 2))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "rap", 3))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i16_trap;	 // "__nvvm_sust_b_2d_array_i16_trap"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "ero", 3))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i16_zero;	 // "__nvvm_sust_b_2d_array_i16_zero"
          }
          break;
        case '3':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+25, "2_", 2))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "rap", 3))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i32_trap;	 // "__nvvm_sust_b_2d_array_i32_trap"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "ero", 3))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i32_zero;	 // "__nvvm_sust_b_2d_array_i32_zero"
          }
          break;
        case '6':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+25, "4_", 2))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "rap", 3))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i64_trap;	 // "__nvvm_sust_b_2d_array_i64_trap"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "ero", 3))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i64_zero;	 // "__nvvm_sust_b_2d_array_i64_zero"
          }
          break;
        case '8':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "_clamp", 6))
            break;
          return Intrinsic::nvvm_sust_b_2d_array_i8_clamp;	 // "__nvvm_sust_b_2d_array_i8_clamp"
        }
        break;
      }
      break;
    case 'p':	 // 4 strings to match.
      if (BuiltinName[13] != '_')
        break;
      switch (BuiltinName[14]) {
      default: break;
      case '1':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_i", 9))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "6_trap", 6))
            break;
          return Intrinsic::nvvm_sust_p_1d_array_i16_trap;	 // "__nvvm_sust_p_1d_array_i16_trap"
        case '3':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "2_trap", 6))
            break;
          return Intrinsic::nvvm_sust_p_1d_array_i32_trap;	 // "__nvvm_sust_p_1d_array_i32_trap"
        }
        break;
      case '2':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_i", 9))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "6_trap", 6))
            break;
          return Intrinsic::nvvm_sust_p_2d_array_i16_trap;	 // "__nvvm_sust_p_2d_array_i16_trap"
        case '3':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "2_trap", 6))
            break;
          return Intrinsic::nvvm_sust_p_2d_array_i32_trap;	 // "__nvvm_sust_p_2d_array_i32_trap"
        }
        break;
      }
      break;
    }
    break;
  case 32:	 // 18 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_sust_", 12))
      break;
    switch (BuiltinName[12]) {
    default: break;
    case 'b':	 // 14 strings to match.
      if (BuiltinName[13] != '_')
        break;
      switch (BuiltinName[14]) {
      default: break;
      case '1':	 // 7 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_", 8))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'i':	 // 3 strings to match.
          switch (BuiltinName[24]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "6_clamp", 7))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i16_clamp;	 // "__nvvm_sust_b_1d_array_i16_clamp"
          case '3':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "2_clamp", 7))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i32_clamp;	 // "__nvvm_sust_b_1d_array_i32_clamp"
          case '6':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "4_clamp", 7))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_i64_clamp;	 // "__nvvm_sust_b_1d_array_i64_clamp"
          }
          break;
        case 'v':	 // 4 strings to match.
          switch (BuiltinName[24]) {
          default: break;
          case '2':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+25, "i8_", 3))
              break;
            switch (BuiltinName[28]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+29, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i8_trap;	 // "__nvvm_sust_b_1d_array_v2i8_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+29, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i8_zero;	 // "__nvvm_sust_b_1d_array_v2i8_zero"
            }
            break;
          case '4':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+25, "i8_", 3))
              break;
            switch (BuiltinName[28]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+29, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v4i8_trap;	 // "__nvvm_sust_b_1d_array_v4i8_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+29, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v4i8_zero;	 // "__nvvm_sust_b_1d_array_v4i8_zero"
            }
            break;
          }
          break;
        }
        break;
      case '2':	 // 7 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_", 8))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'i':	 // 3 strings to match.
          switch (BuiltinName[24]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "6_clamp", 7))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i16_clamp;	 // "__nvvm_sust_b_2d_array_i16_clamp"
          case '3':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "2_clamp", 7))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i32_clamp;	 // "__nvvm_sust_b_2d_array_i32_clamp"
          case '6':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "4_clamp", 7))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_i64_clamp;	 // "__nvvm_sust_b_2d_array_i64_clamp"
          }
          break;
        case 'v':	 // 4 strings to match.
          switch (BuiltinName[24]) {
          default: break;
          case '2':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+25, "i8_", 3))
              break;
            switch (BuiltinName[28]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+29, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i8_trap;	 // "__nvvm_sust_b_2d_array_v2i8_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+29, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i8_zero;	 // "__nvvm_sust_b_2d_array_v2i8_zero"
            }
            break;
          case '4':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+25, "i8_", 3))
              break;
            switch (BuiltinName[28]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+29, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v4i8_trap;	 // "__nvvm_sust_b_2d_array_v4i8_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+29, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v4i8_zero;	 // "__nvvm_sust_b_2d_array_v4i8_zero"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 'p':	 // 4 strings to match.
      if (BuiltinName[13] != '_')
        break;
      switch (BuiltinName[14]) {
      default: break;
      case '1':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_v", 9))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '2':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "i8_trap", 7))
            break;
          return Intrinsic::nvvm_sust_p_1d_array_v2i8_trap;	 // "__nvvm_sust_p_1d_array_v2i8_trap"
        case '4':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "i8_trap", 7))
            break;
          return Intrinsic::nvvm_sust_p_1d_array_v4i8_trap;	 // "__nvvm_sust_p_1d_array_v4i8_trap"
        }
        break;
      case '2':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_v", 9))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '2':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "i8_trap", 7))
            break;
          return Intrinsic::nvvm_sust_p_2d_array_v2i8_trap;	 // "__nvvm_sust_p_2d_array_v2i8_trap"
        case '4':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "i8_trap", 7))
            break;
          return Intrinsic::nvvm_sust_p_2d_array_v4i8_trap;	 // "__nvvm_sust_p_2d_array_v4i8_trap"
        }
        break;
      }
      break;
    }
    break;
  case 33:	 // 32 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_sust_", 12))
      break;
    switch (BuiltinName[12]) {
    default: break;
    case 'b':	 // 24 strings to match.
      if (BuiltinName[13] != '_')
        break;
      switch (BuiltinName[14]) {
      default: break;
      case '1':	 // 12 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_v", 9))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '2':	 // 7 strings to match.
          if (BuiltinName[25] != 'i')
            break;
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "6_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i16_trap;	 // "__nvvm_sust_b_1d_array_v2i16_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i16_zero;	 // "__nvvm_sust_b_1d_array_v2i16_zero"
            }
            break;
          case '3':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "2_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i32_trap;	 // "__nvvm_sust_b_1d_array_v2i32_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i32_zero;	 // "__nvvm_sust_b_1d_array_v2i32_zero"
            }
            break;
          case '6':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "4_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i64_trap;	 // "__nvvm_sust_b_1d_array_v2i64_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v2i64_zero;	 // "__nvvm_sust_b_1d_array_v2i64_zero"
            }
            break;
          case '8':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "_clamp", 6))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_v2i8_clamp;	 // "__nvvm_sust_b_1d_array_v2i8_clamp"
          }
          break;
        case '4':	 // 5 strings to match.
          if (BuiltinName[25] != 'i')
            break;
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "6_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v4i16_trap;	 // "__nvvm_sust_b_1d_array_v4i16_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v4i16_zero;	 // "__nvvm_sust_b_1d_array_v4i16_zero"
            }
            break;
          case '3':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "2_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v4i32_trap;	 // "__nvvm_sust_b_1d_array_v4i32_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_1d_array_v4i32_zero;	 // "__nvvm_sust_b_1d_array_v4i32_zero"
            }
            break;
          case '8':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "_clamp", 6))
              break;
            return Intrinsic::nvvm_sust_b_1d_array_v4i8_clamp;	 // "__nvvm_sust_b_1d_array_v4i8_clamp"
          }
          break;
        }
        break;
      case '2':	 // 12 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_v", 9))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '2':	 // 7 strings to match.
          if (BuiltinName[25] != 'i')
            break;
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "6_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i16_trap;	 // "__nvvm_sust_b_2d_array_v2i16_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i16_zero;	 // "__nvvm_sust_b_2d_array_v2i16_zero"
            }
            break;
          case '3':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "2_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i32_trap;	 // "__nvvm_sust_b_2d_array_v2i32_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i32_zero;	 // "__nvvm_sust_b_2d_array_v2i32_zero"
            }
            break;
          case '6':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "4_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i64_trap;	 // "__nvvm_sust_b_2d_array_v2i64_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v2i64_zero;	 // "__nvvm_sust_b_2d_array_v2i64_zero"
            }
            break;
          case '8':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "_clamp", 6))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_v2i8_clamp;	 // "__nvvm_sust_b_2d_array_v2i8_clamp"
          }
          break;
        case '4':	 // 5 strings to match.
          if (BuiltinName[25] != 'i')
            break;
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "6_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v4i16_trap;	 // "__nvvm_sust_b_2d_array_v4i16_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v4i16_zero;	 // "__nvvm_sust_b_2d_array_v4i16_zero"
            }
            break;
          case '3':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "2_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 't':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "rap", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v4i32_trap;	 // "__nvvm_sust_b_2d_array_v4i32_trap"
            case 'z':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ero", 3))
                break;
              return Intrinsic::nvvm_sust_b_2d_array_v4i32_zero;	 // "__nvvm_sust_b_2d_array_v4i32_zero"
            }
            break;
          case '8':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "_clamp", 6))
              break;
            return Intrinsic::nvvm_sust_b_2d_array_v4i8_clamp;	 // "__nvvm_sust_b_2d_array_v4i8_clamp"
          }
          break;
        }
        break;
      }
      break;
    case 'p':	 // 8 strings to match.
      if (BuiltinName[13] != '_')
        break;
      switch (BuiltinName[14]) {
      default: break;
      case '1':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_v", 9))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '2':	 // 2 strings to match.
          if (BuiltinName[25] != 'i')
            break;
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "6_trap", 6))
              break;
            return Intrinsic::nvvm_sust_p_1d_array_v2i16_trap;	 // "__nvvm_sust_p_1d_array_v2i16_trap"
          case '3':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "2_trap", 6))
              break;
            return Intrinsic::nvvm_sust_p_1d_array_v2i32_trap;	 // "__nvvm_sust_p_1d_array_v2i32_trap"
          }
          break;
        case '4':	 // 2 strings to match.
          if (BuiltinName[25] != 'i')
            break;
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "6_trap", 6))
              break;
            return Intrinsic::nvvm_sust_p_1d_array_v4i16_trap;	 // "__nvvm_sust_p_1d_array_v4i16_trap"
          case '3':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "2_trap", 6))
              break;
            return Intrinsic::nvvm_sust_p_1d_array_v4i32_trap;	 // "__nvvm_sust_p_1d_array_v4i32_trap"
          }
          break;
        }
        break;
      case '2':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_array_v", 9))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '2':	 // 2 strings to match.
          if (BuiltinName[25] != 'i')
            break;
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "6_trap", 6))
              break;
            return Intrinsic::nvvm_sust_p_2d_array_v2i16_trap;	 // "__nvvm_sust_p_2d_array_v2i16_trap"
          case '3':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "2_trap", 6))
              break;
            return Intrinsic::nvvm_sust_p_2d_array_v2i32_trap;	 // "__nvvm_sust_p_2d_array_v2i32_trap"
          }
          break;
        case '4':	 // 2 strings to match.
          if (BuiltinName[25] != 'i')
            break;
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "6_trap", 6))
              break;
            return Intrinsic::nvvm_sust_p_2d_array_v4i16_trap;	 // "__nvvm_sust_p_2d_array_v4i16_trap"
          case '3':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "2_trap", 6))
              break;
            return Intrinsic::nvvm_sust_p_2d_array_v4i32_trap;	 // "__nvvm_sust_p_2d_array_v4i32_trap"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 34:	 // 10 strings to match.
    if (memcmp(BuiltinName.data()+0, "__nvvm_sust_b_", 14))
      break;
    switch (BuiltinName[14]) {
    default: break;
    case '1':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+15, "d_array_v", 9))
        break;
      switch (BuiltinName[24]) {
      default: break;
      case '2':	 // 3 strings to match.
        if (BuiltinName[25] != 'i')
          break;
        switch (BuiltinName[26]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "6_clamp", 7))
            break;
          return Intrinsic::nvvm_sust_b_1d_array_v2i16_clamp;	 // "__nvvm_sust_b_1d_array_v2i16_clamp"
        case '3':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "2_clamp", 7))
            break;
          return Intrinsic::nvvm_sust_b_1d_array_v2i32_clamp;	 // "__nvvm_sust_b_1d_array_v2i32_clamp"
        case '6':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "4_clamp", 7))
            break;
          return Intrinsic::nvvm_sust_b_1d_array_v2i64_clamp;	 // "__nvvm_sust_b_1d_array_v2i64_clamp"
        }
        break;
      case '4':	 // 2 strings to match.
        if (BuiltinName[25] != 'i')
          break;
        switch (BuiltinName[26]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "6_clamp", 7))
            break;
          return Intrinsic::nvvm_sust_b_1d_array_v4i16_clamp;	 // "__nvvm_sust_b_1d_array_v4i16_clamp"
        case '3':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "2_clamp", 7))
            break;
          return Intrinsic::nvvm_sust_b_1d_array_v4i32_clamp;	 // "__nvvm_sust_b_1d_array_v4i32_clamp"
        }
        break;
      }
      break;
    case '2':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+15, "d_array_v", 9))
        break;
      switch (BuiltinName[24]) {
      default: break;
      case '2':	 // 3 strings to match.
        if (BuiltinName[25] != 'i')
          break;
        switch (BuiltinName[26]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "6_clamp", 7))
            break;
          return Intrinsic::nvvm_sust_b_2d_array_v2i16_clamp;	 // "__nvvm_sust_b_2d_array_v2i16_clamp"
        case '3':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "2_clamp", 7))
            break;
          return Intrinsic::nvvm_sust_b_2d_array_v2i32_clamp;	 // "__nvvm_sust_b_2d_array_v2i32_clamp"
        case '6':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "4_clamp", 7))
            break;
          return Intrinsic::nvvm_sust_b_2d_array_v2i64_clamp;	 // "__nvvm_sust_b_2d_array_v2i64_clamp"
        }
        break;
      case '4':	 // 2 strings to match.
        if (BuiltinName[25] != 'i')
          break;
        switch (BuiltinName[26]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "6_clamp", 7))
            break;
          return Intrinsic::nvvm_sust_b_2d_array_v4i16_clamp;	 // "__nvvm_sust_b_2d_array_v4i16_clamp"
        case '3':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "2_clamp", 7))
            break;
          return Intrinsic::nvvm_sust_b_2d_array_v4i32_clamp;	 // "__nvvm_sust_b_2d_array_v4i32_clamp"
        }
        break;
      }
      break;
    }
    break;
  }
  }
  if (TargetPrefix == "AMDGPU") {
  switch (BuiltinName.size()) {
  default: break;
  case 20:	 // 2 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_amdgpu_r", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'c':	 // 1 string to match.
      if (BuiltinName[19] != 'p')
        break;
      return Intrinsic::AMDGPU_rcp;	 // "__builtin_amdgpu_rcp"
    case 's':	 // 1 string to match.
      if (BuiltinName[19] != 'q')
        break;
      return Intrinsic::AMDGPU_rsq;	 // "__builtin_amdgpu_rsq"
    }
    break;
  case 25:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_amdgpu_div_fmas", 25))
      break;
    return Intrinsic::AMDGPU_div_fmas;	 // "__builtin_amdgpu_div_fmas"
  case 26:	 // 2 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_amdgpu_div_", 21))
      break;
    switch (BuiltinName[21]) {
    default: break;
    case 'f':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+22, "ixup", 4))
        break;
      return Intrinsic::AMDGPU_div_fixup;	 // "__builtin_amdgpu_div_fixup"
    case 's':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+22, "cale", 4))
        break;
      return Intrinsic::AMDGPU_div_scale;	 // "__builtin_amdgpu_div_scale"
    }
    break;
  case 27:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_amdgpu_trig_preop", 27))
      break;
    return Intrinsic::AMDGPU_trig_preop;	 // "__builtin_amdgpu_trig_preop"
  case 28:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_amdgpu_rsq_clamped", 28))
      break;
    return Intrinsic::AMDGPU_rsq_clamped;	 // "__builtin_amdgpu_rsq_clamped"
  }
  }
  if (TargetPrefix == "aarch64") {
  switch (BuiltinName.size()) {
  default: break;
  case 17:	 // 3 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_arm_", 14))
      break;
    switch (BuiltinName[14]) {
    default: break;
    case 'd':	 // 2 strings to match.
      switch (BuiltinName[15]) {
      default: break;
      case 'm':	 // 1 string to match.
        if (BuiltinName[16] != 'b')
          break;
        return Intrinsic::aarch64_dmb;	 // "__builtin_arm_dmb"
      case 's':	 // 1 string to match.
        if (BuiltinName[16] != 'b')
          break;
        return Intrinsic::aarch64_dsb;	 // "__builtin_arm_dsb"
      }
      break;
    case 'i':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+15, "sb", 2))
        break;
      return Intrinsic::aarch64_isb;	 // "__builtin_arm_isb"
    }
    break;
  }
  }
  if (TargetPrefix == "arm") {
  switch (BuiltinName.size()) {
  default: break;
  case 17:	 // 6 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_arm_", 14))
      break;
    switch (BuiltinName[14]) {
    default: break;
    case 'c':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+15, "dp", 2))
        break;
      return Intrinsic::arm_cdp;	 // "__builtin_arm_cdp"
    case 'd':	 // 2 strings to match.
      switch (BuiltinName[15]) {
      default: break;
      case 'm':	 // 1 string to match.
        if (BuiltinName[16] != 'b')
          break;
        return Intrinsic::arm_dmb;	 // "__builtin_arm_dmb"
      case 's':	 // 1 string to match.
        if (BuiltinName[16] != 'b')
          break;
        return Intrinsic::arm_dsb;	 // "__builtin_arm_dsb"
      }
      break;
    case 'i':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+15, "sb", 2))
        break;
      return Intrinsic::arm_isb;	 // "__builtin_arm_isb"
    case 'm':	 // 2 strings to match.
      switch (BuiltinName[15]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (BuiltinName[16] != 'r')
          break;
        return Intrinsic::arm_mcr;	 // "__builtin_arm_mcr"
      case 'r':	 // 1 string to match.
        if (BuiltinName[16] != 'c')
          break;
        return Intrinsic::arm_mrc;	 // "__builtin_arm_mrc"
      }
      break;
    }
    break;
  case 18:	 // 8 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_arm_", 14))
      break;
    switch (BuiltinName[14]) {
    default: break;
    case 'c':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+15, "dp2", 3))
        break;
      return Intrinsic::arm_cdp2;	 // "__builtin_arm_cdp2"
    case 'm':	 // 3 strings to match.
      switch (BuiltinName[15]) {
      default: break;
      case 'c':	 // 2 strings to match.
        if (BuiltinName[16] != 'r')
          break;
        switch (BuiltinName[17]) {
        default: break;
        case '2':	 // 1 string to match.
          return Intrinsic::arm_mcr2;	 // "__builtin_arm_mcr2"
        case 'r':	 // 1 string to match.
          return Intrinsic::arm_mcrr;	 // "__builtin_arm_mcrr"
        }
        break;
      case 'r':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "c2", 2))
          break;
        return Intrinsic::arm_mrc2;	 // "__builtin_arm_mrc2"
      }
      break;
    case 'q':	 // 2 strings to match.
      switch (BuiltinName[15]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "dd", 2))
          break;
        return Intrinsic::arm_qadd;	 // "__builtin_arm_qadd"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "ub", 2))
          break;
        return Intrinsic::arm_qsub;	 // "__builtin_arm_qsub"
      }
      break;
    case 's':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+15, "sat", 3))
        break;
      return Intrinsic::arm_ssat;	 // "__builtin_arm_ssat"
    case 'u':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+15, "sat", 3))
        break;
      return Intrinsic::arm_usat;	 // "__builtin_arm_usat"
    }
    break;
  case 19:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_arm_mcrr2", 19))
      break;
    return Intrinsic::arm_mcrr2;	 // "__builtin_arm_mcrr2"
  case 23:	 // 2 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_arm_", 14))
      break;
    switch (BuiltinName[14]) {
    default: break;
    case 'g':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+15, "et_fpscr", 8))
        break;
      return Intrinsic::arm_get_fpscr;	 // "__builtin_arm_get_fpscr"
    case 's':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+15, "et_fpscr", 8))
        break;
      return Intrinsic::arm_set_fpscr;	 // "__builtin_arm_set_fpscr"
    }
    break;
  case 24:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_thread_pointer", 24))
      break;
    return Intrinsic::arm_thread_pointer;	 // "__builtin_thread_pointer"
  }
  }
  if (TargetPrefix == "hexagon") {
  switch (BuiltinName.size()) {
  default: break;
  case 18:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_circ_ldd", 18))
      break;
    return Intrinsic::hexagon_circ_ldd;	 // "__builtin_circ_ldd"
  case 23:	 // 2 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+19, "2_or", 4))
        break;
      return Intrinsic::hexagon_A2_or;	 // "__builtin_HEXAGON_A2_or"
    case 'C':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+19, "2_or", 4))
        break;
      return Intrinsic::hexagon_C2_or;	 // "__builtin_HEXAGON_C2_or"
    }
    break;
  case 24:	 // 23 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 13 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 12 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 3 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (BuiltinName[23] != 's')
              break;
            return Intrinsic::hexagon_A2_abs;	 // "__builtin_HEXAGON_A2_abs"
          case 'd':	 // 1 string to match.
            if (BuiltinName[23] != 'd')
              break;
            return Intrinsic::hexagon_A2_add;	 // "__builtin_HEXAGON_A2_add"
          case 'n':	 // 1 string to match.
            if (BuiltinName[23] != 'd')
              break;
            return Intrinsic::hexagon_A2_and;	 // "__builtin_HEXAGON_A2_and"
          }
          break;
        case 'm':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (BuiltinName[23] != 'x')
              break;
            return Intrinsic::hexagon_A2_max;	 // "__builtin_HEXAGON_A2_max"
          case 'i':	 // 1 string to match.
            if (BuiltinName[23] != 'n')
              break;
            return Intrinsic::hexagon_A2_min;	 // "__builtin_HEXAGON_A2_min"
          }
          break;
        case 'n':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (BuiltinName[23] != 'g')
              break;
            return Intrinsic::hexagon_A2_neg;	 // "__builtin_HEXAGON_A2_neg"
          case 'o':	 // 1 string to match.
            if (BuiltinName[23] != 't')
              break;
            return Intrinsic::hexagon_A2_not;	 // "__builtin_HEXAGON_A2_not"
          }
          break;
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "rp", 2))
            break;
          return Intrinsic::hexagon_A2_orp;	 // "__builtin_HEXAGON_A2_orp"
        case 's':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (BuiltinName[23] != 't')
              break;
            return Intrinsic::hexagon_A2_sat;	 // "__builtin_HEXAGON_A2_sat"
          case 'u':	 // 1 string to match.
            if (BuiltinName[23] != 'b')
              break;
            return Intrinsic::hexagon_A2_sub;	 // "__builtin_HEXAGON_A2_sub"
          }
          break;
        case 't':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "fr", 2))
            break;
          return Intrinsic::hexagon_A2_tfr;	 // "__builtin_HEXAGON_A2_tfr"
        case 'x':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "or", 2))
            break;
          return Intrinsic::hexagon_A2_xor;	 // "__builtin_HEXAGON_A2_xor"
        }
        break;
      case '4':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "_orn", 4))
          break;
        return Intrinsic::hexagon_A4_orn;	 // "__builtin_HEXAGON_A4_orn"
      }
      break;
    case 'C':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_", 2))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "nd", 2))
          break;
        return Intrinsic::hexagon_C2_and;	 // "__builtin_HEXAGON_C2_and"
      case 'm':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "ux", 2))
          break;
        return Intrinsic::hexagon_C2_mux;	 // "__builtin_HEXAGON_C2_mux"
      case 'n':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "ot", 2))
          break;
        return Intrinsic::hexagon_C2_not;	 // "__builtin_HEXAGON_C2_not"
      case 'o':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "rn", 2))
          break;
        return Intrinsic::hexagon_C2_orn;	 // "__builtin_HEXAGON_C2_orn"
      case 'x':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "or", 2))
          break;
        return Intrinsic::hexagon_C2_xor;	 // "__builtin_HEXAGON_C2_xor"
      }
      break;
    case 'S':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_c", 3))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'l':	 // 3 strings to match.
        switch (BuiltinName[23]) {
        default: break;
        case '0':	 // 1 string to match.
          return Intrinsic::hexagon_S2_cl0;	 // "__builtin_HEXAGON_S2_cl0"
        case '1':	 // 1 string to match.
          return Intrinsic::hexagon_S2_cl1;	 // "__builtin_HEXAGON_S2_cl1"
        case 'b':	 // 1 string to match.
          return Intrinsic::hexagon_S2_clb;	 // "__builtin_HEXAGON_S2_clb"
        }
        break;
      case 't':	 // 2 strings to match.
        switch (BuiltinName[23]) {
        default: break;
        case '0':	 // 1 string to match.
          return Intrinsic::hexagon_S2_ct0;	 // "__builtin_HEXAGON_S2_ct0"
        case '1':	 // 1 string to match.
          return Intrinsic::hexagon_S2_ct1;	 // "__builtin_HEXAGON_S2_ct1"
        }
        break;
      }
      break;
    }
    break;
  case 25:	 // 42 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 26 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 24 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 6 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "sp", 2))
              break;
            return Intrinsic::hexagon_A2_absp;	 // "__builtin_HEXAGON_A2_absp"
          case 'd':	 // 2 strings to match.
            if (BuiltinName[23] != 'd')
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_A2_addi;	 // "__builtin_HEXAGON_A2_addi"
            case 'p':	 // 1 string to match.
              return Intrinsic::hexagon_A2_addp;	 // "__builtin_HEXAGON_A2_addp"
            }
            break;
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "dp", 2))
              break;
            return Intrinsic::hexagon_A2_andp;	 // "__builtin_HEXAGON_A2_andp"
          case 's':	 // 2 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'l':	 // 1 string to match.
              if (BuiltinName[24] != 'h')
                break;
              return Intrinsic::hexagon_A2_aslh;	 // "__builtin_HEXAGON_A2_aslh"
            case 'r':	 // 1 string to match.
              if (BuiltinName[24] != 'h')
                break;
              return Intrinsic::hexagon_A2_asrh;	 // "__builtin_HEXAGON_A2_asrh"
            }
            break;
          }
          break;
        case 'm':	 // 4 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (BuiltinName[23] != 'x')
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'p':	 // 1 string to match.
              return Intrinsic::hexagon_A2_maxp;	 // "__builtin_HEXAGON_A2_maxp"
            case 'u':	 // 1 string to match.
              return Intrinsic::hexagon_A2_maxu;	 // "__builtin_HEXAGON_A2_maxu"
            }
            break;
          case 'i':	 // 2 strings to match.
            if (BuiltinName[23] != 'n')
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'p':	 // 1 string to match.
              return Intrinsic::hexagon_A2_minp;	 // "__builtin_HEXAGON_A2_minp"
            case 'u':	 // 1 string to match.
              return Intrinsic::hexagon_A2_minu;	 // "__builtin_HEXAGON_A2_minu"
            }
            break;
          }
          break;
        case 'n':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "gp", 2))
              break;
            return Intrinsic::hexagon_A2_negp;	 // "__builtin_HEXAGON_A2_negp"
          case 'o':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "tp", 2))
              break;
            return Intrinsic::hexagon_A2_notp;	 // "__builtin_HEXAGON_A2_notp"
          }
          break;
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "rir", 3))
            break;
          return Intrinsic::hexagon_A2_orir;	 // "__builtin_HEXAGON_A2_orir"
        case 's':	 // 7 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (BuiltinName[23] != 't')
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::hexagon_A2_satb;	 // "__builtin_HEXAGON_A2_satb"
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_A2_sath;	 // "__builtin_HEXAGON_A2_sath"
            }
            break;
          case 'u':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "bp", 2))
              break;
            return Intrinsic::hexagon_A2_subp;	 // "__builtin_HEXAGON_A2_subp"
          case 'w':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "iz", 2))
              break;
            return Intrinsic::hexagon_A2_swiz;	 // "__builtin_HEXAGON_A2_swiz"
          case 'x':	 // 3 strings to match.
            if (BuiltinName[23] != 't')
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::hexagon_A2_sxtb;	 // "__builtin_HEXAGON_A2_sxtb"
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_A2_sxth;	 // "__builtin_HEXAGON_A2_sxth"
            case 'w':	 // 1 string to match.
              return Intrinsic::hexagon_A2_sxtw;	 // "__builtin_HEXAGON_A2_sxtw"
            }
            break;
          }
          break;
        case 't':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "frp", 3))
            break;
          return Intrinsic::hexagon_A2_tfrp;	 // "__builtin_HEXAGON_A2_tfrp"
        case 'x':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "orp", 3))
            break;
          return Intrinsic::hexagon_A2_xorp;	 // "__builtin_HEXAGON_A2_xorp"
        case 'z':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "xt", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::hexagon_A2_zxtb;	 // "__builtin_HEXAGON_A2_zxtb"
          case 'h':	 // 1 string to match.
            return Intrinsic::hexagon_A2_zxth;	 // "__builtin_HEXAGON_A2_zxth"
          }
          break;
        }
        break;
      case '4':	 // 2 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "ndn", 3))
            break;
          return Intrinsic::hexagon_A4_andn;	 // "__builtin_HEXAGON_A4_andn"
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "rnp", 3))
            break;
          return Intrinsic::hexagon_A4_ornp;	 // "__builtin_HEXAGON_A4_ornp"
        }
        break;
      }
      break;
    case 'C':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_", 2))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'a':	 // 3 strings to match.
        switch (BuiltinName[22]) {
        default: break;
        case 'l':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "l8", 2))
            break;
          return Intrinsic::hexagon_C2_all8;	 // "__builtin_HEXAGON_C2_all8"
        case 'n':	 // 2 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (BuiltinName[24] != 'n')
              break;
            return Intrinsic::hexagon_C2_andn;	 // "__builtin_HEXAGON_C2_andn"
          case 'y':	 // 1 string to match.
            if (BuiltinName[24] != '8')
              break;
            return Intrinsic::hexagon_C2_any8;	 // "__builtin_HEXAGON_C2_any8"
          }
          break;
        }
        break;
      case 'm':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "ask", 3))
          break;
        return Intrinsic::hexagon_C2_mask;	 // "__builtin_HEXAGON_C2_mask"
      case 'v':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "mux", 3))
          break;
        return Intrinsic::hexagon_C2_vmux;	 // "__builtin_HEXAGON_C2_vmux"
      }
      break;
    case 'M':	 // 3 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_", 2))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "cci", 3))
          break;
        return Intrinsic::hexagon_M2_acci;	 // "__builtin_HEXAGON_M2_acci"
      case 'm':	 // 2 strings to match.
        switch (BuiltinName[22]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "ci", 2))
            break;
          return Intrinsic::hexagon_M2_maci;	 // "__builtin_HEXAGON_M2_maci"
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "yi", 2))
            break;
          return Intrinsic::hexagon_M2_mpyi;	 // "__builtin_HEXAGON_M2_mpyi"
        }
        break;
      }
      break;
    case 'S':	 // 8 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 7 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "rev", 3))
            break;
          return Intrinsic::hexagon_S2_brev;	 // "__builtin_HEXAGON_S2_brev"
        case 'c':	 // 5 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'l':	 // 3 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case '0':	 // 1 string to match.
              if (BuiltinName[24] != 'p')
                break;
              return Intrinsic::hexagon_S2_cl0p;	 // "__builtin_HEXAGON_S2_cl0p"
            case '1':	 // 1 string to match.
              if (BuiltinName[24] != 'p')
                break;
              return Intrinsic::hexagon_S2_cl1p;	 // "__builtin_HEXAGON_S2_cl1p"
            case 'b':	 // 1 string to match.
              if (BuiltinName[24] != 'p')
                break;
              return Intrinsic::hexagon_S2_clbp;	 // "__builtin_HEXAGON_S2_clbp"
            }
            break;
          case 't':	 // 2 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case '0':	 // 1 string to match.
              if (BuiltinName[24] != 'p')
                break;
              return Intrinsic::hexagon_S2_ct0p;	 // "__builtin_HEXAGON_S2_ct0p"
            case '1':	 // 1 string to match.
              if (BuiltinName[24] != 'p')
                break;
              return Intrinsic::hexagon_S2_ct1p;	 // "__builtin_HEXAGON_S2_ct1p"
            }
            break;
          }
          break;
        case 'l':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "fsp", 3))
            break;
          return Intrinsic::hexagon_S2_lfsp;	 // "__builtin_HEXAGON_S2_lfsp"
        }
        break;
      case '4':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "_lsli", 5))
          break;
        return Intrinsic::hexagon_S4_lsli;	 // "__builtin_HEXAGON_S4_lsli"
      }
      break;
    }
    break;
  case 26:	 // 58 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_", 10))
      break;
    switch (BuiltinName[10]) {
    default: break;
    case 'H':	 // 57 strings to match.
      if (memcmp(BuiltinName.data()+11, "EXAGON_", 7))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'A':	 // 27 strings to match.
        switch (BuiltinName[19]) {
        default: break;
        case '2':	 // 26 strings to match.
          if (BuiltinName[20] != '_')
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'a':	 // 2 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "dsp", 3))
                break;
              return Intrinsic::hexagon_A2_addsp;	 // "__builtin_HEXAGON_A2_addsp"
            case 'n':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "dir", 3))
                break;
              return Intrinsic::hexagon_A2_andir;	 // "__builtin_HEXAGON_A2_andir"
            }
            break;
          case 'm':	 // 2 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "xup", 3))
                break;
              return Intrinsic::hexagon_A2_maxup;	 // "__builtin_HEXAGON_A2_maxup"
            case 'i':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "nup", 3))
                break;
              return Intrinsic::hexagon_A2_minup;	 // "__builtin_HEXAGON_A2_minup"
            }
            break;
          case 's':	 // 3 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+23, "tu", 2))
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::hexagon_A2_satub;	 // "__builtin_HEXAGON_A2_satub"
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_satuh;	 // "__builtin_HEXAGON_A2_satuh"
              }
              break;
            case 'u':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "bri", 3))
                break;
              return Intrinsic::hexagon_A2_subri;	 // "__builtin_HEXAGON_A2_subri"
            }
            break;
          case 't':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+22, "fr", 2))
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'i':	 // 2 strings to match.
              switch (BuiltinName[25]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_tfrih;	 // "__builtin_HEXAGON_A2_tfrih"
              case 'l':	 // 1 string to match.
                return Intrinsic::hexagon_A2_tfril;	 // "__builtin_HEXAGON_A2_tfril"
              }
              break;
            case 'p':	 // 1 string to match.
              if (BuiltinName[25] != 'i')
                break;
              return Intrinsic::hexagon_A2_tfrpi;	 // "__builtin_HEXAGON_A2_tfrpi"
            case 's':	 // 1 string to match.
              if (BuiltinName[25] != 'i')
                break;
              return Intrinsic::hexagon_A2_tfrsi;	 // "__builtin_HEXAGON_A2_tfrsi"
            }
            break;
          case 'v':	 // 15 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'a':	 // 6 strings to match.
              switch (BuiltinName[23]) {
              default: break;
              case 'b':	 // 2 strings to match.
                if (BuiltinName[24] != 's')
                  break;
                switch (BuiltinName[25]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vabsh;	 // "__builtin_HEXAGON_A2_vabsh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vabsw;	 // "__builtin_HEXAGON_A2_vabsw"
                }
                break;
              case 'd':	 // 2 strings to match.
                if (BuiltinName[24] != 'd')
                  break;
                switch (BuiltinName[25]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vaddh;	 // "__builtin_HEXAGON_A2_vaddh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vaddw;	 // "__builtin_HEXAGON_A2_vaddw"
                }
                break;
              case 'v':	 // 2 strings to match.
                if (BuiltinName[24] != 'g')
                  break;
                switch (BuiltinName[25]) {
                default: break;
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vavgh;	 // "__builtin_HEXAGON_A2_vavgh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vavgw;	 // "__builtin_HEXAGON_A2_vavgw"
                }
                break;
              }
              break;
            case 'c':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "onj", 3))
                break;
              return Intrinsic::hexagon_A2_vconj;	 // "__builtin_HEXAGON_A2_vconj"
            case 'm':	 // 6 strings to match.
              switch (BuiltinName[23]) {
              default: break;
              case 'a':	 // 3 strings to match.
                if (BuiltinName[24] != 'x')
                  break;
                switch (BuiltinName[25]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vmaxb;	 // "__builtin_HEXAGON_A2_vmaxb"
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vmaxh;	 // "__builtin_HEXAGON_A2_vmaxh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vmaxw;	 // "__builtin_HEXAGON_A2_vmaxw"
                }
                break;
              case 'i':	 // 3 strings to match.
                if (BuiltinName[24] != 'n')
                  break;
                switch (BuiltinName[25]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vminb;	 // "__builtin_HEXAGON_A2_vminb"
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vminh;	 // "__builtin_HEXAGON_A2_vminh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vminw;	 // "__builtin_HEXAGON_A2_vminw"
                }
                break;
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+23, "ub", 2))
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vsubh;	 // "__builtin_HEXAGON_A2_vsubh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vsubw;	 // "__builtin_HEXAGON_A2_vsubw"
              }
              break;
            }
            break;
          }
          break;
        case '4':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "_andnp", 6))
            break;
          return Intrinsic::hexagon_A4_andnp;	 // "__builtin_HEXAGON_A4_andnp"
        }
        break;
      case 'C':	 // 9 strings to match.
        switch (BuiltinName[19]) {
        default: break;
        case '2':	 // 8 strings to match.
          if (BuiltinName[20] != '_')
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'c':	 // 3 strings to match.
            if (memcmp(BuiltinName.data()+22, "mp", 2))
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (BuiltinName[25] != 'q')
                break;
              return Intrinsic::hexagon_C2_cmpeq;	 // "__builtin_HEXAGON_C2_cmpeq"
            case 'g':	 // 1 string to match.
              if (BuiltinName[25] != 't')
                break;
              return Intrinsic::hexagon_C2_cmpgt;	 // "__builtin_HEXAGON_C2_cmpgt"
            case 'l':	 // 1 string to match.
              if (BuiltinName[25] != 't')
                break;
              return Intrinsic::hexagon_C2_cmplt;	 // "__builtin_HEXAGON_C2_cmplt"
            }
            break;
          case 'm':	 // 3 strings to match.
            if (memcmp(BuiltinName.data()+22, "ux", 2))
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'i':	 // 2 strings to match.
              switch (BuiltinName[25]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_C2_muxii;	 // "__builtin_HEXAGON_C2_muxii"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_C2_muxir;	 // "__builtin_HEXAGON_C2_muxir"
              }
              break;
            case 'r':	 // 1 string to match.
              if (BuiltinName[25] != 'i')
                break;
              return Intrinsic::hexagon_C2_muxri;	 // "__builtin_HEXAGON_C2_muxri"
            }
            break;
          case 't':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+22, "fr", 2))
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (BuiltinName[25] != 'r')
                break;
              return Intrinsic::hexagon_C2_tfrpr;	 // "__builtin_HEXAGON_C2_tfrpr"
            case 'r':	 // 1 string to match.
              if (BuiltinName[25] != 'p')
                break;
              return Intrinsic::hexagon_C2_tfrrp;	 // "__builtin_HEXAGON_C2_tfrrp"
            }
            break;
          }
          break;
        case '4':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "_or_or", 6))
            break;
          return Intrinsic::hexagon_C4_or_or;	 // "__builtin_HEXAGON_C4_or_or"
        }
        break;
      case 'F':	 // 14 strings to match.
        if (memcmp(BuiltinName.data()+19, "2_", 2))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'd':	 // 7 strings to match.
          if (BuiltinName[22] != 'f')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "dd", 2))
              break;
            return Intrinsic::hexagon_F2_dfadd;	 // "__builtin_HEXAGON_F2_dfadd"
          case 'f':	 // 2 strings to match.
            if (BuiltinName[24] != 'm')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'a':	 // 1 string to match.
              return Intrinsic::hexagon_F2_dffma;	 // "__builtin_HEXAGON_F2_dffma"
            case 's':	 // 1 string to match.
              return Intrinsic::hexagon_F2_dffms;	 // "__builtin_HEXAGON_F2_dffms"
            }
            break;
          case 'm':	 // 3 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (BuiltinName[25] != 'x')
                break;
              return Intrinsic::hexagon_F2_dfmax;	 // "__builtin_HEXAGON_F2_dfmax"
            case 'i':	 // 1 string to match.
              if (BuiltinName[25] != 'n')
                break;
              return Intrinsic::hexagon_F2_dfmin;	 // "__builtin_HEXAGON_F2_dfmin"
            case 'p':	 // 1 string to match.
              if (BuiltinName[25] != 'y')
                break;
              return Intrinsic::hexagon_F2_dfmpy;	 // "__builtin_HEXAGON_F2_dfmpy"
            }
            break;
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "ub", 2))
              break;
            return Intrinsic::hexagon_F2_dfsub;	 // "__builtin_HEXAGON_F2_dfsub"
          }
          break;
        case 's':	 // 7 strings to match.
          if (BuiltinName[22] != 'f')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "dd", 2))
              break;
            return Intrinsic::hexagon_F2_sfadd;	 // "__builtin_HEXAGON_F2_sfadd"
          case 'f':	 // 2 strings to match.
            if (BuiltinName[24] != 'm')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'a':	 // 1 string to match.
              return Intrinsic::hexagon_F2_sffma;	 // "__builtin_HEXAGON_F2_sffma"
            case 's':	 // 1 string to match.
              return Intrinsic::hexagon_F2_sffms;	 // "__builtin_HEXAGON_F2_sffms"
            }
            break;
          case 'm':	 // 3 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (BuiltinName[25] != 'x')
                break;
              return Intrinsic::hexagon_F2_sfmax;	 // "__builtin_HEXAGON_F2_sfmax"
            case 'i':	 // 1 string to match.
              if (BuiltinName[25] != 'n')
                break;
              return Intrinsic::hexagon_F2_sfmin;	 // "__builtin_HEXAGON_F2_sfmin"
            case 'p':	 // 1 string to match.
              if (BuiltinName[25] != 'y')
                break;
              return Intrinsic::hexagon_F2_sfmpy;	 // "__builtin_HEXAGON_F2_sfmpy"
            }
            break;
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "ub", 2))
              break;
            return Intrinsic::hexagon_F2_sfsub;	 // "__builtin_HEXAGON_F2_sfsub"
          }
          break;
        }
        break;
      case 'M':	 // 6 strings to match.
        switch (BuiltinName[19]) {
        default: break;
        case '2':	 // 4 strings to match.
          if (BuiltinName[20] != '_')
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "ccii", 4))
              break;
            return Intrinsic::hexagon_M2_accii;	 // "__builtin_HEXAGON_M2_accii"
          case 'm':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "pyui", 4))
              break;
            return Intrinsic::hexagon_M2_mpyui;	 // "__builtin_HEXAGON_M2_mpyui"
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "acci", 4))
              break;
            return Intrinsic::hexagon_M2_nacci;	 // "__builtin_HEXAGON_M2_nacci"
          case 'v':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "mac2", 4))
              break;
            return Intrinsic::hexagon_M2_vmac2;	 // "__builtin_HEXAGON_M2_vmac2"
          }
          break;
        case '4':	 // 2 strings to match.
          if (BuiltinName[20] != '_')
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'o':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "r_or", 4))
              break;
            return Intrinsic::hexagon_M4_or_or;	 // "__builtin_HEXAGON_M4_or_or"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "mpyw", 4))
              break;
            return Intrinsic::hexagon_M4_pmpyw;	 // "__builtin_HEXAGON_M4_pmpyw"
          }
          break;
        }
        break;
      case 'S':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "2_brevp", 7))
          break;
        return Intrinsic::hexagon_S2_brevp;	 // "__builtin_HEXAGON_S2_brevp"
      }
      break;
    case 'S':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+11, "I_to_SXTHI_asrh", 15))
        break;
      return Intrinsic::hexagon_SI_to_SXTHI_asrh;	 // "__builtin_SI_to_SXTHI_asrh"
    }
    break;
  case 27:	 // 70 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 35 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 26 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "ssat", 4))
              break;
            return Intrinsic::hexagon_A2_abssat;	 // "__builtin_HEXAGON_A2_abssat"
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "dsat", 4))
              break;
            return Intrinsic::hexagon_A2_addsat;	 // "__builtin_HEXAGON_A2_addsat"
          }
          break;
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "egsat", 5))
            break;
          return Intrinsic::hexagon_A2_negsat;	 // "__builtin_HEXAGON_A2_negsat"
        case 's':	 // 4 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'u':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "bsat", 4))
              break;
            return Intrinsic::hexagon_A2_subsat;	 // "__builtin_HEXAGON_A2_subsat"
          case 'v':	 // 3 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 2 strings to match.
              switch (BuiltinName[24]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+25, "dh", 2))
                  break;
                return Intrinsic::hexagon_A2_svaddh;	 // "__builtin_HEXAGON_A2_svaddh"
              case 'v':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+25, "gh", 2))
                  break;
                return Intrinsic::hexagon_A2_svavgh;	 // "__builtin_HEXAGON_A2_svavgh"
              }
              break;
            case 's':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "ubh", 3))
                break;
              return Intrinsic::hexagon_A2_svsubh;	 // "__builtin_HEXAGON_A2_svsubh"
            }
            break;
          }
          break;
        case 'v':	 // 19 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 8 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'd':	 // 3 strings to match.
              if (BuiltinName[24] != 'd')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (BuiltinName[26] != 's')
                  break;
                return Intrinsic::hexagon_A2_vaddhs;	 // "__builtin_HEXAGON_A2_vaddhs"
              case 'u':	 // 1 string to match.
                if (BuiltinName[26] != 'b')
                  break;
                return Intrinsic::hexagon_A2_vaddub;	 // "__builtin_HEXAGON_A2_vaddub"
              case 'w':	 // 1 string to match.
                if (BuiltinName[26] != 's')
                  break;
                return Intrinsic::hexagon_A2_vaddws;	 // "__builtin_HEXAGON_A2_vaddws"
              }
              break;
            case 'v':	 // 5 strings to match.
              if (BuiltinName[24] != 'g')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (BuiltinName[26] != 'r')
                  break;
                return Intrinsic::hexagon_A2_vavghr;	 // "__builtin_HEXAGON_A2_vavghr"
              case 'u':	 // 3 strings to match.
                switch (BuiltinName[26]) {
                default: break;
                case 'b':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vavgub;	 // "__builtin_HEXAGON_A2_vavgub"
                case 'h':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vavguh;	 // "__builtin_HEXAGON_A2_vavguh"
                case 'w':	 // 1 string to match.
                  return Intrinsic::hexagon_A2_vavguw;	 // "__builtin_HEXAGON_A2_vavguw"
                }
                break;
              case 'w':	 // 1 string to match.
                if (BuiltinName[26] != 'r')
                  break;
                return Intrinsic::hexagon_A2_vavgwr;	 // "__builtin_HEXAGON_A2_vavgwr"
              }
              break;
            }
            break;
          case 'm':	 // 6 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 3 strings to match.
              if (memcmp(BuiltinName.data()+24, "xu", 2))
                break;
              switch (BuiltinName[26]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vmaxub;	 // "__builtin_HEXAGON_A2_vmaxub"
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vmaxuh;	 // "__builtin_HEXAGON_A2_vmaxuh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vmaxuw;	 // "__builtin_HEXAGON_A2_vmaxuw"
              }
              break;
            case 'i':	 // 3 strings to match.
              if (memcmp(BuiltinName.data()+24, "nu", 2))
                break;
              switch (BuiltinName[26]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vminub;	 // "__builtin_HEXAGON_A2_vminub"
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vminuh;	 // "__builtin_HEXAGON_A2_vminuh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_A2_vminuw;	 // "__builtin_HEXAGON_A2_vminuw"
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "avg", 3))
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_A2_vnavgh;	 // "__builtin_HEXAGON_A2_vnavgh"
            case 'w':	 // 1 string to match.
              return Intrinsic::hexagon_A2_vnavgw;	 // "__builtin_HEXAGON_A2_vnavgw"
            }
            break;
          case 's':	 // 3 strings to match.
            if (memcmp(BuiltinName.data()+23, "ub", 2))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (BuiltinName[26] != 's')
                break;
              return Intrinsic::hexagon_A2_vsubhs;	 // "__builtin_HEXAGON_A2_vsubhs"
            case 'u':	 // 1 string to match.
              if (BuiltinName[26] != 'b')
                break;
              return Intrinsic::hexagon_A2_vsubub;	 // "__builtin_HEXAGON_A2_vsubub"
            case 'w':	 // 1 string to match.
              if (BuiltinName[26] != 's')
                break;
              return Intrinsic::hexagon_A2_vsubws;	 // "__builtin_HEXAGON_A2_vsubws"
            }
            break;
          }
          break;
        }
        break;
      case '4':	 // 9 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'c':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+22, "mp", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'b':	 // 2 strings to match.
            switch (BuiltinName[25]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (BuiltinName[26] != 'q')
                break;
              return Intrinsic::hexagon_A4_cmpbeq;	 // "__builtin_HEXAGON_A4_cmpbeq"
            case 'g':	 // 1 string to match.
              if (BuiltinName[26] != 't')
                break;
              return Intrinsic::hexagon_A4_cmpbgt;	 // "__builtin_HEXAGON_A4_cmpbgt"
            }
            break;
          case 'h':	 // 2 strings to match.
            switch (BuiltinName[25]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (BuiltinName[26] != 'q')
                break;
              return Intrinsic::hexagon_A4_cmpheq;	 // "__builtin_HEXAGON_A4_cmpheq"
            case 'g':	 // 1 string to match.
              if (BuiltinName[26] != 't')
                break;
              return Intrinsic::hexagon_A4_cmphgt;	 // "__builtin_HEXAGON_A4_cmphgt"
            }
            break;
          }
          break;
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "cmpeq", 5))
            break;
          return Intrinsic::hexagon_A4_rcmpeq;	 // "__builtin_HEXAGON_A4_rcmpeq"
        case 'v':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+22, "rm", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (BuiltinName[25] != 'x')
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_A4_vrmaxh;	 // "__builtin_HEXAGON_A4_vrmaxh"
            case 'w':	 // 1 string to match.
              return Intrinsic::hexagon_A4_vrmaxw;	 // "__builtin_HEXAGON_A4_vrmaxw"
            }
            break;
          case 'i':	 // 2 strings to match.
            if (BuiltinName[25] != 'n')
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_A4_vrminh;	 // "__builtin_HEXAGON_A4_vrminh"
            case 'w':	 // 1 string to match.
              return Intrinsic::hexagon_A4_vrminw;	 // "__builtin_HEXAGON_A4_vrminw"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 'C':	 // 12 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 7 strings to match.
        if (memcmp(BuiltinName.data()+20, "_cmp", 4))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'e':	 // 2 strings to match.
          if (BuiltinName[25] != 'q')
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 'i':	 // 1 string to match.
            return Intrinsic::hexagon_C2_cmpeqi;	 // "__builtin_HEXAGON_C2_cmpeqi"
          case 'p':	 // 1 string to match.
            return Intrinsic::hexagon_C2_cmpeqp;	 // "__builtin_HEXAGON_C2_cmpeqp"
          }
          break;
        case 'g':	 // 4 strings to match.
          switch (BuiltinName[25]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (BuiltinName[26] != 'i')
              break;
            return Intrinsic::hexagon_C2_cmpgei;	 // "__builtin_HEXAGON_C2_cmpgei"
          case 't':	 // 3 strings to match.
            switch (BuiltinName[26]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_C2_cmpgti;	 // "__builtin_HEXAGON_C2_cmpgti"
            case 'p':	 // 1 string to match.
              return Intrinsic::hexagon_C2_cmpgtp;	 // "__builtin_HEXAGON_C2_cmpgtp"
            case 'u':	 // 1 string to match.
              return Intrinsic::hexagon_C2_cmpgtu;	 // "__builtin_HEXAGON_C2_cmpgtu"
            }
            break;
          }
          break;
        case 'l':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "tu", 2))
            break;
          return Intrinsic::hexagon_C2_cmpltu;	 // "__builtin_HEXAGON_C2_cmpltu"
        }
        break;
      case '4':	 // 5 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "nd_or", 5))
            break;
          return Intrinsic::hexagon_C4_and_or;	 // "__builtin_HEXAGON_C4_and_or"
        case 'c':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "mp", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "te", 2))
              break;
            return Intrinsic::hexagon_C4_cmplte;	 // "__builtin_HEXAGON_C4_cmplte"
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "eq", 2))
              break;
            return Intrinsic::hexagon_C4_cmpneq;	 // "__builtin_HEXAGON_C4_cmpneq"
          }
          break;
        case 'o':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "r_", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "nd", 2))
              break;
            return Intrinsic::hexagon_C4_or_and;	 // "__builtin_HEXAGON_C4_or_and"
          case 'o':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "rn", 2))
              break;
            return Intrinsic::hexagon_C4_or_orn;	 // "__builtin_HEXAGON_C4_or_orn"
          }
          break;
        }
        break;
      }
      break;
    case 'M':	 // 12 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 7 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'm':	 // 4 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "csi", 3))
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'n':	 // 1 string to match.
              return Intrinsic::hexagon_M2_macsin;	 // "__builtin_HEXAGON_M2_macsin"
            case 'p':	 // 1 string to match.
              return Intrinsic::hexagon_M2_macsip;	 // "__builtin_HEXAGON_M2_macsip"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (BuiltinName[23] != 'y')
              break;
            switch (BuiltinName[24]) {
            default: break;
            case '_':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "up", 2))
                break;
              return Intrinsic::hexagon_M2_mpy_up;	 // "__builtin_HEXAGON_M2_mpy_up"
            case 's':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "mi", 2))
                break;
              return Intrinsic::hexagon_M2_mpysmi;	 // "__builtin_HEXAGON_M2_mpysmi"
            }
            break;
          }
          break;
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "accii", 5))
            break;
          return Intrinsic::hexagon_M2_naccii;	 // "__builtin_HEXAGON_M2_naccii"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "ubacc", 5))
            break;
          return Intrinsic::hexagon_M2_subacc;	 // "__builtin_HEXAGON_M2_subacc"
        case 'v':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "raddh", 5))
            break;
          return Intrinsic::hexagon_M2_vraddh;	 // "__builtin_HEXAGON_M2_vraddh"
        }
        break;
      case '4':	 // 5 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "nd_or", 5))
            break;
          return Intrinsic::hexagon_M4_and_or;	 // "__builtin_HEXAGON_M4_and_or"
        case 'o':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "r_", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "nd", 2))
              break;
            return Intrinsic::hexagon_M4_or_and;	 // "__builtin_HEXAGON_M4_or_and"
          case 'x':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "or", 2))
              break;
            return Intrinsic::hexagon_M4_or_xor;	 // "__builtin_HEXAGON_M4_or_xor"
          }
          break;
        case 'v':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "pmpyh", 5))
            break;
          return Intrinsic::hexagon_M4_vpmpyh;	 // "__builtin_HEXAGON_M4_vpmpyh"
        case 'x':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "or_or", 5))
            break;
          return Intrinsic::hexagon_M4_xor_or;	 // "__builtin_HEXAGON_M4_xor_or"
        }
        break;
      }
      break;
    case 'S':	 // 11 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 9 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'i':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "nsert", 5))
            break;
          return Intrinsic::hexagon_S2_insert;	 // "__builtin_HEXAGON_S2_insert"
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "ackhl", 5))
            break;
          return Intrinsic::hexagon_S2_packhl;	 // "__builtin_HEXAGON_S2_packhl"
        case 'v':	 // 7 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "negh", 4))
              break;
            return Intrinsic::hexagon_S2_vcnegh;	 // "__builtin_HEXAGON_S2_vcnegh"
          case 's':	 // 4 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (BuiltinName[24] != 't')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (BuiltinName[26] != 'b')
                  break;
                return Intrinsic::hexagon_S2_vsathb;	 // "__builtin_HEXAGON_S2_vsathb"
              case 'w':	 // 1 string to match.
                if (BuiltinName[26] != 'h')
                  break;
                return Intrinsic::hexagon_S2_vsatwh;	 // "__builtin_HEXAGON_S2_vsatwh"
              }
              break;
            case 'x':	 // 2 strings to match.
              if (BuiltinName[24] != 't')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'b':	 // 1 string to match.
                if (BuiltinName[26] != 'h')
                  break;
                return Intrinsic::hexagon_S2_vsxtbh;	 // "__builtin_HEXAGON_S2_vsxtbh"
              case 'h':	 // 1 string to match.
                if (BuiltinName[26] != 'w')
                  break;
                return Intrinsic::hexagon_S2_vsxthw;	 // "__builtin_HEXAGON_S2_vsxthw"
              }
              break;
            }
            break;
          case 'z':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "xt", 2))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (BuiltinName[26] != 'h')
                break;
              return Intrinsic::hexagon_S2_vzxtbh;	 // "__builtin_HEXAGON_S2_vzxtbh"
            case 'h':	 // 1 string to match.
              if (BuiltinName[26] != 'w')
                break;
              return Intrinsic::hexagon_S2_vzxthw;	 // "__builtin_HEXAGON_S2_vzxthw"
            }
            break;
          }
          break;
        }
        break;
      case '4':	 // 2 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "r_ori", 5))
            break;
          return Intrinsic::hexagon_S4_or_ori;	 // "__builtin_HEXAGON_S4_or_ori"
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "arity", 5))
            break;
          return Intrinsic::hexagon_S4_parity;	 // "__builtin_HEXAGON_S4_parity"
        }
        break;
      }
      break;
    }
    break;
  case 28:	 // 103 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 36 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 23 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "ddpsat", 6))
            break;
          return Intrinsic::hexagon_A2_addpsat;	 // "__builtin_HEXAGON_A2_addpsat"
        case 's':	 // 4 strings to match.
          if (BuiltinName[22] != 'v')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'a':	 // 2 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "dhs", 3))
                break;
              return Intrinsic::hexagon_A2_svaddhs;	 // "__builtin_HEXAGON_A2_svaddhs"
            case 'v':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "ghs", 3))
                break;
              return Intrinsic::hexagon_A2_svavghs;	 // "__builtin_HEXAGON_A2_svavghs"
            }
            break;
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "avgh", 4))
              break;
            return Intrinsic::hexagon_A2_svnavgh;	 // "__builtin_HEXAGON_A2_svnavgh"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "ubhs", 4))
              break;
            return Intrinsic::hexagon_A2_svsubhs;	 // "__builtin_HEXAGON_A2_svsubhs"
          }
          break;
        case 'v':	 // 18 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 7 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+24, "du", 2))
                break;
              switch (BuiltinName[26]) {
              default: break;
              case 'b':	 // 1 string to match.
                if (BuiltinName[27] != 's')
                  break;
                return Intrinsic::hexagon_A2_vaddubs;	 // "__builtin_HEXAGON_A2_vaddubs"
              case 'h':	 // 1 string to match.
                if (BuiltinName[27] != 's')
                  break;
                return Intrinsic::hexagon_A2_vadduhs;	 // "__builtin_HEXAGON_A2_vadduhs"
              }
              break;
            case 'v':	 // 5 strings to match.
              if (BuiltinName[24] != 'g')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+26, "cr", 2))
                  break;
                return Intrinsic::hexagon_A2_vavghcr;	 // "__builtin_HEXAGON_A2_vavghcr"
              case 'u':	 // 3 strings to match.
                switch (BuiltinName[26]) {
                default: break;
                case 'b':	 // 1 string to match.
                  if (BuiltinName[27] != 'r')
                    break;
                  return Intrinsic::hexagon_A2_vavgubr;	 // "__builtin_HEXAGON_A2_vavgubr"
                case 'h':	 // 1 string to match.
                  if (BuiltinName[27] != 'r')
                    break;
                  return Intrinsic::hexagon_A2_vavguhr;	 // "__builtin_HEXAGON_A2_vavguhr"
                case 'w':	 // 1 string to match.
                  if (BuiltinName[27] != 'r')
                    break;
                  return Intrinsic::hexagon_A2_vavguwr;	 // "__builtin_HEXAGON_A2_vavguwr"
                }
                break;
              case 'w':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+26, "cr", 2))
                  break;
                return Intrinsic::hexagon_A2_vavgwcr;	 // "__builtin_HEXAGON_A2_vavgwcr"
              }
              break;
            }
            break;
          case 'c':	 // 5 strings to match.
            if (memcmp(BuiltinName.data()+23, "mp", 2))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "eq", 2))
                break;
              return Intrinsic::hexagon_A2_vcmpbeq;	 // "__builtin_HEXAGON_A2_vcmpbeq"
            case 'h':	 // 2 strings to match.
              switch (BuiltinName[26]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (BuiltinName[27] != 'q')
                  break;
                return Intrinsic::hexagon_A2_vcmpheq;	 // "__builtin_HEXAGON_A2_vcmpheq"
              case 'g':	 // 1 string to match.
                if (BuiltinName[27] != 't')
                  break;
                return Intrinsic::hexagon_A2_vcmphgt;	 // "__builtin_HEXAGON_A2_vcmphgt"
              }
              break;
            case 'w':	 // 2 strings to match.
              switch (BuiltinName[26]) {
              default: break;
              case 'e':	 // 1 string to match.
                if (BuiltinName[27] != 'q')
                  break;
                return Intrinsic::hexagon_A2_vcmpweq;	 // "__builtin_HEXAGON_A2_vcmpweq"
              case 'g':	 // 1 string to match.
                if (BuiltinName[27] != 't')
                  break;
                return Intrinsic::hexagon_A2_vcmpwgt;	 // "__builtin_HEXAGON_A2_vcmpwgt"
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "avg", 3))
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (BuiltinName[27] != 'r')
                break;
              return Intrinsic::hexagon_A2_vnavghr;	 // "__builtin_HEXAGON_A2_vnavghr"
            case 'w':	 // 1 string to match.
              if (BuiltinName[27] != 'r')
                break;
              return Intrinsic::hexagon_A2_vnavgwr;	 // "__builtin_HEXAGON_A2_vnavgwr"
            }
            break;
          case 'r':	 // 2 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "ddub", 4))
                break;
              return Intrinsic::hexagon_A2_vraddub;	 // "__builtin_HEXAGON_A2_vraddub"
            case 's':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "adub", 4))
                break;
              return Intrinsic::hexagon_A2_vrsadub;	 // "__builtin_HEXAGON_A2_vrsadub"
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "ubu", 3))
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (BuiltinName[27] != 's')
                break;
              return Intrinsic::hexagon_A2_vsububs;	 // "__builtin_HEXAGON_A2_vsububs"
            case 'h':	 // 1 string to match.
              if (BuiltinName[27] != 's')
                break;
              return Intrinsic::hexagon_A2_vsubuhs;	 // "__builtin_HEXAGON_A2_vsubuhs"
            }
            break;
          }
          break;
        }
        break;
      case '4':	 // 13 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'c':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+22, "mp", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'b':	 // 3 strings to match.
            switch (BuiltinName[25]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "qi", 2))
                break;
              return Intrinsic::hexagon_A4_cmpbeqi;	 // "__builtin_HEXAGON_A4_cmpbeqi"
            case 'g':	 // 2 strings to match.
              if (BuiltinName[26] != 't')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_A4_cmpbgti;	 // "__builtin_HEXAGON_A4_cmpbgti"
              case 'u':	 // 1 string to match.
                return Intrinsic::hexagon_A4_cmpbgtu;	 // "__builtin_HEXAGON_A4_cmpbgtu"
              }
              break;
            }
            break;
          case 'h':	 // 3 strings to match.
            switch (BuiltinName[25]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "qi", 2))
                break;
              return Intrinsic::hexagon_A4_cmpheqi;	 // "__builtin_HEXAGON_A4_cmpheqi"
            case 'g':	 // 2 strings to match.
              if (BuiltinName[26] != 't')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_A4_cmphgti;	 // "__builtin_HEXAGON_A4_cmphgti"
              case 'u':	 // 1 string to match.
                return Intrinsic::hexagon_A4_cmphgtu;	 // "__builtin_HEXAGON_A4_cmphgtu"
              }
              break;
            }
            break;
          }
          break;
        case 'r':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "cmp", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "qi", 2))
              break;
            return Intrinsic::hexagon_A4_rcmpeqi;	 // "__builtin_HEXAGON_A4_rcmpeqi"
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "eq", 2))
              break;
            return Intrinsic::hexagon_A4_rcmpneq;	 // "__builtin_HEXAGON_A4_rcmpneq"
          }
          break;
        case 'v':	 // 5 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "mpbgt", 5))
              break;
            return Intrinsic::hexagon_A4_vcmpbgt;	 // "__builtin_HEXAGON_A4_vcmpbgt"
          case 'r':	 // 4 strings to match.
            if (BuiltinName[23] != 'm')
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+25, "xu", 2))
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A4_vrmaxuh;	 // "__builtin_HEXAGON_A4_vrmaxuh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_A4_vrmaxuw;	 // "__builtin_HEXAGON_A4_vrmaxuw"
              }
              break;
            case 'i':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+25, "nu", 2))
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A4_vrminuh;	 // "__builtin_HEXAGON_A4_vrminuh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_A4_vrminuw;	 // "__builtin_HEXAGON_A4_vrminuw"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 'C':	 // 12 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 6 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'b':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "its", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "lr", 2))
              break;
            return Intrinsic::hexagon_C2_bitsclr;	 // "__builtin_HEXAGON_C2_bitsclr"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "et", 2))
              break;
            return Intrinsic::hexagon_C2_bitsset;	 // "__builtin_HEXAGON_C2_bitsset"
          }
          break;
        case 'c':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+22, "mpg", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "ui", 2))
              break;
            return Intrinsic::hexagon_C2_cmpgeui;	 // "__builtin_HEXAGON_C2_cmpgeui"
          case 't':	 // 2 strings to match.
            if (BuiltinName[26] != 'u')
              break;
            switch (BuiltinName[27]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_C2_cmpgtui;	 // "__builtin_HEXAGON_C2_cmpgtui"
            case 'p':	 // 1 string to match.
              return Intrinsic::hexagon_C2_cmpgtup;	 // "__builtin_HEXAGON_C2_cmpgtup"
            }
            break;
          }
          break;
        case 'v':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "itpack", 6))
            break;
          return Intrinsic::hexagon_C2_vitpack;	 // "__builtin_HEXAGON_C2_vitpack"
        }
        break;
      case '4':	 // 6 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "nd_", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "nd", 2))
              break;
            return Intrinsic::hexagon_C4_and_and;	 // "__builtin_HEXAGON_C4_and_and"
          case 'o':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "rn", 2))
              break;
            return Intrinsic::hexagon_C4_and_orn;	 // "__builtin_HEXAGON_C4_and_orn"
          }
          break;
        case 'c':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+22, "mp", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+25, "te", 2))
              break;
            switch (BuiltinName[27]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_C4_cmpltei;	 // "__builtin_HEXAGON_C4_cmpltei"
            case 'u':	 // 1 string to match.
              return Intrinsic::hexagon_C4_cmplteu;	 // "__builtin_HEXAGON_C4_cmplteu"
            }
            break;
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "eqi", 3))
              break;
            return Intrinsic::hexagon_C4_cmpneqi;	 // "__builtin_HEXAGON_C4_cmpneqi"
          }
          break;
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "r_andn", 6))
            break;
          return Intrinsic::hexagon_C4_or_andn;	 // "__builtin_HEXAGON_C4_or_andn"
        }
        break;
      }
      break;
    case 'F':	 // 14 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_", 2))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'd':	 // 7 strings to match.
        if (BuiltinName[22] != 'f')
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'c':	 // 5 strings to match.
          switch (BuiltinName[24]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "ass", 3))
              break;
            return Intrinsic::hexagon_F2_dfclass;	 // "__builtin_HEXAGON_F2_dfclass"
          case 'm':	 // 4 strings to match.
            if (BuiltinName[25] != 'p')
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (BuiltinName[27] != 'q')
                break;
              return Intrinsic::hexagon_F2_dfcmpeq;	 // "__builtin_HEXAGON_F2_dfcmpeq"
            case 'g':	 // 2 strings to match.
              switch (BuiltinName[27]) {
              default: break;
              case 'e':	 // 1 string to match.
                return Intrinsic::hexagon_F2_dfcmpge;	 // "__builtin_HEXAGON_F2_dfcmpge"
              case 't':	 // 1 string to match.
                return Intrinsic::hexagon_F2_dfcmpgt;	 // "__builtin_HEXAGON_F2_dfcmpgt"
              }
              break;
            case 'u':	 // 1 string to match.
              if (BuiltinName[27] != 'o')
                break;
              return Intrinsic::hexagon_F2_dfcmpuo;	 // "__builtin_HEXAGON_F2_dfcmpuo"
            }
            break;
          }
          break;
        case 'i':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+24, "mm_", 3))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 'n':	 // 1 string to match.
            return Intrinsic::hexagon_F2_dfimm_n;	 // "__builtin_HEXAGON_F2_dfimm_n"
          case 'p':	 // 1 string to match.
            return Intrinsic::hexagon_F2_dfimm_p;	 // "__builtin_HEXAGON_F2_dfimm_p"
          }
          break;
        }
        break;
      case 's':	 // 7 strings to match.
        if (BuiltinName[22] != 'f')
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'c':	 // 5 strings to match.
          switch (BuiltinName[24]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "ass", 3))
              break;
            return Intrinsic::hexagon_F2_sfclass;	 // "__builtin_HEXAGON_F2_sfclass"
          case 'm':	 // 4 strings to match.
            if (BuiltinName[25] != 'p')
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (BuiltinName[27] != 'q')
                break;
              return Intrinsic::hexagon_F2_sfcmpeq;	 // "__builtin_HEXAGON_F2_sfcmpeq"
            case 'g':	 // 2 strings to match.
              switch (BuiltinName[27]) {
              default: break;
              case 'e':	 // 1 string to match.
                return Intrinsic::hexagon_F2_sfcmpge;	 // "__builtin_HEXAGON_F2_sfcmpge"
              case 't':	 // 1 string to match.
                return Intrinsic::hexagon_F2_sfcmpgt;	 // "__builtin_HEXAGON_F2_sfcmpgt"
              }
              break;
            case 'u':	 // 1 string to match.
              if (BuiltinName[27] != 'o')
                break;
              return Intrinsic::hexagon_F2_sfcmpuo;	 // "__builtin_HEXAGON_F2_sfcmpuo"
            }
            break;
          }
          break;
        case 'i':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+24, "mm_", 3))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 'n':	 // 1 string to match.
            return Intrinsic::hexagon_F2_sfimm_n;	 // "__builtin_HEXAGON_F2_sfimm_n"
          case 'p':	 // 1 string to match.
            return Intrinsic::hexagon_F2_sfimm_p;	 // "__builtin_HEXAGON_F2_sfimm_p"
          }
          break;
        }
        break;
      }
      break;
    case 'M':	 // 11 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 3 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "pyu_up", 6))
            break;
          return Intrinsic::hexagon_M2_mpyu_up;	 // "__builtin_HEXAGON_M2_mpyu_up"
        case 'v':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'm':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "ac2es", 5))
              break;
            return Intrinsic::hexagon_M2_vmac2es;	 // "__builtin_HEXAGON_M2_vmac2es"
          case 'r':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "adduh", 5))
              break;
            return Intrinsic::hexagon_M2_vradduh;	 // "__builtin_HEXAGON_M2_vradduh"
          }
          break;
        }
        break;
      case '4':	 // 4 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "nd_", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "nd", 2))
              break;
            return Intrinsic::hexagon_M4_and_and;	 // "__builtin_HEXAGON_M4_and_and"
          case 'x':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "or", 2))
              break;
            return Intrinsic::hexagon_M4_and_xor;	 // "__builtin_HEXAGON_M4_and_xor"
          }
          break;
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "r_andn", 6))
            break;
          return Intrinsic::hexagon_M4_or_andn;	 // "__builtin_HEXAGON_M4_or_andn"
        case 'x':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "or_and", 6))
            break;
          return Intrinsic::hexagon_M4_xor_and;	 // "__builtin_HEXAGON_M4_xor_and"
        }
        break;
      case '5':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+20, "_vm", 3))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+24, "cb", 2))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 's':	 // 1 string to match.
            if (BuiltinName[27] != 'u')
              break;
            return Intrinsic::hexagon_M5_vmacbsu;	 // "__builtin_HEXAGON_M5_vmacbsu"
          case 'u':	 // 1 string to match.
            if (BuiltinName[27] != 'u')
              break;
            return Intrinsic::hexagon_M5_vmacbuu;	 // "__builtin_HEXAGON_M5_vmacbuu"
          }
          break;
        case 'p':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+24, "yb", 2))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 's':	 // 1 string to match.
            if (BuiltinName[27] != 'u')
              break;
            return Intrinsic::hexagon_M5_vmpybsu;	 // "__builtin_HEXAGON_M5_vmpybsu"
          case 'u':	 // 1 string to match.
            if (BuiltinName[27] != 'u')
              break;
            return Intrinsic::hexagon_M5_vmpybuu;	 // "__builtin_HEXAGON_M5_vmpybuu"
          }
          break;
        }
        break;
      }
      break;
    case 'S':	 // 30 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 25 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 8 strings to match.
          if (BuiltinName[22] != 's')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'l':	 // 4 strings to match.
            if (BuiltinName[24] != '_')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'i':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asl_i_p;	 // "__builtin_HEXAGON_S2_asl_i_p"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asl_i_r;	 // "__builtin_HEXAGON_S2_asl_i_r"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asl_r_p;	 // "__builtin_HEXAGON_S2_asl_r_p"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asl_r_r;	 // "__builtin_HEXAGON_S2_asl_r_r"
              }
              break;
            }
            break;
          case 'r':	 // 4 strings to match.
            if (BuiltinName[24] != '_')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'i':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asr_i_p;	 // "__builtin_HEXAGON_S2_asr_i_p"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asr_i_r;	 // "__builtin_HEXAGON_S2_asr_i_r"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asr_r_p;	 // "__builtin_HEXAGON_S2_asr_r_p"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asr_r_r;	 // "__builtin_HEXAGON_S2_asr_r_r"
              }
              break;
            }
            break;
          }
          break;
        case 'c':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "lbnorm", 6))
            break;
          return Intrinsic::hexagon_S2_clbnorm;	 // "__builtin_HEXAGON_S2_clbnorm"
        case 'i':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "nsertp", 6))
            break;
          return Intrinsic::hexagon_S2_insertp;	 // "__builtin_HEXAGON_S2_insertp"
        case 'l':	 // 6 strings to match.
          if (BuiltinName[22] != 's')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+24, "_r_", 3))
              break;
            switch (BuiltinName[27]) {
            default: break;
            case 'p':	 // 1 string to match.
              return Intrinsic::hexagon_S2_lsl_r_p;	 // "__builtin_HEXAGON_S2_lsl_r_p"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_S2_lsl_r_r;	 // "__builtin_HEXAGON_S2_lsl_r_r"
            }
            break;
          case 'r':	 // 4 strings to match.
            if (BuiltinName[24] != '_')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'i':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsr_i_p;	 // "__builtin_HEXAGON_S2_lsr_i_p"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsr_i_r;	 // "__builtin_HEXAGON_S2_lsr_i_r"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsr_r_p;	 // "__builtin_HEXAGON_S2_lsr_r_p"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsr_r_r;	 // "__builtin_HEXAGON_S2_lsr_r_r"
              }
              break;
            }
            break;
          }
          break;
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "arityp", 6))
            break;
          return Intrinsic::hexagon_S2_parityp;	 // "__builtin_HEXAGON_S2_parityp"
        case 's':	 // 5 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'h':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+23, "uff", 3))
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'e':	 // 2 strings to match.
              switch (BuiltinName[27]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::hexagon_S2_shuffeb;	 // "__builtin_HEXAGON_S2_shuffeb"
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S2_shuffeh;	 // "__builtin_HEXAGON_S2_shuffeh"
              }
              break;
            case 'o':	 // 2 strings to match.
              switch (BuiltinName[27]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::hexagon_S2_shuffob;	 // "__builtin_HEXAGON_S2_shuffob"
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S2_shuffoh;	 // "__builtin_HEXAGON_S2_shuffoh"
              }
              break;
            }
            break;
          case 'v':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "sathb", 5))
              break;
            return Intrinsic::hexagon_S2_svsathb;	 // "__builtin_HEXAGON_S2_svsathb"
          }
          break;
        case 'v':	 // 3 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'r':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "cnegh", 5))
              break;
            return Intrinsic::hexagon_S2_vrcnegh;	 // "__builtin_HEXAGON_S2_vrcnegh"
          case 's':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "at", 2))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "ub", 2))
                break;
              return Intrinsic::hexagon_S2_vsathub;	 // "__builtin_HEXAGON_S2_vsathub"
            case 'w':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "uh", 2))
                break;
              return Intrinsic::hexagon_S2_vsatwuh;	 // "__builtin_HEXAGON_S2_vsatwuh"
            }
            break;
          }
          break;
        }
        break;
      case '4':	 // 5 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "ddaddi", 6))
            break;
          return Intrinsic::hexagon_S4_addaddi;	 // "__builtin_HEXAGON_S4_addaddi"
        case 'c':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "lbaddi", 6))
            break;
          return Intrinsic::hexagon_S4_clbaddi;	 // "__builtin_HEXAGON_S4_clbaddi"
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "xtract", 6))
            break;
          return Intrinsic::hexagon_S4_extract;	 // "__builtin_HEXAGON_S4_extract"
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "r_andi", 6))
            break;
          return Intrinsic::hexagon_S4_or_andi;	 // "__builtin_HEXAGON_S4_or_andi"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "ubaddi", 6))
            break;
          return Intrinsic::hexagon_S4_subaddi;	 // "__builtin_HEXAGON_S4_subaddi"
        }
        break;
      }
      break;
    }
    break;
  case 29:	 // 103 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 26 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 11 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "ombinew", 7))
            break;
          return Intrinsic::hexagon_A2_combinew;	 // "__builtin_HEXAGON_A2_combinew"
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "oundsat", 7))
            break;
          return Intrinsic::hexagon_A2_roundsat;	 // "__builtin_HEXAGON_A2_roundsat"
        case 's':	 // 2 strings to match.
          if (BuiltinName[22] != 'v')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "dduhs", 5))
              break;
            return Intrinsic::hexagon_A2_svadduhs;	 // "__builtin_HEXAGON_A2_svadduhs"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "ubuhs", 5))
              break;
            return Intrinsic::hexagon_A2_svsubuhs;	 // "__builtin_HEXAGON_A2_svsubuhs"
          }
          break;
        case 'v':	 // 7 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "bs", 2))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "sat", 3))
                break;
              return Intrinsic::hexagon_A2_vabshsat;	 // "__builtin_HEXAGON_A2_vabshsat"
            case 'w':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "sat", 3))
                break;
              return Intrinsic::hexagon_A2_vabswsat;	 // "__builtin_HEXAGON_A2_vabswsat"
            }
            break;
          case 'c':	 // 3 strings to match.
            if (memcmp(BuiltinName.data()+23, "mp", 2))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "gtu", 3))
                break;
              return Intrinsic::hexagon_A2_vcmpbgtu;	 // "__builtin_HEXAGON_A2_vcmpbgtu"
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "gtu", 3))
                break;
              return Intrinsic::hexagon_A2_vcmphgtu;	 // "__builtin_HEXAGON_A2_vcmphgtu"
            case 'w':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "gtu", 3))
                break;
              return Intrinsic::hexagon_A2_vcmpwgtu;	 // "__builtin_HEXAGON_A2_vcmpwgtu"
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "avg", 3))
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "cr", 2))
                break;
              return Intrinsic::hexagon_A2_vnavghcr;	 // "__builtin_HEXAGON_A2_vnavghcr"
            case 'w':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "cr", 2))
                break;
              return Intrinsic::hexagon_A2_vnavgwcr;	 // "__builtin_HEXAGON_A2_vnavgwcr"
            }
            break;
          }
          break;
        }
        break;
      case '4':	 // 14 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "itsplit", 7))
            break;
          return Intrinsic::hexagon_A4_bitsplit;	 // "__builtin_HEXAGON_A4_bitsplit"
        case 'c':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "mp", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "gtui", 4))
              break;
            return Intrinsic::hexagon_A4_cmpbgtui;	 // "__builtin_HEXAGON_A4_cmpbgtui"
          case 'h':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "gtui", 4))
              break;
            return Intrinsic::hexagon_A4_cmphgtui;	 // "__builtin_HEXAGON_A4_cmphgtui"
          }
          break;
        case 'm':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "odwrapu", 7))
            break;
          return Intrinsic::hexagon_A4_modwrapu;	 // "__builtin_HEXAGON_A4_modwrapu"
        case 'r':	 // 3 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "mpneqi", 6))
              break;
            return Intrinsic::hexagon_A4_rcmpneqi;	 // "__builtin_HEXAGON_A4_rcmpneqi"
          case 'o':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "und_r", 5))
              break;
            switch (BuiltinName[28]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_A4_round_ri;	 // "__builtin_HEXAGON_A4_round_ri"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_A4_round_rr;	 // "__builtin_HEXAGON_A4_round_rr"
            }
            break;
          }
          break;
        case 't':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "lbmatch", 7))
            break;
          return Intrinsic::hexagon_A4_tlbmatch;	 // "__builtin_HEXAGON_A4_tlbmatch"
        case 'v':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+22, "cmp", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'b':	 // 2 strings to match.
            switch (BuiltinName[26]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "qi", 2))
                break;
              return Intrinsic::hexagon_A4_vcmpbeqi;	 // "__builtin_HEXAGON_A4_vcmpbeqi"
            case 'g':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "ti", 2))
                break;
              return Intrinsic::hexagon_A4_vcmpbgti;	 // "__builtin_HEXAGON_A4_vcmpbgti"
            }
            break;
          case 'h':	 // 2 strings to match.
            switch (BuiltinName[26]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "qi", 2))
                break;
              return Intrinsic::hexagon_A4_vcmpheqi;	 // "__builtin_HEXAGON_A4_vcmpheqi"
            case 'g':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "ti", 2))
                break;
              return Intrinsic::hexagon_A4_vcmphgti;	 // "__builtin_HEXAGON_A4_vcmphgti"
            }
            break;
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[26]) {
            default: break;
            case 'e':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "qi", 2))
                break;
              return Intrinsic::hexagon_A4_vcmpweqi;	 // "__builtin_HEXAGON_A4_vcmpweqi"
            case 'g':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "ti", 2))
                break;
              return Intrinsic::hexagon_A4_vcmpwgti;	 // "__builtin_HEXAGON_A4_vcmpwgti"
            }
            break;
          }
          break;
        }
        break;
      case '5':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "_vaddhubs", 9))
          break;
        return Intrinsic::hexagon_A5_vaddhubs;	 // "__builtin_HEXAGON_A5_vaddhubs"
      }
      break;
    case 'C':	 // 5 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "_bitsclri", 9))
          break;
        return Intrinsic::hexagon_C2_bitsclri;	 // "__builtin_HEXAGON_C2_bitsclri"
      case '4':	 // 4 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "nd_andn", 7))
            break;
          return Intrinsic::hexagon_C4_and_andn;	 // "__builtin_HEXAGON_C4_and_andn"
        case 'c':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "mplteui", 7))
            break;
          return Intrinsic::hexagon_C4_cmplteui;	 // "__builtin_HEXAGON_C4_cmplteui"
        case 'n':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "bits", 4))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 'c':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "lr", 2))
              break;
            return Intrinsic::hexagon_C4_nbitsclr;	 // "__builtin_HEXAGON_C4_nbitsclr"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "et", 2))
              break;
            return Intrinsic::hexagon_C4_nbitsset;	 // "__builtin_HEXAGON_C4_nbitsset"
          }
          break;
        }
        break;
      }
      break;
    case 'F':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_", 2))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'd':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+22, "ff", 2))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'i':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+25, "xup", 3))
            break;
          switch (BuiltinName[28]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::hexagon_F2_dffixupd;	 // "__builtin_HEXAGON_F2_dffixupd"
          case 'n':	 // 1 string to match.
            return Intrinsic::hexagon_F2_dffixupn;	 // "__builtin_HEXAGON_F2_dffixupn"
          case 'r':	 // 1 string to match.
            return Intrinsic::hexagon_F2_dffixupr;	 // "__builtin_HEXAGON_F2_dffixupr"
          }
          break;
        case 'm':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "a_sc", 4))
            break;
          return Intrinsic::hexagon_F2_dffma_sc;	 // "__builtin_HEXAGON_F2_dffma_sc"
        }
        break;
      case 's':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+22, "ff", 2))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'i':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+25, "xup", 3))
            break;
          switch (BuiltinName[28]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::hexagon_F2_sffixupd;	 // "__builtin_HEXAGON_F2_sffixupd"
          case 'n':	 // 1 string to match.
            return Intrinsic::hexagon_F2_sffixupn;	 // "__builtin_HEXAGON_F2_sffixupn"
          case 'r':	 // 1 string to match.
            return Intrinsic::hexagon_F2_sffixupr;	 // "__builtin_HEXAGON_F2_sffixupr"
          }
          break;
        case 'm':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "a_sc", 4))
            break;
          return Intrinsic::hexagon_F2_sffma_sc;	 // "__builtin_HEXAGON_F2_sffma_sc"
        }
        break;
      }
      break;
    case 'M':	 // 29 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 18 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'c':	 // 10 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'm':	 // 8 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 4 strings to match.
              if (BuiltinName[24] != 'c')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'i':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+26, "_s0", 3))
                  break;
                return Intrinsic::hexagon_M2_cmaci_s0;	 // "__builtin_HEXAGON_M2_cmaci_s0"
              case 'r':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+26, "_s0", 3))
                  break;
                return Intrinsic::hexagon_M2_cmacr_s0;	 // "__builtin_HEXAGON_M2_cmacr_s0"
              case 's':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+26, "_s", 2))
                  break;
                switch (BuiltinName[28]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_cmacs_s0;	 // "__builtin_HEXAGON_M2_cmacs_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_cmacs_s1;	 // "__builtin_HEXAGON_M2_cmacs_s1"
                }
                break;
              }
              break;
            case 'p':	 // 4 strings to match.
              if (BuiltinName[24] != 'y')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'i':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+26, "_s0", 3))
                  break;
                return Intrinsic::hexagon_M2_cmpyi_s0;	 // "__builtin_HEXAGON_M2_cmpyi_s0"
              case 'r':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+26, "_s0", 3))
                  break;
                return Intrinsic::hexagon_M2_cmpyr_s0;	 // "__builtin_HEXAGON_M2_cmpyr_s0"
              case 's':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+26, "_s", 2))
                  break;
                switch (BuiltinName[28]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_cmpys_s0;	 // "__builtin_HEXAGON_M2_cmpys_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_cmpys_s1;	 // "__builtin_HEXAGON_M2_cmpys_s1"
                }
                break;
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "acs_s", 5))
              break;
            switch (BuiltinName[28]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_cnacs_s0;	 // "__builtin_HEXAGON_M2_cnacs_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_cnacs_s1;	 // "__builtin_HEXAGON_M2_cnacs_s1"
            }
            break;
          }
          break;
        case 'm':	 // 5 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'm':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+23, "py", 2))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'h':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+26, "_s", 2))
                break;
              switch (BuiltinName[28]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mmpyh_s0;	 // "__builtin_HEXAGON_M2_mmpyh_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mmpyh_s1;	 // "__builtin_HEXAGON_M2_mmpyh_s1"
              }
              break;
            case 'l':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+26, "_s", 2))
                break;
              switch (BuiltinName[28]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mmpyl_s0;	 // "__builtin_HEXAGON_M2_mmpyl_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mmpyl_s1;	 // "__builtin_HEXAGON_M2_mmpyl_s1"
              }
              break;
            }
            break;
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "ysu_up", 6))
              break;
            return Intrinsic::hexagon_M2_mpysu_up;	 // "__builtin_HEXAGON_M2_mpysu_up"
          }
          break;
        case 'v':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "rm", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "c_s0", 4))
              break;
            return Intrinsic::hexagon_M2_vrmac_s0;	 // "__builtin_HEXAGON_M2_vrmac_s0"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "y_s0", 4))
              break;
            return Intrinsic::hexagon_M2_vrmpy_s0;	 // "__builtin_HEXAGON_M2_vrmpy_s0"
          }
          break;
        case 'x':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "or_xacc", 7))
            break;
          return Intrinsic::hexagon_M2_xor_xacc;	 // "__builtin_HEXAGON_M2_xor_xacc"
        }
        break;
      case '4':	 // 5 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "nd_andn", 7))
            break;
          return Intrinsic::hexagon_M4_and_andn;	 // "__builtin_HEXAGON_M4_and_andn"
        case 'c':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "mpy", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'i':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "_wh", 3))
              break;
            return Intrinsic::hexagon_M4_cmpyi_wh;	 // "__builtin_HEXAGON_M4_cmpyi_wh"
          case 'r':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "_wh", 3))
              break;
            return Intrinsic::hexagon_M4_cmpyr_wh;	 // "__builtin_HEXAGON_M4_cmpyr_wh"
          }
          break;
        case 'x':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "or_", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "ndn", 3))
              break;
            return Intrinsic::hexagon_M4_xor_andn;	 // "__builtin_HEXAGON_M4_xor_andn"
          case 'x':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "acc", 3))
              break;
            return Intrinsic::hexagon_M4_xor_xacc;	 // "__builtin_HEXAGON_M4_xor_xacc"
          }
          break;
        }
        break;
      case '5':	 // 6 strings to match.
        if (memcmp(BuiltinName.data()+20, "_v", 2))
          break;
        switch (BuiltinName[22]) {
        default: break;
        case 'd':	 // 2 strings to match.
          if (BuiltinName[23] != 'm')
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "cbsu", 4))
              break;
            return Intrinsic::hexagon_M5_vdmacbsu;	 // "__builtin_HEXAGON_M5_vdmacbsu"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "ybsu", 4))
              break;
            return Intrinsic::hexagon_M5_vdmpybsu;	 // "__builtin_HEXAGON_M5_vdmpybsu"
          }
          break;
        case 'r':	 // 4 strings to match.
          if (BuiltinName[23] != 'm')
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+25, "cb", 2))
              break;
            switch (BuiltinName[27]) {
            default: break;
            case 's':	 // 1 string to match.
              if (BuiltinName[28] != 'u')
                break;
              return Intrinsic::hexagon_M5_vrmacbsu;	 // "__builtin_HEXAGON_M5_vrmacbsu"
            case 'u':	 // 1 string to match.
              if (BuiltinName[28] != 'u')
                break;
              return Intrinsic::hexagon_M5_vrmacbuu;	 // "__builtin_HEXAGON_M5_vrmacbuu"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+25, "yb", 2))
              break;
            switch (BuiltinName[27]) {
            default: break;
            case 's':	 // 1 string to match.
              if (BuiltinName[28] != 'u')
                break;
              return Intrinsic::hexagon_M5_vrmpybsu;	 // "__builtin_HEXAGON_M5_vrmpybsu"
            case 'u':	 // 1 string to match.
              if (BuiltinName[28] != 'u')
                break;
              return Intrinsic::hexagon_M5_vrmpybuu;	 // "__builtin_HEXAGON_M5_vrmpybuu"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 'S':	 // 35 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 31 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 8 strings to match.
          if (BuiltinName[22] != 's')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'l':	 // 4 strings to match.
            if (BuiltinName[24] != '_')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'i':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+26, "_v", 2))
                break;
              switch (BuiltinName[28]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asl_i_vh;	 // "__builtin_HEXAGON_S2_asl_i_vh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asl_i_vw;	 // "__builtin_HEXAGON_S2_asl_i_vw"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+26, "_v", 2))
                break;
              switch (BuiltinName[28]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asl_r_vh;	 // "__builtin_HEXAGON_S2_asl_r_vh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asl_r_vw;	 // "__builtin_HEXAGON_S2_asl_r_vw"
              }
              break;
            }
            break;
          case 'r':	 // 4 strings to match.
            if (BuiltinName[24] != '_')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'i':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+26, "_v", 2))
                break;
              switch (BuiltinName[28]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asr_i_vh;	 // "__builtin_HEXAGON_S2_asr_i_vh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asr_i_vw;	 // "__builtin_HEXAGON_S2_asr_i_vw"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+26, "_v", 2))
                break;
              switch (BuiltinName[28]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asr_r_vh;	 // "__builtin_HEXAGON_S2_asr_r_vh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_S2_asr_r_vw;	 // "__builtin_HEXAGON_S2_asr_r_vw"
              }
              break;
            }
            break;
          }
          break;
        case 'c':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "lrbit_", 6))
            break;
          switch (BuiltinName[28]) {
          default: break;
          case 'i':	 // 1 string to match.
            return Intrinsic::hexagon_S2_clrbit_i;	 // "__builtin_HEXAGON_S2_clrbit_i"
          case 'r':	 // 1 string to match.
            return Intrinsic::hexagon_S2_clrbit_r;	 // "__builtin_HEXAGON_S2_clrbit_r"
          }
          break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "xtractu", 7))
            break;
          return Intrinsic::hexagon_S2_extractu;	 // "__builtin_HEXAGON_S2_extractu"
        case 'l':	 // 6 strings to match.
          if (BuiltinName[22] != 's')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+24, "_r_v", 4))
              break;
            switch (BuiltinName[28]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_S2_lsl_r_vh;	 // "__builtin_HEXAGON_S2_lsl_r_vh"
            case 'w':	 // 1 string to match.
              return Intrinsic::hexagon_S2_lsl_r_vw;	 // "__builtin_HEXAGON_S2_lsl_r_vw"
            }
            break;
          case 'r':	 // 4 strings to match.
            if (BuiltinName[24] != '_')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'i':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+26, "_v", 2))
                break;
              switch (BuiltinName[28]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsr_i_vh;	 // "__builtin_HEXAGON_S2_lsr_i_vh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsr_i_vw;	 // "__builtin_HEXAGON_S2_lsr_i_vw"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+26, "_v", 2))
                break;
              switch (BuiltinName[28]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsr_r_vh;	 // "__builtin_HEXAGON_S2_lsr_r_vh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_S2_lsr_r_vw;	 // "__builtin_HEXAGON_S2_lsr_r_vw"
              }
              break;
            }
            break;
          }
          break;
        case 's':	 // 3 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'e':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "tbit_", 5))
              break;
            switch (BuiltinName[28]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_S2_setbit_i;	 // "__builtin_HEXAGON_S2_setbit_i"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_S2_setbit_r;	 // "__builtin_HEXAGON_S2_setbit_r"
            }
            break;
          case 'v':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "sathub", 6))
              break;
            return Intrinsic::hexagon_S2_svsathub;	 // "__builtin_HEXAGON_S2_svsathub"
          }
          break;
        case 't':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "stbit_", 6))
            break;
          switch (BuiltinName[28]) {
          default: break;
          case 'i':	 // 1 string to match.
            return Intrinsic::hexagon_S2_tstbit_i;	 // "__builtin_HEXAGON_S2_tstbit_i"
          case 'r':	 // 1 string to match.
            return Intrinsic::hexagon_S2_tstbit_r;	 // "__builtin_HEXAGON_S2_tstbit_r"
          }
          break;
        case 'v':	 // 9 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "lign", 4))
              break;
            switch (BuiltinName[27]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (BuiltinName[28] != 'b')
                break;
              return Intrinsic::hexagon_S2_valignib;	 // "__builtin_HEXAGON_S2_valignib"
            case 'r':	 // 1 string to match.
              if (BuiltinName[28] != 'b')
                break;
              return Intrinsic::hexagon_S2_valignrb;	 // "__builtin_HEXAGON_S2_valignrb"
            }
            break;
          case 'c':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "rotate", 6))
              break;
            return Intrinsic::hexagon_S2_vcrotate;	 // "__builtin_HEXAGON_S2_vcrotate"
          case 's':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "platr", 5))
              break;
            switch (BuiltinName[28]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::hexagon_S2_vsplatrb;	 // "__builtin_HEXAGON_S2_vsplatrb"
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_S2_vsplatrh;	 // "__builtin_HEXAGON_S2_vsplatrh"
            }
            break;
          case 't':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+23, "run", 3))
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'e':	 // 2 strings to match.
              switch (BuiltinName[27]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (BuiltinName[28] != 'b')
                  break;
                return Intrinsic::hexagon_S2_vtrunehb;	 // "__builtin_HEXAGON_S2_vtrunehb"
              case 'w':	 // 1 string to match.
                if (BuiltinName[28] != 'h')
                  break;
                return Intrinsic::hexagon_S2_vtrunewh;	 // "__builtin_HEXAGON_S2_vtrunewh"
              }
              break;
            case 'o':	 // 2 strings to match.
              switch (BuiltinName[27]) {
              default: break;
              case 'h':	 // 1 string to match.
                if (BuiltinName[28] != 'b')
                  break;
                return Intrinsic::hexagon_S2_vtrunohb;	 // "__builtin_HEXAGON_S2_vtrunohb"
              case 'w':	 // 1 string to match.
                if (BuiltinName[28] != 'h')
                  break;
                return Intrinsic::hexagon_S2_vtrunowh;	 // "__builtin_HEXAGON_S2_vtrunowh"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case '4':	 // 4 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'c':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "lbp", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "ddi", 3))
              break;
            return Intrinsic::hexagon_S4_clbpaddi;	 // "__builtin_HEXAGON_S4_clbpaddi"
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "orm", 3))
              break;
            return Intrinsic::hexagon_S4_clbpnorm;	 // "__builtin_HEXAGON_S4_clbpnorm"
          }
          break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "xtractp", 7))
            break;
          return Intrinsic::hexagon_S4_extractp;	 // "__builtin_HEXAGON_S4_extractp"
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "r_andix", 7))
            break;
          return Intrinsic::hexagon_S4_or_andix;	 // "__builtin_HEXAGON_S4_or_andix"
        }
        break;
      }
      break;
    }
    break;
  case 30:	 // 81 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 11 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 3 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "ombineii", 8))
            break;
          return Intrinsic::hexagon_A2_combineii;	 // "__builtin_HEXAGON_A2_combineii"
        case 'v':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "ddb_map", 7))
              break;
            return Intrinsic::hexagon_A2_vaddb_map;	 // "__builtin_HEXAGON_A2_vaddb_map"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "ubb_map", 7))
              break;
            return Intrinsic::hexagon_A2_vsubb_map;	 // "__builtin_HEXAGON_A2_vsubb_map"
          }
          break;
        }
        break;
      case '4':	 // 8 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "itspliti", 8))
            break;
          return Intrinsic::hexagon_A4_bitspliti;	 // "__builtin_HEXAGON_A4_bitspliti"
        case 'c':	 // 4 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'o':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "mbine", 5))
              break;
            switch (BuiltinName[28]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (BuiltinName[29] != 'r')
                break;
              return Intrinsic::hexagon_A4_combineir;	 // "__builtin_HEXAGON_A4_combineir"
            case 'r':	 // 1 string to match.
              if (BuiltinName[29] != 'i')
                break;
              return Intrinsic::hexagon_A4_combineri;	 // "__builtin_HEXAGON_A4_combineri"
            }
            break;
          case 'r':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "ound_r", 6))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_A4_cround_ri;	 // "__builtin_HEXAGON_A4_cround_ri"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_A4_cround_rr;	 // "__builtin_HEXAGON_A4_cround_rr"
            }
            break;
          }
          break;
        case 'v':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+22, "cmp", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "gtui", 4))
              break;
            return Intrinsic::hexagon_A4_vcmpbgtui;	 // "__builtin_HEXAGON_A4_vcmpbgtui"
          case 'h':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "gtui", 4))
              break;
            return Intrinsic::hexagon_A4_vcmphgtui;	 // "__builtin_HEXAGON_A4_vcmphgtui"
          case 'w':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "gtui", 4))
              break;
            return Intrinsic::hexagon_A4_vcmpwgtui;	 // "__builtin_HEXAGON_A4_vcmpwgtui"
          }
          break;
        }
        break;
      }
      break;
    case 'C':	 // 2 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "_pxfer_map", 10))
          break;
        return Intrinsic::hexagon_C2_pxfer_map;	 // "__builtin_HEXAGON_C2_pxfer_map"
      case '4':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "_nbitsclri", 10))
          break;
        return Intrinsic::hexagon_C4_nbitsclri;	 // "__builtin_HEXAGON_C4_nbitsclri"
      }
      break;
    case 'F':	 // 12 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_", 2))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'c':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+22, "onv_", 4))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'd':	 // 4 strings to match.
          switch (BuiltinName[27]) {
          default: break;
          case '2':	 // 2 strings to match.
            switch (BuiltinName[28]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (BuiltinName[29] != 'f')
                break;
              return Intrinsic::hexagon_F2_conv_d2df;	 // "__builtin_HEXAGON_F2_conv_d2df"
            case 's':	 // 1 string to match.
              if (BuiltinName[29] != 'f')
                break;
              return Intrinsic::hexagon_F2_conv_d2sf;	 // "__builtin_HEXAGON_F2_conv_d2sf"
            }
            break;
          case 'f':	 // 2 strings to match.
            if (BuiltinName[28] != '2')
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::hexagon_F2_conv_df2d;	 // "__builtin_HEXAGON_F2_conv_df2d"
            case 'w':	 // 1 string to match.
              return Intrinsic::hexagon_F2_conv_df2w;	 // "__builtin_HEXAGON_F2_conv_df2w"
            }
            break;
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+27, "f2", 2))
            break;
          switch (BuiltinName[29]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::hexagon_F2_conv_sf2d;	 // "__builtin_HEXAGON_F2_conv_sf2d"
          case 'w':	 // 1 string to match.
            return Intrinsic::hexagon_F2_conv_sf2w;	 // "__builtin_HEXAGON_F2_conv_sf2w"
          }
          break;
        case 'w':	 // 2 strings to match.
          if (BuiltinName[27] != '2')
            break;
          switch (BuiltinName[28]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (BuiltinName[29] != 'f')
              break;
            return Intrinsic::hexagon_F2_conv_w2df;	 // "__builtin_HEXAGON_F2_conv_w2df"
          case 's':	 // 1 string to match.
            if (BuiltinName[29] != 'f')
              break;
            return Intrinsic::hexagon_F2_conv_w2sf;	 // "__builtin_HEXAGON_F2_conv_w2sf"
          }
          break;
        }
        break;
      case 'd':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "ffm", 3))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+26, "_lib", 4))
            break;
          return Intrinsic::hexagon_F2_dffma_lib;	 // "__builtin_HEXAGON_F2_dffma_lib"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+26, "_lib", 4))
            break;
          return Intrinsic::hexagon_F2_dffms_lib;	 // "__builtin_HEXAGON_F2_dffms_lib"
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "ffm", 3))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+26, "_lib", 4))
            break;
          return Intrinsic::hexagon_F2_sffma_lib;	 // "__builtin_HEXAGON_F2_sffma_lib"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+26, "_lib", 4))
            break;
          return Intrinsic::hexagon_F2_sffms_lib;	 // "__builtin_HEXAGON_F2_sffms_lib"
        }
        break;
      }
      break;
    case 'M':	 // 44 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 41 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'c':	 // 8 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'm':	 // 6 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+24, "csc_s", 5))
                break;
              switch (BuiltinName[29]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_cmacsc_s0;	 // "__builtin_HEXAGON_M2_cmacsc_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_cmacsc_s1;	 // "__builtin_HEXAGON_M2_cmacsc_s1"
              }
              break;
            case 'p':	 // 4 strings to match.
              if (BuiltinName[24] != 'y')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'r':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+26, "s_s", 3))
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_cmpyrs_s0;	 // "__builtin_HEXAGON_M2_cmpyrs_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_cmpyrs_s1;	 // "__builtin_HEXAGON_M2_cmpyrs_s1"
                }
                break;
              case 's':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+26, "c_s", 3))
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_cmpysc_s0;	 // "__builtin_HEXAGON_M2_cmpysc_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_cmpysc_s1;	 // "__builtin_HEXAGON_M2_cmpysc_s1"
                }
                break;
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "acsc_s", 6))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_cnacsc_s0;	 // "__builtin_HEXAGON_M2_cnacsc_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_cnacsc_s1;	 // "__builtin_HEXAGON_M2_cnacsc_s1"
            }
            break;
          }
          break;
        case 'h':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "mmpy", 4))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "_s1", 3))
              break;
            return Intrinsic::hexagon_M2_hmmpyh_s1;	 // "__builtin_HEXAGON_M2_hmmpyh_s1"
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "_s1", 3))
              break;
            return Intrinsic::hexagon_M2_hmmpyl_s1;	 // "__builtin_HEXAGON_M2_hmmpyl_s1"
          }
          break;
        case 'm':	 // 21 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'm':	 // 12 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 4 strings to match.
              if (BuiltinName[24] != 'c')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+26, "s_s", 3))
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmachs_s0;	 // "__builtin_HEXAGON_M2_mmachs_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmachs_s1;	 // "__builtin_HEXAGON_M2_mmachs_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+26, "s_s", 3))
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmacls_s0;	 // "__builtin_HEXAGON_M2_mmacls_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmacls_s1;	 // "__builtin_HEXAGON_M2_mmacls_s1"
                }
                break;
              }
              break;
            case 'p':	 // 8 strings to match.
              if (BuiltinName[24] != 'y')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+26, "_rs", 3))
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyh_rs0;	 // "__builtin_HEXAGON_M2_mmpyh_rs0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyh_rs1;	 // "__builtin_HEXAGON_M2_mmpyh_rs1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+26, "_rs", 3))
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyl_rs0;	 // "__builtin_HEXAGON_M2_mmpyl_rs0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyl_rs1;	 // "__builtin_HEXAGON_M2_mmpyl_rs1"
                }
                break;
              case 'u':	 // 4 strings to match.
                switch (BuiltinName[26]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+27, "_s", 2))
                    break;
                  switch (BuiltinName[29]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyuh_s0;	 // "__builtin_HEXAGON_M2_mmpyuh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyuh_s1;	 // "__builtin_HEXAGON_M2_mmpyuh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+27, "_s", 2))
                    break;
                  switch (BuiltinName[29]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyul_s0;	 // "__builtin_HEXAGON_M2_mmpyul_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmpyul_s1;	 // "__builtin_HEXAGON_M2_mmpyul_s1"
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          case 'p':	 // 9 strings to match.
            if (memcmp(BuiltinName.data()+23, "y_", 2))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'h':	 // 4 strings to match.
              switch (BuiltinName[26]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+27, "_s", 2))
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_hh_s0;	 // "__builtin_HEXAGON_M2_mpy_hh_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_hh_s1;	 // "__builtin_HEXAGON_M2_mpy_hh_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+27, "_s", 2))
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_hl_s0;	 // "__builtin_HEXAGON_M2_mpy_hl_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_hl_s1;	 // "__builtin_HEXAGON_M2_mpy_hl_s1"
                }
                break;
              }
              break;
            case 'l':	 // 4 strings to match.
              switch (BuiltinName[26]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+27, "_s", 2))
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_lh_s0;	 // "__builtin_HEXAGON_M2_mpy_lh_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_lh_s1;	 // "__builtin_HEXAGON_M2_mpy_lh_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+27, "_s", 2))
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_ll_s0;	 // "__builtin_HEXAGON_M2_mpy_ll_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_ll_s1;	 // "__builtin_HEXAGON_M2_mpy_ll_s1"
                }
                break;
              }
              break;
            case 'u':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "p_s1", 4))
                break;
              return Intrinsic::hexagon_M2_mpy_up_s1;	 // "__builtin_HEXAGON_M2_mpy_up_s1"
            }
            break;
          }
          break;
        case 'v':	 // 10 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "bsdiff", 6))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_M2_vabsdiffh;	 // "__builtin_HEXAGON_M2_vabsdiffh"
            case 'w':	 // 1 string to match.
              return Intrinsic::hexagon_M2_vabsdiffw;	 // "__builtin_HEXAGON_M2_vabsdiffw"
            }
            break;
          case 'd':	 // 4 strings to match.
            if (BuiltinName[23] != 'm')
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+25, "cs_s", 4))
                break;
              switch (BuiltinName[29]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vdmacs_s0;	 // "__builtin_HEXAGON_M2_vdmacs_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vdmacs_s1;	 // "__builtin_HEXAGON_M2_vdmacs_s1"
              }
              break;
            case 'p':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+25, "ys_s", 4))
                break;
              switch (BuiltinName[29]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vdmpys_s0;	 // "__builtin_HEXAGON_M2_vdmpys_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vdmpys_s1;	 // "__builtin_HEXAGON_M2_vdmpys_s1"
              }
              break;
            }
            break;
          case 'm':	 // 4 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+24, "c2s_s", 5))
                break;
              switch (BuiltinName[29]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vmac2s_s0;	 // "__builtin_HEXAGON_M2_vmac2s_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vmac2s_s1;	 // "__builtin_HEXAGON_M2_vmac2s_s1"
              }
              break;
            case 'p':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+24, "y2s_s", 5))
                break;
              switch (BuiltinName[29]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vmpy2s_s0;	 // "__builtin_HEXAGON_M2_vmpy2s_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vmpy2s_s1;	 // "__builtin_HEXAGON_M2_vmpy2s_s1"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case '4':	 // 3 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'c':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "mpy", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'i':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "_whc", 4))
              break;
            return Intrinsic::hexagon_M4_cmpyi_whc;	 // "__builtin_HEXAGON_M4_cmpyi_whc"
          case 'r':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "_whc", 4))
              break;
            return Intrinsic::hexagon_M4_cmpyr_whc;	 // "__builtin_HEXAGON_M4_cmpyr_whc"
          }
          break;
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "mpyw_acc", 8))
            break;
          return Intrinsic::hexagon_M4_pmpyw_acc;	 // "__builtin_HEXAGON_M4_pmpyw_acc"
        }
        break;
      }
      break;
    case 'S':	 // 12 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 4 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "xtractup", 8))
            break;
          return Intrinsic::hexagon_S2_extractup;	 // "__builtin_HEXAGON_S2_extractup"
        case 'i':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "nsert_rp", 8))
            break;
          return Intrinsic::hexagon_S2_insert_rp;	 // "__builtin_HEXAGON_S2_insert_rp"
        case 'v':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "splice", 6))
            break;
          switch (BuiltinName[28]) {
          default: break;
          case 'i':	 // 1 string to match.
            if (BuiltinName[29] != 'b')
              break;
            return Intrinsic::hexagon_S2_vspliceib;	 // "__builtin_HEXAGON_S2_vspliceib"
          case 'r':	 // 1 string to match.
            if (BuiltinName[29] != 'b')
              break;
            return Intrinsic::hexagon_S2_vsplicerb;	 // "__builtin_HEXAGON_S2_vsplicerb"
          }
          break;
        }
        break;
      case '4':	 // 7 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'n':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "tstbit_", 7))
            break;
          switch (BuiltinName[29]) {
          default: break;
          case 'i':	 // 1 string to match.
            return Intrinsic::hexagon_S4_ntstbit_i;	 // "__builtin_HEXAGON_S4_ntstbit_i"
          case 'r':	 // 1 string to match.
            return Intrinsic::hexagon_S4_ntstbit_r;	 // "__builtin_HEXAGON_S4_ntstbit_r"
          }
          break;
        case 'v':	 // 5 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'r':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "crotate", 7))
              break;
            return Intrinsic::hexagon_S4_vrcrotate;	 // "__builtin_HEXAGON_S4_vrcrotate"
          case 'x':	 // 4 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+24, "ddsub", 5))
                break;
              switch (BuiltinName[29]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S4_vxaddsubh;	 // "__builtin_HEXAGON_S4_vxaddsubh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_S4_vxaddsubw;	 // "__builtin_HEXAGON_S4_vxaddsubw"
              }
              break;
            case 's':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+24, "ubadd", 5))
                break;
              switch (BuiltinName[29]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_S4_vxsubaddh;	 // "__builtin_HEXAGON_S4_vxsubaddh"
              case 'w':	 // 1 string to match.
                return Intrinsic::hexagon_S4_vxsubaddw;	 // "__builtin_HEXAGON_S4_vxsubaddw"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case '5':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "_popcountp", 10))
          break;
        return Intrinsic::hexagon_S5_popcountp;	 // "__builtin_HEXAGON_S5_popcountp"
      }
      break;
    }
    break;
  case 31:	 // 95 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_combine_", 10))
        break;
      switch (BuiltinName[29]) {
      default: break;
      case 'h':	 // 2 strings to match.
        switch (BuiltinName[30]) {
        default: break;
        case 'h':	 // 1 string to match.
          return Intrinsic::hexagon_A2_combine_hh;	 // "__builtin_HEXAGON_A2_combine_hh"
        case 'l':	 // 1 string to match.
          return Intrinsic::hexagon_A2_combine_hl;	 // "__builtin_HEXAGON_A2_combine_hl"
        }
        break;
      case 'l':	 // 2 strings to match.
        switch (BuiltinName[30]) {
        default: break;
        case 'h':	 // 1 string to match.
          return Intrinsic::hexagon_A2_combine_lh;	 // "__builtin_HEXAGON_A2_combine_lh"
        case 'l':	 // 1 string to match.
          return Intrinsic::hexagon_A2_combine_ll;	 // "__builtin_HEXAGON_A2_combine_ll"
        }
        break;
      }
      break;
    case 'F':	 // 10 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_conv_", 7))
        break;
      switch (BuiltinName[26]) {
      default: break;
      case 'd':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+27, "f2", 2))
          break;
        switch (BuiltinName[29]) {
        default: break;
        case 's':	 // 1 string to match.
          if (BuiltinName[30] != 'f')
            break;
          return Intrinsic::hexagon_F2_conv_df2sf;	 // "__builtin_HEXAGON_F2_conv_df2sf"
        case 'u':	 // 2 strings to match.
          switch (BuiltinName[30]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::hexagon_F2_conv_df2ud;	 // "__builtin_HEXAGON_F2_conv_df2ud"
          case 'w':	 // 1 string to match.
            return Intrinsic::hexagon_F2_conv_df2uw;	 // "__builtin_HEXAGON_F2_conv_df2uw"
          }
          break;
        }
        break;
      case 's':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+27, "f2", 2))
          break;
        switch (BuiltinName[29]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (BuiltinName[30] != 'f')
            break;
          return Intrinsic::hexagon_F2_conv_sf2df;	 // "__builtin_HEXAGON_F2_conv_sf2df"
        case 'u':	 // 2 strings to match.
          switch (BuiltinName[30]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::hexagon_F2_conv_sf2ud;	 // "__builtin_HEXAGON_F2_conv_sf2ud"
          case 'w':	 // 1 string to match.
            return Intrinsic::hexagon_F2_conv_sf2uw;	 // "__builtin_HEXAGON_F2_conv_sf2uw"
          }
          break;
        }
        break;
      case 'u':	 // 4 strings to match.
        switch (BuiltinName[27]) {
        default: break;
        case 'd':	 // 2 strings to match.
          if (BuiltinName[28] != '2')
            break;
          switch (BuiltinName[29]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (BuiltinName[30] != 'f')
              break;
            return Intrinsic::hexagon_F2_conv_ud2df;	 // "__builtin_HEXAGON_F2_conv_ud2df"
          case 's':	 // 1 string to match.
            if (BuiltinName[30] != 'f')
              break;
            return Intrinsic::hexagon_F2_conv_ud2sf;	 // "__builtin_HEXAGON_F2_conv_ud2sf"
          }
          break;
        case 'w':	 // 2 strings to match.
          if (BuiltinName[28] != '2')
            break;
          switch (BuiltinName[29]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (BuiltinName[30] != 'f')
              break;
            return Intrinsic::hexagon_F2_conv_uw2df;	 // "__builtin_HEXAGON_F2_conv_uw2df"
          case 's':	 // 1 string to match.
            if (BuiltinName[30] != 'f')
              break;
            return Intrinsic::hexagon_F2_conv_uw2sf;	 // "__builtin_HEXAGON_F2_conv_uw2sf"
          }
          break;
        }
        break;
      }
      break;
    case 'M':	 // 58 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 49 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'c':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "mpyrsc_s", 8))
            break;
          switch (BuiltinName[30]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_cmpyrsc_s0;	 // "__builtin_HEXAGON_M2_cmpyrsc_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_cmpyrsc_s1;	 // "__builtin_HEXAGON_M2_cmpyrsc_s1"
          }
          break;
        case 'd':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "pmpy", 4))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "s_s0", 4))
              break;
            return Intrinsic::hexagon_M2_dpmpyss_s0;	 // "__builtin_HEXAGON_M2_dpmpyss_s0"
          case 'u':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "u_s0", 4))
              break;
            return Intrinsic::hexagon_M2_dpmpyuu_s0;	 // "__builtin_HEXAGON_M2_dpmpyuu_s0"
          }
          break;
        case 'h':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "mmpy", 4))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "_rs1", 4))
              break;
            return Intrinsic::hexagon_M2_hmmpyh_rs1;	 // "__builtin_HEXAGON_M2_hmmpyh_rs1"
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "_rs1", 4))
              break;
            return Intrinsic::hexagon_M2_hmmpyl_rs1;	 // "__builtin_HEXAGON_M2_hmmpyl_rs1"
          }
          break;
        case 'm':	 // 28 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'm':	 // 12 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 8 strings to match.
              if (BuiltinName[24] != 'c')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+26, "s_rs", 4))
                  break;
                switch (BuiltinName[30]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmachs_rs0;	 // "__builtin_HEXAGON_M2_mmachs_rs0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmachs_rs1;	 // "__builtin_HEXAGON_M2_mmachs_rs1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+26, "s_rs", 4))
                  break;
                switch (BuiltinName[30]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmacls_rs0;	 // "__builtin_HEXAGON_M2_mmacls_rs0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmacls_rs1;	 // "__builtin_HEXAGON_M2_mmacls_rs1"
                }
                break;
              case 'u':	 // 4 strings to match.
                switch (BuiltinName[26]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+27, "s_s", 3))
                    break;
                  switch (BuiltinName[30]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmacuhs_s0;	 // "__builtin_HEXAGON_M2_mmacuhs_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmacuhs_s1;	 // "__builtin_HEXAGON_M2_mmacuhs_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+27, "s_s", 3))
                    break;
                  switch (BuiltinName[30]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmaculs_s0;	 // "__builtin_HEXAGON_M2_mmaculs_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mmaculs_s1;	 // "__builtin_HEXAGON_M2_mmaculs_s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'p':	 // 4 strings to match.
              if (memcmp(BuiltinName.data()+24, "yu", 2))
                break;
              switch (BuiltinName[26]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+27, "_rs", 3))
                  break;
                switch (BuiltinName[30]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyuh_rs0;	 // "__builtin_HEXAGON_M2_mmpyuh_rs0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyuh_rs1;	 // "__builtin_HEXAGON_M2_mmpyuh_rs1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+27, "_rs", 3))
                  break;
                switch (BuiltinName[30]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyul_rs0;	 // "__builtin_HEXAGON_M2_mmpyul_rs0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mmpyul_rs1;	 // "__builtin_HEXAGON_M2_mmpyul_rs1"
                }
                break;
              }
              break;
            }
            break;
          case 'p':	 // 16 strings to match.
            if (BuiltinName[23] != 'y')
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'd':	 // 8 strings to match.
              if (BuiltinName[25] != '_')
                break;
              switch (BuiltinName[26]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (BuiltinName[27]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+28, "_s", 2))
                    break;
                  switch (BuiltinName[30]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_hh_s0;	 // "__builtin_HEXAGON_M2_mpyd_hh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_hh_s1;	 // "__builtin_HEXAGON_M2_mpyd_hh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+28, "_s", 2))
                    break;
                  switch (BuiltinName[30]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_hl_s0;	 // "__builtin_HEXAGON_M2_mpyd_hl_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_hl_s1;	 // "__builtin_HEXAGON_M2_mpyd_hl_s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (BuiltinName[27]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+28, "_s", 2))
                    break;
                  switch (BuiltinName[30]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_lh_s0;	 // "__builtin_HEXAGON_M2_mpyd_lh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_lh_s1;	 // "__builtin_HEXAGON_M2_mpyd_lh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+28, "_s", 2))
                    break;
                  switch (BuiltinName[30]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_ll_s0;	 // "__builtin_HEXAGON_M2_mpyd_ll_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_ll_s1;	 // "__builtin_HEXAGON_M2_mpyd_ll_s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'u':	 // 8 strings to match.
              if (BuiltinName[25] != '_')
                break;
              switch (BuiltinName[26]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (BuiltinName[27]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+28, "_s", 2))
                    break;
                  switch (BuiltinName[30]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_hh_s0;	 // "__builtin_HEXAGON_M2_mpyu_hh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_hh_s1;	 // "__builtin_HEXAGON_M2_mpyu_hh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+28, "_s", 2))
                    break;
                  switch (BuiltinName[30]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_hl_s0;	 // "__builtin_HEXAGON_M2_mpyu_hl_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_hl_s1;	 // "__builtin_HEXAGON_M2_mpyu_hl_s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (BuiltinName[27]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+28, "_s", 2))
                    break;
                  switch (BuiltinName[30]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_lh_s0;	 // "__builtin_HEXAGON_M2_mpyu_lh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_lh_s1;	 // "__builtin_HEXAGON_M2_mpyu_lh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+28, "_s", 2))
                    break;
                  switch (BuiltinName[30]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_ll_s0;	 // "__builtin_HEXAGON_M2_mpyu_ll_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_ll_s1;	 // "__builtin_HEXAGON_M2_mpyu_ll_s1"
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 'v':	 // 15 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "mpyrs_s", 7))
              break;
            switch (BuiltinName[30]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_vdmpyrs_s0;	 // "__builtin_HEXAGON_M2_vdmpyrs_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_vdmpyrs_s1;	 // "__builtin_HEXAGON_M2_vdmpyrs_s1"
            }
            break;
          case 'm':	 // 8 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'a':	 // 4 strings to match.
              if (memcmp(BuiltinName.data()+24, "c2", 2))
                break;
              switch (BuiltinName[26]) {
              default: break;
              case 'e':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+27, "s_s", 3))
                  break;
                switch (BuiltinName[30]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmac2es_s0;	 // "__builtin_HEXAGON_M2_vmac2es_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmac2es_s1;	 // "__builtin_HEXAGON_M2_vmac2es_s1"
                }
                break;
              case 's':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+27, "u_s", 3))
                  break;
                switch (BuiltinName[30]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmac2su_s0;	 // "__builtin_HEXAGON_M2_vmac2su_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmac2su_s1;	 // "__builtin_HEXAGON_M2_vmac2su_s1"
                }
                break;
              }
              break;
            case 'p':	 // 4 strings to match.
              if (memcmp(BuiltinName.data()+24, "y2", 2))
                break;
              switch (BuiltinName[26]) {
              default: break;
              case 'e':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+27, "s_s", 3))
                  break;
                switch (BuiltinName[30]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmpy2es_s0;	 // "__builtin_HEXAGON_M2_vmpy2es_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmpy2es_s1;	 // "__builtin_HEXAGON_M2_vmpy2es_s1"
                }
                break;
              case 's':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+27, "u_s", 3))
                  break;
                switch (BuiltinName[30]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmpy2su_s0;	 // "__builtin_HEXAGON_M2_vmpy2su_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vmpy2su_s1;	 // "__builtin_HEXAGON_M2_vmpy2su_s1"
                }
                break;
              }
              break;
            }
            break;
          case 'r':	 // 5 strings to match.
            if (memcmp(BuiltinName.data()+23, "cm", 2))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (BuiltinName[26] != 'c')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'i':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_s0", 3))
                  break;
                return Intrinsic::hexagon_M2_vrcmaci_s0;	 // "__builtin_HEXAGON_M2_vrcmaci_s0"
              case 'r':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_s0", 3))
                  break;
                return Intrinsic::hexagon_M2_vrcmacr_s0;	 // "__builtin_HEXAGON_M2_vrcmacr_s0"
              }
              break;
            case 'p':	 // 3 strings to match.
              if (BuiltinName[26] != 'y')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'i':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_s0", 3))
                  break;
                return Intrinsic::hexagon_M2_vrcmpyi_s0;	 // "__builtin_HEXAGON_M2_vrcmpyi_s0"
              case 'r':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_s0", 3))
                  break;
                return Intrinsic::hexagon_M2_vrcmpyr_s0;	 // "__builtin_HEXAGON_M2_vrcmpyr_s0"
              case 's':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_s1", 3))
                  break;
                return Intrinsic::hexagon_M2_vrcmpys_s1;	 // "__builtin_HEXAGON_M2_vrcmpys_s1"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case '4':	 // 9 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'm':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+22, "pyr", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'i':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+26, "_add", 4))
              break;
            switch (BuiltinName[30]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_M4_mpyri_addi;	 // "__builtin_HEXAGON_M4_mpyri_addi"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_M4_mpyri_addr;	 // "__builtin_HEXAGON_M4_mpyri_addr"
            }
            break;
          case 'r':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+26, "_add", 4))
              break;
            switch (BuiltinName[30]) {
            default: break;
            case 'i':	 // 1 string to match.
              return Intrinsic::hexagon_M4_mpyrr_addi;	 // "__builtin_HEXAGON_M4_mpyrr_addi"
            case 'r':	 // 1 string to match.
              return Intrinsic::hexagon_M4_mpyrr_addr;	 // "__builtin_HEXAGON_M4_mpyrr_addr"
            }
            break;
          }
          break;
        case 'v':	 // 5 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "mpyh_acc", 8))
              break;
            return Intrinsic::hexagon_M4_vpmpyh_acc;	 // "__builtin_HEXAGON_M4_vpmpyh_acc"
          case 'r':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+23, "mpy", 3))
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'e':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+27, "h_s", 3))
                break;
              switch (BuiltinName[30]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M4_vrmpyeh_s0;	 // "__builtin_HEXAGON_M4_vrmpyeh_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M4_vrmpyeh_s1;	 // "__builtin_HEXAGON_M4_vrmpyeh_s1"
              }
              break;
            case 'o':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+27, "h_s", 3))
                break;
              switch (BuiltinName[30]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M4_vrmpyoh_s0;	 // "__builtin_HEXAGON_M4_vrmpyoh_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M4_vrmpyoh_s1;	 // "__builtin_HEXAGON_M4_vrmpyoh_s1"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 'S':	 // 23 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 17 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 8 strings to match.
          if (BuiltinName[22] != 's')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'l':	 // 4 strings to match.
            if (BuiltinName[24] != '_')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'i':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_asl_i_p_or;	 // "__builtin_HEXAGON_S2_asl_i_p_or"
              case 'r':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_asl_i_r_or;	 // "__builtin_HEXAGON_S2_asl_i_r_or"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_asl_r_p_or;	 // "__builtin_HEXAGON_S2_asl_r_p_or"
              case 'r':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_asl_r_r_or;	 // "__builtin_HEXAGON_S2_asl_r_r_or"
              }
              break;
            }
            break;
          case 'r':	 // 4 strings to match.
            if (BuiltinName[24] != '_')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'i':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_asr_i_p_or;	 // "__builtin_HEXAGON_S2_asr_i_p_or"
              case 'r':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_asr_i_r_or;	 // "__builtin_HEXAGON_S2_asr_i_r_or"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_asr_r_p_or;	 // "__builtin_HEXAGON_S2_asr_r_p_or"
              case 'r':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_asr_r_r_or;	 // "__builtin_HEXAGON_S2_asr_r_r_or"
              }
              break;
            }
            break;
          }
          break;
        case 'i':	 // 2 strings to match.
          if (BuiltinName[22] != 'n')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "ertp_rp", 7))
              break;
            return Intrinsic::hexagon_S2_insertp_rp;	 // "__builtin_HEXAGON_S2_insertp_rp"
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "erleave", 7))
              break;
            return Intrinsic::hexagon_S2_interleave;	 // "__builtin_HEXAGON_S2_interleave"
          }
          break;
        case 'l':	 // 6 strings to match.
          if (BuiltinName[22] != 's')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+24, "_r_", 3))
              break;
            switch (BuiltinName[27]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+28, "_or", 3))
                break;
              return Intrinsic::hexagon_S2_lsl_r_p_or;	 // "__builtin_HEXAGON_S2_lsl_r_p_or"
            case 'r':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+28, "_or", 3))
                break;
              return Intrinsic::hexagon_S2_lsl_r_r_or;	 // "__builtin_HEXAGON_S2_lsl_r_r_or"
            }
            break;
          case 'r':	 // 4 strings to match.
            if (BuiltinName[24] != '_')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'i':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_lsr_i_p_or;	 // "__builtin_HEXAGON_S2_lsr_i_p_or"
              case 'r':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_lsr_i_r_or;	 // "__builtin_HEXAGON_S2_lsr_i_r_or"
              }
              break;
            case 'r':	 // 2 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_lsr_r_p_or;	 // "__builtin_HEXAGON_S2_lsr_r_p_or"
              case 'r':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+28, "_or", 3))
                  break;
                return Intrinsic::hexagon_S2_lsr_r_r_or;	 // "__builtin_HEXAGON_S2_lsr_r_r_or"
              }
              break;
            }
            break;
          }
          break;
        case 'v':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "rndpackwh", 9))
            break;
          return Intrinsic::hexagon_S2_vrndpackwh;	 // "__builtin_HEXAGON_S2_vrndpackwh"
        }
        break;
      case '4':	 // 5 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "xtract_rp", 9))
            break;
          return Intrinsic::hexagon_S4_extract_rp;	 // "__builtin_HEXAGON_S4_extract_rp"
        case 'o':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "ri_", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "sl_ri", 5))
              break;
            return Intrinsic::hexagon_S4_ori_asl_ri;	 // "__builtin_HEXAGON_S4_ori_asl_ri"
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "sr_ri", 5))
              break;
            return Intrinsic::hexagon_S4_ori_lsr_ri;	 // "__builtin_HEXAGON_S4_ori_lsr_ri"
          }
          break;
        case 'v':	 // 2 strings to match.
          if (BuiltinName[22] != 'x')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "ddsubhr", 7))
              break;
            return Intrinsic::hexagon_S4_vxaddsubhr;	 // "__builtin_HEXAGON_S4_vxaddsubhr"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "ubaddhr", 7))
              break;
            return Intrinsic::hexagon_S4_vxsubaddhr;	 // "__builtin_HEXAGON_S4_vxsubaddhr"
          }
          break;
        }
        break;
      case '5':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "_asrhub_sat", 11))
          break;
        return Intrinsic::hexagon_S5_asrhub_sat;	 // "__builtin_HEXAGON_S5_asrhub_sat"
      }
      break;
    }
    break;
  case 32:	 // 96 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 16 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 14 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+22, "ddh_", 4))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 'h':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+27, "16_", 3))
              break;
            switch (BuiltinName[30]) {
            default: break;
            case 'h':	 // 2 strings to match.
              switch (BuiltinName[31]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_addh_h16_hh;	 // "__builtin_HEXAGON_A2_addh_h16_hh"
              case 'l':	 // 1 string to match.
                return Intrinsic::hexagon_A2_addh_h16_hl;	 // "__builtin_HEXAGON_A2_addh_h16_hl"
              }
              break;
            case 'l':	 // 2 strings to match.
              switch (BuiltinName[31]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_addh_h16_lh;	 // "__builtin_HEXAGON_A2_addh_h16_lh"
              case 'l':	 // 1 string to match.
                return Intrinsic::hexagon_A2_addh_h16_ll;	 // "__builtin_HEXAGON_A2_addh_h16_ll"
              }
              break;
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "16_", 3))
              break;
            switch (BuiltinName[30]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (BuiltinName[31] != 'l')
                break;
              return Intrinsic::hexagon_A2_addh_l16_hl;	 // "__builtin_HEXAGON_A2_addh_l16_hl"
            case 'l':	 // 1 string to match.
              if (BuiltinName[31] != 'l')
                break;
              return Intrinsic::hexagon_A2_addh_l16_ll;	 // "__builtin_HEXAGON_A2_addh_l16_ll"
            }
            break;
          }
          break;
        case 's':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+22, "ubh_", 4))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 'h':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+27, "16_", 3))
              break;
            switch (BuiltinName[30]) {
            default: break;
            case 'h':	 // 2 strings to match.
              switch (BuiltinName[31]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_subh_h16_hh;	 // "__builtin_HEXAGON_A2_subh_h16_hh"
              case 'l':	 // 1 string to match.
                return Intrinsic::hexagon_A2_subh_h16_hl;	 // "__builtin_HEXAGON_A2_subh_h16_hl"
              }
              break;
            case 'l':	 // 2 strings to match.
              switch (BuiltinName[31]) {
              default: break;
              case 'h':	 // 1 string to match.
                return Intrinsic::hexagon_A2_subh_h16_lh;	 // "__builtin_HEXAGON_A2_subh_h16_lh"
              case 'l':	 // 1 string to match.
                return Intrinsic::hexagon_A2_subh_h16_ll;	 // "__builtin_HEXAGON_A2_subh_h16_ll"
              }
              break;
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "16_", 3))
              break;
            switch (BuiltinName[30]) {
            default: break;
            case 'h':	 // 1 string to match.
              if (BuiltinName[31] != 'l')
                break;
              return Intrinsic::hexagon_A2_subh_l16_hl;	 // "__builtin_HEXAGON_A2_subh_l16_hl"
            case 'l':	 // 1 string to match.
              if (BuiltinName[31] != 'l')
                break;
              return Intrinsic::hexagon_A2_subh_l16_ll;	 // "__builtin_HEXAGON_A2_subh_l16_ll"
            }
            break;
          }
          break;
        case 'v':	 // 2 strings to match.
          if (BuiltinName[22] != 'r')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "ddub_acc", 8))
              break;
            return Intrinsic::hexagon_A2_vraddub_acc;	 // "__builtin_HEXAGON_A2_vraddub_acc"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "adub_acc", 8))
              break;
            return Intrinsic::hexagon_A2_vrsadub_acc;	 // "__builtin_HEXAGON_A2_vrsadub_acc"
          }
          break;
        }
        break;
      case '4':	 // 2 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "oundscheck", 10))
            break;
          return Intrinsic::hexagon_A4_boundscheck;	 // "__builtin_HEXAGON_A4_boundscheck"
        case 'v':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "cmpbeq_any", 10))
            break;
          return Intrinsic::hexagon_A4_vcmpbeq_any;	 // "__builtin_HEXAGON_A4_vcmpbeq_any"
        }
        break;
      }
      break;
    case 'C':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+19, "4_fastcorner9", 13))
        break;
      return Intrinsic::hexagon_C4_fastcorner9;	 // "__builtin_HEXAGON_C4_fastcorner9"
    case 'M':	 // 16 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_", 2))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'm':	 // 12 strings to match.
        switch (BuiltinName[22]) {
        default: break;
        case 'm':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+23, "acu", 3))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "s_rs", 4))
              break;
            switch (BuiltinName[31]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mmacuhs_rs0;	 // "__builtin_HEXAGON_M2_mmacuhs_rs0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mmacuhs_rs1;	 // "__builtin_HEXAGON_M2_mmacuhs_rs1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "s_rs", 4))
              break;
            switch (BuiltinName[31]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mmaculs_rs0;	 // "__builtin_HEXAGON_M2_mmaculs_rs0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mmaculs_rs1;	 // "__builtin_HEXAGON_M2_mmaculs_rs1"
            }
            break;
          }
          break;
        case 'p':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+23, "yud_", 4))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 'h':	 // 4 strings to match.
            switch (BuiltinName[28]) {
            default: break;
            case 'h':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+29, "_s", 2))
                break;
              switch (BuiltinName[31]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_hh_s0;	 // "__builtin_HEXAGON_M2_mpyud_hh_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_hh_s1;	 // "__builtin_HEXAGON_M2_mpyud_hh_s1"
              }
              break;
            case 'l':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+29, "_s", 2))
                break;
              switch (BuiltinName[31]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_hl_s0;	 // "__builtin_HEXAGON_M2_mpyud_hl_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_hl_s1;	 // "__builtin_HEXAGON_M2_mpyud_hl_s1"
              }
              break;
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (BuiltinName[28]) {
            default: break;
            case 'h':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+29, "_s", 2))
                break;
              switch (BuiltinName[31]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_lh_s0;	 // "__builtin_HEXAGON_M2_mpyud_lh_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_lh_s1;	 // "__builtin_HEXAGON_M2_mpyud_lh_s1"
              }
              break;
            case 'l':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+29, "_s", 2))
                break;
              switch (BuiltinName[31]) {
              default: break;
              case '0':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_ll_s0;	 // "__builtin_HEXAGON_M2_mpyud_ll_s0"
              case '1':	 // 1 string to match.
                return Intrinsic::hexagon_M2_mpyud_ll_s1;	 // "__builtin_HEXAGON_M2_mpyud_ll_s1"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'v':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+22, "rcm", 3))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (BuiltinName[26] != 'c')
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 'i':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "_s0c", 4))
              break;
            return Intrinsic::hexagon_M2_vrcmaci_s0c;	 // "__builtin_HEXAGON_M2_vrcmaci_s0c"
          case 'r':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "_s0c", 4))
              break;
            return Intrinsic::hexagon_M2_vrcmacr_s0c;	 // "__builtin_HEXAGON_M2_vrcmacr_s0c"
          }
          break;
        case 'p':	 // 2 strings to match.
          if (BuiltinName[26] != 'y')
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 'i':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "_s0c", 4))
              break;
            return Intrinsic::hexagon_M2_vrcmpyi_s0c;	 // "__builtin_HEXAGON_M2_vrcmpyi_s0c"
          case 'r':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "_s0c", 4))
              break;
            return Intrinsic::hexagon_M2_vrcmpyr_s0c;	 // "__builtin_HEXAGON_M2_vrcmpyr_s0c"
          }
          break;
        }
        break;
      }
      break;
    case 'S':	 // 63 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 56 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 32 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "dasl_rrri", 9))
              break;
            return Intrinsic::hexagon_S2_addasl_rrri;	 // "__builtin_HEXAGON_S2_addasl_rrri"
          case 's':	 // 31 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'l':	 // 15 strings to match.
              if (BuiltinName[24] != '_')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'i':	 // 7 strings to match.
                if (BuiltinName[26] != '_')
                  break;
                switch (BuiltinName[27]) {
                default: break;
                case 'p':	 // 3 strings to match.
                  if (BuiltinName[28] != '_')
                    break;
                  switch (BuiltinName[29]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (BuiltinName[30]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (BuiltinName[31] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_asl_i_p_acc;	 // "__builtin_HEXAGON_S2_asl_i_p_acc"
                    case 'n':	 // 1 string to match.
                      if (BuiltinName[31] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_asl_i_p_and;	 // "__builtin_HEXAGON_S2_asl_i_p_and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_asl_i_p_nac;	 // "__builtin_HEXAGON_S2_asl_i_p_nac"
                  }
                  break;
                case 'r':	 // 4 strings to match.
                  if (BuiltinName[28] != '_')
                    break;
                  switch (BuiltinName[29]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (BuiltinName[30]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (BuiltinName[31] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_asl_i_r_acc;	 // "__builtin_HEXAGON_S2_asl_i_r_acc"
                    case 'n':	 // 1 string to match.
                      if (BuiltinName[31] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_asl_i_r_and;	 // "__builtin_HEXAGON_S2_asl_i_r_and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_asl_i_r_nac;	 // "__builtin_HEXAGON_S2_asl_i_r_nac"
                  case 's':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "at", 2))
                      break;
                    return Intrinsic::hexagon_S2_asl_i_r_sat;	 // "__builtin_HEXAGON_S2_asl_i_r_sat"
                  }
                  break;
                }
                break;
              case 'r':	 // 8 strings to match.
                if (BuiltinName[26] != '_')
                  break;
                switch (BuiltinName[27]) {
                default: break;
                case 'p':	 // 4 strings to match.
                  if (BuiltinName[28] != '_')
                    break;
                  switch (BuiltinName[29]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (BuiltinName[30]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (BuiltinName[31] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_asl_r_p_acc;	 // "__builtin_HEXAGON_S2_asl_r_p_acc"
                    case 'n':	 // 1 string to match.
                      if (BuiltinName[31] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_asl_r_p_and;	 // "__builtin_HEXAGON_S2_asl_r_p_and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_asl_r_p_nac;	 // "__builtin_HEXAGON_S2_asl_r_p_nac"
                  case 'x':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "or", 2))
                      break;
                    return Intrinsic::hexagon_S2_asl_r_p_xor;	 // "__builtin_HEXAGON_S2_asl_r_p_xor"
                  }
                  break;
                case 'r':	 // 4 strings to match.
                  if (BuiltinName[28] != '_')
                    break;
                  switch (BuiltinName[29]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (BuiltinName[30]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (BuiltinName[31] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_asl_r_r_acc;	 // "__builtin_HEXAGON_S2_asl_r_r_acc"
                    case 'n':	 // 1 string to match.
                      if (BuiltinName[31] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_asl_r_r_and;	 // "__builtin_HEXAGON_S2_asl_r_r_and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_asl_r_r_nac;	 // "__builtin_HEXAGON_S2_asl_r_r_nac"
                  case 's':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "at", 2))
                      break;
                    return Intrinsic::hexagon_S2_asl_r_r_sat;	 // "__builtin_HEXAGON_S2_asl_r_r_sat"
                  }
                  break;
                }
                break;
              }
              break;
            case 'r':	 // 16 strings to match.
              if (BuiltinName[24] != '_')
                break;
              switch (BuiltinName[25]) {
              default: break;
              case 'i':	 // 8 strings to match.
                if (BuiltinName[26] != '_')
                  break;
                switch (BuiltinName[27]) {
                default: break;
                case 'p':	 // 4 strings to match.
                  if (BuiltinName[28] != '_')
                    break;
                  switch (BuiltinName[29]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (BuiltinName[30]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (BuiltinName[31] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_asr_i_p_acc;	 // "__builtin_HEXAGON_S2_asr_i_p_acc"
                    case 'n':	 // 1 string to match.
                      if (BuiltinName[31] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_asr_i_p_and;	 // "__builtin_HEXAGON_S2_asr_i_p_and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_asr_i_p_nac;	 // "__builtin_HEXAGON_S2_asr_i_p_nac"
                  case 'r':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "nd", 2))
                      break;
                    return Intrinsic::hexagon_S2_asr_i_p_rnd;	 // "__builtin_HEXAGON_S2_asr_i_p_rnd"
                  }
                  break;
                case 'r':	 // 4 strings to match.
                  if (BuiltinName[28] != '_')
                    break;
                  switch (BuiltinName[29]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (BuiltinName[30]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (BuiltinName[31] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_asr_i_r_acc;	 // "__builtin_HEXAGON_S2_asr_i_r_acc"
                    case 'n':	 // 1 string to match.
                      if (BuiltinName[31] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_asr_i_r_and;	 // "__builtin_HEXAGON_S2_asr_i_r_and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_asr_i_r_nac;	 // "__builtin_HEXAGON_S2_asr_i_r_nac"
                  case 'r':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "nd", 2))
                      break;
                    return Intrinsic::hexagon_S2_asr_i_r_rnd;	 // "__builtin_HEXAGON_S2_asr_i_r_rnd"
                  }
                  break;
                }
                break;
              case 'r':	 // 8 strings to match.
                if (BuiltinName[26] != '_')
                  break;
                switch (BuiltinName[27]) {
                default: break;
                case 'p':	 // 4 strings to match.
                  if (BuiltinName[28] != '_')
                    break;
                  switch (BuiltinName[29]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (BuiltinName[30]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (BuiltinName[31] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_asr_r_p_acc;	 // "__builtin_HEXAGON_S2_asr_r_p_acc"
                    case 'n':	 // 1 string to match.
                      if (BuiltinName[31] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_asr_r_p_and;	 // "__builtin_HEXAGON_S2_asr_r_p_and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_asr_r_p_nac;	 // "__builtin_HEXAGON_S2_asr_r_p_nac"
                  case 'x':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "or", 2))
                      break;
                    return Intrinsic::hexagon_S2_asr_r_p_xor;	 // "__builtin_HEXAGON_S2_asr_r_p_xor"
                  }
                  break;
                case 'r':	 // 4 strings to match.
                  if (BuiltinName[28] != '_')
                    break;
                  switch (BuiltinName[29]) {
                  default: break;
                  case 'a':	 // 2 strings to match.
                    switch (BuiltinName[30]) {
                    default: break;
                    case 'c':	 // 1 string to match.
                      if (BuiltinName[31] != 'c')
                        break;
                      return Intrinsic::hexagon_S2_asr_r_r_acc;	 // "__builtin_HEXAGON_S2_asr_r_r_acc"
                    case 'n':	 // 1 string to match.
                      if (BuiltinName[31] != 'd')
                        break;
                      return Intrinsic::hexagon_S2_asr_r_r_and;	 // "__builtin_HEXAGON_S2_asr_r_r_and"
                    }
                    break;
                  case 'n':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "ac", 2))
                      break;
                    return Intrinsic::hexagon_S2_asr_r_r_nac;	 // "__builtin_HEXAGON_S2_asr_r_r_nac"
                  case 's':	 // 1 string to match.
                    if (memcmp(BuiltinName.data()+30, "at", 2))
                      break;
                    return Intrinsic::hexagon_S2_asr_r_r_sat;	 // "__builtin_HEXAGON_S2_asr_r_r_sat"
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "xtractu_rp", 10))
            break;
          return Intrinsic::hexagon_S2_extractu_rp;	 // "__builtin_HEXAGON_S2_extractu_rp"
        case 'l':	 // 20 strings to match.
          if (BuiltinName[22] != 's')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'l':	 // 7 strings to match.
            if (memcmp(BuiltinName.data()+24, "_r_", 3))
              break;
            switch (BuiltinName[27]) {
            default: break;
            case 'p':	 // 4 strings to match.
              if (BuiltinName[28] != '_')
                break;
              switch (BuiltinName[29]) {
              default: break;
              case 'a':	 // 2 strings to match.
                switch (BuiltinName[30]) {
                default: break;
                case 'c':	 // 1 string to match.
                  if (BuiltinName[31] != 'c')
                    break;
                  return Intrinsic::hexagon_S2_lsl_r_p_acc;	 // "__builtin_HEXAGON_S2_lsl_r_p_acc"
                case 'n':	 // 1 string to match.
                  if (BuiltinName[31] != 'd')
                    break;
                  return Intrinsic::hexagon_S2_lsl_r_p_and;	 // "__builtin_HEXAGON_S2_lsl_r_p_and"
                }
                break;
              case 'n':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+30, "ac", 2))
                  break;
                return Intrinsic::hexagon_S2_lsl_r_p_nac;	 // "__builtin_HEXAGON_S2_lsl_r_p_nac"
              case 'x':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+30, "or", 2))
                  break;
                return Intrinsic::hexagon_S2_lsl_r_p_xor;	 // "__builtin_HEXAGON_S2_lsl_r_p_xor"
              }
              break;
            case 'r':	 // 3 strings to match.
              if (BuiltinName[28] != '_')
                break;
              switch (BuiltinName[29]) {
              default: break;
              case 'a':	 // 2 strings to match.
                switch (BuiltinName[30]) {
                default: break;
                case 'c':	 // 1 string to match.
                  if (BuiltinName[31] != 'c')
                    break;
                  return Intrinsic::hexagon_S2_lsl_r_r_acc;	 // "__builtin_HEXAGON_S2_lsl_r_r_acc"
                case 'n':	 // 1 string to match.
                  if (BuiltinName[31] != 'd')
                    break;
                  return Intrinsic::hexagon_S2_lsl_r_r_and;	 // "__builtin_HEXAGON_S2_lsl_r_r_and"
                }
                break;
              case 'n':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+30, "ac", 2))
                  break;
                return Intrinsic::hexagon_S2_lsl_r_r_nac;	 // "__builtin_HEXAGON_S2_lsl_r_r_nac"
              }
              break;
            }
            break;
          case 'r':	 // 13 strings to match.
            if (BuiltinName[24] != '_')
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'i':	 // 6 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 3 strings to match.
                if (BuiltinName[28] != '_')
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case 'a':	 // 2 strings to match.
                  switch (BuiltinName[30]) {
                  default: break;
                  case 'c':	 // 1 string to match.
                    if (BuiltinName[31] != 'c')
                      break;
                    return Intrinsic::hexagon_S2_lsr_i_p_acc;	 // "__builtin_HEXAGON_S2_lsr_i_p_acc"
                  case 'n':	 // 1 string to match.
                    if (BuiltinName[31] != 'd')
                      break;
                    return Intrinsic::hexagon_S2_lsr_i_p_and;	 // "__builtin_HEXAGON_S2_lsr_i_p_and"
                  }
                  break;
                case 'n':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+30, "ac", 2))
                    break;
                  return Intrinsic::hexagon_S2_lsr_i_p_nac;	 // "__builtin_HEXAGON_S2_lsr_i_p_nac"
                }
                break;
              case 'r':	 // 3 strings to match.
                if (BuiltinName[28] != '_')
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case 'a':	 // 2 strings to match.
                  switch (BuiltinName[30]) {
                  default: break;
                  case 'c':	 // 1 string to match.
                    if (BuiltinName[31] != 'c')
                      break;
                    return Intrinsic::hexagon_S2_lsr_i_r_acc;	 // "__builtin_HEXAGON_S2_lsr_i_r_acc"
                  case 'n':	 // 1 string to match.
                    if (BuiltinName[31] != 'd')
                      break;
                    return Intrinsic::hexagon_S2_lsr_i_r_and;	 // "__builtin_HEXAGON_S2_lsr_i_r_and"
                  }
                  break;
                case 'n':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+30, "ac", 2))
                    break;
                  return Intrinsic::hexagon_S2_lsr_i_r_nac;	 // "__builtin_HEXAGON_S2_lsr_i_r_nac"
                }
                break;
              }
              break;
            case 'r':	 // 7 strings to match.
              if (BuiltinName[26] != '_')
                break;
              switch (BuiltinName[27]) {
              default: break;
              case 'p':	 // 4 strings to match.
                if (BuiltinName[28] != '_')
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case 'a':	 // 2 strings to match.
                  switch (BuiltinName[30]) {
                  default: break;
                  case 'c':	 // 1 string to match.
                    if (BuiltinName[31] != 'c')
                      break;
                    return Intrinsic::hexagon_S2_lsr_r_p_acc;	 // "__builtin_HEXAGON_S2_lsr_r_p_acc"
                  case 'n':	 // 1 string to match.
                    if (BuiltinName[31] != 'd')
                      break;
                    return Intrinsic::hexagon_S2_lsr_r_p_and;	 // "__builtin_HEXAGON_S2_lsr_r_p_and"
                  }
                  break;
                case 'n':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+30, "ac", 2))
                    break;
                  return Intrinsic::hexagon_S2_lsr_r_p_nac;	 // "__builtin_HEXAGON_S2_lsr_r_p_nac"
                case 'x':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+30, "or", 2))
                    break;
                  return Intrinsic::hexagon_S2_lsr_r_p_xor;	 // "__builtin_HEXAGON_S2_lsr_r_p_xor"
                }
                break;
              case 'r':	 // 3 strings to match.
                if (BuiltinName[28] != '_')
                  break;
                switch (BuiltinName[29]) {
                default: break;
                case 'a':	 // 2 strings to match.
                  switch (BuiltinName[30]) {
                  default: break;
                  case 'c':	 // 1 string to match.
                    if (BuiltinName[31] != 'c')
                      break;
                    return Intrinsic::hexagon_S2_lsr_r_r_acc;	 // "__builtin_HEXAGON_S2_lsr_r_r_acc"
                  case 'n':	 // 1 string to match.
                    if (BuiltinName[31] != 'd')
                      break;
                    return Intrinsic::hexagon_S2_lsr_r_r_and;	 // "__builtin_HEXAGON_S2_lsr_r_r_and"
                  }
                  break;
                case 'n':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+30, "ac", 2))
                    break;
                  return Intrinsic::hexagon_S2_lsr_r_r_nac;	 // "__builtin_HEXAGON_S2_lsr_r_r_nac"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 't':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "ogglebit_", 9))
            break;
          switch (BuiltinName[31]) {
          default: break;
          case 'i':	 // 1 string to match.
            return Intrinsic::hexagon_S2_togglebit_i;	 // "__builtin_HEXAGON_S2_togglebit_i"
          case 'r':	 // 1 string to match.
            return Intrinsic::hexagon_S2_togglebit_r;	 // "__builtin_HEXAGON_S2_togglebit_r"
          }
          break;
        case 'v':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "rndpackwhs", 10))
            break;
          return Intrinsic::hexagon_S2_vrndpackwhs;	 // "__builtin_HEXAGON_S2_vrndpackwhs"
        }
        break;
      case '4':	 // 7 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'a':	 // 4 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "di_", 3))
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "sl_ri", 5))
                break;
              return Intrinsic::hexagon_S4_addi_asl_ri;	 // "__builtin_HEXAGON_S4_addi_asl_ri"
            case 'l':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "sr_ri", 5))
                break;
              return Intrinsic::hexagon_S4_addi_lsr_ri;	 // "__builtin_HEXAGON_S4_addi_lsr_ri"
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+23, "di_", 3))
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "sl_ri", 5))
                break;
              return Intrinsic::hexagon_S4_andi_asl_ri;	 // "__builtin_HEXAGON_S4_andi_asl_ri"
            case 'l':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+27, "sr_ri", 5))
                break;
              return Intrinsic::hexagon_S4_andi_lsr_ri;	 // "__builtin_HEXAGON_S4_andi_lsr_ri"
            }
            break;
          }
          break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "xtractp_rp", 10))
            break;
          return Intrinsic::hexagon_S4_extractp_rp;	 // "__builtin_HEXAGON_S4_extractp_rp"
        case 's':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "ubi_", 4))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "sl_ri", 5))
              break;
            return Intrinsic::hexagon_S4_subi_asl_ri;	 // "__builtin_HEXAGON_S4_subi_asl_ri"
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "sr_ri", 5))
              break;
            return Intrinsic::hexagon_S4_subi_lsr_ri;	 // "__builtin_HEXAGON_S4_subi_lsr_ri"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 33:	 // 9 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+19, "4_round_r", 9))
        break;
      switch (BuiltinName[28]) {
      default: break;
      case 'i':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+29, "_sat", 4))
          break;
        return Intrinsic::hexagon_A4_round_ri_sat;	 // "__builtin_HEXAGON_A4_round_ri_sat"
      case 'r':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+29, "_sat", 4))
          break;
        return Intrinsic::hexagon_A4_round_rr_sat;	 // "__builtin_HEXAGON_A4_round_rr_sat"
      }
      break;
    case 'M':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+19, "2_vrcmpys_s1rp", 14))
        break;
      return Intrinsic::hexagon_M2_vrcmpys_s1rp;	 // "__builtin_HEXAGON_M2_vrcmpys_s1rp"
    case 'S':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_", 2))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "sl_i_", 5))
          break;
        switch (BuiltinName[27]) {
        default: break;
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+28, "_xacc", 5))
            break;
          return Intrinsic::hexagon_S2_asl_i_p_xacc;	 // "__builtin_HEXAGON_S2_asl_i_p_xacc"
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+28, "_xacc", 5))
            break;
          return Intrinsic::hexagon_S2_asl_i_r_xacc;	 // "__builtin_HEXAGON_S2_asl_i_r_xacc"
        }
        break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "einterleave", 11))
          break;
        return Intrinsic::hexagon_S2_deinterleave;	 // "__builtin_HEXAGON_S2_deinterleave"
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "xtractup_rp", 11))
          break;
        return Intrinsic::hexagon_S2_extractup_rp;	 // "__builtin_HEXAGON_S2_extractup_rp"
      case 'l':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "sr_i_", 5))
          break;
        switch (BuiltinName[27]) {
        default: break;
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+28, "_xacc", 5))
            break;
          return Intrinsic::hexagon_S2_lsr_i_p_xacc;	 // "__builtin_HEXAGON_S2_lsr_i_p_xacc"
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+28, "_xacc", 5))
            break;
          return Intrinsic::hexagon_S2_lsr_i_r_xacc;	 // "__builtin_HEXAGON_S2_lsr_i_r_xacc"
        }
        break;
      }
      break;
    }
    break;
  case 34:	 // 41 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'M':	 // 38 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 35 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'm':	 // 33 strings to match.
          if (memcmp(BuiltinName.data()+22, "py_", 3))
            break;
          switch (BuiltinName[25]) {
          default: break;
          case 'a':	 // 8 strings to match.
            if (memcmp(BuiltinName.data()+26, "cc_", 3))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 'h':	 // 4 strings to match.
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_acc_hh_s0;	 // "__builtin_HEXAGON_M2_mpy_acc_hh_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_acc_hh_s1;	 // "__builtin_HEXAGON_M2_mpy_acc_hh_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_acc_hl_s0;	 // "__builtin_HEXAGON_M2_mpy_acc_hl_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_acc_hl_s1;	 // "__builtin_HEXAGON_M2_mpy_acc_hl_s1"
                }
                break;
              }
              break;
            case 'l':	 // 4 strings to match.
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_acc_lh_s0;	 // "__builtin_HEXAGON_M2_mpy_acc_lh_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_acc_lh_s1;	 // "__builtin_HEXAGON_M2_mpy_acc_lh_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_acc_ll_s0;	 // "__builtin_HEXAGON_M2_mpy_acc_ll_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_acc_ll_s1;	 // "__builtin_HEXAGON_M2_mpy_acc_ll_s1"
                }
                break;
              }
              break;
            }
            break;
          case 'n':	 // 8 strings to match.
            if (memcmp(BuiltinName.data()+26, "ac_", 3))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 'h':	 // 4 strings to match.
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_nac_hh_s0;	 // "__builtin_HEXAGON_M2_mpy_nac_hh_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_nac_hh_s1;	 // "__builtin_HEXAGON_M2_mpy_nac_hh_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_nac_hl_s0;	 // "__builtin_HEXAGON_M2_mpy_nac_hl_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_nac_hl_s1;	 // "__builtin_HEXAGON_M2_mpy_nac_hl_s1"
                }
                break;
              }
              break;
            case 'l':	 // 4 strings to match.
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_nac_lh_s0;	 // "__builtin_HEXAGON_M2_mpy_nac_lh_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_nac_lh_s1;	 // "__builtin_HEXAGON_M2_mpy_nac_lh_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_nac_ll_s0;	 // "__builtin_HEXAGON_M2_mpy_nac_ll_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_nac_ll_s1;	 // "__builtin_HEXAGON_M2_mpy_nac_ll_s1"
                }
                break;
              }
              break;
            }
            break;
          case 'r':	 // 8 strings to match.
            if (memcmp(BuiltinName.data()+26, "nd_", 3))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 'h':	 // 4 strings to match.
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_rnd_hh_s0;	 // "__builtin_HEXAGON_M2_mpy_rnd_hh_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_rnd_hh_s1;	 // "__builtin_HEXAGON_M2_mpy_rnd_hh_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_rnd_hl_s0;	 // "__builtin_HEXAGON_M2_mpy_rnd_hl_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_rnd_hl_s1;	 // "__builtin_HEXAGON_M2_mpy_rnd_hl_s1"
                }
                break;
              }
              break;
            case 'l':	 // 4 strings to match.
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_rnd_lh_s0;	 // "__builtin_HEXAGON_M2_mpy_rnd_lh_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_rnd_lh_s1;	 // "__builtin_HEXAGON_M2_mpy_rnd_lh_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_rnd_ll_s0;	 // "__builtin_HEXAGON_M2_mpy_rnd_ll_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_rnd_ll_s1;	 // "__builtin_HEXAGON_M2_mpy_rnd_ll_s1"
                }
                break;
              }
              break;
            }
            break;
          case 's':	 // 8 strings to match.
            if (memcmp(BuiltinName.data()+26, "at_", 3))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 'h':	 // 4 strings to match.
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_sat_hh_s0;	 // "__builtin_HEXAGON_M2_mpy_sat_hh_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_sat_hh_s1;	 // "__builtin_HEXAGON_M2_mpy_sat_hh_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_sat_hl_s0;	 // "__builtin_HEXAGON_M2_mpy_sat_hl_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_sat_hl_s1;	 // "__builtin_HEXAGON_M2_mpy_sat_hl_s1"
                }
                break;
              }
              break;
            case 'l':	 // 4 strings to match.
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_sat_lh_s0;	 // "__builtin_HEXAGON_M2_mpy_sat_lh_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_sat_lh_s1;	 // "__builtin_HEXAGON_M2_mpy_sat_lh_s1"
                }
                break;
              case 'l':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+31, "_s", 2))
                  break;
                switch (BuiltinName[33]) {
                default: break;
                case '0':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_sat_ll_s0;	 // "__builtin_HEXAGON_M2_mpy_sat_ll_s0"
                case '1':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_mpy_sat_ll_s1;	 // "__builtin_HEXAGON_M2_mpy_sat_ll_s1"
                }
                break;
              }
              break;
            }
            break;
          case 'u':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "p_s1_sat", 8))
              break;
            return Intrinsic::hexagon_M2_mpy_up_s1_sat;	 // "__builtin_HEXAGON_M2_mpy_up_s1_sat"
          }
          break;
        case 'v':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+22, "mpy2s_s", 7))
            break;
          switch (BuiltinName[29]) {
          default: break;
          case '0':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+30, "pack", 4))
              break;
            return Intrinsic::hexagon_M2_vmpy2s_s0pack;	 // "__builtin_HEXAGON_M2_vmpy2s_s0pack"
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+30, "pack", 4))
              break;
            return Intrinsic::hexagon_M2_vmpy2s_s1pack;	 // "__builtin_HEXAGON_M2_vmpy2s_s1pack"
          }
          break;
        }
        break;
      case '4':	 // 3 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'm':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "c_up_s1_sat", 11))
              break;
            return Intrinsic::hexagon_M4_mac_up_s1_sat;	 // "__builtin_HEXAGON_M4_mac_up_s1_sat"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "yri_addr_u2", 11))
              break;
            return Intrinsic::hexagon_M4_mpyri_addr_u2;	 // "__builtin_HEXAGON_M4_mpyri_addr_u2"
          }
          break;
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "ac_up_s1_sat", 12))
            break;
          return Intrinsic::hexagon_M4_nac_up_s1_sat;	 // "__builtin_HEXAGON_M4_nac_up_s1_sat"
        }
        break;
      }
      break;
    case 'S':	 // 3 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+20, "_vsat", 5))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'h':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+26, "b_nopack", 8))
            break;
          return Intrinsic::hexagon_S2_vsathb_nopack;	 // "__builtin_HEXAGON_S2_vsathb_nopack"
        case 'w':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+26, "h_nopack", 8))
            break;
          return Intrinsic::hexagon_S2_vsatwh_nopack;	 // "__builtin_HEXAGON_S2_vsatwh_nopack"
        }
        break;
      case '4':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "_vrcrotate_acc", 14))
          break;
        return Intrinsic::hexagon_S4_vrcrotate_acc;	 // "__builtin_HEXAGON_S4_vrcrotate_acc"
      }
      break;
    }
    break;
  case 35:	 // 64 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'F':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_conv_", 7))
        break;
      switch (BuiltinName[26]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+27, "f2", 2))
          break;
        switch (BuiltinName[29]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+30, "_chop", 5))
            break;
          return Intrinsic::hexagon_F2_conv_df2d_chop;	 // "__builtin_HEXAGON_F2_conv_df2d_chop"
        case 'w':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+30, "_chop", 5))
            break;
          return Intrinsic::hexagon_F2_conv_df2w_chop;	 // "__builtin_HEXAGON_F2_conv_df2w_chop"
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+27, "f2", 2))
          break;
        switch (BuiltinName[29]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+30, "_chop", 5))
            break;
          return Intrinsic::hexagon_F2_conv_sf2d_chop;	 // "__builtin_HEXAGON_F2_conv_sf2d_chop"
        case 'w':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+30, "_chop", 5))
            break;
          return Intrinsic::hexagon_F2_conv_sf2w_chop;	 // "__builtin_HEXAGON_F2_conv_sf2w_chop"
        }
        break;
      }
      break;
    case 'M':	 // 56 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case '2':	 // 52 strings to match.
        if (BuiltinName[20] != '_')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'd':	 // 5 strings to match.
          if (memcmp(BuiltinName.data()+22, "pmpy", 4))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 's':	 // 3 strings to match.
            if (memcmp(BuiltinName.data()+27, "s_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "cc_s0", 5))
                break;
              return Intrinsic::hexagon_M2_dpmpyss_acc_s0;	 // "__builtin_HEXAGON_M2_dpmpyss_acc_s0"
            case 'n':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ac_s0", 5))
                break;
              return Intrinsic::hexagon_M2_dpmpyss_nac_s0;	 // "__builtin_HEXAGON_M2_dpmpyss_nac_s0"
            case 'r':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "nd_s0", 5))
                break;
              return Intrinsic::hexagon_M2_dpmpyss_rnd_s0;	 // "__builtin_HEXAGON_M2_dpmpyss_rnd_s0"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+27, "u_", 2))
              break;
            switch (BuiltinName[29]) {
            default: break;
            case 'a':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "cc_s0", 5))
                break;
              return Intrinsic::hexagon_M2_dpmpyuu_acc_s0;	 // "__builtin_HEXAGON_M2_dpmpyuu_acc_s0"
            case 'n':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+30, "ac_s0", 5))
                break;
              return Intrinsic::hexagon_M2_dpmpyuu_nac_s0;	 // "__builtin_HEXAGON_M2_dpmpyuu_nac_s0"
            }
            break;
          }
          break;
        case 'm':	 // 40 strings to match.
          if (memcmp(BuiltinName.data()+22, "py", 2))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'd':	 // 24 strings to match.
            if (BuiltinName[25] != '_')
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'a':	 // 8 strings to match.
              if (memcmp(BuiltinName.data()+27, "cc_", 3))
                break;
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (BuiltinName[31]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_acc_hh_s0;	 // "__builtin_HEXAGON_M2_mpyd_acc_hh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_acc_hh_s1;	 // "__builtin_HEXAGON_M2_mpyd_acc_hh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_acc_hl_s0;	 // "__builtin_HEXAGON_M2_mpyd_acc_hl_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_acc_hl_s1;	 // "__builtin_HEXAGON_M2_mpyd_acc_hl_s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (BuiltinName[31]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_acc_lh_s0;	 // "__builtin_HEXAGON_M2_mpyd_acc_lh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_acc_lh_s1;	 // "__builtin_HEXAGON_M2_mpyd_acc_lh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_acc_ll_s0;	 // "__builtin_HEXAGON_M2_mpyd_acc_ll_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_acc_ll_s1;	 // "__builtin_HEXAGON_M2_mpyd_acc_ll_s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'n':	 // 8 strings to match.
              if (memcmp(BuiltinName.data()+27, "ac_", 3))
                break;
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (BuiltinName[31]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_nac_hh_s0;	 // "__builtin_HEXAGON_M2_mpyd_nac_hh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_nac_hh_s1;	 // "__builtin_HEXAGON_M2_mpyd_nac_hh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_nac_hl_s0;	 // "__builtin_HEXAGON_M2_mpyd_nac_hl_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_nac_hl_s1;	 // "__builtin_HEXAGON_M2_mpyd_nac_hl_s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (BuiltinName[31]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_nac_lh_s0;	 // "__builtin_HEXAGON_M2_mpyd_nac_lh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_nac_lh_s1;	 // "__builtin_HEXAGON_M2_mpyd_nac_lh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_nac_ll_s0;	 // "__builtin_HEXAGON_M2_mpyd_nac_ll_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_nac_ll_s1;	 // "__builtin_HEXAGON_M2_mpyd_nac_ll_s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'r':	 // 8 strings to match.
              if (memcmp(BuiltinName.data()+27, "nd_", 3))
                break;
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (BuiltinName[31]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_rnd_hh_s0;	 // "__builtin_HEXAGON_M2_mpyd_rnd_hh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_rnd_hh_s1;	 // "__builtin_HEXAGON_M2_mpyd_rnd_hh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_rnd_hl_s0;	 // "__builtin_HEXAGON_M2_mpyd_rnd_hl_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_rnd_hl_s1;	 // "__builtin_HEXAGON_M2_mpyd_rnd_hl_s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (BuiltinName[31]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_rnd_lh_s0;	 // "__builtin_HEXAGON_M2_mpyd_rnd_lh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_rnd_lh_s1;	 // "__builtin_HEXAGON_M2_mpyd_rnd_lh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_rnd_ll_s0;	 // "__builtin_HEXAGON_M2_mpyd_rnd_ll_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyd_rnd_ll_s1;	 // "__builtin_HEXAGON_M2_mpyd_rnd_ll_s1"
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          case 'u':	 // 16 strings to match.
            if (BuiltinName[25] != '_')
              break;
            switch (BuiltinName[26]) {
            default: break;
            case 'a':	 // 8 strings to match.
              if (memcmp(BuiltinName.data()+27, "cc_", 3))
                break;
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (BuiltinName[31]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_acc_hh_s0;	 // "__builtin_HEXAGON_M2_mpyu_acc_hh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_acc_hh_s1;	 // "__builtin_HEXAGON_M2_mpyu_acc_hh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_acc_hl_s0;	 // "__builtin_HEXAGON_M2_mpyu_acc_hl_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_acc_hl_s1;	 // "__builtin_HEXAGON_M2_mpyu_acc_hl_s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (BuiltinName[31]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_acc_lh_s0;	 // "__builtin_HEXAGON_M2_mpyu_acc_lh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_acc_lh_s1;	 // "__builtin_HEXAGON_M2_mpyu_acc_lh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_acc_ll_s0;	 // "__builtin_HEXAGON_M2_mpyu_acc_ll_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_acc_ll_s1;	 // "__builtin_HEXAGON_M2_mpyu_acc_ll_s1"
                  }
                  break;
                }
                break;
              }
              break;
            case 'n':	 // 8 strings to match.
              if (memcmp(BuiltinName.data()+27, "ac_", 3))
                break;
              switch (BuiltinName[30]) {
              default: break;
              case 'h':	 // 4 strings to match.
                switch (BuiltinName[31]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_nac_hh_s0;	 // "__builtin_HEXAGON_M2_mpyu_nac_hh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_nac_hh_s1;	 // "__builtin_HEXAGON_M2_mpyu_nac_hh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_nac_hl_s0;	 // "__builtin_HEXAGON_M2_mpyu_nac_hl_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_nac_hl_s1;	 // "__builtin_HEXAGON_M2_mpyu_nac_hl_s1"
                  }
                  break;
                }
                break;
              case 'l':	 // 4 strings to match.
                switch (BuiltinName[31]) {
                default: break;
                case 'h':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_nac_lh_s0;	 // "__builtin_HEXAGON_M2_mpyu_nac_lh_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_nac_lh_s1;	 // "__builtin_HEXAGON_M2_mpyu_nac_lh_s1"
                  }
                  break;
                case 'l':	 // 2 strings to match.
                  if (memcmp(BuiltinName.data()+32, "_s", 2))
                    break;
                  switch (BuiltinName[34]) {
                  default: break;
                  case '0':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_nac_ll_s0;	 // "__builtin_HEXAGON_M2_mpyu_nac_ll_s0"
                  case '1':	 // 1 string to match.
                    return Intrinsic::hexagon_M2_mpyu_nac_ll_s1;	 // "__builtin_HEXAGON_M2_mpyu_nac_ll_s1"
                  }
                  break;
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 'v':	 // 7 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case 'c':	 // 6 strings to match.
            if (BuiltinName[23] != 'm')
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+25, "c_s0_sat_", 9))
                break;
              switch (BuiltinName[34]) {
              default: break;
              case 'i':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vcmac_s0_sat_i;	 // "__builtin_HEXAGON_M2_vcmac_s0_sat_i"
              case 'r':	 // 1 string to match.
                return Intrinsic::hexagon_M2_vcmac_s0_sat_r;	 // "__builtin_HEXAGON_M2_vcmac_s0_sat_r"
              }
              break;
            case 'p':	 // 4 strings to match.
              if (memcmp(BuiltinName.data()+25, "y_s", 3))
                break;
              switch (BuiltinName[28]) {
              default: break;
              case '0':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+29, "_sat_", 5))
                  break;
                switch (BuiltinName[34]) {
                default: break;
                case 'i':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vcmpy_s0_sat_i;	 // "__builtin_HEXAGON_M2_vcmpy_s0_sat_i"
                case 'r':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vcmpy_s0_sat_r;	 // "__builtin_HEXAGON_M2_vcmpy_s0_sat_r"
                }
                break;
              case '1':	 // 2 strings to match.
                if (memcmp(BuiltinName.data()+29, "_sat_", 5))
                  break;
                switch (BuiltinName[34]) {
                default: break;
                case 'i':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vcmpy_s1_sat_i;	 // "__builtin_HEXAGON_M2_vcmpy_s1_sat_i"
                case 'r':	 // 1 string to match.
                  return Intrinsic::hexagon_M2_vcmpy_s1_sat_r;	 // "__builtin_HEXAGON_M2_vcmpy_s1_sat_r"
                }
                break;
              }
              break;
            }
            break;
          case 'r':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "cmpys_acc_s1", 12))
              break;
            return Intrinsic::hexagon_M2_vrcmpys_acc_s1;	 // "__builtin_HEXAGON_M2_vrcmpys_acc_s1"
          }
          break;
        }
        break;
      case '4':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+20, "_vrmpy", 6))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'e':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+27, "h_acc_s", 7))
            break;
          switch (BuiltinName[34]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M4_vrmpyeh_acc_s0;	 // "__builtin_HEXAGON_M4_vrmpyeh_acc_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M4_vrmpyeh_acc_s1;	 // "__builtin_HEXAGON_M4_vrmpyeh_acc_s1"
          }
          break;
        case 'o':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+27, "h_acc_s", 7))
            break;
          switch (BuiltinName[34]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M4_vrmpyoh_acc_s0;	 // "__builtin_HEXAGON_M4_vrmpyoh_acc_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M4_vrmpyoh_acc_s1;	 // "__builtin_HEXAGON_M4_vrmpyoh_acc_s1"
          }
          break;
        }
        break;
      }
      break;
    case 'S':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_", 2))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "sr_", 3))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'i':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+26, "_svw_trun", 9))
            break;
          return Intrinsic::hexagon_S2_asr_i_svw_trun;	 // "__builtin_HEXAGON_S2_asr_i_svw_trun"
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+26, "_svw_trun", 9))
            break;
          return Intrinsic::hexagon_S2_asr_r_svw_trun;	 // "__builtin_HEXAGON_S2_asr_r_svw_trun"
        }
        break;
      case 'v':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "sat", 3))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'h':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+26, "ub_nopack", 9))
            break;
          return Intrinsic::hexagon_S2_vsathub_nopack;	 // "__builtin_HEXAGON_S2_vsathub_nopack"
        case 'w':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+26, "uh_nopack", 9))
            break;
          return Intrinsic::hexagon_S2_vsatwuh_nopack;	 // "__builtin_HEXAGON_S2_vsatwuh_nopack"
        }
        break;
      }
      break;
    }
    break;
  case 36:	 // 33 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'A':	 // 12 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_", 2))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'a':	 // 6 strings to match.
        if (memcmp(BuiltinName.data()+22, "ddh_", 4))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'h':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
            break;
          switch (BuiltinName[34]) {
          default: break;
          case 'h':	 // 2 strings to match.
            switch (BuiltinName[35]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_A2_addh_h16_sat_hh;	 // "__builtin_HEXAGON_A2_addh_h16_sat_hh"
            case 'l':	 // 1 string to match.
              return Intrinsic::hexagon_A2_addh_h16_sat_hl;	 // "__builtin_HEXAGON_A2_addh_h16_sat_hl"
            }
            break;
          case 'l':	 // 2 strings to match.
            switch (BuiltinName[35]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_A2_addh_h16_sat_lh;	 // "__builtin_HEXAGON_A2_addh_h16_sat_lh"
            case 'l':	 // 1 string to match.
              return Intrinsic::hexagon_A2_addh_h16_sat_ll;	 // "__builtin_HEXAGON_A2_addh_h16_sat_ll"
            }
            break;
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
            break;
          switch (BuiltinName[34]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (BuiltinName[35] != 'l')
              break;
            return Intrinsic::hexagon_A2_addh_l16_sat_hl;	 // "__builtin_HEXAGON_A2_addh_l16_sat_hl"
          case 'l':	 // 1 string to match.
            if (BuiltinName[35] != 'l')
              break;
            return Intrinsic::hexagon_A2_addh_l16_sat_ll;	 // "__builtin_HEXAGON_A2_addh_l16_sat_ll"
          }
          break;
        }
        break;
      case 's':	 // 6 strings to match.
        if (memcmp(BuiltinName.data()+22, "ubh_", 4))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'h':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
            break;
          switch (BuiltinName[34]) {
          default: break;
          case 'h':	 // 2 strings to match.
            switch (BuiltinName[35]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_A2_subh_h16_sat_hh;	 // "__builtin_HEXAGON_A2_subh_h16_sat_hh"
            case 'l':	 // 1 string to match.
              return Intrinsic::hexagon_A2_subh_h16_sat_hl;	 // "__builtin_HEXAGON_A2_subh_h16_sat_hl"
            }
            break;
          case 'l':	 // 2 strings to match.
            switch (BuiltinName[35]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::hexagon_A2_subh_h16_sat_lh;	 // "__builtin_HEXAGON_A2_subh_h16_sat_lh"
            case 'l':	 // 1 string to match.
              return Intrinsic::hexagon_A2_subh_h16_sat_ll;	 // "__builtin_HEXAGON_A2_subh_h16_sat_ll"
            }
            break;
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
            break;
          switch (BuiltinName[34]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (BuiltinName[35] != 'l')
              break;
            return Intrinsic::hexagon_A2_subh_l16_sat_hl;	 // "__builtin_HEXAGON_A2_subh_l16_sat_hl"
          case 'l':	 // 1 string to match.
            if (BuiltinName[35] != 'l')
              break;
            return Intrinsic::hexagon_A2_subh_l16_sat_ll;	 // "__builtin_HEXAGON_A2_subh_l16_sat_ll"
          }
          break;
        }
        break;
      }
      break;
    case 'C':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+19, "4_fastcorner9_not", 17))
        break;
      return Intrinsic::hexagon_C4_fastcorner9_not;	 // "__builtin_HEXAGON_C4_fastcorner9_not"
    case 'F':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_conv_", 7))
        break;
      switch (BuiltinName[26]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+27, "f2u", 3))
          break;
        switch (BuiltinName[30]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+31, "_chop", 5))
            break;
          return Intrinsic::hexagon_F2_conv_df2ud_chop;	 // "__builtin_HEXAGON_F2_conv_df2ud_chop"
        case 'w':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+31, "_chop", 5))
            break;
          return Intrinsic::hexagon_F2_conv_df2uw_chop;	 // "__builtin_HEXAGON_F2_conv_df2uw_chop"
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+27, "f2u", 3))
          break;
        switch (BuiltinName[30]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+31, "_chop", 5))
            break;
          return Intrinsic::hexagon_F2_conv_sf2ud_chop;	 // "__builtin_HEXAGON_F2_conv_sf2ud_chop"
        case 'w':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+31, "_chop", 5))
            break;
          return Intrinsic::hexagon_F2_conv_sf2uw_chop;	 // "__builtin_HEXAGON_F2_conv_sf2uw_chop"
        }
        break;
      }
      break;
    case 'M':	 // 16 strings to match.
      if (memcmp(BuiltinName.data()+19, "2_mpyud_", 8))
        break;
      switch (BuiltinName[27]) {
      default: break;
      case 'a':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+28, "cc_", 3))
          break;
        switch (BuiltinName[31]) {
        default: break;
        case 'h':	 // 4 strings to match.
          switch (BuiltinName[32]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+33, "_s", 2))
              break;
            switch (BuiltinName[35]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_acc_hh_s0;	 // "__builtin_HEXAGON_M2_mpyud_acc_hh_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_acc_hh_s1;	 // "__builtin_HEXAGON_M2_mpyud_acc_hh_s1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+33, "_s", 2))
              break;
            switch (BuiltinName[35]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_acc_hl_s0;	 // "__builtin_HEXAGON_M2_mpyud_acc_hl_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_acc_hl_s1;	 // "__builtin_HEXAGON_M2_mpyud_acc_hl_s1"
            }
            break;
          }
          break;
        case 'l':	 // 4 strings to match.
          switch (BuiltinName[32]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+33, "_s", 2))
              break;
            switch (BuiltinName[35]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_acc_lh_s0;	 // "__builtin_HEXAGON_M2_mpyud_acc_lh_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_acc_lh_s1;	 // "__builtin_HEXAGON_M2_mpyud_acc_lh_s1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+33, "_s", 2))
              break;
            switch (BuiltinName[35]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_acc_ll_s0;	 // "__builtin_HEXAGON_M2_mpyud_acc_ll_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_acc_ll_s1;	 // "__builtin_HEXAGON_M2_mpyud_acc_ll_s1"
            }
            break;
          }
          break;
        }
        break;
      case 'n':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+28, "ac_", 3))
          break;
        switch (BuiltinName[31]) {
        default: break;
        case 'h':	 // 4 strings to match.
          switch (BuiltinName[32]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+33, "_s", 2))
              break;
            switch (BuiltinName[35]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_nac_hh_s0;	 // "__builtin_HEXAGON_M2_mpyud_nac_hh_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_nac_hh_s1;	 // "__builtin_HEXAGON_M2_mpyud_nac_hh_s1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+33, "_s", 2))
              break;
            switch (BuiltinName[35]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_nac_hl_s0;	 // "__builtin_HEXAGON_M2_mpyud_nac_hl_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_nac_hl_s1;	 // "__builtin_HEXAGON_M2_mpyud_nac_hl_s1"
            }
            break;
          }
          break;
        case 'l':	 // 4 strings to match.
          switch (BuiltinName[32]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+33, "_s", 2))
              break;
            switch (BuiltinName[35]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_nac_lh_s0;	 // "__builtin_HEXAGON_M2_mpyud_nac_lh_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_nac_lh_s1;	 // "__builtin_HEXAGON_M2_mpyud_nac_lh_s1"
            }
            break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+33, "_s", 2))
              break;
            switch (BuiltinName[35]) {
            default: break;
            case '0':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_nac_ll_s0;	 // "__builtin_HEXAGON_M2_mpyud_nac_ll_s0"
            case '1':	 // 1 string to match.
              return Intrinsic::hexagon_M2_mpyud_nac_ll_s1;	 // "__builtin_HEXAGON_M2_mpyud_nac_ll_s1"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 38:	 // 24 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_M2_mpy_", 25))
      break;
    switch (BuiltinName[25]) {
    default: break;
    case 'a':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+26, "cc_sat_", 7))
        break;
      switch (BuiltinName[33]) {
      default: break;
      case 'h':	 // 4 strings to match.
        switch (BuiltinName[34]) {
        default: break;
        case 'h':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s0;	 // "__builtin_HEXAGON_M2_mpy_acc_sat_hh_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s1;	 // "__builtin_HEXAGON_M2_mpy_acc_sat_hh_s1"
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s0;	 // "__builtin_HEXAGON_M2_mpy_acc_sat_hl_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s1;	 // "__builtin_HEXAGON_M2_mpy_acc_sat_hl_s1"
          }
          break;
        }
        break;
      case 'l':	 // 4 strings to match.
        switch (BuiltinName[34]) {
        default: break;
        case 'h':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s0;	 // "__builtin_HEXAGON_M2_mpy_acc_sat_lh_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s1;	 // "__builtin_HEXAGON_M2_mpy_acc_sat_lh_s1"
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s0;	 // "__builtin_HEXAGON_M2_mpy_acc_sat_ll_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s1;	 // "__builtin_HEXAGON_M2_mpy_acc_sat_ll_s1"
          }
          break;
        }
        break;
      }
      break;
    case 'n':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+26, "ac_sat_", 7))
        break;
      switch (BuiltinName[33]) {
      default: break;
      case 'h':	 // 4 strings to match.
        switch (BuiltinName[34]) {
        default: break;
        case 'h':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s0;	 // "__builtin_HEXAGON_M2_mpy_nac_sat_hh_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s1;	 // "__builtin_HEXAGON_M2_mpy_nac_sat_hh_s1"
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s0;	 // "__builtin_HEXAGON_M2_mpy_nac_sat_hl_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s1;	 // "__builtin_HEXAGON_M2_mpy_nac_sat_hl_s1"
          }
          break;
        }
        break;
      case 'l':	 // 4 strings to match.
        switch (BuiltinName[34]) {
        default: break;
        case 'h':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s0;	 // "__builtin_HEXAGON_M2_mpy_nac_sat_lh_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s1;	 // "__builtin_HEXAGON_M2_mpy_nac_sat_lh_s1"
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s0;	 // "__builtin_HEXAGON_M2_mpy_nac_sat_ll_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s1;	 // "__builtin_HEXAGON_M2_mpy_nac_sat_ll_s1"
          }
          break;
        }
        break;
      }
      break;
    case 's':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+26, "at_rnd_", 7))
        break;
      switch (BuiltinName[33]) {
      default: break;
      case 'h':	 // 4 strings to match.
        switch (BuiltinName[34]) {
        default: break;
        case 'h':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s0;	 // "__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s1;	 // "__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s1"
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s0;	 // "__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s1;	 // "__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s1"
          }
          break;
        }
        break;
      case 'l':	 // 4 strings to match.
        switch (BuiltinName[34]) {
        default: break;
        case 'h':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s0;	 // "__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s1;	 // "__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s1"
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+35, "_s", 2))
            break;
          switch (BuiltinName[37]) {
          default: break;
          case '0':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s0;	 // "__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s0"
          case '1':	 // 1 string to match.
            return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s1;	 // "__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s1"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 40:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S5_vasrhrnd_goodsyntax", 40))
      break;
    return Intrinsic::hexagon_S5_vasrhrnd_goodsyntax;	 // "__builtin_HEXAGON_S5_vasrhrnd_goodsyntax"
  case 41:	 // 4 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S2_tableidx", 29))
      break;
    switch (BuiltinName[29]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
        break;
      return Intrinsic::hexagon_S2_tableidxb_goodsyntax;	 // "__builtin_HEXAGON_S2_tableidxb_goodsyntax"
    case 'd':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
        break;
      return Intrinsic::hexagon_S2_tableidxd_goodsyntax;	 // "__builtin_HEXAGON_S2_tableidxd_goodsyntax"
    case 'h':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
        break;
      return Intrinsic::hexagon_S2_tableidxh_goodsyntax;	 // "__builtin_HEXAGON_S2_tableidxh_goodsyntax"
    case 'w':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
        break;
      return Intrinsic::hexagon_S2_tableidxw_goodsyntax;	 // "__builtin_HEXAGON_S2_tableidxw_goodsyntax"
    }
    break;
  case 43:	 // 2 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S2_asr_i_", 27))
      break;
    switch (BuiltinName[27]) {
    default: break;
    case 'p':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+28, "_rnd_goodsyntax", 15))
        break;
      return Intrinsic::hexagon_S2_asr_i_p_rnd_goodsyntax;	 // "__builtin_HEXAGON_S2_asr_i_p_rnd_goodsyntax"
    case 'r':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+28, "_rnd_goodsyntax", 15))
        break;
      return Intrinsic::hexagon_S2_asr_i_r_rnd_goodsyntax;	 // "__builtin_HEXAGON_S2_asr_i_r_rnd_goodsyntax"
    }
    break;
  case 46:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax", 46))
      break;
    return Intrinsic::hexagon_S5_asrhub_rnd_sat_goodsyntax;	 // "__builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax"
  }
  }
  if (TargetPrefix == "mips") {
  switch (BuiltinName.size()) {
  default: break;
  case 18:	 // 17 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_m", 11))
      break;
    switch (BuiltinName[11]) {
    default: break;
    case 'i':	 // 3 strings to match.
      if (memcmp(BuiltinName.data()+12, "ps_l", 4))
        break;
      switch (BuiltinName[16]) {
      default: break;
      case 'h':	 // 1 string to match.
        if (BuiltinName[17] != 'x')
          break;
        return Intrinsic::mips_lhx;	 // "__builtin_mips_lhx"
      case 's':	 // 1 string to match.
        if (BuiltinName[17] != 'a')
          break;
        return Intrinsic::mips_lsa;	 // "__builtin_mips_lsa"
      case 'w':	 // 1 string to match.
        if (BuiltinName[17] != 'x')
          break;
        return Intrinsic::mips_lwx;	 // "__builtin_mips_lwx"
      }
      break;
    case 's':	 // 14 strings to match.
      if (memcmp(BuiltinName.data()+12, "a_", 2))
        break;
      switch (BuiltinName[14]) {
      default: break;
      case 'b':	 // 5 strings to match.
        if (memcmp(BuiltinName.data()+15, "z_", 2))
          break;
        switch (BuiltinName[17]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_bz_b;	 // "__builtin_msa_bz_b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_bz_d;	 // "__builtin_msa_bz_d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_bz_h;	 // "__builtin_msa_bz_h"
        case 'v':	 // 1 string to match.
          return Intrinsic::mips_bz_v;	 // "__builtin_msa_bz_v"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_bz_w;	 // "__builtin_msa_bz_w"
        }
        break;
      case 'l':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+15, "d_", 2))
          break;
        switch (BuiltinName[17]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_ld_b;	 // "__builtin_msa_ld_b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_ld_d;	 // "__builtin_msa_ld_d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_ld_h;	 // "__builtin_msa_ld_h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_ld_w;	 // "__builtin_msa_ld_w"
        }
        break;
      case 'o':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+15, "r_v", 3))
          break;
        return Intrinsic::mips_or_v;	 // "__builtin_msa_or_v"
      case 's':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+15, "t_", 2))
          break;
        switch (BuiltinName[17]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_st_b;	 // "__builtin_msa_st_b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_st_d;	 // "__builtin_msa_st_d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_st_h;	 // "__builtin_msa_st_h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_st_w;	 // "__builtin_msa_st_w"
        }
        break;
      }
      break;
    }
    break;
  case 19:	 // 46 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_m", 11))
      break;
    switch (BuiltinName[11]) {
    default: break;
    case 'i':	 // 7 strings to match.
      if (memcmp(BuiltinName.data()+12, "ps_", 3))
        break;
      switch (BuiltinName[15]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "lsa", 3))
          break;
        return Intrinsic::mips_dlsa;	 // "__builtin_mips_dlsa"
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "xtp", 3))
          break;
        return Intrinsic::mips_extp;	 // "__builtin_mips_extp"
      case 'i':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "nsv", 3))
          break;
        return Intrinsic::mips_insv;	 // "__builtin_mips_insv"
      case 'l':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "bux", 3))
          break;
        return Intrinsic::mips_lbux;	 // "__builtin_mips_lbux"
      case 'm':	 // 3 strings to match.
        switch (BuiltinName[16]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "dd", 2))
            break;
          return Intrinsic::mips_madd;	 // "__builtin_mips_madd"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "ub", 2))
            break;
          return Intrinsic::mips_msub;	 // "__builtin_mips_msub"
        case 'u':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "lt", 2))
            break;
          return Intrinsic::mips_mult;	 // "__builtin_mips_mult"
        }
        break;
      }
      break;
    case 's':	 // 39 strings to match.
      if (memcmp(BuiltinName.data()+12, "a_", 2))
        break;
      switch (BuiltinName[14]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+15, "nd_v", 4))
          break;
        return Intrinsic::mips_and_v;	 // "__builtin_msa_and_v"
      case 'b':	 // 6 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'm':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+16, "z_v", 3))
            break;
          return Intrinsic::mips_bmz_v;	 // "__builtin_msa_bmz_v"
        case 'n':	 // 5 strings to match.
          if (memcmp(BuiltinName.data()+16, "z_", 2))
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_bnz_b;	 // "__builtin_msa_bnz_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_bnz_d;	 // "__builtin_msa_bnz_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_bnz_h;	 // "__builtin_msa_bnz_h"
          case 'v':	 // 1 string to match.
            return Intrinsic::mips_bnz_v;	 // "__builtin_msa_bnz_v"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_bnz_w;	 // "__builtin_msa_bnz_w"
          }
          break;
        }
        break;
      case 'c':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+15, "eq_", 3))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_ceq_b;	 // "__builtin_msa_ceq_b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_ceq_d;	 // "__builtin_msa_ceq_d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_ceq_h;	 // "__builtin_msa_ceq_h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_ceq_w;	 // "__builtin_msa_ceq_w"
        }
        break;
      case 'f':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+15, "tq_", 3))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_ftq_h;	 // "__builtin_msa_ftq_h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_ftq_w;	 // "__builtin_msa_ftq_w"
        }
        break;
      case 'l':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+15, "di_", 3))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_ldi_b;	 // "__builtin_msa_ldi_b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_ldi_d;	 // "__builtin_msa_ldi_d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_ldi_h;	 // "__builtin_msa_ldi_h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_ldi_w;	 // "__builtin_msa_ldi_w"
        }
        break;
      case 'n':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+15, "or_v", 4))
          break;
        return Intrinsic::mips_nor_v;	 // "__builtin_msa_nor_v"
      case 'o':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+15, "ri_b", 4))
          break;
        return Intrinsic::mips_ori_b;	 // "__builtin_msa_ori_b"
      case 's':	 // 19 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'h':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+16, "f_", 2))
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_shf_b;	 // "__builtin_msa_shf_b"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_shf_h;	 // "__builtin_msa_shf_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_shf_w;	 // "__builtin_msa_shf_w"
          }
          break;
        case 'l':	 // 8 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'd':	 // 4 strings to match.
            if (BuiltinName[17] != '_')
              break;
            switch (BuiltinName[18]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sld_b;	 // "__builtin_msa_sld_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sld_d;	 // "__builtin_msa_sld_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sld_h;	 // "__builtin_msa_sld_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sld_w;	 // "__builtin_msa_sld_w"
            }
            break;
          case 'l':	 // 4 strings to match.
            if (BuiltinName[17] != '_')
              break;
            switch (BuiltinName[18]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sll_b;	 // "__builtin_msa_sll_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sll_d;	 // "__builtin_msa_sll_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sll_h;	 // "__builtin_msa_sll_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sll_w;	 // "__builtin_msa_sll_w"
            }
            break;
          }
          break;
        case 'r':	 // 8 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'a':	 // 4 strings to match.
            if (BuiltinName[17] != '_')
              break;
            switch (BuiltinName[18]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sra_b;	 // "__builtin_msa_sra_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sra_d;	 // "__builtin_msa_sra_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sra_h;	 // "__builtin_msa_sra_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sra_w;	 // "__builtin_msa_sra_w"
            }
            break;
          case 'l':	 // 4 strings to match.
            if (BuiltinName[17] != '_')
              break;
            switch (BuiltinName[18]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_srl_b;	 // "__builtin_msa_srl_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_srl_d;	 // "__builtin_msa_srl_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_srl_h;	 // "__builtin_msa_srl_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_srl_w;	 // "__builtin_msa_srl_w"
            }
            break;
          }
          break;
        }
        break;
      case 'x':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+15, "or_v", 4))
          break;
        return Intrinsic::mips_xor_v;	 // "__builtin_msa_xor_v"
      }
      break;
    }
    break;
  case 20:	 // 143 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_m", 11))
      break;
    switch (BuiltinName[11]) {
    default: break;
    case 'i':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+12, "ps_", 3))
        break;
      switch (BuiltinName[15]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+16, "dd", 2))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 's':	 // 1 string to match.
          if (BuiltinName[19] != 'c')
            break;
          return Intrinsic::mips_addsc;	 // "__builtin_mips_addsc"
        case 'w':	 // 1 string to match.
          if (BuiltinName[19] != 'c')
            break;
          return Intrinsic::mips_addwc;	 // "__builtin_mips_addwc"
        }
        break;
      case 'm':	 // 3 strings to match.
        switch (BuiltinName[16]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "ddu", 3))
            break;
          return Intrinsic::mips_maddu;	 // "__builtin_mips_maddu"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "ubu", 3))
            break;
          return Intrinsic::mips_msubu;	 // "__builtin_mips_msubu"
        case 'u':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "ltu", 3))
            break;
          return Intrinsic::mips_multu;	 // "__builtin_mips_multu"
        }
        break;
      case 'r':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "ddsp", 4))
          break;
        return Intrinsic::mips_rddsp;	 // "__builtin_mips_rddsp"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "hilo", 4))
          break;
        return Intrinsic::mips_shilo;	 // "__builtin_mips_shilo"
      case 'w':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "rdsp", 4))
          break;
        return Intrinsic::mips_wrdsp;	 // "__builtin_mips_wrdsp"
      }
      break;
    case 's':	 // 135 strings to match.
      if (memcmp(BuiltinName.data()+12, "a_", 2))
        break;
      switch (BuiltinName[14]) {
      default: break;
      case 'a':	 // 5 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'd':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "dv_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_addv_b;	 // "__builtin_msa_addv_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_addv_d;	 // "__builtin_msa_addv_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_addv_h;	 // "__builtin_msa_addv_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_addv_w;	 // "__builtin_msa_addv_w"
          }
          break;
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+16, "di_b", 4))
            break;
          return Intrinsic::mips_andi_b;	 // "__builtin_msa_andi_b"
        }
        break;
      case 'b':	 // 15 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'c':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "lr_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_bclr_b;	 // "__builtin_msa_bclr_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_bclr_d;	 // "__builtin_msa_bclr_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_bclr_h;	 // "__builtin_msa_bclr_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_bclr_w;	 // "__builtin_msa_bclr_w"
          }
          break;
        case 'm':	 // 2 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'n':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+17, "z_v", 3))
              break;
            return Intrinsic::mips_bmnz_v;	 // "__builtin_msa_bmnz_v"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+17, "i_b", 3))
              break;
            return Intrinsic::mips_bmzi_b;	 // "__builtin_msa_bmzi_b"
          }
          break;
        case 'n':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "eg_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_bneg_b;	 // "__builtin_msa_bneg_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_bneg_d;	 // "__builtin_msa_bneg_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_bneg_h;	 // "__builtin_msa_bneg_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_bneg_w;	 // "__builtin_msa_bneg_w"
          }
          break;
        case 's':	 // 5 strings to match.
          if (BuiltinName[16] != 'e')
            break;
          switch (BuiltinName[17]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+18, "_v", 2))
              break;
            return Intrinsic::mips_bsel_v;	 // "__builtin_msa_bsel_v"
          case 't':	 // 4 strings to match.
            if (BuiltinName[18] != '_')
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_bset_b;	 // "__builtin_msa_bset_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_bset_d;	 // "__builtin_msa_bset_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_bset_h;	 // "__builtin_msa_bset_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_bset_w;	 // "__builtin_msa_bset_w"
            }
            break;
          }
          break;
        }
        break;
      case 'c':	 // 6 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'e':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "qi_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_ceqi_b;	 // "__builtin_msa_ceqi_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ceqi_d;	 // "__builtin_msa_ceqi_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_ceqi_h;	 // "__builtin_msa_ceqi_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ceqi_w;	 // "__builtin_msa_ceqi_w"
          }
          break;
        case 'f':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+16, "cmsa", 4))
            break;
          return Intrinsic::mips_cfcmsa;	 // "__builtin_msa_cfcmsa"
        case 't':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+16, "cmsa", 4))
            break;
          return Intrinsic::mips_ctcmsa;	 // "__builtin_msa_ctcmsa"
        }
        break;
      case 'f':	 // 50 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "dd_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_fadd_d;	 // "__builtin_msa_fadd_d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_fadd_w;	 // "__builtin_msa_fadd_w"
          }
          break;
        case 'c':	 // 14 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "f_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcaf_d;	 // "__builtin_msa_fcaf_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcaf_w;	 // "__builtin_msa_fcaf_w"
            }
            break;
          case 'e':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "q_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fceq_d;	 // "__builtin_msa_fceq_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fceq_w;	 // "__builtin_msa_fceq_w"
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (BuiltinName[17]) {
            default: break;
            case 'e':	 // 2 strings to match.
              if (BuiltinName[18] != '_')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fcle_d;	 // "__builtin_msa_fcle_d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fcle_w;	 // "__builtin_msa_fcle_w"
              }
              break;
            case 't':	 // 2 strings to match.
              if (BuiltinName[18] != '_')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fclt_d;	 // "__builtin_msa_fclt_d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fclt_w;	 // "__builtin_msa_fclt_w"
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "e_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcne_d;	 // "__builtin_msa_fcne_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcne_w;	 // "__builtin_msa_fcne_w"
            }
            break;
          case 'o':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "r_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcor_d;	 // "__builtin_msa_fcor_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcor_w;	 // "__builtin_msa_fcor_w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "n_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcun_d;	 // "__builtin_msa_fcun_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcun_w;	 // "__builtin_msa_fcun_w"
            }
            break;
          }
          break;
        case 'd':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "iv_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_fdiv_d;	 // "__builtin_msa_fdiv_d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_fdiv_w;	 // "__builtin_msa_fdiv_w"
          }
          break;
        case 'f':	 // 4 strings to match.
          if (BuiltinName[16] != 'q')
            break;
          switch (BuiltinName[17]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (BuiltinName[18] != '_')
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ffql_d;	 // "__builtin_msa_ffql_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ffql_w;	 // "__builtin_msa_ffql_w"
            }
            break;
          case 'r':	 // 2 strings to match.
            if (BuiltinName[18] != '_')
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ffqr_d;	 // "__builtin_msa_ffqr_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ffqr_w;	 // "__builtin_msa_ffqr_w"
            }
            break;
          }
          break;
        case 'i':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "ll_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_fill_b;	 // "__builtin_msa_fill_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_fill_d;	 // "__builtin_msa_fill_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_fill_h;	 // "__builtin_msa_fill_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_fill_w;	 // "__builtin_msa_fill_w"
          }
          break;
        case 'm':	 // 6 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "x_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmax_d;	 // "__builtin_msa_fmax_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmax_w;	 // "__builtin_msa_fmax_w"
            }
            break;
          case 'i':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "n_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmin_d;	 // "__builtin_msa_fmin_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmin_w;	 // "__builtin_msa_fmin_w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "l_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmul_d;	 // "__builtin_msa_fmul_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmul_w;	 // "__builtin_msa_fmul_w"
            }
            break;
          }
          break;
        case 'r':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "cp_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_frcp_d;	 // "__builtin_msa_frcp_d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_frcp_w;	 // "__builtin_msa_frcp_w"
          }
          break;
        case 's':	 // 16 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "f_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fsaf_d;	 // "__builtin_msa_fsaf_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fsaf_w;	 // "__builtin_msa_fsaf_w"
            }
            break;
          case 'e':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "q_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fseq_d;	 // "__builtin_msa_fseq_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fseq_w;	 // "__builtin_msa_fseq_w"
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (BuiltinName[17]) {
            default: break;
            case 'e':	 // 2 strings to match.
              if (BuiltinName[18] != '_')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fsle_d;	 // "__builtin_msa_fsle_d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fsle_w;	 // "__builtin_msa_fsle_w"
              }
              break;
            case 't':	 // 2 strings to match.
              if (BuiltinName[18] != '_')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fslt_d;	 // "__builtin_msa_fslt_d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fslt_w;	 // "__builtin_msa_fslt_w"
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "e_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fsne_d;	 // "__builtin_msa_fsne_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fsne_w;	 // "__builtin_msa_fsne_w"
            }
            break;
          case 'o':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "r_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fsor_d;	 // "__builtin_msa_fsor_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fsor_w;	 // "__builtin_msa_fsor_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            switch (BuiltinName[17]) {
            default: break;
            case 'b':	 // 2 strings to match.
              if (BuiltinName[18] != '_')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fsub_d;	 // "__builtin_msa_fsub_d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fsub_w;	 // "__builtin_msa_fsub_w"
              }
              break;
            case 'n':	 // 2 strings to match.
              if (BuiltinName[18] != '_')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fsun_d;	 // "__builtin_msa_fsun_d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fsun_w;	 // "__builtin_msa_fsun_w"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'i':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+15, "lv", 2))
          break;
        switch (BuiltinName[17]) {
        default: break;
        case 'l':	 // 4 strings to match.
          if (BuiltinName[18] != '_')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_ilvl_b;	 // "__builtin_msa_ilvl_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ilvl_d;	 // "__builtin_msa_ilvl_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_ilvl_h;	 // "__builtin_msa_ilvl_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ilvl_w;	 // "__builtin_msa_ilvl_w"
          }
          break;
        case 'r':	 // 4 strings to match.
          if (BuiltinName[18] != '_')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_ilvr_b;	 // "__builtin_msa_ilvr_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ilvr_d;	 // "__builtin_msa_ilvr_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_ilvr_h;	 // "__builtin_msa_ilvr_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ilvr_w;	 // "__builtin_msa_ilvr_w"
          }
          break;
        }
        break;
      case 'm':	 // 5 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+16, "ve_v", 4))
            break;
          return Intrinsic::mips_move_v;	 // "__builtin_msa_move_v"
        case 'u':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "lv_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_mulv_b;	 // "__builtin_msa_mulv_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_mulv_d;	 // "__builtin_msa_mulv_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_mulv_h;	 // "__builtin_msa_mulv_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_mulv_w;	 // "__builtin_msa_mulv_w"
          }
          break;
        }
        break;
      case 'n':	 // 9 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'l':	 // 8 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'o':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+17, "c_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_nloc_b;	 // "__builtin_msa_nloc_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_nloc_d;	 // "__builtin_msa_nloc_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_nloc_h;	 // "__builtin_msa_nloc_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_nloc_w;	 // "__builtin_msa_nloc_w"
            }
            break;
          case 'z':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+17, "c_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_nlzc_b;	 // "__builtin_msa_nlzc_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_nlzc_d;	 // "__builtin_msa_nlzc_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_nlzc_h;	 // "__builtin_msa_nlzc_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_nlzc_w;	 // "__builtin_msa_nlzc_w"
            }
            break;
          }
          break;
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+16, "ri_b", 4))
            break;
          return Intrinsic::mips_nori_b;	 // "__builtin_msa_nori_b"
        }
        break;
      case 'p':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+15, "cnt_", 4))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_pcnt_b;	 // "__builtin_msa_pcnt_b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_pcnt_d;	 // "__builtin_msa_pcnt_d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_pcnt_h;	 // "__builtin_msa_pcnt_h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_pcnt_w;	 // "__builtin_msa_pcnt_w"
        }
        break;
      case 's':	 // 28 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'l':	 // 8 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'd':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+17, "i_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sldi_b;	 // "__builtin_msa_sldi_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sldi_d;	 // "__builtin_msa_sldi_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sldi_h;	 // "__builtin_msa_sldi_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sldi_w;	 // "__builtin_msa_sldi_w"
            }
            break;
          case 'l':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+17, "i_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_slli_b;	 // "__builtin_msa_slli_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_slli_d;	 // "__builtin_msa_slli_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_slli_h;	 // "__builtin_msa_slli_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_slli_w;	 // "__builtin_msa_slli_w"
            }
            break;
          }
          break;
        case 'r':	 // 16 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'a':	 // 8 strings to match.
            switch (BuiltinName[17]) {
            default: break;
            case 'i':	 // 4 strings to match.
              if (BuiltinName[18] != '_')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_srai_b;	 // "__builtin_msa_srai_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_srai_d;	 // "__builtin_msa_srai_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_srai_h;	 // "__builtin_msa_srai_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_srai_w;	 // "__builtin_msa_srai_w"
              }
              break;
            case 'r':	 // 4 strings to match.
              if (BuiltinName[18] != '_')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_srar_b;	 // "__builtin_msa_srar_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_srar_d;	 // "__builtin_msa_srar_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_srar_h;	 // "__builtin_msa_srar_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_srar_w;	 // "__builtin_msa_srar_w"
              }
              break;
            }
            break;
          case 'l':	 // 8 strings to match.
            switch (BuiltinName[17]) {
            default: break;
            case 'i':	 // 4 strings to match.
              if (BuiltinName[18] != '_')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_srli_b;	 // "__builtin_msa_srli_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_srli_d;	 // "__builtin_msa_srli_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_srli_h;	 // "__builtin_msa_srli_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_srli_w;	 // "__builtin_msa_srli_w"
              }
              break;
            case 'r':	 // 4 strings to match.
              if (BuiltinName[18] != '_')
                break;
              switch (BuiltinName[19]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_srlr_b;	 // "__builtin_msa_srlr_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_srlr_d;	 // "__builtin_msa_srlr_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_srlr_h;	 // "__builtin_msa_srlr_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_srlr_w;	 // "__builtin_msa_srlr_w"
              }
              break;
            }
            break;
          }
          break;
        case 'u':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "bv_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_subv_b;	 // "__builtin_msa_subv_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_subv_d;	 // "__builtin_msa_subv_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_subv_h;	 // "__builtin_msa_subv_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_subv_w;	 // "__builtin_msa_subv_w"
          }
          break;
        }
        break;
      case 'v':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+15, "shf_", 4))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_vshf_b;	 // "__builtin_msa_vshf_b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_vshf_d;	 // "__builtin_msa_vshf_d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_vshf_h;	 // "__builtin_msa_vshf_h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_vshf_w;	 // "__builtin_msa_vshf_w"
        }
        break;
      case 'x':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+15, "ori_b", 5))
          break;
        return Intrinsic::mips_xori_b;	 // "__builtin_msa_xori_b"
      }
      break;
    }
    break;
  case 21:	 // 186 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_m", 11))
      break;
    switch (BuiltinName[11]) {
    default: break;
    case 'i':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+12, "ps_", 3))
        break;
      switch (BuiltinName[15]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "ppend", 5))
          break;
        return Intrinsic::mips_append;	 // "__builtin_mips_append"
      case 'b':	 // 2 strings to match.
        switch (BuiltinName[16]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "lign", 4))
            break;
          return Intrinsic::mips_balign;	 // "__builtin_mips_balign"
        case 'i':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "trev", 4))
            break;
          return Intrinsic::mips_bitrev;	 // "__builtin_mips_bitrev"
        }
        break;
      case 'e':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+16, "xt", 2))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+19, "dp", 2))
            break;
          return Intrinsic::mips_extpdp;	 // "__builtin_mips_extpdp"
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+19, "_w", 2))
            break;
          return Intrinsic::mips_extr_w;	 // "__builtin_mips_extr_w"
        }
        break;
      case 'm':	 // 3 strings to match.
        switch (BuiltinName[16]) {
        default: break;
        case 'o':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "dsub", 4))
            break;
          return Intrinsic::mips_modsub;	 // "__builtin_mips_modsub"
        case 't':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "hlip", 4))
            break;
          return Intrinsic::mips_mthlip;	 // "__builtin_mips_mthlip"
        case 'u':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "l_ph", 4))
            break;
          return Intrinsic::mips_mul_ph;	 // "__builtin_mips_mul_ph"
        }
        break;
      }
      break;
    case 's':	 // 178 strings to match.
      if (memcmp(BuiltinName.data()+12, "a_", 2))
        break;
      switch (BuiltinName[14]) {
      default: break;
      case 'a':	 // 16 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'd':	 // 8 strings to match.
          if (BuiltinName[16] != 'd')
            break;
          switch (BuiltinName[17]) {
          default: break;
          case '_':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+18, "a_", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_add_a_b;	 // "__builtin_msa_add_a_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_add_a_d;	 // "__builtin_msa_add_a_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_add_a_h;	 // "__builtin_msa_add_a_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_add_a_w;	 // "__builtin_msa_add_a_w"
            }
            break;
          case 'v':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+18, "i_", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_addvi_b;	 // "__builtin_msa_addvi_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_addvi_d;	 // "__builtin_msa_addvi_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_addvi_h;	 // "__builtin_msa_addvi_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_addvi_w;	 // "__builtin_msa_addvi_w"
            }
            break;
          }
          break;
        case 'v':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+16, "e_", 2))
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_ave_s_b;	 // "__builtin_msa_ave_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ave_s_d;	 // "__builtin_msa_ave_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_ave_s_h;	 // "__builtin_msa_ave_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ave_s_w;	 // "__builtin_msa_ave_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_ave_u_b;	 // "__builtin_msa_ave_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ave_u_d;	 // "__builtin_msa_ave_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_ave_u_h;	 // "__builtin_msa_ave_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ave_u_w;	 // "__builtin_msa_ave_u_w"
            }
            break;
          }
          break;
        }
        break;
      case 'b':	 // 22 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'c':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "lri_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_bclri_b;	 // "__builtin_msa_bclri_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_bclri_d;	 // "__builtin_msa_bclri_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_bclri_h;	 // "__builtin_msa_bclri_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_bclri_w;	 // "__builtin_msa_bclri_w"
          }
          break;
        case 'i':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+16, "ns", 2))
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 'l':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_binsl_b;	 // "__builtin_msa_binsl_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_binsl_d;	 // "__builtin_msa_binsl_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_binsl_h;	 // "__builtin_msa_binsl_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_binsl_w;	 // "__builtin_msa_binsl_w"
            }
            break;
          case 'r':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_binsr_b;	 // "__builtin_msa_binsr_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_binsr_d;	 // "__builtin_msa_binsr_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_binsr_h;	 // "__builtin_msa_binsr_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_binsr_w;	 // "__builtin_msa_binsr_w"
            }
            break;
          }
          break;
        case 'm':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+16, "nzi_b", 5))
            break;
          return Intrinsic::mips_bmnzi_b;	 // "__builtin_msa_bmnzi_b"
        case 'n':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "egi_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_bnegi_b;	 // "__builtin_msa_bnegi_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_bnegi_d;	 // "__builtin_msa_bnegi_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_bnegi_h;	 // "__builtin_msa_bnegi_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_bnegi_w;	 // "__builtin_msa_bnegi_w"
          }
          break;
        case 's':	 // 5 strings to match.
          if (BuiltinName[16] != 'e')
            break;
          switch (BuiltinName[17]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+18, "i_b", 3))
              break;
            return Intrinsic::mips_bseli_b;	 // "__builtin_msa_bseli_b"
          case 't':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+18, "i_", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_bseti_b;	 // "__builtin_msa_bseti_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_bseti_d;	 // "__builtin_msa_bseti_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_bseti_h;	 // "__builtin_msa_bseti_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_bseti_w;	 // "__builtin_msa_bseti_w"
            }
            break;
          }
          break;
        }
        break;
      case 'c':	 // 16 strings to match.
        if (BuiltinName[15] != 'l')
          break;
        switch (BuiltinName[16]) {
        default: break;
        case 'e':	 // 8 strings to match.
          if (BuiltinName[17] != '_')
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_cle_s_b;	 // "__builtin_msa_cle_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_cle_s_d;	 // "__builtin_msa_cle_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_cle_s_h;	 // "__builtin_msa_cle_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_cle_s_w;	 // "__builtin_msa_cle_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_cle_u_b;	 // "__builtin_msa_cle_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_cle_u_d;	 // "__builtin_msa_cle_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_cle_u_h;	 // "__builtin_msa_cle_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_cle_u_w;	 // "__builtin_msa_cle_u_w"
            }
            break;
          }
          break;
        case 't':	 // 8 strings to match.
          if (BuiltinName[17] != '_')
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_clt_s_b;	 // "__builtin_msa_clt_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_clt_s_d;	 // "__builtin_msa_clt_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_clt_s_h;	 // "__builtin_msa_clt_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_clt_s_w;	 // "__builtin_msa_clt_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_clt_u_b;	 // "__builtin_msa_clt_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_clt_u_d;	 // "__builtin_msa_clt_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_clt_u_h;	 // "__builtin_msa_clt_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_clt_u_w;	 // "__builtin_msa_clt_u_w"
            }
            break;
          }
          break;
        }
        break;
      case 'd':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+15, "iv_", 3))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 's':	 // 4 strings to match.
          if (BuiltinName[19] != '_')
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_div_s_b;	 // "__builtin_msa_div_s_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_div_s_d;	 // "__builtin_msa_div_s_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_div_s_h;	 // "__builtin_msa_div_s_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_div_s_w;	 // "__builtin_msa_div_s_w"
          }
          break;
        case 'u':	 // 4 strings to match.
          if (BuiltinName[19] != '_')
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_div_u_b;	 // "__builtin_msa_div_u_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_div_u_d;	 // "__builtin_msa_div_u_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_div_u_h;	 // "__builtin_msa_div_u_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_div_u_w;	 // "__builtin_msa_div_u_w"
          }
          break;
        }
        break;
      case 'f':	 // 30 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'c':	 // 8 strings to match.
          if (BuiltinName[16] != 'u')
            break;
          switch (BuiltinName[17]) {
          default: break;
          case 'e':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+18, "q_", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcueq_d;	 // "__builtin_msa_fcueq_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcueq_w;	 // "__builtin_msa_fcueq_w"
            }
            break;
          case 'l':	 // 4 strings to match.
            switch (BuiltinName[18]) {
            default: break;
            case 'e':	 // 2 strings to match.
              if (BuiltinName[19] != '_')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fcule_d;	 // "__builtin_msa_fcule_d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fcule_w;	 // "__builtin_msa_fcule_w"
              }
              break;
            case 't':	 // 2 strings to match.
              if (BuiltinName[19] != '_')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fcult_d;	 // "__builtin_msa_fcult_d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fcult_w;	 // "__builtin_msa_fcult_w"
              }
              break;
            }
            break;
          case 'n':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+18, "e_", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fcune_d;	 // "__builtin_msa_fcune_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fcune_w;	 // "__builtin_msa_fcune_w"
            }
            break;
          }
          break;
        case 'e':	 // 4 strings to match.
          if (BuiltinName[16] != 'x')
            break;
          switch (BuiltinName[17]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+18, "o_", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_fexdo_h;	 // "__builtin_msa_fexdo_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fexdo_w;	 // "__builtin_msa_fexdo_w"
            }
            break;
          case 'p':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+18, "2_", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fexp2_d;	 // "__builtin_msa_fexp2_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fexp2_w;	 // "__builtin_msa_fexp2_w"
            }
            break;
          }
          break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "og2_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_flog2_d;	 // "__builtin_msa_flog2_d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_flog2_w;	 // "__builtin_msa_flog2_w"
          }
          break;
        case 'm':	 // 4 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "dd_", 3))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmadd_d;	 // "__builtin_msa_fmadd_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmadd_w;	 // "__builtin_msa_fmadd_w"
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "ub_", 3))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmsub_d;	 // "__builtin_msa_fmsub_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmsub_w;	 // "__builtin_msa_fmsub_w"
            }
            break;
          }
          break;
        case 'r':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "int_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_frint_d;	 // "__builtin_msa_frint_d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_frint_w;	 // "__builtin_msa_frint_w"
          }
          break;
        case 's':	 // 10 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'q':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "rt_", 3))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fsqrt_d;	 // "__builtin_msa_fsqrt_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fsqrt_w;	 // "__builtin_msa_fsqrt_w"
            }
            break;
          case 'u':	 // 8 strings to match.
            switch (BuiltinName[17]) {
            default: break;
            case 'e':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+18, "q_", 2))
                break;
              switch (BuiltinName[20]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fsueq_d;	 // "__builtin_msa_fsueq_d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fsueq_w;	 // "__builtin_msa_fsueq_w"
              }
              break;
            case 'l':	 // 4 strings to match.
              switch (BuiltinName[18]) {
              default: break;
              case 'e':	 // 2 strings to match.
                if (BuiltinName[19] != '_')
                  break;
                switch (BuiltinName[20]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::mips_fsule_d;	 // "__builtin_msa_fsule_d"
                case 'w':	 // 1 string to match.
                  return Intrinsic::mips_fsule_w;	 // "__builtin_msa_fsule_w"
                }
                break;
              case 't':	 // 2 strings to match.
                if (BuiltinName[19] != '_')
                  break;
                switch (BuiltinName[20]) {
                default: break;
                case 'd':	 // 1 string to match.
                  return Intrinsic::mips_fsult_d;	 // "__builtin_msa_fsult_d"
                case 'w':	 // 1 string to match.
                  return Intrinsic::mips_fsult_w;	 // "__builtin_msa_fsult_w"
                }
                break;
              }
              break;
            case 'n':	 // 2 strings to match.
              if (memcmp(BuiltinName.data()+18, "e_", 2))
                break;
              switch (BuiltinName[20]) {
              default: break;
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_fsune_d;	 // "__builtin_msa_fsune_d"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_fsune_w;	 // "__builtin_msa_fsune_w"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 'i':	 // 12 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'l':	 // 8 strings to match.
          if (BuiltinName[16] != 'v')
            break;
          switch (BuiltinName[17]) {
          default: break;
          case 'e':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+18, "v_", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_ilvev_b;	 // "__builtin_msa_ilvev_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ilvev_d;	 // "__builtin_msa_ilvev_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_ilvev_h;	 // "__builtin_msa_ilvev_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ilvev_w;	 // "__builtin_msa_ilvev_w"
            }
            break;
          case 'o':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+18, "d_", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_ilvod_b;	 // "__builtin_msa_ilvod_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ilvod_d;	 // "__builtin_msa_ilvod_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_ilvod_h;	 // "__builtin_msa_ilvod_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ilvod_w;	 // "__builtin_msa_ilvod_w"
            }
            break;
          }
          break;
        case 'n':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "sve_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_insve_b;	 // "__builtin_msa_insve_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_insve_d;	 // "__builtin_msa_insve_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_insve_h;	 // "__builtin_msa_insve_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_insve_w;	 // "__builtin_msa_insve_w"
          }
          break;
        }
        break;
      case 'm':	 // 42 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'a':	 // 16 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'd':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+17, "dv_", 3))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_maddv_b;	 // "__builtin_msa_maddv_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_maddv_d;	 // "__builtin_msa_maddv_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_maddv_h;	 // "__builtin_msa_maddv_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_maddv_w;	 // "__builtin_msa_maddv_w"
            }
            break;
          case 'x':	 // 12 strings to match.
            if (BuiltinName[17] != '_')
              break;
            switch (BuiltinName[18]) {
            default: break;
            case 'a':	 // 4 strings to match.
              if (BuiltinName[19] != '_')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_max_a_b;	 // "__builtin_msa_max_a_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_max_a_d;	 // "__builtin_msa_max_a_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_max_a_h;	 // "__builtin_msa_max_a_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_max_a_w;	 // "__builtin_msa_max_a_w"
              }
              break;
            case 's':	 // 4 strings to match.
              if (BuiltinName[19] != '_')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_max_s_b;	 // "__builtin_msa_max_s_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_max_s_d;	 // "__builtin_msa_max_s_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_max_s_h;	 // "__builtin_msa_max_s_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_max_s_w;	 // "__builtin_msa_max_s_w"
              }
              break;
            case 'u':	 // 4 strings to match.
              if (BuiltinName[19] != '_')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_max_u_b;	 // "__builtin_msa_max_u_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_max_u_d;	 // "__builtin_msa_max_u_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_max_u_h;	 // "__builtin_msa_max_u_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_max_u_w;	 // "__builtin_msa_max_u_w"
              }
              break;
            }
            break;
          }
          break;
        case 'i':	 // 12 strings to match.
          if (memcmp(BuiltinName.data()+16, "n_", 2))
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 'a':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_min_a_b;	 // "__builtin_msa_min_a_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_min_a_d;	 // "__builtin_msa_min_a_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_min_a_h;	 // "__builtin_msa_min_a_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_min_a_w;	 // "__builtin_msa_min_a_w"
            }
            break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_min_s_b;	 // "__builtin_msa_min_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_min_s_d;	 // "__builtin_msa_min_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_min_s_h;	 // "__builtin_msa_min_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_min_s_w;	 // "__builtin_msa_min_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_min_u_b;	 // "__builtin_msa_min_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_min_u_d;	 // "__builtin_msa_min_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_min_u_h;	 // "__builtin_msa_min_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_min_u_w;	 // "__builtin_msa_min_u_w"
            }
            break;
          }
          break;
        case 'o':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+16, "d_", 2))
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_mod_s_b;	 // "__builtin_msa_mod_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_mod_s_d;	 // "__builtin_msa_mod_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_mod_s_h;	 // "__builtin_msa_mod_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_mod_s_w;	 // "__builtin_msa_mod_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_mod_u_b;	 // "__builtin_msa_mod_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_mod_u_d;	 // "__builtin_msa_mod_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_mod_u_h;	 // "__builtin_msa_mod_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_mod_u_w;	 // "__builtin_msa_mod_u_w"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "ubv_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_msubv_b;	 // "__builtin_msa_msubv_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_msubv_d;	 // "__builtin_msa_msubv_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_msubv_h;	 // "__builtin_msa_msubv_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_msubv_w;	 // "__builtin_msa_msubv_w"
          }
          break;
        case 'u':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "l_q_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_mul_q_h;	 // "__builtin_msa_mul_q_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_mul_q_w;	 // "__builtin_msa_mul_q_w"
          }
          break;
        }
        break;
      case 'p':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+15, "ck", 2))
          break;
        switch (BuiltinName[17]) {
        default: break;
        case 'e':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+18, "v_", 2))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_pckev_b;	 // "__builtin_msa_pckev_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_pckev_d;	 // "__builtin_msa_pckev_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_pckev_h;	 // "__builtin_msa_pckev_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_pckev_w;	 // "__builtin_msa_pckev_w"
          }
          break;
        case 'o':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+18, "d_", 2))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_pckod_b;	 // "__builtin_msa_pckod_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_pckod_d;	 // "__builtin_msa_pckod_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_pckod_h;	 // "__builtin_msa_pckod_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_pckod_w;	 // "__builtin_msa_pckod_w"
          }
          break;
        }
        break;
      case 's':	 // 24 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'a':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+16, "t_", 2))
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sat_s_b;	 // "__builtin_msa_sat_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sat_s_d;	 // "__builtin_msa_sat_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sat_s_h;	 // "__builtin_msa_sat_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sat_s_w;	 // "__builtin_msa_sat_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_sat_u_b;	 // "__builtin_msa_sat_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_sat_u_d;	 // "__builtin_msa_sat_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_sat_u_h;	 // "__builtin_msa_sat_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_sat_u_w;	 // "__builtin_msa_sat_u_w"
            }
            break;
          }
          break;
        case 'p':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "lat_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_splat_b;	 // "__builtin_msa_splat_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_splat_d;	 // "__builtin_msa_splat_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_splat_h;	 // "__builtin_msa_splat_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_splat_w;	 // "__builtin_msa_splat_w"
          }
          break;
        case 'r':	 // 8 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'a':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+17, "ri_", 3))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_srari_b;	 // "__builtin_msa_srari_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_srari_d;	 // "__builtin_msa_srari_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_srari_h;	 // "__builtin_msa_srari_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_srari_w;	 // "__builtin_msa_srari_w"
            }
            break;
          case 'l':	 // 4 strings to match.
            if (memcmp(BuiltinName.data()+17, "ri_", 3))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_srlri_b;	 // "__builtin_msa_srlri_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_srlri_d;	 // "__builtin_msa_srlri_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_srlri_h;	 // "__builtin_msa_srlri_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_srlri_w;	 // "__builtin_msa_srlri_w"
            }
            break;
          }
          break;
        case 'u':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "bvi_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_subvi_b;	 // "__builtin_msa_subvi_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_subvi_d;	 // "__builtin_msa_subvi_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_subvi_h;	 // "__builtin_msa_subvi_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_subvi_w;	 // "__builtin_msa_subvi_w"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 22:	 // 147 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_m", 11))
      break;
    switch (BuiltinName[11]) {
    default: break;
    case 'i':	 // 19 strings to match.
      if (memcmp(BuiltinName.data()+12, "ps_", 3))
        break;
      switch (BuiltinName[15]) {
      default: break;
      case 'a':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+16, "dd", 2))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'q':	 // 2 strings to match.
          switch (BuiltinName[19]) {
          default: break;
          case '_':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "ph", 2))
              break;
            return Intrinsic::mips_addq_ph;	 // "__builtin_mips_addq_ph"
          case 'h':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "_w", 2))
              break;
            return Intrinsic::mips_addqh_w;	 // "__builtin_mips_addqh_w"
          }
          break;
        case 'u':	 // 2 strings to match.
          if (BuiltinName[19] != '_')
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'p':	 // 1 string to match.
            if (BuiltinName[21] != 'h')
              break;
            return Intrinsic::mips_addu_ph;	 // "__builtin_mips_addu_ph"
          case 'q':	 // 1 string to match.
            if (BuiltinName[21] != 'b')
              break;
            return Intrinsic::mips_addu_qb;	 // "__builtin_mips_addu_qb"
          }
          break;
        }
        break;
      case 'p':	 // 3 strings to match.
        switch (BuiltinName[16]) {
        default: break;
        case 'i':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+17, "ck_", 3))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'p':	 // 1 string to match.
            if (BuiltinName[21] != 'h')
              break;
            return Intrinsic::mips_pick_ph;	 // "__builtin_mips_pick_ph"
          case 'q':	 // 1 string to match.
            if (BuiltinName[21] != 'b')
              break;
            return Intrinsic::mips_pick_qb;	 // "__builtin_mips_pick_qb"
          }
          break;
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "epend", 5))
            break;
          return Intrinsic::mips_prepend;	 // "__builtin_mips_prepend"
        }
        break;
      case 'r':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+16, "epl_", 4))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'p':	 // 1 string to match.
          if (BuiltinName[21] != 'h')
            break;
          return Intrinsic::mips_repl_ph;	 // "__builtin_mips_repl_ph"
        case 'q':	 // 1 string to match.
          if (BuiltinName[21] != 'b')
            break;
          return Intrinsic::mips_repl_qb;	 // "__builtin_mips_repl_qb"
        }
        break;
      case 's':	 // 10 strings to match.
        switch (BuiltinName[16]) {
        default: break;
        case 'h':	 // 6 strings to match.
          switch (BuiltinName[17]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+18, "l_", 2))
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (BuiltinName[21] != 'h')
                break;
              return Intrinsic::mips_shll_ph;	 // "__builtin_mips_shll_ph"
            case 'q':	 // 1 string to match.
              if (BuiltinName[21] != 'b')
                break;
              return Intrinsic::mips_shll_qb;	 // "__builtin_mips_shll_qb"
            }
            break;
          case 'r':	 // 4 strings to match.
            switch (BuiltinName[18]) {
            default: break;
            case 'a':	 // 2 strings to match.
              if (BuiltinName[19] != '_')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (BuiltinName[21] != 'h')
                  break;
                return Intrinsic::mips_shra_ph;	 // "__builtin_mips_shra_ph"
              case 'q':	 // 1 string to match.
                if (BuiltinName[21] != 'b')
                  break;
                return Intrinsic::mips_shra_qb;	 // "__builtin_mips_shra_qb"
              }
              break;
            case 'l':	 // 2 strings to match.
              if (BuiltinName[19] != '_')
                break;
              switch (BuiltinName[20]) {
              default: break;
              case 'p':	 // 1 string to match.
                if (BuiltinName[21] != 'h')
                  break;
                return Intrinsic::mips_shrl_ph;	 // "__builtin_mips_shrl_ph"
              case 'q':	 // 1 string to match.
                if (BuiltinName[21] != 'b')
                  break;
                return Intrinsic::mips_shrl_qb;	 // "__builtin_mips_shrl_qb"
              }
              break;
            }
            break;
          }
          break;
        case 'u':	 // 4 strings to match.
          if (BuiltinName[17] != 'b')
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 'q':	 // 2 strings to match.
            switch (BuiltinName[19]) {
            default: break;
            case '_':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+20, "ph", 2))
                break;
              return Intrinsic::mips_subq_ph;	 // "__builtin_mips_subq_ph"
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+20, "_w", 2))
                break;
              return Intrinsic::mips_subqh_w;	 // "__builtin_mips_subqh_w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (BuiltinName[19] != '_')
              break;
            switch (BuiltinName[20]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (BuiltinName[21] != 'h')
                break;
              return Intrinsic::mips_subu_ph;	 // "__builtin_mips_subu_ph"
            case 'q':	 // 1 string to match.
              if (BuiltinName[21] != 'b')
                break;
              return Intrinsic::mips_subu_qb;	 // "__builtin_mips_subu_qb"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 's':	 // 128 strings to match.
      if (memcmp(BuiltinName.data()+12, "a_", 2))
        break;
      switch (BuiltinName[14]) {
      default: break;
      case 'a':	 // 28 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'd':	 // 12 strings to match.
          if (memcmp(BuiltinName.data()+16, "ds_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'a':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_adds_a_b;	 // "__builtin_msa_adds_a_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_adds_a_d;	 // "__builtin_msa_adds_a_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_adds_a_h;	 // "__builtin_msa_adds_a_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_adds_a_w;	 // "__builtin_msa_adds_a_w"
            }
            break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_adds_s_b;	 // "__builtin_msa_adds_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_adds_s_d;	 // "__builtin_msa_adds_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_adds_s_h;	 // "__builtin_msa_adds_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_adds_s_w;	 // "__builtin_msa_adds_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_adds_u_b;	 // "__builtin_msa_adds_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_adds_u_d;	 // "__builtin_msa_adds_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_adds_u_h;	 // "__builtin_msa_adds_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_adds_u_w;	 // "__builtin_msa_adds_u_w"
            }
            break;
          }
          break;
        case 's':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+16, "ub_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_asub_s_b;	 // "__builtin_msa_asub_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_asub_s_d;	 // "__builtin_msa_asub_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_asub_s_h;	 // "__builtin_msa_asub_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_asub_s_w;	 // "__builtin_msa_asub_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_asub_u_b;	 // "__builtin_msa_asub_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_asub_u_d;	 // "__builtin_msa_asub_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_asub_u_h;	 // "__builtin_msa_asub_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_asub_u_w;	 // "__builtin_msa_asub_u_w"
            }
            break;
          }
          break;
        case 'v':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+16, "er_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_aver_s_b;	 // "__builtin_msa_aver_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_aver_s_d;	 // "__builtin_msa_aver_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_aver_s_h;	 // "__builtin_msa_aver_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_aver_s_w;	 // "__builtin_msa_aver_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_aver_u_b;	 // "__builtin_msa_aver_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_aver_u_d;	 // "__builtin_msa_aver_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_aver_u_h;	 // "__builtin_msa_aver_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_aver_u_w;	 // "__builtin_msa_aver_u_w"
            }
            break;
          }
          break;
        }
        break;
      case 'b':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+15, "ins", 3))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'l':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+19, "i_", 2))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_binsli_b;	 // "__builtin_msa_binsli_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_binsli_d;	 // "__builtin_msa_binsli_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_binsli_h;	 // "__builtin_msa_binsli_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_binsli_w;	 // "__builtin_msa_binsli_w"
          }
          break;
        case 'r':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+19, "i_", 2))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_binsri_b;	 // "__builtin_msa_binsri_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_binsri_d;	 // "__builtin_msa_binsri_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_binsri_h;	 // "__builtin_msa_binsri_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_binsri_w;	 // "__builtin_msa_binsri_w"
          }
          break;
        }
        break;
      case 'c':	 // 24 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'l':	 // 16 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'e':	 // 8 strings to match.
            if (memcmp(BuiltinName.data()+17, "i_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 's':	 // 4 strings to match.
              if (BuiltinName[20] != '_')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_clei_s_b;	 // "__builtin_msa_clei_s_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_clei_s_d;	 // "__builtin_msa_clei_s_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_clei_s_h;	 // "__builtin_msa_clei_s_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_clei_s_w;	 // "__builtin_msa_clei_s_w"
              }
              break;
            case 'u':	 // 4 strings to match.
              if (BuiltinName[20] != '_')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_clei_u_b;	 // "__builtin_msa_clei_u_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_clei_u_d;	 // "__builtin_msa_clei_u_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_clei_u_h;	 // "__builtin_msa_clei_u_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_clei_u_w;	 // "__builtin_msa_clei_u_w"
              }
              break;
            }
            break;
          case 't':	 // 8 strings to match.
            if (memcmp(BuiltinName.data()+17, "i_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 's':	 // 4 strings to match.
              if (BuiltinName[20] != '_')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_clti_s_b;	 // "__builtin_msa_clti_s_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_clti_s_d;	 // "__builtin_msa_clti_s_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_clti_s_h;	 // "__builtin_msa_clti_s_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_clti_s_w;	 // "__builtin_msa_clti_s_w"
              }
              break;
            case 'u':	 // 4 strings to match.
              if (BuiltinName[20] != '_')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_clti_u_b;	 // "__builtin_msa_clti_u_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_clti_u_d;	 // "__builtin_msa_clti_u_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_clti_u_h;	 // "__builtin_msa_clti_u_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_clti_u_w;	 // "__builtin_msa_clti_u_w"
              }
              break;
            }
            break;
          }
          break;
        case 'o':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+16, "py_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_copy_s_b;	 // "__builtin_msa_copy_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_copy_s_d;	 // "__builtin_msa_copy_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_copy_s_h;	 // "__builtin_msa_copy_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_copy_s_w;	 // "__builtin_msa_copy_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_copy_u_b;	 // "__builtin_msa_copy_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_copy_u_d;	 // "__builtin_msa_copy_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_copy_u_h;	 // "__builtin_msa_copy_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_copy_u_w;	 // "__builtin_msa_copy_u_w"
            }
            break;
          }
          break;
        }
        break;
      case 'd':	 // 6 strings to match.
        if (memcmp(BuiltinName.data()+15, "otp_", 4))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 's':	 // 3 strings to match.
          if (BuiltinName[20] != '_')
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_dotp_s_d;	 // "__builtin_msa_dotp_s_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_dotp_s_h;	 // "__builtin_msa_dotp_s_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_dotp_s_w;	 // "__builtin_msa_dotp_s_w"
          }
          break;
        case 'u':	 // 3 strings to match.
          if (BuiltinName[20] != '_')
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_dotp_u_d;	 // "__builtin_msa_dotp_u_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_dotp_u_h;	 // "__builtin_msa_dotp_u_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_dotp_u_w;	 // "__builtin_msa_dotp_u_w"
          }
          break;
        }
        break;
      case 'f':	 // 12 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'c':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "lass_", 5))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_fclass_d;	 // "__builtin_msa_fclass_d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_fclass_w;	 // "__builtin_msa_fclass_w"
          }
          break;
        case 'e':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "xup", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fexupl_d;	 // "__builtin_msa_fexupl_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fexupl_w;	 // "__builtin_msa_fexupl_w"
            }
            break;
          case 'r':	 // 2 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fexupr_d;	 // "__builtin_msa_fexupr_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fexupr_w;	 // "__builtin_msa_fexupr_w"
            }
            break;
          }
          break;
        case 'm':	 // 4 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "x_a_", 4))
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmax_a_d;	 // "__builtin_msa_fmax_a_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmax_a_w;	 // "__builtin_msa_fmax_a_w"
            }
            break;
          case 'i':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "n_a_", 4))
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_fmin_a_d;	 // "__builtin_msa_fmin_a_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_fmin_a_w;	 // "__builtin_msa_fmin_a_w"
            }
            break;
          }
          break;
        case 'r':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "sqrt_", 5))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_frsqrt_d;	 // "__builtin_msa_frsqrt_d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_frsqrt_w;	 // "__builtin_msa_frsqrt_w"
          }
          break;
        }
        break;
      case 'h':	 // 12 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'a':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+16, "dd_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 's':	 // 3 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_hadd_s_d;	 // "__builtin_msa_hadd_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_hadd_s_h;	 // "__builtin_msa_hadd_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_hadd_s_w;	 // "__builtin_msa_hadd_s_w"
            }
            break;
          case 'u':	 // 3 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_hadd_u_d;	 // "__builtin_msa_hadd_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_hadd_u_h;	 // "__builtin_msa_hadd_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_hadd_u_w;	 // "__builtin_msa_hadd_u_w"
            }
            break;
          }
          break;
        case 's':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+16, "ub_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 's':	 // 3 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_hsub_s_d;	 // "__builtin_msa_hsub_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_hsub_s_h;	 // "__builtin_msa_hsub_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_hsub_s_w;	 // "__builtin_msa_hsub_s_w"
            }
            break;
          case 'u':	 // 3 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_hsub_u_d;	 // "__builtin_msa_hsub_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_hsub_u_h;	 // "__builtin_msa_hsub_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_hsub_u_w;	 // "__builtin_msa_hsub_u_w"
            }
            break;
          }
          break;
        }
        break;
      case 'i':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+15, "nsert_", 6))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::mips_insert_b;	 // "__builtin_msa_insert_b"
        case 'd':	 // 1 string to match.
          return Intrinsic::mips_insert_d;	 // "__builtin_msa_insert_d"
        case 'h':	 // 1 string to match.
          return Intrinsic::mips_insert_h;	 // "__builtin_msa_insert_h"
        case 'w':	 // 1 string to match.
          return Intrinsic::mips_insert_w;	 // "__builtin_msa_insert_w"
        }
        break;
      case 'm':	 // 22 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'a':	 // 10 strings to match.
          switch (BuiltinName[16]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+17, "d_q_", 4))
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_madd_q_h;	 // "__builtin_msa_madd_q_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_madd_q_w;	 // "__builtin_msa_madd_q_w"
            }
            break;
          case 'x':	 // 8 strings to match.
            if (memcmp(BuiltinName.data()+17, "i_", 2))
              break;
            switch (BuiltinName[19]) {
            default: break;
            case 's':	 // 4 strings to match.
              if (BuiltinName[20] != '_')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_maxi_s_b;	 // "__builtin_msa_maxi_s_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_maxi_s_d;	 // "__builtin_msa_maxi_s_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_maxi_s_h;	 // "__builtin_msa_maxi_s_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_maxi_s_w;	 // "__builtin_msa_maxi_s_w"
              }
              break;
            case 'u':	 // 4 strings to match.
              if (BuiltinName[20] != '_')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case 'b':	 // 1 string to match.
                return Intrinsic::mips_maxi_u_b;	 // "__builtin_msa_maxi_u_b"
              case 'd':	 // 1 string to match.
                return Intrinsic::mips_maxi_u_d;	 // "__builtin_msa_maxi_u_d"
              case 'h':	 // 1 string to match.
                return Intrinsic::mips_maxi_u_h;	 // "__builtin_msa_maxi_u_h"
              case 'w':	 // 1 string to match.
                return Intrinsic::mips_maxi_u_w;	 // "__builtin_msa_maxi_u_w"
              }
              break;
            }
            break;
          }
          break;
        case 'i':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+16, "ni_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_mini_s_b;	 // "__builtin_msa_mini_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_mini_s_d;	 // "__builtin_msa_mini_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_mini_s_h;	 // "__builtin_msa_mini_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_mini_s_w;	 // "__builtin_msa_mini_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_mini_u_b;	 // "__builtin_msa_mini_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_mini_u_d;	 // "__builtin_msa_mini_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_mini_u_h;	 // "__builtin_msa_mini_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_mini_u_w;	 // "__builtin_msa_mini_u_w"
            }
            break;
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "ub_q_", 5))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_msub_q_h;	 // "__builtin_msa_msub_q_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_msub_q_w;	 // "__builtin_msa_msub_q_w"
          }
          break;
        case 'u':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "lr_q_", 5))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_mulr_q_h;	 // "__builtin_msa_mulr_q_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_mulr_q_w;	 // "__builtin_msa_mulr_q_w"
          }
          break;
        }
        break;
      case 's':	 // 12 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'p':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "lati_", 5))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_splati_b;	 // "__builtin_msa_splati_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_splati_d;	 // "__builtin_msa_splati_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_splati_h;	 // "__builtin_msa_splati_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_splati_w;	 // "__builtin_msa_splati_w"
          }
          break;
        case 'u':	 // 8 strings to match.
          if (memcmp(BuiltinName.data()+16, "bs_", 3))
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 's':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_subs_s_b;	 // "__builtin_msa_subs_s_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_subs_s_d;	 // "__builtin_msa_subs_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_subs_s_h;	 // "__builtin_msa_subs_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_subs_s_w;	 // "__builtin_msa_subs_s_w"
            }
            break;
          case 'u':	 // 4 strings to match.
            if (BuiltinName[20] != '_')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::mips_subs_u_b;	 // "__builtin_msa_subs_u_b"
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_subs_u_d;	 // "__builtin_msa_subs_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_subs_u_h;	 // "__builtin_msa_subs_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_subs_u_w;	 // "__builtin_msa_subs_u_w"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 23:	 // 40 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_m", 11))
      break;
    switch (BuiltinName[11]) {
    default: break;
    case 'i':	 // 16 strings to match.
      if (memcmp(BuiltinName.data()+12, "ps_", 3))
        break;
      switch (BuiltinName[15]) {
      default: break;
      case 'a':	 // 4 strings to match.
        switch (BuiltinName[16]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+17, "sq_s_w", 6))
            break;
          return Intrinsic::mips_absq_s_w;	 // "__builtin_mips_absq_s_w"
        case 'd':	 // 3 strings to match.
          if (BuiltinName[17] != 'd')
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 'q':	 // 2 strings to match.
            switch (BuiltinName[19]) {
            default: break;
            case '_':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+20, "s_w", 3))
                break;
              return Intrinsic::mips_addq_s_w;	 // "__builtin_mips_addq_s_w"
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+20, "_ph", 3))
                break;
              return Intrinsic::mips_addqh_ph;	 // "__builtin_mips_addqh_ph"
            }
            break;
          case 'u':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+19, "h_qb", 4))
              break;
            return Intrinsic::mips_adduh_qb;	 // "__builtin_mips_adduh_qb"
          }
          break;
        }
        break;
      case 'b':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "posge32", 7))
          break;
        return Intrinsic::mips_bposge32;	 // "__builtin_mips_bposge32"
      case 'd':	 // 2 strings to match.
        if (BuiltinName[16] != 'p')
          break;
        switch (BuiltinName[17]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "_w_ph", 5))
            break;
          return Intrinsic::mips_dpa_w_ph;	 // "__builtin_mips_dpa_w_ph"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "_w_ph", 5))
            break;
          return Intrinsic::mips_dps_w_ph;	 // "__builtin_mips_dps_w_ph"
        }
        break;
      case 'e':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+16, "xtr_", 4))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "_w", 2))
            break;
          return Intrinsic::mips_extr_r_w;	 // "__builtin_mips_extr_r_w"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "_h", 2))
            break;
          return Intrinsic::mips_extr_s_h;	 // "__builtin_mips_extr_s_h"
        }
        break;
      case 'm':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+16, "ul", 2))
          break;
        switch (BuiltinName[18]) {
        default: break;
        case '_':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+19, "s_ph", 4))
            break;
          return Intrinsic::mips_mul_s_ph;	 // "__builtin_mips_mul_s_ph"
        case 'q':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+19, "_s_w", 4))
            break;
          return Intrinsic::mips_mulq_s_w;	 // "__builtin_mips_mulq_s_w"
        }
        break;
      case 's':	 // 5 strings to match.
        switch (BuiltinName[16]) {
        default: break;
        case 'h':	 // 2 strings to match.
          switch (BuiltinName[17]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+18, "l_s_w", 5))
              break;
            return Intrinsic::mips_shll_s_w;	 // "__builtin_mips_shll_s_w"
          case 'r':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+18, "a_r_w", 5))
              break;
            return Intrinsic::mips_shra_r_w;	 // "__builtin_mips_shra_r_w"
          }
          break;
        case 'u':	 // 3 strings to match.
          if (BuiltinName[17] != 'b')
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 'q':	 // 2 strings to match.
            switch (BuiltinName[19]) {
            default: break;
            case '_':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+20, "s_w", 3))
                break;
              return Intrinsic::mips_subq_s_w;	 // "__builtin_mips_subq_s_w"
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+20, "_ph", 3))
                break;
              return Intrinsic::mips_subqh_ph;	 // "__builtin_mips_subqh_ph"
            }
            break;
          case 'u':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+19, "h_qb", 4))
              break;
            return Intrinsic::mips_subuh_qb;	 // "__builtin_mips_subuh_qb"
          }
          break;
        }
        break;
      }
      break;
    case 's':	 // 24 strings to match.
      if (memcmp(BuiltinName.data()+12, "a_", 2))
        break;
      switch (BuiltinName[14]) {
      default: break;
      case 'd':	 // 12 strings to match.
        if (BuiltinName[15] != 'p')
          break;
        switch (BuiltinName[16]) {
        default: break;
        case 'a':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+17, "dd_", 3))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 's':	 // 3 strings to match.
            if (BuiltinName[21] != '_')
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_dpadd_s_d;	 // "__builtin_msa_dpadd_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_dpadd_s_h;	 // "__builtin_msa_dpadd_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_dpadd_s_w;	 // "__builtin_msa_dpadd_s_w"
            }
            break;
          case 'u':	 // 3 strings to match.
            if (BuiltinName[21] != '_')
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_dpadd_u_d;	 // "__builtin_msa_dpadd_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_dpadd_u_h;	 // "__builtin_msa_dpadd_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_dpadd_u_w;	 // "__builtin_msa_dpadd_u_w"
            }
            break;
          }
          break;
        case 's':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+17, "ub_", 3))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 's':	 // 3 strings to match.
            if (BuiltinName[21] != '_')
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_dpsub_s_d;	 // "__builtin_msa_dpsub_s_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_dpsub_s_h;	 // "__builtin_msa_dpsub_s_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_dpsub_s_w;	 // "__builtin_msa_dpsub_s_w"
            }
            break;
          case 'u':	 // 3 strings to match.
            if (BuiltinName[21] != '_')
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_dpsub_u_d;	 // "__builtin_msa_dpsub_u_d"
            case 'h':	 // 1 string to match.
              return Intrinsic::mips_dpsub_u_h;	 // "__builtin_msa_dpsub_u_h"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_dpsub_u_w;	 // "__builtin_msa_dpsub_u_w"
            }
            break;
          }
          break;
        }
        break;
      case 'f':	 // 8 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'f':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "int_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 's':	 // 2 strings to match.
            if (BuiltinName[21] != '_')
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ffint_s_d;	 // "__builtin_msa_ffint_s_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ffint_s_w;	 // "__builtin_msa_ffint_s_w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (BuiltinName[21] != '_')
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ffint_u_d;	 // "__builtin_msa_ffint_u_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ffint_u_w;	 // "__builtin_msa_ffint_u_w"
            }
            break;
          }
          break;
        case 't':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+16, "int_", 4))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 's':	 // 2 strings to match.
            if (BuiltinName[21] != '_')
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ftint_s_d;	 // "__builtin_msa_ftint_s_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ftint_s_w;	 // "__builtin_msa_ftint_s_w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (BuiltinName[21] != '_')
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::mips_ftint_u_d;	 // "__builtin_msa_ftint_u_d"
            case 'w':	 // 1 string to match.
              return Intrinsic::mips_ftint_u_w;	 // "__builtin_msa_ftint_u_w"
            }
            break;
          }
          break;
        }
        break;
      case 'm':	 // 4 strings to match.
        switch (BuiltinName[15]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "ddr_q_", 6))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_maddr_q_h;	 // "__builtin_msa_maddr_q_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_maddr_q_w;	 // "__builtin_msa_maddr_q_w"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+16, "ubr_q_", 6))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_msubr_q_h;	 // "__builtin_msa_msubr_q_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_msubr_q_w;	 // "__builtin_msa_msubr_q_w"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 24:	 // 34 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_m", 11))
      break;
    switch (BuiltinName[11]) {
    default: break;
    case 'i':	 // 22 strings to match.
      if (memcmp(BuiltinName.data()+12, "ps_", 3))
        break;
      switch (BuiltinName[15]) {
      default: break;
      case 'a':	 // 6 strings to match.
        switch (BuiltinName[16]) {
        default: break;
        case 'b':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+17, "sq_s_", 5))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case 'p':	 // 1 string to match.
            if (BuiltinName[23] != 'h')
              break;
            return Intrinsic::mips_absq_s_ph;	 // "__builtin_mips_absq_s_ph"
          case 'q':	 // 1 string to match.
            if (BuiltinName[23] != 'b')
              break;
            return Intrinsic::mips_absq_s_qb;	 // "__builtin_mips_absq_s_qb"
          }
          break;
        case 'd':	 // 4 strings to match.
          if (BuiltinName[17] != 'd')
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 'q':	 // 2 strings to match.
            switch (BuiltinName[19]) {
            default: break;
            case '_':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+20, "s_ph", 4))
                break;
              return Intrinsic::mips_addq_s_ph;	 // "__builtin_mips_addq_s_ph"
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+20, "_r_w", 4))
                break;
              return Intrinsic::mips_addqh_r_w;	 // "__builtin_mips_addqh_r_w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+19, "_s_", 3))
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (BuiltinName[23] != 'h')
                break;
              return Intrinsic::mips_addu_s_ph;	 // "__builtin_mips_addu_s_ph"
            case 'q':	 // 1 string to match.
              if (BuiltinName[23] != 'b')
                break;
              return Intrinsic::mips_addu_s_qb;	 // "__builtin_mips_addu_s_qb"
            }
            break;
          }
          break;
        }
        break;
      case 'c':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+16, "mp_", 3))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "q_ph", 4))
            break;
          return Intrinsic::mips_cmp_eq_ph;	 // "__builtin_mips_cmp_eq_ph"
        case 'l':	 // 2 strings to match.
          switch (BuiltinName[20]) {
          default: break;
          case 'e':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+21, "_ph", 3))
              break;
            return Intrinsic::mips_cmp_le_ph;	 // "__builtin_mips_cmp_le_ph"
          case 't':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+21, "_ph", 3))
              break;
            return Intrinsic::mips_cmp_lt_ph;	 // "__builtin_mips_cmp_lt_ph"
          }
          break;
        }
        break;
      case 'd':	 // 2 strings to match.
        if (BuiltinName[16] != 'p')
          break;
        switch (BuiltinName[17]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "x_w_ph", 6))
            break;
          return Intrinsic::mips_dpax_w_ph;	 // "__builtin_mips_dpax_w_ph"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "x_w_ph", 6))
            break;
          return Intrinsic::mips_dpsx_w_ph;	 // "__builtin_mips_dpsx_w_ph"
        }
        break;
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "xtr_rs_w", 8))
          break;
        return Intrinsic::mips_extr_rs_w;	 // "__builtin_mips_extr_rs_w"
      case 'm':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+16, "ulq_", 4))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "s_w", 3))
            break;
          return Intrinsic::mips_mulq_rs_w;	 // "__builtin_mips_mulq_rs_w"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "_ph", 3))
            break;
          return Intrinsic::mips_mulq_s_ph;	 // "__builtin_mips_mulq_s_ph"
        }
        break;
      case 'p':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+16, "ackrl_ph", 8))
          break;
        return Intrinsic::mips_packrl_ph;	 // "__builtin_mips_packrl_ph"
      case 's':	 // 7 strings to match.
        switch (BuiltinName[16]) {
        default: break;
        case 'h':	 // 3 strings to match.
          switch (BuiltinName[17]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+18, "l_s_ph", 6))
              break;
            return Intrinsic::mips_shll_s_ph;	 // "__builtin_mips_shll_s_ph"
          case 'r':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+18, "a_r_", 4))
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (BuiltinName[23] != 'h')
                break;
              return Intrinsic::mips_shra_r_ph;	 // "__builtin_mips_shra_r_ph"
            case 'q':	 // 1 string to match.
              if (BuiltinName[23] != 'b')
                break;
              return Intrinsic::mips_shra_r_qb;	 // "__builtin_mips_shra_r_qb"
            }
            break;
          }
          break;
        case 'u':	 // 4 strings to match.
          if (BuiltinName[17] != 'b')
            break;
          switch (BuiltinName[18]) {
          default: break;
          case 'q':	 // 2 strings to match.
            switch (BuiltinName[19]) {
            default: break;
            case '_':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+20, "s_ph", 4))
                break;
              return Intrinsic::mips_subq_s_ph;	 // "__builtin_mips_subq_s_ph"
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+20, "_r_w", 4))
                break;
              return Intrinsic::mips_subqh_r_w;	 // "__builtin_mips_subqh_r_w"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+19, "_s_", 3))
              break;
            switch (BuiltinName[22]) {
            default: break;
            case 'p':	 // 1 string to match.
              if (BuiltinName[23] != 'h')
                break;
              return Intrinsic::mips_subu_s_ph;	 // "__builtin_mips_subu_s_ph"
            case 'q':	 // 1 string to match.
              if (BuiltinName[23] != 'b')
                break;
              return Intrinsic::mips_subu_s_qb;	 // "__builtin_mips_subu_s_qb"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 's':	 // 12 strings to match.
      if (memcmp(BuiltinName.data()+12, "a_", 2))
        break;
      switch (BuiltinName[14]) {
      default: break;
      case 'f':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+15, "trunc_", 6))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 's':	 // 2 strings to match.
          if (BuiltinName[22] != '_')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ftrunc_s_d;	 // "__builtin_msa_ftrunc_s_d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ftrunc_s_w;	 // "__builtin_msa_ftrunc_s_w"
          }
          break;
        case 'u':	 // 2 strings to match.
          if (BuiltinName[22] != '_')
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_ftrunc_u_d;	 // "__builtin_msa_ftrunc_u_d"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_ftrunc_u_w;	 // "__builtin_msa_ftrunc_u_w"
          }
          break;
        }
        break;
      case 's':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+15, "ubsu", 4))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 's':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+20, "_u_", 3))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_subsus_u_b;	 // "__builtin_msa_subsus_u_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_subsus_u_d;	 // "__builtin_msa_subsus_u_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_subsus_u_h;	 // "__builtin_msa_subsus_u_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_subsus_u_w;	 // "__builtin_msa_subsus_u_w"
          }
          break;
        case 'u':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+20, "_s_", 3))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::mips_subsuu_s_b;	 // "__builtin_msa_subsuu_s_b"
          case 'd':	 // 1 string to match.
            return Intrinsic::mips_subsuu_s_d;	 // "__builtin_msa_subsuu_s_d"
          case 'h':	 // 1 string to match.
            return Intrinsic::mips_subsuu_s_h;	 // "__builtin_msa_subsuu_s_h"
          case 'w':	 // 1 string to match.
            return Intrinsic::mips_subsuu_s_w;	 // "__builtin_msa_subsuu_s_w"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 25:	 // 14 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'a':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "dd", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'q':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "h_r_ph", 6))
          break;
        return Intrinsic::mips_addqh_r_ph;	 // "__builtin_mips_addqh_r_ph"
      case 'u':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "h_r_qb", 6))
          break;
        return Intrinsic::mips_adduh_r_qb;	 // "__builtin_mips_adduh_r_qb"
      }
      break;
    case 'c':	 // 3 strings to match.
      if (memcmp(BuiltinName.data()+16, "mpu_", 4))
        break;
      switch (BuiltinName[20]) {
      default: break;
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "q_qb", 4))
          break;
        return Intrinsic::mips_cmpu_eq_qb;	 // "__builtin_mips_cmpu_eq_qb"
      case 'l':	 // 2 strings to match.
        switch (BuiltinName[21]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "_qb", 3))
            break;
          return Intrinsic::mips_cmpu_le_qb;	 // "__builtin_mips_cmpu_le_qb"
        case 't':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "_qb", 3))
            break;
          return Intrinsic::mips_cmpu_lt_qb;	 // "__builtin_mips_cmpu_lt_qb"
        }
        break;
      }
      break;
    case 'd':	 // 4 strings to match.
      if (BuiltinName[16] != 'p')
        break;
      switch (BuiltinName[17]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+18, "u_h_qb", 6))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'l':	 // 1 string to match.
          return Intrinsic::mips_dpau_h_qbl;	 // "__builtin_mips_dpau_h_qbl"
        case 'r':	 // 1 string to match.
          return Intrinsic::mips_dpau_h_qbr;	 // "__builtin_mips_dpau_h_qbr"
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+18, "u_h_qb", 6))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'l':	 // 1 string to match.
          return Intrinsic::mips_dpsu_h_qbl;	 // "__builtin_mips_dpsu_h_qbl"
        case 'r':	 // 1 string to match.
          return Intrinsic::mips_dpsu_h_qbr;	 // "__builtin_mips_dpsu_h_qbr"
        }
        break;
      }
      break;
    case 'm':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "ul", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'q':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "_rs_ph", 6))
          break;
        return Intrinsic::mips_mulq_rs_ph;	 // "__builtin_mips_mulq_rs_ph"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "a_w_ph", 6))
          break;
        return Intrinsic::mips_mulsa_w_ph;	 // "__builtin_mips_mulsa_w_ph"
      }
      break;
    case 'r':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "addu_w_qb", 9))
        break;
      return Intrinsic::mips_raddu_w_qb;	 // "__builtin_mips_raddu_w_qb"
    case 's':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "ub", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'q':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "h_r_ph", 6))
          break;
        return Intrinsic::mips_subqh_r_ph;	 // "__builtin_mips_subqh_r_ph"
      case 'u':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "h_r_qb", 6))
          break;
        return Intrinsic::mips_subuh_r_qb;	 // "__builtin_mips_subuh_r_qb"
      }
      break;
    }
    break;
  case 26:	 // 11 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'c':	 // 3 strings to match.
      if (memcmp(BuiltinName.data()+16, "mpgu_", 5))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "q_qb", 4))
          break;
        return Intrinsic::mips_cmpgu_eq_qb;	 // "__builtin_mips_cmpgu_eq_qb"
      case 'l':	 // 2 strings to match.
        switch (BuiltinName[22]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "_qb", 3))
            break;
          return Intrinsic::mips_cmpgu_le_qb;	 // "__builtin_mips_cmpgu_le_qb"
        case 't':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "_qb", 3))
            break;
          return Intrinsic::mips_cmpgu_lt_qb;	 // "__builtin_mips_cmpgu_lt_qb"
        }
        break;
      }
      break;
    case 'd':	 // 4 strings to match.
      if (BuiltinName[16] != 'p')
        break;
      switch (BuiltinName[17]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+18, "q_s", 3))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case '_':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "w_ph", 4))
            break;
          return Intrinsic::mips_dpaq_s_w_ph;	 // "__builtin_mips_dpaq_s_w_ph"
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "_l_w", 4))
            break;
          return Intrinsic::mips_dpaq_sa_l_w;	 // "__builtin_mips_dpaq_sa_l_w"
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+18, "q_s", 3))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case '_':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "w_ph", 4))
            break;
          return Intrinsic::mips_dpsq_s_w_ph;	 // "__builtin_mips_dpsq_s_w_ph"
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "_l_w", 4))
            break;
          return Intrinsic::mips_dpsq_sa_l_w;	 // "__builtin_mips_dpsq_sa_l_w"
        }
        break;
      }
      break;
    case 'm':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "aq_s_w_ph", 9))
        break;
      switch (BuiltinName[25]) {
      default: break;
      case 'l':	 // 1 string to match.
        return Intrinsic::mips_maq_s_w_phl;	 // "__builtin_mips_maq_s_w_phl"
      case 'r':	 // 1 string to match.
        return Intrinsic::mips_maq_s_w_phr;	 // "__builtin_mips_maq_s_w_phr"
      }
      break;
    case 'p':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "recr", 4))
        break;
      switch (BuiltinName[20]) {
      default: break;
      case '_':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "qb_ph", 5))
          break;
        return Intrinsic::mips_precr_qb_ph;	 // "__builtin_mips_precr_qb_ph"
      case 'q':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "_ph_w", 5))
          break;
        return Intrinsic::mips_precrq_ph_w;	 // "__builtin_mips_precrq_ph_w"
      }
      break;
    }
    break;
  case 27:	 // 10 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'c':	 // 3 strings to match.
      if (memcmp(BuiltinName.data()+16, "mpgdu_", 6))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "q_qb", 4))
          break;
        return Intrinsic::mips_cmpgdu_eq_qb;	 // "__builtin_mips_cmpgdu_eq_qb"
      case 'l':	 // 2 strings to match.
        switch (BuiltinName[23]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "_qb", 3))
            break;
          return Intrinsic::mips_cmpgdu_le_qb;	 // "__builtin_mips_cmpgdu_le_qb"
        case 't':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "_qb", 3))
            break;
          return Intrinsic::mips_cmpgdu_lt_qb;	 // "__builtin_mips_cmpgdu_lt_qb"
        }
        break;
      }
      break;
    case 'd':	 // 2 strings to match.
      if (BuiltinName[16] != 'p')
        break;
      switch (BuiltinName[17]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+18, "qx_s_w_ph", 9))
          break;
        return Intrinsic::mips_dpaqx_s_w_ph;	 // "__builtin_mips_dpaqx_s_w_ph"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+18, "qx_s_w_ph", 9))
          break;
        return Intrinsic::mips_dpsqx_s_w_ph;	 // "__builtin_mips_dpsqx_s_w_ph"
      }
      break;
    case 'm':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "aq_sa_w_ph", 10))
        break;
      switch (BuiltinName[26]) {
      default: break;
      case 'l':	 // 1 string to match.
        return Intrinsic::mips_maq_sa_w_phl;	 // "__builtin_mips_maq_sa_w_phl"
      case 'r':	 // 1 string to match.
        return Intrinsic::mips_maq_sa_w_phr;	 // "__builtin_mips_maq_sa_w_phr"
      }
      break;
    case 'p':	 // 3 strings to match.
      if (memcmp(BuiltinName.data()+16, "rec", 3))
        break;
      switch (BuiltinName[19]) {
      default: break;
      case 'e':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+20, "q_w_ph", 6))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'l':	 // 1 string to match.
          return Intrinsic::mips_preceq_w_phl;	 // "__builtin_mips_preceq_w_phl"
        case 'r':	 // 1 string to match.
          return Intrinsic::mips_preceq_w_phr;	 // "__builtin_mips_preceq_w_phr"
        }
        break;
      case 'r':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "q_qb_ph", 7))
          break;
        return Intrinsic::mips_precrq_qb_ph;	 // "__builtin_mips_precrq_qb_ph"
      }
      break;
    }
    break;
  case 28:	 // 7 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'd':	 // 2 strings to match.
      if (BuiltinName[16] != 'p')
        break;
      switch (BuiltinName[17]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+18, "qx_sa_w_ph", 10))
          break;
        return Intrinsic::mips_dpaqx_sa_w_ph;	 // "__builtin_mips_dpaqx_sa_w_ph"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+18, "qx_sa_w_ph", 10))
          break;
        return Intrinsic::mips_dpsqx_sa_w_ph;	 // "__builtin_mips_dpsqx_sa_w_ph"
      }
      break;
    case 'm':	 // 3 strings to match.
      if (memcmp(BuiltinName.data()+16, "ul", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'e':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+19, "q_s_w_ph", 8))
          break;
        switch (BuiltinName[27]) {
        default: break;
        case 'l':	 // 1 string to match.
          return Intrinsic::mips_muleq_s_w_phl;	 // "__builtin_mips_muleq_s_w_phl"
        case 'r':	 // 1 string to match.
          return Intrinsic::mips_muleq_s_w_phr;	 // "__builtin_mips_muleq_s_w_phr"
        }
        break;
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "aq_s_w_ph", 9))
          break;
        return Intrinsic::mips_mulsaq_s_w_ph;	 // "__builtin_mips_mulsaq_s_w_ph"
      }
      break;
    case 'p':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "receu_ph_qb", 11))
        break;
      switch (BuiltinName[27]) {
      default: break;
      case 'l':	 // 1 string to match.
        return Intrinsic::mips_preceu_ph_qbl;	 // "__builtin_mips_preceu_ph_qbl"
      case 'r':	 // 1 string to match.
        return Intrinsic::mips_preceu_ph_qbr;	 // "__builtin_mips_preceu_ph_qbr"
      }
      break;
    }
    break;
  case 29:	 // 8 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'm':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "uleu_s_ph_qb", 12))
        break;
      switch (BuiltinName[28]) {
      default: break;
      case 'l':	 // 1 string to match.
        return Intrinsic::mips_muleu_s_ph_qbl;	 // "__builtin_mips_muleu_s_ph_qbl"
      case 'r':	 // 1 string to match.
        return Intrinsic::mips_muleu_s_ph_qbr;	 // "__builtin_mips_muleu_s_ph_qbr"
      }
      break;
    case 'p':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+16, "rec", 3))
        break;
      switch (BuiltinName[19]) {
      default: break;
      case 'e':	 // 4 strings to match.
        switch (BuiltinName[20]) {
        default: break;
        case 'q':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+21, "u_ph_qb", 7))
            break;
          switch (BuiltinName[28]) {
          default: break;
          case 'l':	 // 1 string to match.
            return Intrinsic::mips_precequ_ph_qbl;	 // "__builtin_mips_precequ_ph_qbl"
          case 'r':	 // 1 string to match.
            return Intrinsic::mips_precequ_ph_qbr;	 // "__builtin_mips_precequ_ph_qbr"
          }
          break;
        case 'u':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+21, "_ph_qb", 6))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 'l':	 // 1 string to match.
            if (BuiltinName[28] != 'a')
              break;
            return Intrinsic::mips_preceu_ph_qbla;	 // "__builtin_mips_preceu_ph_qbla"
          case 'r':	 // 1 string to match.
            if (BuiltinName[28] != 'a')
              break;
            return Intrinsic::mips_preceu_ph_qbra;	 // "__builtin_mips_preceu_ph_qbra"
          }
          break;
        }
        break;
      case 'r':	 // 2 strings to match.
        switch (BuiltinName[20]) {
        default: break;
        case '_':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "sra_ph_w", 8))
            break;
          return Intrinsic::mips_precr_sra_ph_w;	 // "__builtin_mips_precr_sra_ph_w"
        case 'q':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "_rs_ph_w", 8))
            break;
          return Intrinsic::mips_precrq_rs_ph_w;	 // "__builtin_mips_precrq_rs_ph_w"
        }
        break;
      }
      break;
    }
    break;
  case 30:	 // 3 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_mips_prec", 19))
      break;
    switch (BuiltinName[19]) {
    default: break;
    case 'e':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+20, "qu_ph_qb", 8))
        break;
      switch (BuiltinName[28]) {
      default: break;
      case 'l':	 // 1 string to match.
        if (BuiltinName[29] != 'a')
          break;
        return Intrinsic::mips_precequ_ph_qbla;	 // "__builtin_mips_precequ_ph_qbla"
      case 'r':	 // 1 string to match.
        if (BuiltinName[29] != 'a')
          break;
        return Intrinsic::mips_precequ_ph_qbra;	 // "__builtin_mips_precequ_ph_qbra"
      }
      break;
    case 'r':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+20, "qu_s_qb_ph", 10))
        break;
      return Intrinsic::mips_precrqu_s_qb_ph;	 // "__builtin_mips_precrqu_s_qb_ph"
    }
    break;
  case 31:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_mips_precr_sra_r_ph_w", 31))
      break;
    return Intrinsic::mips_precr_sra_r_ph_w;	 // "__builtin_mips_precr_sra_r_ph_w"
  }
  }
  if (TargetPrefix == "ppc") {
  switch (BuiltinName.size()) {
  default: break;
  case 21:	 // 4 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'd':	 // 2 strings to match.
      if (BuiltinName[19] != 's')
        break;
      switch (BuiltinName[20]) {
      default: break;
      case 's':	 // 1 string to match.
        return Intrinsic::ppc_altivec_dss;	 // "__builtin_altivec_dss"
      case 't':	 // 1 string to match.
        return Intrinsic::ppc_altivec_dst;	 // "__builtin_altivec_dst"
      }
      break;
    case 'v':	 // 2 strings to match.
      if (BuiltinName[19] != 's')
        break;
      switch (BuiltinName[20]) {
      default: break;
      case 'l':	 // 1 string to match.
        return Intrinsic::ppc_altivec_vsl;	 // "__builtin_altivec_vsl"
      case 'r':	 // 1 string to match.
        return Intrinsic::ppc_altivec_vsr;	 // "__builtin_altivec_vsr"
      }
      break;
    }
    break;
  case 22:	 // 12 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'd':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+19, "stt", 3))
        break;
      return Intrinsic::ppc_altivec_dstt;	 // "__builtin_altivec_dstt"
    case 'v':	 // 11 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case 'r':	 // 3 strings to match.
        if (BuiltinName[20] != 'l')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::ppc_altivec_vrlb;	 // "__builtin_altivec_vrlb"
        case 'h':	 // 1 string to match.
          return Intrinsic::ppc_altivec_vrlh;	 // "__builtin_altivec_vrlh"
        case 'w':	 // 1 string to match.
          return Intrinsic::ppc_altivec_vrlw;	 // "__builtin_altivec_vrlw"
        }
        break;
      case 's':	 // 8 strings to match.
        switch (BuiltinName[20]) {
        default: break;
        case 'l':	 // 4 strings to match.
          switch (BuiltinName[21]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vslb;	 // "__builtin_altivec_vslb"
          case 'h':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vslh;	 // "__builtin_altivec_vslh"
          case 'o':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vslo;	 // "__builtin_altivec_vslo"
          case 'w':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vslw;	 // "__builtin_altivec_vslw"
          }
          break;
        case 'r':	 // 4 strings to match.
          switch (BuiltinName[21]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vsrb;	 // "__builtin_altivec_vsrb"
          case 'h':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vsrh;	 // "__builtin_altivec_vsrh"
          case 'o':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vsro;	 // "__builtin_altivec_vsro"
          case 'w':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vsrw;	 // "__builtin_altivec_vsrw"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 23:	 // 12 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'd':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+19, "stst", 4))
        break;
      return Intrinsic::ppc_altivec_dstst;	 // "__builtin_altivec_dstst"
    case 'v':	 // 11 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case 'c':	 // 2 strings to match.
        if (BuiltinName[20] != 'f')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 's':	 // 1 string to match.
          if (BuiltinName[22] != 'x')
            break;
          return Intrinsic::ppc_altivec_vcfsx;	 // "__builtin_altivec_vcfsx"
        case 'u':	 // 1 string to match.
          if (BuiltinName[22] != 'x')
            break;
          return Intrinsic::ppc_altivec_vcfux;	 // "__builtin_altivec_vcfux"
        }
        break;
      case 'p':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "kpx", 3))
          break;
        return Intrinsic::ppc_altivec_vpkpx;	 // "__builtin_altivec_vpkpx"
      case 'r':	 // 5 strings to match.
        switch (BuiltinName[20]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "fp", 2))
            break;
          return Intrinsic::ppc_altivec_vrefp;	 // "__builtin_altivec_vrefp"
        case 'f':	 // 4 strings to match.
          if (BuiltinName[21] != 'i')
            break;
          switch (BuiltinName[22]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vrfim;	 // "__builtin_altivec_vrfim"
          case 'n':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vrfin;	 // "__builtin_altivec_vrfin"
          case 'p':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vrfip;	 // "__builtin_altivec_vrfip"
          case 'z':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vrfiz;	 // "__builtin_altivec_vrfiz"
          }
          break;
        }
        break;
      case 's':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+20, "ra", 2))
          break;
        switch (BuiltinName[22]) {
        default: break;
        case 'b':	 // 1 string to match.
          return Intrinsic::ppc_altivec_vsrab;	 // "__builtin_altivec_vsrab"
        case 'h':	 // 1 string to match.
          return Intrinsic::ppc_altivec_vsrah;	 // "__builtin_altivec_vsrah"
        case 'w':	 // 1 string to match.
          return Intrinsic::ppc_altivec_vsraw;	 // "__builtin_altivec_vsraw"
        }
        break;
      }
      break;
    }
    break;
  case 24:	 // 26 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
      break;
    switch (BuiltinName[18]) {
    default: break;
    case 'd':	 // 2 strings to match.
      if (BuiltinName[19] != 's')
        break;
      switch (BuiltinName[20]) {
      default: break;
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "all", 3))
          break;
        return Intrinsic::ppc_altivec_dssall;	 // "__builtin_altivec_dssall"
      case 't':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "stt", 3))
          break;
        return Intrinsic::ppc_altivec_dststt;	 // "__builtin_altivec_dststt"
      }
      break;
    case 'm':	 // 2 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case 'f':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "vscr", 4))
          break;
        return Intrinsic::ppc_altivec_mfvscr;	 // "__builtin_altivec_mfvscr"
      case 't':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "vscr", 4))
          break;
        return Intrinsic::ppc_altivec_mtvscr;	 // "__builtin_altivec_mtvscr"
      }
      break;
    case 'v':	 // 22 strings to match.
      switch (BuiltinName[19]) {
      default: break;
      case 'a':	 // 6 strings to match.
        if (memcmp(BuiltinName.data()+20, "vg", 2))
          break;
        switch (BuiltinName[22]) {
        default: break;
        case 's':	 // 3 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vavgsb;	 // "__builtin_altivec_vavgsb"
          case 'h':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vavgsh;	 // "__builtin_altivec_vavgsh"
          case 'w':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vavgsw;	 // "__builtin_altivec_vavgsw"
          }
          break;
        case 'u':	 // 3 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vavgub;	 // "__builtin_altivec_vavgub"
          case 'h':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vavguh;	 // "__builtin_altivec_vavguh"
          case 'w':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vavguw;	 // "__builtin_altivec_vavguw"
          }
          break;
        }
        break;
      case 'c':	 // 2 strings to match.
        if (BuiltinName[20] != 't')
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "xs", 2))
            break;
          return Intrinsic::ppc_altivec_vctsxs;	 // "__builtin_altivec_vctsxs"
        case 'u':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "xs", 2))
            break;
          return Intrinsic::ppc_altivec_vctuxs;	 // "__builtin_altivec_vctuxs"
        }
        break;
      case 'm':	 // 14 strings to match.
        switch (BuiltinName[20]) {
        default: break;
        case 'a':	 // 7 strings to match.
          if (BuiltinName[21] != 'x')
            break;
          switch (BuiltinName[22]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (BuiltinName[23] != 'p')
              break;
            return Intrinsic::ppc_altivec_vmaxfp;	 // "__builtin_altivec_vmaxfp"
          case 's':	 // 3 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmaxsb;	 // "__builtin_altivec_vmaxsb"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmaxsh;	 // "__builtin_altivec_vmaxsh"
            case 'w':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmaxsw;	 // "__builtin_altivec_vmaxsw"
            }
            break;
          case 'u':	 // 3 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmaxub;	 // "__builtin_altivec_vmaxub"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmaxuh;	 // "__builtin_altivec_vmaxuh"
            case 'w':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmaxuw;	 // "__builtin_altivec_vmaxuw"
            }
            break;
          }
          break;
        case 'i':	 // 7 strings to match.
          if (BuiltinName[21] != 'n')
            break;
          switch (BuiltinName[22]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (BuiltinName[23] != 'p')
              break;
            return Intrinsic::ppc_altivec_vminfp;	 // "__builtin_altivec_vminfp"
          case 's':	 // 3 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vminsb;	 // "__builtin_altivec_vminsb"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vminsh;	 // "__builtin_altivec_vminsh"
            case 'w':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vminsw;	 // "__builtin_altivec_vminsw"
            }
            break;
          case 'u':	 // 3 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vminub;	 // "__builtin_altivec_vminub"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vminuh;	 // "__builtin_altivec_vminuh"
            case 'w':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vminuw;	 // "__builtin_altivec_vminuw"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 25:	 // 38 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
      break;
    switch (BuiltinName[19]) {
    default: break;
    case 'a':	 // 7 strings to match.
      if (memcmp(BuiltinName.data()+20, "dd", 2))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "uw", 2))
          break;
        return Intrinsic::ppc_altivec_vaddcuw;	 // "__builtin_altivec_vaddcuw"
      case 's':	 // 3 strings to match.
        switch (BuiltinName[23]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (BuiltinName[24] != 's')
            break;
          return Intrinsic::ppc_altivec_vaddsbs;	 // "__builtin_altivec_vaddsbs"
        case 'h':	 // 1 string to match.
          if (BuiltinName[24] != 's')
            break;
          return Intrinsic::ppc_altivec_vaddshs;	 // "__builtin_altivec_vaddshs"
        case 'w':	 // 1 string to match.
          if (BuiltinName[24] != 's')
            break;
          return Intrinsic::ppc_altivec_vaddsws;	 // "__builtin_altivec_vaddsws"
        }
        break;
      case 'u':	 // 3 strings to match.
        switch (BuiltinName[23]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (BuiltinName[24] != 's')
            break;
          return Intrinsic::ppc_altivec_vaddubs;	 // "__builtin_altivec_vaddubs"
        case 'h':	 // 1 string to match.
          if (BuiltinName[24] != 's')
            break;
          return Intrinsic::ppc_altivec_vadduhs;	 // "__builtin_altivec_vadduhs"
        case 'w':	 // 1 string to match.
          if (BuiltinName[24] != 's')
            break;
          return Intrinsic::ppc_altivec_vadduws;	 // "__builtin_altivec_vadduws"
        }
        break;
      }
      break;
    case 'c':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+20, "mpbfp", 5))
        break;
      return Intrinsic::ppc_altivec_vcmpbfp;	 // "__builtin_altivec_vcmpbfp"
    case 'l':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+20, "ogefp", 5))
        break;
      return Intrinsic::ppc_altivec_vlogefp;	 // "__builtin_altivec_vlogefp"
    case 'm':	 // 9 strings to match.
      switch (BuiltinName[20]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "ddfp", 4))
          break;
        return Intrinsic::ppc_altivec_vmaddfp;	 // "__builtin_altivec_vmaddfp"
      case 'u':	 // 8 strings to match.
        if (BuiltinName[21] != 'l')
          break;
        switch (BuiltinName[22]) {
        default: break;
        case 'e':	 // 4 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmulesb;	 // "__builtin_altivec_vmulesb"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmulesh;	 // "__builtin_altivec_vmulesh"
            }
            break;
          case 'u':	 // 2 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmuleub;	 // "__builtin_altivec_vmuleub"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmuleuh;	 // "__builtin_altivec_vmuleuh"
            }
            break;
          }
          break;
        case 'o':	 // 4 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmulosb;	 // "__builtin_altivec_vmulosb"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmulosh;	 // "__builtin_altivec_vmulosh"
            }
            break;
          case 'u':	 // 2 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmuloub;	 // "__builtin_altivec_vmuloub"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vmulouh;	 // "__builtin_altivec_vmulouh"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 'p':	 // 6 strings to match.
      if (BuiltinName[20] != 'k')
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 's':	 // 4 strings to match.
        switch (BuiltinName[22]) {
        default: break;
        case 'h':	 // 2 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 's':	 // 1 string to match.
            if (BuiltinName[24] != 's')
              break;
            return Intrinsic::ppc_altivec_vpkshss;	 // "__builtin_altivec_vpkshss"
          case 'u':	 // 1 string to match.
            if (BuiltinName[24] != 's')
              break;
            return Intrinsic::ppc_altivec_vpkshus;	 // "__builtin_altivec_vpkshus"
          }
          break;
        case 'w':	 // 2 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 's':	 // 1 string to match.
            if (BuiltinName[24] != 's')
              break;
            return Intrinsic::ppc_altivec_vpkswss;	 // "__builtin_altivec_vpkswss"
          case 'u':	 // 1 string to match.
            if (BuiltinName[24] != 's')
              break;
            return Intrinsic::ppc_altivec_vpkswus;	 // "__builtin_altivec_vpkswus"
          }
          break;
        }
        break;
      case 'u':	 // 2 strings to match.
        switch (BuiltinName[22]) {
        default: break;
        case 'h':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "us", 2))
            break;
          return Intrinsic::ppc_altivec_vpkuhus;	 // "__builtin_altivec_vpkuhus"
        case 'w':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "us", 2))
            break;
          return Intrinsic::ppc_altivec_vpkuwus;	 // "__builtin_altivec_vpkuwus"
        }
        break;
      }
      break;
    case 's':	 // 8 strings to match.
      if (BuiltinName[20] != 'u')
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'b':	 // 7 strings to match.
        switch (BuiltinName[22]) {
        default: break;
        case 'c':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "uw", 2))
            break;
          return Intrinsic::ppc_altivec_vsubcuw;	 // "__builtin_altivec_vsubcuw"
        case 's':	 // 3 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (BuiltinName[24] != 's')
              break;
            return Intrinsic::ppc_altivec_vsubsbs;	 // "__builtin_altivec_vsubsbs"
          case 'h':	 // 1 string to match.
            if (BuiltinName[24] != 's')
              break;
            return Intrinsic::ppc_altivec_vsubshs;	 // "__builtin_altivec_vsubshs"
          case 'w':	 // 1 string to match.
            if (BuiltinName[24] != 's')
              break;
            return Intrinsic::ppc_altivec_vsubsws;	 // "__builtin_altivec_vsubsws"
          }
          break;
        case 'u':	 // 3 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (BuiltinName[24] != 's')
              break;
            return Intrinsic::ppc_altivec_vsububs;	 // "__builtin_altivec_vsububs"
          case 'h':	 // 1 string to match.
            if (BuiltinName[24] != 's')
              break;
            return Intrinsic::ppc_altivec_vsubuhs;	 // "__builtin_altivec_vsubuhs"
          case 'w':	 // 1 string to match.
            if (BuiltinName[24] != 's')
              break;
            return Intrinsic::ppc_altivec_vsubuws;	 // "__builtin_altivec_vsubuws"
          }
          break;
        }
        break;
      case 'm':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "sws", 3))
          break;
        return Intrinsic::ppc_altivec_vsumsws;	 // "__builtin_altivec_vsumsws"
      }
      break;
    case 'u':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+20, "pk", 2))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'h':	 // 3 strings to match.
        switch (BuiltinName[23]) {
        default: break;
        case 'p':	 // 1 string to match.
          if (BuiltinName[24] != 'x')
            break;
          return Intrinsic::ppc_altivec_vupkhpx;	 // "__builtin_altivec_vupkhpx"
        case 's':	 // 2 strings to match.
          switch (BuiltinName[24]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vupkhsb;	 // "__builtin_altivec_vupkhsb"
          case 'h':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vupkhsh;	 // "__builtin_altivec_vupkhsh"
          }
          break;
        }
        break;
      case 'l':	 // 3 strings to match.
        switch (BuiltinName[23]) {
        default: break;
        case 'p':	 // 1 string to match.
          if (BuiltinName[24] != 'x')
            break;
          return Intrinsic::ppc_altivec_vupklpx;	 // "__builtin_altivec_vupklpx"
        case 's':	 // 2 strings to match.
          switch (BuiltinName[24]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vupklsb;	 // "__builtin_altivec_vupklsb"
          case 'h':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vupklsh;	 // "__builtin_altivec_vupklsh"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 26:	 // 25 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
      break;
    switch (BuiltinName[19]) {
    default: break;
    case 'c':	 // 12 strings to match.
      if (memcmp(BuiltinName.data()+20, "mp", 2))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'e':	 // 4 strings to match.
        if (BuiltinName[23] != 'q')
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (BuiltinName[25] != 'p')
            break;
          return Intrinsic::ppc_altivec_vcmpeqfp;	 // "__builtin_altivec_vcmpeqfp"
        case 'u':	 // 3 strings to match.
          switch (BuiltinName[25]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vcmpequb;	 // "__builtin_altivec_vcmpequb"
          case 'h':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vcmpequh;	 // "__builtin_altivec_vcmpequh"
          case 'w':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vcmpequw;	 // "__builtin_altivec_vcmpequw"
          }
          break;
        }
        break;
      case 'g':	 // 8 strings to match.
        switch (BuiltinName[23]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "fp", 2))
            break;
          return Intrinsic::ppc_altivec_vcmpgefp;	 // "__builtin_altivec_vcmpgefp"
        case 't':	 // 7 strings to match.
          switch (BuiltinName[24]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (BuiltinName[25] != 'p')
              break;
            return Intrinsic::ppc_altivec_vcmpgtfp;	 // "__builtin_altivec_vcmpgtfp"
          case 's':	 // 3 strings to match.
            switch (BuiltinName[25]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vcmpgtsb;	 // "__builtin_altivec_vcmpgtsb"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vcmpgtsh;	 // "__builtin_altivec_vcmpgtsh"
            case 'w':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vcmpgtsw;	 // "__builtin_altivec_vcmpgtsw"
            }
            break;
          case 'u':	 // 3 strings to match.
            switch (BuiltinName[25]) {
            default: break;
            case 'b':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vcmpgtub;	 // "__builtin_altivec_vcmpgtub"
            case 'h':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vcmpgtuh;	 // "__builtin_altivec_vcmpgtuh"
            case 'w':	 // 1 string to match.
              return Intrinsic::ppc_altivec_vcmpgtuw;	 // "__builtin_altivec_vcmpgtuw"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 'e':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+20, "xptefp", 6))
        break;
      return Intrinsic::ppc_altivec_vexptefp;	 // "__builtin_altivec_vexptefp"
    case 'm':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+20, "sum", 3))
        break;
      switch (BuiltinName[23]) {
      default: break;
      case 'm':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+24, "bm", 2))
          break;
        return Intrinsic::ppc_altivec_vmsummbm;	 // "__builtin_altivec_vmsummbm"
      case 's':	 // 2 strings to match.
        if (BuiltinName[24] != 'h')
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'm':	 // 1 string to match.
          return Intrinsic::ppc_altivec_vmsumshm;	 // "__builtin_altivec_vmsumshm"
        case 's':	 // 1 string to match.
          return Intrinsic::ppc_altivec_vmsumshs;	 // "__builtin_altivec_vmsumshs"
        }
        break;
      case 'u':	 // 3 strings to match.
        switch (BuiltinName[24]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (BuiltinName[25] != 'm')
            break;
          return Intrinsic::ppc_altivec_vmsumubm;	 // "__builtin_altivec_vmsumubm"
        case 'h':	 // 2 strings to match.
          switch (BuiltinName[25]) {
          default: break;
          case 'm':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vmsumuhm;	 // "__builtin_altivec_vmsumuhm"
          case 's':	 // 1 string to match.
            return Intrinsic::ppc_altivec_vmsumuhs;	 // "__builtin_altivec_vmsumuhs"
          }
          break;
        }
        break;
      }
      break;
    case 'n':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+20, "msubfp", 6))
        break;
      return Intrinsic::ppc_altivec_vnmsubfp;	 // "__builtin_altivec_vnmsubfp"
    case 's':	 // 5 strings to match.
      switch (BuiltinName[20]) {
      default: break;
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "l_4si", 5))
          break;
        return Intrinsic::ppc_altivec_vsel;	 // "__builtin_altivec_vsel_4si"
      case 'u':	 // 4 strings to match.
        if (BuiltinName[21] != 'm')
          break;
        switch (BuiltinName[22]) {
        default: break;
        case '2':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "sws", 3))
            break;
          return Intrinsic::ppc_altivec_vsum2sws;	 // "__builtin_altivec_vsum2sws"
        case '4':	 // 3 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (BuiltinName[25] != 's')
                break;
              return Intrinsic::ppc_altivec_vsum4sbs;	 // "__builtin_altivec_vsum4sbs"
            case 'h':	 // 1 string to match.
              if (BuiltinName[25] != 's')
                break;
              return Intrinsic::ppc_altivec_vsum4shs;	 // "__builtin_altivec_vsum4shs"
            }
            break;
          case 'u':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "bs", 2))
              break;
            return Intrinsic::ppc_altivec_vsum4ubs;	 // "__builtin_altivec_vsum4ubs"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 27:	 // 5 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
      break;
    switch (BuiltinName[19]) {
    default: break;
    case 'c':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+20, "mpbfp_p", 7))
        break;
      return Intrinsic::ppc_altivec_vcmpbfp_p;	 // "__builtin_altivec_vcmpbfp_p"
    case 'm':	 // 2 strings to match.
      switch (BuiltinName[20]) {
      default: break;
      case 'h':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "addshs", 6))
          break;
        return Intrinsic::ppc_altivec_vmhaddshs;	 // "__builtin_altivec_vmhaddshs"
      case 'l':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "adduhm", 6))
          break;
        return Intrinsic::ppc_altivec_vmladduhm;	 // "__builtin_altivec_vmladduhm"
      }
      break;
    case 'p':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+20, "erm_4si", 7))
        break;
      return Intrinsic::ppc_altivec_vperm;	 // "__builtin_altivec_vperm_4si"
    case 'r':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+20, "sqrtefp", 7))
        break;
      return Intrinsic::ppc_altivec_vrsqrtefp;	 // "__builtin_altivec_vrsqrtefp"
    }
    break;
  case 28:	 // 13 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
      break;
    switch (BuiltinName[19]) {
    default: break;
    case 'c':	 // 12 strings to match.
      if (memcmp(BuiltinName.data()+20, "mp", 2))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'e':	 // 4 strings to match.
        if (BuiltinName[23] != 'q')
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "p_p", 3))
            break;
          return Intrinsic::ppc_altivec_vcmpeqfp_p;	 // "__builtin_altivec_vcmpeqfp_p"
        case 'u':	 // 3 strings to match.
          switch (BuiltinName[25]) {
          default: break;
          case 'b':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "_p", 2))
              break;
            return Intrinsic::ppc_altivec_vcmpequb_p;	 // "__builtin_altivec_vcmpequb_p"
          case 'h':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "_p", 2))
              break;
            return Intrinsic::ppc_altivec_vcmpequh_p;	 // "__builtin_altivec_vcmpequh_p"
          case 'w':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+26, "_p", 2))
              break;
            return Intrinsic::ppc_altivec_vcmpequw_p;	 // "__builtin_altivec_vcmpequw_p"
          }
          break;
        }
        break;
      case 'g':	 // 8 strings to match.
        switch (BuiltinName[23]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "fp_p", 4))
            break;
          return Intrinsic::ppc_altivec_vcmpgefp_p;	 // "__builtin_altivec_vcmpgefp_p"
        case 't':	 // 7 strings to match.
          switch (BuiltinName[24]) {
          default: break;
          case 'f':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "p_p", 3))
              break;
            return Intrinsic::ppc_altivec_vcmpgtfp_p;	 // "__builtin_altivec_vcmpgtfp_p"
          case 's':	 // 3 strings to match.
            switch (BuiltinName[25]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "_p", 2))
                break;
              return Intrinsic::ppc_altivec_vcmpgtsb_p;	 // "__builtin_altivec_vcmpgtsb_p"
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "_p", 2))
                break;
              return Intrinsic::ppc_altivec_vcmpgtsh_p;	 // "__builtin_altivec_vcmpgtsh_p"
            case 'w':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "_p", 2))
                break;
              return Intrinsic::ppc_altivec_vcmpgtsw_p;	 // "__builtin_altivec_vcmpgtsw_p"
            }
            break;
          case 'u':	 // 3 strings to match.
            switch (BuiltinName[25]) {
            default: break;
            case 'b':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "_p", 2))
                break;
              return Intrinsic::ppc_altivec_vcmpgtub_p;	 // "__builtin_altivec_vcmpgtub_p"
            case 'h':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "_p", 2))
                break;
              return Intrinsic::ppc_altivec_vcmpgtuh_p;	 // "__builtin_altivec_vcmpgtuh_p"
            case 'w':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+26, "_p", 2))
                break;
              return Intrinsic::ppc_altivec_vcmpgtuw_p;	 // "__builtin_altivec_vcmpgtuw_p"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 'm':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+20, "hraddshs", 8))
        break;
      return Intrinsic::ppc_altivec_vmhraddshs;	 // "__builtin_altivec_vmhraddshs"
    }
    break;
  }
  }
  if (TargetPrefix == "r600") {
  switch (BuiltinName.size()) {
  default: break;
  case 26:	 // 3 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_r600_read_tgid_", 25))
      break;
    switch (BuiltinName[25]) {
    default: break;
    case 'x':	 // 1 string to match.
      return Intrinsic::r600_read_tgid_x;	 // "__builtin_r600_read_tgid_x"
    case 'y':	 // 1 string to match.
      return Intrinsic::r600_read_tgid_y;	 // "__builtin_r600_read_tgid_y"
    case 'z':	 // 1 string to match.
      return Intrinsic::r600_read_tgid_z;	 // "__builtin_r600_read_tgid_z"
    }
    break;
  case 27:	 // 3 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_r600_read_tidig_", 26))
      break;
    switch (BuiltinName[26]) {
    default: break;
    case 'x':	 // 1 string to match.
      return Intrinsic::r600_read_tidig_x;	 // "__builtin_r600_read_tidig_x"
    case 'y':	 // 1 string to match.
      return Intrinsic::r600_read_tidig_y;	 // "__builtin_r600_read_tidig_y"
    case 'z':	 // 1 string to match.
      return Intrinsic::r600_read_tidig_z;	 // "__builtin_r600_read_tidig_z"
    }
    break;
  case 29:	 // 3 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_r600_read_ngroups_", 28))
      break;
    switch (BuiltinName[28]) {
    default: break;
    case 'x':	 // 1 string to match.
      return Intrinsic::r600_read_ngroups_x;	 // "__builtin_r600_read_ngroups_x"
    case 'y':	 // 1 string to match.
      return Intrinsic::r600_read_ngroups_y;	 // "__builtin_r600_read_ngroups_y"
    case 'z':	 // 1 string to match.
      return Intrinsic::r600_read_ngroups_z;	 // "__builtin_r600_read_ngroups_z"
    }
    break;
  case 32:	 // 3 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_r600_read_local_size_", 31))
      break;
    switch (BuiltinName[31]) {
    default: break;
    case 'x':	 // 1 string to match.
      return Intrinsic::r600_read_local_size_x;	 // "__builtin_r600_read_local_size_x"
    case 'y':	 // 1 string to match.
      return Intrinsic::r600_read_local_size_y;	 // "__builtin_r600_read_local_size_y"
    case 'z':	 // 1 string to match.
      return Intrinsic::r600_read_local_size_z;	 // "__builtin_r600_read_local_size_z"
    }
    break;
  case 33:	 // 3 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_r600_read_global_size_", 32))
      break;
    switch (BuiltinName[32]) {
    default: break;
    case 'x':	 // 1 string to match.
      return Intrinsic::r600_read_global_size_x;	 // "__builtin_r600_read_global_size_x"
    case 'y':	 // 1 string to match.
      return Intrinsic::r600_read_global_size_y;	 // "__builtin_r600_read_global_size_y"
    case 'z':	 // 1 string to match.
      return Intrinsic::r600_read_global_size_z;	 // "__builtin_r600_read_global_size_z"
    }
    break;
  }
  }
  if (TargetPrefix == "x86") {
  switch (BuiltinName.size()) {
  default: break;
  case 18:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_por", 18))
      break;
    return Intrinsic::x86_mmx_por;	 // "__builtin_ia32_por"
  case 19:	 // 6 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'd':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "pp", 2))
        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 (memcmp(BuiltinName.data()+16, "mms", 3))
        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 (memcmp(BuiltinName.data()+17, "nd", 2))
          break;
        return Intrinsic::x86_mmx_pand;	 // "__builtin_ia32_pand"
      case 'x':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "or", 2))
          break;
        return Intrinsic::x86_mmx_pxor;	 // "__builtin_ia32_pxor"
      }
      break;
    case 'x':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "end", 3))
        break;
      return Intrinsic::x86_xend;	 // "__builtin_ia32_xend"
    }
    break;
  case 20:	 // 64 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'a':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "dds", 3))
        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 'c':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+16, "mp", 2))
        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_cmp_pd;	 // "__builtin_ia32_cmppd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_sse_cmp_ps;	 // "__builtin_ia32_cmpps"
        }
        break;
      case 's':	 // 2 strings to match.
        switch (BuiltinName[19]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_sse2_cmp_sd;	 // "__builtin_ia32_cmpsd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_sse_cmp_ss;	 // "__builtin_ia32_cmpss"
        }
        break;
      }
      break;
    case 'd':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "ivs", 3))
        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 'e':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "xtrq", 4))
        break;
      return Intrinsic::x86_sse4a_extrq;	 // "__builtin_ia32_extrq"
    case 'f':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "emms", 4))
        break;
      return Intrinsic::x86_mmx_femms;	 // "__builtin_ia32_femms"
    case 'k':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "orhi", 4))
        break;
      return Intrinsic::x86_avx512_kor_w;	 // "__builtin_ia32_korhi"
    case 'l':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "ddqu", 4))
        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 (memcmp(BuiltinName.data()+17, "ls", 2))
          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 (memcmp(BuiltinName.data()+17, "ait", 3))
          break;
        return Intrinsic::x86_sse3_mwait;	 // "__builtin_ia32_mwait"
      }
      break;
    case 'p':	 // 34 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 11 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 (memcmp(BuiltinName.data()+18, "dn", 2))
            break;
          return Intrinsic::x86_mmx_pandn;	 // "__builtin_ia32_pandn"
        case 'u':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "se", 2))
            break;
          return Intrinsic::x86_sse2_pause;	 // "__builtin_ia32_pause"
        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 (memcmp(BuiltinName.data()+18, "cp", 2))
            break;
          return Intrinsic::x86_3dnow_pfrcp;	 // "__builtin_ia32_pfrcp"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "ub", 2))
            break;
          return Intrinsic::x86_3dnow_pfsub;	 // "__builtin_ia32_pfsub"
        }
        break;
      case 'i':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "2f", 2))
          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':	 // 4 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'c':	 // 2 strings to match.
        if (BuiltinName[17] != 'p')
          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 'd':	 // 2 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'p':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "mc", 2))
            break;
          return Intrinsic::x86_rdpmc;	 // "__builtin_ia32_rdpmc"
        case 't':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "sc", 2))
            break;
          return Intrinsic::x86_rdtsc;	 // "__builtin_ia32_rdtsc"
        }
        break;
      }
      break;
    case 's':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "ubs", 3))
        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;
    case 'x':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "test", 4))
        break;
      return Intrinsic::x86_xtest;	 // "__builtin_ia32_xtest"
    }
    break;
  case 21:	 // 55 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'c':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+16, "omi", 3))
        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 'e':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "xtrqi", 5))
        break;
      return Intrinsic::x86_sse4a_extrqi;	 // "__builtin_ia32_extrqi"
    case 'h':	 // 4 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "ddp", 3))
          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 (memcmp(BuiltinName.data()+17, "ubp", 3))
          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 'k':	 // 3 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "ndhi", 4))
          break;
        return Intrinsic::x86_avx512_kand_w;	 // "__builtin_ia32_kandhi"
      case 'n':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "othi", 4))
          break;
        return Intrinsic::x86_avx512_knot_w;	 // "__builtin_ia32_knothi"
      case 'x':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "orhi", 4))
          break;
        return Intrinsic::x86_avx512_kxor_w;	 // "__builtin_ia32_kxorhi"
      }
      break;
    case 'l':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "fence", 5))
        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 (memcmp(BuiltinName.data()+17, "ence", 4))
          break;
        return Intrinsic::x86_sse2_mfence;	 // "__builtin_ia32_mfence"
      case 'o':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "vntq", 4))
          break;
        return Intrinsic::x86_mmx_movnt_dq;	 // "__builtin_ia32_movntq"
      }
      break;
    case 'p':	 // 31 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "dds", 3))
          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 (memcmp(BuiltinName.data()+18, "acc", 3))
            break;
          return Intrinsic::x86_3dnowa_pfnacc;	 // "__builtin_ia32_pfnacc"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "ubr", 3))
            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 (memcmp(BuiltinName.data()+18, "dd", 2))
            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 (memcmp(BuiltinName.data()+18, "ub", 2))
            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':	 // 17 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "dbw", 3))
            break;
          return Intrinsic::x86_mmx_psad_bw;	 // "__builtin_ia32_psadbw"
        case 'h':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+18, "uf", 2))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 1 string to match.
            return Intrinsic::x86_ssse3_pshuf_b;	 // "__builtin_ia32_pshufb"
          case 'd':	 // 1 string to match.
            return Intrinsic::x86_sse2_pshuf_d;	 // "__builtin_ia32_pshufd"
          case 'w':	 // 1 string to match.
            return Intrinsic::x86_sse_pshuf_w;	 // "__builtin_ia32_pshufw"
          }
          break;
        case 'i':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+18, "gn", 2))
            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 (memcmp(BuiltinName.data()+18, "bs", 2))
            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 'r':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "dtscp", 5))
        break;
      return Intrinsic::x86_rdtscp;	 // "__builtin_ia32_rdtscp"
    case 's':	 // 5 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'f':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "ence", 4))
          break;
        return Intrinsic::x86_sse_sfence;	 // "__builtin_ia32_sfence"
      case 'q':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+17, "rt", 2))
          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;
    case 'x':	 // 2 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "bort", 4))
          break;
        return Intrinsic::x86_xabort;	 // "__builtin_ia32_xabort"
      case 'b':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "egin", 4))
          break;
        return Intrinsic::x86_xbegin;	 // "__builtin_ia32_xbegin"
      }
      break;
    }
    break;
  case 22:	 // 57 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'b':	 // 4 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'l':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "endp", 4))
          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 'z':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "hi_", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (BuiltinName[21] != 'i')
            break;
          return Intrinsic::x86_bmi_bzhi_64;	 // "__builtin_ia32_bzhi_di"
        case 's':	 // 1 string to match.
          if (BuiltinName[21] != 'i')
            break;
          return Intrinsic::x86_bmi_bzhi_32;	 // "__builtin_ia32_bzhi_si"
        }
        break;
      }
      break;
    case 'c':	 // 6 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'l':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "flush", 5))
          break;
        return Intrinsic::x86_sse2_clflush;	 // "__builtin_ia32_clflush"
      case 'o':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "mineq", 5))
          break;
        return Intrinsic::x86_sse_comineq_ss;	 // "__builtin_ia32_comineq"
      case 'r':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+17, "c32", 3))
          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 (memcmp(BuiltinName.data()+16, "pps256", 6))
        break;
      return Intrinsic::x86_avx_dp_ps_256;	 // "__builtin_ia32_dpps256"
    case 'i':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "nsertq", 6))
        break;
      return Intrinsic::x86_sse4a_insertq;	 // "__builtin_ia32_insertq"
    case 'k':	 // 2 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "ndnhi", 5))
          break;
        return Intrinsic::x86_avx512_kandn_w;	 // "__builtin_ia32_kandnhi"
      case 'x':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "norhi", 5))
          break;
        return Intrinsic::x86_avx512_kxnor_w;	 // "__builtin_ia32_kxnorhi"
      }
      break;
    case 'm':	 // 3 strings to match.
      if (BuiltinName[16] != 'o')
        break;
      switch (BuiltinName[17]) {
      default: break;
      case 'n':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+18, "itor", 4))
          break;
        return Intrinsic::x86_sse3_monitor;	 // "__builtin_ia32_monitor"
      case 'v':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+18, "nts", 3))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_sse4a_movnt_sd;	 // "__builtin_ia32_movntsd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_sse4a_movnt_ss;	 // "__builtin_ia32_movntss"
        }
        break;
      }
      break;
    case 'p':	 // 29 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 (memcmp(BuiltinName.data()+18, "dus", 3))
            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 (memcmp(BuiltinName.data()+18, "ignr", 4))
            break;
          return Intrinsic::x86_mmx_palignr_b;	 // "__builtin_ia32_palignr"
        case 'v':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "gusb", 4))
            break;
          return Intrinsic::x86_3dnow_pavgusb;	 // "__builtin_ia32_pavgusb"
        }
        break;
      case 'c':	 // 6 strings to match.
        if (memcmp(BuiltinName.data()+17, "mp", 2))
          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.
            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 'w':	 // 1 string to match.
            return Intrinsic::x86_mmx_pcmpeq_w;	 // "__builtin_ia32_pcmpeqw"
          }
          break;
        case 'g':	 // 3 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 'w':	 // 1 string to match.
            return Intrinsic::x86_mmx_pcmpgt_w;	 // "__builtin_ia32_pcmpgtw"
          }
          break;
        }
        break;
      case 'd':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "ep_", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (BuiltinName[21] != 'i')
            break;
          return Intrinsic::x86_bmi_pdep_64;	 // "__builtin_ia32_pdep_di"
        case 's':	 // 1 string to match.
          if (BuiltinName[21] != 'i')
            break;
          return Intrinsic::x86_bmi_pdep_32;	 // "__builtin_ia32_pdep_si"
        }
        break;
      case 'e':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "xt_", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (BuiltinName[21] != 'i')
            break;
          return Intrinsic::x86_bmi_pext_64;	 // "__builtin_ia32_pext_di"
        case 's':	 // 1 string to match.
          if (BuiltinName[21] != 'i')
            break;
          return Intrinsic::x86_bmi_pext_32;	 // "__builtin_ia32_pext_si"
        }
        break;
      case 'f':	 // 5 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'c':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+18, "mp", 2))
            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 (memcmp(BuiltinName.data()+18, "nacc", 4))
            break;
          return Intrinsic::x86_3dnowa_pfpnacc;	 // "__builtin_ia32_pfpnacc"
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "sqrt", 4))
            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 (memcmp(BuiltinName.data()+18, "ddsw", 4))
            break;
          return Intrinsic::x86_ssse3_phadd_sw;	 // "__builtin_ia32_phaddsw"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "ubsw", 4))
            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 (memcmp(BuiltinName.data()+18, "ddwd", 4))
            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 (memcmp(BuiltinName.data()+20, "dq", 2))
              break;
            return Intrinsic::x86_mmx_pmulu_dq;	 // "__builtin_ia32_pmuludq"
          }
          break;
        }
        break;
      case 's':	 // 4 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'h':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+18, "uf", 2))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'h':	 // 1 string to match.
            if (BuiltinName[21] != 'w')
              break;
            return Intrinsic::x86_sse2_pshufh_w;	 // "__builtin_ia32_pshufhw"
          case 'l':	 // 1 string to match.
            if (BuiltinName[21] != 'w')
              break;
            return Intrinsic::x86_sse2_pshufl_w;	 // "__builtin_ia32_pshuflw"
          }
          break;
        case 'u':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+18, "bus", 3))
            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;
      }
      break;
    case 'r':	 // 6 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'o':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+17, "und", 3))
          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 (memcmp(BuiltinName.data()+17, "qrt", 3))
          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 (memcmp(BuiltinName.data()+16, "comi", 4))
        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:	 // 102 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'a':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "ddsubp", 6))
        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 (memcmp(BuiltinName.data()+16, "lendvp", 6))
        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 (memcmp(BuiltinName.data()+17, "pp", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "256", 3))
            break;
          return Intrinsic::x86_avx_cmp_pd_256;	 // "__builtin_ia32_cmppd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "256", 3))
            break;
          return Intrinsic::x86_avx_cmp_ps_256;	 // "__builtin_ia32_cmpps256"
        }
        break;
      case 'o':	 // 5 strings to match.
        if (memcmp(BuiltinName.data()+17, "misd", 4))
          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 (memcmp(BuiltinName.data()+19, "q2p", 3))
            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 (memcmp(BuiltinName.data()+20, "2p", 2))
              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 (memcmp(BuiltinName.data()+20, "2s", 2))
              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 (memcmp(BuiltinName.data()+20, "2s", 2))
              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 (memcmp(BuiltinName.data()+20, "2s", 2))
              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 'i':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "nsertqi", 7))
        break;
      return Intrinsic::x86_sse4a_insertqi;	 // "__builtin_ia32_insertqi"
    case 'k':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "unpckhi", 7))
        break;
      return Intrinsic::x86_avx512_kunpck_bw;	 // "__builtin_ia32_kunpckhi"
    case 'l':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "ddqu256", 7))
        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 (memcmp(BuiltinName.data()+18, "kmovq", 5))
            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 (memcmp(BuiltinName.data()+20, "256", 3))
              break;
            return Intrinsic::x86_avx_max_pd_256;	 // "__builtin_ia32_maxpd256"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "256", 3))
              break;
            return Intrinsic::x86_avx_max_ps_256;	 // "__builtin_ia32_maxps256"
          }
          break;
        }
        break;
      case 'i':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "np", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "256", 3))
            break;
          return Intrinsic::x86_avx_min_pd_256;	 // "__builtin_ia32_minpd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "256", 3))
            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 (memcmp(BuiltinName.data()+19, "skp", 3))
            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 (memcmp(BuiltinName.data()+19, "tdqa", 4))
            break;
          return Intrinsic::x86_sse41_movntdqa;	 // "__builtin_ia32_movntdqa"
        }
        break;
      }
      break;
    case 'p':	 // 44 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 13 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'b':	 // 6 strings to match.
          if (BuiltinName[18] != 's')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "28", 2))
                break;
              return Intrinsic::x86_ssse3_pabs_b_128;	 // "__builtin_ia32_pabsb128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "56", 2))
                break;
              return Intrinsic::x86_avx2_pabs_b;	 // "__builtin_ia32_pabsb256"
            }
            break;
          case 'd':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "28", 2))
                break;
              return Intrinsic::x86_ssse3_pabs_d_128;	 // "__builtin_ia32_pabsd128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "56", 2))
                break;
              return Intrinsic::x86_avx2_pabs_d;	 // "__builtin_ia32_pabsd256"
            }
            break;
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "28", 2))
                break;
              return Intrinsic::x86_ssse3_pabs_w_128;	 // "__builtin_ia32_pabsw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "56", 2))
                break;
              return Intrinsic::x86_avx2_pabs_w;	 // "__builtin_ia32_pabsw256"
            }
            break;
          }
          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 (memcmp(BuiltinName.data()+20, "swb", 3))
              break;
            return Intrinsic::x86_mmx_packuswb;	 // "__builtin_ia32_packuswb"
          }
          break;
        case 'v':	 // 4 strings to match.
          if (BuiltinName[18] != 'g')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'b':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "28", 2))
                break;
              return Intrinsic::x86_sse2_pavg_b;	 // "__builtin_ia32_pavgb128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "56", 2))
                break;
              return Intrinsic::x86_avx2_pavg_b;	 // "__builtin_ia32_pavgb256"
            }
            break;
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "28", 2))
                break;
              return Intrinsic::x86_sse2_pavg_w;	 // "__builtin_ia32_pavgw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "56", 2))
                break;
              return Intrinsic::x86_avx2_pavg_w;	 // "__builtin_ia32_pavgw256"
            }
            break;
          }
          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 (memcmp(BuiltinName.data()+19, "pit", 3))
            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 (memcmp(BuiltinName.data()+19, "qit1", 4))
            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 (memcmp(BuiltinName.data()+18, "vmskb", 5))
            break;
          return Intrinsic::x86_mmx_pmovmskb;	 // "__builtin_ia32_pmovmskb"
        case 'u':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "lhrsw", 5))
            break;
          return Intrinsic::x86_ssse3_pmul_hr_sw;	 // "__builtin_ia32_pmulhrsw"
        }
        break;
      case 's':	 // 26 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'l':	 // 10 strings to match.
          if (BuiltinName[18] != 'l')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'd':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "28", 2))
                break;
              return Intrinsic::x86_sse2_psll_d;	 // "__builtin_ia32_pslld128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "56", 2))
                break;
              return Intrinsic::x86_avx2_psll_d;	 // "__builtin_ia32_pslld256"
            }
            break;
          case 'q':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "28", 2))
                break;
              return Intrinsic::x86_sse2_psll_q;	 // "__builtin_ia32_psllq128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "56", 2))
                break;
              return Intrinsic::x86_avx2_psll_q;	 // "__builtin_ia32_psllq256"
            }
            break;
          case 'v':	 // 4 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "di", 2))
                break;
              return Intrinsic::x86_avx2_psllv_q;	 // "__builtin_ia32_psllv2di"
            case '4':	 // 2 strings to match.
              switch (BuiltinName[21]) {
              default: break;
              case 'd':	 // 1 string to match.
                if (BuiltinName[22] != 'i')
                  break;
                return Intrinsic::x86_avx2_psllv_q_256;	 // "__builtin_ia32_psllv4di"
              case 's':	 // 1 string to match.
                if (BuiltinName[22] != 'i')
                  break;
                return Intrinsic::x86_avx2_psllv_d;	 // "__builtin_ia32_psllv4si"
              }
              break;
            case '8':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "si", 2))
                break;
              return Intrinsic::x86_avx2_psllv_d_256;	 // "__builtin_ia32_psllv8si"
            }
            break;
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "28", 2))
                break;
              return Intrinsic::x86_sse2_psll_w;	 // "__builtin_ia32_psllw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "56", 2))
                break;
              return Intrinsic::x86_avx2_psll_w;	 // "__builtin_ia32_psllw256"
            }
            break;
          }
          break;
        case 'r':	 // 16 strings to match.
          switch (BuiltinName[18]) {
          default: break;
          case 'a':	 // 6 strings to match.
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 2 strings to match.
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "28", 2))
                  break;
                return Intrinsic::x86_sse2_psra_d;	 // "__builtin_ia32_psrad128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "56", 2))
                  break;
                return Intrinsic::x86_avx2_psra_d;	 // "__builtin_ia32_psrad256"
              }
              break;
            case 'v':	 // 2 strings to match.
              switch (BuiltinName[20]) {
              default: break;
              case '4':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "si", 2))
                  break;
                return Intrinsic::x86_avx2_psrav_d;	 // "__builtin_ia32_psrav4si"
              case '8':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "si", 2))
                  break;
                return Intrinsic::x86_avx2_psrav_d_256;	 // "__builtin_ia32_psrav8si"
              }
              break;
            case 'w':	 // 2 strings to match.
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "28", 2))
                  break;
                return Intrinsic::x86_sse2_psra_w;	 // "__builtin_ia32_psraw128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "56", 2))
                  break;
                return Intrinsic::x86_avx2_psra_w;	 // "__builtin_ia32_psraw256"
              }
              break;
            }
            break;
          case 'l':	 // 10 strings to match.
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 2 strings to match.
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "28", 2))
                  break;
                return Intrinsic::x86_sse2_psrl_d;	 // "__builtin_ia32_psrld128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "56", 2))
                  break;
                return Intrinsic::x86_avx2_psrl_d;	 // "__builtin_ia32_psrld256"
              }
              break;
            case 'q':	 // 2 strings to match.
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "28", 2))
                  break;
                return Intrinsic::x86_sse2_psrl_q;	 // "__builtin_ia32_psrlq128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "56", 2))
                  break;
                return Intrinsic::x86_avx2_psrl_q;	 // "__builtin_ia32_psrlq256"
              }
              break;
            case 'v':	 // 4 strings to match.
              switch (BuiltinName[20]) {
              default: break;
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "di", 2))
                  break;
                return Intrinsic::x86_avx2_psrlv_q;	 // "__builtin_ia32_psrlv2di"
              case '4':	 // 2 strings to match.
                switch (BuiltinName[21]) {
                default: break;
                case 'd':	 // 1 string to match.
                  if (BuiltinName[22] != 'i')
                    break;
                  return Intrinsic::x86_avx2_psrlv_q_256;	 // "__builtin_ia32_psrlv4di"
                case 's':	 // 1 string to match.
                  if (BuiltinName[22] != 'i')
                    break;
                  return Intrinsic::x86_avx2_psrlv_d;	 // "__builtin_ia32_psrlv4si"
                }
                break;
              case '8':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "si", 2))
                  break;
                return Intrinsic::x86_avx2_psrlv_d_256;	 // "__builtin_ia32_psrlv8si"
              }
              break;
            case 'w':	 // 2 strings to match.
              switch (BuiltinName[20]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "28", 2))
                  break;
                return Intrinsic::x86_sse2_psrl_w;	 // "__builtin_ia32_psrlw128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+21, "56", 2))
                  break;
                return Intrinsic::x86_avx2_psrl_w;	 // "__builtin_ia32_psrlw256"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    case 'r':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "cpps256", 7))
        break;
      return Intrinsic::x86_avx_rcp_ps_256;	 // "__builtin_ia32_rcpps256"
    case 's':	 // 5 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'h':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "a1msg", 5))
          break;
        switch (BuiltinName[22]) {
        default: break;
        case '1':	 // 1 string to match.
          return Intrinsic::x86_sha1msg1;	 // "__builtin_ia32_sha1msg1"
        case '2':	 // 1 string to match.
          return Intrinsic::x86_sha1msg2;	 // "__builtin_ia32_sha1msg2"
        }
        break;
      case 't':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+17, "ore", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "qu", 2))
            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;
      }
      break;
    case 'u':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "comineq", 7))
        break;
      return Intrinsic::x86_sse_ucomineq_ss;	 // "__builtin_ia32_ucomineq"
    case 'v':	 // 13 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'f':	 // 8 strings to match.
        if (BuiltinName[17] != 'm')
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'a':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+19, "dd", 2))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'p':	 // 2 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmadd_pd;	 // "__builtin_ia32_vfmaddpd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmadd_ps;	 // "__builtin_ia32_vfmaddps"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmadd_sd;	 // "__builtin_ia32_vfmaddsd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmadd_ss;	 // "__builtin_ia32_vfmaddss"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+19, "ub", 2))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'p':	 // 2 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmsub_pd;	 // "__builtin_ia32_vfmsubpd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmsub_ps;	 // "__builtin_ia32_vfmsubps"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmsub_sd;	 // "__builtin_ia32_vfmsubsd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmsub_ss;	 // "__builtin_ia32_vfmsubss"
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+17, "est", 3))
          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 (memcmp(BuiltinName.data()+17, "eroall", 6))
          break;
        return Intrinsic::x86_avx_vzeroall;	 // "__builtin_ia32_vzeroall"
      }
      break;
    }
    break;
  case 24:	 // 131 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'a':	 // 3 strings to match.
      if (memcmp(BuiltinName.data()+16, "es", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "ec128", 5))
          break;
        return Intrinsic::x86_aesni_aesdec;	 // "__builtin_ia32_aesdec128"
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "nc128", 5))
          break;
        return Intrinsic::x86_aesni_aesenc;	 // "__builtin_ia32_aesenc128"
      case 'i':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "mc128", 5))
          break;
        return Intrinsic::x86_aesni_aesimc;	 // "__builtin_ia32_aesimc128"
      }
      break;
    case 'b':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "extr_u", 6))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case '3':	 // 1 string to match.
        if (BuiltinName[23] != '2')
          break;
        return Intrinsic::x86_bmi_bextr_32;	 // "__builtin_ia32_bextr_u32"
      case '6':	 // 1 string to match.
        if (BuiltinName[23] != '4')
          break;
        return Intrinsic::x86_bmi_bextr_64;	 // "__builtin_ia32_bextr_u64"
      }
      break;
    case 'c':	 // 11 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'o':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "misdneq", 7))
          break;
        return Intrinsic::x86_sse2_comineq_sd;	 // "__builtin_ia32_comisdneq"
      case 'v':	 // 10 strings to match.
        if (BuiltinName[17] != 't')
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 's':	 // 2 strings to match.
          switch (BuiltinName[19]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "2usi", 4))
              break;
            return Intrinsic::x86_avx512_cvtsd2usi;	 // "__builtin_ia32_cvtsd2usi"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "2usi", 4))
              break;
            return Intrinsic::x86_avx512_cvtss2usi;	 // "__builtin_ia32_cvtss2usi"
          }
          break;
        case 't':	 // 6 strings to match.
          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 (memcmp(BuiltinName.data()+21, "2si", 3))
                break;
              return Intrinsic::x86_sse2_cvttsd2si;	 // "__builtin_ia32_cvttsd2si"
            case 's':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "2si", 3))
                break;
              return Intrinsic::x86_sse_cvttss2si;	 // "__builtin_ia32_cvttss2si"
            }
            break;
          }
          break;
        case 'u':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+19, "si2s", 4))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::x86_avx512_cvtusi2sd;	 // "__builtin_ia32_cvtusi2sd"
          case 's':	 // 1 string to match.
            return Intrinsic::x86_avx512_cvtusi2ss;	 // "__builtin_ia32_cvtusi2ss"
          }
          break;
        }
        break;
      }
      break;
    case 'g':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+16, "ather", 5))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (BuiltinName[22] != '_')
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_avx2_gather_d_d;	 // "__builtin_ia32_gatherd_d"
        case 'q':	 // 1 string to match.
          return Intrinsic::x86_avx2_gather_d_q;	 // "__builtin_ia32_gatherd_q"
        }
        break;
      case 'q':	 // 2 strings to match.
        if (BuiltinName[22] != '_')
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_avx2_gather_q_d;	 // "__builtin_ia32_gatherq_d"
        case 'q':	 // 1 string to match.
          return Intrinsic::x86_avx2_gather_q_q;	 // "__builtin_ia32_gatherq_q"
        }
        break;
      }
      break;
    case 'h':	 // 4 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "ddp", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "256", 3))
            break;
          return Intrinsic::x86_avx_hadd_pd_256;	 // "__builtin_ia32_haddpd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "256", 3))
            break;
          return Intrinsic::x86_avx_hadd_ps_256;	 // "__builtin_ia32_haddps256"
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "ubp", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "256", 3))
            break;
          return Intrinsic::x86_avx_hsub_pd_256;	 // "__builtin_ia32_hsubpd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "256", 3))
            break;
          return Intrinsic::x86_avx_hsub_ps_256;	 // "__builtin_ia32_hsubps256"
        }
        break;
      }
      break;
    case 'm':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "askload", 7))
        break;
      switch (BuiltinName[23]) {
      default: break;
      case 'd':	 // 1 string to match.
        return Intrinsic::x86_avx2_maskload_d;	 // "__builtin_ia32_maskloadd"
      case 'q':	 // 1 string to match.
        return Intrinsic::x86_avx2_maskload_q;	 // "__builtin_ia32_maskloadq"
      }
      break;
    case 'p':	 // 82 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+17, "dds", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'b':	 // 2 strings to match.
          switch (BuiltinName[21]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "28", 2))
              break;
            return Intrinsic::x86_sse2_padds_b;	 // "__builtin_ia32_paddsb128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "56", 2))
              break;
            return Intrinsic::x86_avx2_padds_b;	 // "__builtin_ia32_paddsb256"
          }
          break;
        case 'w':	 // 2 strings to match.
          switch (BuiltinName[21]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "28", 2))
              break;
            return Intrinsic::x86_sse2_padds_w;	 // "__builtin_ia32_paddsw128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "56", 2))
              break;
            return Intrinsic::x86_avx2_padds_w;	 // "__builtin_ia32_paddsw256"
          }
          break;
        }
        break;
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "rmti256", 7))
          break;
        return Intrinsic::x86_avx2_vperm2i128;	 // "__builtin_ia32_permti256"
      case 'h':	 // 8 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'a':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+18, "dd", 2))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'd':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_ssse3_phadd_d_128;	 // "__builtin_ia32_phaddd128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_phadd_d;	 // "__builtin_ia32_phaddd256"
            }
            break;
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_ssse3_phadd_w_128;	 // "__builtin_ia32_phaddw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_phadd_w;	 // "__builtin_ia32_phaddw256"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+18, "ub", 2))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'd':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_ssse3_phsub_d_128;	 // "__builtin_ia32_phsubd128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_phsub_d;	 // "__builtin_ia32_phsubd256"
            }
            break;
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_ssse3_phsub_w_128;	 // "__builtin_ia32_phsubw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_phsub_w;	 // "__builtin_ia32_phsubw256"
            }
            break;
          }
          break;
        }
        break;
      case 'm':	 // 29 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'a':	 // 13 strings to match.
          switch (BuiltinName[18]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+19, "dubsw", 5))
              break;
            return Intrinsic::x86_ssse3_pmadd_ub_sw;	 // "__builtin_ia32_pmaddubsw"
          case 'x':	 // 12 strings to match.
            switch (BuiltinName[19]) {
            default: break;
            case 's':	 // 6 strings to match.
              switch (BuiltinName[20]) {
              default: break;
              case 'b':	 // 2 strings to match.
                switch (BuiltinName[21]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmaxsb;	 // "__builtin_ia32_pmaxsb128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmaxs_b;	 // "__builtin_ia32_pmaxsb256"
                }
                break;
              case 'd':	 // 2 strings to match.
                switch (BuiltinName[21]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmaxsd;	 // "__builtin_ia32_pmaxsd128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmaxs_d;	 // "__builtin_ia32_pmaxsd256"
                }
                break;
              case 'w':	 // 2 strings to match.
                switch (BuiltinName[21]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "28", 2))
                    break;
                  return Intrinsic::x86_sse2_pmaxs_w;	 // "__builtin_ia32_pmaxsw128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmaxs_w;	 // "__builtin_ia32_pmaxsw256"
                }
                break;
              }
              break;
            case 'u':	 // 6 strings to match.
              switch (BuiltinName[20]) {
              default: break;
              case 'b':	 // 2 strings to match.
                switch (BuiltinName[21]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "28", 2))
                    break;
                  return Intrinsic::x86_sse2_pmaxu_b;	 // "__builtin_ia32_pmaxub128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmaxu_b;	 // "__builtin_ia32_pmaxub256"
                }
                break;
              case 'd':	 // 2 strings to match.
                switch (BuiltinName[21]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmaxud;	 // "__builtin_ia32_pmaxud128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmaxu_d;	 // "__builtin_ia32_pmaxud256"
                }
                break;
              case 'w':	 // 2 strings to match.
                switch (BuiltinName[21]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmaxuw;	 // "__builtin_ia32_pmaxuw128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+22, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmaxu_w;	 // "__builtin_ia32_pmaxuw256"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 'i':	 // 12 strings to match.
          if (BuiltinName[18] != 'n')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 's':	 // 6 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 2 strings to match.
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse41_pminsb;	 // "__builtin_ia32_pminsb128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pmins_b;	 // "__builtin_ia32_pminsb256"
              }
              break;
            case 'd':	 // 2 strings to match.
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse41_pminsd;	 // "__builtin_ia32_pminsd128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pmins_d;	 // "__builtin_ia32_pminsd256"
              }
              break;
            case 'w':	 // 2 strings to match.
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse2_pmins_w;	 // "__builtin_ia32_pminsw128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pmins_w;	 // "__builtin_ia32_pminsw256"
              }
              break;
            }
            break;
          case 'u':	 // 6 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case 'b':	 // 2 strings to match.
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse2_pminu_b;	 // "__builtin_ia32_pminub128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pminu_b;	 // "__builtin_ia32_pminub256"
              }
              break;
            case 'd':	 // 2 strings to match.
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse41_pminud;	 // "__builtin_ia32_pminud128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pminu_d;	 // "__builtin_ia32_pminud256"
              }
              break;
            case 'w':	 // 2 strings to match.
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse41_pminuw;	 // "__builtin_ia32_pminuw128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pminu_w;	 // "__builtin_ia32_pminuw256"
              }
              break;
            }
            break;
          }
          break;
        case 'u':	 // 4 strings to match.
          if (BuiltinName[18] != 'l')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (BuiltinName[20] != 'q')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_sse41_pmuldq;	 // "__builtin_ia32_pmuldq128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_pmul_dq;	 // "__builtin_ia32_pmuldq256"
            }
            break;
          case 'h':	 // 2 strings to match.
            if (BuiltinName[20] != 'w')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_sse2_pmulh_w;	 // "__builtin_ia32_pmulhw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_pmulh_w;	 // "__builtin_ia32_pmulhw256"
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 30 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+18, "dbw", 3))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "28", 2))
              break;
            return Intrinsic::x86_sse2_psad_bw;	 // "__builtin_ia32_psadbw128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "56", 2))
              break;
            return Intrinsic::x86_avx2_psad_bw;	 // "__builtin_ia32_psadbw256"
          }
          break;
        case 'h':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+18, "ufb", 3))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "28", 2))
              break;
            return Intrinsic::x86_ssse3_pshuf_b_128;	 // "__builtin_ia32_pshufb128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "56", 2))
              break;
            return Intrinsic::x86_avx2_pshuf_b;	 // "__builtin_ia32_pshufb256"
          }
          break;
        case 'i':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+18, "gn", 2))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_ssse3_psign_b_128;	 // "__builtin_ia32_psignb128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_psign_b;	 // "__builtin_ia32_psignb256"
            }
            break;
          case 'd':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_ssse3_psign_d_128;	 // "__builtin_ia32_psignd128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_psign_d;	 // "__builtin_ia32_psignd256"
            }
            break;
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_ssse3_psign_w_128;	 // "__builtin_ia32_psignw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_psign_w;	 // "__builtin_ia32_psignw256"
            }
            break;
          }
          break;
        case 'l':	 // 6 strings to match.
          if (BuiltinName[18] != 'l')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (BuiltinName[20] != 'i')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_sse2_pslli_d;	 // "__builtin_ia32_pslldi128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_pslli_d;	 // "__builtin_ia32_pslldi256"
            }
            break;
          case 'q':	 // 2 strings to match.
            if (BuiltinName[20] != 'i')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_sse2_pslli_q;	 // "__builtin_ia32_psllqi128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_pslli_q;	 // "__builtin_ia32_psllqi256"
            }
            break;
          case 'w':	 // 2 strings to match.
            if (BuiltinName[20] != 'i')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_sse2_pslli_w;	 // "__builtin_ia32_psllwi128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_pslli_w;	 // "__builtin_ia32_psllwi256"
            }
            break;
          }
          break;
        case 'r':	 // 10 strings to match.
          switch (BuiltinName[18]) {
          default: break;
          case 'a':	 // 4 strings to match.
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (BuiltinName[20] != 'i')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse2_psrai_d;	 // "__builtin_ia32_psradi128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_psrai_d;	 // "__builtin_ia32_psradi256"
              }
              break;
            case 'w':	 // 2 strings to match.
              if (BuiltinName[20] != 'i')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse2_psrai_w;	 // "__builtin_ia32_psrawi128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_psrai_w;	 // "__builtin_ia32_psrawi256"
              }
              break;
            }
            break;
          case 'l':	 // 6 strings to match.
            switch (BuiltinName[19]) {
            default: break;
            case 'd':	 // 2 strings to match.
              if (BuiltinName[20] != 'i')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse2_psrli_d;	 // "__builtin_ia32_psrldi128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_psrli_d;	 // "__builtin_ia32_psrldi256"
              }
              break;
            case 'q':	 // 2 strings to match.
              if (BuiltinName[20] != 'i')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse2_psrli_q;	 // "__builtin_ia32_psrlqi128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_psrli_q;	 // "__builtin_ia32_psrlqi256"
              }
              break;
            case 'w':	 // 2 strings to match.
              if (BuiltinName[20] != 'i')
                break;
              switch (BuiltinName[21]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "28", 2))
                  break;
                return Intrinsic::x86_sse2_psrli_w;	 // "__builtin_ia32_psrlwi128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+22, "56", 2))
                  break;
                return Intrinsic::x86_avx2_psrli_w;	 // "__builtin_ia32_psrlwi256"
              }
              break;
            }
            break;
          }
          break;
        case 'u':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+18, "bs", 2))
            break;
          switch (BuiltinName[20]) {
          default: break;
          case 'b':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_sse2_psubs_b;	 // "__builtin_ia32_psubsb128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_psubs_b;	 // "__builtin_ia32_psubsb256"
            }
            break;
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "28", 2))
                break;
              return Intrinsic::x86_sse2_psubs_w;	 // "__builtin_ia32_psubsw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx2_psubs_w;	 // "__builtin_ia32_psubsw256"
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+17, "est", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'c':	 // 2 strings to match.
          switch (BuiltinName[21]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "28", 2))
              break;
            return Intrinsic::x86_sse41_ptestc;	 // "__builtin_ia32_ptestc128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "56", 2))
              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 (memcmp(BuiltinName.data()+22, "28", 2))
              break;
            return Intrinsic::x86_sse41_ptestz;	 // "__builtin_ia32_ptestz128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "56", 2))
              break;
            return Intrinsic::x86_avx_ptestz_256;	 // "__builtin_ia32_ptestz256"
          }
          break;
        }
        break;
      case 'u':	 // 6 strings to match.
        if (memcmp(BuiltinName.data()+17, "npck", 4))
          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':	 // 8 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'h':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "a1", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'n':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "exte", 4))
            break;
          return Intrinsic::x86_sha1nexte;	 // "__builtin_ia32_sha1nexte"
        case 'r':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "nds4", 4))
            break;
          return Intrinsic::x86_sha1rnds4;	 // "__builtin_ia32_sha1rnds4"
        }
        break;
      case 'q':	 // 6 strings to match.
        if (memcmp(BuiltinName.data()+17, "rt", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'p':	 // 4 strings to match.
          switch (BuiltinName[20]) {
          default: break;
          case 'd':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx_sqrt_pd_256;	 // "__builtin_ia32_sqrtpd256"
            case '5':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "12", 2))
                break;
              return Intrinsic::x86_avx512_sqrt_pd_512;	 // "__builtin_ia32_sqrtpd512"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[21]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "56", 2))
                break;
              return Intrinsic::x86_avx_sqrt_ps_256;	 // "__builtin_ia32_sqrtps256"
            case '5':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+22, "12", 2))
                break;
              return Intrinsic::x86_avx512_sqrt_ps_512;	 // "__builtin_ia32_sqrtps512"
            }
            break;
          }
          break;
        case 'r':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+20, "nds", 3))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::x86_avx512_sqrt_sd;	 // "__builtin_ia32_sqrtrndsd"
          case 's':	 // 1 string to match.
            return Intrinsic::x86_avx512_sqrt_ss;	 // "__builtin_ia32_sqrtrndss"
          }
          break;
        }
        break;
      }
      break;
    case 'u':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+16, "comisd", 6))
        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':	 // 10 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'c':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "vtp", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'h':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2ps", 3))
            break;
          return Intrinsic::x86_vcvtph2ps_128;	 // "__builtin_ia32_vcvtph2ps"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2ph", 3))
            break;
          return Intrinsic::x86_vcvtps2ph_128;	 // "__builtin_ia32_vcvtps2ph"
        }
        break;
      case 'f':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+17, "nm", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'a':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+20, "dd", 2))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case 'p':	 // 2 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmadd_pd;	 // "__builtin_ia32_vfnmaddpd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmadd_ps;	 // "__builtin_ia32_vfnmaddps"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmadd_sd;	 // "__builtin_ia32_vfnmaddsd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmadd_ss;	 // "__builtin_ia32_vfnmaddss"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+20, "ub", 2))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case 'p':	 // 2 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmsub_pd;	 // "__builtin_ia32_vfnmsubpd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmsub_ps;	 // "__builtin_ia32_vfnmsubps"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[23]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmsub_sd;	 // "__builtin_ia32_vfnmsubsd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfnmsub_ss;	 // "__builtin_ia32_vfnmsubss"
            }
            break;
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 25:	 // 73 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'b':	 // 4 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'e':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "xtri_u", 6))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case '3':	 // 1 string to match.
          if (BuiltinName[24] != '2')
            break;
          return Intrinsic::x86_tbm_bextri_u32;	 // "__builtin_ia32_bextri_u32"
        case '6':	 // 1 string to match.
          if (BuiltinName[24] != '4')
            break;
          return Intrinsic::x86_tbm_bextri_u64;	 // "__builtin_ia32_bextri_u64"
        }
        break;
      case 'l':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "endp", 4))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "256", 3))
            break;
          return Intrinsic::x86_avx_blend_pd_256;	 // "__builtin_ia32_blendpd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "256", 3))
            break;
          return Intrinsic::x86_avx_blend_ps_256;	 // "__builtin_ia32_blendps256"
        }
        break;
      }
      break;
    case 'c':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+16, "vt", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 's':	 // 4 strings to match.
        switch (BuiltinName[19]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "2si64", 5))
            break;
          return Intrinsic::x86_sse2_cvtsd2si64;	 // "__builtin_ia32_cvtsd2si64"
        case 'i':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+20, "642s", 4))
            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 (memcmp(BuiltinName.data()+20, "2si64", 5))
            break;
          return Intrinsic::x86_sse_cvtss2si64;	 // "__builtin_ia32_cvtss2si64"
        }
        break;
      case 't':	 // 2 strings to match.
        if (BuiltinName[19] != 's')
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2usi", 4))
            break;
          return Intrinsic::x86_avx512_cvttsd2usi;	 // "__builtin_ia32_cvttsd2usi"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2usi", 4))
            break;
          return Intrinsic::x86_avx512_cvttss2usi;	 // "__builtin_ia32_cvttss2usi"
        }
        break;
      }
      break;
    case 'g':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+16, "ather", 5))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "_p", 2))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_avx2_gather_d_pd;	 // "__builtin_ia32_gatherd_pd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_avx2_gather_d_ps;	 // "__builtin_ia32_gatherd_ps"
        }
        break;
      case 'q':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "_p", 2))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_avx2_gather_q_pd;	 // "__builtin_ia32_gatherq_pd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_avx2_gather_q_ps;	 // "__builtin_ia32_gatherq_ps"
        }
        break;
      }
      break;
    case 'k':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "ortest", 6))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "hi", 2))
          break;
        return Intrinsic::x86_avx512_kortestc_w;	 // "__builtin_ia32_kortestchi"
      case 'z':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "hi", 2))
          break;
        return Intrinsic::x86_avx512_kortestz_w;	 // "__builtin_ia32_kortestzhi"
      }
      break;
    case 'm':	 // 7 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 5 strings to match.
        if (memcmp(BuiltinName.data()+17, "sk", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'l':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+20, "oadp", 4))
            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 (memcmp(BuiltinName.data()+20, "ovdqu", 5))
            break;
          return Intrinsic::x86_sse2_maskmov_dqu;	 // "__builtin_ia32_maskmovdqu"
        case 's':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+20, "tore", 4))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'd':	 // 1 string to match.
            return Intrinsic::x86_avx2_maskstore_d;	 // "__builtin_ia32_maskstored"
          case 'q':	 // 1 string to match.
            return Intrinsic::x86_avx2_maskstore_q;	 // "__builtin_ia32_maskstoreq"
          }
          break;
        }
        break;
      case 'p':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "sadbw", 5))
          break;
        switch (BuiltinName[22]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "28", 2))
            break;
          return Intrinsic::x86_sse41_mpsadbw;	 // "__builtin_ia32_mpsadbw128"
        case '2':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "56", 2))
            break;
          return Intrinsic::x86_avx2_mpsadbw;	 // "__builtin_ia32_mpsadbw256"
        }
        break;
      }
      break;
    case 'p':	 // 30 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+17, "ddus", 4))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'b':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "28", 2))
              break;
            return Intrinsic::x86_sse2_paddus_b;	 // "__builtin_ia32_paddusb128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "56", 2))
              break;
            return Intrinsic::x86_avx2_paddus_b;	 // "__builtin_ia32_paddusb256"
          }
          break;
        case 'w':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "28", 2))
              break;
            return Intrinsic::x86_sse2_paddus_w;	 // "__builtin_ia32_paddusw128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "56", 2))
              break;
            return Intrinsic::x86_avx2_paddus_w;	 // "__builtin_ia32_paddusw256"
          }
          break;
        }
        break;
      case 'b':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+17, "lend", 4))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'd':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "28", 2))
              break;
            return Intrinsic::x86_avx2_pblendd_128;	 // "__builtin_ia32_pblendd128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "56", 2))
              break;
            return Intrinsic::x86_avx2_pblendd_256;	 // "__builtin_ia32_pblendd256"
          }
          break;
        case 'w':	 // 2 strings to match.
          switch (BuiltinName[22]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "28", 2))
              break;
            return Intrinsic::x86_sse41_pblendw;	 // "__builtin_ia32_pblendw128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "56", 2))
              break;
            return Intrinsic::x86_avx2_pblendw;	 // "__builtin_ia32_pblendw256"
          }
          break;
        }
        break;
      case 'h':	 // 4 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+18, "ddsw", 4))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "28", 2))
              break;
            return Intrinsic::x86_ssse3_phadd_sw_128;	 // "__builtin_ia32_phaddsw128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "56", 2))
              break;
            return Intrinsic::x86_avx2_phadd_sw;	 // "__builtin_ia32_phaddsw256"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+18, "ubsw", 4))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "28", 2))
              break;
            return Intrinsic::x86_ssse3_phsub_sw_128;	 // "__builtin_ia32_phsubsw128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "56", 2))
              break;
            return Intrinsic::x86_avx2_phsub_sw;	 // "__builtin_ia32_phsubsw256"
          }
          break;
        }
        break;
      case 'm':	 // 6 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'a':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+18, "ddwd", 4))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "28", 2))
              break;
            return Intrinsic::x86_sse2_pmadd_wd;	 // "__builtin_ia32_pmaddwd128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "56", 2))
              break;
            return Intrinsic::x86_avx2_pmadd_wd;	 // "__builtin_ia32_pmaddwd256"
          }
          break;
        case 'u':	 // 4 strings to match.
          if (BuiltinName[18] != 'l')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'h':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+20, "uw", 2))
              break;
            switch (BuiltinName[22]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "28", 2))
                break;
              return Intrinsic::x86_sse2_pmulhu_w;	 // "__builtin_ia32_pmulhuw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "56", 2))
                break;
              return Intrinsic::x86_avx2_pmulhu_w;	 // "__builtin_ia32_pmulhuw256"
            }
            break;
          case 'u':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+20, "dq", 2))
              break;
            switch (BuiltinName[22]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "28", 2))
                break;
              return Intrinsic::x86_sse2_pmulu_dq;	 // "__builtin_ia32_pmuludq128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "56", 2))
                break;
              return Intrinsic::x86_avx2_pmulu_dq;	 // "__builtin_ia32_pmuludq256"
            }
            break;
          }
          break;
        }
        break;
      case 's':	 // 10 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'l':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+18, "ldqi", 4))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "28", 2))
              break;
            return Intrinsic::x86_sse2_psll_dq;	 // "__builtin_ia32_pslldqi128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "56", 2))
              break;
            return Intrinsic::x86_avx2_psll_dq;	 // "__builtin_ia32_pslldqi256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "12", 2))
              break;
            return Intrinsic::x86_avx512_psll_dq;	 // "__builtin_ia32_pslldqi512"
          }
          break;
        case 'r':	 // 3 strings to match.
          if (memcmp(BuiltinName.data()+18, "ldqi", 4))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "28", 2))
              break;
            return Intrinsic::x86_sse2_psrl_dq;	 // "__builtin_ia32_psrldqi128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "56", 2))
              break;
            return Intrinsic::x86_avx2_psrl_dq;	 // "__builtin_ia32_psrldqi256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "12", 2))
              break;
            return Intrinsic::x86_avx512_psrl_dq;	 // "__builtin_ia32_psrldqi512"
          }
          break;
        case 'u':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+18, "bus", 3))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'b':	 // 2 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "28", 2))
                break;
              return Intrinsic::x86_sse2_psubus_b;	 // "__builtin_ia32_psubusb128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "56", 2))
                break;
              return Intrinsic::x86_avx2_psubus_b;	 // "__builtin_ia32_psubusb256"
            }
            break;
          case 'w':	 // 2 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "28", 2))
                break;
              return Intrinsic::x86_sse2_psubus_w;	 // "__builtin_ia32_psubusw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+23, "56", 2))
                break;
              return Intrinsic::x86_avx2_psubus_w;	 // "__builtin_ia32_psubusw256"
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "estm", 4))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "512", 3))
            break;
          return Intrinsic::x86_avx512_mask_ptestm_d_512;	 // "__builtin_ia32_ptestmd512"
        case 'q':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "512", 3))
            break;
          return Intrinsic::x86_avx512_mask_ptestm_q_512;	 // "__builtin_ia32_ptestmq512"
        }
        break;
      }
      break;
    case 'r':	 // 9 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'd':	 // 4 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'f':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+18, "sbase", 5))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case '3':	 // 1 string to match.
            if (BuiltinName[24] != '2')
              break;
            return Intrinsic::x86_rdfsbase_32;	 // "__builtin_ia32_rdfsbase32"
          case '6':	 // 1 string to match.
            if (BuiltinName[24] != '4')
              break;
            return Intrinsic::x86_rdfsbase_64;	 // "__builtin_ia32_rdfsbase64"
          }
          break;
        case 'g':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+18, "sbase", 5))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case '3':	 // 1 string to match.
            if (BuiltinName[24] != '2')
              break;
            return Intrinsic::x86_rdgsbase_32;	 // "__builtin_ia32_rdgsbase32"
          case '6':	 // 1 string to match.
            if (BuiltinName[24] != '4')
              break;
            return Intrinsic::x86_rdgsbase_64;	 // "__builtin_ia32_rdgsbase64"
          }
          break;
        }
        break;
      case 'n':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "dscales", 7))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_avx512_rndscale_sd;	 // "__builtin_ia32_rndscalesd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_avx512_rndscale_ss;	 // "__builtin_ia32_rndscaless"
        }
        break;
      case 'o':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "undp", 4))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "256", 3))
            break;
          return Intrinsic::x86_avx_round_pd_256;	 // "__builtin_ia32_roundpd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "256", 3))
            break;
          return Intrinsic::x86_avx_round_ps_256;	 // "__builtin_ia32_roundps256"
        }
        break;
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "qrtps256", 8))
          break;
        return Intrinsic::x86_avx_rsqrt_ps_256;	 // "__builtin_ia32_rsqrtps256"
      }
      break;
    case 's':	 // 3 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'h':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "a256msg", 7))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '1':	 // 1 string to match.
          return Intrinsic::x86_sha256msg1;	 // "__builtin_ia32_sha256msg1"
        case '2':	 // 1 string to match.
          return Intrinsic::x86_sha256msg2;	 // "__builtin_ia32_sha256msg2"
        }
        break;
      case 't':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "orelv4si", 8))
          break;
        return Intrinsic::x86_sse2_storel_dq;	 // "__builtin_ia32_storelv4si"
      }
      break;
    case 'u':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "comisdneq", 9))
        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 (memcmp(BuiltinName.data()+17, "estnzcp", 7))
          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 (memcmp(BuiltinName.data()+17, "eroupper", 8))
          break;
        return Intrinsic::x86_avx_vzeroupper;	 // "__builtin_ia32_vzeroupper"
      }
      break;
    case 'w':	 // 4 strings to match.
      if (BuiltinName[16] != 'r')
        break;
      switch (BuiltinName[17]) {
      default: break;
      case 'f':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+18, "sbase", 5))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case '3':	 // 1 string to match.
          if (BuiltinName[24] != '2')
            break;
          return Intrinsic::x86_wrfsbase_32;	 // "__builtin_ia32_wrfsbase32"
        case '6':	 // 1 string to match.
          if (BuiltinName[24] != '4')
            break;
          return Intrinsic::x86_wrfsbase_64;	 // "__builtin_ia32_wrfsbase64"
        }
        break;
      case 'g':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+18, "sbase", 5))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case '3':	 // 1 string to match.
          if (BuiltinName[24] != '2')
            break;
          return Intrinsic::x86_wrgsbase_32;	 // "__builtin_ia32_wrgsbase32"
        case '6':	 // 1 string to match.
          if (BuiltinName[24] != '4')
            break;
          return Intrinsic::x86_wrgsbase_64;	 // "__builtin_ia32_wrgsbase64"
        }
        break;
      }
      break;
    }
    break;
  case 26:	 // 92 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'a':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "ddsubp", 6))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "256", 3))
          break;
        return Intrinsic::x86_avx_addsub_pd_256;	 // "__builtin_ia32_addsubpd256"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "256", 3))
          break;
        return Intrinsic::x86_avx_addsub_ps_256;	 // "__builtin_ia32_addsubps256"
      }
      break;
    case 'b':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "lendvp", 6))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "256", 3))
          break;
        return Intrinsic::x86_avx_blendv_pd_256;	 // "__builtin_ia32_blendvpd256"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "256", 3))
          break;
        return Intrinsic::x86_avx_blendv_ps_256;	 // "__builtin_ia32_blendvps256"
      }
      break;
    case 'c':	 // 12 strings to match.
      if (memcmp(BuiltinName.data()+16, "vt", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+19, "q2p", 3))
          break;
        switch (BuiltinName[22]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "256", 3))
            break;
          return Intrinsic::x86_avx_cvtdq2_pd_256;	 // "__builtin_ia32_cvtdq2pd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "256", 3))
            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 (memcmp(BuiltinName.data()+22, "q256", 4))
              break;
            return Intrinsic::x86_avx_cvt_pd2dq_256;	 // "__builtin_ia32_cvtpd2dq256"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "s256", 4))
              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 (memcmp(BuiltinName.data()+22, "q256", 4))
              break;
            return Intrinsic::x86_avx_cvt_ps2dq_256;	 // "__builtin_ia32_cvtps2dq256"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "d256", 4))
              break;
            return Intrinsic::x86_avx_cvt_ps2_pd_256;	 // "__builtin_ia32_cvtps2pd256"
          }
          break;
        }
        break;
      case 's':	 // 2 strings to match.
        switch (BuiltinName[19]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "2usi64", 6))
            break;
          return Intrinsic::x86_avx512_cvtsd2usi64;	 // "__builtin_ia32_cvtsd2usi64"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "2usi64", 6))
            break;
          return Intrinsic::x86_avx512_cvtss2usi64;	 // "__builtin_ia32_cvtss2usi64"
        }
        break;
      case 't':	 // 2 strings to match.
        if (BuiltinName[19] != 's')
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2si64", 5))
            break;
          return Intrinsic::x86_sse2_cvttsd2si64;	 // "__builtin_ia32_cvttsd2si64"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2si64", 5))
            break;
          return Intrinsic::x86_sse_cvttss2si64;	 // "__builtin_ia32_cvttss2si64"
        }
        break;
      case 'u':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+19, "si642s", 6))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_avx512_cvtusi642sd;	 // "__builtin_ia32_cvtusi642sd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_avx512_cvtusi642ss;	 // "__builtin_ia32_cvtusi642ss"
        }
        break;
      }
      break;
    case 'g':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+16, "atherpf", 7))
        break;
      switch (BuiltinName[23]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (BuiltinName[24] != 'p')
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_avx512_gatherpf_dpd_512;	 // "__builtin_ia32_gatherpfdpd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_avx512_gatherpf_dps_512;	 // "__builtin_ia32_gatherpfdps"
        }
        break;
      case 'q':	 // 2 strings to match.
        if (BuiltinName[24] != 'p')
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_avx512_gatherpf_qpd_512;	 // "__builtin_ia32_gatherpfqpd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_avx512_gatherpf_qps_512;	 // "__builtin_ia32_gatherpfqps"
        }
        break;
      }
      break;
    case 'i':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "nsertps128", 10))
        break;
      return Intrinsic::x86_sse41_insertps;	 // "__builtin_ia32_insertps128"
    case 'm':	 // 6 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "skstorep", 8))
          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':	 // 4 strings to match.
        if (BuiltinName[17] != 'v')
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'm':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+19, "skp", 3))
            break;
          switch (BuiltinName[22]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "256", 3))
              break;
            return Intrinsic::x86_avx_movmsk_pd_256;	 // "__builtin_ia32_movmskpd256"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "256", 3))
              break;
            return Intrinsic::x86_avx_movmsk_ps_256;	 // "__builtin_ia32_movmskps256"
          }
          break;
        case 'n':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+19, "tdqa", 4))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "56", 2))
              break;
            return Intrinsic::x86_avx2_movntdqa;	 // "__builtin_ia32_movntdqa256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "12", 2))
              break;
            return Intrinsic::x86_avx512_movntdqa;	 // "__builtin_ia32_movntdqa512"
          }
          break;
        }
        break;
      }
      break;
    case 'p':	 // 45 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+17, "ck", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 's':	 // 4 strings to match.
          if (BuiltinName[20] != 's')
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (BuiltinName[22] != 'w')
              break;
            switch (BuiltinName[23]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "28", 2))
                break;
              return Intrinsic::x86_sse2_packssdw_128;	 // "__builtin_ia32_packssdw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "56", 2))
                break;
              return Intrinsic::x86_avx2_packssdw;	 // "__builtin_ia32_packssdw256"
            }
            break;
          case 'w':	 // 2 strings to match.
            if (BuiltinName[22] != 'b')
              break;
            switch (BuiltinName[23]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "28", 2))
                break;
              return Intrinsic::x86_sse2_packsswb_128;	 // "__builtin_ia32_packsswb128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "56", 2))
                break;
              return Intrinsic::x86_avx2_packsswb;	 // "__builtin_ia32_packsswb256"
            }
            break;
          }
          break;
        case 'u':	 // 4 strings to match.
          if (BuiltinName[20] != 's')
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'd':	 // 2 strings to match.
            if (BuiltinName[22] != 'w')
              break;
            switch (BuiltinName[23]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "28", 2))
                break;
              return Intrinsic::x86_sse41_packusdw;	 // "__builtin_ia32_packusdw128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "56", 2))
                break;
              return Intrinsic::x86_avx2_packusdw;	 // "__builtin_ia32_packusdw256"
            }
            break;
          case 'w':	 // 2 strings to match.
            if (BuiltinName[22] != 'b')
              break;
            switch (BuiltinName[23]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "28", 2))
                break;
              return Intrinsic::x86_sse2_packuswb_128;	 // "__builtin_ia32_packuswb128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "56", 2))
                break;
              return Intrinsic::x86_avx2_packuswb;	 // "__builtin_ia32_packuswb256"
            }
            break;
          }
          break;
        }
        break;
      case 'b':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "lendvb", 6))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "28", 2))
            break;
          return Intrinsic::x86_sse41_pblendvb;	 // "__builtin_ia32_pblendvb128"
        case '2':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "56", 2))
            break;
          return Intrinsic::x86_avx2_pblendvb;	 // "__builtin_ia32_pblendvb256"
        }
        break;
      case 'm':	 // 33 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'o':	 // 31 strings to match.
          if (BuiltinName[18] != 'v')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'm':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+20, "skb", 3))
              break;
            switch (BuiltinName[23]) {
            default: break;
            case '1':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "28", 2))
                break;
              return Intrinsic::x86_sse2_pmovmskb_128;	 // "__builtin_ia32_pmovmskb128"
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "56", 2))
                break;
              return Intrinsic::x86_avx2_pmovmskb;	 // "__builtin_ia32_pmovmskb256"
            }
            break;
          case 's':	 // 12 strings to match.
            if (BuiltinName[20] != 'x')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 6 strings to match.
              switch (BuiltinName[22]) {
              default: break;
              case 'd':	 // 2 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmovsxbd;	 // "__builtin_ia32_pmovsxbd128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmovsxbd;	 // "__builtin_ia32_pmovsxbd256"
                }
                break;
              case 'q':	 // 2 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmovsxbq;	 // "__builtin_ia32_pmovsxbq128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmovsxbq;	 // "__builtin_ia32_pmovsxbq256"
                }
                break;
              case 'w':	 // 2 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmovsxbw;	 // "__builtin_ia32_pmovsxbw128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmovsxbw;	 // "__builtin_ia32_pmovsxbw256"
                }
                break;
              }
              break;
            case 'd':	 // 2 strings to match.
              if (BuiltinName[22] != 'q')
                break;
              switch (BuiltinName[23]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "28", 2))
                  break;
                return Intrinsic::x86_sse41_pmovsxdq;	 // "__builtin_ia32_pmovsxdq128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pmovsxdq;	 // "__builtin_ia32_pmovsxdq256"
              }
              break;
            case 'w':	 // 4 strings to match.
              switch (BuiltinName[22]) {
              default: break;
              case 'd':	 // 2 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmovsxwd;	 // "__builtin_ia32_pmovsxwd128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmovsxwd;	 // "__builtin_ia32_pmovsxwd256"
                }
                break;
              case 'q':	 // 2 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmovsxwq;	 // "__builtin_ia32_pmovsxwq128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmovsxwq;	 // "__builtin_ia32_pmovsxwq256"
                }
                break;
              }
              break;
            }
            break;
          case 'z':	 // 17 strings to match.
            if (BuiltinName[20] != 'x')
              break;
            switch (BuiltinName[21]) {
            default: break;
            case 'b':	 // 8 strings to match.
              switch (BuiltinName[22]) {
              default: break;
              case 'd':	 // 3 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmovzxbd;	 // "__builtin_ia32_pmovzxbd128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmovzxbd;	 // "__builtin_ia32_pmovzxbd256"
                case '5':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "12", 2))
                    break;
                  return Intrinsic::x86_avx512_pmovzxbd;	 // "__builtin_ia32_pmovzxbd512"
                }
                break;
              case 'q':	 // 3 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmovzxbq;	 // "__builtin_ia32_pmovzxbq128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmovzxbq;	 // "__builtin_ia32_pmovzxbq256"
                case '5':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "12", 2))
                    break;
                  return Intrinsic::x86_avx512_pmovzxbq;	 // "__builtin_ia32_pmovzxbq512"
                }
                break;
              case 'w':	 // 2 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmovzxbw;	 // "__builtin_ia32_pmovzxbw128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmovzxbw;	 // "__builtin_ia32_pmovzxbw256"
                }
                break;
              }
              break;
            case 'd':	 // 3 strings to match.
              if (BuiltinName[22] != 'q')
                break;
              switch (BuiltinName[23]) {
              default: break;
              case '1':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "28", 2))
                  break;
                return Intrinsic::x86_sse41_pmovzxdq;	 // "__builtin_ia32_pmovzxdq128"
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "56", 2))
                  break;
                return Intrinsic::x86_avx2_pmovzxdq;	 // "__builtin_ia32_pmovzxdq256"
              case '5':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "12", 2))
                  break;
                return Intrinsic::x86_avx512_pmovzxdq;	 // "__builtin_ia32_pmovzxdq512"
              }
              break;
            case 'w':	 // 6 strings to match.
              switch (BuiltinName[22]) {
              default: break;
              case 'd':	 // 3 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmovzxwd;	 // "__builtin_ia32_pmovzxwd128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmovzxwd;	 // "__builtin_ia32_pmovzxwd256"
                case '5':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "12", 2))
                    break;
                  return Intrinsic::x86_avx512_pmovzxwd;	 // "__builtin_ia32_pmovzxwd512"
                }
                break;
              case 'q':	 // 3 strings to match.
                switch (BuiltinName[23]) {
                default: break;
                case '1':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "28", 2))
                    break;
                  return Intrinsic::x86_sse41_pmovzxwq;	 // "__builtin_ia32_pmovzxwq128"
                case '2':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "56", 2))
                    break;
                  return Intrinsic::x86_avx2_pmovzxwq;	 // "__builtin_ia32_pmovzxwq256"
                case '5':	 // 1 string to match.
                  if (memcmp(BuiltinName.data()+24, "12", 2))
                    break;
                  return Intrinsic::x86_avx512_pmovzxwq;	 // "__builtin_ia32_pmovzxwq512"
                }
                break;
              }
              break;
            }
            break;
          }
          break;
        case 'u':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+18, "lhrsw", 5))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "28", 2))
              break;
            return Intrinsic::x86_ssse3_pmul_hr_sw_128;	 // "__builtin_ia32_pmulhrsw128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "56", 2))
              break;
            return Intrinsic::x86_avx2_pmul_hr_sw;	 // "__builtin_ia32_pmulhrsw256"
          }
          break;
        }
        break;
      case 't':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "estnzc", 6))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "28", 2))
            break;
          return Intrinsic::x86_sse41_ptestnzc;	 // "__builtin_ia32_ptestnzc128"
        case '2':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "56", 2))
            break;
          return Intrinsic::x86_avx_ptestnzc_256;	 // "__builtin_ia32_ptestnzc256"
        }
        break;
      }
      break;
    case 's':	 // 4 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'h':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "a256rnds2", 9))
          break;
        return Intrinsic::x86_sha256rnds2;	 // "__builtin_ia32_sha256rnds2"
      case 't':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+17, "ore", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "qu256", 5))
            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 (memcmp(BuiltinName.data()+23, "256", 3))
              break;
            return Intrinsic::x86_avx_storeu_pd_256;	 // "__builtin_ia32_storeupd256"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "256", 3))
              break;
            return Intrinsic::x86_avx_storeu_ps_256;	 // "__builtin_ia32_storeups256"
          }
          break;
        }
        break;
      }
      break;
    case 'v':	 // 16 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'f':	 // 12 strings to match.
        if (BuiltinName[17] != 'm')
          break;
        switch (BuiltinName[18]) {
        default: break;
        case 'a':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+19, "dd", 2))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'p':	 // 4 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 2 strings to match.
              switch (BuiltinName[23]) {
              default: break;
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "56", 2))
                  break;
                return Intrinsic::x86_fma_vfmadd_pd_256;	 // "__builtin_ia32_vfmaddpd256"
              case '5':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "12", 2))
                  break;
                return Intrinsic::x86_fma_vfmadd_pd_512;	 // "__builtin_ia32_vfmaddpd512"
              }
              break;
            case 's':	 // 2 strings to match.
              switch (BuiltinName[23]) {
              default: break;
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "56", 2))
                  break;
                return Intrinsic::x86_fma_vfmadd_ps_256;	 // "__builtin_ia32_vfmaddps256"
              case '5':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "12", 2))
                  break;
                return Intrinsic::x86_fma_vfmadd_ps_512;	 // "__builtin_ia32_vfmaddps512"
              }
              break;
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+22, "ubp", 3))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmaddsub_pd;	 // "__builtin_ia32_vfmaddsubpd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmaddsub_ps;	 // "__builtin_ia32_vfmaddsubps"
            }
            break;
          }
          break;
        case 's':	 // 6 strings to match.
          if (memcmp(BuiltinName.data()+19, "ub", 2))
            break;
          switch (BuiltinName[21]) {
          default: break;
          case 'a':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+22, "ddp", 3))
              break;
            switch (BuiltinName[25]) {
            default: break;
            case 'd':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmsubadd_pd;	 // "__builtin_ia32_vfmsubaddpd"
            case 's':	 // 1 string to match.
              return Intrinsic::x86_fma_vfmsubadd_ps;	 // "__builtin_ia32_vfmsubaddps"
            }
            break;
          case 'p':	 // 4 strings to match.
            switch (BuiltinName[22]) {
            default: break;
            case 'd':	 // 2 strings to match.
              switch (BuiltinName[23]) {
              default: break;
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "56", 2))
                  break;
                return Intrinsic::x86_fma_vfmsub_pd_256;	 // "__builtin_ia32_vfmsubpd256"
              case '5':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "12", 2))
                  break;
                return Intrinsic::x86_fma_vfmsub_pd_512;	 // "__builtin_ia32_vfmsubpd512"
              }
              break;
            case 's':	 // 2 strings to match.
              switch (BuiltinName[23]) {
              default: break;
              case '2':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "56", 2))
                  break;
                return Intrinsic::x86_fma_vfmsub_ps_256;	 // "__builtin_ia32_vfmsubps256"
              case '5':	 // 1 string to match.
                if (memcmp(BuiltinName.data()+24, "12", 2))
                  break;
                return Intrinsic::x86_fma_vfmsub_ps_512;	 // "__builtin_ia32_vfmsubps512"
              }
              break;
            }
            break;
          }
          break;
        }
        break;
      case 't':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+17, "est", 3))
          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 (memcmp(BuiltinName.data()+23, "256", 3))
              break;
            return Intrinsic::x86_avx_vtestc_pd_256;	 // "__builtin_ia32_vtestcpd256"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "256", 3))
              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 (memcmp(BuiltinName.data()+23, "256", 3))
              break;
            return Intrinsic::x86_avx_vtestz_pd_256;	 // "__builtin_ia32_vtestzpd256"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+23, "256", 3))
              break;
            return Intrinsic::x86_avx_vtestz_ps_256;	 // "__builtin_ia32_vtestzps256"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 27:	 // 48 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'c':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+16, "vtt", 3))
        break;
      switch (BuiltinName[19]) {
      default: break;
      case 'p':	 // 2 strings to match.
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2dq256", 6))
            break;
          return Intrinsic::x86_avx_cvtt_pd2dq_256;	 // "__builtin_ia32_cvttpd2dq256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2dq256", 6))
            break;
          return Intrinsic::x86_avx_cvtt_ps2dq_256;	 // "__builtin_ia32_cvttps2dq256"
        }
        break;
      case 's':	 // 2 strings to match.
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2usi64", 6))
            break;
          return Intrinsic::x86_avx512_cvttsd2usi64;	 // "__builtin_ia32_cvttsd2usi64"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2usi64", 6))
            break;
          return Intrinsic::x86_avx512_cvttss2usi64;	 // "__builtin_ia32_cvttss2usi64"
        }
        break;
      }
      break;
    case 'e':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "xtractps128", 11))
        break;
      return Intrinsic::x86_sse41_extractps;	 // "__builtin_ia32_extractps128"
    case 'g':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+16, "ather", 5))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'd':	 // 4 strings to match.
        switch (BuiltinName[22]) {
        default: break;
        case '_':	 // 2 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "256", 3))
              break;
            return Intrinsic::x86_avx2_gather_d_d_256;	 // "__builtin_ia32_gatherd_d256"
          case 'q':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "256", 3))
              break;
            return Intrinsic::x86_avx2_gather_d_q_256;	 // "__builtin_ia32_gatherd_q256"
          }
          break;
        case 'i':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+23, "v8d", 3))
            break;
          switch (BuiltinName[26]) {
          default: break;
          case 'f':	 // 1 string to match.
            return Intrinsic::x86_avx512_gather_qpd_512;	 // "__builtin_ia32_gatherdiv8df"
          case 'i':	 // 1 string to match.
            return Intrinsic::x86_avx512_gather_qpq_512;	 // "__builtin_ia32_gatherdiv8di"
          }
          break;
        }
        break;
      case 'q':	 // 2 strings to match.
        if (BuiltinName[22] != '_')
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "256", 3))
            break;
          return Intrinsic::x86_avx2_gather_q_d_256;	 // "__builtin_ia32_gatherq_d256"
        case 'q':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "256", 3))
            break;
          return Intrinsic::x86_avx2_gather_q_q_256;	 // "__builtin_ia32_gatherq_q256"
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "iv8d", 4))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'f':	 // 1 string to match.
          return Intrinsic::x86_avx512_gather_dpd_512;	 // "__builtin_ia32_gathersiv8df"
        case 'i':	 // 1 string to match.
          return Intrinsic::x86_avx512_gather_dpq_512;	 // "__builtin_ia32_gathersiv8di"
        }
        break;
      }
      break;
    case 'm':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "askload", 7))
        break;
      switch (BuiltinName[23]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+24, "256", 3))
          break;
        return Intrinsic::x86_avx2_maskload_d_256;	 // "__builtin_ia32_maskloadd256"
      case 'q':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+24, "256", 3))
          break;
        return Intrinsic::x86_avx2_maskload_q_256;	 // "__builtin_ia32_maskloadq256"
      }
      break;
    case 'p':	 // 9 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'c':	 // 5 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'l':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "mulqdq128", 9))
            break;
          return Intrinsic::x86_pclmulqdq;	 // "__builtin_ia32_pclmulqdq128"
        case 'm':	 // 4 strings to match.
          if (BuiltinName[18] != 'p')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'e':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+20, "str", 3))
              break;
            switch (BuiltinName[23]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "128", 3))
                break;
              return Intrinsic::x86_sse42_pcmpestri128;	 // "__builtin_ia32_pcmpestri128"
            case 'm':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "128", 3))
                break;
              return Intrinsic::x86_sse42_pcmpestrm128;	 // "__builtin_ia32_pcmpestrm128"
            }
            break;
          case 'i':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+20, "str", 3))
              break;
            switch (BuiltinName[23]) {
            default: break;
            case 'i':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "128", 3))
                break;
              return Intrinsic::x86_sse42_pcmpistri128;	 // "__builtin_ia32_pcmpistri128"
            case 'm':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+24, "128", 3))
                break;
              return Intrinsic::x86_sse42_pcmpistrm128;	 // "__builtin_ia32_pcmpistrm128"
            }
            break;
          }
          break;
        }
        break;
      case 'e':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "rmvars", 6))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'f':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "256", 3))
            break;
          return Intrinsic::x86_avx2_permps;	 // "__builtin_ia32_permvarsf256"
        case 'i':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "256", 3))
            break;
          return Intrinsic::x86_avx2_permd;	 // "__builtin_ia32_permvarsi256"
        }
        break;
      case 'm':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "addubsw", 7))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "28", 2))
            break;
          return Intrinsic::x86_ssse3_pmadd_ub_sw_128;	 // "__builtin_ia32_pmaddubsw128"
        case '2':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "56", 2))
            break;
          return Intrinsic::x86_avx2_pmadd_ub_sw;	 // "__builtin_ia32_pmaddubsw256"
        }
        break;
      }
      break;
    case 'r':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+16, "cp", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case '1':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+19, "4s", 2))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "_mask", 5))
            break;
          return Intrinsic::x86_avx512_rcp14_sd;	 // "__builtin_ia32_rcp14sd_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "_mask", 5))
            break;
          return Intrinsic::x86_avx512_rcp14_ss;	 // "__builtin_ia32_rcp14ss_mask"
        }
        break;
      case '2':	 // 4 strings to match.
        if (BuiltinName[19] != '8')
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'p':	 // 2 strings to match.
          switch (BuiltinName[21]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "_mask", 5))
              break;
            return Intrinsic::x86_avx512_rcp28_pd;	 // "__builtin_ia32_rcp28pd_mask"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "_mask", 5))
              break;
            return Intrinsic::x86_avx512_rcp28_ps;	 // "__builtin_ia32_rcp28ps_mask"
          }
          break;
        case 's':	 // 2 strings to match.
          switch (BuiltinName[21]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "_mask", 5))
              break;
            return Intrinsic::x86_avx512_rcp28_sd;	 // "__builtin_ia32_rcp28sd_mask"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "_mask", 5))
              break;
            return Intrinsic::x86_avx512_rcp28_ss;	 // "__builtin_ia32_rcp28ss_mask"
          }
          break;
        }
        break;
      }
      break;
    case 's':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+16, "catterpf", 8))
        break;
      switch (BuiltinName[24]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (BuiltinName[25] != 'p')
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatterpf_dpd_512;	 // "__builtin_ia32_scatterpfdpd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatterpf_dps_512;	 // "__builtin_ia32_scatterpfdps"
        }
        break;
      case 'q':	 // 2 strings to match.
        if (BuiltinName[25] != 'p')
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'd':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatterpf_qpd_512;	 // "__builtin_ia32_scatterpfqpd"
        case 's':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatterpf_qps_512;	 // "__builtin_ia32_scatterpfqps"
        }
        break;
      }
      break;
    case 'v':	 // 14 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'c':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "vtp", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'h':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2ps256", 6))
            break;
          return Intrinsic::x86_vcvtph2ps_256;	 // "__builtin_ia32_vcvtph2ps256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2ph256", 6))
            break;
          return Intrinsic::x86_vcvtps2ph_256;	 // "__builtin_ia32_vcvtps2ph256"
        }
        break;
      case 'e':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "c_", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'e':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "xt_v4hi", 7))
            break;
          return Intrinsic::x86_mmx_pextr_w;	 // "__builtin_ia32_vec_ext_v4hi"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "et_v4hi", 7))
            break;
          return Intrinsic::x86_mmx_pinsr_w;	 // "__builtin_ia32_vec_set_v4hi"
        }
        break;
      case 'f':	 // 8 strings to match.
        if (memcmp(BuiltinName.data()+17, "nm", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'a':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+20, "ddp", 3))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'd':	 // 2 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "56", 2))
                break;
              return Intrinsic::x86_fma_vfnmadd_pd_256;	 // "__builtin_ia32_vfnmaddpd256"
            case '5':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "12", 2))
                break;
              return Intrinsic::x86_fma_vfnmadd_pd_512;	 // "__builtin_ia32_vfnmaddpd512"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "56", 2))
                break;
              return Intrinsic::x86_fma_vfnmadd_ps_256;	 // "__builtin_ia32_vfnmaddps256"
            case '5':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "12", 2))
                break;
              return Intrinsic::x86_fma_vfnmadd_ps_512;	 // "__builtin_ia32_vfnmaddps512"
            }
            break;
          }
          break;
        case 's':	 // 4 strings to match.
          if (memcmp(BuiltinName.data()+20, "ubp", 3))
            break;
          switch (BuiltinName[23]) {
          default: break;
          case 'd':	 // 2 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "56", 2))
                break;
              return Intrinsic::x86_fma_vfnmsub_pd_256;	 // "__builtin_ia32_vfnmsubpd256"
            case '5':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "12", 2))
                break;
              return Intrinsic::x86_fma_vfnmsub_pd_512;	 // "__builtin_ia32_vfnmsubpd512"
            }
            break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[24]) {
            default: break;
            case '2':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "56", 2))
                break;
              return Intrinsic::x86_fma_vfnmsub_ps_256;	 // "__builtin_ia32_vfnmsubps256"
            case '5':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "12", 2))
                break;
              return Intrinsic::x86_fma_vfnmsub_ps_512;	 // "__builtin_ia32_vfnmsubps512"
            }
            break;
          }
          break;
        }
        break;
      case 'p':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "ermilvarp", 9))
          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;
  case 28:	 // 42 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'a':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "es", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "eclast128", 9))
          break;
        return Intrinsic::x86_aesni_aesdeclast;	 // "__builtin_ia32_aesdeclast128"
      case 'e':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+19, "nclast128", 9))
          break;
        return Intrinsic::x86_aesni_aesenclast;	 // "__builtin_ia32_aesenclast128"
      }
      break;
    case 'c':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "mpp", 3))
        break;
      switch (BuiltinName[19]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "512_mask", 8))
          break;
        return Intrinsic::x86_avx512_mask_cmp_pd_512;	 // "__builtin_ia32_cmppd512_mask"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+20, "512_mask", 8))
          break;
        return Intrinsic::x86_avx512_mask_cmp_ps_512;	 // "__builtin_ia32_cmpps512_mask"
      }
      break;
    case 'g':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+16, "ather", 5))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'd':	 // 4 strings to match.
        switch (BuiltinName[22]) {
        default: break;
        case '_':	 // 2 strings to match.
          if (BuiltinName[23] != 'p')
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "256", 3))
              break;
            return Intrinsic::x86_avx2_gather_d_pd_256;	 // "__builtin_ia32_gatherd_pd256"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "256", 3))
              break;
            return Intrinsic::x86_avx2_gather_d_ps_256;	 // "__builtin_ia32_gatherd_ps256"
          }
          break;
        case 'i':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+23, "v16s", 4))
            break;
          switch (BuiltinName[27]) {
          default: break;
          case 'f':	 // 1 string to match.
            return Intrinsic::x86_avx512_gather_qps_512;	 // "__builtin_ia32_gatherdiv16sf"
          case 'i':	 // 1 string to match.
            return Intrinsic::x86_avx512_gather_qpi_512;	 // "__builtin_ia32_gatherdiv16si"
          }
          break;
        }
        break;
      case 'q':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "_p", 2))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "256", 3))
            break;
          return Intrinsic::x86_avx2_gather_q_pd_256;	 // "__builtin_ia32_gatherq_pd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "256", 3))
            break;
          return Intrinsic::x86_avx2_gather_q_ps_256;	 // "__builtin_ia32_gatherq_ps256"
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+22, "iv16s", 5))
          break;
        switch (BuiltinName[27]) {
        default: break;
        case 'f':	 // 1 string to match.
          return Intrinsic::x86_avx512_gather_dps_512;	 // "__builtin_ia32_gathersiv16sf"
        case 'i':	 // 1 string to match.
          return Intrinsic::x86_avx512_gather_dpi_512;	 // "__builtin_ia32_gathersiv16si"
        }
        break;
      }
      break;
    case 'i':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "nsert128i256", 12))
        break;
      return Intrinsic::x86_avx2_vinserti128;	 // "__builtin_ia32_insert128i256"
    case 'm':	 // 8 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 6 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 's':	 // 4 strings to match.
          if (BuiltinName[18] != 'k')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'l':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+20, "oadp", 4))
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "256", 3))
                break;
              return Intrinsic::x86_avx_maskload_pd_256;	 // "__builtin_ia32_maskloadpd256"
            case 's':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "256", 3))
                break;
              return Intrinsic::x86_avx_maskload_ps_256;	 // "__builtin_ia32_maskloadps256"
            }
            break;
          case 's':	 // 2 strings to match.
            if (memcmp(BuiltinName.data()+20, "tore", 4))
              break;
            switch (BuiltinName[24]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "256", 3))
                break;
              return Intrinsic::x86_avx2_maskstore_d_256;	 // "__builtin_ia32_maskstored256"
            case 'q':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+25, "256", 3))
                break;
              return Intrinsic::x86_avx2_maskstore_q_256;	 // "__builtin_ia32_maskstoreq256"
            }
            break;
          }
          break;
        case 'x':	 // 2 strings to match.
          if (BuiltinName[18] != 'p')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "512_mask", 8))
              break;
            return Intrinsic::x86_avx512_mask_max_pd_512;	 // "__builtin_ia32_maxpd512_mask"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "512_mask", 8))
              break;
            return Intrinsic::x86_avx512_mask_max_ps_512;	 // "__builtin_ia32_maxps512_mask"
          }
          break;
        }
        break;
      case 'i':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "np", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_mask_min_pd_512;	 // "__builtin_ia32_minpd512_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_mask_min_ps_512;	 // "__builtin_ia32_minps512_mask"
        }
        break;
      }
      break;
    case 'p':	 // 15 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'a':	 // 4 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'b':	 // 2 strings to match.
          if (BuiltinName[18] != 's')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "512_mask", 8))
              break;
            return Intrinsic::x86_avx512_mask_pabs_d_512;	 // "__builtin_ia32_pabsd512_mask"
          case 'q':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "512_mask", 8))
              break;
            return Intrinsic::x86_avx512_mask_pabs_q_512;	 // "__builtin_ia32_pabsq512_mask"
          }
          break;
        case 'n':	 // 2 strings to match.
          if (BuiltinName[18] != 'd')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "512_mask", 8))
              break;
            return Intrinsic::x86_avx512_mask_pand_d_512;	 // "__builtin_ia32_pandd512_mask"
          case 'q':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+20, "512_mask", 8))
              break;
            return Intrinsic::x86_avx512_mask_pand_q_512;	 // "__builtin_ia32_pandq512_mask"
          }
          break;
        }
        break;
      case 'c':	 // 10 strings to match.
        if (memcmp(BuiltinName.data()+17, "mp", 2))
          break;
        switch (BuiltinName[19]) {
        default: break;
        case 'e':	 // 5 strings to match.
          if (memcmp(BuiltinName.data()+20, "stri", 4))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpestria128;	 // "__builtin_ia32_pcmpestria128"
          case 'c':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpestric128;	 // "__builtin_ia32_pcmpestric128"
          case 'o':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpestrio128;	 // "__builtin_ia32_pcmpestrio128"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpestris128;	 // "__builtin_ia32_pcmpestris128"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpestriz128;	 // "__builtin_ia32_pcmpestriz128"
          }
          break;
        case 'i':	 // 5 strings to match.
          if (memcmp(BuiltinName.data()+20, "stri", 4))
            break;
          switch (BuiltinName[24]) {
          default: break;
          case 'a':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpistria128;	 // "__builtin_ia32_pcmpistria128"
          case 'c':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpistric128;	 // "__builtin_ia32_pcmpistric128"
          case 'o':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpistrio128;	 // "__builtin_ia32_pcmpistrio128"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpistris128;	 // "__builtin_ia32_pcmpistris128"
          case 'z':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+25, "128", 3))
              break;
            return Intrinsic::x86_sse42_pcmpistriz128;	 // "__builtin_ia32_pcmpistriz128"
          }
          break;
        }
        break;
      case 'h':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "minposuw128", 11))
          break;
        return Intrinsic::x86_sse41_phminposuw;	 // "__builtin_ia32_phminposuw128"
      }
      break;
    case 's':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+16, "catter", 6))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+23, "iv8d", 4))
          break;
        switch (BuiltinName[27]) {
        default: break;
        case 'f':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatter_qpd_512;	 // "__builtin_ia32_scatterdiv8df"
        case 'i':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatter_qpq_512;	 // "__builtin_ia32_scatterdiv8di"
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+23, "iv8d", 4))
          break;
        switch (BuiltinName[27]) {
        default: break;
        case 'f':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatter_dpd_512;	 // "__builtin_ia32_scattersiv8df"
        case 'i':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatter_dpq_512;	 // "__builtin_ia32_scattersiv8di"
        }
        break;
      }
      break;
    case 'v':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "testnzcp", 8))
        break;
      switch (BuiltinName[24]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+25, "256", 3))
          break;
        return Intrinsic::x86_avx_vtestnzc_pd_256;	 // "__builtin_ia32_vtestnzcpd256"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+25, "256", 3))
          break;
        return Intrinsic::x86_avx_vtestnzc_ps_256;	 // "__builtin_ia32_vtestnzcps256"
      }
      break;
    }
    break;
  case 29:	 // 40 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'e':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "xtract128i256", 13))
        break;
      return Intrinsic::x86_avx2_vextracti128;	 // "__builtin_ia32_extract128i256"
    case 'm':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "askstorep", 9))
        break;
      switch (BuiltinName[25]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+26, "256", 3))
          break;
        return Intrinsic::x86_avx_maskstore_pd_256;	 // "__builtin_ia32_maskstorepd256"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+26, "256", 3))
          break;
        return Intrinsic::x86_avx_maskstore_ps_256;	 // "__builtin_ia32_maskstoreps256"
      }
      break;
    case 'p':	 // 19 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'b':	 // 10 strings to match.
        if (memcmp(BuiltinName.data()+17, "roadcast", 8))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'b':	 // 2 strings to match.
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "28", 2))
              break;
            return Intrinsic::x86_avx2_pbroadcastb_128;	 // "__builtin_ia32_pbroadcastb128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "56", 2))
              break;
            return Intrinsic::x86_avx2_pbroadcastb_256;	 // "__builtin_ia32_pbroadcastb256"
          }
          break;
        case 'd':	 // 3 strings to match.
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "28", 2))
              break;
            return Intrinsic::x86_avx2_pbroadcastd_128;	 // "__builtin_ia32_pbroadcastd128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "56", 2))
              break;
            return Intrinsic::x86_avx2_pbroadcastd_256;	 // "__builtin_ia32_pbroadcastd256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "12", 2))
              break;
            return Intrinsic::x86_avx512_pbroadcastd_512;	 // "__builtin_ia32_pbroadcastd512"
          }
          break;
        case 'q':	 // 3 strings to match.
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "28", 2))
              break;
            return Intrinsic::x86_avx2_pbroadcastq_128;	 // "__builtin_ia32_pbroadcastq128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "56", 2))
              break;
            return Intrinsic::x86_avx2_pbroadcastq_256;	 // "__builtin_ia32_pbroadcastq256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "12", 2))
              break;
            return Intrinsic::x86_avx512_pbroadcastq_512;	 // "__builtin_ia32_pbroadcastq512"
          }
          break;
        case 'w':	 // 2 strings to match.
          switch (BuiltinName[26]) {
          default: break;
          case '1':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "28", 2))
              break;
            return Intrinsic::x86_avx2_pbroadcastw_128;	 // "__builtin_ia32_pbroadcastw128"
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "56", 2))
              break;
            return Intrinsic::x86_avx2_pbroadcastw_256;	 // "__builtin_ia32_pbroadcastw256"
          }
          break;
        }
        break;
      case 'm':	 // 9 strings to match.
        switch (BuiltinName[17]) {
        default: break;
        case 'a':	 // 4 strings to match.
          if (BuiltinName[18] != 'x')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "512_mask", 8))
                break;
              return Intrinsic::x86_avx512_mask_pmaxs_d_512;	 // "__builtin_ia32_pmaxsd512_mask"
            case 'q':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "512_mask", 8))
                break;
              return Intrinsic::x86_avx512_mask_pmaxs_q_512;	 // "__builtin_ia32_pmaxsq512_mask"
            }
            break;
          case 'u':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "512_mask", 8))
                break;
              return Intrinsic::x86_avx512_mask_pmaxu_d_512;	 // "__builtin_ia32_pmaxud512_mask"
            case 'q':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "512_mask", 8))
                break;
              return Intrinsic::x86_avx512_mask_pmaxu_q_512;	 // "__builtin_ia32_pmaxuq512_mask"
            }
            break;
          }
          break;
        case 'i':	 // 4 strings to match.
          if (BuiltinName[18] != 'n')
            break;
          switch (BuiltinName[19]) {
          default: break;
          case 's':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "512_mask", 8))
                break;
              return Intrinsic::x86_avx512_mask_pmins_d_512;	 // "__builtin_ia32_pminsd512_mask"
            case 'q':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "512_mask", 8))
                break;
              return Intrinsic::x86_avx512_mask_pmins_q_512;	 // "__builtin_ia32_pminsq512_mask"
            }
            break;
          case 'u':	 // 2 strings to match.
            switch (BuiltinName[20]) {
            default: break;
            case 'd':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "512_mask", 8))
                break;
              return Intrinsic::x86_avx512_mask_pminu_d_512;	 // "__builtin_ia32_pminud512_mask"
            case 'q':	 // 1 string to match.
              if (memcmp(BuiltinName.data()+21, "512_mask", 8))
                break;
              return Intrinsic::x86_avx512_mask_pminu_q_512;	 // "__builtin_ia32_pminuq512_mask"
            }
            break;
          }
          break;
        case 'u':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+18, "ldq512_mask", 11))
            break;
          return Intrinsic::x86_avx512_mask_pmul_dq_512;	 // "__builtin_ia32_pmuldq512_mask"
        }
        break;
      }
      break;
    case 'r':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+16, "sqrt", 4))
        break;
      switch (BuiltinName[20]) {
      default: break;
      case '1':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+21, "4s", 2))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "_mask", 5))
            break;
          return Intrinsic::x86_avx512_rsqrt14_sd;	 // "__builtin_ia32_rsqrt14sd_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "_mask", 5))
            break;
          return Intrinsic::x86_avx512_rsqrt14_ss;	 // "__builtin_ia32_rsqrt14ss_mask"
        }
        break;
      case '2':	 // 4 strings to match.
        if (BuiltinName[21] != '8')
          break;
        switch (BuiltinName[22]) {
        default: break;
        case 'p':	 // 2 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "_mask", 5))
              break;
            return Intrinsic::x86_avx512_rsqrt28_pd;	 // "__builtin_ia32_rsqrt28pd_mask"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "_mask", 5))
              break;
            return Intrinsic::x86_avx512_rsqrt28_ps;	 // "__builtin_ia32_rsqrt28ps_mask"
          }
          break;
        case 's':	 // 2 strings to match.
          switch (BuiltinName[23]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "_mask", 5))
              break;
            return Intrinsic::x86_avx512_rsqrt28_sd;	 // "__builtin_ia32_rsqrt28sd_mask"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+24, "_mask", 5))
              break;
            return Intrinsic::x86_avx512_rsqrt28_ss;	 // "__builtin_ia32_rsqrt28ss_mask"
          }
          break;
        }
        break;
      }
      break;
    case 's':	 // 4 strings to match.
      if (memcmp(BuiltinName.data()+16, "catter", 6))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+23, "iv16s", 5))
          break;
        switch (BuiltinName[28]) {
        default: break;
        case 'f':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatter_qps_512;	 // "__builtin_ia32_scatterdiv16sf"
        case 'i':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatter_qpi_512;	 // "__builtin_ia32_scatterdiv16si"
        }
        break;
      case 's':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+23, "iv16s", 5))
          break;
        switch (BuiltinName[28]) {
        default: break;
        case 'f':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatter_dps_512;	 // "__builtin_ia32_scattersiv16sf"
        case 'i':	 // 1 string to match.
          return Intrinsic::x86_avx512_scatter_dpi_512;	 // "__builtin_ia32_scattersiv16si"
        }
        break;
      }
      break;
    case 'v':	 // 8 strings to match.
      if (memcmp(BuiltinName.data()+16, "fm", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'a':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+19, "ddsubp", 6))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'd':	 // 2 strings to match.
          switch (BuiltinName[26]) {
          default: break;
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "56", 2))
              break;
            return Intrinsic::x86_fma_vfmaddsub_pd_256;	 // "__builtin_ia32_vfmaddsubpd256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "12", 2))
              break;
            return Intrinsic::x86_fma_vfmaddsub_pd_512;	 // "__builtin_ia32_vfmaddsubpd512"
          }
          break;
        case 's':	 // 2 strings to match.
          switch (BuiltinName[26]) {
          default: break;
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "56", 2))
              break;
            return Intrinsic::x86_fma_vfmaddsub_ps_256;	 // "__builtin_ia32_vfmaddsubps256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "12", 2))
              break;
            return Intrinsic::x86_fma_vfmaddsub_ps_512;	 // "__builtin_ia32_vfmaddsubps512"
          }
          break;
        }
        break;
      case 's':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+19, "ubaddp", 6))
          break;
        switch (BuiltinName[25]) {
        default: break;
        case 'd':	 // 2 strings to match.
          switch (BuiltinName[26]) {
          default: break;
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "56", 2))
              break;
            return Intrinsic::x86_fma_vfmsubadd_pd_256;	 // "__builtin_ia32_vfmsubaddpd256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "12", 2))
              break;
            return Intrinsic::x86_fma_vfmsubadd_pd_512;	 // "__builtin_ia32_vfmsubaddpd512"
          }
          break;
        case 's':	 // 2 strings to match.
          switch (BuiltinName[26]) {
          default: break;
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "56", 2))
              break;
            return Intrinsic::x86_fma_vfmsubadd_ps_256;	 // "__builtin_ia32_vfmsubaddps256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+27, "12", 2))
              break;
            return Intrinsic::x86_fma_vfmsubadd_ps_512;	 // "__builtin_ia32_vfmsubaddps512"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 30:	 // 14 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'l':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "oadup", 5))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "512_mask", 8))
          break;
        return Intrinsic::x86_avx512_mask_loadu_pd_512;	 // "__builtin_ia32_loadupd512_mask"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "512_mask", 8))
          break;
        return Intrinsic::x86_avx512_mask_loadu_ps_512;	 // "__builtin_ia32_loadups512_mask"
      }
      break;
    case 'p':	 // 3 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'c':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "mpeq", 4))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_mask_pcmpeq_d_512;	 // "__builtin_ia32_pcmpeqd512_mask"
        case 'q':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_mask_pcmpeq_q_512;	 // "__builtin_ia32_pcmpeqq512_mask"
        }
        break;
      case 'm':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+17, "uludq512_mask", 13))
          break;
        return Intrinsic::x86_avx512_mask_pmulu_dq_512;	 // "__builtin_ia32_pmuludq512_mask"
      }
      break;
    case 'r':	 // 4 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'c':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "p14p", 4))
          break;
        switch (BuiltinName[21]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_rcp14_pd_512;	 // "__builtin_ia32_rcp14pd512_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+22, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_rcp14_ps_512;	 // "__builtin_ia32_rcp14ps512_mask"
        }
        break;
      case 'n':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "dscalep", 7))
          break;
        switch (BuiltinName[24]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "_mask", 5))
            break;
          return Intrinsic::x86_avx512_mask_rndscale_pd_512;	 // "__builtin_ia32_rndscalepd_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+25, "_mask", 5))
            break;
          return Intrinsic::x86_avx512_mask_rndscale_ps_512;	 // "__builtin_ia32_rndscaleps_mask"
        }
        break;
      }
      break;
    case 'v':	 // 5 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'b':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+17, "roadcasts", 9))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "512", 3))
            break;
          return Intrinsic::x86_avx512_vbroadcast_sd_512;	 // "__builtin_ia32_vbroadcastsd512"
        case 's':	 // 2 strings to match.
          switch (BuiltinName[27]) {
          default: break;
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "12", 2))
              break;
            return Intrinsic::x86_avx512_vbroadcast_ss_512;	 // "__builtin_ia32_vbroadcastss512"
          case '_':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+28, "ps", 2))
              break;
            return Intrinsic::x86_avx2_vbroadcast_ss_ps;	 // "__builtin_ia32_vbroadcastss_ps"
          }
          break;
        }
        break;
      case 'p':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "ermilvarp", 9))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "256", 3))
            break;
          return Intrinsic::x86_avx_vpermilvar_pd_256;	 // "__builtin_ia32_vpermilvarpd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "256", 3))
            break;
          return Intrinsic::x86_avx_vpermilvar_ps_256;	 // "__builtin_ia32_vpermilvarps256"
        }
        break;
      }
      break;
    }
    break;
  case 31:	 // 12 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'b':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "lendm", 5))
        break;
      switch (BuiltinName[21]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "_512_mask", 9))
          break;
        return Intrinsic::x86_avx512_mask_blend_d_512;	 // "__builtin_ia32_blendmd_512_mask"
      case 'q':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+22, "_512_mask", 9))
          break;
        return Intrinsic::x86_avx512_mask_blend_q_512;	 // "__builtin_ia32_blendmq_512_mask"
      }
      break;
    case 'c':	 // 5 strings to match.
      if (memcmp(BuiltinName.data()+16, "vt", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'd':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+19, "q2p", 3))
          break;
        switch (BuiltinName[22]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_mask_cvtdq2pd_512;	 // "__builtin_ia32_cvtdq2pd512_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_mask_cvtdq2ps_512;	 // "__builtin_ia32_cvtdq2ps512_mask"
        }
        break;
      case 'p':	 // 3 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 (memcmp(BuiltinName.data()+22, "q512_mask", 9))
              break;
            return Intrinsic::x86_avx512_mask_cvtpd2dq_512;	 // "__builtin_ia32_cvtpd2dq512_mask"
          case 'p':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+22, "s512_mask", 9))
              break;
            return Intrinsic::x86_avx512_mask_cvtpd2ps_512;	 // "__builtin_ia32_cvtpd2ps512_mask"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "2dq512_mask", 11))
            break;
          return Intrinsic::x86_avx512_mask_cvtps2dq_512;	 // "__builtin_ia32_cvtps2dq512_mask"
        }
        break;
      }
      break;
    case 's':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "toreup", 6))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "512_mask", 8))
          break;
        return Intrinsic::x86_avx512_mask_storeu_pd_512;	 // "__builtin_ia32_storeupd512_mask"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "512_mask", 8))
          break;
        return Intrinsic::x86_avx512_mask_storeu_ps_512;	 // "__builtin_ia32_storeups512_mask"
      }
      break;
    case 'v':	 // 3 strings to match.
      if (memcmp(BuiltinName.data()+16, "perm2f128_", 10))
        break;
      switch (BuiltinName[26]) {
      default: break;
      case 'p':	 // 2 strings to match.
        switch (BuiltinName[27]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+28, "256", 3))
            break;
          return Intrinsic::x86_avx_vperm2f128_pd_256;	 // "__builtin_ia32_vperm2f128_pd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+28, "256", 3))
            break;
          return Intrinsic::x86_avx_vperm2f128_ps_256;	 // "__builtin_ia32_vperm2f128_ps256"
        }
        break;
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+27, "i256", 4))
          break;
        return Intrinsic::x86_avx_vperm2f128_si_256;	 // "__builtin_ia32_vperm2f128_si256"
      }
      break;
    }
    break;
  case 32:	 // 19 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'b':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "lendmp", 6))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "_512_mask", 9))
          break;
        return Intrinsic::x86_avx512_mask_blend_pd_512;	 // "__builtin_ia32_blendmpd_512_mask"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "_512_mask", 9))
          break;
        return Intrinsic::x86_avx512_mask_blend_ps_512;	 // "__builtin_ia32_blendmps_512_mask"
      }
      break;
    case 'c':	 // 6 strings to match.
      if (memcmp(BuiltinName.data()+16, "vt", 2))
        break;
      switch (BuiltinName[18]) {
      default: break;
      case 'p':	 // 2 strings to match.
        switch (BuiltinName[19]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "2udq512_mask", 12))
            break;
          return Intrinsic::x86_avx512_mask_cvtpd2udq_512;	 // "__builtin_ia32_cvtpd2udq512_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+20, "2udq512_mask", 12))
            break;
          return Intrinsic::x86_avx512_mask_cvtps2udq_512;	 // "__builtin_ia32_cvtps2udq512_mask"
        }
        break;
      case 't':	 // 2 strings to match.
        if (BuiltinName[19] != 'p')
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2dq512_mask", 11))
            break;
          return Intrinsic::x86_avx512_mask_cvttpd2dq_512;	 // "__builtin_ia32_cvttpd2dq512_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2dq512_mask", 11))
            break;
          return Intrinsic::x86_avx512_mask_cvttps2dq_512;	 // "__builtin_ia32_cvttps2dq512_mask"
        }
        break;
      case 'u':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+19, "dq2p", 4))
          break;
        switch (BuiltinName[23]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_mask_cvtudq2pd_512;	 // "__builtin_ia32_cvtudq2pd512_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+24, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_mask_cvtudq2ps_512;	 // "__builtin_ia32_cvtudq2ps512_mask"
        }
        break;
      }
      break;
    case 'l':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "oaddqu", 6))
        break;
      switch (BuiltinName[22]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "i512_mask", 9))
          break;
        return Intrinsic::x86_avx512_mask_loadu_q_512;	 // "__builtin_ia32_loaddqudi512_mask"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+23, "i512_mask", 9))
          break;
        return Intrinsic::x86_avx512_mask_loadu_d_512;	 // "__builtin_ia32_loaddqusi512_mask"
      }
      break;
    case 'r':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "sqrt14p", 7))
        break;
      switch (BuiltinName[23]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+24, "512_mask", 8))
          break;
        return Intrinsic::x86_avx512_rsqrt14_pd_512;	 // "__builtin_ia32_rsqrt14pd512_mask"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+24, "512_mask", 8))
          break;
        return Intrinsic::x86_avx512_rsqrt14_ps_512;	 // "__builtin_ia32_rsqrt14ps512_mask"
      }
      break;
    case 'v':	 // 7 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'c':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "vtp", 3))
          break;
        switch (BuiltinName[20]) {
        default: break;
        case 'h':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2ps512_mask", 11))
            break;
          return Intrinsic::x86_avx512_mask_vcvtph2ps_512;	 // "__builtin_ia32_vcvtph2ps512_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+21, "2ph512_mask", 11))
            break;
          return Intrinsic::x86_avx512_mask_vcvtps2ph_512;	 // "__builtin_ia32_vcvtps2ph512_mask"
        }
        break;
      case 'i':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+17, "nsertf128_", 10))
          break;
        switch (BuiltinName[27]) {
        default: break;
        case 'p':	 // 2 strings to match.
          switch (BuiltinName[28]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+29, "256", 3))
              break;
            return Intrinsic::x86_avx_vinsertf128_pd_256;	 // "__builtin_ia32_vinsertf128_pd256"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+29, "256", 3))
              break;
            return Intrinsic::x86_avx_vinsertf128_ps_256;	 // "__builtin_ia32_vinsertf128_ps256"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+28, "i256", 4))
            break;
          return Intrinsic::x86_avx_vinsertf128_si_256;	 // "__builtin_ia32_vinsertf128_si256"
        }
        break;
      case 'p':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "lzcnt", 5))
          break;
        switch (BuiltinName[22]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "_512_mask", 9))
            break;
          return Intrinsic::x86_avx512_mask_lzcnt_d_512;	 // "__builtin_ia32_vplzcntd_512_mask"
        case 'q':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "_512_mask", 9))
            break;
          return Intrinsic::x86_avx512_mask_lzcnt_q_512;	 // "__builtin_ia32_vplzcntq_512_mask"
        }
        break;
      }
      break;
    }
    break;
  case 33:	 // 12 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'a':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+16, "eskeygenassist128", 17))
        break;
      return Intrinsic::x86_aesni_aeskeygenassist;	 // "__builtin_ia32_aeskeygenassist128"
    case 'c':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "vttp", 4))
        break;
      switch (BuiltinName[20]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "2udq512_mask", 12))
          break;
        return Intrinsic::x86_avx512_mask_cvttpd2udq_512;	 // "__builtin_ia32_cvttpd2udq512_mask"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+21, "2udq512_mask", 12))
          break;
        return Intrinsic::x86_avx512_mask_cvttps2udq_512;	 // "__builtin_ia32_cvttps2udq512_mask"
      }
      break;
    case 's':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+16, "toredqu", 7))
        break;
      switch (BuiltinName[23]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+24, "i512_mask", 9))
          break;
        return Intrinsic::x86_avx512_mask_storeu_q_512;	 // "__builtin_ia32_storedqudi512_mask"
      case 's':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+24, "i512_mask", 9))
          break;
        return Intrinsic::x86_avx512_mask_storeu_d_512;	 // "__builtin_ia32_storedqusi512_mask"
      }
      break;
    case 'v':	 // 7 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'b':	 // 4 strings to match.
        if (memcmp(BuiltinName.data()+17, "roadcasts", 9))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'd':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+27, "_pd", 3))
            break;
          switch (BuiltinName[30]) {
          default: break;
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+31, "56", 2))
              break;
            return Intrinsic::x86_avx2_vbroadcast_sd_pd_256;	 // "__builtin_ia32_vbroadcastsd_pd256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+31, "12", 2))
              break;
            return Intrinsic::x86_avx512_vbroadcast_sd_pd_512;	 // "__builtin_ia32_vbroadcastsd_pd512"
          }
          break;
        case 's':	 // 2 strings to match.
          if (memcmp(BuiltinName.data()+27, "_ps", 3))
            break;
          switch (BuiltinName[30]) {
          default: break;
          case '2':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+31, "56", 2))
              break;
            return Intrinsic::x86_avx2_vbroadcast_ss_ps_256;	 // "__builtin_ia32_vbroadcastss_ps256"
          case '5':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+31, "12", 2))
              break;
            return Intrinsic::x86_avx512_vbroadcast_ss_ps_512;	 // "__builtin_ia32_vbroadcastss_ps512"
          }
          break;
        }
        break;
      case 'e':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+17, "xtractf128_", 11))
          break;
        switch (BuiltinName[28]) {
        default: break;
        case 'p':	 // 2 strings to match.
          switch (BuiltinName[29]) {
          default: break;
          case 'd':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+30, "256", 3))
              break;
            return Intrinsic::x86_avx_vextractf128_pd_256;	 // "__builtin_ia32_vextractf128_pd256"
          case 's':	 // 1 string to match.
            if (memcmp(BuiltinName.data()+30, "256", 3))
              break;
            return Intrinsic::x86_avx_vextractf128_ps_256;	 // "__builtin_ia32_vextractf128_ps256"
          }
          break;
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+29, "i256", 4))
            break;
          return Intrinsic::x86_avx_vextractf128_si_256;	 // "__builtin_ia32_vextractf128_si256"
        }
        break;
      }
      break;
    }
    break;
  case 34:	 // 2 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_vpermt2var", 25))
      break;
    switch (BuiltinName[25]) {
    default: break;
    case 'd':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+26, "512_mask", 8))
        break;
      return Intrinsic::x86_avx512_mask_vpermt_d_512;	 // "__builtin_ia32_vpermt2vard512_mask"
    case 'q':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+26, "512_mask", 8))
        break;
      return Intrinsic::x86_avx512_mask_vpermt_q_512;	 // "__builtin_ia32_vpermt2varq512_mask"
    }
    break;
  case 35:	 // 10 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
      break;
    switch (BuiltinName[15]) {
    default: break;
    case 'p':	 // 6 strings to match.
      if (BuiltinName[16] != 's')
        break;
      switch (BuiltinName[17]) {
      default: break;
      case 'l':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+18, "ldqi", 4))
          break;
        switch (BuiltinName[22]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "28_byteshift", 12))
            break;
          return Intrinsic::x86_sse2_psll_dq_bs;	 // "__builtin_ia32_pslldqi128_byteshift"
        case '2':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "56_byteshift", 12))
            break;
          return Intrinsic::x86_avx2_psll_dq_bs;	 // "__builtin_ia32_pslldqi256_byteshift"
        case '5':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "12_byteshift", 12))
            break;
          return Intrinsic::x86_avx512_psll_dq_bs;	 // "__builtin_ia32_pslldqi512_byteshift"
        }
        break;
      case 'r':	 // 3 strings to match.
        if (memcmp(BuiltinName.data()+18, "ldqi", 4))
          break;
        switch (BuiltinName[22]) {
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "28_byteshift", 12))
            break;
          return Intrinsic::x86_sse2_psrl_dq_bs;	 // "__builtin_ia32_psrldqi128_byteshift"
        case '2':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "56_byteshift", 12))
            break;
          return Intrinsic::x86_avx2_psrl_dq_bs;	 // "__builtin_ia32_psrldqi256_byteshift"
        case '5':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+23, "12_byteshift", 12))
            break;
          return Intrinsic::x86_avx512_psrl_dq_bs;	 // "__builtin_ia32_psrldqi512_byteshift"
        }
        break;
      }
      break;
    case 'v':	 // 4 strings to match.
      switch (BuiltinName[16]) {
      default: break;
      case 'b':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "roadcastf128_p", 14))
          break;
        switch (BuiltinName[31]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+32, "256", 3))
            break;
          return Intrinsic::x86_avx_vbroadcastf128_pd_256;	 // "__builtin_ia32_vbroadcastf128_pd256"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+32, "256", 3))
            break;
          return Intrinsic::x86_avx_vbroadcastf128_ps_256;	 // "__builtin_ia32_vbroadcastf128_ps256"
        }
        break;
      case 'p':	 // 2 strings to match.
        if (memcmp(BuiltinName.data()+17, "ermt2varp", 9))
          break;
        switch (BuiltinName[26]) {
        default: break;
        case 'd':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_mask_vpermt_pd_512;	 // "__builtin_ia32_vpermt2varpd512_mask"
        case 's':	 // 1 string to match.
          if (memcmp(BuiltinName.data()+27, "512_mask", 8))
            break;
          return Intrinsic::x86_avx512_mask_vpermt_ps_512;	 // "__builtin_ia32_vpermt2varps512_mask"
        }
        break;
      }
      break;
    }
    break;
  case 36:	 // 2 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_vpconflict", 25))
      break;
    switch (BuiltinName[25]) {
    default: break;
    case 'd':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+26, "i_512_mask", 10))
        break;
      return Intrinsic::x86_avx512_mask_conflict_q_512;	 // "__builtin_ia32_vpconflictdi_512_mask"
    case 's':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+26, "i_512_mask", 10))
        break;
      return Intrinsic::x86_avx512_mask_conflict_d_512;	 // "__builtin_ia32_vpconflictsi_512_mask"
    }
    break;
  case 38:	 // 3 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_ia32_pbroadcast", 25))
      break;
    switch (BuiltinName[25]) {
    default: break;
    case 'd':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+26, "512_gpr_mask", 12))
        break;
      return Intrinsic::x86_avx512_mask_pbroadcast_d_gpr_512;	 // "__builtin_ia32_pbroadcastd512_gpr_mask"
    case 'q':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+26, "512_", 4))
        break;
      switch (BuiltinName[30]) {
      default: break;
      case 'g':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+31, "pr_mask", 7))
          break;
        return Intrinsic::x86_avx512_mask_pbroadcast_q_gpr_512;	 // "__builtin_ia32_pbroadcastq512_gpr_mask"
      case 'm':	 // 1 string to match.
        if (memcmp(BuiltinName.data()+31, "em_mask", 7))
          break;
        return Intrinsic::x86_avx512_mask_pbroadcast_q_mem_512;	 // "__builtin_ia32_pbroadcastq512_mem_mask"
      }
      break;
    }
    break;
  }
  }
  if (TargetPrefix == "xcore") {
  switch (BuiltinName.size()) {
  default: break;
  case 15:	 // 3 strings to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_", 10))
      break;
    switch (BuiltinName[10]) {
    default: break;
    case 'g':	 // 2 strings to match.
      if (memcmp(BuiltinName.data()+11, "et", 2))
        break;
      switch (BuiltinName[13]) {
      default: break;
      case 'i':	 // 1 string to match.
        if (BuiltinName[14] != 'd')
          break;
        return Intrinsic::xcore_getid;	 // "__builtin_getid"
      case 'p':	 // 1 string to match.
        if (BuiltinName[14] != 's')
          break;
        return Intrinsic::xcore_getps;	 // "__builtin_getps"
      }
      break;
    case 's':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+11, "etps", 4))
        break;
      return Intrinsic::xcore_setps;	 // "__builtin_setps"
    }
    break;
  case 16:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "__builtin_bitrev", 16))
      break;
    return Intrinsic::xcore_bitrev;	 // "__builtin_bitrev"
  }
  }
  return Intrinsic::not_intrinsic;
}
#endif

// Get the LLVM intrinsic that corresponds to a MS builtin.
// This is used by the C front-end.  The MS builtin name is passed
// in as a BuiltinName, and a target prefix (e.g. 'arm') is passed
// in as a TargetPrefix.  The result is assigned to 'IntrinsicID'.
#ifdef GET_LLVM_INTRINSIC_FOR_MS_BUILTIN
Intrinsic::ID Intrinsic::getIntrinsicForMSBuiltin(const char *TP, const char *BN) {
  StringRef BuiltinName(BN);
  StringRef TargetPrefix(TP);

  if (TargetPrefix == "arm") {
  switch (BuiltinName.size()) {
  default: break;
  case 5:	 // 3 strings to match.
    if (memcmp(BuiltinName.data()+0, "__", 2))
      break;
    switch (BuiltinName[2]) {
    default: break;
    case 'd':	 // 2 strings to match.
      switch (BuiltinName[3]) {
      default: break;
      case 'm':	 // 1 string to match.
        if (BuiltinName[4] != 'b')
          break;
        return Intrinsic::arm_dmb;	 // "__dmb"
      case 's':	 // 1 string to match.
        if (BuiltinName[4] != 'b')
          break;
        return Intrinsic::arm_dsb;	 // "__dsb"
      }
      break;
    case 'i':	 // 1 string to match.
      if (memcmp(BuiltinName.data()+3, "sb", 2))
        break;
      return Intrinsic::arm_isb;	 // "__isb"
    }
    break;
  case 18:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "_MoveToCoprocessor", 18))
      break;
    return Intrinsic::arm_mcr;	 // "_MoveToCoprocessor"
  case 19:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "_MoveToCoprocessor2", 19))
      break;
    return Intrinsic::arm_mcr2;	 // "_MoveToCoprocessor2"
  case 20:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "_MoveFromCoprocessor", 20))
      break;
    return Intrinsic::arm_mrc;	 // "_MoveFromCoprocessor"
  case 21:	 // 1 string to match.
    if (memcmp(BuiltinName.data()+0, "_MoveFromCoprocessor2", 21))
      break;
    return Intrinsic::arm_mrc2;	 // "_MoveFromCoprocessor2"
  }
}  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

