blob: 74654cc259f79567de645556e856bd95e371b359 [file] [log] [blame]
//===- TableGen'erated file -------------------------------------*- C++ -*-===//
//
// Intrinsic Function Source Fragment
//
// Automatically generated file, do not edit!
//
//===----------------------------------------------------------------------===//
// VisualStudio defines setjmp as _setjmp
#if defined(_MSC_VER) && defined(setjmp) && \
!defined(setjmp_undefined_for_msvc)
# pragma push_macro("setjmp")
# undef setjmp
# define setjmp_undefined_for_msvc
#endif
// Enum values for Intrinsics.h
#ifdef GET_INTRINSIC_ENUM_VALUES
adjust_trampoline, // llvm.adjust.trampoline
annotation, // llvm.annotation
bswap, // llvm.bswap
convert_from_fp16, // llvm.convert.from.fp16
convert_to_fp16, // llvm.convert.to.fp16
convertff, // llvm.convertff
convertfsi, // llvm.convertfsi
convertfui, // llvm.convertfui
convertsif, // llvm.convertsif
convertss, // llvm.convertss
convertsu, // llvm.convertsu
convertuif, // llvm.convertuif
convertus, // llvm.convertus
convertuu, // llvm.convertuu
cos, // llvm.cos
ctlz, // llvm.ctlz
ctpop, // llvm.ctpop
cttz, // llvm.cttz
dbg_declare, // llvm.dbg.declare
dbg_value, // llvm.dbg.value
eh_dwarf_cfa, // llvm.eh.dwarf.cfa
eh_exception, // llvm.eh.exception
eh_resume, // llvm.eh.resume
eh_return_i32, // llvm.eh.return.i32
eh_return_i64, // llvm.eh.return.i64
eh_selector, // llvm.eh.selector
eh_sjlj_callsite, // llvm.eh.sjlj.callsite
eh_sjlj_dispatch_setup, // llvm.eh.sjlj.dispatch.setup
eh_sjlj_functioncontext, // llvm.eh.sjlj.functioncontext
eh_sjlj_longjmp, // llvm.eh.sjlj.longjmp
eh_sjlj_lsda, // llvm.eh.sjlj.lsda
eh_sjlj_setjmp, // llvm.eh.sjlj.setjmp
eh_typeid_for, // llvm.eh.typeid.for
eh_unwind_init, // llvm.eh.unwind.init
exp, // llvm.exp
exp2, // llvm.exp2
expect, // llvm.expect
flt_rounds, // llvm.flt.rounds
fma, // llvm.fma
frameaddress, // llvm.frameaddress
gcread, // llvm.gcread
gcroot, // llvm.gcroot
gcwrite, // llvm.gcwrite
init_trampoline, // llvm.init.trampoline
invariant_end, // llvm.invariant.end
invariant_start, // llvm.invariant.start
lifetime_end, // llvm.lifetime.end
lifetime_start, // llvm.lifetime.start
log, // llvm.log
log10, // llvm.log10
log2, // llvm.log2
longjmp, // llvm.longjmp
memcpy, // llvm.memcpy
memmove, // llvm.memmove
memset, // llvm.memset
objectsize, // llvm.objectsize
pcmarker, // llvm.pcmarker
pow, // llvm.pow
powi, // llvm.powi
prefetch, // llvm.prefetch
ptr_annotation, // llvm.ptr.annotation
readcyclecounter, // llvm.readcyclecounter
returnaddress, // llvm.returnaddress
sadd_with_overflow, // llvm.sadd.with.overflow
setjmp, // llvm.setjmp
siglongjmp, // llvm.siglongjmp
sigsetjmp, // llvm.sigsetjmp
sin, // llvm.sin
smul_with_overflow, // llvm.smul.with.overflow
sqrt, // llvm.sqrt
ssub_with_overflow, // llvm.ssub.with.overflow
stackprotector, // llvm.stackprotector
stackrestore, // llvm.stackrestore
stacksave, // llvm.stacksave
trap, // llvm.trap
uadd_with_overflow, // llvm.uadd.with.overflow
umul_with_overflow, // llvm.umul.with.overflow
usub_with_overflow, // llvm.usub.with.overflow
vacopy, // llvm.va_copy
vaend, // llvm.va_end
var_annotation, // llvm.var.annotation
vastart, // llvm.va_start
x86_3dnow_pavgusb, // llvm.x86.3dnow.pavgusb
x86_3dnow_pf2id, // llvm.x86.3dnow.pf2id
x86_3dnow_pfacc, // llvm.x86.3dnow.pfacc
x86_3dnow_pfadd, // llvm.x86.3dnow.pfadd
x86_3dnow_pfcmpeq, // llvm.x86.3dnow.pfcmpeq
x86_3dnow_pfcmpge, // llvm.x86.3dnow.pfcmpge
x86_3dnow_pfcmpgt, // llvm.x86.3dnow.pfcmpgt
x86_3dnow_pfmax, // llvm.x86.3dnow.pfmax
x86_3dnow_pfmin, // llvm.x86.3dnow.pfmin
x86_3dnow_pfmul, // llvm.x86.3dnow.pfmul
x86_3dnow_pfrcp, // llvm.x86.3dnow.pfrcp
x86_3dnow_pfrcpit1, // llvm.x86.3dnow.pfrcpit1
x86_3dnow_pfrcpit2, // llvm.x86.3dnow.pfrcpit2
x86_3dnow_pfrsqit1, // llvm.x86.3dnow.pfrsqit1
x86_3dnow_pfrsqrt, // llvm.x86.3dnow.pfrsqrt
x86_3dnow_pfsub, // llvm.x86.3dnow.pfsub
x86_3dnow_pfsubr, // llvm.x86.3dnow.pfsubr
x86_3dnow_pi2fd, // llvm.x86.3dnow.pi2fd
x86_3dnow_pmulhrw, // llvm.x86.3dnow.pmulhrw
x86_3dnowa_pf2iw, // llvm.x86.3dnowa.pf2iw
x86_3dnowa_pfnacc, // llvm.x86.3dnowa.pfnacc
x86_3dnowa_pfpnacc, // llvm.x86.3dnowa.pfpnacc
x86_3dnowa_pi2fw, // llvm.x86.3dnowa.pi2fw
x86_3dnowa_pswapd, // llvm.x86.3dnowa.pswapd
x86_aesni_aesdec, // llvm.x86.aesni.aesdec
x86_aesni_aesdeclast, // llvm.x86.aesni.aesdeclast
x86_aesni_aesenc, // llvm.x86.aesni.aesenc
x86_aesni_aesenclast, // llvm.x86.aesni.aesenclast
x86_aesni_aesimc, // llvm.x86.aesni.aesimc
x86_aesni_aeskeygenassist, // llvm.x86.aesni.aeskeygenassist
x86_avx_addsub_pd_256, // llvm.x86.avx.addsub.pd.256
x86_avx_addsub_ps_256, // llvm.x86.avx.addsub.ps.256
x86_avx_blend_pd_256, // llvm.x86.avx.blend.pd.256
x86_avx_blend_ps_256, // llvm.x86.avx.blend.ps.256
x86_avx_blendv_pd_256, // llvm.x86.avx.blendv.pd.256
x86_avx_blendv_ps_256, // llvm.x86.avx.blendv.ps.256
x86_avx_cmp_pd_256, // llvm.x86.avx.cmp.pd.256
x86_avx_cmp_ps_256, // llvm.x86.avx.cmp.ps.256
x86_avx_cvt_pd2_ps_256, // llvm.x86.avx.cvt.pd2.ps.256
x86_avx_cvt_pd2dq_256, // llvm.x86.avx.cvt.pd2dq.256
x86_avx_cvt_ps2_pd_256, // llvm.x86.avx.cvt.ps2.pd.256
x86_avx_cvt_ps2dq_256, // llvm.x86.avx.cvt.ps2dq.256
x86_avx_cvtdq2_pd_256, // llvm.x86.avx.cvtdq2.pd.256
x86_avx_cvtdq2_ps_256, // llvm.x86.avx.cvtdq2.ps.256
x86_avx_cvtt_pd2dq_256, // llvm.x86.avx.cvtt.pd2dq.256
x86_avx_cvtt_ps2dq_256, // llvm.x86.avx.cvtt.ps2dq.256
x86_avx_dp_ps_256, // llvm.x86.avx.dp.ps.256
x86_avx_hadd_pd_256, // llvm.x86.avx.hadd.pd.256
x86_avx_hadd_ps_256, // llvm.x86.avx.hadd.ps.256
x86_avx_hsub_pd_256, // llvm.x86.avx.hsub.pd.256
x86_avx_hsub_ps_256, // llvm.x86.avx.hsub.ps.256
x86_avx_ldu_dq_256, // llvm.x86.avx.ldu.dq.256
x86_avx_loadu_dq_256, // llvm.x86.avx.loadu.dq.256
x86_avx_loadu_pd_256, // llvm.x86.avx.loadu.pd.256
x86_avx_loadu_ps_256, // llvm.x86.avx.loadu.ps.256
x86_avx_maskload_pd, // llvm.x86.avx.maskload.pd
x86_avx_maskload_pd_256, // llvm.x86.avx.maskload.pd.256
x86_avx_maskload_ps, // llvm.x86.avx.maskload.ps
x86_avx_maskload_ps_256, // llvm.x86.avx.maskload.ps.256
x86_avx_maskstore_pd, // llvm.x86.avx.maskstore.pd
x86_avx_maskstore_pd_256, // llvm.x86.avx.maskstore.pd.256
x86_avx_maskstore_ps, // llvm.x86.avx.maskstore.ps
x86_avx_maskstore_ps_256, // llvm.x86.avx.maskstore.ps.256
x86_avx_max_pd_256, // llvm.x86.avx.max.pd.256
x86_avx_max_ps_256, // llvm.x86.avx.max.ps.256
x86_avx_min_pd_256, // llvm.x86.avx.min.pd.256
x86_avx_min_ps_256, // llvm.x86.avx.min.ps.256
x86_avx_movmsk_pd_256, // llvm.x86.avx.movmsk.pd.256
x86_avx_movmsk_ps_256, // llvm.x86.avx.movmsk.ps.256
x86_avx_movnt_dq_256, // llvm.x86.avx.movnt.dq.256
x86_avx_movnt_pd_256, // llvm.x86.avx.movnt.pd.256
x86_avx_movnt_ps_256, // llvm.x86.avx.movnt.ps.256
x86_avx_ptestc_256, // llvm.x86.avx.ptestc.256
x86_avx_ptestnzc_256, // llvm.x86.avx.ptestnzc.256
x86_avx_ptestz_256, // llvm.x86.avx.ptestz.256
x86_avx_rcp_ps_256, // llvm.x86.avx.rcp.ps.256
x86_avx_round_pd_256, // llvm.x86.avx.round.pd.256
x86_avx_round_ps_256, // llvm.x86.avx.round.ps.256
x86_avx_rsqrt_ps_256, // llvm.x86.avx.rsqrt.ps.256
x86_avx_sqrt_pd_256, // llvm.x86.avx.sqrt.pd.256
x86_avx_sqrt_ps_256, // llvm.x86.avx.sqrt.ps.256
x86_avx_storeu_dq_256, // llvm.x86.avx.storeu.dq.256
x86_avx_storeu_pd_256, // llvm.x86.avx.storeu.pd.256
x86_avx_storeu_ps_256, // llvm.x86.avx.storeu.ps.256
x86_avx_vbroadcast_sd_256, // llvm.x86.avx.vbroadcast.sd.256
x86_avx_vbroadcastf128_pd_256, // llvm.x86.avx.vbroadcastf128.pd.256
x86_avx_vbroadcastf128_ps_256, // llvm.x86.avx.vbroadcastf128.ps.256
x86_avx_vbroadcastss, // llvm.x86.avx.vbroadcastss
x86_avx_vbroadcastss_256, // llvm.x86.avx.vbroadcastss.256
x86_avx_vextractf128_pd_256, // llvm.x86.avx.vextractf128.pd.256
x86_avx_vextractf128_ps_256, // llvm.x86.avx.vextractf128.ps.256
x86_avx_vextractf128_si_256, // llvm.x86.avx.vextractf128.si.256
x86_avx_vinsertf128_pd_256, // llvm.x86.avx.vinsertf128.pd.256
x86_avx_vinsertf128_ps_256, // llvm.x86.avx.vinsertf128.ps.256
x86_avx_vinsertf128_si_256, // llvm.x86.avx.vinsertf128.si.256
x86_avx_vperm2f128_pd_256, // llvm.x86.avx.vperm2f128.pd.256
x86_avx_vperm2f128_ps_256, // llvm.x86.avx.vperm2f128.ps.256
x86_avx_vperm2f128_si_256, // llvm.x86.avx.vperm2f128.si.256
x86_avx_vpermil_pd, // llvm.x86.avx.vpermil.pd
x86_avx_vpermil_pd_256, // llvm.x86.avx.vpermil.pd.256
x86_avx_vpermil_ps, // llvm.x86.avx.vpermil.ps
x86_avx_vpermil_ps_256, // llvm.x86.avx.vpermil.ps.256
x86_avx_vpermilvar_pd, // llvm.x86.avx.vpermilvar.pd
x86_avx_vpermilvar_pd_256, // llvm.x86.avx.vpermilvar.pd.256
x86_avx_vpermilvar_ps, // llvm.x86.avx.vpermilvar.ps
x86_avx_vpermilvar_ps_256, // llvm.x86.avx.vpermilvar.ps.256
x86_avx_vtestc_pd, // llvm.x86.avx.vtestc.pd
x86_avx_vtestc_pd_256, // llvm.x86.avx.vtestc.pd.256
x86_avx_vtestc_ps, // llvm.x86.avx.vtestc.ps
x86_avx_vtestc_ps_256, // llvm.x86.avx.vtestc.ps.256
x86_avx_vtestnzc_pd, // llvm.x86.avx.vtestnzc.pd
x86_avx_vtestnzc_pd_256, // llvm.x86.avx.vtestnzc.pd.256
x86_avx_vtestnzc_ps, // llvm.x86.avx.vtestnzc.ps
x86_avx_vtestnzc_ps_256, // llvm.x86.avx.vtestnzc.ps.256
x86_avx_vtestz_pd, // llvm.x86.avx.vtestz.pd
x86_avx_vtestz_pd_256, // llvm.x86.avx.vtestz.pd.256
x86_avx_vtestz_ps, // llvm.x86.avx.vtestz.ps
x86_avx_vtestz_ps_256, // llvm.x86.avx.vtestz.ps.256
x86_avx_vzeroall, // llvm.x86.avx.vzeroall
x86_avx_vzeroupper, // llvm.x86.avx.vzeroupper
x86_int, // llvm.x86.int
x86_mmx_emms, // llvm.x86.mmx.emms
x86_mmx_femms, // llvm.x86.mmx.femms
x86_mmx_maskmovq, // llvm.x86.mmx.maskmovq
x86_mmx_movnt_dq, // llvm.x86.mmx.movnt.dq
x86_mmx_packssdw, // llvm.x86.mmx.packssdw
x86_mmx_packsswb, // llvm.x86.mmx.packsswb
x86_mmx_packuswb, // llvm.x86.mmx.packuswb
x86_mmx_padd_b, // llvm.x86.mmx.padd.b
x86_mmx_padd_d, // llvm.x86.mmx.padd.d
x86_mmx_padd_q, // llvm.x86.mmx.padd.q
x86_mmx_padd_w, // llvm.x86.mmx.padd.w
x86_mmx_padds_b, // llvm.x86.mmx.padds.b
x86_mmx_padds_w, // llvm.x86.mmx.padds.w
x86_mmx_paddus_b, // llvm.x86.mmx.paddus.b
x86_mmx_paddus_w, // llvm.x86.mmx.paddus.w
x86_mmx_palignr_b, // llvm.x86.mmx.palignr.b
x86_mmx_pand, // llvm.x86.mmx.pand
x86_mmx_pandn, // llvm.x86.mmx.pandn
x86_mmx_pavg_b, // llvm.x86.mmx.pavg.b
x86_mmx_pavg_w, // llvm.x86.mmx.pavg.w
x86_mmx_pcmpeq_b, // llvm.x86.mmx.pcmpeq.b
x86_mmx_pcmpeq_d, // llvm.x86.mmx.pcmpeq.d
x86_mmx_pcmpeq_w, // llvm.x86.mmx.pcmpeq.w
x86_mmx_pcmpgt_b, // llvm.x86.mmx.pcmpgt.b
x86_mmx_pcmpgt_d, // llvm.x86.mmx.pcmpgt.d
x86_mmx_pcmpgt_w, // llvm.x86.mmx.pcmpgt.w
x86_mmx_pextr_w, // llvm.x86.mmx.pextr.w
x86_mmx_pinsr_w, // llvm.x86.mmx.pinsr.w
x86_mmx_pmadd_wd, // llvm.x86.mmx.pmadd.wd
x86_mmx_pmaxs_w, // llvm.x86.mmx.pmaxs.w
x86_mmx_pmaxu_b, // llvm.x86.mmx.pmaxu.b
x86_mmx_pmins_w, // llvm.x86.mmx.pmins.w
x86_mmx_pminu_b, // llvm.x86.mmx.pminu.b
x86_mmx_pmovmskb, // llvm.x86.mmx.pmovmskb
x86_mmx_pmulh_w, // llvm.x86.mmx.pmulh.w
x86_mmx_pmulhu_w, // llvm.x86.mmx.pmulhu.w
x86_mmx_pmull_w, // llvm.x86.mmx.pmull.w
x86_mmx_pmulu_dq, // llvm.x86.mmx.pmulu.dq
x86_mmx_por, // llvm.x86.mmx.por
x86_mmx_psad_bw, // llvm.x86.mmx.psad.bw
x86_mmx_psll_d, // llvm.x86.mmx.psll.d
x86_mmx_psll_q, // llvm.x86.mmx.psll.q
x86_mmx_psll_w, // llvm.x86.mmx.psll.w
x86_mmx_pslli_d, // llvm.x86.mmx.pslli.d
x86_mmx_pslli_q, // llvm.x86.mmx.pslli.q
x86_mmx_pslli_w, // llvm.x86.mmx.pslli.w
x86_mmx_psra_d, // llvm.x86.mmx.psra.d
x86_mmx_psra_w, // llvm.x86.mmx.psra.w
x86_mmx_psrai_d, // llvm.x86.mmx.psrai.d
x86_mmx_psrai_w, // llvm.x86.mmx.psrai.w
x86_mmx_psrl_d, // llvm.x86.mmx.psrl.d
x86_mmx_psrl_q, // llvm.x86.mmx.psrl.q
x86_mmx_psrl_w, // llvm.x86.mmx.psrl.w
x86_mmx_psrli_d, // llvm.x86.mmx.psrli.d
x86_mmx_psrli_q, // llvm.x86.mmx.psrli.q
x86_mmx_psrli_w, // llvm.x86.mmx.psrli.w
x86_mmx_psub_b, // llvm.x86.mmx.psub.b
x86_mmx_psub_d, // llvm.x86.mmx.psub.d
x86_mmx_psub_q, // llvm.x86.mmx.psub.q
x86_mmx_psub_w, // llvm.x86.mmx.psub.w
x86_mmx_psubs_b, // llvm.x86.mmx.psubs.b
x86_mmx_psubs_w, // llvm.x86.mmx.psubs.w
x86_mmx_psubus_b, // llvm.x86.mmx.psubus.b
x86_mmx_psubus_w, // llvm.x86.mmx.psubus.w
x86_mmx_punpckhbw, // llvm.x86.mmx.punpckhbw
x86_mmx_punpckhdq, // llvm.x86.mmx.punpckhdq
x86_mmx_punpckhwd, // llvm.x86.mmx.punpckhwd
x86_mmx_punpcklbw, // llvm.x86.mmx.punpcklbw
x86_mmx_punpckldq, // llvm.x86.mmx.punpckldq
x86_mmx_punpcklwd, // llvm.x86.mmx.punpcklwd
x86_mmx_pxor, // llvm.x86.mmx.pxor
x86_sse2_add_sd, // llvm.x86.sse2.add.sd
x86_sse2_clflush, // llvm.x86.sse2.clflush
x86_sse2_cmp_pd, // llvm.x86.sse2.cmp.pd
x86_sse2_cmp_sd, // llvm.x86.sse2.cmp.sd
x86_sse2_comieq_sd, // llvm.x86.sse2.comieq.sd
x86_sse2_comige_sd, // llvm.x86.sse2.comige.sd
x86_sse2_comigt_sd, // llvm.x86.sse2.comigt.sd
x86_sse2_comile_sd, // llvm.x86.sse2.comile.sd
x86_sse2_comilt_sd, // llvm.x86.sse2.comilt.sd
x86_sse2_comineq_sd, // llvm.x86.sse2.comineq.sd
x86_sse2_cvtdq2pd, // llvm.x86.sse2.cvtdq2pd
x86_sse2_cvtdq2ps, // llvm.x86.sse2.cvtdq2ps
x86_sse2_cvtpd2dq, // llvm.x86.sse2.cvtpd2dq
x86_sse2_cvtpd2ps, // llvm.x86.sse2.cvtpd2ps
x86_sse2_cvtps2dq, // llvm.x86.sse2.cvtps2dq
x86_sse2_cvtps2pd, // llvm.x86.sse2.cvtps2pd
x86_sse2_cvtsd2si, // llvm.x86.sse2.cvtsd2si
x86_sse2_cvtsd2si64, // llvm.x86.sse2.cvtsd2si64
x86_sse2_cvtsd2ss, // llvm.x86.sse2.cvtsd2ss
x86_sse2_cvtsi2sd, // llvm.x86.sse2.cvtsi2sd
x86_sse2_cvtsi642sd, // llvm.x86.sse2.cvtsi642sd
x86_sse2_cvtss2sd, // llvm.x86.sse2.cvtss2sd
x86_sse2_cvttpd2dq, // llvm.x86.sse2.cvttpd2dq
x86_sse2_cvttps2dq, // llvm.x86.sse2.cvttps2dq
x86_sse2_cvttsd2si, // llvm.x86.sse2.cvttsd2si
x86_sse2_cvttsd2si64, // llvm.x86.sse2.cvttsd2si64
x86_sse2_div_sd, // llvm.x86.sse2.div.sd
x86_sse2_lfence, // llvm.x86.sse2.lfence
x86_sse2_maskmov_dqu, // llvm.x86.sse2.maskmov.dqu
x86_sse2_max_pd, // llvm.x86.sse2.max.pd
x86_sse2_max_sd, // llvm.x86.sse2.max.sd
x86_sse2_mfence, // llvm.x86.sse2.mfence
x86_sse2_min_pd, // llvm.x86.sse2.min.pd
x86_sse2_min_sd, // llvm.x86.sse2.min.sd
x86_sse2_movmsk_pd, // llvm.x86.sse2.movmsk.pd
x86_sse2_mul_sd, // llvm.x86.sse2.mul.sd
x86_sse2_packssdw_128, // llvm.x86.sse2.packssdw.128
x86_sse2_packsswb_128, // llvm.x86.sse2.packsswb.128
x86_sse2_packuswb_128, // llvm.x86.sse2.packuswb.128
x86_sse2_padds_b, // llvm.x86.sse2.padds.b
x86_sse2_padds_w, // llvm.x86.sse2.padds.w
x86_sse2_paddus_b, // llvm.x86.sse2.paddus.b
x86_sse2_paddus_w, // llvm.x86.sse2.paddus.w
x86_sse2_pavg_b, // llvm.x86.sse2.pavg.b
x86_sse2_pavg_w, // llvm.x86.sse2.pavg.w
x86_sse2_pcmpeq_b, // llvm.x86.sse2.pcmpeq.b
x86_sse2_pcmpeq_d, // llvm.x86.sse2.pcmpeq.d
x86_sse2_pcmpeq_w, // llvm.x86.sse2.pcmpeq.w
x86_sse2_pcmpgt_b, // llvm.x86.sse2.pcmpgt.b
x86_sse2_pcmpgt_d, // llvm.x86.sse2.pcmpgt.d
x86_sse2_pcmpgt_w, // llvm.x86.sse2.pcmpgt.w
x86_sse2_pmadd_wd, // llvm.x86.sse2.pmadd.wd
x86_sse2_pmaxs_w, // llvm.x86.sse2.pmaxs.w
x86_sse2_pmaxu_b, // llvm.x86.sse2.pmaxu.b
x86_sse2_pmins_w, // llvm.x86.sse2.pmins.w
x86_sse2_pminu_b, // llvm.x86.sse2.pminu.b
x86_sse2_pmovmskb_128, // llvm.x86.sse2.pmovmskb.128
x86_sse2_pmulh_w, // llvm.x86.sse2.pmulh.w
x86_sse2_pmulhu_w, // llvm.x86.sse2.pmulhu.w
x86_sse2_pmulu_dq, // llvm.x86.sse2.pmulu.dq
x86_sse2_psad_bw, // llvm.x86.sse2.psad.bw
x86_sse2_psll_d, // llvm.x86.sse2.psll.d
x86_sse2_psll_dq, // llvm.x86.sse2.psll.dq
x86_sse2_psll_dq_bs, // llvm.x86.sse2.psll.dq.bs
x86_sse2_psll_q, // llvm.x86.sse2.psll.q
x86_sse2_psll_w, // llvm.x86.sse2.psll.w
x86_sse2_pslli_d, // llvm.x86.sse2.pslli.d
x86_sse2_pslli_q, // llvm.x86.sse2.pslli.q
x86_sse2_pslli_w, // llvm.x86.sse2.pslli.w
x86_sse2_psra_d, // llvm.x86.sse2.psra.d
x86_sse2_psra_w, // llvm.x86.sse2.psra.w
x86_sse2_psrai_d, // llvm.x86.sse2.psrai.d
x86_sse2_psrai_w, // llvm.x86.sse2.psrai.w
x86_sse2_psrl_d, // llvm.x86.sse2.psrl.d
x86_sse2_psrl_dq, // llvm.x86.sse2.psrl.dq
x86_sse2_psrl_dq_bs, // llvm.x86.sse2.psrl.dq.bs
x86_sse2_psrl_q, // llvm.x86.sse2.psrl.q
x86_sse2_psrl_w, // llvm.x86.sse2.psrl.w
x86_sse2_psrli_d, // llvm.x86.sse2.psrli.d
x86_sse2_psrli_q, // llvm.x86.sse2.psrli.q
x86_sse2_psrli_w, // llvm.x86.sse2.psrli.w
x86_sse2_psubs_b, // llvm.x86.sse2.psubs.b
x86_sse2_psubs_w, // llvm.x86.sse2.psubs.w
x86_sse2_psubus_b, // llvm.x86.sse2.psubus.b
x86_sse2_psubus_w, // llvm.x86.sse2.psubus.w
x86_sse2_sqrt_pd, // llvm.x86.sse2.sqrt.pd
x86_sse2_sqrt_sd, // llvm.x86.sse2.sqrt.sd
x86_sse2_storel_dq, // llvm.x86.sse2.storel.dq
x86_sse2_storeu_dq, // llvm.x86.sse2.storeu.dq
x86_sse2_storeu_pd, // llvm.x86.sse2.storeu.pd
x86_sse2_sub_sd, // llvm.x86.sse2.sub.sd
x86_sse2_ucomieq_sd, // llvm.x86.sse2.ucomieq.sd
x86_sse2_ucomige_sd, // llvm.x86.sse2.ucomige.sd
x86_sse2_ucomigt_sd, // llvm.x86.sse2.ucomigt.sd
x86_sse2_ucomile_sd, // llvm.x86.sse2.ucomile.sd
x86_sse2_ucomilt_sd, // llvm.x86.sse2.ucomilt.sd
x86_sse2_ucomineq_sd, // llvm.x86.sse2.ucomineq.sd
x86_sse3_addsub_pd, // llvm.x86.sse3.addsub.pd
x86_sse3_addsub_ps, // llvm.x86.sse3.addsub.ps
x86_sse3_hadd_pd, // llvm.x86.sse3.hadd.pd
x86_sse3_hadd_ps, // llvm.x86.sse3.hadd.ps
x86_sse3_hsub_pd, // llvm.x86.sse3.hsub.pd
x86_sse3_hsub_ps, // llvm.x86.sse3.hsub.ps
x86_sse3_ldu_dq, // llvm.x86.sse3.ldu.dq
x86_sse3_monitor, // llvm.x86.sse3.monitor
x86_sse3_mwait, // llvm.x86.sse3.mwait
x86_sse41_blendpd, // llvm.x86.sse41.blendpd
x86_sse41_blendps, // llvm.x86.sse41.blendps
x86_sse41_blendvpd, // llvm.x86.sse41.blendvpd
x86_sse41_blendvps, // llvm.x86.sse41.blendvps
x86_sse41_dppd, // llvm.x86.sse41.dppd
x86_sse41_dpps, // llvm.x86.sse41.dpps
x86_sse41_extractps, // llvm.x86.sse41.extractps
x86_sse41_insertps, // llvm.x86.sse41.insertps
x86_sse41_movntdqa, // llvm.x86.sse41.movntdqa
x86_sse41_mpsadbw, // llvm.x86.sse41.mpsadbw
x86_sse41_packusdw, // llvm.x86.sse41.packusdw
x86_sse41_pblendvb, // llvm.x86.sse41.pblendvb
x86_sse41_pblendw, // llvm.x86.sse41.pblendw
x86_sse41_pcmpeqq, // llvm.x86.sse41.pcmpeqq
x86_sse41_pextrb, // llvm.x86.sse41.pextrb
x86_sse41_pextrd, // llvm.x86.sse41.pextrd
x86_sse41_pextrq, // llvm.x86.sse41.pextrq
x86_sse41_phminposuw, // llvm.x86.sse41.phminposuw
x86_sse41_pmaxsb, // llvm.x86.sse41.pmaxsb
x86_sse41_pmaxsd, // llvm.x86.sse41.pmaxsd
x86_sse41_pmaxud, // llvm.x86.sse41.pmaxud
x86_sse41_pmaxuw, // llvm.x86.sse41.pmaxuw
x86_sse41_pminsb, // llvm.x86.sse41.pminsb
x86_sse41_pminsd, // llvm.x86.sse41.pminsd
x86_sse41_pminud, // llvm.x86.sse41.pminud
x86_sse41_pminuw, // llvm.x86.sse41.pminuw
x86_sse41_pmovsxbd, // llvm.x86.sse41.pmovsxbd
x86_sse41_pmovsxbq, // llvm.x86.sse41.pmovsxbq
x86_sse41_pmovsxbw, // llvm.x86.sse41.pmovsxbw
x86_sse41_pmovsxdq, // llvm.x86.sse41.pmovsxdq
x86_sse41_pmovsxwd, // llvm.x86.sse41.pmovsxwd
x86_sse41_pmovsxwq, // llvm.x86.sse41.pmovsxwq
x86_sse41_pmovzxbd, // llvm.x86.sse41.pmovzxbd
x86_sse41_pmovzxbq, // llvm.x86.sse41.pmovzxbq
x86_sse41_pmovzxbw, // llvm.x86.sse41.pmovzxbw
x86_sse41_pmovzxdq, // llvm.x86.sse41.pmovzxdq
x86_sse41_pmovzxwd, // llvm.x86.sse41.pmovzxwd
x86_sse41_pmovzxwq, // llvm.x86.sse41.pmovzxwq
x86_sse41_pmuldq, // llvm.x86.sse41.pmuldq
x86_sse41_ptestc, // llvm.x86.sse41.ptestc
x86_sse41_ptestnzc, // llvm.x86.sse41.ptestnzc
x86_sse41_ptestz, // llvm.x86.sse41.ptestz
x86_sse41_round_pd, // llvm.x86.sse41.round.pd
x86_sse41_round_ps, // llvm.x86.sse41.round.ps
x86_sse41_round_sd, // llvm.x86.sse41.round.sd
x86_sse41_round_ss, // llvm.x86.sse41.round.ss
x86_sse42_crc32_32_16, // llvm.x86.sse42.crc32.32.16
x86_sse42_crc32_32_32, // llvm.x86.sse42.crc32.32.32
x86_sse42_crc32_32_8, // llvm.x86.sse42.crc32.32.8
x86_sse42_crc32_64_64, // llvm.x86.sse42.crc32.64.64
x86_sse42_crc32_64_8, // llvm.x86.sse42.crc32.64.8
x86_sse42_pcmpestri128, // llvm.x86.sse42.pcmpestri128
x86_sse42_pcmpestria128, // llvm.x86.sse42.pcmpestria128
x86_sse42_pcmpestric128, // llvm.x86.sse42.pcmpestric128
x86_sse42_pcmpestrio128, // llvm.x86.sse42.pcmpestrio128
x86_sse42_pcmpestris128, // llvm.x86.sse42.pcmpestris128
x86_sse42_pcmpestriz128, // llvm.x86.sse42.pcmpestriz128
x86_sse42_pcmpestrm128, // llvm.x86.sse42.pcmpestrm128
x86_sse42_pcmpgtq, // llvm.x86.sse42.pcmpgtq
x86_sse42_pcmpistri128, // llvm.x86.sse42.pcmpistri128
x86_sse42_pcmpistria128, // llvm.x86.sse42.pcmpistria128
x86_sse42_pcmpistric128, // llvm.x86.sse42.pcmpistric128
x86_sse42_pcmpistrio128, // llvm.x86.sse42.pcmpistrio128
x86_sse42_pcmpistris128, // llvm.x86.sse42.pcmpistris128
x86_sse42_pcmpistriz128, // llvm.x86.sse42.pcmpistriz128
x86_sse42_pcmpistrm128, // llvm.x86.sse42.pcmpistrm128
x86_sse_add_ss, // llvm.x86.sse.add.ss
x86_sse_cmp_ps, // llvm.x86.sse.cmp.ps
x86_sse_cmp_ss, // llvm.x86.sse.cmp.ss
x86_sse_comieq_ss, // llvm.x86.sse.comieq.ss
x86_sse_comige_ss, // llvm.x86.sse.comige.ss
x86_sse_comigt_ss, // llvm.x86.sse.comigt.ss
x86_sse_comile_ss, // llvm.x86.sse.comile.ss
x86_sse_comilt_ss, // llvm.x86.sse.comilt.ss
x86_sse_comineq_ss, // llvm.x86.sse.comineq.ss
x86_sse_cvtpd2pi, // llvm.x86.sse.cvtpd2pi
x86_sse_cvtpi2pd, // llvm.x86.sse.cvtpi2pd
x86_sse_cvtpi2ps, // llvm.x86.sse.cvtpi2ps
x86_sse_cvtps2pi, // llvm.x86.sse.cvtps2pi
x86_sse_cvtsi2ss, // llvm.x86.sse.cvtsi2ss
x86_sse_cvtsi642ss, // llvm.x86.sse.cvtsi642ss
x86_sse_cvtss2si, // llvm.x86.sse.cvtss2si
x86_sse_cvtss2si64, // llvm.x86.sse.cvtss2si64
x86_sse_cvttpd2pi, // llvm.x86.sse.cvttpd2pi
x86_sse_cvttps2pi, // llvm.x86.sse.cvttps2pi
x86_sse_cvttss2si, // llvm.x86.sse.cvttss2si
x86_sse_cvttss2si64, // llvm.x86.sse.cvttss2si64
x86_sse_div_ss, // llvm.x86.sse.div.ss
x86_sse_ldmxcsr, // llvm.x86.sse.ldmxcsr
x86_sse_max_ps, // llvm.x86.sse.max.ps
x86_sse_max_ss, // llvm.x86.sse.max.ss
x86_sse_min_ps, // llvm.x86.sse.min.ps
x86_sse_min_ss, // llvm.x86.sse.min.ss
x86_sse_movmsk_ps, // llvm.x86.sse.movmsk.ps
x86_sse_mul_ss, // llvm.x86.sse.mul.ss
x86_sse_pshuf_w, // llvm.x86.sse.pshuf.w
x86_sse_rcp_ps, // llvm.x86.sse.rcp.ps
x86_sse_rcp_ss, // llvm.x86.sse.rcp.ss
x86_sse_rsqrt_ps, // llvm.x86.sse.rsqrt.ps
x86_sse_rsqrt_ss, // llvm.x86.sse.rsqrt.ss
x86_sse_sfence, // llvm.x86.sse.sfence
x86_sse_sqrt_ps, // llvm.x86.sse.sqrt.ps
x86_sse_sqrt_ss, // llvm.x86.sse.sqrt.ss
x86_sse_stmxcsr, // llvm.x86.sse.stmxcsr
x86_sse_storeu_ps, // llvm.x86.sse.storeu.ps
x86_sse_sub_ss, // llvm.x86.sse.sub.ss
x86_sse_ucomieq_ss, // llvm.x86.sse.ucomieq.ss
x86_sse_ucomige_ss, // llvm.x86.sse.ucomige.ss
x86_sse_ucomigt_ss, // llvm.x86.sse.ucomigt.ss
x86_sse_ucomile_ss, // llvm.x86.sse.ucomile.ss
x86_sse_ucomilt_ss, // llvm.x86.sse.ucomilt.ss
x86_sse_ucomineq_ss, // llvm.x86.sse.ucomineq.ss
x86_ssse3_pabs_b, // llvm.x86.ssse3.pabs.b
x86_ssse3_pabs_b_128, // llvm.x86.ssse3.pabs.b.128
x86_ssse3_pabs_d, // llvm.x86.ssse3.pabs.d
x86_ssse3_pabs_d_128, // llvm.x86.ssse3.pabs.d.128
x86_ssse3_pabs_w, // llvm.x86.ssse3.pabs.w
x86_ssse3_pabs_w_128, // llvm.x86.ssse3.pabs.w.128
x86_ssse3_phadd_d, // llvm.x86.ssse3.phadd.d
x86_ssse3_phadd_d_128, // llvm.x86.ssse3.phadd.d.128
x86_ssse3_phadd_sw, // llvm.x86.ssse3.phadd.sw
x86_ssse3_phadd_sw_128, // llvm.x86.ssse3.phadd.sw.128
x86_ssse3_phadd_w, // llvm.x86.ssse3.phadd.w
x86_ssse3_phadd_w_128, // llvm.x86.ssse3.phadd.w.128
x86_ssse3_phsub_d, // llvm.x86.ssse3.phsub.d
x86_ssse3_phsub_d_128, // llvm.x86.ssse3.phsub.d.128
x86_ssse3_phsub_sw, // llvm.x86.ssse3.phsub.sw
x86_ssse3_phsub_sw_128, // llvm.x86.ssse3.phsub.sw.128
x86_ssse3_phsub_w, // llvm.x86.ssse3.phsub.w
x86_ssse3_phsub_w_128, // llvm.x86.ssse3.phsub.w.128
x86_ssse3_pmadd_ub_sw, // llvm.x86.ssse3.pmadd.ub.sw
x86_ssse3_pmadd_ub_sw_128, // llvm.x86.ssse3.pmadd.ub.sw.128
x86_ssse3_pmul_hr_sw, // llvm.x86.ssse3.pmul.hr.sw
x86_ssse3_pmul_hr_sw_128, // llvm.x86.ssse3.pmul.hr.sw.128
x86_ssse3_pshuf_b, // llvm.x86.ssse3.pshuf.b
x86_ssse3_pshuf_b_128, // llvm.x86.ssse3.pshuf.b.128
x86_ssse3_psign_b, // llvm.x86.ssse3.psign.b
x86_ssse3_psign_b_128, // llvm.x86.ssse3.psign.b.128
x86_ssse3_psign_d, // llvm.x86.ssse3.psign.d
x86_ssse3_psign_d_128, // llvm.x86.ssse3.psign.d.128
x86_ssse3_psign_w, // llvm.x86.ssse3.psign.w
x86_ssse3_psign_w_128 // llvm.x86.ssse3.psign.w.128
#endif
// Intrinsic ID to name table
#ifdef GET_INTRINSIC_NAME_TABLE
// Note that entry #0 is the invalid intrinsic!
"llvm.adjust.trampoline",
"llvm.annotation",
"llvm.bswap",
"llvm.convert.from.fp16",
"llvm.convert.to.fp16",
"llvm.convertff",
"llvm.convertfsi",
"llvm.convertfui",
"llvm.convertsif",
"llvm.convertss",
"llvm.convertsu",
"llvm.convertuif",
"llvm.convertus",
"llvm.convertuu",
"llvm.cos",
"llvm.ctlz",
"llvm.ctpop",
"llvm.cttz",
"llvm.dbg.declare",
"llvm.dbg.value",
"llvm.eh.dwarf.cfa",
"llvm.eh.exception",
"llvm.eh.resume",
"llvm.eh.return.i32",
"llvm.eh.return.i64",
"llvm.eh.selector",
"llvm.eh.sjlj.callsite",
"llvm.eh.sjlj.dispatch.setup",
"llvm.eh.sjlj.functioncontext",
"llvm.eh.sjlj.longjmp",
"llvm.eh.sjlj.lsda",
"llvm.eh.sjlj.setjmp",
"llvm.eh.typeid.for",
"llvm.eh.unwind.init",
"llvm.exp",
"llvm.exp2",
"llvm.expect",
"llvm.flt.rounds",
"llvm.fma",
"llvm.frameaddress",
"llvm.gcread",
"llvm.gcroot",
"llvm.gcwrite",
"llvm.init.trampoline",
"llvm.invariant.end",
"llvm.invariant.start",
"llvm.lifetime.end",
"llvm.lifetime.start",
"llvm.log",
"llvm.log10",
"llvm.log2",
"llvm.longjmp",
"llvm.memcpy",
"llvm.memmove",
"llvm.memset",
"llvm.objectsize",
"llvm.pcmarker",
"llvm.pow",
"llvm.powi",
"llvm.prefetch",
"llvm.ptr.annotation",
"llvm.readcyclecounter",
"llvm.returnaddress",
"llvm.sadd.with.overflow",
"llvm.setjmp",
"llvm.siglongjmp",
"llvm.sigsetjmp",
"llvm.sin",
"llvm.smul.with.overflow",
"llvm.sqrt",
"llvm.ssub.with.overflow",
"llvm.stackprotector",
"llvm.stackrestore",
"llvm.stacksave",
"llvm.trap",
"llvm.uadd.with.overflow",
"llvm.umul.with.overflow",
"llvm.usub.with.overflow",
"llvm.va_copy",
"llvm.va_end",
"llvm.var.annotation",
"llvm.va_start",
"llvm.x86.3dnow.pavgusb",
"llvm.x86.3dnow.pf2id",
"llvm.x86.3dnow.pfacc",
"llvm.x86.3dnow.pfadd",
"llvm.x86.3dnow.pfcmpeq",
"llvm.x86.3dnow.pfcmpge",
"llvm.x86.3dnow.pfcmpgt",
"llvm.x86.3dnow.pfmax",
"llvm.x86.3dnow.pfmin",
"llvm.x86.3dnow.pfmul",
"llvm.x86.3dnow.pfrcp",
"llvm.x86.3dnow.pfrcpit1",
"llvm.x86.3dnow.pfrcpit2",
"llvm.x86.3dnow.pfrsqit1",
"llvm.x86.3dnow.pfrsqrt",
"llvm.x86.3dnow.pfsub",
"llvm.x86.3dnow.pfsubr",
"llvm.x86.3dnow.pi2fd",
"llvm.x86.3dnow.pmulhrw",
"llvm.x86.3dnowa.pf2iw",
"llvm.x86.3dnowa.pfnacc",
"llvm.x86.3dnowa.pfpnacc",
"llvm.x86.3dnowa.pi2fw",
"llvm.x86.3dnowa.pswapd",
"llvm.x86.aesni.aesdec",
"llvm.x86.aesni.aesdeclast",
"llvm.x86.aesni.aesenc",
"llvm.x86.aesni.aesenclast",
"llvm.x86.aesni.aesimc",
"llvm.x86.aesni.aeskeygenassist",
"llvm.x86.avx.addsub.pd.256",
"llvm.x86.avx.addsub.ps.256",
"llvm.x86.avx.blend.pd.256",
"llvm.x86.avx.blend.ps.256",
"llvm.x86.avx.blendv.pd.256",
"llvm.x86.avx.blendv.ps.256",
"llvm.x86.avx.cmp.pd.256",
"llvm.x86.avx.cmp.ps.256",
"llvm.x86.avx.cvt.pd2.ps.256",
"llvm.x86.avx.cvt.pd2dq.256",
"llvm.x86.avx.cvt.ps2.pd.256",
"llvm.x86.avx.cvt.ps2dq.256",
"llvm.x86.avx.cvtdq2.pd.256",
"llvm.x86.avx.cvtdq2.ps.256",
"llvm.x86.avx.cvtt.pd2dq.256",
"llvm.x86.avx.cvtt.ps2dq.256",
"llvm.x86.avx.dp.ps.256",
"llvm.x86.avx.hadd.pd.256",
"llvm.x86.avx.hadd.ps.256",
"llvm.x86.avx.hsub.pd.256",
"llvm.x86.avx.hsub.ps.256",
"llvm.x86.avx.ldu.dq.256",
"llvm.x86.avx.loadu.dq.256",
"llvm.x86.avx.loadu.pd.256",
"llvm.x86.avx.loadu.ps.256",
"llvm.x86.avx.maskload.pd",
"llvm.x86.avx.maskload.pd.256",
"llvm.x86.avx.maskload.ps",
"llvm.x86.avx.maskload.ps.256",
"llvm.x86.avx.maskstore.pd",
"llvm.x86.avx.maskstore.pd.256",
"llvm.x86.avx.maskstore.ps",
"llvm.x86.avx.maskstore.ps.256",
"llvm.x86.avx.max.pd.256",
"llvm.x86.avx.max.ps.256",
"llvm.x86.avx.min.pd.256",
"llvm.x86.avx.min.ps.256",
"llvm.x86.avx.movmsk.pd.256",
"llvm.x86.avx.movmsk.ps.256",
"llvm.x86.avx.movnt.dq.256",
"llvm.x86.avx.movnt.pd.256",
"llvm.x86.avx.movnt.ps.256",
"llvm.x86.avx.ptestc.256",
"llvm.x86.avx.ptestnzc.256",
"llvm.x86.avx.ptestz.256",
"llvm.x86.avx.rcp.ps.256",
"llvm.x86.avx.round.pd.256",
"llvm.x86.avx.round.ps.256",
"llvm.x86.avx.rsqrt.ps.256",
"llvm.x86.avx.sqrt.pd.256",
"llvm.x86.avx.sqrt.ps.256",
"llvm.x86.avx.storeu.dq.256",
"llvm.x86.avx.storeu.pd.256",
"llvm.x86.avx.storeu.ps.256",
"llvm.x86.avx.vbroadcast.sd.256",
"llvm.x86.avx.vbroadcastf128.pd.256",
"llvm.x86.avx.vbroadcastf128.ps.256",
"llvm.x86.avx.vbroadcastss",
"llvm.x86.avx.vbroadcastss.256",
"llvm.x86.avx.vextractf128.pd.256",
"llvm.x86.avx.vextractf128.ps.256",
"llvm.x86.avx.vextractf128.si.256",
"llvm.x86.avx.vinsertf128.pd.256",
"llvm.x86.avx.vinsertf128.ps.256",
"llvm.x86.avx.vinsertf128.si.256",
"llvm.x86.avx.vperm2f128.pd.256",
"llvm.x86.avx.vperm2f128.ps.256",
"llvm.x86.avx.vperm2f128.si.256",
"llvm.x86.avx.vpermil.pd",
"llvm.x86.avx.vpermil.pd.256",
"llvm.x86.avx.vpermil.ps",
"llvm.x86.avx.vpermil.ps.256",
"llvm.x86.avx.vpermilvar.pd",
"llvm.x86.avx.vpermilvar.pd.256",
"llvm.x86.avx.vpermilvar.ps",
"llvm.x86.avx.vpermilvar.ps.256",
"llvm.x86.avx.vtestc.pd",
"llvm.x86.avx.vtestc.pd.256",
"llvm.x86.avx.vtestc.ps",
"llvm.x86.avx.vtestc.ps.256",
"llvm.x86.avx.vtestnzc.pd",
"llvm.x86.avx.vtestnzc.pd.256",
"llvm.x86.avx.vtestnzc.ps",
"llvm.x86.avx.vtestnzc.ps.256",
"llvm.x86.avx.vtestz.pd",
"llvm.x86.avx.vtestz.pd.256",
"llvm.x86.avx.vtestz.ps",
"llvm.x86.avx.vtestz.ps.256",
"llvm.x86.avx.vzeroall",
"llvm.x86.avx.vzeroupper",
"llvm.x86.int",
"llvm.x86.mmx.emms",
"llvm.x86.mmx.femms",
"llvm.x86.mmx.maskmovq",
"llvm.x86.mmx.movnt.dq",
"llvm.x86.mmx.packssdw",
"llvm.x86.mmx.packsswb",
"llvm.x86.mmx.packuswb",
"llvm.x86.mmx.padd.b",
"llvm.x86.mmx.padd.d",
"llvm.x86.mmx.padd.q",
"llvm.x86.mmx.padd.w",
"llvm.x86.mmx.padds.b",
"llvm.x86.mmx.padds.w",
"llvm.x86.mmx.paddus.b",
"llvm.x86.mmx.paddus.w",
"llvm.x86.mmx.palignr.b",
"llvm.x86.mmx.pand",
"llvm.x86.mmx.pandn",
"llvm.x86.mmx.pavg.b",
"llvm.x86.mmx.pavg.w",
"llvm.x86.mmx.pcmpeq.b",
"llvm.x86.mmx.pcmpeq.d",
"llvm.x86.mmx.pcmpeq.w",
"llvm.x86.mmx.pcmpgt.b",
"llvm.x86.mmx.pcmpgt.d",
"llvm.x86.mmx.pcmpgt.w",
"llvm.x86.mmx.pextr.w",
"llvm.x86.mmx.pinsr.w",
"llvm.x86.mmx.pmadd.wd",
"llvm.x86.mmx.pmaxs.w",
"llvm.x86.mmx.pmaxu.b",
"llvm.x86.mmx.pmins.w",
"llvm.x86.mmx.pminu.b",
"llvm.x86.mmx.pmovmskb",
"llvm.x86.mmx.pmulh.w",
"llvm.x86.mmx.pmulhu.w",
"llvm.x86.mmx.pmull.w",
"llvm.x86.mmx.pmulu.dq",
"llvm.x86.mmx.por",
"llvm.x86.mmx.psad.bw",
"llvm.x86.mmx.psll.d",
"llvm.x86.mmx.psll.q",
"llvm.x86.mmx.psll.w",
"llvm.x86.mmx.pslli.d",
"llvm.x86.mmx.pslli.q",
"llvm.x86.mmx.pslli.w",
"llvm.x86.mmx.psra.d",
"llvm.x86.mmx.psra.w",
"llvm.x86.mmx.psrai.d",
"llvm.x86.mmx.psrai.w",
"llvm.x86.mmx.psrl.d",
"llvm.x86.mmx.psrl.q",
"llvm.x86.mmx.psrl.w",
"llvm.x86.mmx.psrli.d",
"llvm.x86.mmx.psrli.q",
"llvm.x86.mmx.psrli.w",
"llvm.x86.mmx.psub.b",
"llvm.x86.mmx.psub.d",
"llvm.x86.mmx.psub.q",
"llvm.x86.mmx.psub.w",
"llvm.x86.mmx.psubs.b",
"llvm.x86.mmx.psubs.w",
"llvm.x86.mmx.psubus.b",
"llvm.x86.mmx.psubus.w",
"llvm.x86.mmx.punpckhbw",
"llvm.x86.mmx.punpckhdq",
"llvm.x86.mmx.punpckhwd",
"llvm.x86.mmx.punpcklbw",
"llvm.x86.mmx.punpckldq",
"llvm.x86.mmx.punpcklwd",
"llvm.x86.mmx.pxor",
"llvm.x86.sse2.add.sd",
"llvm.x86.sse2.clflush",
"llvm.x86.sse2.cmp.pd",
"llvm.x86.sse2.cmp.sd",
"llvm.x86.sse2.comieq.sd",
"llvm.x86.sse2.comige.sd",
"llvm.x86.sse2.comigt.sd",
"llvm.x86.sse2.comile.sd",
"llvm.x86.sse2.comilt.sd",
"llvm.x86.sse2.comineq.sd",
"llvm.x86.sse2.cvtdq2pd",
"llvm.x86.sse2.cvtdq2ps",
"llvm.x86.sse2.cvtpd2dq",
"llvm.x86.sse2.cvtpd2ps",
"llvm.x86.sse2.cvtps2dq",
"llvm.x86.sse2.cvtps2pd",
"llvm.x86.sse2.cvtsd2si",
"llvm.x86.sse2.cvtsd2si64",
"llvm.x86.sse2.cvtsd2ss",
"llvm.x86.sse2.cvtsi2sd",
"llvm.x86.sse2.cvtsi642sd",
"llvm.x86.sse2.cvtss2sd",
"llvm.x86.sse2.cvttpd2dq",
"llvm.x86.sse2.cvttps2dq",
"llvm.x86.sse2.cvttsd2si",
"llvm.x86.sse2.cvttsd2si64",
"llvm.x86.sse2.div.sd",
"llvm.x86.sse2.lfence",
"llvm.x86.sse2.maskmov.dqu",
"llvm.x86.sse2.max.pd",
"llvm.x86.sse2.max.sd",
"llvm.x86.sse2.mfence",
"llvm.x86.sse2.min.pd",
"llvm.x86.sse2.min.sd",
"llvm.x86.sse2.movmsk.pd",
"llvm.x86.sse2.mul.sd",
"llvm.x86.sse2.packssdw.128",
"llvm.x86.sse2.packsswb.128",
"llvm.x86.sse2.packuswb.128",
"llvm.x86.sse2.padds.b",
"llvm.x86.sse2.padds.w",
"llvm.x86.sse2.paddus.b",
"llvm.x86.sse2.paddus.w",
"llvm.x86.sse2.pavg.b",
"llvm.x86.sse2.pavg.w",
"llvm.x86.sse2.pcmpeq.b",
"llvm.x86.sse2.pcmpeq.d",
"llvm.x86.sse2.pcmpeq.w",
"llvm.x86.sse2.pcmpgt.b",
"llvm.x86.sse2.pcmpgt.d",
"llvm.x86.sse2.pcmpgt.w",
"llvm.x86.sse2.pmadd.wd",
"llvm.x86.sse2.pmaxs.w",
"llvm.x86.sse2.pmaxu.b",
"llvm.x86.sse2.pmins.w",
"llvm.x86.sse2.pminu.b",
"llvm.x86.sse2.pmovmskb.128",
"llvm.x86.sse2.pmulh.w",
"llvm.x86.sse2.pmulhu.w",
"llvm.x86.sse2.pmulu.dq",
"llvm.x86.sse2.psad.bw",
"llvm.x86.sse2.psll.d",
"llvm.x86.sse2.psll.dq",
"llvm.x86.sse2.psll.dq.bs",
"llvm.x86.sse2.psll.q",
"llvm.x86.sse2.psll.w",
"llvm.x86.sse2.pslli.d",
"llvm.x86.sse2.pslli.q",
"llvm.x86.sse2.pslli.w",
"llvm.x86.sse2.psra.d",
"llvm.x86.sse2.psra.w",
"llvm.x86.sse2.psrai.d",
"llvm.x86.sse2.psrai.w",
"llvm.x86.sse2.psrl.d",
"llvm.x86.sse2.psrl.dq",
"llvm.x86.sse2.psrl.dq.bs",
"llvm.x86.sse2.psrl.q",
"llvm.x86.sse2.psrl.w",
"llvm.x86.sse2.psrli.d",
"llvm.x86.sse2.psrli.q",
"llvm.x86.sse2.psrli.w",
"llvm.x86.sse2.psubs.b",
"llvm.x86.sse2.psubs.w",
"llvm.x86.sse2.psubus.b",
"llvm.x86.sse2.psubus.w",
"llvm.x86.sse2.sqrt.pd",
"llvm.x86.sse2.sqrt.sd",
"llvm.x86.sse2.storel.dq",
"llvm.x86.sse2.storeu.dq",
"llvm.x86.sse2.storeu.pd",
"llvm.x86.sse2.sub.sd",
"llvm.x86.sse2.ucomieq.sd",
"llvm.x86.sse2.ucomige.sd",
"llvm.x86.sse2.ucomigt.sd",
"llvm.x86.sse2.ucomile.sd",
"llvm.x86.sse2.ucomilt.sd",
"llvm.x86.sse2.ucomineq.sd",
"llvm.x86.sse3.addsub.pd",
"llvm.x86.sse3.addsub.ps",
"llvm.x86.sse3.hadd.pd",
"llvm.x86.sse3.hadd.ps",
"llvm.x86.sse3.hsub.pd",
"llvm.x86.sse3.hsub.ps",
"llvm.x86.sse3.ldu.dq",
"llvm.x86.sse3.monitor",
"llvm.x86.sse3.mwait",
"llvm.x86.sse41.blendpd",
"llvm.x86.sse41.blendps",
"llvm.x86.sse41.blendvpd",
"llvm.x86.sse41.blendvps",
"llvm.x86.sse41.dppd",
"llvm.x86.sse41.dpps",
"llvm.x86.sse41.extractps",
"llvm.x86.sse41.insertps",
"llvm.x86.sse41.movntdqa",
"llvm.x86.sse41.mpsadbw",
"llvm.x86.sse41.packusdw",
"llvm.x86.sse41.pblendvb",
"llvm.x86.sse41.pblendw",
"llvm.x86.sse41.pcmpeqq",
"llvm.x86.sse41.pextrb",
"llvm.x86.sse41.pextrd",
"llvm.x86.sse41.pextrq",
"llvm.x86.sse41.phminposuw",
"llvm.x86.sse41.pmaxsb",
"llvm.x86.sse41.pmaxsd",
"llvm.x86.sse41.pmaxud",
"llvm.x86.sse41.pmaxuw",
"llvm.x86.sse41.pminsb",
"llvm.x86.sse41.pminsd",
"llvm.x86.sse41.pminud",
"llvm.x86.sse41.pminuw",
"llvm.x86.sse41.pmovsxbd",
"llvm.x86.sse41.pmovsxbq",
"llvm.x86.sse41.pmovsxbw",
"llvm.x86.sse41.pmovsxdq",
"llvm.x86.sse41.pmovsxwd",
"llvm.x86.sse41.pmovsxwq",
"llvm.x86.sse41.pmovzxbd",
"llvm.x86.sse41.pmovzxbq",
"llvm.x86.sse41.pmovzxbw",
"llvm.x86.sse41.pmovzxdq",
"llvm.x86.sse41.pmovzxwd",
"llvm.x86.sse41.pmovzxwq",
"llvm.x86.sse41.pmuldq",
"llvm.x86.sse41.ptestc",
"llvm.x86.sse41.ptestnzc",
"llvm.x86.sse41.ptestz",
"llvm.x86.sse41.round.pd",
"llvm.x86.sse41.round.ps",
"llvm.x86.sse41.round.sd",
"llvm.x86.sse41.round.ss",
"llvm.x86.sse42.crc32.32.16",
"llvm.x86.sse42.crc32.32.32",
"llvm.x86.sse42.crc32.32.8",
"llvm.x86.sse42.crc32.64.64",
"llvm.x86.sse42.crc32.64.8",
"llvm.x86.sse42.pcmpestri128",
"llvm.x86.sse42.pcmpestria128",
"llvm.x86.sse42.pcmpestric128",
"llvm.x86.sse42.pcmpestrio128",
"llvm.x86.sse42.pcmpestris128",
"llvm.x86.sse42.pcmpestriz128",
"llvm.x86.sse42.pcmpestrm128",
"llvm.x86.sse42.pcmpgtq",
"llvm.x86.sse42.pcmpistri128",
"llvm.x86.sse42.pcmpistria128",
"llvm.x86.sse42.pcmpistric128",
"llvm.x86.sse42.pcmpistrio128",
"llvm.x86.sse42.pcmpistris128",
"llvm.x86.sse42.pcmpistriz128",
"llvm.x86.sse42.pcmpistrm128",
"llvm.x86.sse.add.ss",
"llvm.x86.sse.cmp.ps",
"llvm.x86.sse.cmp.ss",
"llvm.x86.sse.comieq.ss",
"llvm.x86.sse.comige.ss",
"llvm.x86.sse.comigt.ss",
"llvm.x86.sse.comile.ss",
"llvm.x86.sse.comilt.ss",
"llvm.x86.sse.comineq.ss",
"llvm.x86.sse.cvtpd2pi",
"llvm.x86.sse.cvtpi2pd",
"llvm.x86.sse.cvtpi2ps",
"llvm.x86.sse.cvtps2pi",
"llvm.x86.sse.cvtsi2ss",
"llvm.x86.sse.cvtsi642ss",
"llvm.x86.sse.cvtss2si",
"llvm.x86.sse.cvtss2si64",
"llvm.x86.sse.cvttpd2pi",
"llvm.x86.sse.cvttps2pi",
"llvm.x86.sse.cvttss2si",
"llvm.x86.sse.cvttss2si64",
"llvm.x86.sse.div.ss",
"llvm.x86.sse.ldmxcsr",
"llvm.x86.sse.max.ps",
"llvm.x86.sse.max.ss",
"llvm.x86.sse.min.ps",
"llvm.x86.sse.min.ss",
"llvm.x86.sse.movmsk.ps",
"llvm.x86.sse.mul.ss",
"llvm.x86.sse.pshuf.w",
"llvm.x86.sse.rcp.ps",
"llvm.x86.sse.rcp.ss",
"llvm.x86.sse.rsqrt.ps",
"llvm.x86.sse.rsqrt.ss",
"llvm.x86.sse.sfence",
"llvm.x86.sse.sqrt.ps",
"llvm.x86.sse.sqrt.ss",
"llvm.x86.sse.stmxcsr",
"llvm.x86.sse.storeu.ps",
"llvm.x86.sse.sub.ss",
"llvm.x86.sse.ucomieq.ss",
"llvm.x86.sse.ucomige.ss",
"llvm.x86.sse.ucomigt.ss",
"llvm.x86.sse.ucomile.ss",
"llvm.x86.sse.ucomilt.ss",
"llvm.x86.sse.ucomineq.ss",
"llvm.x86.ssse3.pabs.b",
"llvm.x86.ssse3.pabs.b.128",
"llvm.x86.ssse3.pabs.d",
"llvm.x86.ssse3.pabs.d.128",
"llvm.x86.ssse3.pabs.w",
"llvm.x86.ssse3.pabs.w.128",
"llvm.x86.ssse3.phadd.d",
"llvm.x86.ssse3.phadd.d.128",
"llvm.x86.ssse3.phadd.sw",
"llvm.x86.ssse3.phadd.sw.128",
"llvm.x86.ssse3.phadd.w",
"llvm.x86.ssse3.phadd.w.128",
"llvm.x86.ssse3.phsub.d",
"llvm.x86.ssse3.phsub.d.128",
"llvm.x86.ssse3.phsub.sw",
"llvm.x86.ssse3.phsub.sw.128",
"llvm.x86.ssse3.phsub.w",
"llvm.x86.ssse3.phsub.w.128",
"llvm.x86.ssse3.pmadd.ub.sw",
"llvm.x86.ssse3.pmadd.ub.sw.128",
"llvm.x86.ssse3.pmul.hr.sw",
"llvm.x86.ssse3.pmul.hr.sw.128",
"llvm.x86.ssse3.pshuf.b",
"llvm.x86.ssse3.pshuf.b.128",
"llvm.x86.ssse3.psign.b",
"llvm.x86.ssse3.psign.b.128",
"llvm.x86.ssse3.psign.d",
"llvm.x86.ssse3.psign.d.128",
"llvm.x86.ssse3.psign.w",
"llvm.x86.ssse3.psign.w.128",
#endif
// Intrinsic ID to overload table
#ifdef GET_INTRINSIC_OVERLOAD_TABLE
// Note that entry #0 is the invalid intrinsic!
false,
true,
true,
false,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
false,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
false,
true,
true,
true,
true,
false,
true,
true,
false,
true,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
false,
false,
false,
false,
true,
true,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
#endif
// Function name -> enum value recognizer code.
#ifdef GET_FUNCTION_RECOGNIZER
StringRef NameR(Name+6, Len-6); // Skip over 'llvm.'
switch (Name[5]) { // Dispatch on first letter.
default: break;
case 'a':
if (NameR.startswith("nnotation.")) return Intrinsic::annotation;
switch (NameR.size()) {
default: break;
case 16: // 1 string to match.
if (NameR.substr(0, 16) != "djust.trampoline")
break;
return Intrinsic::adjust_trampoline; // "djust.trampoline"
}
break; // end of 'a' case.
case 'b':
if (NameR.startswith("swap.")) return Intrinsic::bswap;
break; // end of 'b' case.
case 'c':
if (NameR.startswith("onvertff.")) return Intrinsic::convertff;
if (NameR.startswith("onvertfsi.")) return Intrinsic::convertfsi;
if (NameR.startswith("onvertfui.")) return Intrinsic::convertfui;
if (NameR.startswith("onvertsif.")) return Intrinsic::convertsif;
if (NameR.startswith("onvertss.")) return Intrinsic::convertss;
if (NameR.startswith("onvertsu.")) return Intrinsic::convertsu;
if (NameR.startswith("onvertuif.")) return Intrinsic::convertuif;
if (NameR.startswith("onvertus.")) return Intrinsic::convertus;
if (NameR.startswith("onvertuu.")) return Intrinsic::convertuu;
if (NameR.startswith("os.")) return Intrinsic::cos;
if (NameR.startswith("tlz.")) return Intrinsic::ctlz;
if (NameR.startswith("tpop.")) return Intrinsic::ctpop;
if (NameR.startswith("ttz.")) return Intrinsic::cttz;
switch (NameR.size()) {
default: break;
case 14: // 1 string to match.
if (NameR.substr(0, 14) != "onvert.to.fp16")
break;
return Intrinsic::convert_to_fp16; // "onvert.to.fp16"
case 16: // 1 string to match.
if (NameR.substr(0, 16) != "onvert.from.fp16")
break;
return Intrinsic::convert_from_fp16; // "onvert.from.fp16"
}
break; // end of 'c' case.
case 'd':
switch (NameR.size()) {
default: break;
case 8: // 1 string to match.
if (NameR.substr(0, 8) != "bg.value")
break;
return Intrinsic::dbg_value; // "bg.value"
case 10: // 1 string to match.
if (NameR.substr(0, 10) != "bg.declare")
break;
return Intrinsic::dbg_declare; // "bg.declare"
}
break; // end of 'd' case.
case 'e':
if (NameR.startswith("xp.")) return Intrinsic::exp;
if (NameR.startswith("xp2.")) return Intrinsic::exp2;
if (NameR.startswith("xpect.")) return Intrinsic::expect;
switch (NameR.size()) {
default: break;
case 8: // 1 string to match.
if (NameR.substr(0, 8) != "h.resume")
break;
return Intrinsic::eh_resume; // "h.resume"
case 10: // 1 string to match.
if (NameR.substr(0, 10) != "h.selector")
break;
return Intrinsic::eh_selector; // "h.selector"
case 11: // 3 strings to match.
if (NameR.substr(0, 2) != "h.")
break;
switch (NameR[2]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(3, 8) != "warf.cfa")
break;
return Intrinsic::eh_dwarf_cfa; // "h.dwarf.cfa"
case 'e': // 1 string to match.
if (NameR.substr(3, 8) != "xception")
break;
return Intrinsic::eh_exception; // "h.exception"
case 's': // 1 string to match.
if (NameR.substr(3, 8) != "jlj.lsda")
break;
return Intrinsic::eh_sjlj_lsda; // "h.sjlj.lsda"
}
break;
case 12: // 3 strings to match.
if (NameR.substr(0, 2) != "h.")
break;
switch (NameR[2]) {
default: break;
case 'r': // 2 strings to match.
if (NameR.substr(3, 7) != "eturn.i")
break;
switch (NameR[10]) {
default: break;
case '3': // 1 string to match.
if (NameR[11] != '2')
break;
return Intrinsic::eh_return_i32; // "h.return.i32"
case '6': // 1 string to match.
if (NameR[11] != '4')
break;
return Intrinsic::eh_return_i64; // "h.return.i64"
}
break;
case 't': // 1 string to match.
if (NameR.substr(3, 9) != "ypeid.for")
break;
return Intrinsic::eh_typeid_for; // "h.typeid.for"
}
break;
case 13: // 2 strings to match.
if (NameR.substr(0, 2) != "h.")
break;
switch (NameR[2]) {
default: break;
case 's': // 1 string to match.
if (NameR.substr(3, 10) != "jlj.setjmp")
break;
return Intrinsic::eh_sjlj_setjmp; // "h.sjlj.setjmp"
case 'u': // 1 string to match.
if (NameR.substr(3, 10) != "nwind.init")
break;
return Intrinsic::eh_unwind_init; // "h.unwind.init"
}
break;
case 14: // 1 string to match.
if (NameR.substr(0, 14) != "h.sjlj.longjmp")
break;
return Intrinsic::eh_sjlj_longjmp; // "h.sjlj.longjmp"
case 15: // 1 string to match.
if (NameR.substr(0, 15) != "h.sjlj.callsite")
break;
return Intrinsic::eh_sjlj_callsite; // "h.sjlj.callsite"
case 21: // 1 string to match.
if (NameR.substr(0, 21) != "h.sjlj.dispatch.setup")
break;
return Intrinsic::eh_sjlj_dispatch_setup; // "h.sjlj.dispatch.setup"
case 22: // 1 string to match.
if (NameR.substr(0, 22) != "h.sjlj.functioncontext")
break;
return Intrinsic::eh_sjlj_functioncontext; // "h.sjlj.functioncontext"
}
break; // end of 'e' case.
case 'f':
if (NameR.startswith("ma.")) return Intrinsic::fma;
switch (NameR.size()) {
default: break;
case 9: // 1 string to match.
if (NameR.substr(0, 9) != "lt.rounds")
break;
return Intrinsic::flt_rounds; // "lt.rounds"
case 11: // 1 string to match.
if (NameR.substr(0, 11) != "rameaddress")
break;
return Intrinsic::frameaddress; // "rameaddress"
}
break; // end of 'f' case.
case 'g':
switch (NameR.size()) {
default: break;
case 5: // 2 strings to match.
if (NameR.substr(0, 2) != "cr")
break;
switch (NameR[2]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(3, 2) != "ad")
break;
return Intrinsic::gcread; // "cread"
case 'o': // 1 string to match.
if (NameR.substr(3, 2) != "ot")
break;
return Intrinsic::gcroot; // "croot"
}
break;
case 6: // 1 string to match.
if (NameR.substr(0, 6) != "cwrite")
break;
return Intrinsic::gcwrite; // "cwrite"
}
break; // end of 'g' case.
case 'i':
switch (NameR.size()) {
default: break;
case 12: // 1 string to match.
if (NameR.substr(0, 12) != "nvariant.end")
break;
return Intrinsic::invariant_end; // "nvariant.end"
case 14: // 2 strings to match.
if (NameR[0] != 'n')
break;
switch (NameR[1]) {
default: break;
case 'i': // 1 string to match.
if (NameR.substr(2, 12) != "t.trampoline")
break;
return Intrinsic::init_trampoline; // "nit.trampoline"
case 'v': // 1 string to match.
if (NameR.substr(2, 12) != "ariant.start")
break;
return Intrinsic::invariant_start; // "nvariant.start"
}
break;
}
break; // end of 'i' case.
case 'l':
if (NameR.startswith("og.")) return Intrinsic::log;
if (NameR.startswith("og10.")) return Intrinsic::log10;
if (NameR.startswith("og2.")) return Intrinsic::log2;
switch (NameR.size()) {
default: break;
case 6: // 1 string to match.
if (NameR.substr(0, 6) != "ongjmp")
break;
return Intrinsic::longjmp; // "ongjmp"
case 11: // 1 string to match.
if (NameR.substr(0, 11) != "ifetime.end")
break;
return Intrinsic::lifetime_end; // "ifetime.end"
case 13: // 1 string to match.
if (NameR.substr(0, 13) != "ifetime.start")
break;
return Intrinsic::lifetime_start; // "ifetime.start"
}
break; // end of 'l' case.
case 'm':
if (NameR.startswith("emcpy.")) return Intrinsic::memcpy;
if (NameR.startswith("emmove.")) return Intrinsic::memmove;
if (NameR.startswith("emset.")) return Intrinsic::memset;
break; // end of 'm' case.
case 'o':
if (NameR.startswith("bjectsize.")) return Intrinsic::objectsize;
break; // end of 'o' case.
case 'p':
if (NameR.startswith("ow.")) return Intrinsic::pow;
if (NameR.startswith("owi.")) return Intrinsic::powi;
if (NameR.startswith("tr.annotation.")) return Intrinsic::ptr_annotation;
switch (NameR.size()) {
default: break;
case 7: // 2 strings to match.
switch (NameR[0]) {
default: break;
case 'c': // 1 string to match.
if (NameR.substr(1, 6) != "marker")
break;
return Intrinsic::pcmarker; // "cmarker"
case 'r': // 1 string to match.
if (NameR.substr(1, 6) != "efetch")
break;
return Intrinsic::prefetch; // "refetch"
}
break;
}
break; // end of 'p' case.
case 'r':
switch (NameR.size()) {
default: break;
case 12: // 1 string to match.
if (NameR.substr(0, 12) != "eturnaddress")
break;
return Intrinsic::returnaddress; // "eturnaddress"
case 15: // 1 string to match.
if (NameR.substr(0, 15) != "eadcyclecounter")
break;
return Intrinsic::readcyclecounter; // "eadcyclecounter"
}
break; // end of 'r' case.
case 's':
if (NameR.startswith("add.with.overflow.")) return Intrinsic::sadd_with_overflow;
if (NameR.startswith("in.")) return Intrinsic::sin;
if (NameR.startswith("mul.with.overflow.")) return Intrinsic::smul_with_overflow;
if (NameR.startswith("qrt.")) return Intrinsic::sqrt;
if (NameR.startswith("sub.with.overflow.")) return Intrinsic::ssub_with_overflow;
switch (NameR.size()) {
default: break;
case 5: // 1 string to match.
if (NameR.substr(0, 5) != "etjmp")
break;
return Intrinsic::setjmp; // "etjmp"
case 8: // 2 strings to match.
switch (NameR[0]) {
default: break;
case 'i': // 1 string to match.
if (NameR.substr(1, 7) != "gsetjmp")
break;
return Intrinsic::sigsetjmp; // "igsetjmp"
case 't': // 1 string to match.
if (NameR.substr(1, 7) != "acksave")
break;
return Intrinsic::stacksave; // "tacksave"
}
break;
case 9: // 1 string to match.
if (NameR.substr(0, 9) != "iglongjmp")
break;
return Intrinsic::siglongjmp; // "iglongjmp"
case 11: // 1 string to match.
if (NameR.substr(0, 11) != "tackrestore")
break;
return Intrinsic::stackrestore; // "tackrestore"
case 13: // 1 string to match.
if (NameR.substr(0, 13) != "tackprotector")
break;
return Intrinsic::stackprotector; // "tackprotector"
}
break; // end of 's' case.
case 't':
switch (NameR.size()) {
default: break;
case 3: // 1 string to match.
if (NameR.substr(0, 3) != "rap")
break;
return Intrinsic::trap; // "rap"
}
break; // end of 't' case.
case 'u':
if (NameR.startswith("add.with.overflow.")) return Intrinsic::uadd_with_overflow;
if (NameR.startswith("mul.with.overflow.")) return Intrinsic::umul_with_overflow;
if (NameR.startswith("sub.with.overflow.")) return Intrinsic::usub_with_overflow;
break; // end of 'u' case.
case 'v':
switch (NameR.size()) {
default: break;
case 5: // 1 string to match.
if (NameR.substr(0, 5) != "a_end")
break;
return Intrinsic::vaend; // "a_end"
case 6: // 1 string to match.
if (NameR.substr(0, 6) != "a_copy")
break;
return Intrinsic::vacopy; // "a_copy"
case 7: // 1 string to match.
if (NameR.substr(0, 7) != "a_start")
break;
return Intrinsic::vastart; // "a_start"
case 13: // 1 string to match.
if (NameR.substr(0, 13) != "ar.annotation")
break;
return Intrinsic::var_annotation; // "ar.annotation"
}
break; // end of 'v' case.
case 'x':
switch (NameR.size()) {
default: break;
case 6: // 1 string to match.
if (NameR.substr(0, 6) != "86.int")
break;
return Intrinsic::x86_int; // "86.int"
case 10: // 1 string to match.
if (NameR.substr(0, 10) != "86.mmx.por")
break;
return Intrinsic::x86_mmx_por; // "86.mmx.por"
case 11: // 3 strings to match.
if (NameR.substr(0, 7) != "86.mmx.")
break;
switch (NameR[7]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(8, 3) != "mms")
break;
return Intrinsic::x86_mmx_emms; // "86.mmx.emms"
case 'p': // 2 strings to match.
switch (NameR[8]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(9, 2) != "nd")
break;
return Intrinsic::x86_mmx_pand; // "86.mmx.pand"
case 'x': // 1 string to match.
if (NameR.substr(9, 2) != "or")
break;
return Intrinsic::x86_mmx_pxor; // "86.mmx.pxor"
}
break;
}
break;
case 12: // 2 strings to match.
if (NameR.substr(0, 7) != "86.mmx.")
break;
switch (NameR[7]) {
default: break;
case 'f': // 1 string to match.
if (NameR.substr(8, 4) != "emms")
break;
return Intrinsic::x86_mmx_femms; // "86.mmx.femms"
case 'p': // 1 string to match.
if (NameR.substr(8, 4) != "andn")
break;
return Intrinsic::x86_mmx_pandn; // "86.mmx.pandn"
}
break;
case 13: // 34 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case 'm': // 18 strings to match.
if (NameR.substr(4, 4) != "mx.p")
break;
switch (NameR[8]) {
default: break;
case 'a': // 6 strings to match.
switch (NameR[9]) {
default: break;
case 'd': // 4 strings to match.
if (NameR.substr(10, 2) != "d.")
break;
switch (NameR[12]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_padd_b; // "86.mmx.padd.b"
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_padd_d; // "86.mmx.padd.d"
case 'q': // 1 string to match.
return Intrinsic::x86_mmx_padd_q; // "86.mmx.padd.q"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_padd_w; // "86.mmx.padd.w"
}
break;
case 'v': // 2 strings to match.
if (NameR.substr(10, 2) != "g.")
break;
switch (NameR[12]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_pavg_b; // "86.mmx.pavg.b"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_pavg_w; // "86.mmx.pavg.w"
}
break;
}
break;
case 's': // 12 strings to match.
switch (NameR[9]) {
default: break;
case 'l': // 3 strings to match.
if (NameR.substr(10, 2) != "l.")
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_psll_d; // "86.mmx.psll.d"
case 'q': // 1 string to match.
return Intrinsic::x86_mmx_psll_q; // "86.mmx.psll.q"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psll_w; // "86.mmx.psll.w"
}
break;
case 'r': // 5 strings to match.
switch (NameR[10]) {
default: break;
case 'a': // 2 strings to match.
if (NameR[11] != '.')
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_psra_d; // "86.mmx.psra.d"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psra_w; // "86.mmx.psra.w"
}
break;
case 'l': // 3 strings to match.
if (NameR[11] != '.')
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_psrl_d; // "86.mmx.psrl.d"
case 'q': // 1 string to match.
return Intrinsic::x86_mmx_psrl_q; // "86.mmx.psrl.q"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psrl_w; // "86.mmx.psrl.w"
}
break;
}
break;
case 'u': // 4 strings to match.
if (NameR.substr(10, 2) != "b.")
break;
switch (NameR[12]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_psub_b; // "86.mmx.psub.b"
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_psub_d; // "86.mmx.psub.d"
case 'q': // 1 string to match.
return Intrinsic::x86_mmx_psub_q; // "86.mmx.psub.q"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psub_w; // "86.mmx.psub.w"
}
break;
}
break;
}
break;
case 's': // 16 strings to match.
if (NameR.substr(4, 2) != "se")
break;
switch (NameR[6]) {
default: break;
case '.': // 13 strings to match.
switch (NameR[7]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(8, 5) != "dd.ss")
break;
return Intrinsic::x86_sse_add_ss; // "86.sse.add.ss"
case 'c': // 2 strings to match.
if (NameR.substr(8, 3) != "mp.")
break;
switch (NameR[11]) {
default: break;
case 'p': // 1 string to match.
if (NameR[12] != 's')
break;
return Intrinsic::x86_sse_cmp_ps; // "86.sse.cmp.ps"
case 's': // 1 string to match.
if (NameR[12] != 's')
break;
return Intrinsic::x86_sse_cmp_ss; // "86.sse.cmp.ss"
}
break;
case 'd': // 1 string to match.
if (NameR.substr(8, 5) != "iv.ss")
break;
return Intrinsic::x86_sse_div_ss; // "86.sse.div.ss"
case 'm': // 5 strings to match.
switch (NameR[8]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(9, 2) != "x.")
break;
switch (NameR[11]) {
default: break;
case 'p': // 1 string to match.
if (NameR[12] != 's')
break;
return Intrinsic::x86_sse_max_ps; // "86.sse.max.ps"
case 's': // 1 string to match.
if (NameR[12] != 's')
break;
return Intrinsic::x86_sse_max_ss; // "86.sse.max.ss"
}
break;
case 'i': // 2 strings to match.
if (NameR.substr(9, 2) != "n.")
break;
switch (NameR[11]) {
default: break;
case 'p': // 1 string to match.
if (NameR[12] != 's')
break;
return Intrinsic::x86_sse_min_ps; // "86.sse.min.ps"
case 's': // 1 string to match.
if (NameR[12] != 's')
break;
return Intrinsic::x86_sse_min_ss; // "86.sse.min.ss"
}
break;
case 'u': // 1 string to match.
if (NameR.substr(9, 4) != "l.ss")
break;
return Intrinsic::x86_sse_mul_ss; // "86.sse.mul.ss"
}
break;
case 'r': // 2 strings to match.
if (NameR.substr(8, 3) != "cp.")
break;
switch (NameR[11]) {
default: break;
case 'p': // 1 string to match.
if (NameR[12] != 's')
break;
return Intrinsic::x86_sse_rcp_ps; // "86.sse.rcp.ps"
case 's': // 1 string to match.
if (NameR[12] != 's')
break;
return Intrinsic::x86_sse_rcp_ss; // "86.sse.rcp.ss"
}
break;
case 's': // 2 strings to match.
switch (NameR[8]) {
default: break;
case 'f': // 1 string to match.
if (NameR.substr(9, 4) != "ence")
break;
return Intrinsic::x86_sse_sfence; // "86.sse.sfence"
case 'u': // 1 string to match.
if (NameR.substr(9, 4) != "b.ss")
break;
return Intrinsic::x86_sse_sub_ss; // "86.sse.sub.ss"
}
break;
}
break;
case '3': // 1 string to match.
if (NameR.substr(7, 6) != ".mwait")
break;
return Intrinsic::x86_sse3_mwait; // "86.sse3.mwait"
case '4': // 2 strings to match.
if (NameR.substr(7, 5) != "1.dpp")
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_dppd; // "86.sse41.dppd"
case 's': // 1 string to match.
return Intrinsic::x86_sse41_dpps; // "86.sse41.dpps"
}
break;
}
break;
}
break;
case 14: // 58 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case '3': // 9 strings to match.
if (NameR.substr(4, 6) != "dnow.p")
break;
switch (NameR[10]) {
default: break;
case 'f': // 8 strings to match.
switch (NameR[11]) {
default: break;
case '2': // 1 string to match.
if (NameR.substr(12, 2) != "id")
break;
return Intrinsic::x86_3dnow_pf2id; // "86.3dnow.pf2id"
case 'a': // 2 strings to match.
switch (NameR[12]) {
default: break;
case 'c': // 1 string to match.
if (NameR[13] != 'c')
break;
return Intrinsic::x86_3dnow_pfacc; // "86.3dnow.pfacc"
case 'd': // 1 string to match.
if (NameR[13] != 'd')
break;
return Intrinsic::x86_3dnow_pfadd; // "86.3dnow.pfadd"
}
break;
case 'm': // 3 strings to match.
switch (NameR[12]) {
default: break;
case 'a': // 1 string to match.
if (NameR[13] != 'x')
break;
return Intrinsic::x86_3dnow_pfmax; // "86.3dnow.pfmax"
case 'i': // 1 string to match.
if (NameR[13] != 'n')
break;
return Intrinsic::x86_3dnow_pfmin; // "86.3dnow.pfmin"
case 'u': // 1 string to match.
if (NameR[13] != 'l')
break;
return Intrinsic::x86_3dnow_pfmul; // "86.3dnow.pfmul"
}
break;
case 'r': // 1 string to match.
if (NameR.substr(12, 2) != "cp")
break;
return Intrinsic::x86_3dnow_pfrcp; // "86.3dnow.pfrcp"
case 's': // 1 string to match.
if (NameR.substr(12, 2) != "ub")
break;
return Intrinsic::x86_3dnow_pfsub; // "86.3dnow.pfsub"
}
break;
case 'i': // 1 string to match.
if (NameR.substr(11, 3) != "2fd")
break;
return Intrinsic::x86_3dnow_pi2fd; // "86.3dnow.pi2fd"
}
break;
case 'm': // 21 strings to match.
if (NameR.substr(4, 4) != "mx.p")
break;
switch (NameR[8]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(9, 4) != "dds.")
break;
switch (NameR[13]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_padds_b; // "86.mmx.padds.b"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_padds_w; // "86.mmx.padds.w"
}
break;
case 'e': // 1 string to match.
if (NameR.substr(9, 5) != "xtr.w")
break;
return Intrinsic::x86_mmx_pextr_w; // "86.mmx.pextr.w"
case 'i': // 1 string to match.
if (NameR.substr(9, 5) != "nsr.w")
break;
return Intrinsic::x86_mmx_pinsr_w; // "86.mmx.pinsr.w"
case 'm': // 6 strings to match.
switch (NameR[9]) {
default: break;
case 'a': // 2 strings to match.
if (NameR[10] != 'x')
break;
switch (NameR[11]) {
default: break;
case 's': // 1 string to match.
if (NameR.substr(12, 2) != ".w")
break;
return Intrinsic::x86_mmx_pmaxs_w; // "86.mmx.pmaxs.w"
case 'u': // 1 string to match.
if (NameR.substr(12, 2) != ".b")
break;
return Intrinsic::x86_mmx_pmaxu_b; // "86.mmx.pmaxu.b"
}
break;
case 'i': // 2 strings to match.
if (NameR[10] != 'n')
break;
switch (NameR[11]) {
default: break;
case 's': // 1 string to match.
if (NameR.substr(12, 2) != ".w")
break;
return Intrinsic::x86_mmx_pmins_w; // "86.mmx.pmins.w"
case 'u': // 1 string to match.
if (NameR.substr(12, 2) != ".b")
break;
return Intrinsic::x86_mmx_pminu_b; // "86.mmx.pminu.b"
}
break;
case 'u': // 2 strings to match.
if (NameR[10] != 'l')
break;
switch (NameR[11]) {
default: break;
case 'h': // 1 string to match.
if (NameR.substr(12, 2) != ".w")
break;
return Intrinsic::x86_mmx_pmulh_w; // "86.mmx.pmulh.w"
case 'l': // 1 string to match.
if (NameR.substr(12, 2) != ".w")
break;
return Intrinsic::x86_mmx_pmull_w; // "86.mmx.pmull.w"
}
break;
}
break;
case 's': // 11 strings to match.
switch (NameR[9]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(10, 4) != "d.bw")
break;
return Intrinsic::x86_mmx_psad_bw; // "86.mmx.psad.bw"
case 'l': // 3 strings to match.
if (NameR.substr(10, 3) != "li.")
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_pslli_d; // "86.mmx.pslli.d"
case 'q': // 1 string to match.
return Intrinsic::x86_mmx_pslli_q; // "86.mmx.pslli.q"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_pslli_w; // "86.mmx.pslli.w"
}
break;
case 'r': // 5 strings to match.
switch (NameR[10]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(11, 2) != "i.")
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_psrai_d; // "86.mmx.psrai.d"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psrai_w; // "86.mmx.psrai.w"
}
break;
case 'l': // 3 strings to match.
if (NameR.substr(11, 2) != "i.")
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_psrli_d; // "86.mmx.psrli.d"
case 'q': // 1 string to match.
return Intrinsic::x86_mmx_psrli_q; // "86.mmx.psrli.q"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psrli_w; // "86.mmx.psrli.w"
}
break;
}
break;
case 'u': // 2 strings to match.
if (NameR.substr(10, 3) != "bs.")
break;
switch (NameR[13]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_psubs_b; // "86.mmx.psubs.b"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psubs_w; // "86.mmx.psubs.w"
}
break;
}
break;
}
break;
case 's': // 28 strings to match.
if (NameR.substr(4, 2) != "se")
break;
switch (NameR[6]) {
default: break;
case '.': // 5 strings to match.
switch (NameR[7]) {
default: break;
case 'l': // 1 string to match.
if (NameR.substr(8, 6) != "dmxcsr")
break;
return Intrinsic::x86_sse_ldmxcsr; // "86.sse.ldmxcsr"
case 'p': // 1 string to match.
if (NameR.substr(8, 6) != "shuf.w")
break;
return Intrinsic::x86_sse_pshuf_w; // "86.sse.pshuf.w"
case 's': // 3 strings to match.
switch (NameR[8]) {
default: break;
case 'q': // 2 strings to match.
if (NameR.substr(9, 3) != "rt.")
break;
switch (NameR[12]) {
default: break;
case 'p': // 1 string to match.
if (NameR[13] != 's')
break;
return Intrinsic::x86_sse_sqrt_ps; // "86.sse.sqrt.ps"
case 's': // 1 string to match.
if (NameR[13] != 's')
break;
return Intrinsic::x86_sse_sqrt_ss; // "86.sse.sqrt.ss"
}
break;
case 't': // 1 string to match.
if (NameR.substr(9, 5) != "mxcsr")
break;
return Intrinsic::x86_sse_stmxcsr; // "86.sse.stmxcsr"
}
break;
}
break;
case '2': // 22 strings to match.
if (NameR[7] != '.')
break;
switch (NameR[8]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(9, 5) != "dd.sd")
break;
return Intrinsic::x86_sse2_add_sd; // "86.sse2.add.sd"
case 'c': // 2 strings to match.
if (NameR.substr(9, 3) != "mp.")
break;
switch (NameR[12]) {
default: break;
case 'p': // 1 string to match.
if (NameR[13] != 'd')
break;
return Intrinsic::x86_sse2_cmp_pd; // "86.sse2.cmp.pd"
case 's': // 1 string to match.
if (NameR[13] != 'd')
break;
return Intrinsic::x86_sse2_cmp_sd; // "86.sse2.cmp.sd"
}
break;
case 'd': // 1 string to match.
if (NameR.substr(9, 5) != "iv.sd")
break;
return Intrinsic::x86_sse2_div_sd; // "86.sse2.div.sd"
case 'l': // 1 string to match.
if (NameR.substr(9, 5) != "fence")
break;
return Intrinsic::x86_sse2_lfence; // "86.sse2.lfence"
case 'm': // 6 strings to match.
switch (NameR[9]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(10, 2) != "x.")
break;
switch (NameR[12]) {
default: break;
case 'p': // 1 string to match.
if (NameR[13] != 'd')
break;
return Intrinsic::x86_sse2_max_pd; // "86.sse2.max.pd"
case 's': // 1 string to match.
if (NameR[13] != 'd')
break;
return Intrinsic::x86_sse2_max_sd; // "86.sse2.max.sd"
}
break;
case 'f': // 1 string to match.
if (NameR.substr(10, 4) != "ence")
break;
return Intrinsic::x86_sse2_mfence; // "86.sse2.mfence"
case 'i': // 2 strings to match.
if (NameR.substr(10, 2) != "n.")
break;
switch (NameR[12]) {
default: break;
case 'p': // 1 string to match.
if (NameR[13] != 'd')
break;
return Intrinsic::x86_sse2_min_pd; // "86.sse2.min.pd"
case 's': // 1 string to match.
if (NameR[13] != 'd')
break;
return Intrinsic::x86_sse2_min_sd; // "86.sse2.min.sd"
}
break;
case 'u': // 1 string to match.
if (NameR.substr(10, 4) != "l.sd")
break;
return Intrinsic::x86_sse2_mul_sd; // "86.sse2.mul.sd"
}
break;
case 'p': // 10 strings to match.
switch (NameR[9]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(10, 3) != "vg.")
break;
switch (NameR[13]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_sse2_pavg_b; // "86.sse2.pavg.b"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_pavg_w; // "86.sse2.pavg.w"
}
break;
case 's': // 8 strings to match.
switch (NameR[10]) {
default: break;
case 'l': // 3 strings to match.
if (NameR.substr(11, 2) != "l.")
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_psll_d; // "86.sse2.psll.d"
case 'q': // 1 string to match.
return Intrinsic::x86_sse2_psll_q; // "86.sse2.psll.q"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_psll_w; // "86.sse2.psll.w"
}
break;
case 'r': // 5 strings to match.
switch (NameR[11]) {
default: break;
case 'a': // 2 strings to match.
if (NameR[12] != '.')
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_psra_d; // "86.sse2.psra.d"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_psra_w; // "86.sse2.psra.w"
}
break;
case 'l': // 3 strings to match.
if (NameR[12] != '.')
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_psrl_d; // "86.sse2.psrl.d"
case 'q': // 1 string to match.
return Intrinsic::x86_sse2_psrl_q; // "86.sse2.psrl.q"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_psrl_w; // "86.sse2.psrl.w"
}
break;
}
break;
}
break;
}
break;
case 's': // 1 string to match.
if (NameR.substr(9, 5) != "ub.sd")
break;
return Intrinsic::x86_sse2_sub_sd; // "86.sse2.sub.sd"
}
break;
case '3': // 1 string to match.
if (NameR.substr(7, 7) != ".ldu.dq")
break;
return Intrinsic::x86_sse3_ldu_dq; // "86.sse3.ldu.dq"
}
break;
}
break;
case 15: // 79 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case '3': // 3 strings to match.
if (NameR.substr(4, 4) != "dnow")
break;
switch (NameR[8]) {
default: break;
case '.': // 1 string to match.
if (NameR.substr(9, 6) != "pfsubr")
break;
return Intrinsic::x86_3dnow_pfsubr; // "86.3dnow.pfsubr"
case 'a': // 2 strings to match.
if (NameR.substr(9, 2) != ".p")
break;
switch (NameR[11]) {
default: break;
case 'f': // 1 string to match.
if (NameR.substr(12, 3) != "2iw")
break;
return Intrinsic::x86_3dnowa_pf2iw; // "86.3dnowa.pf2iw"
case 'i': // 1 string to match.
if (NameR.substr(12, 3) != "2fw")
break;
return Intrinsic::x86_3dnowa_pi2fw; // "86.3dnowa.pi2fw"
}
break;
}
break;
case 'a': // 4 strings to match.
switch (NameR[4]) {
default: break;
case 'e': // 3 strings to match.
if (NameR.substr(5, 7) != "sni.aes")
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(13, 2) != "ec")
break;
return Intrinsic::x86_aesni_aesdec; // "86.aesni.aesdec"
case 'e': // 1 string to match.
if (NameR.substr(13, 2) != "nc")
break;
return Intrinsic::x86_aesni_aesenc; // "86.aesni.aesenc"
case 'i': // 1 string to match.
if (NameR.substr(13, 2) != "mc")
break;
return Intrinsic::x86_aesni_aesimc; // "86.aesni.aesimc"
}
break;
case 'v': // 1 string to match.
if (NameR.substr(5, 10) != "x.vzeroall")
break;
return Intrinsic::x86_avx_vzeroall; // "86.avx.vzeroall"
}
break;
case 'm': // 19 strings to match.
if (NameR.substr(4, 3) != "mx.")
break;
switch (NameR[7]) {
default: break;
case 'm': // 2 strings to match.
switch (NameR[8]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(9, 6) != "skmovq")
break;
return Intrinsic::x86_mmx_maskmovq; // "86.mmx.maskmovq"
case 'o': // 1 string to match.
if (NameR.substr(9, 6) != "vnt.dq")
break;
return Intrinsic::x86_mmx_movnt_dq; // "86.mmx.movnt.dq"
}
break;
case 'p': // 17 strings to match.
switch (NameR[8]) {
default: break;
case 'a': // 5 strings to match.
switch (NameR[9]) {
default: break;
case 'c': // 3 strings to match.
if (NameR[10] != 'k')
break;
switch (NameR[11]) {
default: break;
case 's': // 2 strings to match.
if (NameR[12] != 's')
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
if (NameR[14] != 'w')
break;
return Intrinsic::x86_mmx_packssdw; // "86.mmx.packssdw"
case 'w': // 1 string to match.
if (NameR[14] != 'b')
break;
return Intrinsic::x86_mmx_packsswb; // "86.mmx.packsswb"
}
break;
case 'u': // 1 string to match.
if (NameR.substr(12, 3) != "swb")
break;
return Intrinsic::x86_mmx_packuswb; // "86.mmx.packuswb"
}
break;
case 'd': // 2 strings to match.
if (NameR.substr(10, 4) != "dus.")
break;
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_paddus_b; // "86.mmx.paddus.b"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_paddus_w; // "86.mmx.paddus.w"
}
break;
}
break;
case 'c': // 6 strings to match.
if (NameR.substr(9, 2) != "mp")
break;
switch (NameR[11]) {
default: break;
case 'e': // 3 strings to match.
if (NameR.substr(12, 2) != "q.")
break;
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_pcmpeq_b; // "86.mmx.pcmpeq.b"
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_pcmpeq_d; // "86.mmx.pcmpeq.d"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_pcmpeq_w; // "86.mmx.pcmpeq.w"
}
break;
case 'g': // 3 strings to match.
if (NameR.substr(12, 2) != "t.")
break;
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_pcmpgt_b; // "86.mmx.pcmpgt.b"
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_pcmpgt_d; // "86.mmx.pcmpgt.d"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_pcmpgt_w; // "86.mmx.pcmpgt.w"
}
break;
}
break;
case 'm': // 4 strings to match.
switch (NameR[9]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(10, 5) != "dd.wd")
break;
return Intrinsic::x86_mmx_pmadd_wd; // "86.mmx.pmadd.wd"
case 'o': // 1 string to match.
if (NameR.substr(10, 5) != "vmskb")
break;
return Intrinsic::x86_mmx_pmovmskb; // "86.mmx.pmovmskb"
case 'u': // 2 strings to match.
if (NameR[10] != 'l')
break;
switch (NameR[11]) {
default: break;
case 'h': // 1 string to match.
if (NameR.substr(12, 3) != "u.w")
break;
return Intrinsic::x86_mmx_pmulhu_w; // "86.mmx.pmulhu.w"
case 'u': // 1 string to match.
if (NameR.substr(12, 3) != ".dq")
break;
return Intrinsic::x86_mmx_pmulu_dq; // "86.mmx.pmulu.dq"
}
break;
}
break;
case 's': // 2 strings to match.
if (NameR.substr(9, 5) != "ubus.")
break;
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_psubus_b; // "86.mmx.psubus.b"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psubus_w; // "86.mmx.psubus.w"
}
break;
}
break;
}
break;
case 's': // 53 strings to match.
if (NameR[4] != 's')
break;
switch (NameR[5]) {
default: break;
case 'e': // 50 strings to match.
switch (NameR[6]) {
default: break;
case '.': // 8 strings to match.
switch (NameR[7]) {
default: break;
case 'c': // 6 strings to match.
if (NameR.substr(8, 2) != "vt")
break;
switch (NameR[10]) {
default: break;
case 'p': // 4 strings to match.
switch (NameR[11]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(12, 3) != "2pi")
break;
return Intrinsic::x86_sse_cvtpd2pi; // "86.sse.cvtpd2pi"
case 'i': // 2 strings to match.
if (NameR.substr(12, 2) != "2p")
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse_cvtpi2pd; // "86.sse.cvtpi2pd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_cvtpi2ps; // "86.sse.cvtpi2ps"
}
break;
case 's': // 1 string to match.
if (NameR.substr(12, 3) != "2pi")
break;
return Intrinsic::x86_sse_cvtps2pi; // "86.sse.cvtps2pi"
}
break;
case 's': // 2 strings to match.
switch (NameR[11]) {
default: break;
case 'i': // 1 string to match.
if (NameR.substr(12, 3) != "2ss")
break;
return Intrinsic::x86_sse_cvtsi2ss; // "86.sse.cvtsi2ss"
case 's': // 1 string to match.
if (NameR.substr(12, 3) != "2si")
break;
return Intrinsic::x86_sse_cvtss2si; // "86.sse.cvtss2si"
}
break;
}
break;
case 'r': // 2 strings to match.
if (NameR.substr(8, 5) != "sqrt.")
break;
switch (NameR[13]) {
default: break;
case 'p': // 1 string to match.
if (NameR[14] != 's')
break;
return Intrinsic::x86_sse_rsqrt_ps; // "86.sse.rsqrt.ps"
case 's': // 1 string to match.
if (NameR[14] != 's')
break;
return Intrinsic::x86_sse_rsqrt_ss; // "86.sse.rsqrt.ss"
}
break;
}
break;
case '2': // 23 strings to match.
if (NameR[7] != '.')
break;
switch (NameR[8]) {
default: break;
case 'c': // 1 string to match.
if (NameR.substr(9, 6) != "lflush")
break;
return Intrinsic::x86_sse2_clflush; // "86.sse2.clflush"
case 'p': // 20 strings to match.
switch (NameR[9]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(10, 4) != "dds.")
break;
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_sse2_padds_b; // "86.sse2.padds.b"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_padds_w; // "86.sse2.padds.w"
}
break;
case 'm': // 5 strings to match.
switch (NameR[10]) {
default: break;
case 'a': // 2 strings to match.
if (NameR[11] != 'x')
break;
switch (NameR[12]) {
default: break;
case 's': // 1 string to match.
if (NameR.substr(13, 2) != ".w")
break;
return Intrinsic::x86_sse2_pmaxs_w; // "86.sse2.pmaxs.w"
case 'u': // 1 string to match.
if (NameR.substr(13, 2) != ".b")
break;
return Intrinsic::x86_sse2_pmaxu_b; // "86.sse2.pmaxu.b"
}
break;
case 'i': // 2 strings to match.
if (NameR[11] != 'n')
break;
switch (NameR[12]) {
default: break;
case 's': // 1 string to match.
if (NameR.substr(13, 2) != ".w")
break;
return Intrinsic::x86_sse2_pmins_w; // "86.sse2.pmins.w"
case 'u': // 1 string to match.
if (NameR.substr(13, 2) != ".b")
break;
return Intrinsic::x86_sse2_pminu_b; // "86.sse2.pminu.b"
}
break;
case 'u': // 1 string to match.
if (NameR.substr(11, 4) != "lh.w")
break;
return Intrinsic::x86_sse2_pmulh_w; // "86.sse2.pmulh.w"
}
break;
case 's': // 13 strings to match.
switch (NameR[10]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(11, 4) != "d.bw")
break;
return Intrinsic::x86_sse2_psad_bw; // "86.sse2.psad.bw"
case 'l': // 4 strings to match.
if (NameR[11] != 'l')
break;
switch (NameR[12]) {
default: break;
case '.': // 1 string to match.
if (NameR.substr(13, 2) != "dq")
break;
return Intrinsic::x86_sse2_psll_dq; // "86.sse2.psll.dq"
case 'i': // 3 strings to match.
if (NameR[13] != '.')
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_pslli_d; // "86.sse2.pslli.d"
case 'q': // 1 string to match.
return Intrinsic::x86_sse2_pslli_q; // "86.sse2.pslli.q"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_pslli_w; // "86.sse2.pslli.w"
}
break;
}
break;
case 'r': // 6 strings to match.
switch (NameR[11]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(12, 2) != "i.")
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_psrai_d; // "86.sse2.psrai.d"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_psrai_w; // "86.sse2.psrai.w"
}
break;
case 'l': // 4 strings to match.
switch (NameR[12]) {
default: break;
case '.': // 1 string to match.
if (NameR.substr(13, 2) != "dq")
break;
return Intrinsic::x86_sse2_psrl_dq; // "86.sse2.psrl.dq"
case 'i': // 3 strings to match.
if (NameR[13] != '.')
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_psrli_d; // "86.sse2.psrli.d"
case 'q': // 1 string to match.
return Intrinsic::x86_sse2_psrli_q; // "86.sse2.psrli.q"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_psrli_w; // "86.sse2.psrli.w"
}
break;
}
break;
}
break;
case 'u': // 2 strings to match.
if (NameR.substr(11, 3) != "bs.")
break;
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_sse2_psubs_b; // "86.sse2.psubs.b"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_psubs_w; // "86.sse2.psubs.w"
}
break;
}
break;
}
break;
case 's': // 2 strings to match.
if (NameR.substr(9, 4) != "qrt.")
break;
switch (NameR[13]) {
default: break;
case 'p': // 1 string to match.
if (NameR[14] != 'd')
break;
return Intrinsic::x86_sse2_sqrt_pd; // "86.sse2.sqrt.pd"
case 's': // 1 string to match.
if (NameR[14] != 'd')
break;
return Intrinsic::x86_sse2_sqrt_sd; // "86.sse2.sqrt.sd"
}
break;
}
break;
case '3': // 5 strings to match.
if (NameR[7] != '.')
break;
switch (NameR[8]) {
default: break;
case 'h': // 4 strings to match.
switch (NameR[9]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(10, 4) != "dd.p")
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse3_hadd_pd; // "86.sse3.hadd.pd"
case 's': // 1 string to match.
return Intrinsic::x86_sse3_hadd_ps; // "86.sse3.hadd.ps"
}
break;
case 's': // 2 strings to match.
if (NameR.substr(10, 4) != "ub.p")
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse3_hsub_pd; // "86.sse3.hsub.pd"
case 's': // 1 string to match.
return Intrinsic::x86_sse3_hsub_ps; // "86.sse3.hsub.ps"
}
break;
}
break;
case 'm': // 1 string to match.
if (NameR.substr(9, 6) != "onitor")
break;
return Intrinsic::x86_sse3_monitor; // "86.sse3.monitor"
}
break;
case '4': // 14 strings to match.
if (NameR.substr(7, 3) != "1.p")
break;
switch (NameR[10]) {
default: break;
case 'e': // 3 strings to match.
if (NameR.substr(11, 3) != "xtr")
break;
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_sse41_pextrb; // "86.sse41.pextrb"
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_pextrd; // "86.sse41.pextrd"
case 'q': // 1 string to match.
return Intrinsic::x86_sse41_pextrq; // "86.sse41.pextrq"
}
break;
case 'm': // 9 strings to match.
switch (NameR[11]) {
default: break;
case 'a': // 4 strings to match.
if (NameR[12] != 'x')
break;
switch (NameR[13]) {
default: break;
case 's': // 2 strings to match.
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_sse41_pmaxsb; // "86.sse41.pmaxsb"
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_pmaxsd; // "86.sse41.pmaxsd"
}
break;
case 'u': // 2 strings to match.
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_pmaxud; // "86.sse41.pmaxud"
case 'w': // 1 string to match.
return Intrinsic::x86_sse41_pmaxuw; // "86.sse41.pmaxuw"
}
break;
}
break;
case 'i': // 4 strings to match.
if (NameR[12] != 'n')
break;
switch (NameR[13]) {
default: break;
case 's': // 2 strings to match.
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_sse41_pminsb; // "86.sse41.pminsb"
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_pminsd; // "86.sse41.pminsd"
}
break;
case 'u': // 2 strings to match.
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_pminud; // "86.sse41.pminud"
case 'w': // 1 string to match.
return Intrinsic::x86_sse41_pminuw; // "86.sse41.pminuw"
}
break;
}
break;
case 'u': // 1 string to match.
if (NameR.substr(12, 3) != "ldq")
break;
return Intrinsic::x86_sse41_pmuldq; // "86.sse41.pmuldq"
}
break;
case 't': // 2 strings to match.
if (NameR.substr(11, 3) != "est")
break;
switch (NameR[14]) {
default: break;
case 'c': // 1 string to match.
return Intrinsic::x86_sse41_ptestc; // "86.sse41.ptestc"
case 'z': // 1 string to match.
return Intrinsic::x86_sse41_ptestz; // "86.sse41.ptestz"
}
break;
}
break;
}
break;
case 's': // 3 strings to match.
if (NameR.substr(6, 8) != "e3.pabs.")
break;
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_ssse3_pabs_b; // "86.ssse3.pabs.b"
case 'd': // 1 string to match.
return Intrinsic::x86_ssse3_pabs_d; // "86.ssse3.pabs.d"
case 'w': // 1 string to match.
return Intrinsic::x86_ssse3_pabs_w; // "86.ssse3.pabs.w"
}
break;
}
break;
}
break;
case 16: // 67 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case '3': // 8 strings to match.
if (NameR.substr(4, 4) != "dnow")
break;
switch (NameR[8]) {
default: break;
case '.': // 6 strings to match.
if (NameR[9] != 'p')
break;
switch (NameR[10]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(11, 5) != "vgusb")
break;
return Intrinsic::x86_3dnow_pavgusb; // "86.3dnow.pavgusb"
case 'f': // 4 strings to match.
switch (NameR[11]) {
default: break;
case 'c': // 3 strings to match.
if (NameR.substr(12, 2) != "mp")
break;
switch (NameR[14]) {
default: break;
case 'e': // 1 string to match.
if (NameR[15] != 'q')
break;
return Intrinsic::x86_3dnow_pfcmpeq; // "86.3dnow.pfcmpeq"
case 'g': // 2 strings to match.
switch (NameR[15]) {
default: break;
case 'e': // 1 string to match.
return Intrinsic::x86_3dnow_pfcmpge; // "86.3dnow.pfcmpge"
case 't': // 1 string to match.
return Intrinsic::x86_3dnow_pfcmpgt; // "86.3dnow.pfcmpgt"
}
break;
}
break;
case 'r': // 1 string to match.
if (NameR.substr(12, 4) != "sqrt")
break;
return Intrinsic::x86_3dnow_pfrsqrt; // "86.3dnow.pfrsqrt"
}
break;
case 'm': // 1 string to match.
if (NameR.substr(11, 5) != "ulhrw")
break;
return Intrinsic::x86_3dnow_pmulhrw; // "86.3dnow.pmulhrw"
}
break;
case 'a': // 2 strings to match.
if (NameR.substr(9, 2) != ".p")
break;
switch (NameR[11]) {
default: break;
case 'f': // 1 string to match.
if (NameR.substr(12, 4) != "nacc")
break;
return Intrinsic::x86_3dnowa_pfnacc; // "86.3dnowa.pfnacc"
case 's': // 1 string to match.
if (NameR.substr(12, 4) != "wapd")
break;
return Intrinsic::x86_3dnowa_pswapd; // "86.3dnowa.pswapd"
}
break;
}
break;
case 'a': // 5 strings to match.
if (NameR.substr(4, 3) != "vx.")
break;
switch (NameR[7]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(8, 8) != "p.ps.256")
break;
return Intrinsic::x86_avx_dp_ps_256; // "86.avx.dp.ps.256"
case 'v': // 4 strings to match.
if (NameR.substr(8, 4) != "test")
break;
switch (NameR[12]) {
default: break;
case 'c': // 2 strings to match.
if (NameR.substr(13, 2) != ".p")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_vtestc_pd; // "86.avx.vtestc.pd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_vtestc_ps; // "86.avx.vtestc.ps"
}
break;
case 'z': // 2 strings to match.
if (NameR.substr(13, 2) != ".p")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_vtestz_pd; // "86.avx.vtestz.pd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_vtestz_ps; // "86.avx.vtestz.ps"
}
break;
}
break;
}
break;
case 'm': // 7 strings to match.
if (NameR.substr(4, 4) != "mx.p")
break;
switch (NameR[8]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(9, 7) != "lignr.b")
break;
return Intrinsic::x86_mmx_palignr_b; // "86.mmx.palignr.b"
case 'u': // 6 strings to match.
if (NameR.substr(9, 4) != "npck")
break;
switch (NameR[13]) {
default: break;
case 'h': // 3 strings to match.
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
if (NameR[15] != 'w')
break;
return Intrinsic::x86_mmx_punpckhbw; // "86.mmx.punpckhbw"
case 'd': // 1 string to match.
if (NameR[15] != 'q')
break;
return Intrinsic::x86_mmx_punpckhdq; // "86.mmx.punpckhdq"
case 'w': // 1 string to match.
if (NameR[15] != 'd')
break;
return Intrinsic::x86_mmx_punpckhwd; // "86.mmx.punpckhwd"
}
break;
case 'l': // 3 strings to match.
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
if (NameR[15] != 'w')
break;
return Intrinsic::x86_mmx_punpcklbw; // "86.mmx.punpcklbw"
case 'd': // 1 string to match.
if (NameR[15] != 'q')
break;
return Intrinsic::x86_mmx_punpckldq; // "86.mmx.punpckldq"
case 'w': // 1 string to match.
if (NameR[15] != 'd')
break;
return Intrinsic::x86_mmx_punpcklwd; // "86.mmx.punpcklwd"
}
break;
}
break;
}
break;
case 's': // 47 strings to match.
if (NameR[4] != 's')
break;
switch (NameR[5]) {
default: break;
case 'e': // 39 strings to match.
switch (NameR[6]) {
default: break;
case '.': // 10 strings to match.
switch (NameR[7]) {
default: break;
case 'c': // 8 strings to match.
switch (NameR[8]) {
default: break;
case 'o': // 5 strings to match.
if (NameR.substr(9, 2) != "mi")
break;
switch (NameR[11]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(12, 4) != "q.ss")
break;
return Intrinsic::x86_sse_comieq_ss; // "86.sse.comieq.ss"
case 'g': // 2 strings to match.
switch (NameR[12]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(13, 3) != ".ss")
break;
return Intrinsic::x86_sse_comige_ss; // "86.sse.comige.ss"
case 't': // 1 string to match.
if (NameR.substr(13, 3) != ".ss")
break;
return Intrinsic::x86_sse_comigt_ss; // "86.sse.comigt.ss"
}
break;
case 'l': // 2 strings to match.
switch (NameR[12]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(13, 3) != ".ss")
break;
return Intrinsic::x86_sse_comile_ss; // "86.sse.comile.ss"
case 't': // 1 string to match.
if (NameR.substr(13, 3) != ".ss")
break;
return Intrinsic::x86_sse_comilt_ss; // "86.sse.comilt.ss"
}
break;
}
break;
case 'v': // 3 strings to match.
if (NameR.substr(9, 2) != "tt")
break;
switch (NameR[11]) {
default: break;
case 'p': // 2 strings to match.
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(13, 3) != "2pi")
break;
return Intrinsic::x86_sse_cvttpd2pi; // "86.sse.cvttpd2pi"
case 's': // 1 string to match.
if (NameR.substr(13, 3) != "2pi")
break;
return Intrinsic::x86_sse_cvttps2pi; // "86.sse.cvttps2pi"
}
break;
case 's': // 1 string to match.
if (NameR.substr(12, 4) != "s2si")
break;
return Intrinsic::x86_sse_cvttss2si; // "86.sse.cvttss2si"
}
break;
}
break;
case 'm': // 1 string to match.
if (NameR.substr(8, 8) != "ovmsk.ps")
break;
return Intrinsic::x86_sse_movmsk_ps; // "86.sse.movmsk.ps"
case 's': // 1 string to match.
if (NameR.substr(8, 8) != "toreu.ps")
break;
return Intrinsic::x86_sse_storeu_ps; // "86.sse.storeu.ps"
}
break;
case '2': // 23 strings to match.
if (NameR[7] != '.')
break;
switch (NameR[8]) {
default: break;
case 'c': // 10 strings to match.
if (NameR.substr(9, 2) != "vt")
break;
switch (NameR[11]) {
default: break;
case 'd': // 2 strings to match.
if (NameR.substr(12, 3) != "q2p")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_cvtdq2pd; // "86.sse2.cvtdq2pd"
case 's': // 1 string to match.
return Intrinsic::x86_sse2_cvtdq2ps; // "86.sse2.cvtdq2ps"
}
break;
case 'p': // 4 strings to match.
switch (NameR[12]) {
default: break;
case 'd': // 2 strings to match.
if (NameR[13] != '2')
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
if (NameR[15] != 'q')
break;
return Intrinsic::x86_sse2_cvtpd2dq; // "86.sse2.cvtpd2dq"
case 'p': // 1 string to match.
if (NameR[15] != 's')
break;
return Intrinsic::x86_sse2_cvtpd2ps; // "86.sse2.cvtpd2ps"
}
break;
case 's': // 2 strings to match.
if (NameR[13] != '2')
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
if (NameR[15] != 'q')
break;
return Intrinsic::x86_sse2_cvtps2dq; // "86.sse2.cvtps2dq"
case 'p': // 1 string to match.
if (NameR[15] != 'd')
break;
return Intrinsic::x86_sse2_cvtps2pd; // "86.sse2.cvtps2pd"
}
break;
}
break;
case 's': // 4 strings to match.
switch (NameR[12]) {
default: break;
case 'd': // 2 strings to match.
if (NameR.substr(13, 2) != "2s")
break;
switch (NameR[15]) {
default: break;
case 'i': // 1 string to match.
return Intrinsic::x86_sse2_cvtsd2si; // "86.sse2.cvtsd2si"
case 's': // 1 string to match.
return Intrinsic::x86_sse2_cvtsd2ss; // "86.sse2.cvtsd2ss"
}
break;
case 'i': // 1 string to match.
if (NameR.substr(13, 3) != "2sd")
break;
return Intrinsic::x86_sse2_cvtsi2sd; // "86.sse2.cvtsi2sd"
case 's': // 1 string to match.
if (NameR.substr(13, 3) != "2sd")
break;
return Intrinsic::x86_sse2_cvtss2sd; // "86.sse2.cvtss2sd"
}
break;
}
break;
case 'p': // 13 strings to match.
switch (NameR[9]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(10, 5) != "ddus.")
break;
switch (NameR[15]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_sse2_paddus_b; // "86.sse2.paddus.b"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_paddus_w; // "86.sse2.paddus.w"
}
break;
case 'c': // 6 strings to match.
if (NameR.substr(10, 2) != "mp")
break;
switch (NameR[12]) {
default: break;
case 'e': // 3 strings to match.
if (NameR.substr(13, 2) != "q.")
break;
switch (NameR[15]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_sse2_pcmpeq_b; // "86.sse2.pcmpeq.b"
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_pcmpeq_d; // "86.sse2.pcmpeq.d"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_pcmpeq_w; // "86.sse2.pcmpeq.w"
}
break;
case 'g': // 3 strings to match.
if (NameR.substr(13, 2) != "t.")
break;
switch (NameR[15]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_sse2_pcmpgt_b; // "86.sse2.pcmpgt.b"
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_pcmpgt_d; // "86.sse2.pcmpgt.d"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_pcmpgt_w; // "86.sse2.pcmpgt.w"
}
break;
}
break;
case 'm': // 3 strings to match.
switch (NameR[10]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(11, 5) != "dd.wd")
break;
return Intrinsic::x86_sse2_pmadd_wd; // "86.sse2.pmadd.wd"
case 'u': // 2 strings to match.
if (NameR[11] != 'l')
break;
switch (NameR[12]) {
default: break;
case 'h': // 1 string to match.
if (NameR.substr(13, 3) != "u.w")
break;
return Intrinsic::x86_sse2_pmulhu_w; // "86.sse2.pmulhu.w"
case 'u': // 1 string to match.
if (NameR.substr(13, 3) != ".dq")
break;
return Intrinsic::x86_sse2_pmulu_dq; // "86.sse2.pmulu.dq"
}
break;
}
break;
case 's': // 2 strings to match.
if (NameR.substr(10, 5) != "ubus.")
break;
switch (NameR[15]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_sse2_psubus_b; // "86.sse2.psubus.b"
case 'w': // 1 string to match.
return Intrinsic::x86_sse2_psubus_w; // "86.sse2.psubus.w"
}
break;
}
break;
}
break;
case '4': // 6 strings to match.
switch (NameR[7]) {
default: break;
case '1': // 5 strings to match.
if (NameR[8] != '.')
break;
switch (NameR[9]) {
default: break;
case 'b': // 2 strings to match.
if (NameR.substr(10, 5) != "lendp")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_blendpd; // "86.sse41.blendpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse41_blendps; // "86.sse41.blendps"
}
break;
case 'm': // 1 string to match.
if (NameR.substr(10, 6) != "psadbw")
break;
return Intrinsic::x86_sse41_mpsadbw; // "86.sse41.mpsadbw"
case 'p': // 2 strings to match.
switch (NameR[10]) {
default: break;
case 'b': // 1 string to match.
if (NameR.substr(11, 5) != "lendw")
break;
return Intrinsic::x86_sse41_pblendw; // "86.sse41.pblendw"
case 'c': // 1 string to match.
if (NameR.substr(11, 5) != "mpeqq")
break;
return Intrinsic::x86_sse41_pcmpeqq; // "86.sse41.pcmpeqq"
}
break;
}
break;
case '2': // 1 string to match.
if (NameR.substr(8, 8) != ".pcmpgtq")
break;
return Intrinsic::x86_sse42_pcmpgtq; // "86.sse42.pcmpgtq"
}
break;
}
break;
case 's': // 8 strings to match.
if (NameR.substr(6, 4) != "e3.p")
break;
switch (NameR[10]) {
default: break;
case 'h': // 4 strings to match.
switch (NameR[11]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(12, 3) != "dd.")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_ssse3_phadd_d; // "86.ssse3.phadd.d"
case 'w': // 1 string to match.
return Intrinsic::x86_ssse3_phadd_w; // "86.ssse3.phadd.w"
}
break;
case 's': // 2 strings to match.
if (NameR.substr(12, 3) != "ub.")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_ssse3_phsub_d; // "86.ssse3.phsub.d"
case 'w': // 1 string to match.
return Intrinsic::x86_ssse3_phsub_w; // "86.ssse3.phsub.w"
}
break;
}
break;
case 's': // 4 strings to match.
switch (NameR[11]) {
default: break;
case 'h': // 1 string to match.
if (NameR.substr(12, 4) != "uf.b")
break;
return Intrinsic::x86_ssse3_pshuf_b; // "86.ssse3.pshuf.b"
case 'i': // 3 strings to match.
if (NameR.substr(12, 3) != "gn.")
break;
switch (NameR[15]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_ssse3_psign_b; // "86.ssse3.psign.b"
case 'd': // 1 string to match.
return Intrinsic::x86_ssse3_psign_d; // "86.ssse3.psign.d"
case 'w': // 1 string to match.
return Intrinsic::x86_ssse3_psign_w; // "86.ssse3.psign.w"
}
break;
}
break;
}
break;
}
break;
}
break;
case 17: // 64 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case '3': // 4 strings to match.
if (NameR.substr(4, 4) != "dnow")
break;
switch (NameR[8]) {
default: break;
case '.': // 3 strings to match.
if (NameR.substr(9, 3) != "pfr")
break;
switch (NameR[12]) {
default: break;
case 'c': // 2 strings to match.
if (NameR.substr(13, 3) != "pit")
break;
switch (NameR[16]) {
default: break;
case '1': // 1 string to match.
return Intrinsic::x86_3dnow_pfrcpit1; // "86.3dnow.pfrcpit1"
case '2': // 1 string to match.
return Intrinsic::x86_3dnow_pfrcpit2; // "86.3dnow.pfrcpit2"
}
break;
case 's': // 1 string to match.
if (NameR.substr(13, 4) != "qit1")
break;
return Intrinsic::x86_3dnow_pfrsqit1; // "86.3dnow.pfrsqit1"
}
break;
case 'a': // 1 string to match.
if (NameR.substr(9, 8) != ".pfpnacc")
break;
return Intrinsic::x86_3dnowa_pfpnacc; // "86.3dnowa.pfpnacc"
}
break;
case 'a': // 13 strings to match.
if (NameR.substr(4, 3) != "vx.")
break;
switch (NameR[7]) {
default: break;
case 'c': // 2 strings to match.
if (NameR.substr(8, 4) != "mp.p")
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(13, 4) != ".256")
break;
return Intrinsic::x86_avx_cmp_pd_256; // "86.avx.cmp.pd.256"
case 's': // 1 string to match.
if (NameR.substr(13, 4) != ".256")
break;
return Intrinsic::x86_avx_cmp_ps_256; // "86.avx.cmp.ps.256"
}
break;
case 'l': // 1 string to match.
if (NameR.substr(8, 9) != "du.dq.256")
break;
return Intrinsic::x86_avx_ldu_dq_256; // "86.avx.ldu.dq.256"
case 'm': // 4 strings to match.
switch (NameR[8]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(9, 3) != "x.p")
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(13, 4) != ".256")
break;
return Intrinsic::x86_avx_max_pd_256; // "86.avx.max.pd.256"
case 's': // 1 string to match.
if (NameR.substr(13, 4) != ".256")
break;
return Intrinsic::x86_avx_max_ps_256; // "86.avx.max.ps.256"
}
break;
case 'i': // 2 strings to match.
if (NameR.substr(9, 3) != "n.p")
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(13, 4) != ".256")
break;
return Intrinsic::x86_avx_min_pd_256; // "86.avx.min.pd.256"
case 's': // 1 string to match.
if (NameR.substr(13, 4) != ".256")
break;
return Intrinsic::x86_avx_min_ps_256; // "86.avx.min.ps.256"
}
break;
}
break;
case 'p': // 2 strings to match.
if (NameR.substr(8, 4) != "test")
break;
switch (NameR[12]) {
default: break;
case 'c': // 1 string to match.
if (NameR.substr(13, 4) != ".256")
break;
return Intrinsic::x86_avx_ptestc_256; // "86.avx.ptestc.256"
case 'z': // 1 string to match.
if (NameR.substr(13, 4) != ".256")
break;
return Intrinsic::x86_avx_ptestz_256; // "86.avx.ptestz.256"
}
break;
case 'r': // 1 string to match.
if (NameR.substr(8, 9) != "cp.ps.256")
break;
return Intrinsic::x86_avx_rcp_ps_256; // "86.avx.rcp.ps.256"
case 'v': // 3 strings to match.
switch (NameR[8]) {
default: break;
case 'p': // 2 strings to match.
if (NameR.substr(9, 7) != "ermil.p")
break;
switch (NameR[16]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_vpermil_pd; // "86.avx.vpermil.pd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_vpermil_ps; // "86.avx.vpermil.ps"
}
break;
case 'z': // 1 string to match.
if (NameR.substr(9, 8) != "eroupper")
break;
return Intrinsic::x86_avx_vzeroupper; // "86.avx.vzeroupper"
}
break;
}
break;
case 's': // 47 strings to match.
if (NameR[4] != 's')
break;
switch (NameR[5]) {
default: break;
case 'e': // 45 strings to match.
switch (NameR[6]) {
default: break;
case '.': // 8 strings to match.
switch (NameR[7]) {
default: break;
case 'c': // 3 strings to match.
switch (NameR[8]) {
default: break;
case 'o': // 1 string to match.
if (NameR.substr(9, 8) != "mineq.ss")
break;
return Intrinsic::x86_sse_comineq_ss; // "86.sse.comineq.ss"
case 'v': // 2 strings to match.
if (NameR.substr(9, 2) != "ts")
break;
switch (NameR[11]) {
default: break;
case 'i': // 1 string to match.
if (NameR.substr(12, 5) != "642ss")
break;
return Intrinsic::x86_sse_cvtsi642ss; // "86.sse.cvtsi642ss"
case 's': // 1 string to match.
if (NameR.substr(12, 5) != "2si64")
break;
return Intrinsic::x86_sse_cvtss2si64; // "86.sse.cvtss2si64"
}
break;
}
break;
case 'u': // 5 strings to match.
if (NameR.substr(8, 4) != "comi")
break;
switch (NameR[12]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(13, 4) != "q.ss")
break;
return Intrinsic::x86_sse_ucomieq_ss; // "86.sse.ucomieq.ss"
case 'g': // 2 strings to match.
switch (NameR[13]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(14, 3) != ".ss")
break;
return Intrinsic::x86_sse_ucomige_ss; // "86.sse.ucomige.ss"
case 't': // 1 string to match.
if (NameR.substr(14, 3) != ".ss")
break;
return Intrinsic::x86_sse_ucomigt_ss; // "86.sse.ucomigt.ss"
}
break;
case 'l': // 2 strings to match.
switch (NameR[13]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(14, 3) != ".ss")
break;
return Intrinsic::x86_sse_ucomile_ss; // "86.sse.ucomile.ss"
case 't': // 1 string to match.
if (NameR.substr(14, 3) != ".ss")
break;
return Intrinsic::x86_sse_ucomilt_ss; // "86.sse.ucomilt.ss"
}
break;
}
break;
}
break;
case '2': // 12 strings to match.
if (NameR[7] != '.')
break;
switch (NameR[8]) {
default: break;
case 'c': // 8 strings to match.
switch (NameR[9]) {
default: break;
case 'o': // 5 strings to match.
if (NameR.substr(10, 2) != "mi")
break;
switch (NameR[12]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(13, 4) != "q.sd")
break;
return Intrinsic::x86_sse2_comieq_sd; // "86.sse2.comieq.sd"
case 'g': // 2 strings to match.
switch (NameR[13]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(14, 3) != ".sd")
break;
return Intrinsic::x86_sse2_comige_sd; // "86.sse2.comige.sd"
case 't': // 1 string to match.
if (NameR.substr(14, 3) != ".sd")
break;
return Intrinsic::x86_sse2_comigt_sd; // "86.sse2.comigt.sd"
}
break;
case 'l': // 2 strings to match.
switch (NameR[13]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(14, 3) != ".sd")
break;
return Intrinsic::x86_sse2_comile_sd; // "86.sse2.comile.sd"
case 't': // 1 string to match.
if (NameR.substr(14, 3) != ".sd")
break;
return Intrinsic::x86_sse2_comilt_sd; // "86.sse2.comilt.sd"
}
break;
}
break;
case 'v': // 3 strings to match.
if (NameR.substr(10, 2) != "tt")
break;
switch (NameR[12]) {
default: break;
case 'p': // 2 strings to match.
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(14, 3) != "2dq")
break;
return Intrinsic::x86_sse2_cvttpd2dq; // "86.sse2.cvttpd2dq"
case 's': // 1 string to match.
if (NameR.substr(14, 3) != "2dq")
break;
return Intrinsic::x86_sse2_cvttps2dq; // "86.sse2.cvttps2dq"
}
break;
case 's': // 1 string to match.
if (NameR.substr(13, 4) != "d2si")
break;
return Intrinsic::x86_sse2_cvttsd2si; // "86.sse2.cvttsd2si"
}
break;
}
break;
case 'm': // 1 string to match.
if (NameR.substr(9, 8) != "ovmsk.pd")
break;
return Intrinsic::x86_sse2_movmsk_pd; // "86.sse2.movmsk.pd"
case 's': // 3 strings to match.
if (NameR.substr(9, 4) != "tore")
break;
switch (NameR[13]) {
default: break;
case 'l': // 1 string to match.
if (NameR.substr(14, 3) != ".dq")
break;
return Intrinsic::x86_sse2_storel_dq; // "86.sse2.storel.dq"
case 'u': // 2 strings to match.
if (NameR[14] != '.')
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
if (NameR[16] != 'q')
break;
return Intrinsic::x86_sse2_storeu_dq; // "86.sse2.storeu.dq"
case 'p': // 1 string to match.
if (NameR[16] != 'd')
break;
return Intrinsic::x86_sse2_storeu_pd; // "86.sse2.storeu.pd"
}
break;
}
break;
}
break;
case '3': // 2 strings to match.
if (NameR.substr(7, 9) != ".addsub.p")
break;
switch (NameR[16]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse3_addsub_pd; // "86.sse3.addsub.pd"
case 's': // 1 string to match.
return Intrinsic::x86_sse3_addsub_ps; // "86.sse3.addsub.ps"
}
break;
case '4': // 23 strings to match.
if (NameR.substr(7, 2) != "1.")
break;
switch (NameR[9]) {
default: break;
case 'b': // 2 strings to match.
if (NameR.substr(10, 6) != "lendvp")
break;
switch (NameR[16]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_blendvpd; // "86.sse41.blendvpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse41_blendvps; // "86.sse41.blendvps"
}
break;
case 'i': // 1 string to match.
if (NameR.substr(10, 7) != "nsertps")
break;
return Intrinsic::x86_sse41_insertps; // "86.sse41.insertps"
case 'm': // 1 string to match.
if (NameR.substr(10, 7) != "ovntdqa")
break;
return Intrinsic::x86_sse41_movntdqa; // "86.sse41.movntdqa"
case 'p': // 15 strings to match.
switch (NameR[10]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(11, 6) != "ckusdw")
break;
return Intrinsic::x86_sse41_packusdw; // "86.sse41.packusdw"
case 'b': // 1 string to match.
if (NameR.substr(11, 6) != "lendvb")
break;
return Intrinsic::x86_sse41_pblendvb; // "86.sse41.pblendvb"
case 'm': // 12 strings to match.
if (NameR.substr(11, 2) != "ov")
break;
switch (NameR[13]) {
default: break;
case 's': // 6 strings to match.
if (NameR[14] != 'x')
break;
switch (NameR[15]) {
default: break;
case 'b': // 3 strings to match.
switch (NameR[16]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_pmovsxbd; // "86.sse41.pmovsxbd"
case 'q': // 1 string to match.
return Intrinsic::x86_sse41_pmovsxbq; // "86.sse41.pmovsxbq"
case 'w': // 1 string to match.
return Intrinsic::x86_sse41_pmovsxbw; // "86.sse41.pmovsxbw"
}
break;
case 'd': // 1 string to match.
if (NameR[16] != 'q')
break;
return Intrinsic::x86_sse41_pmovsxdq; // "86.sse41.pmovsxdq"
case 'w': // 2 strings to match.
switch (NameR[16]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_pmovsxwd; // "86.sse41.pmovsxwd"
case 'q': // 1 string to match.
return Intrinsic::x86_sse41_pmovsxwq; // "86.sse41.pmovsxwq"
}
break;
}
break;
case 'z': // 6 strings to match.
if (NameR[14] != 'x')
break;
switch (NameR[15]) {
default: break;
case 'b': // 3 strings to match.
switch (NameR[16]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_pmovzxbd; // "86.sse41.pmovzxbd"
case 'q': // 1 string to match.
return Intrinsic::x86_sse41_pmovzxbq; // "86.sse41.pmovzxbq"
case 'w': // 1 string to match.
return Intrinsic::x86_sse41_pmovzxbw; // "86.sse41.pmovzxbw"
}
break;
case 'd': // 1 string to match.
if (NameR[16] != 'q')
break;
return Intrinsic::x86_sse41_pmovzxdq; // "86.sse41.pmovzxdq"
case 'w': // 2 strings to match.
switch (NameR[16]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_pmovzxwd; // "86.sse41.pmovzxwd"
case 'q': // 1 string to match.
return Intrinsic::x86_sse41_pmovzxwq; // "86.sse41.pmovzxwq"
}
break;
}
break;
}
break;
case 't': // 1 string to match.
if (NameR.substr(11, 6) != "estnzc")
break;
return Intrinsic::x86_sse41_ptestnzc; // "86.sse41.ptestnzc"
}
break;
case 'r': // 4 strings to match.
if (NameR.substr(10, 5) != "ound.")
break;
switch (NameR[15]) {
default: break;
case 'p': // 2 strings to match.
switch (NameR[16]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_round_pd; // "86.sse41.round.pd"
case 's': // 1 string to match.
return Intrinsic::x86_sse41_round_ps; // "86.sse41.round.ps"
}
break;
case 's': // 2 strings to match.
switch (NameR[16]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_round_sd; // "86.sse41.round.sd"
case 's': // 1 string to match.
return Intrinsic::x86_sse41_round_ss; // "86.sse41.round.ss"
}
break;
}
break;
}
break;
}
break;
case 's': // 2 strings to match.
if (NameR.substr(6, 5) != "e3.ph")
break;
switch (NameR[11]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(12, 5) != "dd.sw")
break;
return Intrinsic::x86_ssse3_phadd_sw; // "86.ssse3.phadd.sw"
case 's': // 1 string to match.
if (NameR.substr(12, 5) != "ub.sw")
break;
return Intrinsic::x86_ssse3_phsub_sw; // "86.ssse3.phsub.sw"
}
break;
}
break;
}
break;
case 18: // 23 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case 'a': // 10 strings to match.
if (NameR.substr(4, 3) != "vx.")
break;
switch (NameR[7]) {
default: break;
case 'h': // 4 strings to match.
switch (NameR[8]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(9, 4) != "dd.p")
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(14, 4) != ".256")
break;
return Intrinsic::x86_avx_hadd_pd_256; // "86.avx.hadd.pd.256"
case 's': // 1 string to match.
if (NameR.substr(14, 4) != ".256")
break;
return Intrinsic::x86_avx_hadd_ps_256; // "86.avx.hadd.ps.256"
}
break;
case 's': // 2 strings to match.
if (NameR.substr(9, 4) != "ub.p")
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(14, 4) != ".256")
break;
return Intrinsic::x86_avx_hsub_pd_256; // "86.avx.hsub.pd.256"
case 's': // 1 string to match.
if (NameR.substr(14, 4) != ".256")
break;
return Intrinsic::x86_avx_hsub_ps_256; // "86.avx.hsub.ps.256"
}
break;
}
break;
case 'm': // 2 strings to match.
if (NameR.substr(8, 9) != "askload.p")
break;
switch (NameR[17]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_maskload_pd; // "86.avx.maskload.pd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_maskload_ps; // "86.avx.maskload.ps"
}
break;
case 's': // 2 strings to match.
if (NameR.substr(8, 5) != "qrt.p")
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(14, 4) != ".256")
break;
return Intrinsic::x86_avx_sqrt_pd_256; // "86.avx.sqrt.pd.256"
case 's': // 1 string to match.
if (NameR.substr(14, 4) != ".256")
break;
return Intrinsic::x86_avx_sqrt_ps_256; // "86.avx.sqrt.ps.256"
}
break;
case 'v': // 2 strings to match.
if (NameR.substr(8, 9) != "testnzc.p")
break;
switch (NameR[17]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_vtestnzc_pd; // "86.avx.vtestnzc.pd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_vtestnzc_ps; // "86.avx.vtestnzc.ps"
}
break;
}
break;
case 's': // 13 strings to match.
if (NameR.substr(4, 2) != "se")
break;
switch (NameR[6]) {
default: break;
case '.': // 2 strings to match.
switch (NameR[7]) {
default: break;
case 'c': // 1 string to match.
if (NameR.substr(8, 10) != "vttss2si64")
break;
return Intrinsic::x86_sse_cvttss2si64; // "86.sse.cvttss2si64"
case 'u': // 1 string to match.
if (NameR.substr(8, 10) != "comineq.ss")
break;
return Intrinsic::x86_sse_ucomineq_ss; // "86.sse.ucomineq.ss"
}
break;
case '2': // 10 strings to match.
if (NameR[7] != '.')
break;
switch (NameR[8]) {
default: break;
case 'c': // 3 strings to match.
switch (NameR[9]) {
default: break;
case 'o': // 1 string to match.
if (NameR.substr(10, 8) != "mineq.sd")
break;
return Intrinsic::x86_sse2_comineq_sd; // "86.sse2.comineq.sd"
case 'v': // 2 strings to match.
if (NameR.substr(10, 2) != "ts")
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(13, 5) != "2si64")
break;
return Intrinsic::x86_sse2_cvtsd2si64; // "86.sse2.cvtsd2si64"
case 'i': // 1 string to match.
if (NameR.substr(13, 5) != "642sd")
break;
return Intrinsic::x86_sse2_cvtsi642sd; // "86.sse2.cvtsi642sd"
}
break;
}
break;
case 'p': // 2 strings to match.
if (NameR[9] != 's')
break;
switch (NameR[10]) {
default: break;
case 'l': // 1 string to match.
if (NameR.substr(11, 7) != "l.dq.bs")
break;
return Intrinsic::x86_sse2_psll_dq_bs; // "86.sse2.psll.dq.bs"
case 'r': // 1 string to match.
if (NameR.substr(11, 7) != "l.dq.bs")
break;
return Intrinsic::x86_sse2_psrl_dq_bs; // "86.sse2.psrl.dq.bs"
}
break;
case 'u': // 5 strings to match.
if (NameR.substr(9, 4) != "comi")
break;
switch (NameR[13]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(14, 4) != "q.sd")
break;
return Intrinsic::x86_sse2_ucomieq_sd; // "86.sse2.ucomieq.sd"
case 'g': // 2 strings to match.
switch (NameR[14]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(15, 3) != ".sd")
break;
return Intrinsic::x86_sse2_ucomige_sd; // "86.sse2.ucomige.sd"
case 't': // 1 string to match.
if (NameR.substr(15, 3) != ".sd")
break;
return Intrinsic::x86_sse2_ucomigt_sd; // "86.sse2.ucomigt.sd"
}
break;
case 'l': // 2 strings to match.
switch (NameR[14]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(15, 3) != ".sd")
break;
return Intrinsic::x86_sse2_ucomile_sd; // "86.sse2.ucomile.sd"
case 't': // 1 string to match.
if (NameR.substr(15, 3) != ".sd")
break;
return Intrinsic::x86_sse2_ucomilt_sd; // "86.sse2.ucomilt.sd"
}
break;
}
break;
}
break;
case '4': // 1 string to match.
if (NameR.substr(7, 11) != "1.extractps")
break;
return Intrinsic::x86_sse41_extractps; // "86.sse41.extractps"
}
break;
}
break;
case 19: // 27 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case 'a': // 17 strings to match.
switch (NameR[4]) {
default: break;
case 'e': // 2 strings to match.
if (NameR.substr(5, 7) != "sni.aes")
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(13, 6) != "eclast")
break;
return Intrinsic::x86_aesni_aesdeclast; // "86.aesni.aesdeclast"
case 'e': // 1 string to match.
if (NameR.substr(13, 6) != "nclast")
break;
return Intrinsic::x86_aesni_aesenclast; // "86.aesni.aesenclast"
}
break;
case 'v': // 15 strings to match.
if (NameR.substr(5, 2) != "x.")
break;
switch (NameR[7]) {
default: break;
case 'b': // 2 strings to match.
if (NameR.substr(8, 6) != "lend.p")
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(15, 4) != ".256")
break;
return Intrinsic::x86_avx_blend_pd_256; // "86.avx.blend.pd.256"
case 's': // 1 string to match.
if (NameR.substr(15, 4) != ".256")
break;
return Intrinsic::x86_avx_blend_ps_256; // "86.avx.blend.ps.256"
}
break;
case 'l': // 3 strings to match.
if (NameR.substr(8, 5) != "oadu.")
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(14, 5) != "q.256")
break;
return Intrinsic::x86_avx_loadu_dq_256; // "86.avx.loadu.dq.256"
case 'p': // 2 strings to match.
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(15, 4) != ".256")
break;
return Intrinsic::x86_avx_loadu_pd_256; // "86.avx.loadu.pd.256"
case 's': // 1 string to match.
if (NameR.substr(15, 4) != ".256")
break;
return Intrinsic::x86_avx_loadu_ps_256; // "86.avx.loadu.ps.256"
}
break;
}
break;
case 'm': // 5 strings to match.
switch (NameR[8]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(9, 9) != "skstore.p")
break;
switch (NameR[18]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_maskstore_pd; // "86.avx.maskstore.pd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_maskstore_ps; // "86.avx.maskstore.ps"
}
break;
case 'o': // 3 strings to match.
if (NameR.substr(9, 4) != "vnt.")
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(14, 5) != "q.256")
break;
return Intrinsic::x86_avx_movnt_dq_256; // "86.avx.movnt.dq.256"
case 'p': // 2 strings to match.
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(15, 4) != ".256")
break;
return Intrinsic::x86_avx_movnt_pd_256; // "86.avx.movnt.pd.256"
case 's': // 1 string to match.
if (NameR.substr(15, 4) != ".256")
break;
return Intrinsic::x86_avx_movnt_ps_256; // "86.avx.movnt.ps.256"
}
break;
}
break;
}
break;
case 'p': // 1 string to match.
if (NameR.substr(8, 11) != "testnzc.256")
break;
return Intrinsic::x86_avx_ptestnzc_256; // "86.avx.ptestnzc.256"
case 'r': // 3 strings to match.
switch (NameR[8]) {
default: break;
case 'o': // 2 strings to match.
if (NameR.substr(9, 5) != "und.p")
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(15, 4) != ".256")
break;
return Intrinsic::x86_avx_round_pd_256; // "86.avx.round.pd.256"
case 's': // 1 string to match.
if (NameR.substr(15, 4) != ".256")
break;
return Intrinsic::x86_avx_round_ps_256; // "86.avx.round.ps.256"
}
break;
case 's': // 1 string to match.
if (NameR.substr(9, 10) != "qrt.ps.256")
break;
return Intrinsic::x86_avx_rsqrt_ps_256; // "86.avx.rsqrt.ps.256"
}
break;
case 'v': // 1 string to match.
if (NameR.substr(8, 11) != "broadcastss")
break;
return Intrinsic::x86_avx_vbroadcastss; // "86.avx.vbroadcastss"
}
break;
}
break;
case 's': // 10 strings to match.
if (NameR[4] != 's')
break;
switch (NameR[5]) {
default: break;
case 'e': // 6 strings to match.
switch (NameR[6]) {
default: break;
case '2': // 3 strings to match.
if (NameR[7] != '.')
break;
switch (NameR[8]) {
default: break;
case 'c': // 1 string to match.
if (NameR.substr(9, 10) != "vttsd2si64")
break;
return Intrinsic::x86_sse2_cvttsd2si64; // "86.sse2.cvttsd2si64"
case 'm': // 1 string to match.
if (NameR.substr(9, 10) != "askmov.dqu")
break;
return Intrinsic::x86_sse2_maskmov_dqu; // "86.sse2.maskmov.dqu"
case 'u': // 1 string to match.
if (NameR.substr(9, 10) != "comineq.sd")
break;
return Intrinsic::x86_sse2_ucomineq_sd; // "86.sse2.ucomineq.sd"
}
break;
case '4': // 3 strings to match.
switch (NameR[7]) {
default: break;
case '1': // 1 string to match.
if (NameR.substr(8, 11) != ".phminposuw")
break;
return Intrinsic::x86_sse41_phminposuw; // "86.sse41.phminposuw"
case '2': // 2 strings to match.
if (NameR.substr(8, 7) != ".crc32.")
break;
switch (NameR[15]) {
default: break;
case '3': // 1 string to match.
if (NameR.substr(16, 3) != "2.8")
break;
return Intrinsic::x86_sse42_crc32_32_8; // "86.sse42.crc32.32.8"
case '6': // 1 string to match.
if (NameR.substr(16, 3) != "4.8")
break;
return Intrinsic::x86_sse42_crc32_64_8; // "86.sse42.crc32.64.8"
}
break;
}
break;
}
break;
case 's': // 4 strings to match.
if (NameR.substr(6, 4) != "e3.p")
break;
switch (NameR[10]) {
default: break;
case 'a': // 3 strings to match.
if (NameR.substr(11, 3) != "bs.")
break;
switch (NameR[14]) {
default: break;
case 'b': // 1 string to match.
if (NameR.substr(15, 4) != ".128")
break;
return Intrinsic::x86_ssse3_pabs_b_128; // "86.ssse3.pabs.b.128"
case 'd': // 1 string to match.
if (NameR.substr(15, 4) != ".128")
break;
return Intrinsic::x86_ssse3_pabs_d_128; // "86.ssse3.pabs.d.128"
case 'w': // 1 string to match.
if (NameR.substr(15, 4) != ".128")
break;
return Intrinsic::x86_ssse3_pabs_w_128; // "86.ssse3.pabs.w.128"
}
break;
case 'm': // 1 string to match.
if (NameR.substr(11, 8) != "ul.hr.sw")
break;
return Intrinsic::x86_ssse3_pmul_hr_sw; // "86.ssse3.pmul.hr.sw"
}
break;
}
break;
}
break;
case 20: // 35 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case 'a': // 19 strings to match.
if (NameR.substr(4, 3) != "vx.")
break;
switch (NameR[7]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(8, 7) != "ddsub.p")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_addsub_pd_256; // "86.avx.addsub.pd.256"
case 's': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_addsub_ps_256; // "86.avx.addsub.ps.256"
}
break;
case 'b': // 2 strings to match.
if (NameR.substr(8, 7) != "lendv.p")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_blendv_pd_256; // "86.avx.blendv.pd.256"
case 's': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_blendv_ps_256; // "86.avx.blendv.ps.256"
}
break;
case 'c': // 4 strings to match.
if (NameR.substr(8, 2) != "vt")
break;
switch (NameR[10]) {
default: break;
case '.': // 2 strings to match.
if (NameR[11] != 'p')
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(13, 7) != "2dq.256")
break;
return Intrinsic::x86_avx_cvt_pd2dq_256; // "86.avx.cvt.pd2dq.256"
case 's': // 1 string to match.
if (NameR.substr(13, 7) != "2dq.256")
break;
return Intrinsic::x86_avx_cvt_ps2dq_256; // "86.avx.cvt.ps2dq.256"
}
break;
case 'd': // 2 strings to match.
if (NameR.substr(11, 4) != "q2.p")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_cvtdq2_pd_256; // "86.avx.cvtdq2.pd.256"
case 's': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_cvtdq2_ps_256; // "86.avx.cvtdq2.ps.256"
}
break;
}
break;
case 'm': // 2 strings to match.
if (NameR.substr(8, 7) != "ovmsk.p")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_movmsk_pd_256; // "86.avx.movmsk.pd.256"
case 's': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_movmsk_ps_256; // "86.avx.movmsk.ps.256"
}
break;
case 's': // 3 strings to match.
if (NameR.substr(8, 6) != "toreu.")
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(15, 5) != "q.256")
break;
return Intrinsic::x86_avx_storeu_dq_256; // "86.avx.storeu.dq.256"
case 'p': // 2 strings to match.
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_storeu_pd_256; // "86.avx.storeu.pd.256"
case 's': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_storeu_ps_256; // "86.avx.storeu.ps.256"
}
break;
}
break;
case 'v': // 6 strings to match.
switch (NameR[8]) {
default: break;
case 'p': // 2 strings to match.
if (NameR.substr(9, 10) != "ermilvar.p")
break;
switch (NameR[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_vpermilvar_pd; // "86.avx.vpermilvar.pd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_vpermilvar_ps; // "86.avx.vpermilvar.ps"
}
break;
case 't': // 4 strings to match.
if (NameR.substr(9, 3) != "est")
break;
switch (NameR[12]) {
default: break;
case 'c': // 2 strings to match.
if (NameR.substr(13, 2) != ".p")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_vtestc_pd_256; // "86.avx.vtestc.pd.256"
case 's': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_vtestc_ps_256; // "86.avx.vtestc.ps.256"
}
break;
case 'z': // 2 strings to match.
if (NameR.substr(13, 2) != ".p")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_vtestz_pd_256; // "86.avx.vtestz.pd.256"
case 's': // 1 string to match.
if (NameR.substr(16, 4) != ".256")
break;
return Intrinsic::x86_avx_vtestz_ps_256; // "86.avx.vtestz.ps.256"
}
break;
}
break;
}
break;
}
break;
case 's': // 16 strings to match.
if (NameR[4] != 's')
break;
switch (NameR[5]) {
default: break;
case 'e': // 7 strings to match.
switch (NameR[6]) {
default: break;
case '2': // 4 strings to match.
if (NameR.substr(7, 2) != ".p")
break;
switch (NameR[9]) {
default: break;
case 'a': // 3 strings to match.
if (NameR.substr(10, 2) != "ck")
break;
switch (NameR[12]) {
default: break;
case 's': // 2 strings to match.
if (NameR[13] != 's')
break;
switch (NameR[14]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(15, 5) != "w.128")
break;
return Intrinsic::x86_sse2_packssdw_128; // "86.sse2.packssdw.128"
case 'w': // 1 string to match.
if (NameR.substr(15, 5) != "b.128")
break;
return Intrinsic::x86_sse2_packsswb_128; // "86.sse2.packsswb.128"
}
break;
case 'u': // 1 string to match.
if (NameR.substr(13, 7) != "swb.128")
break;
return Intrinsic::x86_sse2_packuswb_128; // "86.sse2.packuswb.128"
}
break;
case 'm': // 1 string to match.
if (NameR.substr(10, 10) != "ovmskb.128")
break;
return Intrinsic::x86_sse2_pmovmskb_128; // "86.sse2.pmovmskb.128"
}
break;
case '4': // 3 strings to match.
if (NameR.substr(7, 8) != "2.crc32.")
break;
switch (NameR[15]) {
default: break;
case '3': // 2 strings to match.
if (NameR.substr(16, 2) != "2.")
break;
switch (NameR[18]) {
default: break;
case '1': // 1 string to match.
if (NameR[19] != '6')
break;
return Intrinsic::x86_sse42_crc32_32_16; // "86.sse42.crc32.32.16"
case '3': // 1 string to match.
if (NameR[19] != '2')
break;
return Intrinsic::x86_sse42_crc32_32_32; // "86.sse42.crc32.32.32"
}
break;
case '6': // 1 string to match.
if (NameR.substr(16, 4) != "4.64")
break;
return Intrinsic::x86_sse42_crc32_64_64; // "86.sse42.crc32.64.64"
}
break;
}
break;
case 's': // 9 strings to match.
if (NameR.substr(6, 4) != "e3.p")
break;
switch (NameR[10]) {
default: break;
case 'h': // 4 strings to match.
switch (NameR[11]) {
default: break;
case 'a': // 2 strings to match.
if (NameR.substr(12, 3) != "dd.")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(16, 4) != ".128")
break;
return Intrinsic::x86_ssse3_phadd_d_128; // "86.ssse3.phadd.d.128"
case 'w': // 1 string to match.
if (NameR.substr(16, 4) != ".128")
break;
return Intrinsic::x86_ssse3_phadd_w_128; // "86.ssse3.phadd.w.128"
}
break;
case 's': // 2 strings to match.
if (NameR.substr(12, 3) != "ub.")
break;
switch (NameR[15]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(16, 4) != ".128")
break;
return Intrinsic::x86_ssse3_phsub_d_128; // "86.ssse3.phsub.d.128"
case 'w': // 1 string to match.
if (NameR.substr(16, 4) != ".128")
break;
return Intrinsic::x86_ssse3_phsub_w_128; // "86.ssse3.phsub.w.128"
}
break;
}
break;
case 'm': // 1 string to match.
if (NameR.substr(11, 9) != "add.ub.sw")
break;
return Intrinsic::x86_ssse3_pmadd_ub_sw; // "86.ssse3.pmadd.ub.sw"
case 's': // 4 strings to match.
switch (NameR[11]) {
default: break;
case 'h': // 1 string to match.
if (NameR.substr(12, 8) != "uf.b.128")
break;
return Intrinsic::x86_ssse3_pshuf_b_128; // "86.ssse3.pshuf.b.128"
case 'i': // 3 strings to match.
if (NameR.substr(12, 3) != "gn.")
break;
switch (NameR[15]) {
default: break;
case 'b': // 1 string to match.
if (NameR.substr(16, 4) != ".128")
break;
return Intrinsic::x86_ssse3_psign_b_128; // "86.ssse3.psign.b.128"
case 'd': // 1 string to match.
if (NameR.substr(16, 4) != ".128")
break;
return Intrinsic::x86_ssse3_psign_d_128; // "86.ssse3.psign.d.128"
case 'w': // 1 string to match.
if (NameR.substr(16, 4) != ".128")
break;
return Intrinsic::x86_ssse3_psign_w_128; // "86.ssse3.psign.w.128"
}
break;
}
break;
}
break;
}
break;
}
break;
case 21: // 12 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case 'a': // 6 strings to match.
if (NameR.substr(4, 3) != "vx.")
break;
switch (NameR[7]) {
default: break;
case 'c': // 4 strings to match.
if (NameR.substr(8, 2) != "vt")
break;
switch (NameR[10]) {
default: break;
case '.': // 2 strings to match.
if (NameR[11] != 'p')
break;
switch (NameR[12]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(13, 8) != "2.ps.256")
break;
return Intrinsic::x86_avx_cvt_pd2_ps_256; // "86.avx.cvt.pd2.ps.256"
case 's': // 1 string to match.
if (NameR.substr(13, 8) != "2.pd.256")
break;
return Intrinsic::x86_avx_cvt_ps2_pd_256; // "86.avx.cvt.ps2.pd.256"
}
break;
case 't': // 2 strings to match.
if (NameR.substr(11, 2) != ".p")
break;
switch (NameR[13]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(14, 7) != "2dq.256")
break;
return Intrinsic::x86_avx_cvtt_pd2dq_256; // "86.avx.cvtt.pd2dq.256"
case 's': // 1 string to match.
if (NameR.substr(14, 7) != "2dq.256")
break;
return Intrinsic::x86_avx_cvtt_ps2dq_256; // "86.avx.cvtt.ps2dq.256"
}
break;
}
break;
case 'v': // 2 strings to match.
if (NameR.substr(8, 8) != "permil.p")
break;
switch (NameR[16]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(17, 4) != ".256")
break;
return Intrinsic::x86_avx_vpermil_pd_256; // "86.avx.vpermil.pd.256"
case 's': // 1 string to match.
if (NameR.substr(17, 4) != ".256")
break;
return Intrinsic::x86_avx_vpermil_ps_256; // "86.avx.vpermil.ps.256"
}
break;
}
break;
case 's': // 6 strings to match.
if (NameR[4] != 's')
break;
switch (NameR[5]) {
default: break;
case 'e': // 4 strings to match.
if (NameR.substr(6, 7) != "42.pcmp")
break;
switch (NameR[13]) {
default: break;
case 'e': // 2 strings to match.
if (NameR.substr(14, 3) != "str")
break;
switch (NameR[17]) {
default: break;
case 'i': // 1 string to match.
if (NameR.substr(18, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestri128; // "86.sse42.pcmpestri128"
case 'm': // 1 string to match.
if (NameR.substr(18, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestrm128; // "86.sse42.pcmpestrm128"
}
break;
case 'i': // 2 strings to match.
if (NameR.substr(14, 3) != "str")
break;
switch (NameR[17]) {
default: break;
case 'i': // 1 string to match.
if (NameR.substr(18, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistri128; // "86.sse42.pcmpistri128"
case 'm': // 1 string to match.
if (NameR.substr(18, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistrm128; // "86.sse42.pcmpistrm128"
}
break;
}
break;
case 's': // 2 strings to match.
if (NameR.substr(6, 5) != "e3.ph")
break;
switch (NameR[11]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(12, 9) != "dd.sw.128")
break;
return Intrinsic::x86_ssse3_phadd_sw_128; // "86.ssse3.phadd.sw.128"
case 's': // 1 string to match.
if (NameR.substr(12, 9) != "ub.sw.128")
break;
return Intrinsic::x86_ssse3_phsub_sw_128; // "86.ssse3.phsub.sw.128"
}
break;
}
break;
}
break;
case 22: // 14 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case 'a': // 4 strings to match.
if (NameR.substr(4, 3) != "vx.")
break;
switch (NameR[7]) {
default: break;
case 'm': // 2 strings to match.
if (NameR.substr(8, 9) != "askload.p")
break;
switch (NameR[17]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(18, 4) != ".256")
break;
return Intrinsic::x86_avx_maskload_pd_256; // "86.avx.maskload.pd.256"
case 's': // 1 string to match.
if (NameR.substr(18, 4) != ".256")
break;
return Intrinsic::x86_avx_maskload_ps_256; // "86.avx.maskload.ps.256"
}
break;
case 'v': // 2 strings to match.
if (NameR.substr(8, 9) != "testnzc.p")
break;
switch (NameR[17]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(18, 4) != ".256")
break;
return Intrinsic::x86_avx_vtestnzc_pd_256; // "86.avx.vtestnzc.pd.256"
case 's': // 1 string to match.
if (NameR.substr(18, 4) != ".256")
break;
return Intrinsic::x86_avx_vtestnzc_ps_256; // "86.avx.vtestnzc.ps.256"
}
break;
}
break;
case 's': // 10 strings to match.
if (NameR.substr(4, 9) != "se42.pcmp")
break;
switch (NameR[13]) {
default: break;
case 'e': // 5 strings to match.
if (NameR.substr(14, 4) != "stri")
break;
switch (NameR[18]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(19, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestria128; // "86.sse42.pcmpestria128"
case 'c': // 1 string to match.
if (NameR.substr(19, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestric128; // "86.sse42.pcmpestric128"
case 'o': // 1 string to match.
if (NameR.substr(19, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestrio128; // "86.sse42.pcmpestrio128"
case 's': // 1 string to match.
if (NameR.substr(19, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestris128; // "86.sse42.pcmpestris128"
case 'z': // 1 string to match.
if (NameR.substr(19, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestriz128; // "86.sse42.pcmpestriz128"
}
break;
case 'i': // 5 strings to match.
if (NameR.substr(14, 4) != "stri")
break;
switch (NameR[18]) {
default: break;
case 'a': // 1 string to match.
if (NameR.substr(19, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistria128; // "86.sse42.pcmpistria128"
case 'c': // 1 string to match.
if (NameR.substr(19, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistric128; // "86.sse42.pcmpistric128"
case 'o': // 1 string to match.
if (NameR.substr(19, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistrio128; // "86.sse42.pcmpistrio128"
case 's': // 1 string to match.
if (NameR.substr(19, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistris128; // "86.sse42.pcmpistris128"
case 'z': // 1 string to match.
if (NameR.substr(19, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistriz128; // "86.sse42.pcmpistriz128"
}
break;
}
break;
}
break;
case 23: // 4 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case 'a': // 3 strings to match.
if (NameR.substr(4, 3) != "vx.")
break;
switch (NameR[7]) {
default: break;
case 'm': // 2 strings to match.
if (NameR.substr(8, 10) != "askstore.p")
break;
switch (NameR[18]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(19, 4) != ".256")
break;
return Intrinsic::x86_avx_maskstore_pd_256; // "86.avx.maskstore.pd.256"
case 's': // 1 string to match.
if (NameR.substr(19, 4) != ".256")
break;
return Intrinsic::x86_avx_maskstore_ps_256; // "86.avx.maskstore.ps.256"
}
break;
case 'v': // 1 string to match.
if (NameR.substr(8, 15) != "broadcastss.256")
break;
return Intrinsic::x86_avx_vbroadcastss_256; // "86.avx.vbroadcastss.256"
}
break;
case 's': // 1 string to match.
if (NameR.substr(4, 19) != "sse3.pmul.hr.sw.128")
break;
return Intrinsic::x86_ssse3_pmul_hr_sw_128; // "86.ssse3.pmul.hr.sw.128"
}
break;
case 24: // 8 strings to match.
if (NameR.substr(0, 3) != "86.")
break;
switch (NameR[3]) {
default: break;
case 'a': // 7 strings to match.
switch (NameR[4]) {
default: break;
case 'e': // 1 string to match.
if (NameR.substr(5, 19) != "sni.aeskeygenassist")
break;
return Intrinsic::x86_aesni_aeskeygenassist; // "86.aesni.aeskeygenassist"
case 'v': // 6 strings to match.
if (NameR.substr(5, 3) != "x.v")
break;
switch (NameR[8]) {
default: break;
case 'b': // 1 string to match.
if (NameR.substr(9, 15) != "roadcast.sd.256")
break;
return Intrinsic::x86_avx_vbroadcast_sd_256; // "86.avx.vbroadcast.sd.256"
case 'p': // 5 strings to match.
if (NameR.substr(9, 3) != "erm")
break;
switch (NameR[12]) {
default: break;
case '2': // 3 strings to match.
if (NameR.substr(13, 5) != "f128.")
break;
switch (NameR[18]) {
default: break;
case 'p': // 2 strings to match.
switch (NameR[19]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(20, 4) != ".256")
break;
return Intrinsic::x86_avx_vperm2f128_pd_256; // "86.avx.vperm2f128.pd.256"
case 's': // 1 string to match.
if (NameR.substr(20, 4) != ".256")
break;
return Intrinsic::x86_avx_vperm2f128_ps_256; // "86.avx.vperm2f128.ps.256"
}
break;
case 's': // 1 string to match.
if (NameR.substr(19, 5) != "i.256")
break;
return Intrinsic::x86_avx_vperm2f128_si_256; // "86.avx.vperm2f128.si.256"
}
break;
case 'i': // 2 strings to match.
if (NameR.substr(13, 6) != "lvar.p")
break;
switch (NameR[19]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(20, 4) != ".256")
break;
return Intrinsic::x86_avx_vpermilvar_pd_256; // "86.avx.vpermilvar.pd.256"
case 's': // 1 string to match.
if (NameR.substr(20, 4) != ".256")
break;
return Intrinsic::x86_avx_vpermilvar_ps_256; // "86.avx.vpermilvar.ps.256"
}
break;
}
break;
}
break;
}
break;
case 's': // 1 string to match.
if (NameR.substr(4, 20) != "sse3.pmadd.ub.sw.128")
break;
return Intrinsic::x86_ssse3_pmadd_ub_sw_128; // "86.ssse3.pmadd.ub.sw.128"
}
break;
case 25: // 3 strings to match.
if (NameR.substr(0, 19) != "86.avx.vinsertf128.")
break;
switch (NameR[19]) {
default: break;
case 'p': // 2 strings to match.
switch (NameR[20]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(21, 4) != ".256")
break;
return Intrinsic::x86_avx_vinsertf128_pd_256; // "86.avx.vinsertf128.pd.256"
case 's': // 1 string to match.
if (NameR.substr(21, 4) != ".256")
break;
return Intrinsic::x86_avx_vinsertf128_ps_256; // "86.avx.vinsertf128.ps.256"
}
break;
case 's': // 1 string to match.
if (NameR.substr(20, 5) != "i.256")
break;
return Intrinsic::x86_avx_vinsertf128_si_256; // "86.avx.vinsertf128.si.256"
}
break;
case 26: // 3 strings to match.
if (NameR.substr(0, 20) != "86.avx.vextractf128.")
break;
switch (NameR[20]) {
default: break;
case 'p': // 2 strings to match.
switch (NameR[21]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(22, 4) != ".256")
break;
return Intrinsic::x86_avx_vextractf128_pd_256; // "86.avx.vextractf128.pd.256"
case 's': // 1 string to match.
if (NameR.substr(22, 4) != ".256")
break;
return Intrinsic::x86_avx_vextractf128_ps_256; // "86.avx.vextractf128.ps.256"
}
break;
case 's': // 1 string to match.
if (NameR.substr(21, 5) != "i.256")
break;
return Intrinsic::x86_avx_vextractf128_si_256; // "86.avx.vextractf128.si.256"
}
break;
case 28: // 2 strings to match.
if (NameR.substr(0, 23) != "86.avx.vbroadcastf128.p")
break;
switch (NameR[23]) {
default: break;
case 'd': // 1 string to match.
if (NameR.substr(24, 4) != ".256")
break;
return Intrinsic::x86_avx_vbroadcastf128_pd_256; // "86.avx.vbroadcastf128.pd.256"
case 's': // 1 string to match.
if (NameR.substr(24, 4) != ".256")
break;
return Intrinsic::x86_avx_vbroadcastf128_ps_256; // "86.avx.vbroadcastf128.ps.256"
}
break;
}
break; // end of 'x' case.
}
#endif
// Verifier::visitIntrinsicFunctionCall code.
#ifdef GET_INTRINSIC_VERIFIER
switch (ID) {
default: assert(0 && "Invalid intrinsic!");
case Intrinsic::eh_unwind_init: // llvm.eh.unwind.init
case Intrinsic::trap: // llvm.trap
case Intrinsic::x86_avx_vzeroall: // llvm.x86.avx.vzeroall
case Intrinsic::x86_avx_vzeroupper: // llvm.x86.avx.vzeroupper
case Intrinsic::x86_mmx_emms: // llvm.x86.mmx.emms
case Intrinsic::x86_mmx_femms: // llvm.x86.mmx.femms
case Intrinsic::x86_sse2_lfence: // llvm.x86.sse2.lfence
case Intrinsic::x86_sse2_mfence: // llvm.x86.sse2.mfence
case Intrinsic::x86_sse_sfence: // llvm.x86.sse.sfence
VerifyIntrinsicPrototype(ID, IF, 0, 0);
break;
case Intrinsic::memcpy: // llvm.memcpy
case Intrinsic::memmove: // llvm.memmove
VerifyIntrinsicPrototype(ID, IF, 0, 5, MVT::iPTRAny, MVT::iPTRAny, MVT::iAny, MVT::i32, MVT::i1);
break;
case Intrinsic::memset: // llvm.memset
VerifyIntrinsicPrototype(ID, IF, 0, 5, MVT::iPTRAny, MVT::i8, MVT::iAny, MVT::i32, MVT::i1);
break;
case Intrinsic::invariant_end: // llvm.invariant.end
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::i64, MVT::iPTR);
break;
case Intrinsic::eh_sjlj_callsite: // llvm.eh.sjlj.callsite
case Intrinsic::eh_sjlj_dispatch_setup: // llvm.eh.sjlj.dispatch.setup
case Intrinsic::pcmarker: // llvm.pcmarker
VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::i32);
break;
case Intrinsic::x86_sse3_mwait: // llvm.x86.sse3.mwait
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i32, MVT::i32);
break;
case Intrinsic::eh_return_i32: // llvm.eh.return.i32
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i32, MVT::iPTR);
break;
case Intrinsic::eh_return_i64: // llvm.eh.return.i64
case Intrinsic::lifetime_end: // llvm.lifetime.end
case Intrinsic::lifetime_start: // llvm.lifetime.start
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i64, MVT::iPTR);
break;
case Intrinsic::x86_int: // llvm.x86.int
VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::i8);
break;
case Intrinsic::dbg_value: // llvm.dbg.value
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::Metadata, MVT::i64, MVT::Metadata);
break;
case Intrinsic::dbg_declare: // llvm.dbg.declare
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::Metadata, MVT::Metadata);
break;
case Intrinsic::eh_sjlj_functioncontext: // llvm.eh.sjlj.functioncontext
case Intrinsic::eh_sjlj_longjmp: // llvm.eh.sjlj.longjmp
case Intrinsic::stackrestore: // llvm.stackrestore
case Intrinsic::vaend: // llvm.va_end
case Intrinsic::vastart: // llvm.va_start
case Intrinsic::x86_sse2_clflush: // llvm.x86.sse2.clflush
case Intrinsic::x86_sse_ldmxcsr: // llvm.x86.sse.ldmxcsr
case Intrinsic::x86_sse_stmxcsr: // llvm.x86.sse.stmxcsr
VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::iPTR);
break;
case Intrinsic::eh_resume: // llvm.eh.resume
case Intrinsic::longjmp: // llvm.longjmp
case Intrinsic::siglongjmp: // llvm.siglongjmp
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::i32);
break;
case Intrinsic::x86_sse3_monitor: // llvm.x86.sse3.monitor
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::i32, MVT::i32);
break;
case Intrinsic::prefetch: // llvm.prefetch
VerifyIntrinsicPrototype(ID, IF, 0, 4, MVT::iPTR, MVT::i32, MVT::i32, MVT::i32);
break;
case Intrinsic::vacopy: // llvm.va_copy
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR);
break;
case Intrinsic::init_trampoline: // llvm.init.trampoline
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::iPTR, MVT::iPTR);
break;
case Intrinsic::var_annotation: // llvm.var.annotation
VerifyIntrinsicPrototype(ID, IF, 0, 4, MVT::iPTR, MVT::iPTR, MVT::iPTR, MVT::i32);
break;
case Intrinsic::gcwrite: // llvm.gcwrite
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::iPTR, MVT::iPTR);
break;
case Intrinsic::stackprotector: // llvm.stackprotector
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR);
break;
case Intrinsic::x86_sse2_storeu_dq: // llvm.x86.sse2.storeu.dq
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v16i8);
break;
case Intrinsic::x86_sse2_storeu_pd: // llvm.x86.sse2.storeu.pd
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v2f64);
break;
case Intrinsic::x86_avx_maskstore_pd: // llvm.x86.avx.maskstore.pd
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v2f64, MVT::v2f64);
break;
case Intrinsic::x86_avx_storeu_dq_256: // llvm.x86.avx.storeu.dq.256
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v32i8);
break;
case Intrinsic::x86_sse_storeu_ps: // llvm.x86.sse.storeu.ps
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4f32);
break;
case Intrinsic::x86_avx_maskstore_ps: // llvm.x86.avx.maskstore.ps
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v4f32, MVT::v4f32);
break;
case Intrinsic::x86_avx_movnt_pd_256: // llvm.x86.avx.movnt.pd.256
case Intrinsic::x86_avx_storeu_pd_256: // llvm.x86.avx.storeu.pd.256
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4f64);
break;
case Intrinsic::x86_avx_maskstore_pd_256: // llvm.x86.avx.maskstore.pd.256
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v4f64, MVT::v4f64);
break;
case Intrinsic::x86_sse2_storel_dq: // llvm.x86.sse2.storel.dq
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4i32);
break;
case Intrinsic::x86_avx_movnt_dq_256: // llvm.x86.avx.movnt.dq.256
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4i64);
break;
case Intrinsic::x86_avx_movnt_ps_256: // llvm.x86.avx.movnt.ps.256
case Intrinsic::x86_avx_storeu_ps_256: // llvm.x86.avx.storeu.ps.256
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v8f32);
break;
case Intrinsic::x86_avx_maskstore_ps_256: // llvm.x86.avx.maskstore.ps.256
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v8f32, MVT::v8f32);
break;
case Intrinsic::gcroot: // llvm.gcroot
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR);
break;
case Intrinsic::x86_mmx_movnt_dq: // llvm.x86.mmx.movnt.dq
VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::x86mmx);
break;
case Intrinsic::x86_sse2_maskmov_dqu: // llvm.x86.sse2.maskmov.dqu
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::v16i8, MVT::v16i8, MVT::iPTR);
break;
case Intrinsic::x86_mmx_maskmovq: // llvm.x86.mmx.maskmovq
VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::x86mmx, MVT::x86mmx, MVT::iPTR);
break;
case Intrinsic::ptr_annotation: // llvm.ptr.annotation
VerifyIntrinsicPrototype(ID, IF, 1, 4, MVT::iPTRAny, ~0, MVT::iPTR, MVT::iPTR, MVT::i32);
break;
case Intrinsic::sin: // llvm.sin
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
break;
case Intrinsic::cos: // llvm.cos
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
break;
case Intrinsic::pow: // llvm.pow
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::fAny, ~0, ~0);
break;
case Intrinsic::log: // llvm.log
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
break;
case Intrinsic::log10: // llvm.log10
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
break;
case Intrinsic::log2: // llvm.log2
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
break;
case Intrinsic::exp: // llvm.exp
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
break;
case Intrinsic::exp2: // llvm.exp2
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
break;
case Intrinsic::fma: // llvm.fma
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, ~0, ~0, ~0);
break;
case Intrinsic::sqrt: // llvm.sqrt
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
break;
case Intrinsic::powi: // llvm.powi
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::fAny, ~0, MVT::i32);
break;
case Intrinsic::convertff: // llvm.convertff
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, MVT::fAny, MVT::i32, MVT::i32);
break;
case Intrinsic::convertfsi: // llvm.convertfsi
case Intrinsic::convertfui: // llvm.convertfui
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, MVT::iAny, MVT::i32, MVT::i32);
break;
case Intrinsic::expect: // llvm.expect
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iAny, ~0, ~0);
break;
case Intrinsic::bswap: // llvm.bswap
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0);
break;
case Intrinsic::ctpop: // llvm.ctpop
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0);
break;
case Intrinsic::ctlz: // llvm.ctlz
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0);
break;
case Intrinsic::cttz: // llvm.cttz
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0);
break;
case Intrinsic::annotation: // llvm.annotation
VerifyIntrinsicPrototype(ID, IF, 1, 4, MVT::iAny, ~0, MVT::iPTR, MVT::iPTR, MVT::i32);
break;
case Intrinsic::convertsif: // llvm.convertsif
case Intrinsic::convertuif: // llvm.convertuif
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::iAny, MVT::fAny, MVT::i32, MVT::i32);
break;
case Intrinsic::convertss: // llvm.convertss
case Intrinsic::convertsu: // llvm.convertsu
case Intrinsic::convertus: // llvm.convertus
case Intrinsic::convertuu: // llvm.convertuu
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::iAny, MVT::iAny, MVT::i32, MVT::i32);
break;
case Intrinsic::objectsize: // llvm.objectsize
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iAny, MVT::iPTR, MVT::i1);
break;
case Intrinsic::sadd_with_overflow: // llvm.sadd.with.overflow
VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
break;
case Intrinsic::uadd_with_overflow: // llvm.uadd.with.overflow
VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
break;
case Intrinsic::ssub_with_overflow: // llvm.ssub.with.overflow
VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
break;
case Intrinsic::usub_with_overflow: // llvm.usub.with.overflow
VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
break;
case Intrinsic::smul_with_overflow: // llvm.smul.with.overflow
VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
break;
case Intrinsic::umul_with_overflow: // llvm.umul.with.overflow
VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
break;
case Intrinsic::invariant_start: // llvm.invariant.start
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iPTR, MVT::i64, MVT::iPTR);
break;
case Intrinsic::convert_from_fp16: // llvm.convert.from.fp16
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::f32, MVT::i16);
break;
case Intrinsic::convert_to_fp16: // llvm.convert.to.fp16
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i16, MVT::f32);
break;
case Intrinsic::flt_rounds: // llvm.flt.rounds
VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::i32);
break;
case Intrinsic::x86_sse42_crc32_32_16: // llvm.x86.sse42.crc32.32.16
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i16);
break;
case Intrinsic::x86_sse42_crc32_32_32: // llvm.x86.sse42.crc32.32.32
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i32);
break;
case Intrinsic::x86_sse42_crc32_32_8: // llvm.x86.sse42.crc32.32.8
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i8);
break;
case Intrinsic::eh_sjlj_setjmp: // llvm.eh.sjlj.setjmp
case Intrinsic::eh_typeid_for: // llvm.eh.typeid.for
case Intrinsic::setjmp: // llvm.setjmp
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::iPTR);
break;
case Intrinsic::sigsetjmp: // llvm.sigsetjmp
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::iPTR, MVT::i32);
break;
case Intrinsic::eh_selector: // llvm.eh.selector
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::i32, MVT::iPTR, MVT::iPTR, MVT::isVoid);
break;
case Intrinsic::x86_sse2_pmovmskb_128: // llvm.x86.sse2.pmovmskb.128
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v16i8);
break;
case Intrinsic::x86_sse41_pextrb: // llvm.x86.sse41.pextrb
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v16i8, MVT::i32);
break;
case Intrinsic::x86_sse42_pcmpestri128: // llvm.x86.sse42.pcmpestri128
case Intrinsic::x86_sse42_pcmpestria128: // llvm.x86.sse42.pcmpestria128
case Intrinsic::x86_sse42_pcmpestric128: // llvm.x86.sse42.pcmpestric128
case Intrinsic::x86_sse42_pcmpestrio128: // llvm.x86.sse42.pcmpestrio128
case Intrinsic::x86_sse42_pcmpestris128: // llvm.x86.sse42.pcmpestris128
case Intrinsic::x86_sse42_pcmpestriz128: // llvm.x86.sse42.pcmpestriz128
VerifyIntrinsicPrototype(ID, IF, 1, 5, MVT::i32, MVT::v16i8, MVT::i32, MVT::v16i8, MVT::i32, MVT::i8);
break;
case Intrinsic::x86_sse42_pcmpistri128: // llvm.x86.sse42.pcmpistri128
case Intrinsic::x86_sse42_pcmpistria128: // llvm.x86.sse42.pcmpistria128
case Intrinsic::x86_sse42_pcmpistric128: // llvm.x86.sse42.pcmpistric128
case Intrinsic::x86_sse42_pcmpistrio128: // llvm.x86.sse42.pcmpistrio128
case Intrinsic::x86_sse42_pcmpistris128: // llvm.x86.sse42.pcmpistris128
case Intrinsic::x86_sse42_pcmpistriz128: // llvm.x86.sse42.pcmpistriz128
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::i32, MVT::v16i8, MVT::v16i8, MVT::i8);
break;
case Intrinsic::x86_sse2_cvtsd2si: // llvm.x86.sse2.cvtsd2si
case Intrinsic::x86_sse2_cvttsd2si: // llvm.x86.sse2.cvttsd2si
case Intrinsic::x86_sse2_movmsk_pd: // llvm.x86.sse2.movmsk.pd
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v2f64);
break;
case Intrinsic::x86_avx_vtestc_pd: // llvm.x86.avx.vtestc.pd
case Intrinsic::x86_avx_vtestnzc_pd: // llvm.x86.avx.vtestnzc.pd
case Intrinsic::x86_avx_vtestz_pd: // llvm.x86.avx.vtestz.pd
case Intrinsic::x86_sse2_comieq_sd: // llvm.x86.sse2.comieq.sd
case Intrinsic::x86_sse2_comige_sd: // llvm.x86.sse2.comige.sd
case Intrinsic::x86_sse2_comigt_sd: // llvm.x86.sse2.comigt.sd
case Intrinsic::x86_sse2_comile_sd: // llvm.x86.sse2.comile.sd
case Intrinsic::x86_sse2_comilt_sd: // llvm.x86.sse2.comilt.sd
case Intrinsic::x86_sse2_comineq_sd: // llvm.x86.sse2.comineq.sd
case Intrinsic::x86_sse2_ucomieq_sd: // llvm.x86.sse2.ucomieq.sd
case Intrinsic::x86_sse2_ucomige_sd: // llvm.x86.sse2.ucomige.sd
case Intrinsic::x86_sse2_ucomigt_sd: // llvm.x86.sse2.ucomigt.sd
case Intrinsic::x86_sse2_ucomile_sd: // llvm.x86.sse2.ucomile.sd
case Intrinsic::x86_sse2_ucomilt_sd: // llvm.x86.sse2.ucomilt.sd
case Intrinsic::x86_sse2_ucomineq_sd: // llvm.x86.sse2.ucomineq.sd
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v2f64, MVT::v2f64);
break;
case Intrinsic::x86_sse_cvtss2si: // llvm.x86.sse.cvtss2si
case Intrinsic::x86_sse_cvttss2si: // llvm.x86.sse.cvttss2si
case Intrinsic::x86_sse_movmsk_ps: // llvm.x86.sse.movmsk.ps
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v4f32);
break;
case Intrinsic::x86_sse41_extractps: // llvm.x86.sse41.extractps
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f32, MVT::i32);
break;
case Intrinsic::x86_avx_vtestc_ps: // llvm.x86.avx.vtestc.ps
case Intrinsic::x86_avx_vtestnzc_ps: // llvm.x86.avx.vtestnzc.ps
case Intrinsic::x86_avx_vtestz_ps: // llvm.x86.avx.vtestz.ps
case Intrinsic::x86_sse41_ptestc: // llvm.x86.sse41.ptestc
case Intrinsic::x86_sse41_ptestnzc: // llvm.x86.sse41.ptestnzc
case Intrinsic::x86_sse41_ptestz: // llvm.x86.sse41.ptestz
case Intrinsic::x86_sse_comieq_ss: // llvm.x86.sse.comieq.ss
case Intrinsic::x86_sse_comige_ss: // llvm.x86.sse.comige.ss
case Intrinsic::x86_sse_comigt_ss: // llvm.x86.sse.comigt.ss
case Intrinsic::x86_sse_comile_ss: // llvm.x86.sse.comile.ss
case Intrinsic::x86_sse_comilt_ss: // llvm.x86.sse.comilt.ss
case Intrinsic::x86_sse_comineq_ss: // llvm.x86.sse.comineq.ss
case Intrinsic::x86_sse_ucomieq_ss: // llvm.x86.sse.ucomieq.ss
case Intrinsic::x86_sse_ucomige_ss: // llvm.x86.sse.ucomige.ss
case Intrinsic::x86_sse_ucomigt_ss: // llvm.x86.sse.ucomigt.ss
case Intrinsic::x86_sse_ucomile_ss: // llvm.x86.sse.ucomile.ss
case Intrinsic::x86_sse_ucomilt_ss: // llvm.x86.sse.ucomilt.ss
case Intrinsic::x86_sse_ucomineq_ss: // llvm.x86.sse.ucomineq.ss
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f32, MVT::v4f32);
break;
case Intrinsic::x86_avx_movmsk_pd_256: // llvm.x86.avx.movmsk.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v4f64);
break;
case Intrinsic::x86_avx_vtestc_pd_256: // llvm.x86.avx.vtestc.pd.256
case Intrinsic::x86_avx_vtestnzc_pd_256: // llvm.x86.avx.vtestnzc.pd.256
case Intrinsic::x86_avx_vtestz_pd_256: // llvm.x86.avx.vtestz.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f64, MVT::v4f64);
break;
case Intrinsic::x86_sse41_pextrd: // llvm.x86.sse41.pextrd
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4i32, MVT::i32);
break;
case Intrinsic::x86_avx_ptestc_256: // llvm.x86.avx.ptestc.256
case Intrinsic::x86_avx_ptestnzc_256: // llvm.x86.avx.ptestnzc.256
case Intrinsic::x86_avx_ptestz_256: // llvm.x86.avx.ptestz.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4i64, MVT::v4i64);
break;
case Intrinsic::x86_avx_movmsk_ps_256: // llvm.x86.avx.movmsk.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v8f32);
break;
case Intrinsic::x86_avx_vtestc_ps_256: // llvm.x86.avx.vtestc.ps.256
case Intrinsic::x86_avx_vtestnzc_ps_256: // llvm.x86.avx.vtestnzc.ps.256
case Intrinsic::x86_avx_vtestz_ps_256: // llvm.x86.avx.vtestz.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v8f32, MVT::v8f32);
break;
case Intrinsic::x86_mmx_pmovmskb: // llvm.x86.mmx.pmovmskb
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::x86mmx);
break;
case Intrinsic::x86_mmx_pextr_w: // llvm.x86.mmx.pextr.w
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::x86mmx, MVT::i32);
break;
case Intrinsic::readcyclecounter: // llvm.readcyclecounter
VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::i64);
break;
case Intrinsic::x86_sse42_crc32_64_64: // llvm.x86.sse42.crc32.64.64
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::i64, MVT::i64);
break;
case Intrinsic::x86_sse42_crc32_64_8: // llvm.x86.sse42.crc32.64.8
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::i64, MVT::i8);
break;
case Intrinsic::x86_sse2_cvtsd2si64: // llvm.x86.sse2.cvtsd2si64
case Intrinsic::x86_sse2_cvttsd2si64: // llvm.x86.sse2.cvttsd2si64
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i64, MVT::v2f64);
break;
case Intrinsic::x86_sse41_pextrq: // llvm.x86.sse41.pextrq
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::v2i64, MVT::i32);
break;
case Intrinsic::x86_sse_cvtss2si64: // llvm.x86.sse.cvtss2si64
case Intrinsic::x86_sse_cvttss2si64: // llvm.x86.sse.cvttss2si64
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i64, MVT::v4f32);
break;
case Intrinsic::eh_exception: // llvm.eh.exception
case Intrinsic::eh_sjlj_lsda: // llvm.eh.sjlj.lsda
case Intrinsic::stacksave: // llvm.stacksave
VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::iPTR);
break;
case Intrinsic::eh_dwarf_cfa: // llvm.eh.dwarf.cfa
case Intrinsic::frameaddress: // llvm.frameaddress
case Intrinsic::returnaddress: // llvm.returnaddress
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iPTR, MVT::i32);
break;
case Intrinsic::adjust_trampoline: // llvm.adjust.trampoline
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iPTR, MVT::iPTR);
break;
case Intrinsic::gcread: // llvm.gcread
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iPTR, MVT::iPTR, MVT::iPTR);
break;
case Intrinsic::x86_sse3_ldu_dq: // llvm.x86.sse3.ldu.dq
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v16i8, MVT::iPTR);
break;
case Intrinsic::x86_ssse3_pabs_b_128: // llvm.x86.ssse3.pabs.b.128
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v16i8, MVT::v16i8);
break;
case Intrinsic::x86_sse42_pcmpestrm128: // llvm.x86.sse42.pcmpestrm128
VerifyIntrinsicPrototype(ID, IF, 1, 5, MVT::v16i8, MVT::v16i8, MVT::i32, MVT::v16i8, MVT::i32, MVT::i8);
break;
case Intrinsic::x86_sse2_padds_b: // llvm.x86.sse2.padds.b
case Intrinsic::x86_sse2_paddus_b: // llvm.x86.sse2.paddus.b
case Intrinsic::x86_sse2_pavg_b: // llvm.x86.sse2.pavg.b
case Intrinsic::x86_sse2_pcmpeq_b: // llvm.x86.sse2.pcmpeq.b
case Intrinsic::x86_sse2_pcmpgt_b: // llvm.x86.sse2.pcmpgt.b
case Intrinsic::x86_sse2_pmaxu_b: // llvm.x86.sse2.pmaxu.b
case Intrinsic::x86_sse2_pminu_b: // llvm.x86.sse2.pminu.b
case Intrinsic::x86_sse2_psubs_b: // llvm.x86.sse2.psubs.b
case Intrinsic::x86_sse2_psubus_b: // llvm.x86.sse2.psubus.b
case Intrinsic::x86_sse41_pmaxsb: // llvm.x86.sse41.pmaxsb
case Intrinsic::x86_sse41_pminsb: // llvm.x86.sse41.pminsb
case Intrinsic::x86_ssse3_pshuf_b_128: // llvm.x86.ssse3.pshuf.b.128
case Intrinsic::x86_ssse3_psign_b_128: // llvm.x86.ssse3.psign.b.128
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v16i8, MVT::v16i8, MVT::v16i8);
break;
case Intrinsic::x86_sse41_mpsadbw: // llvm.x86.sse41.mpsadbw
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::i32);
break;
case Intrinsic::x86_sse42_pcmpistrm128: // llvm.x86.sse42.pcmpistrm128
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::i8);
break;
case Intrinsic::x86_sse41_pblendvb: // llvm.x86.sse41.pblendvb
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::v16i8);
break;
case Intrinsic::x86_sse2_packsswb_128: // llvm.x86.sse2.packsswb.128
case Intrinsic::x86_sse2_packuswb_128: // llvm.x86.sse2.packuswb.128
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v16i8, MVT::v8i16, MVT::v8i16);
break;
case Intrinsic::x86_avx_maskload_pd: // llvm.x86.avx.maskload.pd
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::iPTR, MVT::v2f64);
break;
case Intrinsic::x86_sse2_sqrt_pd: // llvm.x86.sse2.sqrt.pd
case Intrinsic::x86_sse2_sqrt_sd: // llvm.x86.sse2.sqrt.sd
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v2f64);
break;
case Intrinsic::x86_sse2_cvtsi2sd: // llvm.x86.sse2.cvtsi2sd
case Intrinsic::x86_sse41_round_pd: // llvm.x86.sse41.round.pd
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i32);
break;
case Intrinsic::x86_sse2_cvtsi642sd: // llvm.x86.sse2.cvtsi642sd
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i64);
break;
case Intrinsic::x86_avx_vpermil_pd: // llvm.x86.avx.vpermil.pd
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i8);
break;
case Intrinsic::x86_sse2_add_sd: // llvm.x86.sse2.add.sd
case Intrinsic::x86_sse2_div_sd: // llvm.x86.sse2.div.sd
case Intrinsic::x86_sse2_max_pd: // llvm.x86.sse2.max.pd
case Intrinsic::x86_sse2_max_sd: // llvm.x86.sse2.max.sd
case Intrinsic::x86_sse2_min_pd: // llvm.x86.sse2.min.pd
case Intrinsic::x86_sse2_min_sd: // llvm.x86.sse2.min.sd
case Intrinsic::x86_sse2_mul_sd: // llvm.x86.sse2.mul.sd
case Intrinsic::x86_sse2_sub_sd: // llvm.x86.sse2.sub.sd
case Intrinsic::x86_sse3_addsub_pd: // llvm.x86.sse3.addsub.pd
case Intrinsic::x86_sse3_hadd_pd: // llvm.x86.sse3.hadd.pd
case Intrinsic::x86_sse3_hsub_pd: // llvm.x86.sse3.hsub.pd
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v2f64);
break;
case Intrinsic::x86_sse41_blendpd: // llvm.x86.sse41.blendpd
case Intrinsic::x86_sse41_dppd: // llvm.x86.sse41.dppd
case Intrinsic::x86_sse41_round_sd: // llvm.x86.sse41.round.sd
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::i32);
break;
case Intrinsic::x86_sse2_cmp_pd: // llvm.x86.sse2.cmp.pd
case Intrinsic::x86_sse2_cmp_sd: // llvm.x86.sse2.cmp.sd
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::i8);
break;
case Intrinsic::x86_sse41_blendvpd: // llvm.x86.sse41.blendvpd
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::v2f64);
break;
case Intrinsic::x86_avx_vpermilvar_pd: // llvm.x86.avx.vpermilvar.pd
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v2i64);
break;
case Intrinsic::x86_sse2_cvtss2sd: // llvm.x86.sse2.cvtss2sd
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v4f32);
break;
case Intrinsic::x86_sse2_cvtps2pd: // llvm.x86.sse2.cvtps2pd
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v4f32);
break;
case Intrinsic::x86_avx_vextractf128_pd_256: // llvm.x86.avx.vextractf128.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v4f64, MVT::i8);
break;
case Intrinsic::x86_sse2_cvtdq2pd: // llvm.x86.sse2.cvtdq2pd
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v4i32);
break;
case Intrinsic::x86_sse_cvtpi2pd: // llvm.x86.sse.cvtpi2pd
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::x86mmx);
break;
case Intrinsic::x86_sse41_movntdqa: // llvm.x86.sse41.movntdqa
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::iPTR);
break;
case Intrinsic::x86_sse41_pmovsxbq: // llvm.x86.sse41.pmovsxbq
case Intrinsic::x86_sse41_pmovzxbq: // llvm.x86.sse41.pmovzxbq
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v16i8);
break;
case Intrinsic::x86_sse2_psad_bw: // llvm.x86.sse2.psad.bw
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v16i8, MVT::v16i8);
break;
case Intrinsic::x86_aesni_aesimc: // llvm.x86.aesni.aesimc
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v2i64);
break;
case Intrinsic::x86_sse2_psll_dq: // llvm.x86.sse2.psll.dq
case Intrinsic::x86_sse2_psll_dq_bs: // llvm.x86.sse2.psll.dq.bs
case Intrinsic::x86_sse2_pslli_q: // llvm.x86.sse2.pslli.q
case Intrinsic::x86_sse2_psrl_dq: // llvm.x86.sse2.psrl.dq
case Intrinsic::x86_sse2_psrl_dq_bs: // llvm.x86.sse2.psrl.dq.bs
case Intrinsic::x86_sse2_psrli_q: // llvm.x86.sse2.psrli.q
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::i32);
break;
case Intrinsic::x86_aesni_aeskeygenassist: // llvm.x86.aesni.aeskeygenassist
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::i8);
break;
case Intrinsic::x86_aesni_aesdec: // llvm.x86.aesni.aesdec
case Intrinsic::x86_aesni_aesdeclast: // llvm.x86.aesni.aesdeclast
case Intrinsic::x86_aesni_aesenc: // llvm.x86.aesni.aesenc
case Intrinsic::x86_aesni_aesenclast: // llvm.x86.aesni.aesenclast
case Intrinsic::x86_sse2_psll_q: // llvm.x86.sse2.psll.q
case Intrinsic::x86_sse2_psrl_q: // llvm.x86.sse2.psrl.q
case Intrinsic::x86_sse41_pcmpeqq: // llvm.x86.sse41.pcmpeqq
case Intrinsic::x86_sse42_pcmpgtq: // llvm.x86.sse42.pcmpgtq
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::v2i64);
break;
case Intrinsic::x86_sse41_pmovsxdq: // llvm.x86.sse41.pmovsxdq
case Intrinsic::x86_sse41_pmovzxdq: // llvm.x86.sse41.pmovzxdq
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v4i32);
break;
case Intrinsic::x86_sse2_pmulu_dq: // llvm.x86.sse2.pmulu.dq
case Intrinsic::x86_sse41_pmuldq: // llvm.x86.sse41.pmuldq
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v4i32, MVT::v4i32);
break;
case Intrinsic::x86_sse41_pmovsxwq: // llvm.x86.sse41.pmovsxwq
case Intrinsic::x86_sse41_pmovzxwq: // llvm.x86.sse41.pmovzxwq
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v8i16);
break;
case Intrinsic::x86_avx_ldu_dq_256: // llvm.x86.avx.ldu.dq.256
case Intrinsic::x86_avx_loadu_dq_256: // llvm.x86.avx.loadu.dq.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v32i8, MVT::iPTR);
break;
case Intrinsic::x86_avx_vbroadcastss: // llvm.x86.avx.vbroadcastss
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::iPTR);
break;
case Intrinsic::x86_avx_maskload_ps: // llvm.x86.avx.maskload.ps
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::iPTR, MVT::v4f32);
break;
case Intrinsic::x86_sse2_cvtpd2ps: // llvm.x86.sse2.cvtpd2ps
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v2f64);
break;
case Intrinsic::x86_sse_rcp_ps: // llvm.x86.sse.rcp.ps
case Intrinsic::x86_sse_rcp_ss: // llvm.x86.sse.rcp.ss
case Intrinsic::x86_sse_rsqrt_ps: // llvm.x86.sse.rsqrt.ps
case Intrinsic::x86_sse_rsqrt_ss: // llvm.x86.sse.rsqrt.ss
case Intrinsic::x86_sse_sqrt_ps: // llvm.x86.sse.sqrt.ps
case Intrinsic::x86_sse_sqrt_ss: // llvm.x86.sse.sqrt.ss
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4f32);
break;
case Intrinsic::x86_sse41_round_ps: // llvm.x86.sse41.round.ps
case Intrinsic::x86_sse_cvtsi2ss: // llvm.x86.sse.cvtsi2ss
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i32);
break;
case Intrinsic::x86_sse_cvtsi642ss: // llvm.x86.sse.cvtsi642ss
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i64);
break;
case Intrinsic::x86_avx_vpermil_ps: // llvm.x86.avx.vpermil.ps
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i8);
break;
case Intrinsic::x86_sse2_cvtsd2ss: // llvm.x86.sse2.cvtsd2ss
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v2f64);
break;
case Intrinsic::x86_sse3_addsub_ps: // llvm.x86.sse3.addsub.ps
case Intrinsic::x86_sse3_hadd_ps: // llvm.x86.sse3.hadd.ps
case Intrinsic::x86_sse3_hsub_ps: // llvm.x86.sse3.hsub.ps
case Intrinsic::x86_sse_add_ss: // llvm.x86.sse.add.ss
case Intrinsic::x86_sse_div_ss: // llvm.x86.sse.div.ss
case Intrinsic::x86_sse_max_ps: // llvm.x86.sse.max.ps
case Intrinsic::x86_sse_max_ss: // llvm.x86.sse.max.ss
case Intrinsic::x86_sse_min_ps: // llvm.x86.sse.min.ps
case Intrinsic::x86_sse_min_ss: // llvm.x86.sse.min.ss
case Intrinsic::x86_sse_mul_ss: // llvm.x86.sse.mul.ss
case Intrinsic::x86_sse_sub_ss: // llvm.x86.sse.sub.ss
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v4f32);
break;
case Intrinsic::x86_sse41_blendps: // llvm.x86.sse41.blendps
case Intrinsic::x86_sse41_dpps: // llvm.x86.sse41.dpps
case Intrinsic::x86_sse41_insertps: // llvm.x86.sse41.insertps
case Intrinsic::x86_sse41_round_ss: // llvm.x86.sse41.round.ss
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::i32);
break;
case Intrinsic::x86_sse_cmp_ps: // llvm.x86.sse.cmp.ps
case Intrinsic::x86_sse_cmp_ss: // llvm.x86.sse.cmp.ss
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::i8);
break;
case Intrinsic::x86_sse41_blendvps: // llvm.x86.sse41.blendvps
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::v4f32);
break;
case Intrinsic::x86_avx_vpermilvar_ps: // llvm.x86.avx.vpermilvar.ps
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v4i32);
break;
case Intrinsic::x86_sse_cvtpi2ps: // llvm.x86.sse.cvtpi2ps
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::x86mmx);
break;
case Intrinsic::x86_avx_cvt_pd2_ps_256: // llvm.x86.avx.cvt.pd2.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4f64);
break;
case Intrinsic::x86_sse2_cvtdq2ps: // llvm.x86.sse2.cvtdq2ps
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4i32);
break;
case Intrinsic::x86_avx_vextractf128_ps_256: // llvm.x86.avx.vextractf128.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v8f32, MVT::i8);
break;
case Intrinsic::x86_avx_loadu_pd_256: // llvm.x86.avx.loadu.pd.256
case Intrinsic::x86_avx_vbroadcast_sd_256: // llvm.x86.avx.vbroadcast.sd.256
case Intrinsic::x86_avx_vbroadcastf128_pd_256: // llvm.x86.avx.vbroadcastf128.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::iPTR);
break;
case Intrinsic::x86_avx_maskload_pd_256: // llvm.x86.avx.maskload.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::iPTR, MVT::v4f64);
break;
case Intrinsic::x86_avx_cvt_ps2_pd_256: // llvm.x86.avx.cvt.ps2.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4f32);
break;
case Intrinsic::x86_avx_sqrt_pd_256: // llvm.x86.avx.sqrt.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4f64);
break;
case Intrinsic::x86_avx_round_pd_256: // llvm.x86.avx.round.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::i32);
break;
case Intrinsic::x86_avx_vpermil_pd_256: // llvm.x86.avx.vpermil.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::i8);
break;
case Intrinsic::x86_avx_vinsertf128_pd_256: // llvm.x86.avx.vinsertf128.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v2f64, MVT::i8);
break;
case Intrinsic::x86_avx_addsub_pd_256: // llvm.x86.avx.addsub.pd.256
case Intrinsic::x86_avx_hadd_pd_256: // llvm.x86.avx.hadd.pd.256
case Intrinsic::x86_avx_hsub_pd_256: // llvm.x86.avx.hsub.pd.256
case Intrinsic::x86_avx_max_pd_256: // llvm.x86.avx.max.pd.256
case Intrinsic::x86_avx_min_pd_256: // llvm.x86.avx.min.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::v4f64);
break;
case Intrinsic::x86_avx_blend_pd_256: // llvm.x86.avx.blend.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::i32);
break;
case Intrinsic::x86_avx_cmp_pd_256: // llvm.x86.avx.cmp.pd.256
case Intrinsic::x86_avx_vperm2f128_pd_256: // llvm.x86.avx.vperm2f128.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::i8);
break;
case Intrinsic::x86_avx_blendv_pd_256: // llvm.x86.avx.blendv.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::v4f64);
break;
case Intrinsic::x86_avx_vpermilvar_pd_256: // llvm.x86.avx.vpermilvar.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::v4i64);
break;
case Intrinsic::x86_avx_cvtdq2_pd_256: // llvm.x86.avx.cvtdq2.pd.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4i32);
break;
case Intrinsic::x86_sse41_pmovsxbd: // llvm.x86.sse41.pmovsxbd
case Intrinsic::x86_sse41_pmovzxbd: // llvm.x86.sse41.pmovzxbd
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v16i8);
break;
case Intrinsic::x86_sse2_cvtpd2dq: // llvm.x86.sse2.cvtpd2dq
case Intrinsic::x86_sse2_cvttpd2dq: // llvm.x86.sse2.cvttpd2dq
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v2f64);
break;
case Intrinsic::x86_sse2_cvtps2dq: // llvm.x86.sse2.cvtps2dq
case Intrinsic::x86_sse2_cvttps2dq: // llvm.x86.sse2.cvttps2dq
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4f32);
break;
case Intrinsic::x86_avx_cvt_pd2dq_256: // llvm.x86.avx.cvt.pd2dq.256
case Intrinsic::x86_avx_cvtt_pd2dq_256: // llvm.x86.avx.cvtt.pd2dq.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4f64);
break;
case Intrinsic::x86_ssse3_pabs_d_128: // llvm.x86.ssse3.pabs.d.128
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4i32);
break;
case Intrinsic::x86_sse2_pslli_d: // llvm.x86.sse2.pslli.d
case Intrinsic::x86_sse2_psrai_d: // llvm.x86.sse2.psrai.d
case Intrinsic::x86_sse2_psrli_d: // llvm.x86.sse2.psrli.d
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v4i32, MVT::i32);
break;
case Intrinsic::x86_sse2_pcmpeq_d: // llvm.x86.sse2.pcmpeq.d
case Intrinsic::x86_sse2_pcmpgt_d: // llvm.x86.sse2.pcmpgt.d
case Intrinsic::x86_sse2_psll_d: // llvm.x86.sse2.psll.d
case Intrinsic::x86_sse2_psra_d: // llvm.x86.sse2.psra.d
case Intrinsic::x86_sse2_psrl_d: // llvm.x86.sse2.psrl.d
case Intrinsic::x86_sse41_pmaxsd: // llvm.x86.sse41.pmaxsd
case Intrinsic::x86_sse41_pmaxud: // llvm.x86.sse41.pmaxud
case Intrinsic::x86_sse41_pminsd: // llvm.x86.sse41.pminsd
case Intrinsic::x86_sse41_pminud: // llvm.x86.sse41.pminud
case Intrinsic::x86_ssse3_phadd_d_128: // llvm.x86.ssse3.phadd.d.128
case Intrinsic::x86_ssse3_phadd_sw_128: // llvm.x86.ssse3.phadd.sw.128
case Intrinsic::x86_ssse3_phsub_d_128: // llvm.x86.ssse3.phsub.d.128
case Intrinsic::x86_ssse3_psign_d_128: // llvm.x86.ssse3.psign.d.128
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v4i32, MVT::v4i32);
break;
case Intrinsic::x86_sse41_pmovsxwd: // llvm.x86.sse41.pmovsxwd
case Intrinsic::x86_sse41_pmovzxwd: // llvm.x86.sse41.pmovzxwd
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v8i16);
break;
case Intrinsic::x86_sse2_pmadd_wd: // llvm.x86.sse2.pmadd.wd
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v8i16, MVT::v8i16);
break;
case Intrinsic::x86_avx_vextractf128_si_256: // llvm.x86.avx.vextractf128.si.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v8i32, MVT::i8);
break;
case Intrinsic::x86_avx_loadu_ps_256: // llvm.x86.avx.loadu.ps.256
case Intrinsic::x86_avx_vbroadcastf128_ps_256: // llvm.x86.avx.vbroadcastf128.ps.256
case Intrinsic::x86_avx_vbroadcastss_256: // llvm.x86.avx.vbroadcastss.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::iPTR);
break;
case Intrinsic::x86_avx_maskload_ps_256: // llvm.x86.avx.maskload.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::iPTR, MVT::v8f32);
break;
case Intrinsic::x86_avx_rcp_ps_256: // llvm.x86.avx.rcp.ps.256
case Intrinsic::x86_avx_rsqrt_ps_256: // llvm.x86.avx.rsqrt.ps.256
case Intrinsic::x86_avx_sqrt_ps_256: // llvm.x86.avx.sqrt.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::v8f32);
break;
case Intrinsic::x86_avx_round_ps_256: // llvm.x86.avx.round.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::i32);
break;
case Intrinsic::x86_avx_vpermil_ps_256: // llvm.x86.avx.vpermil.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::i8);
break;
case Intrinsic::x86_avx_vinsertf128_ps_256: // llvm.x86.avx.vinsertf128.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v4f32, MVT::i8);
break;
case Intrinsic::x86_avx_addsub_ps_256: // llvm.x86.avx.addsub.ps.256
case Intrinsic::x86_avx_hadd_ps_256: // llvm.x86.avx.hadd.ps.256
case Intrinsic::x86_avx_hsub_ps_256: // llvm.x86.avx.hsub.ps.256
case Intrinsic::x86_avx_max_ps_256: // llvm.x86.avx.max.ps.256
case Intrinsic::x86_avx_min_ps_256: // llvm.x86.avx.min.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::v8f32);
break;
case Intrinsic::x86_avx_blend_ps_256: // llvm.x86.avx.blend.ps.256
case Intrinsic::x86_avx_dp_ps_256: // llvm.x86.avx.dp.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::i32);
break;
case Intrinsic::x86_avx_cmp_ps_256: // llvm.x86.avx.cmp.ps.256
case Intrinsic::x86_avx_vperm2f128_ps_256: // llvm.x86.avx.vperm2f128.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::i8);
break;
case Intrinsic::x86_avx_blendv_ps_256: // llvm.x86.avx.blendv.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::v8f32);
break;
case Intrinsic::x86_avx_vpermilvar_ps_256: // llvm.x86.avx.vpermilvar.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::v8i32);
break;
case Intrinsic::x86_avx_cvtdq2_ps_256: // llvm.x86.avx.cvtdq2.ps.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::v8i32);
break;
case Intrinsic::x86_sse41_pmovsxbw: // llvm.x86.sse41.pmovsxbw
case Intrinsic::x86_sse41_pmovzxbw: // llvm.x86.sse41.pmovzxbw
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i16, MVT::v16i8);
break;
case Intrinsic::x86_sse2_packssdw_128: // llvm.x86.sse2.packssdw.128
case Intrinsic::x86_sse41_packusdw: // llvm.x86.sse41.packusdw
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v4i32, MVT::v4i32);
break;
case Intrinsic::x86_sse41_phminposuw: // llvm.x86.sse41.phminposuw
case Intrinsic::x86_ssse3_pabs_w_128: // llvm.x86.ssse3.pabs.w.128
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i16, MVT::v8i16);
break;
case Intrinsic::x86_sse2_pslli_w: // llvm.x86.sse2.pslli.w
case Intrinsic::x86_sse2_psrai_w: // llvm.x86.sse2.psrai.w
case Intrinsic::x86_sse2_psrli_w: // llvm.x86.sse2.psrli.w
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v8i16, MVT::i32);
break;
case Intrinsic::x86_sse2_padds_w: // llvm.x86.sse2.padds.w
case Intrinsic::x86_sse2_paddus_w: // llvm.x86.sse2.paddus.w
case Intrinsic::x86_sse2_pavg_w: // llvm.x86.sse2.pavg.w
case Intrinsic::x86_sse2_pcmpeq_w: // llvm.x86.sse2.pcmpeq.w
case Intrinsic::x86_sse2_pcmpgt_w: // llvm.x86.sse2.pcmpgt.w
case Intrinsic::x86_sse2_pmaxs_w: // llvm.x86.sse2.pmaxs.w
case Intrinsic::x86_sse2_pmins_w: // llvm.x86.sse2.pmins.w
case Intrinsic::x86_sse2_pmulh_w: // llvm.x86.sse2.pmulh.w
case Intrinsic::x86_sse2_pmulhu_w: // llvm.x86.sse2.pmulhu.w
case Intrinsic::x86_sse2_psll_w: // llvm.x86.sse2.psll.w
case Intrinsic::x86_sse2_psra_w: // llvm.x86.sse2.psra.w
case Intrinsic::x86_sse2_psrl_w: // llvm.x86.sse2.psrl.w
case Intrinsic::x86_sse2_psubs_w: // llvm.x86.sse2.psubs.w
case Intrinsic::x86_sse2_psubus_w: // llvm.x86.sse2.psubus.w
case Intrinsic::x86_sse41_pmaxuw: // llvm.x86.sse41.pmaxuw
case Intrinsic::x86_sse41_pminuw: // llvm.x86.sse41.pminuw
case Intrinsic::x86_ssse3_phadd_w_128: // llvm.x86.ssse3.phadd.w.128
case Intrinsic::x86_ssse3_phsub_sw_128: // llvm.x86.ssse3.phsub.sw.128
case Intrinsic::x86_ssse3_phsub_w_128: // llvm.x86.ssse3.phsub.w.128
case Intrinsic::x86_ssse3_pmadd_ub_sw_128: // llvm.x86.ssse3.pmadd.ub.sw.128
case Intrinsic::x86_ssse3_pmul_hr_sw_128: // llvm.x86.ssse3.pmul.hr.sw.128
case Intrinsic::x86_ssse3_psign_w_128: // llvm.x86.ssse3.psign.w.128
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v8i16, MVT::v8i16);
break;
case Intrinsic::x86_sse41_pblendw: // llvm.x86.sse41.pblendw
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i16, MVT::v8i16, MVT::v8i16, MVT::i32);
break;
case Intrinsic::x86_avx_cvt_ps2dq_256: // llvm.x86.avx.cvt.ps2dq.256
case Intrinsic::x86_avx_cvtt_ps2dq_256: // llvm.x86.avx.cvtt.ps2dq.256
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i32, MVT::v8f32);
break;
case Intrinsic::x86_avx_vinsertf128_si_256: // llvm.x86.avx.vinsertf128.si.256
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i32, MVT::v8i32, MVT::v4i32, MVT::i8);
break;
case Intrinsic::x86_avx_vperm2f128_si_256: // llvm.x86.avx.vperm2f128.si.256
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i32, MVT::v8i32, MVT::v8i32, MVT::i8);
break;
case Intrinsic::x86_sse_cvtpd2pi: // llvm.x86.sse.cvtpd2pi
case Intrinsic::x86_sse_cvttpd2pi: // llvm.x86.sse.cvttpd2pi
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::v2f64);
break;
case Intrinsic::x86_sse_cvtps2pi: // llvm.x86.sse.cvtps2pi
case Intrinsic::x86_sse_cvttps2pi: // llvm.x86.sse.cvttps2pi
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::v4f32);
break;
case Intrinsic::x86_3dnow_pf2id: // llvm.x86.3dnow.pf2id
case Intrinsic::x86_3dnow_pfrcp: // llvm.x86.3dnow.pfrcp
case Intrinsic::x86_3dnow_pfrsqrt: // llvm.x86.3dnow.pfrsqrt
case Intrinsic::x86_3dnow_pi2fd: // llvm.x86.3dnow.pi2fd
case Intrinsic::x86_3dnowa_pf2iw: // llvm.x86.3dnowa.pf2iw
case Intrinsic::x86_3dnowa_pi2fw: // llvm.x86.3dnowa.pi2fw
case Intrinsic::x86_3dnowa_pswapd: // llvm.x86.3dnowa.pswapd
case Intrinsic::x86_ssse3_pabs_b: // llvm.x86.ssse3.pabs.b
case Intrinsic::x86_ssse3_pabs_d: // llvm.x86.ssse3.pabs.d
case Intrinsic::x86_ssse3_pabs_w: // llvm.x86.ssse3.pabs.w
VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::x86mmx);
break;
case Intrinsic::x86_mmx_pslli_d: // llvm.x86.mmx.pslli.d
case Intrinsic::x86_mmx_pslli_q: // llvm.x86.mmx.pslli.q
case Intrinsic::x86_mmx_pslli_w: // llvm.x86.mmx.pslli.w
case Intrinsic::x86_mmx_psrai_d: // llvm.x86.mmx.psrai.d
case Intrinsic::x86_mmx_psrai_w: // llvm.x86.mmx.psrai.w
case Intrinsic::x86_mmx_psrli_d: // llvm.x86.mmx.psrli.d
case Intrinsic::x86_mmx_psrli_q: // llvm.x86.mmx.psrli.q
case Intrinsic::x86_mmx_psrli_w: // llvm.x86.mmx.psrli.w
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::i32);
break;
case Intrinsic::x86_mmx_pinsr_w: // llvm.x86.mmx.pinsr.w
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::x86mmx, MVT::x86mmx, MVT::i32, MVT::i32);
break;
case Intrinsic::x86_sse_pshuf_w: // llvm.x86.sse.pshuf.w
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::i8);
break;
case Intrinsic::x86_3dnow_pavgusb: // llvm.x86.3dnow.pavgusb
case Intrinsic::x86_3dnow_pfacc: // llvm.x86.3dnow.pfacc
case Intrinsic::x86_3dnow_pfadd: // llvm.x86.3dnow.pfadd
case Intrinsic::x86_3dnow_pfcmpeq: // llvm.x86.3dnow.pfcmpeq
case Intrinsic::x86_3dnow_pfcmpge: // llvm.x86.3dnow.pfcmpge
case Intrinsic::x86_3dnow_pfcmpgt: // llvm.x86.3dnow.pfcmpgt
case Intrinsic::x86_3dnow_pfmax: // llvm.x86.3dnow.pfmax
case Intrinsic::x86_3dnow_pfmin: // llvm.x86.3dnow.pfmin
case Intrinsic::x86_3dnow_pfmul: // llvm.x86.3dnow.pfmul
case Intrinsic::x86_3dnow_pfrcpit1: // llvm.x86.3dnow.pfrcpit1
case Intrinsic::x86_3dnow_pfrcpit2: // llvm.x86.3dnow.pfrcpit2
case Intrinsic::x86_3dnow_pfrsqit1: // llvm.x86.3dnow.pfrsqit1
case Intrinsic::x86_3dnow_pfsub: // llvm.x86.3dnow.pfsub
case Intrinsic::x86_3dnow_pfsubr: // llvm.x86.3dnow.pfsubr
case Intrinsic::x86_3dnow_pmulhrw: // llvm.x86.3dnow.pmulhrw
case Intrinsic::x86_3dnowa_pfnacc: // llvm.x86.3dnowa.pfnacc
case Intrinsic::x86_3dnowa_pfpnacc: // llvm.x86.3dnowa.pfpnacc
case Intrinsic::x86_mmx_packssdw: // llvm.x86.mmx.packssdw
case Intrinsic::x86_mmx_packsswb: // llvm.x86.mmx.packsswb
case Intrinsic::x86_mmx_packuswb: // llvm.x86.mmx.packuswb
case Intrinsic::x86_mmx_padd_b: // llvm.x86.mmx.padd.b
case Intrinsic::x86_mmx_padd_d: // llvm.x86.mmx.padd.d
case Intrinsic::x86_mmx_padd_q: // llvm.x86.mmx.padd.q
case Intrinsic::x86_mmx_padd_w: // llvm.x86.mmx.padd.w
case Intrinsic::x86_mmx_padds_b: // llvm.x86.mmx.padds.b
case Intrinsic::x86_mmx_padds_w: // llvm.x86.mmx.padds.w
case Intrinsic::x86_mmx_paddus_b: // llvm.x86.mmx.paddus.b
case Intrinsic::x86_mmx_paddus_w: // llvm.x86.mmx.paddus.w
case Intrinsic::x86_mmx_pand: // llvm.x86.mmx.pand
case Intrinsic::x86_mmx_pandn: // llvm.x86.mmx.pandn
case Intrinsic::x86_mmx_pavg_b: // llvm.x86.mmx.pavg.b
case Intrinsic::x86_mmx_pavg_w: // llvm.x86.mmx.pavg.w
case Intrinsic::x86_mmx_pcmpeq_b: // llvm.x86.mmx.pcmpeq.b
case Intrinsic::x86_mmx_pcmpeq_d: // llvm.x86.mmx.pcmpeq.d
case Intrinsic::x86_mmx_pcmpeq_w: // llvm.x86.mmx.pcmpeq.w
case Intrinsic::x86_mmx_pcmpgt_b: // llvm.x86.mmx.pcmpgt.b
case Intrinsic::x86_mmx_pcmpgt_d: // llvm.x86.mmx.pcmpgt.d
case Intrinsic::x86_mmx_pcmpgt_w: // llvm.x86.mmx.pcmpgt.w
case Intrinsic::x86_mmx_pmadd_wd: // llvm.x86.mmx.pmadd.wd
case Intrinsic::x86_mmx_pmaxs_w: // llvm.x86.mmx.pmaxs.w
case Intrinsic::x86_mmx_pmaxu_b: // llvm.x86.mmx.pmaxu.b
case Intrinsic::x86_mmx_pmins_w: // llvm.x86.mmx.pmins.w
case Intrinsic::x86_mmx_pminu_b: // llvm.x86.mmx.pminu.b
case Intrinsic::x86_mmx_pmulh_w: // llvm.x86.mmx.pmulh.w
case Intrinsic::x86_mmx_pmulhu_w: // llvm.x86.mmx.pmulhu.w
case Intrinsic::x86_mmx_pmull_w: // llvm.x86.mmx.pmull.w
case Intrinsic::x86_mmx_pmulu_dq: // llvm.x86.mmx.pmulu.dq
case Intrinsic::x86_mmx_por: // llvm.x86.mmx.por
case Intrinsic::x86_mmx_psad_bw: // llvm.x86.mmx.psad.bw
case Intrinsic::x86_mmx_psll_d: // llvm.x86.mmx.psll.d
case Intrinsic::x86_mmx_psll_q: // llvm.x86.mmx.psll.q
case Intrinsic::x86_mmx_psll_w: // llvm.x86.mmx.psll.w
case Intrinsic::x86_mmx_psra_d: // llvm.x86.mmx.psra.d
case Intrinsic::x86_mmx_psra_w: // llvm.x86.mmx.psra.w
case Intrinsic::x86_mmx_psrl_d: // llvm.x86.mmx.psrl.d
case Intrinsic::x86_mmx_psrl_q: // llvm.x86.mmx.psrl.q
case Intrinsic::x86_mmx_psrl_w: // llvm.x86.mmx.psrl.w
case Intrinsic::x86_mmx_psub_b: // llvm.x86.mmx.psub.b
case Intrinsic::x86_mmx_psub_d: // llvm.x86.mmx.psub.d
case Intrinsic::x86_mmx_psub_q: // llvm.x86.mmx.psub.q
case Intrinsic::x86_mmx_psub_w: // llvm.x86.mmx.psub.w
case Intrinsic::x86_mmx_psubs_b: // llvm.x86.mmx.psubs.b
case Intrinsic::x86_mmx_psubs_w: // llvm.x86.mmx.psubs.w
case Intrinsic::x86_mmx_psubus_b: // llvm.x86.mmx.psubus.b
case Intrinsic::x86_mmx_psubus_w: // llvm.x86.mmx.psubus.w
case Intrinsic::x86_mmx_punpckhbw: // llvm.x86.mmx.punpckhbw
case Intrinsic::x86_mmx_punpckhdq: // llvm.x86.mmx.punpckhdq
case Intrinsic::x86_mmx_punpckhwd: // llvm.x86.mmx.punpckhwd
case Intrinsic::x86_mmx_punpcklbw: // llvm.x86.mmx.punpcklbw
case Intrinsic::x86_mmx_punpckldq: // llvm.x86.mmx.punpckldq
case Intrinsic::x86_mmx_punpcklwd: // llvm.x86.mmx.punpcklwd
case Intrinsic::x86_mmx_pxor: // llvm.x86.mmx.pxor
case Intrinsic::x86_ssse3_phadd_d: // llvm.x86.ssse3.phadd.d
case Intrinsic::x86_ssse3_phadd_sw: // llvm.x86.ssse3.phadd.sw
case Intrinsic::x86_ssse3_phadd_w: // llvm.x86.ssse3.phadd.w
case Intrinsic::x86_ssse3_phsub_d: // llvm.x86.ssse3.phsub.d
case Intrinsic::x86_ssse3_phsub_sw: // llvm.x86.ssse3.phsub.sw
case Intrinsic::x86_ssse3_phsub_w: // llvm.x86.ssse3.phsub.w
case Intrinsic::x86_ssse3_pmadd_ub_sw: // llvm.x86.ssse3.pmadd.ub.sw
case Intrinsic::x86_ssse3_pmul_hr_sw: // llvm.x86.ssse3.pmul.hr.sw
case Intrinsic::x86_ssse3_pshuf_b: // llvm.x86.ssse3.pshuf.b
case Intrinsic::x86_ssse3_psign_b: // llvm.x86.ssse3.psign.b
case Intrinsic::x86_ssse3_psign_d: // llvm.x86.ssse3.psign.d
case Intrinsic::x86_ssse3_psign_w: // llvm.x86.ssse3.psign.w
VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::x86mmx);
break;
case Intrinsic::x86_mmx_palignr_b: // llvm.x86.mmx.palignr.b
VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::x86mmx, MVT::x86mmx, MVT::x86mmx, MVT::i8);
break;
}
#endif
// Code for generating Intrinsic function declarations.
#ifdef GET_INTRINSIC_GENERATOR
switch (id) {
default: assert(0 && "Invalid intrinsic!");
case Intrinsic::eh_unwind_init: // llvm.eh.unwind.init
case Intrinsic::trap: // llvm.trap
case Intrinsic::x86_avx_vzeroall: // llvm.x86.avx.vzeroall
case Intrinsic::x86_avx_vzeroupper: // llvm.x86.avx.vzeroupper
case Intrinsic::x86_mmx_emms: // llvm.x86.mmx.emms
case Intrinsic::x86_mmx_femms: // llvm.x86.mmx.femms
case Intrinsic::x86_sse2_lfence: // llvm.x86.sse2.lfence
case Intrinsic::x86_sse2_mfence: // llvm.x86.sse2.mfence
case Intrinsic::x86_sse_sfence: // llvm.x86.sse.sfence
ResultTy = Type::getVoidTy(Context);
break;
case Intrinsic::memcpy: // llvm.memcpy
case Intrinsic::memmove: // llvm.memmove
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back((0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back((1 < Tys.size()) ? Tys[1] : PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(Tys[2]);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 1));
break;
case Intrinsic::memset: // llvm.memset
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back((0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(IntegerType::get(Context, 8));
ArgTys.push_back(Tys[1]);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 1));
break;
case Intrinsic::invariant_end: // llvm.invariant.end
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(StructType::get(Context)));
ArgTys.push_back(IntegerType::get(Context, 64));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::eh_sjlj_callsite: // llvm.eh.sjlj.callsite
case Intrinsic::eh_sjlj_dispatch_setup: // llvm.eh.sjlj.dispatch.setup
case Intrinsic::pcmarker: // llvm.pcmarker
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse3_mwait: // llvm.x86.sse3.mwait
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::eh_return_i32: // llvm.eh.return.i32
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::eh_return_i64: // llvm.eh.return.i64
case Intrinsic::lifetime_end: // llvm.lifetime.end
case Intrinsic::lifetime_start: // llvm.lifetime.start
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(IntegerType::get(Context, 64));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::x86_int: // llvm.x86.int
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::dbg_value: // llvm.dbg.value
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(Type::getMetadataTy(Context));
ArgTys.push_back(IntegerType::get(Context, 64));
ArgTys.push_back(Type::getMetadataTy(Context));
break;
case Intrinsic::dbg_declare: // llvm.dbg.declare
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(Type::getMetadataTy(Context));
ArgTys.push_back(Type::getMetadataTy(Context));
break;
case Intrinsic::eh_sjlj_functioncontext: // llvm.eh.sjlj.functioncontext
case Intrinsic::eh_sjlj_longjmp: // llvm.eh.sjlj.longjmp
case Intrinsic::stackrestore: // llvm.stackrestore
case Intrinsic::vaend: // llvm.va_end
case Intrinsic::vastart: // llvm.va_start
case Intrinsic::x86_sse2_clflush: // llvm.x86.sse2.clflush
case Intrinsic::x86_sse_ldmxcsr: // llvm.x86.sse.ldmxcsr
case Intrinsic::x86_sse_stmxcsr: // llvm.x86.sse.stmxcsr
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::eh_resume: // llvm.eh.resume
case Intrinsic::longjmp: // llvm.longjmp
case Intrinsic::siglongjmp: // llvm.siglongjmp
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse3_monitor: // llvm.x86.sse3.monitor
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::prefetch: // llvm.prefetch
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::vacopy: // llvm.va_copy
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::init_trampoline: // llvm.init.trampoline
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::var_annotation: // llvm.var.annotation
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::gcwrite: // llvm.gcwrite
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8))));
break;
case Intrinsic::stackprotector: // llvm.stackprotector
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8))));
break;
case Intrinsic::x86_sse2_storeu_dq: // llvm.x86.sse2.storeu.dq
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
break;
case Intrinsic::x86_sse2_storeu_pd: // llvm.x86.sse2.storeu.pd
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_avx_maskstore_pd: // llvm.x86.avx.maskstore.pd
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_avx_storeu_dq_256: // llvm.x86.avx.storeu.dq.256
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 32));
break;
case Intrinsic::x86_sse_storeu_ps: // llvm.x86.sse.storeu.ps
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_avx_maskstore_ps: // llvm.x86.avx.maskstore.ps
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_avx_movnt_pd_256: // llvm.x86.avx.movnt.pd.256
case Intrinsic::x86_avx_storeu_pd_256: // llvm.x86.avx.storeu.pd.256
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
break;
case Intrinsic::x86_avx_maskstore_pd_256: // llvm.x86.avx.maskstore.pd.256
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
break;
case Intrinsic::x86_sse2_storel_dq: // llvm.x86.sse2.storel.dq
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
break;
case Intrinsic::x86_avx_movnt_dq_256: // llvm.x86.avx.movnt.dq.256
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4));
break;
case Intrinsic::x86_avx_movnt_ps_256: // llvm.x86.avx.movnt.ps.256
case Intrinsic::x86_avx_storeu_ps_256: // llvm.x86.avx.storeu.ps.256
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
break;
case Intrinsic::x86_avx_maskstore_ps_256: // llvm.x86.avx.maskstore.ps.256
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
break;
case Intrinsic::gcroot: // llvm.gcroot
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8))));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::x86_mmx_movnt_dq: // llvm.x86.mmx.movnt.dq
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(PointerType::getUnqual(Type::getX86_MMXTy(Context)));
ArgTys.push_back(Type::getX86_MMXTy(Context));
break;
case Intrinsic::x86_sse2_maskmov_dqu: // llvm.x86.sse2.maskmov.dqu
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::x86_mmx_maskmovq: // llvm.x86.mmx.maskmovq
ResultTy = Type::getVoidTy(Context);
ArgTys.push_back(Type::getX86_MMXTy(Context));
ArgTys.push_back(Type::getX86_MMXTy(Context));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::ptr_annotation: // llvm.ptr.annotation
ResultTy = (0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(Tys[0]);
ArgTys.push_back(Tys[0]);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::sin: // llvm.sin
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::cos: // llvm.cos
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::pow: // llvm.pow
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::log: // llvm.log
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::log10: // llvm.log10
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::log2: // llvm.log2
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::exp: // llvm.exp
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::exp2: // llvm.exp2
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::fma: // llvm.fma
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::sqrt: // llvm.sqrt
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::powi: // llvm.powi
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::convertff: // llvm.convertff
ResultTy = Tys[0];
ArgTys.push_back(Tys[1]);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::convertfsi: // llvm.convertfsi
case Intrinsic::convertfui: // llvm.convertfui
ResultTy = Tys[0];
ArgTys.push_back(Tys[1]);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::expect: // llvm.expect
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::bswap: // llvm.bswap
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::ctpop: // llvm.ctpop
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::ctlz: // llvm.ctlz
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::cttz: // llvm.cttz
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::annotation: // llvm.annotation
ResultTy = Tys[0];
ArgTys.push_back(Tys[0]);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::convertsif: // llvm.convertsif
case Intrinsic::convertuif: // llvm.convertuif
ResultTy = Tys[0];
ArgTys.push_back(Tys[1]);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::convertss: // llvm.convertss
case Intrinsic::convertsu: // llvm.convertsu
case Intrinsic::convertus: // llvm.convertus
case Intrinsic::convertuu: // llvm.convertuu
ResultTy = Tys[0];
ArgTys.push_back(Tys[1]);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::objectsize: // llvm.objectsize
ResultTy = Tys[0];
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(IntegerType::get(Context, 1));
break;
case Intrinsic::sadd_with_overflow: // llvm.sadd.with.overflow
ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL);
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::uadd_with_overflow: // llvm.uadd.with.overflow
ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL);
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::ssub_with_overflow: // llvm.ssub.with.overflow
ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL);
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::usub_with_overflow: // llvm.usub.with.overflow
ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL);
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::smul_with_overflow: // llvm.smul.with.overflow
ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL);
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::umul_with_overflow: // llvm.umul.with.overflow
ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1), NULL);
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
break;
case Intrinsic::invariant_start: // llvm.invariant.start
ResultTy = PointerType::getUnqual(StructType::get(Context));
ArgTys.push_back(IntegerType::get(Context, 64));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::convert_from_fp16: // llvm.convert.from.fp16
ResultTy = Type::getFloatTy(Context);
ArgTys.push_back(IntegerType::get(Context, 16));
break;
case Intrinsic::convert_to_fp16: // llvm.convert.to.fp16
ResultTy = IntegerType::get(Context, 16);
ArgTys.push_back(Type::getFloatTy(Context));
break;
case Intrinsic::flt_rounds: // llvm.flt.rounds
ResultTy = IntegerType::get(Context, 32);
break;
case Intrinsic::x86_sse42_crc32_32_16: // llvm.x86.sse42.crc32.32.16
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 16));
break;
case Intrinsic::x86_sse42_crc32_32_32: // llvm.x86.sse42.crc32.32.32
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse42_crc32_32_8: // llvm.x86.sse42.crc32.32.8
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::eh_sjlj_setjmp: // llvm.eh.sjlj.setjmp
case Intrinsic::eh_typeid_for: // llvm.eh.typeid.for
case Intrinsic::setjmp: // llvm.setjmp
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::sigsetjmp: // llvm.sigsetjmp
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::eh_selector: // llvm.eh.selector
IsVarArg = true;
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::x86_sse2_pmovmskb_128: // llvm.x86.sse2.pmovmskb.128
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
break;
case Intrinsic::x86_sse41_pextrb: // llvm.x86.sse41.pextrb
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse42_pcmpestri128: // llvm.x86.sse42.pcmpestri128
case Intrinsic::x86_sse42_pcmpestria128: // llvm.x86.sse42.pcmpestria128
case Intrinsic::x86_sse42_pcmpestric128: // llvm.x86.sse42.pcmpestric128
case Intrinsic::x86_sse42_pcmpestrio128: // llvm.x86.sse42.pcmpestrio128
case Intrinsic::x86_sse42_pcmpestris128: // llvm.x86.sse42.pcmpestris128
case Intrinsic::x86_sse42_pcmpestriz128: // llvm.x86.sse42.pcmpestriz128
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse42_pcmpistri128: // llvm.x86.sse42.pcmpistri128
case Intrinsic::x86_sse42_pcmpistria128: // llvm.x86.sse42.pcmpistria128
case Intrinsic::x86_sse42_pcmpistric128: // llvm.x86.sse42.pcmpistric128
case Intrinsic::x86_sse42_pcmpistrio128: // llvm.x86.sse42.pcmpistrio128
case Intrinsic::x86_sse42_pcmpistris128: // llvm.x86.sse42.pcmpistris128
case Intrinsic::x86_sse42_pcmpistriz128: // llvm.x86.sse42.pcmpistriz128
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse2_cvtsd2si: // llvm.x86.sse2.cvtsd2si
case Intrinsic::x86_sse2_cvttsd2si: // llvm.x86.sse2.cvttsd2si
case Intrinsic::x86_sse2_movmsk_pd: // llvm.x86.sse2.movmsk.pd
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_avx_vtestc_pd: // llvm.x86.avx.vtestc.pd
case Intrinsic::x86_avx_vtestnzc_pd: // llvm.x86.avx.vtestnzc.pd
case Intrinsic::x86_avx_vtestz_pd: // llvm.x86.avx.vtestz.pd
case Intrinsic::x86_sse2_comieq_sd: // llvm.x86.sse2.comieq.sd
case Intrinsic::x86_sse2_comige_sd: // llvm.x86.sse2.comige.sd
case Intrinsic::x86_sse2_comigt_sd: // llvm.x86.sse2.comigt.sd
case Intrinsic::x86_sse2_comile_sd: // llvm.x86.sse2.comile.sd
case Intrinsic::x86_sse2_comilt_sd: // llvm.x86.sse2.comilt.sd
case Intrinsic::x86_sse2_comineq_sd: // llvm.x86.sse2.comineq.sd
case Intrinsic::x86_sse2_ucomieq_sd: // llvm.x86.sse2.ucomieq.sd
case Intrinsic::x86_sse2_ucomige_sd: // llvm.x86.sse2.ucomige.sd
case Intrinsic::x86_sse2_ucomigt_sd: // llvm.x86.sse2.ucomigt.sd
case Intrinsic::x86_sse2_ucomile_sd: // llvm.x86.sse2.ucomile.sd
case Intrinsic::x86_sse2_ucomilt_sd: // llvm.x86.sse2.ucomilt.sd
case Intrinsic::x86_sse2_ucomineq_sd: // llvm.x86.sse2.ucomineq.sd
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_sse_cvtss2si: // llvm.x86.sse.cvtss2si
case Intrinsic::x86_sse_cvttss2si: // llvm.x86.sse.cvttss2si
case Intrinsic::x86_sse_movmsk_ps: // llvm.x86.sse.movmsk.ps
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_sse41_extractps: // llvm.x86.sse41.extractps
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_avx_vtestc_ps: // llvm.x86.avx.vtestc.ps
case Intrinsic::x86_avx_vtestnzc_ps: // llvm.x86.avx.vtestnzc.ps
case Intrinsic::x86_avx_vtestz_ps: // llvm.x86.avx.vtestz.ps
case Intrinsic::x86_sse41_ptestc: // llvm.x86.sse41.ptestc
case Intrinsic::x86_sse41_ptestnzc: // llvm.x86.sse41.ptestnzc
case Intrinsic::x86_sse41_ptestz: // llvm.x86.sse41.ptestz
case Intrinsic::x86_sse_comieq_ss: // llvm.x86.sse.comieq.ss
case Intrinsic::x86_sse_comige_ss: // llvm.x86.sse.comige.ss
case Intrinsic::x86_sse_comigt_ss: // llvm.x86.sse.comigt.ss
case Intrinsic::x86_sse_comile_ss: // llvm.x86.sse.comile.ss
case Intrinsic::x86_sse_comilt_ss: // llvm.x86.sse.comilt.ss
case Intrinsic::x86_sse_comineq_ss: // llvm.x86.sse.comineq.ss
case Intrinsic::x86_sse_ucomieq_ss: // llvm.x86.sse.ucomieq.ss
case Intrinsic::x86_sse_ucomige_ss: // llvm.x86.sse.ucomige.ss
case Intrinsic::x86_sse_ucomigt_ss: // llvm.x86.sse.ucomigt.ss
case Intrinsic::x86_sse_ucomile_ss: // llvm.x86.sse.ucomile.ss
case Intrinsic::x86_sse_ucomilt_ss: // llvm.x86.sse.ucomilt.ss
case Intrinsic::x86_sse_ucomineq_ss: // llvm.x86.sse.ucomineq.ss
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_avx_movmsk_pd_256: // llvm.x86.avx.movmsk.pd.256
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
break;
case Intrinsic::x86_avx_vtestc_pd_256: // llvm.x86.avx.vtestc.pd.256
case Intrinsic::x86_avx_vtestnzc_pd_256: // llvm.x86.avx.vtestnzc.pd.256
case Intrinsic::x86_avx_vtestz_pd_256: // llvm.x86.avx.vtestz.pd.256
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
break;
case Intrinsic::x86_sse41_pextrd: // llvm.x86.sse41.pextrd
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_avx_ptestc_256: // llvm.x86.avx.ptestc.256
case Intrinsic::x86_avx_ptestnzc_256: // llvm.x86.avx.ptestnzc.256
case Intrinsic::x86_avx_ptestz_256: // llvm.x86.avx.ptestz.256
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4));
break;
case Intrinsic::x86_avx_movmsk_ps_256: // llvm.x86.avx.movmsk.ps.256
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
break;
case Intrinsic::x86_avx_vtestc_ps_256: // llvm.x86.avx.vtestc.ps.256
case Intrinsic::x86_avx_vtestnzc_ps_256: // llvm.x86.avx.vtestnzc.ps.256
case Intrinsic::x86_avx_vtestz_ps_256: // llvm.x86.avx.vtestz.ps.256
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
break;
case Intrinsic::x86_mmx_pmovmskb: // llvm.x86.mmx.pmovmskb
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(Type::getX86_MMXTy(Context));
break;
case Intrinsic::x86_mmx_pextr_w: // llvm.x86.mmx.pextr.w
ResultTy = IntegerType::get(Context, 32);
ArgTys.push_back(Type::getX86_MMXTy(Context));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::readcyclecounter: // llvm.readcyclecounter
ResultTy = IntegerType::get(Context, 64);
break;
case Intrinsic::x86_sse42_crc32_64_64: // llvm.x86.sse42.crc32.64.64
ResultTy = IntegerType::get(Context, 64);
ArgTys.push_back(IntegerType::get(Context, 64));
ArgTys.push_back(IntegerType::get(Context, 64));
break;
case Intrinsic::x86_sse42_crc32_64_8: // llvm.x86.sse42.crc32.64.8
ResultTy = IntegerType::get(Context, 64);
ArgTys.push_back(IntegerType::get(Context, 64));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse2_cvtsd2si64: // llvm.x86.sse2.cvtsd2si64
case Intrinsic::x86_sse2_cvttsd2si64: // llvm.x86.sse2.cvttsd2si64
ResultTy = IntegerType::get(Context, 64);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_sse41_pextrq: // llvm.x86.sse41.pextrq
ResultTy = IntegerType::get(Context, 64);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse_cvtss2si64: // llvm.x86.sse.cvtss2si64
case Intrinsic::x86_sse_cvttss2si64: // llvm.x86.sse.cvttss2si64
ResultTy = IntegerType::get(Context, 64);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::eh_exception: // llvm.eh.exception
case Intrinsic::eh_sjlj_lsda: // llvm.eh.sjlj.lsda
case Intrinsic::stacksave: // llvm.stacksave
ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8));
break;
case Intrinsic::eh_dwarf_cfa: // llvm.eh.dwarf.cfa
case Intrinsic::frameaddress: // llvm.frameaddress
case Intrinsic::returnaddress: // llvm.returnaddress
ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::adjust_trampoline: // llvm.adjust.trampoline
ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::gcread: // llvm.gcread
ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8));
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8))));
break;
case Intrinsic::x86_sse3_ldu_dq: // llvm.x86.sse3.ldu.dq
ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::x86_ssse3_pabs_b_128: // llvm.x86.ssse3.pabs.b.128
ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
break;
case Intrinsic::x86_sse42_pcmpestrm128: // llvm.x86.sse42.pcmpestrm128
ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse2_padds_b: // llvm.x86.sse2.padds.b
case Intrinsic::x86_sse2_paddus_b: // llvm.x86.sse2.paddus.b
case Intrinsic::x86_sse2_pavg_b: // llvm.x86.sse2.pavg.b
case Intrinsic::x86_sse2_pcmpeq_b: // llvm.x86.sse2.pcmpeq.b
case Intrinsic::x86_sse2_pcmpgt_b: // llvm.x86.sse2.pcmpgt.b
case Intrinsic::x86_sse2_pmaxu_b: // llvm.x86.sse2.pmaxu.b
case Intrinsic::x86_sse2_pminu_b: // llvm.x86.sse2.pminu.b
case Intrinsic::x86_sse2_psubs_b: // llvm.x86.sse2.psubs.b
case Intrinsic::x86_sse2_psubus_b: // llvm.x86.sse2.psubus.b
case Intrinsic::x86_sse41_pmaxsb: // llvm.x86.sse41.pmaxsb
case Intrinsic::x86_sse41_pminsb: // llvm.x86.sse41.pminsb
case Intrinsic::x86_ssse3_pshuf_b_128: // llvm.x86.ssse3.pshuf.b.128
case Intrinsic::x86_ssse3_psign_b_128: // llvm.x86.ssse3.psign.b.128
ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
break;
case Intrinsic::x86_sse41_mpsadbw: // llvm.x86.sse41.mpsadbw
ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse42_pcmpistrm128: // llvm.x86.sse42.pcmpistrm128
ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse41_pblendvb: // llvm.x86.sse41.pblendvb
ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
break;
case Intrinsic::x86_sse2_packsswb_128: // llvm.x86.sse2.packsswb.128
case Intrinsic::x86_sse2_packuswb_128: // llvm.x86.sse2.packuswb.128
ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
break;
case Intrinsic::x86_avx_maskload_pd: // llvm.x86.avx.maskload.pd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_sse2_sqrt_pd: // llvm.x86.sse2.sqrt.pd
case Intrinsic::x86_sse2_sqrt_sd: // llvm.x86.sse2.sqrt.sd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_sse2_cvtsi2sd: // llvm.x86.sse2.cvtsi2sd
case Intrinsic::x86_sse41_round_pd: // llvm.x86.sse41.round.pd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse2_cvtsi642sd: // llvm.x86.sse2.cvtsi642sd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(IntegerType::get(Context, 64));
break;
case Intrinsic::x86_avx_vpermil_pd: // llvm.x86.avx.vpermil.pd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse2_add_sd: // llvm.x86.sse2.add.sd
case Intrinsic::x86_sse2_div_sd: // llvm.x86.sse2.div.sd
case Intrinsic::x86_sse2_max_pd: // llvm.x86.sse2.max.pd
case Intrinsic::x86_sse2_max_sd: // llvm.x86.sse2.max.sd
case Intrinsic::x86_sse2_min_pd: // llvm.x86.sse2.min.pd
case Intrinsic::x86_sse2_min_sd: // llvm.x86.sse2.min.sd
case Intrinsic::x86_sse2_mul_sd: // llvm.x86.sse2.mul.sd
case Intrinsic::x86_sse2_sub_sd: // llvm.x86.sse2.sub.sd
case Intrinsic::x86_sse3_addsub_pd: // llvm.x86.sse3.addsub.pd
case Intrinsic::x86_sse3_hadd_pd: // llvm.x86.sse3.hadd.pd
case Intrinsic::x86_sse3_hsub_pd: // llvm.x86.sse3.hsub.pd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_sse41_blendpd: // llvm.x86.sse41.blendpd
case Intrinsic::x86_sse41_dppd: // llvm.x86.sse41.dppd
case Intrinsic::x86_sse41_round_sd: // llvm.x86.sse41.round.sd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse2_cmp_pd: // llvm.x86.sse2.cmp.pd
case Intrinsic::x86_sse2_cmp_sd: // llvm.x86.sse2.cmp.sd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse41_blendvpd: // llvm.x86.sse41.blendvpd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_avx_vpermilvar_pd: // llvm.x86.avx.vpermilvar.pd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
break;
case Intrinsic::x86_sse2_cvtss2sd: // llvm.x86.sse2.cvtss2sd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_sse2_cvtps2pd: // llvm.x86.sse2.cvtps2pd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_avx_vextractf128_pd_256: // llvm.x86.avx.vextractf128.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse2_cvtdq2pd: // llvm.x86.sse2.cvtdq2pd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
break;
case Intrinsic::x86_sse_cvtpi2pd: // llvm.x86.sse.cvtpi2pd
ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
ArgTys.push_back(Type::getX86_MMXTy(Context));
break;
case Intrinsic::x86_sse41_movntdqa: // llvm.x86.sse41.movntdqa
ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::x86_sse41_pmovsxbq: // llvm.x86.sse41.pmovsxbq
case Intrinsic::x86_sse41_pmovzxbq: // llvm.x86.sse41.pmovzxbq
ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
break;
case Intrinsic::x86_sse2_psad_bw: // llvm.x86.sse2.psad.bw
ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
break;
case Intrinsic::x86_aesni_aesimc: // llvm.x86.aesni.aesimc
ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
break;
case Intrinsic::x86_sse2_psll_dq: // llvm.x86.sse2.psll.dq
case Intrinsic::x86_sse2_psll_dq_bs: // llvm.x86.sse2.psll.dq.bs
case Intrinsic::x86_sse2_pslli_q: // llvm.x86.sse2.pslli.q
case Intrinsic::x86_sse2_psrl_dq: // llvm.x86.sse2.psrl.dq
case Intrinsic::x86_sse2_psrl_dq_bs: // llvm.x86.sse2.psrl.dq.bs
case Intrinsic::x86_sse2_psrli_q: // llvm.x86.sse2.psrli.q
ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_aesni_aeskeygenassist: // llvm.x86.aesni.aeskeygenassist
ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_aesni_aesdec: // llvm.x86.aesni.aesdec
case Intrinsic::x86_aesni_aesdeclast: // llvm.x86.aesni.aesdeclast
case Intrinsic::x86_aesni_aesenc: // llvm.x86.aesni.aesenc
case Intrinsic::x86_aesni_aesenclast: // llvm.x86.aesni.aesenclast
case Intrinsic::x86_sse2_psll_q: // llvm.x86.sse2.psll.q
case Intrinsic::x86_sse2_psrl_q: // llvm.x86.sse2.psrl.q
case Intrinsic::x86_sse41_pcmpeqq: // llvm.x86.sse41.pcmpeqq
case Intrinsic::x86_sse42_pcmpgtq: // llvm.x86.sse42.pcmpgtq
ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
break;
case Intrinsic::x86_sse41_pmovsxdq: // llvm.x86.sse41.pmovsxdq
case Intrinsic::x86_sse41_pmovzxdq: // llvm.x86.sse41.pmovzxdq
ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
break;
case Intrinsic::x86_sse2_pmulu_dq: // llvm.x86.sse2.pmulu.dq
case Intrinsic::x86_sse41_pmuldq: // llvm.x86.sse41.pmuldq
ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
break;
case Intrinsic::x86_sse41_pmovsxwq: // llvm.x86.sse41.pmovsxwq
case Intrinsic::x86_sse41_pmovzxwq: // llvm.x86.sse41.pmovzxwq
ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
break;
case Intrinsic::x86_avx_ldu_dq_256: // llvm.x86.avx.ldu.dq.256
case Intrinsic::x86_avx_loadu_dq_256: // llvm.x86.avx.loadu.dq.256
ResultTy = VectorType::get(IntegerType::get(Context, 8), 32);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::x86_avx_vbroadcastss: // llvm.x86.avx.vbroadcastss
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::x86_avx_maskload_ps: // llvm.x86.avx.maskload.ps
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_sse2_cvtpd2ps: // llvm.x86.sse2.cvtpd2ps
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_sse_rcp_ps: // llvm.x86.sse.rcp.ps
case Intrinsic::x86_sse_rcp_ss: // llvm.x86.sse.rcp.ss
case Intrinsic::x86_sse_rsqrt_ps: // llvm.x86.sse.rsqrt.ps
case Intrinsic::x86_sse_rsqrt_ss: // llvm.x86.sse.rsqrt.ss
case Intrinsic::x86_sse_sqrt_ps: // llvm.x86.sse.sqrt.ps
case Intrinsic::x86_sse_sqrt_ss: // llvm.x86.sse.sqrt.ss
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_sse41_round_ps: // llvm.x86.sse41.round.ps
case Intrinsic::x86_sse_cvtsi2ss: // llvm.x86.sse.cvtsi2ss
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse_cvtsi642ss: // llvm.x86.sse.cvtsi642ss
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 64));
break;
case Intrinsic::x86_avx_vpermil_ps: // llvm.x86.avx.vpermil.ps
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse2_cvtsd2ss: // llvm.x86.sse2.cvtsd2ss
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_sse3_addsub_ps: // llvm.x86.sse3.addsub.ps
case Intrinsic::x86_sse3_hadd_ps: // llvm.x86.sse3.hadd.ps
case Intrinsic::x86_sse3_hsub_ps: // llvm.x86.sse3.hsub.ps
case Intrinsic::x86_sse_add_ss: // llvm.x86.sse.add.ss
case Intrinsic::x86_sse_div_ss: // llvm.x86.sse.div.ss
case Intrinsic::x86_sse_max_ps: // llvm.x86.sse.max.ps
case Intrinsic::x86_sse_max_ss: // llvm.x86.sse.max.ss
case Intrinsic::x86_sse_min_ps: // llvm.x86.sse.min.ps
case Intrinsic::x86_sse_min_ss: // llvm.x86.sse.min.ss
case Intrinsic::x86_sse_mul_ss: // llvm.x86.sse.mul.ss
case Intrinsic::x86_sse_sub_ss: // llvm.x86.sse.sub.ss
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_sse41_blendps: // llvm.x86.sse41.blendps
case Intrinsic::x86_sse41_dpps: // llvm.x86.sse41.dpps
case Intrinsic::x86_sse41_insertps: // llvm.x86.sse41.insertps
case Intrinsic::x86_sse41_round_ss: // llvm.x86.sse41.round.ss
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse_cmp_ps: // llvm.x86.sse.cmp.ps
case Intrinsic::x86_sse_cmp_ss: // llvm.x86.sse.cmp.ss
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse41_blendvps: // llvm.x86.sse41.blendvps
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_avx_vpermilvar_ps: // llvm.x86.avx.vpermilvar.ps
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
break;
case Intrinsic::x86_sse_cvtpi2ps: // llvm.x86.sse.cvtpi2ps
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(Type::getX86_MMXTy(Context));
break;
case Intrinsic::x86_avx_cvt_pd2_ps_256: // llvm.x86.avx.cvt.pd2.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
break;
case Intrinsic::x86_sse2_cvtdq2ps: // llvm.x86.sse2.cvtdq2ps
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
break;
case Intrinsic::x86_avx_vextractf128_ps_256: // llvm.x86.avx.vextractf128.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_avx_loadu_pd_256: // llvm.x86.avx.loadu.pd.256
case Intrinsic::x86_avx_vbroadcast_sd_256: // llvm.x86.avx.vbroadcast.sd.256
case Intrinsic::x86_avx_vbroadcastf128_pd_256: // llvm.x86.avx.vbroadcastf128.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::x86_avx_maskload_pd_256: // llvm.x86.avx.maskload.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
break;
case Intrinsic::x86_avx_cvt_ps2_pd_256: // llvm.x86.avx.cvt.ps2.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_avx_sqrt_pd_256: // llvm.x86.avx.sqrt.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
break;
case Intrinsic::x86_avx_round_pd_256: // llvm.x86.avx.round.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_avx_vpermil_pd_256: // llvm.x86.avx.vpermil.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_avx_vinsertf128_pd_256: // llvm.x86.avx.vinsertf128.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_avx_addsub_pd_256: // llvm.x86.avx.addsub.pd.256
case Intrinsic::x86_avx_hadd_pd_256: // llvm.x86.avx.hadd.pd.256
case Intrinsic::x86_avx_hsub_pd_256: // llvm.x86.avx.hsub.pd.256
case Intrinsic::x86_avx_max_pd_256: // llvm.x86.avx.max.pd.256
case Intrinsic::x86_avx_min_pd_256: // llvm.x86.avx.min.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
break;
case Intrinsic::x86_avx_blend_pd_256: // llvm.x86.avx.blend.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_avx_cmp_pd_256: // llvm.x86.avx.cmp.pd.256
case Intrinsic::x86_avx_vperm2f128_pd_256: // llvm.x86.avx.vperm2f128.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_avx_blendv_pd_256: // llvm.x86.avx.blendv.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
break;
case Intrinsic::x86_avx_vpermilvar_pd_256: // llvm.x86.avx.vpermilvar.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4));
break;
case Intrinsic::x86_avx_cvtdq2_pd_256: // llvm.x86.avx.cvtdq2.pd.256
ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
break;
case Intrinsic::x86_sse41_pmovsxbd: // llvm.x86.sse41.pmovsxbd
case Intrinsic::x86_sse41_pmovzxbd: // llvm.x86.sse41.pmovzxbd
ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
break;
case Intrinsic::x86_sse2_cvtpd2dq: // llvm.x86.sse2.cvtpd2dq
case Intrinsic::x86_sse2_cvttpd2dq: // llvm.x86.sse2.cvttpd2dq
ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_sse2_cvtps2dq: // llvm.x86.sse2.cvtps2dq
case Intrinsic::x86_sse2_cvttps2dq: // llvm.x86.sse2.cvttps2dq
ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_avx_cvt_pd2dq_256: // llvm.x86.avx.cvt.pd2dq.256
case Intrinsic::x86_avx_cvtt_pd2dq_256: // llvm.x86.avx.cvtt.pd2dq.256
ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
break;
case Intrinsic::x86_ssse3_pabs_d_128: // llvm.x86.ssse3.pabs.d.128
ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
break;
case Intrinsic::x86_sse2_pslli_d: // llvm.x86.sse2.pslli.d
case Intrinsic::x86_sse2_psrai_d: // llvm.x86.sse2.psrai.d
case Intrinsic::x86_sse2_psrli_d: // llvm.x86.sse2.psrli.d
ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse2_pcmpeq_d: // llvm.x86.sse2.pcmpeq.d
case Intrinsic::x86_sse2_pcmpgt_d: // llvm.x86.sse2.pcmpgt.d
case Intrinsic::x86_sse2_psll_d: // llvm.x86.sse2.psll.d
case Intrinsic::x86_sse2_psra_d: // llvm.x86.sse2.psra.d
case Intrinsic::x86_sse2_psrl_d: // llvm.x86.sse2.psrl.d
case Intrinsic::x86_sse41_pmaxsd: // llvm.x86.sse41.pmaxsd
case Intrinsic::x86_sse41_pmaxud: // llvm.x86.sse41.pmaxud
case Intrinsic::x86_sse41_pminsd: // llvm.x86.sse41.pminsd
case Intrinsic::x86_sse41_pminud: // llvm.x86.sse41.pminud
case Intrinsic::x86_ssse3_phadd_d_128: // llvm.x86.ssse3.phadd.d.128
case Intrinsic::x86_ssse3_phadd_sw_128: // llvm.x86.ssse3.phadd.sw.128
case Intrinsic::x86_ssse3_phsub_d_128: // llvm.x86.ssse3.phsub.d.128
case Intrinsic::x86_ssse3_psign_d_128: // llvm.x86.ssse3.psign.d.128
ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
break;
case Intrinsic::x86_sse41_pmovsxwd: // llvm.x86.sse41.pmovsxwd
case Intrinsic::x86_sse41_pmovzxwd: // llvm.x86.sse41.pmovzxwd
ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
break;
case Intrinsic::x86_sse2_pmadd_wd: // llvm.x86.sse2.pmadd.wd
ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
break;
case Intrinsic::x86_avx_vextractf128_si_256: // llvm.x86.avx.vextractf128.si.256
ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_avx_loadu_ps_256: // llvm.x86.avx.loadu.ps.256
case Intrinsic::x86_avx_vbroadcastf128_ps_256: // llvm.x86.avx.vbroadcastf128.ps.256
case Intrinsic::x86_avx_vbroadcastss_256: // llvm.x86.avx.vbroadcastss.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
break;
case Intrinsic::x86_avx_maskload_ps_256: // llvm.x86.avx.maskload.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
break;
case Intrinsic::x86_avx_rcp_ps_256: // llvm.x86.avx.rcp.ps.256
case Intrinsic::x86_avx_rsqrt_ps_256: // llvm.x86.avx.rsqrt.ps.256
case Intrinsic::x86_avx_sqrt_ps_256: // llvm.x86.avx.sqrt.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
break;
case Intrinsic::x86_avx_round_ps_256: // llvm.x86.avx.round.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_avx_vpermil_ps_256: // llvm.x86.avx.vpermil.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_avx_vinsertf128_ps_256: // llvm.x86.avx.vinsertf128.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_avx_addsub_ps_256: // llvm.x86.avx.addsub.ps.256
case Intrinsic::x86_avx_hadd_ps_256: // llvm.x86.avx.hadd.ps.256
case Intrinsic::x86_avx_hsub_ps_256: // llvm.x86.avx.hsub.ps.256
case Intrinsic::x86_avx_max_ps_256: // llvm.x86.avx.max.ps.256
case Intrinsic::x86_avx_min_ps_256: // llvm.x86.avx.min.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
break;
case Intrinsic::x86_avx_blend_ps_256: // llvm.x86.avx.blend.ps.256
case Intrinsic::x86_avx_dp_ps_256: // llvm.x86.avx.dp.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_avx_cmp_ps_256: // llvm.x86.avx.cmp.ps.256
case Intrinsic::x86_avx_vperm2f128_ps_256: // llvm.x86.avx.vperm2f128.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_avx_blendv_ps_256: // llvm.x86.avx.blendv.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
break;
case Intrinsic::x86_avx_vpermilvar_ps_256: // llvm.x86.avx.vpermilvar.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
break;
case Intrinsic::x86_avx_cvtdq2_ps_256: // llvm.x86.avx.cvtdq2.ps.256
ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
break;
case Intrinsic::x86_sse41_pmovsxbw: // llvm.x86.sse41.pmovsxbw
case Intrinsic::x86_sse41_pmovzxbw: // llvm.x86.sse41.pmovzxbw
ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
break;
case Intrinsic::x86_sse2_packssdw_128: // llvm.x86.sse2.packssdw.128
case Intrinsic::x86_sse41_packusdw: // llvm.x86.sse41.packusdw
ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
break;
case Intrinsic::x86_sse41_phminposuw: // llvm.x86.sse41.phminposuw
case Intrinsic::x86_ssse3_pabs_w_128: // llvm.x86.ssse3.pabs.w.128
ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
break;
case Intrinsic::x86_sse2_pslli_w: // llvm.x86.sse2.pslli.w
case Intrinsic::x86_sse2_psrai_w: // llvm.x86.sse2.psrai.w
case Intrinsic::x86_sse2_psrli_w: // llvm.x86.sse2.psrli.w
ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse2_padds_w: // llvm.x86.sse2.padds.w
case Intrinsic::x86_sse2_paddus_w: // llvm.x86.sse2.paddus.w
case Intrinsic::x86_sse2_pavg_w: // llvm.x86.sse2.pavg.w
case Intrinsic::x86_sse2_pcmpeq_w: // llvm.x86.sse2.pcmpeq.w
case Intrinsic::x86_sse2_pcmpgt_w: // llvm.x86.sse2.pcmpgt.w
case Intrinsic::x86_sse2_pmaxs_w: // llvm.x86.sse2.pmaxs.w
case Intrinsic::x86_sse2_pmins_w: // llvm.x86.sse2.pmins.w
case Intrinsic::x86_sse2_pmulh_w: // llvm.x86.sse2.pmulh.w
case Intrinsic::x86_sse2_pmulhu_w: // llvm.x86.sse2.pmulhu.w
case Intrinsic::x86_sse2_psll_w: // llvm.x86.sse2.psll.w
case Intrinsic::x86_sse2_psra_w: // llvm.x86.sse2.psra.w
case Intrinsic::x86_sse2_psrl_w: // llvm.x86.sse2.psrl.w
case Intrinsic::x86_sse2_psubs_w: // llvm.x86.sse2.psubs.w
case Intrinsic::x86_sse2_psubus_w: // llvm.x86.sse2.psubus.w
case Intrinsic::x86_sse41_pmaxuw: // llvm.x86.sse41.pmaxuw
case Intrinsic::x86_sse41_pminuw: // llvm.x86.sse41.pminuw
case Intrinsic::x86_ssse3_phadd_w_128: // llvm.x86.ssse3.phadd.w.128
case Intrinsic::x86_ssse3_phsub_sw_128: // llvm.x86.ssse3.phsub.sw.128
case Intrinsic::x86_ssse3_phsub_w_128: // llvm.x86.ssse3.phsub.w.128
case Intrinsic::x86_ssse3_pmadd_ub_sw_128: // llvm.x86.ssse3.pmadd.ub.sw.128
case Intrinsic::x86_ssse3_pmul_hr_sw_128: // llvm.x86.ssse3.pmul.hr.sw.128
case Intrinsic::x86_ssse3_psign_w_128: // llvm.x86.ssse3.psign.w.128
ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
break;
case Intrinsic::x86_sse41_pblendw: // llvm.x86.sse41.pblendw
ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_avx_cvt_ps2dq_256: // llvm.x86.avx.cvt.ps2dq.256
case Intrinsic::x86_avx_cvtt_ps2dq_256: // llvm.x86.avx.cvtt.ps2dq.256
ResultTy = VectorType::get(IntegerType::get(Context, 32), 8);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
break;
case Intrinsic::x86_avx_vinsertf128_si_256: // llvm.x86.avx.vinsertf128.si.256
ResultTy = VectorType::get(IntegerType::get(Context, 32), 8);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_avx_vperm2f128_si_256: // llvm.x86.avx.vperm2f128.si.256
ResultTy = VectorType::get(IntegerType::get(Context, 32), 8);
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_sse_cvtpd2pi: // llvm.x86.sse.cvtpd2pi
case Intrinsic::x86_sse_cvttpd2pi: // llvm.x86.sse.cvttpd2pi
ResultTy = Type::getX86_MMXTy(Context);
ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
break;
case Intrinsic::x86_sse_cvtps2pi: // llvm.x86.sse.cvtps2pi
case Intrinsic::x86_sse_cvttps2pi: // llvm.x86.sse.cvttps2pi
ResultTy = Type::getX86_MMXTy(Context);
ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
break;
case Intrinsic::x86_3dnow_pf2id: // llvm.x86.3dnow.pf2id
case Intrinsic::x86_3dnow_pfrcp: // llvm.x86.3dnow.pfrcp
case Intrinsic::x86_3dnow_pfrsqrt: // llvm.x86.3dnow.pfrsqrt
case Intrinsic::x86_3dnow_pi2fd: // llvm.x86.3dnow.pi2fd
case Intrinsic::x86_3dnowa_pf2iw: // llvm.x86.3dnowa.pf2iw
case Intrinsic::x86_3dnowa_pi2fw: // llvm.x86.3dnowa.pi2fw
case Intrinsic::x86_3dnowa_pswapd: // llvm.x86.3dnowa.pswapd
case Intrinsic::x86_ssse3_pabs_b: // llvm.x86.ssse3.pabs.b
case Intrinsic::x86_ssse3_pabs_d: // llvm.x86.ssse3.pabs.d
case Intrinsic::x86_ssse3_pabs_w: // llvm.x86.ssse3.pabs.w
ResultTy = Type::getX86_MMXTy(Context);
ArgTys.push_back(Type::getX86_MMXTy(Context));
break;
case Intrinsic::x86_mmx_pslli_d: // llvm.x86.mmx.pslli.d
case Intrinsic::x86_mmx_pslli_q: // llvm.x86.mmx.pslli.q
case Intrinsic::x86_mmx_pslli_w: // llvm.x86.mmx.pslli.w
case Intrinsic::x86_mmx_psrai_d: // llvm.x86.mmx.psrai.d
case Intrinsic::x86_mmx_psrai_w: // llvm.x86.mmx.psrai.w
case Intrinsic::x86_mmx_psrli_d: // llvm.x86.mmx.psrli.d
case Intrinsic::x86_mmx_psrli_q: // llvm.x86.mmx.psrli.q
case Intrinsic::x86_mmx_psrli_w: // llvm.x86.mmx.psrli.w
ResultTy = Type::getX86_MMXTy(Context);
ArgTys.push_back(Type::getX86_MMXTy(Context));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_mmx_pinsr_w: // llvm.x86.mmx.pinsr.w
ResultTy = Type::getX86_MMXTy(Context);
ArgTys.push_back(Type::getX86_MMXTy(Context));
ArgTys.push_back(IntegerType::get(Context, 32));
ArgTys.push_back(IntegerType::get(Context, 32));
break;
case Intrinsic::x86_sse_pshuf_w: // llvm.x86.sse.pshuf.w
ResultTy = Type::getX86_MMXTy(Context);
ArgTys.push_back(Type::getX86_MMXTy(Context));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
case Intrinsic::x86_3dnow_pavgusb: // llvm.x86.3dnow.pavgusb
case Intrinsic::x86_3dnow_pfacc: // llvm.x86.3dnow.pfacc
case Intrinsic::x86_3dnow_pfadd: // llvm.x86.3dnow.pfadd
case Intrinsic::x86_3dnow_pfcmpeq: // llvm.x86.3dnow.pfcmpeq
case Intrinsic::x86_3dnow_pfcmpge: // llvm.x86.3dnow.pfcmpge
case Intrinsic::x86_3dnow_pfcmpgt: // llvm.x86.3dnow.pfcmpgt
case Intrinsic::x86_3dnow_pfmax: // llvm.x86.3dnow.pfmax
case Intrinsic::x86_3dnow_pfmin: // llvm.x86.3dnow.pfmin
case Intrinsic::x86_3dnow_pfmul: // llvm.x86.3dnow.pfmul
case Intrinsic::x86_3dnow_pfrcpit1: // llvm.x86.3dnow.pfrcpit1
case Intrinsic::x86_3dnow_pfrcpit2: // llvm.x86.3dnow.pfrcpit2
case Intrinsic::x86_3dnow_pfrsqit1: // llvm.x86.3dnow.pfrsqit1
case Intrinsic::x86_3dnow_pfsub: // llvm.x86.3dnow.pfsub
case Intrinsic::x86_3dnow_pfsubr: // llvm.x86.3dnow.pfsubr
case Intrinsic::x86_3dnow_pmulhrw: // llvm.x86.3dnow.pmulhrw
case Intrinsic::x86_3dnowa_pfnacc: // llvm.x86.3dnowa.pfnacc
case Intrinsic::x86_3dnowa_pfpnacc: // llvm.x86.3dnowa.pfpnacc
case Intrinsic::x86_mmx_packssdw: // llvm.x86.mmx.packssdw
case Intrinsic::x86_mmx_packsswb: // llvm.x86.mmx.packsswb
case Intrinsic::x86_mmx_packuswb: // llvm.x86.mmx.packuswb
case Intrinsic::x86_mmx_padd_b: // llvm.x86.mmx.padd.b
case Intrinsic::x86_mmx_padd_d: // llvm.x86.mmx.padd.d
case Intrinsic::x86_mmx_padd_q: // llvm.x86.mmx.padd.q
case Intrinsic::x86_mmx_padd_w: // llvm.x86.mmx.padd.w
case Intrinsic::x86_mmx_padds_b: // llvm.x86.mmx.padds.b
case Intrinsic::x86_mmx_padds_w: // llvm.x86.mmx.padds.w
case Intrinsic::x86_mmx_paddus_b: // llvm.x86.mmx.paddus.b
case Intrinsic::x86_mmx_paddus_w: // llvm.x86.mmx.paddus.w
case Intrinsic::x86_mmx_pand: // llvm.x86.mmx.pand
case Intrinsic::x86_mmx_pandn: // llvm.x86.mmx.pandn
case Intrinsic::x86_mmx_pavg_b: // llvm.x86.mmx.pavg.b
case Intrinsic::x86_mmx_pavg_w: // llvm.x86.mmx.pavg.w
case Intrinsic::x86_mmx_pcmpeq_b: // llvm.x86.mmx.pcmpeq.b
case Intrinsic::x86_mmx_pcmpeq_d: // llvm.x86.mmx.pcmpeq.d
case Intrinsic::x86_mmx_pcmpeq_w: // llvm.x86.mmx.pcmpeq.w
case Intrinsic::x86_mmx_pcmpgt_b: // llvm.x86.mmx.pcmpgt.b
case Intrinsic::x86_mmx_pcmpgt_d: // llvm.x86.mmx.pcmpgt.d
case Intrinsic::x86_mmx_pcmpgt_w: // llvm.x86.mmx.pcmpgt.w
case Intrinsic::x86_mmx_pmadd_wd: // llvm.x86.mmx.pmadd.wd
case Intrinsic::x86_mmx_pmaxs_w: // llvm.x86.mmx.pmaxs.w
case Intrinsic::x86_mmx_pmaxu_b: // llvm.x86.mmx.pmaxu.b
case Intrinsic::x86_mmx_pmins_w: // llvm.x86.mmx.pmins.w
case Intrinsic::x86_mmx_pminu_b: // llvm.x86.mmx.pminu.b
case Intrinsic::x86_mmx_pmulh_w: // llvm.x86.mmx.pmulh.w
case Intrinsic::x86_mmx_pmulhu_w: // llvm.x86.mmx.pmulhu.w
case Intrinsic::x86_mmx_pmull_w: // llvm.x86.mmx.pmull.w
case Intrinsic::x86_mmx_pmulu_dq: // llvm.x86.mmx.pmulu.dq
case Intrinsic::x86_mmx_por: // llvm.x86.mmx.por
case Intrinsic::x86_mmx_psad_bw: // llvm.x86.mmx.psad.bw
case Intrinsic::x86_mmx_psll_d: // llvm.x86.mmx.psll.d
case Intrinsic::x86_mmx_psll_q: // llvm.x86.mmx.psll.q
case Intrinsic::x86_mmx_psll_w: // llvm.x86.mmx.psll.w
case Intrinsic::x86_mmx_psra_d: // llvm.x86.mmx.psra.d
case Intrinsic::x86_mmx_psra_w: // llvm.x86.mmx.psra.w
case Intrinsic::x86_mmx_psrl_d: // llvm.x86.mmx.psrl.d
case Intrinsic::x86_mmx_psrl_q: // llvm.x86.mmx.psrl.q
case Intrinsic::x86_mmx_psrl_w: // llvm.x86.mmx.psrl.w
case Intrinsic::x86_mmx_psub_b: // llvm.x86.mmx.psub.b
case Intrinsic::x86_mmx_psub_d: // llvm.x86.mmx.psub.d
case Intrinsic::x86_mmx_psub_q: // llvm.x86.mmx.psub.q
case Intrinsic::x86_mmx_psub_w: // llvm.x86.mmx.psub.w
case Intrinsic::x86_mmx_psubs_b: // llvm.x86.mmx.psubs.b
case Intrinsic::x86_mmx_psubs_w: // llvm.x86.mmx.psubs.w
case Intrinsic::x86_mmx_psubus_b: // llvm.x86.mmx.psubus.b
case Intrinsic::x86_mmx_psubus_w: // llvm.x86.mmx.psubus.w
case Intrinsic::x86_mmx_punpckhbw: // llvm.x86.mmx.punpckhbw
case Intrinsic::x86_mmx_punpckhdq: // llvm.x86.mmx.punpckhdq
case Intrinsic::x86_mmx_punpckhwd: // llvm.x86.mmx.punpckhwd
case Intrinsic::x86_mmx_punpcklbw: // llvm.x86.mmx.punpcklbw
case Intrinsic::x86_mmx_punpckldq: // llvm.x86.mmx.punpckldq
case Intrinsic::x86_mmx_punpcklwd: // llvm.x86.mmx.punpcklwd
case Intrinsic::x86_mmx_pxor: // llvm.x86.mmx.pxor
case Intrinsic::x86_ssse3_phadd_d: // llvm.x86.ssse3.phadd.d
case Intrinsic::x86_ssse3_phadd_sw: // llvm.x86.ssse3.phadd.sw
case Intrinsic::x86_ssse3_phadd_w: // llvm.x86.ssse3.phadd.w
case Intrinsic::x86_ssse3_phsub_d: // llvm.x86.ssse3.phsub.d
case Intrinsic::x86_ssse3_phsub_sw: // llvm.x86.ssse3.phsub.sw
case Intrinsic::x86_ssse3_phsub_w: // llvm.x86.ssse3.phsub.w
case Intrinsic::x86_ssse3_pmadd_ub_sw: // llvm.x86.ssse3.pmadd.ub.sw
case Intrinsic::x86_ssse3_pmul_hr_sw: // llvm.x86.ssse3.pmul.hr.sw
case Intrinsic::x86_ssse3_pshuf_b: // llvm.x86.ssse3.pshuf.b
case Intrinsic::x86_ssse3_psign_b: // llvm.x86.ssse3.psign.b
case Intrinsic::x86_ssse3_psign_d: // llvm.x86.ssse3.psign.d
case Intrinsic::x86_ssse3_psign_w: // llvm.x86.ssse3.psign.w
ResultTy = Type::getX86_MMXTy(Context);
ArgTys.push_back(Type::getX86_MMXTy(Context));
ArgTys.push_back(Type::getX86_MMXTy(Context));
break;
case Intrinsic::x86_mmx_palignr_b: // llvm.x86.mmx.palignr.b
ResultTy = Type::getX86_MMXTy(Context);
ArgTys.push_back(Type::getX86_MMXTy(Context));
ArgTys.push_back(Type::getX86_MMXTy(Context));
ArgTys.push_back(IntegerType::get(Context, 8));
break;
}
#endif
// Add parameter attributes that are not common to all intrinsics.
#ifdef GET_INTRINSIC_ATTRIBUTES
AttrListPtr Intrinsic::getAttributes(ID id) {
AttributeWithIndex AWI[3];
unsigned NumAttrs = 0;
switch (id) {
default: break;
case Intrinsic::bswap:
case Intrinsic::convert_from_fp16:
case Intrinsic::convert_to_fp16:
case Intrinsic::ctlz:
case Intrinsic::ctpop:
case Intrinsic::cttz:
case Intrinsic::dbg_declare:
case Intrinsic::dbg_value:
case Intrinsic::eh_sjlj_callsite:
case Intrinsic::eh_sjlj_lsda:
case Intrinsic::eh_typeid_for:
case Intrinsic::expect:
case Intrinsic::fma:
case Intrinsic::frameaddress:
case Intrinsic::objectsize:
case Intrinsic::returnaddress:
case Intrinsic::sadd_with_overflow:
case Intrinsic::smul_with_overflow:
case Intrinsic::ssub_with_overflow:
case Intrinsic::uadd_with_overflow:
case Intrinsic::umul_with_overflow:
case Intrinsic::usub_with_overflow:
case Intrinsic::x86_3dnow_pavgusb:
case Intrinsic::x86_3dnow_pf2id:
case Intrinsic::x86_3dnow_pfacc:
case Intrinsic::x86_3dnow_pfadd:
case Intrinsic::x86_3dnow_pfcmpeq:
case Intrinsic::x86_3dnow_pfcmpge:
case Intrinsic::x86_3dnow_pfcmpgt:
case Intrinsic::x86_3dnow_pfmax:
case Intrinsic::x86_3dnow_pfmin:
case Intrinsic::x86_3dnow_pfmul:
case Intrinsic::x86_3dnow_pfrcp:
case Intrinsic::x86_3dnow_pfrcpit1:
case Intrinsic::x86_3dnow_pfrcpit2:
case Intrinsic::x86_3dnow_pfrsqit1:
case Intrinsic::x86_3dnow_pfrsqrt:
case Intrinsic::x86_3dnow_pfsub:
case Intrinsic::x86_3dnow_pfsubr:
case Intrinsic::x86_3dnow_pi2fd:
case Intrinsic::x86_3dnow_pmulhrw:
case Intrinsic::x86_3dnowa_pf2iw:
case Intrinsic::x86_3dnowa_pfnacc:
case Intrinsic::x86_3dnowa_pfpnacc:
case Intrinsic::x86_3dnowa_pi2fw:
case Intrinsic::x86_3dnowa_pswapd:
case Intrinsic::x86_aesni_aesdec:
case Intrinsic::x86_aesni_aesdeclast:
case Intrinsic::x86_aesni_aesenc:
case Intrinsic::x86_aesni_aesenclast:
case Intrinsic::x86_aesni_aesimc:
case Intrinsic::x86_aesni_aeskeygenassist:
case Intrinsic::x86_avx_addsub_pd_256:
case Intrinsic::x86_avx_addsub_ps_256:
case Intrinsic::x86_avx_blend_pd_256:
case Intrinsic::x86_avx_blend_ps_256:
case Intrinsic::x86_avx_blendv_pd_256:
case Intrinsic::x86_avx_blendv_ps_256:
case Intrinsic::x86_avx_cmp_pd_256:
case Intrinsic::x86_avx_cmp_ps_256:
case Intrinsic::x86_avx_cvt_pd2_ps_256:
case Intrinsic::x86_avx_cvt_pd2dq_256:
case Intrinsic::x86_avx_cvt_ps2_pd_256:
case Intrinsic::x86_avx_cvt_ps2dq_256:
case Intrinsic::x86_avx_cvtdq2_pd_256:
case Intrinsic::x86_avx_cvtdq2_ps_256:
case Intrinsic::x86_avx_cvtt_pd2dq_256:
case Intrinsic::x86_avx_cvtt_ps2dq_256:
case Intrinsic::x86_avx_dp_ps_256:
case Intrinsic::x86_avx_hadd_pd_256:
case Intrinsic::x86_avx_hadd_ps_256:
case Intrinsic::x86_avx_hsub_pd_256:
case Intrinsic::x86_avx_hsub_ps_256:
case Intrinsic::x86_avx_max_pd_256:
case Intrinsic::x86_avx_max_ps_256:
case Intrinsic::x86_avx_min_pd_256:
case Intrinsic::x86_avx_min_ps_256:
case Intrinsic::x86_avx_movmsk_pd_256:
case Intrinsic::x86_avx_movmsk_ps_256:
case Intrinsic::x86_avx_ptestc_256:
case Intrinsic::x86_avx_ptestnzc_256:
case Intrinsic::x86_avx_ptestz_256:
case Intrinsic::x86_avx_rcp_ps_256:
case Intrinsic::x86_avx_round_pd_256:
case Intrinsic::x86_avx_round_ps_256:
case Intrinsic::x86_avx_rsqrt_ps_256:
case Intrinsic::x86_avx_sqrt_pd_256:
case Intrinsic::x86_avx_sqrt_ps_256:
case Intrinsic::x86_avx_vextractf128_pd_256:
case Intrinsic::x86_avx_vextractf128_ps_256:
case Intrinsic::x86_avx_vextractf128_si_256:
case Intrinsic::x86_avx_vinsertf128_pd_256:
case Intrinsic::x86_avx_vinsertf128_ps_256:
case Intrinsic::x86_avx_vinsertf128_si_256:
case Intrinsic::x86_avx_vperm2f128_pd_256:
case Intrinsic::x86_avx_vperm2f128_ps_256:
case Intrinsic::x86_avx_vperm2f128_si_256:
case Intrinsic::x86_avx_vpermil_pd:
case Intrinsic::x86_avx_vpermil_pd_256:
case Intrinsic::x86_avx_vpermil_ps:
case Intrinsic::x86_avx_vpermil_ps_256:
case Intrinsic::x86_avx_vpermilvar_pd:
case Intrinsic::x86_avx_vpermilvar_pd_256:
case Intrinsic::x86_avx_vpermilvar_ps:
case Intrinsic::x86_avx_vpermilvar_ps_256:
case Intrinsic::x86_avx_vtestc_pd:
case Intrinsic::x86_avx_vtestc_pd_256:
case Intrinsic::x86_avx_vtestc_ps:
case Intrinsic::x86_avx_vtestc_ps_256:
case Intrinsic::x86_avx_vtestnzc_pd:
case Intrinsic::x86_avx_vtestnzc_pd_256:
case Intrinsic::x86_avx_vtestnzc_ps:
case Intrinsic::x86_avx_vtestnzc_ps_256:
case Intrinsic::x86_avx_vtestz_pd:
case Intrinsic::x86_avx_vtestz_pd_256:
case Intrinsic::x86_avx_vtestz_ps:
case Intrinsic::x86_avx_vtestz_ps_256:
case Intrinsic::x86_mmx_packssdw:
case Intrinsic::x86_mmx_packsswb:
case Intrinsic::x86_mmx_packuswb:
case Intrinsic::x86_mmx_padd_b:
case Intrinsic::x86_mmx_padd_d:
case Intrinsic::x86_mmx_padd_q:
case Intrinsic::x86_mmx_padd_w:
case Intrinsic::x86_mmx_padds_b:
case Intrinsic::x86_mmx_padds_w:
case Intrinsic::x86_mmx_paddus_b:
case Intrinsic::x86_mmx_paddus_w:
case Intrinsic::x86_mmx_palignr_b:
case Intrinsic::x86_mmx_pand:
case Intrinsic::x86_mmx_pandn:
case Intrinsic::x86_mmx_pavg_b:
case Intrinsic::x86_mmx_pavg_w:
case Intrinsic::x86_mmx_pcmpeq_b:
case Intrinsic::x86_mmx_pcmpeq_d:
case Intrinsic::x86_mmx_pcmpeq_w:
case Intrinsic::x86_mmx_pcmpgt_b:
case Intrinsic::x86_mmx_pcmpgt_d:
case Intrinsic::x86_mmx_pcmpgt_w:
case Intrinsic::x86_mmx_pextr_w:
case Intrinsic::x86_mmx_pinsr_w:
case Intrinsic::x86_mmx_pmadd_wd:
case Intrinsic::x86_mmx_pmaxs_w:
case Intrinsic::x86_mmx_pmaxu_b:
case Intrinsic::x86_mmx_pmins_w:
case Intrinsic::x86_mmx_pminu_b:
case Intrinsic::x86_mmx_pmovmskb:
case Intrinsic::x86_mmx_pmulh_w:
case Intrinsic::x86_mmx_pmulhu_w:
case Intrinsic::x86_mmx_pmull_w:
case Intrinsic::x86_mmx_pmulu_dq:
case Intrinsic::x86_mmx_por:
case Intrinsic::x86_mmx_psad_bw:
case Intrinsic::x86_mmx_psll_d:
case Intrinsic::x86_mmx_psll_q:
case Intrinsic::x86_mmx_psll_w:
case Intrinsic::x86_mmx_pslli_d:
case Intrinsic::x86_mmx_pslli_q:
case Intrinsic::x86_mmx_pslli_w:
case Intrinsic::x86_mmx_psra_d:
case Intrinsic::x86_mmx_psra_w:
case Intrinsic::x86_mmx_psrai_d:
case Intrinsic::x86_mmx_psrai_w:
case Intrinsic::x86_mmx_psrl_d:
case Intrinsic::x86_mmx_psrl_q:
case Intrinsic::x86_mmx_psrl_w:
case Intrinsic::x86_mmx_psrli_d:
case Intrinsic::x86_mmx_psrli_q:
case Intrinsic::x86_mmx_psrli_w:
case Intrinsic::x86_mmx_psub_b:
case Intrinsic::x86_mmx_psub_d:
case Intrinsic::x86_mmx_psub_q:
case Intrinsic::x86_mmx_psub_w:
case Intrinsic::x86_mmx_psubs_b:
case Intrinsic::x86_mmx_psubs_w:
case Intrinsic::x86_mmx_psubus_b:
case Intrinsic::x86_mmx_psubus_w:
case Intrinsic::x86_mmx_punpckhbw:
case Intrinsic::x86_mmx_punpckhdq:
case Intrinsic::x86_mmx_punpckhwd:
case Intrinsic::x86_mmx_punpcklbw:
case Intrinsic::x86_mmx_punpckldq:
case Intrinsic::x86_mmx_punpcklwd:
case Intrinsic::x86_mmx_pxor:
case Intrinsic::x86_sse2_add_sd:
case Intrinsic::x86_sse2_cmp_pd:
case Intrinsic::x86_sse2_cmp_sd:
case Intrinsic::x86_sse2_comieq_sd:
case Intrinsic::x86_sse2_comige_sd:
case Intrinsic::x86_sse2_comigt_sd:
case Intrinsic::x86_sse2_comile_sd:
case Intrinsic::x86_sse2_comilt_sd:
case Intrinsic::x86_sse2_comineq_sd:
case Intrinsic::x86_sse2_cvtdq2pd:
case Intrinsic::x86_sse2_cvtdq2ps:
case Intrinsic::x86_sse2_cvtpd2dq:
case Intrinsic::x86_sse2_cvtpd2ps:
case Intrinsic::x86_sse2_cvtps2dq:
case Intrinsic::x86_sse2_cvtps2pd:
case Intrinsic::x86_sse2_cvtsd2si:
case Intrinsic::x86_sse2_cvtsd2si64:
case Intrinsic::x86_sse2_cvtsd2ss:
case Intrinsic::x86_sse2_cvtsi2sd:
case Intrinsic::x86_sse2_cvtsi642sd:
case Intrinsic::x86_sse2_cvtss2sd:
case Intrinsic::x86_sse2_cvttpd2dq:
case Intrinsic::x86_sse2_cvttps2dq:
case Intrinsic::x86_sse2_cvttsd2si:
case Intrinsic::x86_sse2_cvttsd2si64:
case Intrinsic::x86_sse2_div_sd:
case Intrinsic::x86_sse2_max_pd:
case Intrinsic::x86_sse2_max_sd:
case Intrinsic::x86_sse2_min_pd:
case Intrinsic::x86_sse2_min_sd:
case Intrinsic::x86_sse2_movmsk_pd:
case Intrinsic::x86_sse2_mul_sd:
case Intrinsic::x86_sse2_packssdw_128:
case Intrinsic::x86_sse2_packsswb_128:
case Intrinsic::x86_sse2_packuswb_128:
case Intrinsic::x86_sse2_padds_b:
case Intrinsic::x86_sse2_padds_w:
case Intrinsic::x86_sse2_paddus_b:
case Intrinsic::x86_sse2_paddus_w:
case Intrinsic::x86_sse2_pavg_b:
case Intrinsic::x86_sse2_pavg_w:
case Intrinsic::x86_sse2_pcmpeq_b:
case Intrinsic::x86_sse2_pcmpeq_d:
case Intrinsic::x86_sse2_pcmpeq_w:
case Intrinsic::x86_sse2_pcmpgt_b:
case Intrinsic::x86_sse2_pcmpgt_d:
case Intrinsic::x86_sse2_pcmpgt_w:
case Intrinsic::x86_sse2_pmadd_wd:
case Intrinsic::x86_sse2_pmaxs_w:
case Intrinsic::x86_sse2_pmaxu_b:
case Intrinsic::x86_sse2_pmins_w:
case Intrinsic::x86_sse2_pminu_b:
case Intrinsic::x86_sse2_pmovmskb_128:
case Intrinsic::x86_sse2_pmulh_w:
case Intrinsic::x86_sse2_pmulhu_w:
case Intrinsic::x86_sse2_pmulu_dq:
case Intrinsic::x86_sse2_psad_bw:
case Intrinsic::x86_sse2_psll_d:
case Intrinsic::x86_sse2_psll_dq:
case Intrinsic::x86_sse2_psll_dq_bs:
case Intrinsic::x86_sse2_psll_q:
case Intrinsic::x86_sse2_psll_w:
case Intrinsic::x86_sse2_pslli_d:
case Intrinsic::x86_sse2_pslli_q:
case Intrinsic::x86_sse2_pslli_w:
case Intrinsic::x86_sse2_psra_d:
case Intrinsic::x86_sse2_psra_w:
case Intrinsic::x86_sse2_psrai_d:
case Intrinsic::x86_sse2_psrai_w:
case Intrinsic::x86_sse2_psrl_d:
case Intrinsic::x86_sse2_psrl_dq:
case Intrinsic::x86_sse2_psrl_dq_bs:
case Intrinsic::x86_sse2_psrl_q:
case Intrinsic::x86_sse2_psrl_w:
case Intrinsic::x86_sse2_psrli_d:
case Intrinsic::x86_sse2_psrli_q:
case Intrinsic::x86_sse2_psrli_w:
case Intrinsic::x86_sse2_psubs_b:
case Intrinsic::x86_sse2_psubs_w:
case Intrinsic::x86_sse2_psubus_b:
case Intrinsic::x86_sse2_psubus_w:
case Intrinsic::x86_sse2_sqrt_pd:
case Intrinsic::x86_sse2_sqrt_sd:
case Intrinsic::x86_sse2_sub_sd:
case Intrinsic::x86_sse2_ucomieq_sd:
case Intrinsic::x86_sse2_ucomige_sd:
case Intrinsic::x86_sse2_ucomigt_sd:
case Intrinsic::x86_sse2_ucomile_sd:
case Intrinsic::x86_sse2_ucomilt_sd:
case Intrinsic::x86_sse2_ucomineq_sd:
case Intrinsic::x86_sse3_addsub_pd:
case Intrinsic::x86_sse3_addsub_ps:
case Intrinsic::x86_sse3_hadd_pd:
case Intrinsic::x86_sse3_hadd_ps:
case Intrinsic::x86_sse3_hsub_pd:
case Intrinsic::x86_sse3_hsub_ps:
case Intrinsic::x86_sse41_blendpd:
case Intrinsic::x86_sse41_blendps:
case Intrinsic::x86_sse41_blendvpd:
case Intrinsic::x86_sse41_blendvps:
case Intrinsic::x86_sse41_dppd:
case Intrinsic::x86_sse41_dpps:
case Intrinsic::x86_sse41_extractps:
case Intrinsic::x86_sse41_insertps:
case Intrinsic::x86_sse41_mpsadbw:
case Intrinsic::x86_sse41_packusdw:
case Intrinsic::x86_sse41_pblendvb:
case Intrinsic::x86_sse41_pblendw:
case Intrinsic::x86_sse41_pcmpeqq:
case Intrinsic::x86_sse41_pextrb:
case Intrinsic::x86_sse41_pextrd:
case Intrinsic::x86_sse41_pextrq:
case Intrinsic::x86_sse41_phminposuw:
case Intrinsic::x86_sse41_pmaxsb:
case Intrinsic::x86_sse41_pmaxsd:
case Intrinsic::x86_sse41_pmaxud:
case Intrinsic::x86_sse41_pmaxuw:
case Intrinsic::x86_sse41_pminsb:
case Intrinsic::x86_sse41_pminsd:
case Intrinsic::x86_sse41_pminud:
case Intrinsic::x86_sse41_pminuw:
case Intrinsic::x86_sse41_pmovsxbd:
case Intrinsic::x86_sse41_pmovsxbq:
case Intrinsic::x86_sse41_pmovsxbw:
case Intrinsic::x86_sse41_pmovsxdq:
case Intrinsic::x86_sse41_pmovsxwd:
case Intrinsic::x86_sse41_pmovsxwq:
case Intrinsic::x86_sse41_pmovzxbd:
case Intrinsic::x86_sse41_pmovzxbq:
case Intrinsic::x86_sse41_pmovzxbw:
case Intrinsic::x86_sse41_pmovzxdq:
case Intrinsic::x86_sse41_pmovzxwd:
case Intrinsic::x86_sse41_pmovzxwq:
case Intrinsic::x86_sse41_pmuldq:
case Intrinsic::x86_sse41_ptestc:
case Intrinsic::x86_sse41_ptestnzc:
case Intrinsic::x86_sse41_ptestz:
case Intrinsic::x86_sse41_round_pd:
case Intrinsic::x86_sse41_round_ps:
case Intrinsic::x86_sse41_round_sd:
case Intrinsic::x86_sse41_round_ss:
case Intrinsic::x86_sse42_crc32_32_16:
case Intrinsic::x86_sse42_crc32_32_32:
case Intrinsic::x86_sse42_crc32_32_8:
case Intrinsic::x86_sse42_crc32_64_64:
case Intrinsic::x86_sse42_crc32_64_8:
case Intrinsic::x86_sse42_pcmpestri128:
case Intrinsic::x86_sse42_pcmpestria128:
case Intrinsic::x86_sse42_pcmpestric128:
case Intrinsic::x86_sse42_pcmpestrio128:
case Intrinsic::x86_sse42_pcmpestris128:
case Intrinsic::x86_sse42_pcmpestriz128:
case Intrinsic::x86_sse42_pcmpestrm128:
case Intrinsic::x86_sse42_pcmpgtq:
case Intrinsic::x86_sse42_pcmpistri128:
case Intrinsic::x86_sse42_pcmpistria128:
case Intrinsic::x86_sse42_pcmpistric128:
case Intrinsic::x86_sse42_pcmpistrio128:
case Intrinsic::x86_sse42_pcmpistris128:
case Intrinsic::x86_sse42_pcmpistriz128:
case Intrinsic::x86_sse42_pcmpistrm128:
case Intrinsic::x86_sse_add_ss:
case Intrinsic::x86_sse_cmp_ps:
case Intrinsic::x86_sse_cmp_ss:
case Intrinsic::x86_sse_comieq_ss:
case Intrinsic::x86_sse_comige_ss:
case Intrinsic::x86_sse_comigt_ss:
case Intrinsic::x86_sse_comile_ss:
case Intrinsic::x86_sse_comilt_ss:
case Intrinsic::x86_sse_comineq_ss:
case Intrinsic::x86_sse_cvtpd2pi:
case Intrinsic::x86_sse_cvtpi2pd:
case Intrinsic::x86_sse_cvtpi2ps:
case Intrinsic::x86_sse_cvtps2pi:
case Intrinsic::x86_sse_cvtsi2ss:
case Intrinsic::x86_sse_cvtsi642ss:
case Intrinsic::x86_sse_cvtss2si:
case Intrinsic::x86_sse_cvtss2si64:
case Intrinsic::x86_sse_cvttpd2pi:
case Intrinsic::x86_sse_cvttps2pi:
case Intrinsic::x86_sse_cvttss2si:
case Intrinsic::x86_sse_cvttss2si64:
case Intrinsic::x86_sse_div_ss:
case Intrinsic::x86_sse_max_ps:
case Intrinsic::x86_sse_max_ss:
case Intrinsic::x86_sse_min_ps:
case Intrinsic::x86_sse_min_ss:
case Intrinsic::x86_sse_movmsk_ps:
case Intrinsic::x86_sse_mul_ss:
case Intrinsic::x86_sse_pshuf_w:
case Intrinsic::x86_sse_rcp_ps:
case Intrinsic::x86_sse_rcp_ss:
case Intrinsic::x86_sse_rsqrt_ps:
case Intrinsic::x86_sse_rsqrt_ss:
case Intrinsic::x86_sse_sqrt_ps:
case Intrinsic::x86_sse_sqrt_ss:
case Intrinsic::x86_sse_sub_ss:
case Intrinsic::x86_sse_ucomieq_ss:
case Intrinsic::x86_sse_ucomige_ss:
case Intrinsic::x86_sse_ucomigt_ss:
case Intrinsic::x86_sse_ucomile_ss:
case Intrinsic::x86_sse_ucomilt_ss:
case Intrinsic::x86_sse_ucomineq_ss:
case Intrinsic::x86_ssse3_pabs_b:
case Intrinsic::x86_ssse3_pabs_b_128:
case Intrinsic::x86_ssse3_pabs_d:
case Intrinsic::x86_ssse3_pabs_d_128:
case Intrinsic::x86_ssse3_pabs_w:
case Intrinsic::x86_ssse3_pabs_w_128:
case Intrinsic::x86_ssse3_phadd_d:
case Intrinsic::x86_ssse3_phadd_d_128:
case Intrinsic::x86_ssse3_phadd_sw:
case Intrinsic::x86_ssse3_phadd_sw_128:
case Intrinsic::x86_ssse3_phadd_w:
case Intrinsic::x86_ssse3_phadd_w_128:
case Intrinsic::x86_ssse3_phsub_d:
case Intrinsic::x86_ssse3_phsub_d_128:
case Intrinsic::x86_ssse3_phsub_sw:
case Intrinsic::x86_ssse3_phsub_sw_128:
case Intrinsic::x86_ssse3_phsub_w:
case Intrinsic::x86_ssse3_phsub_w_128:
case Intrinsic::x86_ssse3_pmadd_ub_sw:
case Intrinsic::x86_ssse3_pmadd_ub_sw_128:
case Intrinsic::x86_ssse3_pmul_hr_sw:
case Intrinsic::x86_ssse3_pmul_hr_sw_128:
case Intrinsic::x86_ssse3_pshuf_b:
case Intrinsic::x86_ssse3_pshuf_b_128:
case Intrinsic::x86_ssse3_psign_b:
case Intrinsic::x86_ssse3_psign_b_128:
case Intrinsic::x86_ssse3_psign_d:
case Intrinsic::x86_ssse3_psign_d_128:
case Intrinsic::x86_ssse3_psign_w:
case Intrinsic::x86_ssse3_psign_w_128:
AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadNone);
NumAttrs = 1;
break;
case Intrinsic::adjust_trampoline:
case Intrinsic::cos:
case Intrinsic::eh_exception:
case Intrinsic::exp:
case Intrinsic::exp2:
case Intrinsic::gcread:
case Intrinsic::log:
case Intrinsic::log10:
case Intrinsic::log2:
case Intrinsic::pow:
case Intrinsic::powi:
case Intrinsic::sin:
case Intrinsic::sqrt:
case Intrinsic::x86_avx_ldu_dq_256:
case Intrinsic::x86_avx_loadu_dq_256:
case Intrinsic::x86_avx_loadu_pd_256:
case Intrinsic::x86_avx_loadu_ps_256:
case Intrinsic::x86_avx_maskload_pd:
case Intrinsic::x86_avx_maskload_pd_256:
case Intrinsic::x86_avx_maskload_ps:
case Intrinsic::x86_avx_maskload_ps_256:
case Intrinsic::x86_avx_vbroadcast_sd_256:
case Intrinsic::x86_avx_vbroadcastf128_pd_256:
case Intrinsic::x86_avx_vbroadcastf128_ps_256:
case Intrinsic::x86_avx_vbroadcastss:
case Intrinsic::x86_avx_vbroadcastss_256:
case Intrinsic::x86_sse3_ldu_dq:
case Intrinsic::x86_sse41_movntdqa:
AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadOnly);
NumAttrs = 1;
break;
case Intrinsic::annotation:
case Intrinsic::convertff:
case Intrinsic::convertfsi:
case Intrinsic::convertfui:
case Intrinsic::convertsif:
case Intrinsic::convertss:
case Intrinsic::convertsu:
case Intrinsic::convertuif:
case Intrinsic::convertus:
case Intrinsic::convertuu:
case Intrinsic::eh_dwarf_cfa:
case Intrinsic::eh_return_i32:
case Intrinsic::eh_return_i64:
case Intrinsic::eh_selector:
case Intrinsic::eh_sjlj_dispatch_setup:
case Intrinsic::eh_sjlj_functioncontext:
case Intrinsic::eh_sjlj_longjmp:
case Intrinsic::eh_sjlj_setjmp:
case Intrinsic::eh_unwind_init:
case Intrinsic::flt_rounds:
case Intrinsic::gcroot:
case Intrinsic::longjmp:
case Intrinsic::pcmarker:
case Intrinsic::ptr_annotation:
case Intrinsic::readcyclecounter:
case Intrinsic::setjmp:
case Intrinsic::siglongjmp:
case Intrinsic::sigsetjmp:
case Intrinsic::stackprotector:
case Intrinsic::stackrestore:
case Intrinsic::stacksave:
case Intrinsic::trap:
case Intrinsic::vacopy:
case Intrinsic::vaend:
case Intrinsic::var_annotation:
case Intrinsic::vastart:
case Intrinsic::x86_avx_maskstore_pd:
case Intrinsic::x86_avx_maskstore_pd_256:
case Intrinsic::x86_avx_maskstore_ps:
case Intrinsic::x86_avx_maskstore_ps_256:
case Intrinsic::x86_avx_movnt_dq_256:
case Intrinsic::x86_avx_movnt_pd_256:
case Intrinsic::x86_avx_movnt_ps_256:
case Intrinsic::x86_avx_storeu_dq_256:
case Intrinsic::x86_avx_storeu_pd_256:
case Intrinsic::x86_avx_storeu_ps_256:
case Intrinsic::x86_avx_vzeroall:
case Intrinsic::x86_avx_vzeroupper:
case Intrinsic::x86_int:
case Intrinsic::x86_mmx_emms:
case Intrinsic::x86_mmx_femms:
case Intrinsic::x86_mmx_maskmovq:
case Intrinsic::x86_mmx_movnt_dq:
case Intrinsic::x86_sse2_clflush:
case Intrinsic::x86_sse2_lfence:
case Intrinsic::x86_sse2_maskmov_dqu:
case Intrinsic::x86_sse2_mfence:
case Intrinsic::x86_sse2_storel_dq:
case Intrinsic::x86_sse2_storeu_dq:
case Intrinsic::x86_sse2_storeu_pd:
case Intrinsic::x86_sse3_monitor:
case Intrinsic::x86_sse3_mwait:
case Intrinsic::x86_sse_ldmxcsr:
case Intrinsic::x86_sse_sfence:
case Intrinsic::x86_sse_stmxcsr:
case Intrinsic::x86_sse_storeu_ps:
AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
NumAttrs = 1;
break;
case Intrinsic::init_trampoline:
case Intrinsic::memset:
case Intrinsic::prefetch:
AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture);
AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
NumAttrs = 2;
break;
case Intrinsic::memcpy:
case Intrinsic::memmove:
AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture);
AWI[1] = AttributeWithIndex::get(2, Attribute::NoCapture);
AWI[2] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
NumAttrs = 3;
break;
case Intrinsic::invariant_start:
case Intrinsic::lifetime_end:
case Intrinsic::lifetime_start:
AWI[0] = AttributeWithIndex::get(2, Attribute::NoCapture);
AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
NumAttrs = 2;
break;
case Intrinsic::gcwrite:
AWI[0] = AttributeWithIndex::get(2, Attribute::NoCapture);
AWI[1] = AttributeWithIndex::get(3, Attribute::NoCapture);
AWI[2] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
NumAttrs = 3;
break;
case Intrinsic::invariant_end:
AWI[0] = AttributeWithIndex::get(3, Attribute::NoCapture);
AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
NumAttrs = 2;
break;
case Intrinsic::eh_resume:
return AttrListPtr();
}
return AttrListPtr::get(AWI, NumAttrs);
}
#endif // GET_INTRINSIC_ATTRIBUTES
// Determine intrinsic alias analysis mod/ref behavior.
#ifdef GET_INTRINSIC_MODREF_BEHAVIOR
switch (iid) {
default:
return UnknownModRefBehavior;
case Intrinsic::adjust_trampoline:
return OnlyReadsArgumentPointees;
case Intrinsic::bswap:
return DoesNotAccessMemory;
case Intrinsic::convert_from_fp16:
return DoesNotAccessMemory;
case Intrinsic::convert_to_fp16:
return DoesNotAccessMemory;
case Intrinsic::cos:
return OnlyReadsMemory;
case Intrinsic::ctlz:
return DoesNotAccessMemory;
case Intrinsic::ctpop:
return DoesNotAccessMemory;
case Intrinsic::cttz:
return DoesNotAccessMemory;
case Intrinsic::dbg_declare:
return DoesNotAccessMemory;
case Intrinsic::dbg_value:
return DoesNotAccessMemory;
case Intrinsic::eh_exception:
return OnlyReadsMemory;
case Intrinsic::eh_sjlj_callsite:
return DoesNotAccessMemory;
case Intrinsic::eh_sjlj_lsda:
return DoesNotAccessMemory;
case Intrinsic::eh_typeid_for:
return DoesNotAccessMemory;
case Intrinsic::exp:
return OnlyReadsMemory;
case Intrinsic::exp2:
return OnlyReadsMemory;
case Intrinsic::expect:
return DoesNotAccessMemory;
case Intrinsic::fma:
return DoesNotAccessMemory;
case Intrinsic::frameaddress:
return DoesNotAccessMemory;
case Intrinsic::gcread:
return OnlyReadsArgumentPointees;
case Intrinsic::gcwrite:
return OnlyAccessesArgumentPointees;
case Intrinsic::init_trampoline:
return OnlyAccessesArgumentPointees;
case Intrinsic::invariant_end:
return OnlyAccessesArgumentPointees;
case Intrinsic::invariant_start:
return OnlyAccessesArgumentPointees;
case Intrinsic::lifetime_end:
return OnlyAccessesArgumentPointees;
case Intrinsic::lifetime_start:
return OnlyAccessesArgumentPointees;
case Intrinsic::log:
return OnlyReadsMemory;
case Intrinsic::log10:
return OnlyReadsMemory;
case Intrinsic::log2:
return OnlyReadsMemory;
case Intrinsic::memcpy:
return OnlyAccessesArgumentPointees;
case Intrinsic::memmove:
return OnlyAccessesArgumentPointees;
case Intrinsic::memset:
return OnlyAccessesArgumentPointees;
case Intrinsic::objectsize:
return DoesNotAccessMemory;
case Intrinsic::pow:
return OnlyReadsMemory;
case Intrinsic::powi:
return OnlyReadsMemory;
case Intrinsic::prefetch:
return OnlyAccessesArgumentPointees;
case Intrinsic::returnaddress:
return DoesNotAccessMemory;
case Intrinsic::sadd_with_overflow:
return DoesNotAccessMemory;
case Intrinsic::sin:
return OnlyReadsMemory;
case Intrinsic::smul_with_overflow:
return DoesNotAccessMemory;
case Intrinsic::sqrt:
return OnlyReadsMemory;
case Intrinsic::ssub_with_overflow:
return DoesNotAccessMemory;
case Intrinsic::uadd_with_overflow:
return DoesNotAccessMemory;
case Intrinsic::umul_with_overflow:
return DoesNotAccessMemory;
case Intrinsic::usub_with_overflow:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pavgusb:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pf2id:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfacc:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfadd:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfcmpeq:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfcmpge:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfcmpgt:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfmax:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfmin:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfmul:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfrcp:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfrcpit1:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfrcpit2:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfrsqit1:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfrsqrt:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfsub:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pfsubr:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pi2fd:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnow_pmulhrw:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnowa_pf2iw:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnowa_pfnacc:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnowa_pfpnacc:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnowa_pi2fw:
return DoesNotAccessMemory;
case Intrinsic::x86_3dnowa_pswapd:
return DoesNotAccessMemory;
case Intrinsic::x86_aesni_aesdec:
return DoesNotAccessMemory;
case Intrinsic::x86_aesni_aesdeclast:
return DoesNotAccessMemory;
case Intrinsic::x86_aesni_aesenc:
return DoesNotAccessMemory;
case Intrinsic::x86_aesni_aesenclast:
return DoesNotAccessMemory;
case Intrinsic::x86_aesni_aesimc:
return DoesNotAccessMemory;
case Intrinsic::x86_aesni_aeskeygenassist:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_addsub_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_addsub_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_blend_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_blend_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_blendv_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_blendv_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_cmp_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_cmp_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_cvt_pd2_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_cvt_pd2dq_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_cvt_ps2_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_cvt_ps2dq_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_cvtdq2_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_cvtdq2_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_cvtt_pd2dq_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_cvtt_ps2dq_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_dp_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_hadd_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_hadd_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_hsub_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_hsub_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_ldu_dq_256:
return OnlyReadsMemory;
case Intrinsic::x86_avx_loadu_dq_256:
return OnlyReadsMemory;
case Intrinsic::x86_avx_loadu_pd_256:
return OnlyReadsMemory;
case Intrinsic::x86_avx_loadu_ps_256:
return OnlyReadsMemory;
case Intrinsic::x86_avx_maskload_pd:
return OnlyReadsMemory;
case Intrinsic::x86_avx_maskload_pd_256:
return OnlyReadsMemory;
case Intrinsic::x86_avx_maskload_ps:
return OnlyReadsMemory;
case Intrinsic::x86_avx_maskload_ps_256:
return OnlyReadsMemory;
case Intrinsic::x86_avx_max_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_max_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_min_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_min_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_movmsk_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_movmsk_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_ptestc_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_ptestnzc_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_ptestz_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_rcp_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_round_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_round_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_rsqrt_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_sqrt_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_sqrt_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vbroadcast_sd_256:
return OnlyReadsMemory;
case Intrinsic::x86_avx_vbroadcastf128_pd_256:
return OnlyReadsMemory;
case Intrinsic::x86_avx_vbroadcastf128_ps_256:
return OnlyReadsMemory;
case Intrinsic::x86_avx_vbroadcastss:
return OnlyReadsMemory;
case Intrinsic::x86_avx_vbroadcastss_256:
return OnlyReadsMemory;
case Intrinsic::x86_avx_vextractf128_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vextractf128_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vextractf128_si_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vinsertf128_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vinsertf128_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vinsertf128_si_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vperm2f128_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vperm2f128_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vperm2f128_si_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vpermil_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vpermil_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vpermil_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vpermil_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vpermilvar_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vpermilvar_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vpermilvar_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vpermilvar_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestc_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestc_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestc_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestc_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestnzc_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestnzc_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestnzc_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestnzc_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestz_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestz_pd_256:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestz_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_avx_vtestz_ps_256:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_packssdw:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_packsswb:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_packuswb:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_padd_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_padd_d:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_padd_q:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_padd_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_padds_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_padds_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_paddus_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_paddus_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_palignr_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pand:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pandn:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pavg_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pavg_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pcmpeq_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pcmpeq_d:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pcmpeq_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pcmpgt_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pcmpgt_d:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pcmpgt_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pextr_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pinsr_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pmadd_wd:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pmaxs_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pmaxu_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pmins_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pminu_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pmovmskb:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pmulh_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pmulhu_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pmull_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pmulu_dq:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_por:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psad_bw:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psll_d:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psll_q:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psll_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pslli_d:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pslli_q:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pslli_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psra_d:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psra_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psrai_d:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psrai_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psrl_d:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psrl_q:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psrl_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psrli_d:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psrli_q:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psrli_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psub_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psub_d:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psub_q:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psub_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psubs_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psubs_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psubus_b:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_psubus_w:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_punpckhbw:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_punpckhdq:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_punpckhwd:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_punpcklbw:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_punpckldq:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_punpcklwd:
return DoesNotAccessMemory;
case Intrinsic::x86_mmx_pxor:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_add_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cmp_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cmp_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_comieq_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_comige_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_comigt_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_comile_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_comilt_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_comineq_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtdq2pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtdq2ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtpd2dq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtpd2ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtps2dq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtps2pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtsd2si:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtsd2si64:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtsd2ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtsi2sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtsi642sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvtss2sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvttpd2dq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvttps2dq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvttsd2si:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_cvttsd2si64:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_div_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_max_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_max_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_min_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_min_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_movmsk_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_mul_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_packssdw_128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_packsswb_128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_packuswb_128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_padds_b:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_padds_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_paddus_b:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_paddus_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pavg_b:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pavg_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pcmpeq_b:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pcmpeq_d:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pcmpeq_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pcmpgt_b:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pcmpgt_d:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pcmpgt_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pmadd_wd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pmaxs_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pmaxu_b:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pmins_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pminu_b:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pmovmskb_128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pmulh_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pmulhu_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pmulu_dq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psad_bw:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psll_d:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psll_dq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psll_dq_bs:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psll_q:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psll_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pslli_d:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pslli_q:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_pslli_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psra_d:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psra_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psrai_d:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psrai_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psrl_d:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psrl_dq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psrl_dq_bs:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psrl_q:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psrl_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psrli_d:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psrli_q:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psrli_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psubs_b:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psubs_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psubus_b:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_psubus_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_sqrt_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_sqrt_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_sub_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_ucomieq_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_ucomige_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_ucomigt_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_ucomile_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_ucomilt_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse2_ucomineq_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse3_addsub_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse3_addsub_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse3_hadd_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse3_hadd_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse3_hsub_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse3_hsub_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse3_ldu_dq:
return OnlyReadsMemory;
case Intrinsic::x86_sse41_blendpd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_blendps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_blendvpd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_blendvps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_dppd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_dpps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_extractps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_insertps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_movntdqa:
return OnlyReadsMemory;
case Intrinsic::x86_sse41_mpsadbw:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_packusdw:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pblendvb:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pblendw:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pcmpeqq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pextrb:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pextrd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pextrq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_phminposuw:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmaxsb:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmaxsd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmaxud:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmaxuw:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pminsb:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pminsd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pminud:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pminuw:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovsxbd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovsxbq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovsxbw:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovsxdq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovsxwd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovsxwq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovzxbd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovzxbq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovzxbw:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovzxdq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovzxwd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmovzxwq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_pmuldq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_ptestc:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_ptestnzc:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_ptestz:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_round_pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_round_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_round_sd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse41_round_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_crc32_32_16:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_crc32_32_32:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_crc32_32_8:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_crc32_64_64:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_crc32_64_8:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpestri128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpestria128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpestric128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpestrio128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpestris128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpestriz128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpestrm128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpgtq:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpistri128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpistria128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpistric128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpistrio128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpistris128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpistriz128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse42_pcmpistrm128:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_add_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cmp_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cmp_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_comieq_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_comige_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_comigt_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_comile_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_comilt_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_comineq_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvtpd2pi:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvtpi2pd:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvtpi2ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvtps2pi:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvtsi2ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvtsi642ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvtss2si:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvtss2si64:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvttpd2pi:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvttps2pi:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvttss2si:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_cvttss2si64:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_div_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_max_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_max_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_min_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_min_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_movmsk_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_mul_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_pshuf_w:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_rcp_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_rcp_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_rsqrt_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_rsqrt_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_sqrt_ps:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_sqrt_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_sub_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_ucomieq_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_ucomige_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_ucomigt_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_ucomile_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_ucomilt_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_sse_ucomineq_ss:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pabs_b:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pabs_b_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pabs_d:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pabs_d_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pabs_w:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pabs_w_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phadd_d:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phadd_d_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phadd_sw:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phadd_sw_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phadd_w:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phadd_w_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phsub_d:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phsub_d_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phsub_sw:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phsub_sw_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phsub_w:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_phsub_w_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pmadd_ub_sw:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pmadd_ub_sw_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pmul_hr_sw:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pmul_hr_sw_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pshuf_b:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_pshuf_b_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_psign_b:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_psign_b_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_psign_d:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_psign_d_128:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_psign_w:
return DoesNotAccessMemory;
case Intrinsic::x86_ssse3_psign_w_128:
return DoesNotAccessMemory;
}
#endif // GET_INTRINSIC_MODREF_BEHAVIOR
// Get the GCC builtin that corresponds to an LLVM intrinsic.
#ifdef GET_GCC_BUILTIN_NAME
switch (F->getIntrinsicID()) {
default: BuiltinName = ""; break;
case Intrinsic::adjust_trampoline: BuiltinName = "__builtin_adjust_trampoline"; break;
case Intrinsic::convert_from_fp16: BuiltinName = "__gnu_h2f_ieee"; break;
case Intrinsic::convert_to_fp16: BuiltinName = "__gnu_f2h_ieee"; break;
case Intrinsic::eh_unwind_init: BuiltinName = "__builtin_unwind_init"; break;
case Intrinsic::flt_rounds: BuiltinName = "__builtin_flt_rounds"; break;
case Intrinsic::init_trampoline: BuiltinName = "__builtin_init_trampoline"; break;
case Intrinsic::objectsize: BuiltinName = "__builtin_object_size"; break;
case Intrinsic::stackrestore: BuiltinName = "__builtin_stack_restore"; break;
case Intrinsic::stacksave: BuiltinName = "__builtin_stack_save"; break;
case Intrinsic::trap: BuiltinName = "__builtin_trap"; break;
case Intrinsic::x86_3dnow_pavgusb: BuiltinName = "__builtin_ia32_pavgusb"; break;
case Intrinsic::x86_3dnow_pf2id: BuiltinName = "__builtin_ia32_pf2id"; break;
case Intrinsic::x86_3dnow_pfacc: BuiltinName = "__builtin_ia32_pfacc"; break;
case Intrinsic::x86_3dnow_pfadd: BuiltinName = "__builtin_ia32_pfadd"; break;
case Intrinsic::x86_3dnow_pfcmpeq: BuiltinName = "__builtin_ia32_pfcmpeq"; break;
case Intrinsic::x86_3dnow_pfcmpge: BuiltinName = "__builtin_ia32_pfcmpge"; break;
case Intrinsic::x86_3dnow_pfcmpgt: BuiltinName = "__builtin_ia32_pfcmpgt"; break;
case Intrinsic::x86_3dnow_pfmax: BuiltinName = "__builtin_ia32_pfmax"; break;
case Intrinsic::x86_3dnow_pfmin: BuiltinName = "__builtin_ia32_pfmin"; break;
case Intrinsic::x86_3dnow_pfmul: BuiltinName = "__builtin_ia32_pfmul"; break;
case Intrinsic::x86_3dnow_pfrcp: BuiltinName = "__builtin_ia32_pfrcp"; break;
case Intrinsic::x86_3dnow_pfrcpit1: BuiltinName = "__builtin_ia32_pfrcpit1"; break;
case Intrinsic::x86_3dnow_pfrcpit2: BuiltinName = "__builtin_ia32_pfrcpit2"; break;
case Intrinsic::x86_3dnow_pfrsqit1: BuiltinName = "__builtin_ia32_pfrsqit1"; break;
case Intrinsic::x86_3dnow_pfrsqrt: BuiltinName = "__builtin_ia32_pfrsqrt"; break;
case Intrinsic::x86_3dnow_pfsub: BuiltinName = "__builtin_ia32_pfsub"; break;
case Intrinsic::x86_3dnow_pfsubr: BuiltinName = "__builtin_ia32_pfsubr"; break;
case Intrinsic::x86_3dnow_pi2fd: BuiltinName = "__builtin_ia32_pi2fd"; break;
case Intrinsic::x86_3dnow_pmulhrw: BuiltinName = "__builtin_ia32_pmulhrw"; break;
case Intrinsic::x86_3dnowa_pf2iw: BuiltinName = "__builtin_ia32_pf2iw"; break;
case Intrinsic::x86_3dnowa_pfnacc: BuiltinName = "__builtin_ia32_pfnacc"; break;
case Intrinsic::x86_3dnowa_pfpnacc: BuiltinName = "__builtin_ia32_pfpnacc"; break;
case Intrinsic::x86_3dnowa_pi2fw: BuiltinName = "__builtin_ia32_pi2fw"; break;
case Intrinsic::x86_aesni_aesdec: BuiltinName = "__builtin_ia32_aesdec128"; break;
case Intrinsic::x86_aesni_aesdeclast: BuiltinName = "__builtin_ia32_aesdeclast128"; break;
case Intrinsic::x86_aesni_aesenc: BuiltinName = "__builtin_ia32_aesenc128"; break;
case Intrinsic::x86_aesni_aesenclast: BuiltinName = "__builtin_ia32_aesenclast128"; break;
case Intrinsic::x86_aesni_aesimc: BuiltinName = "__builtin_ia32_aesimc128"; break;
case Intrinsic::x86_aesni_aeskeygenassist: BuiltinName = "__builtin_ia32_aeskeygenassist128"; break;
case Intrinsic::x86_avx_addsub_pd_256: BuiltinName = "__builtin_ia32_addsubpd256"; break;
case Intrinsic::x86_avx_addsub_ps_256: BuiltinName = "__builtin_ia32_addsubps256"; break;
case Intrinsic::x86_avx_blend_pd_256: BuiltinName = "__builtin_ia32_blendpd256"; break;
case Intrinsic::x86_avx_blend_ps_256: BuiltinName = "__builtin_ia32_blendps256"; break;
case Intrinsic::x86_avx_blendv_pd_256: BuiltinName = "__builtin_ia32_blendvpd256"; break;
case Intrinsic::x86_avx_blendv_ps_256: BuiltinName = "__builtin_ia32_blendvps256"; break;
case Intrinsic::x86_avx_cmp_pd_256: BuiltinName = "__builtin_ia32_cmppd256"; break;
case Intrinsic::x86_avx_cmp_ps_256: BuiltinName = "__builtin_ia32_cmpps256"; break;
case Intrinsic::x86_avx_cvt_pd2_ps_256: BuiltinName = "__builtin_ia32_cvtpd2ps256"; break;
case Intrinsic::x86_avx_cvt_pd2dq_256: BuiltinName = "__builtin_ia32_cvtpd2dq256"; break;
case Intrinsic::x86_avx_cvt_ps2_pd_256: BuiltinName = "__builtin_ia32_cvtps2pd256"; break;
case Intrinsic::x86_avx_cvt_ps2dq_256: BuiltinName = "__builtin_ia32_cvtps2dq256"; break;
case Intrinsic::x86_avx_cvtdq2_pd_256: BuiltinName = "__builtin_ia32_cvtdq2pd256"; break;
case Intrinsic::x86_avx_cvtdq2_ps_256: BuiltinName = "__builtin_ia32_cvtdq2ps256"; break;
case Intrinsic::x86_avx_cvtt_pd2dq_256: BuiltinName = "__builtin_ia32_cvttpd2dq256"; break;
case Intrinsic::x86_avx_cvtt_ps2dq_256: BuiltinName = "__builtin_ia32_cvttps2dq256"; break;
case Intrinsic::x86_avx_dp_ps_256: BuiltinName = "__builtin_ia32_dpps256"; break;
case Intrinsic::x86_avx_hadd_pd_256: BuiltinName = "__builtin_ia32_haddpd256"; break;
case Intrinsic::x86_avx_hadd_ps_256: BuiltinName = "__builtin_ia32_haddps256"; break;
case Intrinsic::x86_avx_hsub_pd_256: BuiltinName = "__builtin_ia32_hsubpd256"; break;
case Intrinsic::x86_avx_hsub_ps_256: BuiltinName = "__builtin_ia32_hsubps256"; break;
case Intrinsic::x86_avx_ldu_dq_256: BuiltinName = "__builtin_ia32_lddqu256"; break;
case Intrinsic::x86_avx_loadu_dq_256: BuiltinName = "__builtin_ia32_loaddqu256"; break;
case Intrinsic::x86_avx_loadu_pd_256: BuiltinName = "__builtin_ia32_loadupd256"; break;
case Intrinsic::x86_avx_loadu_ps_256: BuiltinName = "__builtin_ia32_loadups256"; break;
case Intrinsic::x86_avx_maskload_pd: BuiltinName = "__builtin_ia32_maskloadpd"; break;
case Intrinsic::x86_avx_maskload_pd_256: BuiltinName = "__builtin_ia32_maskloadpd256"; break;
case Intrinsic::x86_avx_maskload_ps: BuiltinName = "__builtin_ia32_maskloadps"; break;
case Intrinsic::x86_avx_maskload_ps_256: BuiltinName = "__builtin_ia32_maskloadps256"; break;
case Intrinsic::x86_avx_maskstore_pd: BuiltinName = "__builtin_ia32_maskstorepd"; break;
case Intrinsic::x86_avx_maskstore_pd_256: BuiltinName = "__builtin_ia32_maskstorepd256"; break;
case Intrinsic::x86_avx_maskstore_ps: BuiltinName = "__builtin_ia32_maskstoreps"; break;
case Intrinsic::x86_avx_maskstore_ps_256: BuiltinName = "__builtin_ia32_maskstoreps256"; break;
case Intrinsic::x86_avx_max_pd_256: BuiltinName = "__builtin_ia32_maxpd256"; break;
case Intrinsic::x86_avx_max_ps_256: BuiltinName = "__builtin_ia32_maxps256"; break;
case Intrinsic::x86_avx_min_pd_256: BuiltinName = "__builtin_ia32_minpd256"; break;
case Intrinsic::x86_avx_min_ps_256: BuiltinName = "__builtin_ia32_minps256"; break;
case Intrinsic::x86_avx_movmsk_pd_256: BuiltinName = "__builtin_ia32_movmskpd256"; break;
case Intrinsic::x86_avx_movmsk_ps_256: BuiltinName = "__builtin_ia32_movmskps256"; break;
case Intrinsic::x86_avx_movnt_dq_256: BuiltinName = "__builtin_ia32_movntdq256"; break;
case Intrinsic::x86_avx_movnt_pd_256: BuiltinName = "__builtin_ia32_movntpd256"; break;
case Intrinsic::x86_avx_movnt_ps_256: BuiltinName = "__builtin_ia32_movntps256"; break;
case Intrinsic::x86_avx_ptestc_256: BuiltinName = "__builtin_ia32_ptestc256"; break;
case Intrinsic::x86_avx_ptestnzc_256: BuiltinName = "__builtin_ia32_ptestnzc256"; break;
case Intrinsic::x86_avx_ptestz_256: BuiltinName = "__builtin_ia32_ptestz256"; break;
case Intrinsic::x86_avx_rcp_ps_256: BuiltinName = "__builtin_ia32_rcpps256"; break;
case Intrinsic::x86_avx_round_pd_256: BuiltinName = "__builtin_ia32_roundpd256"; break;
case Intrinsic::x86_avx_round_ps_256: BuiltinName = "__builtin_ia32_roundps256"; break;
case Intrinsic::x86_avx_rsqrt_ps_256: BuiltinName = "__builtin_ia32_rsqrtps256"; break;
case Intrinsic::x86_avx_sqrt_pd_256: BuiltinName = "__builtin_ia32_sqrtpd256"; break;
case Intrinsic::x86_avx_sqrt_ps_256: BuiltinName = "__builtin_ia32_sqrtps256"; break;
case Intrinsic::x86_avx_storeu_dq_256: BuiltinName = "__builtin_ia32_storedqu256"; break;
case Intrinsic::x86_avx_storeu_pd_256: BuiltinName = "__builtin_ia32_storeupd256"; break;
case Intrinsic::x86_avx_storeu_ps_256: BuiltinName = "__builtin_ia32_storeups256"; break;
case Intrinsic::x86_avx_vbroadcast_sd_256: BuiltinName = "__builtin_ia32_vbroadcastsd256"; break;
case Intrinsic::x86_avx_vbroadcastf128_pd_256: BuiltinName = "__builtin_ia32_vbroadcastf128_pd256"; break;
case Intrinsic::x86_avx_vbroadcastf128_ps_256: BuiltinName = "__builtin_ia32_vbroadcastf128_ps256"; break;
case Intrinsic::x86_avx_vbroadcastss: BuiltinName = "__builtin_ia32_vbroadcastss"; break;
case Intrinsic::x86_avx_vbroadcastss_256: BuiltinName = "__builtin_ia32_vbroadcastss256"; break;
case Intrinsic::x86_avx_vextractf128_pd_256: BuiltinName = "__builtin_ia32_vextractf128_pd256"; break;
case Intrinsic::x86_avx_vextractf128_ps_256: BuiltinName = "__builtin_ia32_vextractf128_ps256"; break;
case Intrinsic::x86_avx_vextractf128_si_256: BuiltinName = "__builtin_ia32_vextractf128_si256"; break;
case Intrinsic::x86_avx_vinsertf128_pd_256: BuiltinName = "__builtin_ia32_vinsertf128_pd256"; break;
case Intrinsic::x86_avx_vinsertf128_ps_256: BuiltinName = "__builtin_ia32_vinsertf128_ps256"; break;
case Intrinsic::x86_avx_vinsertf128_si_256: BuiltinName = "__builtin_ia32_vinsertf128_si256"; break;
case Intrinsic::x86_avx_vperm2f128_pd_256: BuiltinName = "__builtin_ia32_vperm2f128_pd256"; break;
case Intrinsic::x86_avx_vperm2f128_ps_256: BuiltinName = "__builtin_ia32_vperm2f128_ps256"; break;
case Intrinsic::x86_avx_vperm2f128_si_256: BuiltinName = "__builtin_ia32_vperm2f128_si256"; break;
case Intrinsic::x86_avx_vpermil_pd: BuiltinName = "__builtin_ia32_vpermilpd"; break;
case Intrinsic::x86_avx_vpermil_pd_256: BuiltinName = "__builtin_ia32_vpermilpd256"; break;
case Intrinsic::x86_avx_vpermil_ps: BuiltinName = "__builtin_ia32_vpermilps"; break;
case Intrinsic::x86_avx_vpermil_ps_256: BuiltinName = "__builtin_ia32_vpermilps256"; break;
case Intrinsic::x86_avx_vpermilvar_pd: BuiltinName = "__builtin_ia32_vpermilvarpd"; break;
case Intrinsic::x86_avx_vpermilvar_pd_256: BuiltinName = "__builtin_ia32_vpermilvarpd256"; break;
case Intrinsic::x86_avx_vpermilvar_ps: BuiltinName = "__builtin_ia32_vpermilvarps"; break;
case Intrinsic::x86_avx_vpermilvar_ps_256: BuiltinName = "__builtin_ia32_vpermilvarps256"; break;
case Intrinsic::x86_avx_vtestc_pd: BuiltinName = "__builtin_ia32_vtestcpd"; break;
case Intrinsic::x86_avx_vtestc_pd_256: BuiltinName = "__builtin_ia32_vtestcpd256"; break;
case Intrinsic::x86_avx_vtestc_ps: BuiltinName = "__builtin_ia32_vtestcps"; break;
case Intrinsic::x86_avx_vtestc_ps_256: BuiltinName = "__builtin_ia32_vtestcps256"; break;
case Intrinsic::x86_avx_vtestnzc_pd: BuiltinName = "__builtin_ia32_vtestnzcpd"; break;
case Intrinsic::x86_avx_vtestnzc_pd_256: BuiltinName = "__builtin_ia32_vtestnzcpd256"; break;
case Intrinsic::x86_avx_vtestnzc_ps: BuiltinName = "__builtin_ia32_vtestnzcps"; break;
case Intrinsic::x86_avx_vtestnzc_ps_256: BuiltinName = "__builtin_ia32_vtestnzcps256"; break;
case Intrinsic::x86_avx_vtestz_pd: BuiltinName = "__builtin_ia32_vtestzpd"; break;
case Intrinsic::x86_avx_vtestz_pd_256: BuiltinName = "__builtin_ia32_vtestzpd256"; break;
case Intrinsic::x86_avx_vtestz_ps: BuiltinName = "__builtin_ia32_vtestzps"; break;
case Intrinsic::x86_avx_vtestz_ps_256: BuiltinName = "__builtin_ia32_vtestzps256"; break;
case Intrinsic::x86_avx_vzeroall: BuiltinName = "__builtin_ia32_vzeroall"; break;
case Intrinsic::x86_avx_vzeroupper: BuiltinName = "__builtin_ia32_vzeroupper"; break;
case Intrinsic::x86_mmx_emms: BuiltinName = "__builtin_ia32_emms"; break;
case Intrinsic::x86_mmx_femms: BuiltinName = "__builtin_ia32_femms"; break;
case Intrinsic::x86_mmx_maskmovq: BuiltinName = "__builtin_ia32_maskmovq"; break;
case Intrinsic::x86_mmx_movnt_dq: BuiltinName = "__builtin_ia32_movntq"; break;
case Intrinsic::x86_mmx_packssdw: BuiltinName = "__builtin_ia32_packssdw"; break;
case Intrinsic::x86_mmx_packsswb: BuiltinName = "__builtin_ia32_packsswb"; break;
case Intrinsic::x86_mmx_packuswb: BuiltinName = "__builtin_ia32_packuswb"; break;
case Intrinsic::x86_mmx_padd_b: BuiltinName = "__builtin_ia32_paddb"; break;
case Intrinsic::x86_mmx_padd_d: BuiltinName = "__builtin_ia32_paddd"; break;
case Intrinsic::x86_mmx_padd_q: BuiltinName = "__builtin_ia32_paddq"; break;
case Intrinsic::x86_mmx_padd_w: BuiltinName = "__builtin_ia32_paddw"; break;
case Intrinsic::x86_mmx_padds_b: BuiltinName = "__builtin_ia32_paddsb"; break;
case Intrinsic::x86_mmx_padds_w: BuiltinName = "__builtin_ia32_paddsw"; break;
case Intrinsic::x86_mmx_paddus_b: BuiltinName = "__builtin_ia32_paddusb"; break;
case Intrinsic::x86_mmx_paddus_w: BuiltinName = "__builtin_ia32_paddusw"; break;
case Intrinsic::x86_mmx_palignr_b: BuiltinName = "__builtin_ia32_palignr"; break;
case Intrinsic::x86_mmx_pand: BuiltinName = "__builtin_ia32_pand"; break;
case Intrinsic::x86_mmx_pandn: BuiltinName = "__builtin_ia32_pandn"; break;
case Intrinsic::x86_mmx_pavg_b: BuiltinName = "__builtin_ia32_pavgb"; break;
case Intrinsic::x86_mmx_pavg_w: BuiltinName = "__builtin_ia32_pavgw"; break;
case Intrinsic::x86_mmx_pcmpeq_b: BuiltinName = "__builtin_ia32_pcmpeqb"; break;
case Intrinsic::x86_mmx_pcmpeq_d: BuiltinName = "__builtin_ia32_pcmpeqd"; break;
case Intrinsic::x86_mmx_pcmpeq_w: BuiltinName = "__builtin_ia32_pcmpeqw"; break;
case Intrinsic::x86_mmx_pcmpgt_b: BuiltinName = "__builtin_ia32_pcmpgtb"; break;
case Intrinsic::x86_mmx_pcmpgt_d: BuiltinName = "__builtin_ia32_pcmpgtd"; break;
case Intrinsic::x86_mmx_pcmpgt_w: BuiltinName = "__builtin_ia32_pcmpgtw"; break;
case Intrinsic::x86_mmx_pextr_w: BuiltinName = "__builtin_ia32_vec_ext_v4hi"; break;
case Intrinsic::x86_mmx_pinsr_w: BuiltinName = "__builtin_ia32_vec_set_v4hi"; break;
case Intrinsic::x86_mmx_pmadd_wd: BuiltinName = "__builtin_ia32_pmaddwd"; break;
case Intrinsic::x86_mmx_pmaxs_w: BuiltinName = "__builtin_ia32_pmaxsw"; break;
case Intrinsic::x86_mmx_pmaxu_b: BuiltinName = "__builtin_ia32_pmaxub"; break;
case Intrinsic::x86_mmx_pmins_w: BuiltinName = "__builtin_ia32_pminsw"; break;
case Intrinsic::x86_mmx_pminu_b: BuiltinName = "__builtin_ia32_pminub"; break;
case Intrinsic::x86_mmx_pmovmskb: BuiltinName = "__builtin_ia32_pmovmskb"; break;
case Intrinsic::x86_mmx_pmulh_w: BuiltinName = "__builtin_ia32_pmulhw"; break;
case Intrinsic::x86_mmx_pmulhu_w: BuiltinName = "__builtin_ia32_pmulhuw"; break;
case Intrinsic::x86_mmx_pmull_w: BuiltinName = "__builtin_ia32_pmullw"; break;
case Intrinsic::x86_mmx_pmulu_dq: BuiltinName = "__builtin_ia32_pmuludq"; break;
case Intrinsic::x86_mmx_por: BuiltinName = "__builtin_ia32_por"; break;
case Intrinsic::x86_mmx_psad_bw: BuiltinName = "__builtin_ia32_psadbw"; break;
case Intrinsic::x86_mmx_psll_d: BuiltinName = "__builtin_ia32_pslld"; break;
case Intrinsic::x86_mmx_psll_q: BuiltinName = "__builtin_ia32_psllq"; break;
case Intrinsic::x86_mmx_psll_w: BuiltinName = "__builtin_ia32_psllw"; break;
case Intrinsic::x86_mmx_pslli_d: BuiltinName = "__builtin_ia32_pslldi"; break;
case Intrinsic::x86_mmx_pslli_q: BuiltinName = "__builtin_ia32_psllqi"; break;
case Intrinsic::x86_mmx_pslli_w: BuiltinName = "__builtin_ia32_psllwi"; break;
case Intrinsic::x86_mmx_psra_d: BuiltinName = "__builtin_ia32_psrad"; break;
case Intrinsic::x86_mmx_psra_w: BuiltinName = "__builtin_ia32_psraw"; break;
case Intrinsic::x86_mmx_psrai_d: BuiltinName = "__builtin_ia32_psradi"; break;
case Intrinsic::x86_mmx_psrai_w: BuiltinName = "__builtin_ia32_psrawi"; break;
case Intrinsic::x86_mmx_psrl_d: BuiltinName = "__builtin_ia32_psrld"; break;
case Intrinsic::x86_mmx_psrl_q: BuiltinName = "__builtin_ia32_psrlq"; break;
case Intrinsic::x86_mmx_psrl_w: BuiltinName = "__builtin_ia32_psrlw"; break;
case Intrinsic::x86_mmx_psrli_d: BuiltinName = "__builtin_ia32_psrldi"; break;
case Intrinsic::x86_mmx_psrli_q: BuiltinName = "__builtin_ia32_psrlqi"; break;
case Intrinsic::x86_mmx_psrli_w: BuiltinName = "__builtin_ia32_psrlwi"; break;
case Intrinsic::x86_mmx_psub_b: BuiltinName = "__builtin_ia32_psubb"; break;
case Intrinsic::x86_mmx_psub_d: BuiltinName = "__builtin_ia32_psubd"; break;
case Intrinsic::x86_mmx_psub_q: BuiltinName = "__builtin_ia32_psubq"; break;
case Intrinsic::x86_mmx_psub_w: BuiltinName = "__builtin_ia32_psubw"; break;
case Intrinsic::x86_mmx_psubs_b: BuiltinName = "__builtin_ia32_psubsb"; break;
case Intrinsic::x86_mmx_psubs_w: BuiltinName = "__builtin_ia32_psubsw"; break;
case Intrinsic::x86_mmx_psubus_b: BuiltinName = "__builtin_ia32_psubusb"; break;
case Intrinsic::x86_mmx_psubus_w: BuiltinName = "__builtin_ia32_psubusw"; break;
case Intrinsic::x86_mmx_punpckhbw: BuiltinName = "__builtin_ia32_punpckhbw"; break;
case Intrinsic::x86_mmx_punpckhdq: BuiltinName = "__builtin_ia32_punpckhdq"; break;
case Intrinsic::x86_mmx_punpckhwd: BuiltinName = "__builtin_ia32_punpckhwd"; break;
case Intrinsic::x86_mmx_punpcklbw: BuiltinName = "__builtin_ia32_punpcklbw"; break;
case Intrinsic::x86_mmx_punpckldq: BuiltinName = "__builtin_ia32_punpckldq"; break;
case Intrinsic::x86_mmx_punpcklwd: BuiltinName = "__builtin_ia32_punpcklwd"; break;
case Intrinsic::x86_mmx_pxor: BuiltinName = "__builtin_ia32_pxor"; break;
case Intrinsic::x86_sse2_add_sd: BuiltinName = "__builtin_ia32_addsd"; break;
case Intrinsic::x86_sse2_clflush: BuiltinName = "__builtin_ia32_clflush"; break;
case Intrinsic::x86_sse2_comieq_sd: BuiltinName = "__builtin_ia32_comisdeq"; break;
case Intrinsic::x86_sse2_comige_sd: BuiltinName = "__builtin_ia32_comisdge"; break;
case Intrinsic::x86_sse2_comigt_sd: BuiltinName = "__builtin_ia32_comisdgt"; break;
case Intrinsic::x86_sse2_comile_sd: BuiltinName = "__builtin_ia32_comisdle"; break;
case Intrinsic::x86_sse2_comilt_sd: BuiltinName = "__builtin_ia32_comisdlt"; break;
case Intrinsic::x86_sse2_comineq_sd: BuiltinName = "__builtin_ia32_comisdneq"; break;
case Intrinsic::x86_sse2_cvtdq2pd: BuiltinName = "__builtin_ia32_cvtdq2pd"; break;
case Intrinsic::x86_sse2_cvtdq2ps: BuiltinName = "__builtin_ia32_cvtdq2ps"; break;
case Intrinsic::x86_sse2_cvtpd2dq: BuiltinName = "__builtin_ia32_cvtpd2dq"; break;
case Intrinsic::x86_sse2_cvtpd2ps: BuiltinName = "__builtin_ia32_cvtpd2ps"; break;
case Intrinsic::x86_sse2_cvtps2dq: BuiltinName = "__builtin_ia32_cvtps2dq"; break;
case Intrinsic::x86_sse2_cvtps2pd: BuiltinName = "__builtin_ia32_cvtps2pd"; break;
case Intrinsic::x86_sse2_cvtsd2si: BuiltinName = "__builtin_ia32_cvtsd2si"; break;
case Intrinsic::x86_sse2_cvtsd2si64: BuiltinName = "__builtin_ia32_cvtsd2si64"; break;
case Intrinsic::x86_sse2_cvtsd2ss: BuiltinName = "__builtin_ia32_cvtsd2ss"; break;
case Intrinsic::x86_sse2_cvtsi2sd: BuiltinName = "__builtin_ia32_cvtsi2sd"; break;
case Intrinsic::x86_sse2_cvtsi642sd: BuiltinName = "__builtin_ia32_cvtsi642sd"; break;
case Intrinsic::x86_sse2_cvtss2sd: BuiltinName = "__builtin_ia32_cvtss2sd"; break;
case Intrinsic::x86_sse2_cvttpd2dq: BuiltinName = "__builtin_ia32_cvttpd2dq"; break;
case Intrinsic::x86_sse2_cvttps2dq: BuiltinName = "__builtin_ia32_cvttps2dq"; break;
case Intrinsic::x86_sse2_cvttsd2si: BuiltinName = "__builtin_ia32_cvttsd2si"; break;
case Intrinsic::x86_sse2_cvttsd2si64: BuiltinName = "__builtin_ia32_cvttsd2si64"; break;
case Intrinsic::x86_sse2_div_sd: BuiltinName = "__builtin_ia32_divsd"; break;
case Intrinsic::x86_sse2_lfence: BuiltinName = "__builtin_ia32_lfence"; break;
case Intrinsic::x86_sse2_maskmov_dqu: BuiltinName = "__builtin_ia32_maskmovdqu"; break;
case Intrinsic::x86_sse2_max_pd: BuiltinName = "__builtin_ia32_maxpd"; break;
case Intrinsic::x86_sse2_max_sd: BuiltinName = "__builtin_ia32_maxsd"; break;
case Intrinsic::x86_sse2_mfence: BuiltinName = "__builtin_ia32_mfence"; break;
case Intrinsic::x86_sse2_min_pd: BuiltinName = "__builtin_ia32_minpd"; break;
case Intrinsic::x86_sse2_min_sd: BuiltinName = "__builtin_ia32_minsd"; break;
case Intrinsic::x86_sse2_movmsk_pd: BuiltinName = "__builtin_ia32_movmskpd"; break;
case Intrinsic::x86_sse2_mul_sd: BuiltinName = "__builtin_ia32_mulsd"; break;
case Intrinsic::x86_sse2_packssdw_128: BuiltinName = "__builtin_ia32_packssdw128"; break;
case Intrinsic::x86_sse2_packsswb_128: BuiltinName = "__builtin_ia32_packsswb128"; break;
case Intrinsic::x86_sse2_packuswb_128: BuiltinName = "__builtin_ia32_packuswb128"; break;
case Intrinsic::x86_sse2_padds_b: BuiltinName = "__builtin_ia32_paddsb128"; break;
case Intrinsic::x86_sse2_padds_w: BuiltinName = "__builtin_ia32_paddsw128"; break;
case Intrinsic::x86_sse2_paddus_b: BuiltinName = "__builtin_ia32_paddusb128"; break;
case Intrinsic::x86_sse2_paddus_w: BuiltinName = "__builtin_ia32_paddusw128"; break;
case Intrinsic::x86_sse2_pavg_b: BuiltinName = "__builtin_ia32_pavgb128"; break;
case Intrinsic::x86_sse2_pavg_w: BuiltinName = "__builtin_ia32_pavgw128"; break;
case Intrinsic::x86_sse2_pcmpeq_b: BuiltinName = "__builtin_ia32_pcmpeqb128"; break;
case Intrinsic::x86_sse2_pcmpeq_d: BuiltinName = "__builtin_ia32_pcmpeqd128"; break;
case Intrinsic::x86_sse2_pcmpeq_w: BuiltinName = "__builtin_ia32_pcmpeqw128"; break;
case Intrinsic::x86_sse2_pcmpgt_b: BuiltinName = "__builtin_ia32_pcmpgtb128"; break;
case Intrinsic::x86_sse2_pcmpgt_d: BuiltinName = "__builtin_ia32_pcmpgtd128"; break;
case Intrinsic::x86_sse2_pcmpgt_w: BuiltinName = "__builtin_ia32_pcmpgtw128"; break;
case Intrinsic::x86_sse2_pmadd_wd: BuiltinName = "__builtin_ia32_pmaddwd128"; break;
case Intrinsic::x86_sse2_pmaxs_w: BuiltinName = "__builtin_ia32_pmaxsw128"; break;
case Intrinsic::x86_sse2_pmaxu_b: BuiltinName = "__builtin_ia32_pmaxub128"; break;
case Intrinsic::x86_sse2_pmins_w: BuiltinName = "__builtin_ia32_pminsw128"; break;
case Intrinsic::x86_sse2_pminu_b: BuiltinName = "__builtin_ia32_pminub128"; break;
case Intrinsic::x86_sse2_pmovmskb_128: BuiltinName = "__builtin_ia32_pmovmskb128"; break;
case Intrinsic::x86_sse2_pmulh_w: BuiltinName = "__builtin_ia32_pmulhw128"; break;
case Intrinsic::x86_sse2_pmulhu_w: BuiltinName = "__builtin_ia32_pmulhuw128"; break;
case Intrinsic::x86_sse2_pmulu_dq: BuiltinName = "__builtin_ia32_pmuludq128"; break;
case Intrinsic::x86_sse2_psad_bw: BuiltinName = "__builtin_ia32_psadbw128"; break;
case Intrinsic::x86_sse2_psll_d: BuiltinName = "__builtin_ia32_pslld128"; break;
case Intrinsic::x86_sse2_psll_dq: BuiltinName = "__builtin_ia32_pslldqi128"; break;
case Intrinsic::x86_sse2_psll_dq_bs: BuiltinName = "__builtin_ia32_pslldqi128_byteshift"; break;
case Intrinsic::x86_sse2_psll_q: BuiltinName = "__builtin_ia32_psllq128"; break;
case Intrinsic::x86_sse2_psll_w: BuiltinName = "__builtin_ia32_psllw128"; break;
case Intrinsic::x86_sse2_pslli_d: BuiltinName = "__builtin_ia32_pslldi128"; break;
case Intrinsic::x86_sse2_pslli_q: BuiltinName = "__builtin_ia32_psllqi128"; break;
case Intrinsic::x86_sse2_pslli_w: BuiltinName = "__builtin_ia32_psllwi128"; break;
case Intrinsic::x86_sse2_psra_d: BuiltinName = "__builtin_ia32_psrad128"; break;
case Intrinsic::x86_sse2_psra_w: BuiltinName = "__builtin_ia32_psraw128"; break;
case Intrinsic::x86_sse2_psrai_d: BuiltinName = "__builtin_ia32_psradi128"; break;
case Intrinsic::x86_sse2_psrai_w: BuiltinName = "__builtin_ia32_psrawi128"; break;
case Intrinsic::x86_sse2_psrl_d: BuiltinName = "__builtin_ia32_psrld128"; break;
case Intrinsic::x86_sse2_psrl_dq: BuiltinName = "__builtin_ia32_psrldqi128"; break;
case Intrinsic::x86_sse2_psrl_dq_bs: BuiltinName = "__builtin_ia32_psrldqi128_byteshift"; break;
case Intrinsic::x86_sse2_psrl_q: BuiltinName = "__builtin_ia32_psrlq128"; break;
case Intrinsic::x86_sse2_psrl_w: BuiltinName = "__builtin_ia32_psrlw128"; break;
case Intrinsic::x86_sse2_psrli_d: BuiltinName = "__builtin_ia32_psrldi128"; break;
case Intrinsic::x86_sse2_psrli_q: BuiltinName = "__builtin_ia32_psrlqi128"; break;
case Intrinsic::x86_sse2_psrli_w: BuiltinName = "__builtin_ia32_psrlwi128"; break;
case Intrinsic::x86_sse2_psubs_b: BuiltinName = "__builtin_ia32_psubsb128"; break;
case Intrinsic::x86_sse2_psubs_w: BuiltinName = "__builtin_ia32_psubsw128"; break;
case Intrinsic::x86_sse2_psubus_b: BuiltinName = "__builtin_ia32_psubusb128"; break;
case Intrinsic::x86_sse2_psubus_w: BuiltinName = "__builtin_ia32_psubusw128"; break;
case Intrinsic::x86_sse2_sqrt_pd: BuiltinName = "__builtin_ia32_sqrtpd"; break;
case Intrinsic::x86_sse2_sqrt_sd: BuiltinName = "__builtin_ia32_sqrtsd"; break;
case Intrinsic::x86_sse2_storel_dq: BuiltinName = "__builtin_ia32_storelv4si"; break;
case Intrinsic::x86_sse2_storeu_dq: BuiltinName = "__builtin_ia32_storedqu"; break;
case Intrinsic::x86_sse2_storeu_pd: BuiltinName = "__builtin_ia32_storeupd"; break;
case Intrinsic::x86_sse2_sub_sd: BuiltinName = "__builtin_ia32_subsd"; break;
case Intrinsic::x86_sse2_ucomieq_sd: BuiltinName = "__builtin_ia32_ucomisdeq"; break;
case Intrinsic::x86_sse2_ucomige_sd: BuiltinName = "__builtin_ia32_ucomisdge"; break;
case Intrinsic::x86_sse2_ucomigt_sd: BuiltinName = "__builtin_ia32_ucomisdgt"; break;
case Intrinsic::x86_sse2_ucomile_sd: BuiltinName = "__builtin_ia32_ucomisdle"; break;
case Intrinsic::x86_sse2_ucomilt_sd: BuiltinName = "__builtin_ia32_ucomisdlt"; break;
case Intrinsic::x86_sse2_ucomineq_sd: BuiltinName = "__builtin_ia32_ucomisdneq"; break;
case Intrinsic::x86_sse3_addsub_pd: BuiltinName = "__builtin_ia32_addsubpd"; break;
case Intrinsic::x86_sse3_addsub_ps: BuiltinName = "__builtin_ia32_addsubps"; break;
case Intrinsic::x86_sse3_hadd_pd: BuiltinName = "__builtin_ia32_haddpd"; break;
case Intrinsic::x86_sse3_hadd_ps: BuiltinName = "__builtin_ia32_haddps"; break;
case Intrinsic::x86_sse3_hsub_pd: BuiltinName = "__builtin_ia32_hsubpd"; break;
case Intrinsic::x86_sse3_hsub_ps: BuiltinName = "__builtin_ia32_hsubps"; break;
case Intrinsic::x86_sse3_ldu_dq: BuiltinName = "__builtin_ia32_lddqu"; break;
case Intrinsic::x86_sse3_monitor: BuiltinName = "__builtin_ia32_monitor"; break;
case Intrinsic::x86_sse3_mwait: BuiltinName = "__builtin_ia32_mwait"; break;
case Intrinsic::x86_sse41_blendpd: BuiltinName = "__builtin_ia32_blendpd"; break;
case Intrinsic::x86_sse41_blendps: BuiltinName = "__builtin_ia32_blendps"; break;
case Intrinsic::x86_sse41_blendvpd: BuiltinName = "__builtin_ia32_blendvpd"; break;
case Intrinsic::x86_sse41_blendvps: BuiltinName = "__builtin_ia32_blendvps"; break;
case Intrinsic::x86_sse41_dppd: BuiltinName = "__builtin_ia32_dppd"; break;
case Intrinsic::x86_sse41_dpps: BuiltinName = "__builtin_ia32_dpps"; break;
case Intrinsic::x86_sse41_extractps: BuiltinName = "__builtin_ia32_extractps128"; break;
case Intrinsic::x86_sse41_insertps: BuiltinName = "__builtin_ia32_insertps128"; break;
case Intrinsic::x86_sse41_movntdqa: BuiltinName = "__builtin_ia32_movntdqa"; break;
case Intrinsic::x86_sse41_mpsadbw: BuiltinName = "__builtin_ia32_mpsadbw128"; break;
case Intrinsic::x86_sse41_packusdw: BuiltinName = "__builtin_ia32_packusdw128"; break;
case Intrinsic::x86_sse41_pblendvb: BuiltinName = "__builtin_ia32_pblendvb128"; break;
case Intrinsic::x86_sse41_pblendw: BuiltinName = "__builtin_ia32_pblendw128"; break;
case Intrinsic::x86_sse41_pcmpeqq: BuiltinName = "__builtin_ia32_pcmpeqq"; break;
case Intrinsic::x86_sse41_phminposuw: BuiltinName = "__builtin_ia32_phminposuw128"; break;
case Intrinsic::x86_sse41_pmaxsb: BuiltinName = "__builtin_ia32_pmaxsb128"; break;
case Intrinsic::x86_sse41_pmaxsd: BuiltinName = "__builtin_ia32_pmaxsd128"; break;
case Intrinsic::x86_sse41_pmaxud: BuiltinName = "__builtin_ia32_pmaxud128"; break;
case Intrinsic::x86_sse41_pmaxuw: BuiltinName = "__builtin_ia32_pmaxuw128"; break;
case Intrinsic::x86_sse41_pminsb: BuiltinName = "__builtin_ia32_pminsb128"; break;
case Intrinsic::x86_sse41_pminsd: BuiltinName = "__builtin_ia32_pminsd128"; break;
case Intrinsic::x86_sse41_pminud: BuiltinName = "__builtin_ia32_pminud128"; break;
case Intrinsic::x86_sse41_pminuw: BuiltinName = "__builtin_ia32_pminuw128"; break;
case Intrinsic::x86_sse41_pmovsxbd: BuiltinName = "__builtin_ia32_pmovsxbd128"; break;
case Intrinsic::x86_sse41_pmovsxbq: BuiltinName = "__builtin_ia32_pmovsxbq128"; break;
case Intrinsic::x86_sse41_pmovsxbw: BuiltinName = "__builtin_ia32_pmovsxbw128"; break;
case Intrinsic::x86_sse41_pmovsxdq: BuiltinName = "__builtin_ia32_pmovsxdq128"; break;
case Intrinsic::x86_sse41_pmovsxwd: BuiltinName = "__builtin_ia32_pmovsxwd128"; break;
case Intrinsic::x86_sse41_pmovsxwq: BuiltinName = "__builtin_ia32_pmovsxwq128"; break;
case Intrinsic::x86_sse41_pmovzxbd: BuiltinName = "__builtin_ia32_pmovzxbd128"; break;
case Intrinsic::x86_sse41_pmovzxbq: BuiltinName = "__builtin_ia32_pmovzxbq128"; break;
case Intrinsic::x86_sse41_pmovzxbw: BuiltinName = "__builtin_ia32_pmovzxbw128"; break;
case Intrinsic::x86_sse41_pmovzxdq: BuiltinName = "__builtin_ia32_pmovzxdq128"; break;
case Intrinsic::x86_sse41_pmovzxwd: BuiltinName = "__builtin_ia32_pmovzxwd128"; break;
case Intrinsic::x86_sse41_pmovzxwq: BuiltinName = "__builtin_ia32_pmovzxwq128"; break;
case Intrinsic::x86_sse41_pmuldq: BuiltinName = "__builtin_ia32_pmuldq128"; break;
case Intrinsic::x86_sse41_ptestc: BuiltinName = "__builtin_ia32_ptestc128"; break;
case Intrinsic::x86_sse41_ptestnzc: BuiltinName = "__builtin_ia32_ptestnzc128"; break;
case Intrinsic::x86_sse41_ptestz: BuiltinName = "__builtin_ia32_ptestz128"; break;
case Intrinsic::x86_sse41_round_pd: BuiltinName = "__builtin_ia32_roundpd"; break;
case Intrinsic::x86_sse41_round_ps: BuiltinName = "__builtin_ia32_roundps"; break;
case Intrinsic::x86_sse41_round_sd: BuiltinName = "__builtin_ia32_roundsd"; break;
case Intrinsic::x86_sse41_round_ss: BuiltinName = "__builtin_ia32_roundss"; break;
case Intrinsic::x86_sse42_crc32_32_16: BuiltinName = "__builtin_ia32_crc32hi"; break;
case Intrinsic::x86_sse42_crc32_32_32: BuiltinName = "__builtin_ia32_crc32si"; break;
case Intrinsic::x86_sse42_crc32_32_8: BuiltinName = "__builtin_ia32_crc32qi"; break;
case Intrinsic::x86_sse42_crc32_64_64: BuiltinName = "__builtin_ia32_crc32di"; break;
case Intrinsic::x86_sse42_pcmpestri128: BuiltinName = "__builtin_ia32_pcmpestri128"; break;
case Intrinsic::x86_sse42_pcmpestria128: BuiltinName = "__builtin_ia32_pcmpestria128"; break;
case Intrinsic::x86_sse42_pcmpestric128: BuiltinName = "__builtin_ia32_pcmpestric128"; break;
case Intrinsic::x86_sse42_pcmpestrio128: BuiltinName = "__builtin_ia32_pcmpestrio128"; break;
case Intrinsic::x86_sse42_pcmpestris128: BuiltinName = "__builtin_ia32_pcmpestris128"; break;
case Intrinsic::x86_sse42_pcmpestriz128: BuiltinName = "__builtin_ia32_pcmpestriz128"; break;
case Intrinsic::x86_sse42_pcmpestrm128: BuiltinName = "__builtin_ia32_pcmpestrm128"; break;
case Intrinsic::x86_sse42_pcmpgtq: BuiltinName = "__builtin_ia32_pcmpgtq"; break;
case Intrinsic::x86_sse42_pcmpistri128: BuiltinName = "__builtin_ia32_pcmpistri128"; break;
case Intrinsic::x86_sse42_pcmpistria128: BuiltinName = "__builtin_ia32_pcmpistria128"; break;
case Intrinsic::x86_sse42_pcmpistric128: BuiltinName = "__builtin_ia32_pcmpistric128"; break;
case Intrinsic::x86_sse42_pcmpistrio128: BuiltinName = "__builtin_ia32_pcmpistrio128"; break;
case Intrinsic::x86_sse42_pcmpistris128: BuiltinName = "__builtin_ia32_pcmpistris128"; break;
case Intrinsic::x86_sse42_pcmpistriz128: BuiltinName = "__builtin_ia32_pcmpistriz128"; break;
case Intrinsic::x86_sse42_pcmpistrm128: BuiltinName = "__builtin_ia32_pcmpistrm128"; break;
case Intrinsic::x86_sse_add_ss: BuiltinName = "__builtin_ia32_addss"; break;
case Intrinsic::x86_sse_comieq_ss: BuiltinName = "__builtin_ia32_comieq"; break;
case Intrinsic::x86_sse_comige_ss: BuiltinName = "__builtin_ia32_comige"; break;
case Intrinsic::x86_sse_comigt_ss: BuiltinName = "__builtin_ia32_comigt"; break;
case Intrinsic::x86_sse_comile_ss: BuiltinName = "__builtin_ia32_comile"; break;
case Intrinsic::x86_sse_comilt_ss: BuiltinName = "__builtin_ia32_comilt"; break;
case Intrinsic::x86_sse_comineq_ss: BuiltinName = "__builtin_ia32_comineq"; break;
case Intrinsic::x86_sse_cvtpd2pi: BuiltinName = "__builtin_ia32_cvtpd2pi"; break;
case Intrinsic::x86_sse_cvtpi2pd: BuiltinName = "__builtin_ia32_cvtpi2pd"; break;
case Intrinsic::x86_sse_cvtpi2ps: BuiltinName = "__builtin_ia32_cvtpi2ps"; break;
case Intrinsic::x86_sse_cvtps2pi: BuiltinName = "__builtin_ia32_cvtps2pi"; break;
case Intrinsic::x86_sse_cvtsi2ss: BuiltinName = "__builtin_ia32_cvtsi2ss"; break;
case Intrinsic::x86_sse_cvtsi642ss: BuiltinName = "__builtin_ia32_cvtsi642ss"; break;
case Intrinsic::x86_sse_cvtss2si: BuiltinName = "__builtin_ia32_cvtss2si"; break;
case Intrinsic::x86_sse_cvtss2si64: BuiltinName = "__builtin_ia32_cvtss2si64"; break;
case Intrinsic::x86_sse_cvttpd2pi: BuiltinName = "__builtin_ia32_cvttpd2pi"; break;
case Intrinsic::x86_sse_cvttps2pi: BuiltinName = "__builtin_ia32_cvttps2pi"; break;
case Intrinsic::x86_sse_cvttss2si: BuiltinName = "__builtin_ia32_cvttss2si"; break;
case Intrinsic::x86_sse_cvttss2si64: BuiltinName = "__builtin_ia32_cvttss2si64"; break;
case Intrinsic::x86_sse_div_ss: BuiltinName = "__builtin_ia32_divss"; break;
case Intrinsic::x86_sse_max_ps: BuiltinName = "__builtin_ia32_maxps"; break;
case Intrinsic::x86_sse_max_ss: BuiltinName = "__builtin_ia32_maxss"; break;
case Intrinsic::x86_sse_min_ps: BuiltinName = "__builtin_ia32_minps"; break;
case Intrinsic::x86_sse_min_ss: BuiltinName = "__builtin_ia32_minss"; break;
case Intrinsic::x86_sse_movmsk_ps: BuiltinName = "__builtin_ia32_movmskps"; break;
case Intrinsic::x86_sse_mul_ss: BuiltinName = "__builtin_ia32_mulss"; break;
case Intrinsic::x86_sse_pshuf_w: BuiltinName = "__builtin_ia32_pshufw"; break;
case Intrinsic::x86_sse_rcp_ps: BuiltinName = "__builtin_ia32_rcpps"; break;
case Intrinsic::x86_sse_rcp_ss: BuiltinName = "__builtin_ia32_rcpss"; break;
case Intrinsic::x86_sse_rsqrt_ps: BuiltinName = "__builtin_ia32_rsqrtps"; break;
case Intrinsic::x86_sse_rsqrt_ss: BuiltinName = "__builtin_ia32_rsqrtss"; break;
case Intrinsic::x86_sse_sfence: BuiltinName = "__builtin_ia32_sfence"; break;
case Intrinsic::x86_sse_sqrt_ps: BuiltinName = "__builtin_ia32_sqrtps"; break;
case Intrinsic::x86_sse_sqrt_ss: BuiltinName = "__builtin_ia32_sqrtss"; break;
case Intrinsic::x86_sse_storeu_ps: BuiltinName = "__builtin_ia32_storeups"; break;
case Intrinsic::x86_sse_sub_ss: BuiltinName = "__builtin_ia32_subss"; break;
case Intrinsic::x86_sse_ucomieq_ss: BuiltinName = "__builtin_ia32_ucomieq"; break;
case Intrinsic::x86_sse_ucomige_ss: BuiltinName = "__builtin_ia32_ucomige"; break;
case Intrinsic::x86_sse_ucomigt_ss: BuiltinName = "__builtin_ia32_ucomigt"; break;
case Intrinsic::x86_sse_ucomile_ss: BuiltinName = "__builtin_ia32_ucomile"; break;
case Intrinsic::x86_sse_ucomilt_ss: BuiltinName = "__builtin_ia32_ucomilt"; break;
case Intrinsic::x86_sse_ucomineq_ss: BuiltinName = "__builtin_ia32_ucomineq"; break;
case Intrinsic::x86_ssse3_pabs_b: BuiltinName = "__builtin_ia32_pabsb"; break;
case Intrinsic::x86_ssse3_pabs_b_128: BuiltinName = "__builtin_ia32_pabsb128"; break;
case Intrinsic::x86_ssse3_pabs_d: BuiltinName = "__builtin_ia32_pabsd"; break;
case Intrinsic::x86_ssse3_pabs_d_128: BuiltinName = "__builtin_ia32_pabsd128"; break;
case Intrinsic::x86_ssse3_pabs_w: BuiltinName = "__builtin_ia32_pabsw"; break;
case Intrinsic::x86_ssse3_pabs_w_128: BuiltinName = "__builtin_ia32_pabsw128"; break;
case Intrinsic::x86_ssse3_phadd_d: BuiltinName = "__builtin_ia32_phaddd"; break;
case Intrinsic::x86_ssse3_phadd_d_128: BuiltinName = "__builtin_ia32_phaddd128"; break;
case Intrinsic::x86_ssse3_phadd_sw: BuiltinName = "__builtin_ia32_phaddsw"; break;
case Intrinsic::x86_ssse3_phadd_sw_128: BuiltinName = "__builtin_ia32_phaddsw128"; break;
case Intrinsic::x86_ssse3_phadd_w: BuiltinName = "__builtin_ia32_phaddw"; break;
case Intrinsic::x86_ssse3_phadd_w_128: BuiltinName = "__builtin_ia32_phaddw128"; break;
case Intrinsic::x86_ssse3_phsub_d: BuiltinName = "__builtin_ia32_phsubd"; break;
case Intrinsic::x86_ssse3_phsub_d_128: BuiltinName = "__builtin_ia32_phsubd128"; break;
case Intrinsic::x86_ssse3_phsub_sw: BuiltinName = "__builtin_ia32_phsubsw"; break;
case Intrinsic::x86_ssse3_phsub_sw_128: BuiltinName = "__builtin_ia32_phsubsw128"; break;
case Intrinsic::x86_ssse3_phsub_w: BuiltinName = "__builtin_ia32_phsubw"; break;
case Intrinsic::x86_ssse3_phsub_w_128: BuiltinName = "__builtin_ia32_phsubw128"; break;
case Intrinsic::x86_ssse3_pmadd_ub_sw: BuiltinName = "__builtin_ia32_pmaddubsw"; break;
case Intrinsic::x86_ssse3_pmadd_ub_sw_128: BuiltinName = "__builtin_ia32_pmaddubsw128"; break;
case Intrinsic::x86_ssse3_pmul_hr_sw: BuiltinName = "__builtin_ia32_pmulhrsw"; break;
case Intrinsic::x86_ssse3_pmul_hr_sw_128: BuiltinName = "__builtin_ia32_pmulhrsw128"; break;
case Intrinsic::x86_ssse3_pshuf_b: BuiltinName = "__builtin_ia32_pshufb"; break;
case Intrinsic::x86_ssse3_pshuf_b_128: BuiltinName = "__builtin_ia32_pshufb128"; break;
case Intrinsic::x86_ssse3_psign_b: BuiltinName = "__builtin_ia32_psignb"; break;
case Intrinsic::x86_ssse3_psign_b_128: BuiltinName = "__builtin_ia32_psignb128"; break;
case Intrinsic::x86_ssse3_psign_d: BuiltinName = "__builtin_ia32_psignd"; break;
case Intrinsic::x86_ssse3_psign_d_128: BuiltinName = "__builtin_ia32_psignd128"; break;
case Intrinsic::x86_ssse3_psign_w: BuiltinName = "__builtin_ia32_psignw"; break;
case Intrinsic::x86_ssse3_psign_w_128: BuiltinName = "__builtin_ia32_psignw128"; break;
}
#endif
// Get the LLVM intrinsic that corresponds to a GCC builtin.
// This is used by the C front-end. The GCC builtin name is passed
// in as BuiltinName, and a target prefix (e.g. 'ppc') is passed
// in as TargetPrefix. The result is assigned to 'IntrinsicID'.
#ifdef GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN
Intrinsic::ID Intrinsic::getIntrinsicForGCCBuiltin(const char *TargetPrefixStr, const char *BuiltinNameStr) {
StringRef BuiltinName(BuiltinNameStr);
StringRef TargetPrefix(TargetPrefixStr);
/* Target Independent Builtins */ {
switch (BuiltinName.size()) {
default: break;
case 14: // 3 strings to match.
if (BuiltinName.substr(0, 2) != "__")
break;
switch (BuiltinName[2]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(3, 11) != "uiltin_trap")
break;
return Intrinsic::trap; // "__builtin_trap"
case 'g': // 2 strings to match.
if (BuiltinName.substr(3, 3) != "nu_")
break;
switch (BuiltinName[6]) {
default: break;
case 'f': // 1 string to match.
if (BuiltinName.substr(7, 7) != "2h_ieee")
break;
return Intrinsic::convert_to_fp16; // "__gnu_f2h_ieee"
case 'h': // 1 string to match.
if (BuiltinName.substr(7, 7) != "2f_ieee")
break;
return Intrinsic::convert_from_fp16; // "__gnu_h2f_ieee"
}
break;
}
break;
case 20: // 2 strings to match.
if (BuiltinName.substr(0, 10) != "__builtin_")
break;
switch (BuiltinName[10]) {
default: break;
case 'f': // 1 string to match.
if (BuiltinName.substr(11, 9) != "lt_rounds")
break;
return Intrinsic::flt_rounds; // "__builtin_flt_rounds"
case 's': // 1 string to match.
if (BuiltinName.substr(11, 9) != "tack_save")
break;
return Intrinsic::stacksave; // "__builtin_stack_save"
}
break;
case 21: // 2 strings to match.
if (BuiltinName.substr(0, 10) != "__builtin_")
break;
switch (BuiltinName[10]) {
default: break;
case 'o': // 1 string to match.
if (BuiltinName.substr(11, 10) != "bject_size")
break;
return Intrinsic::objectsize; // "__builtin_object_size"
case 'u': // 1 string to match.
if (BuiltinName.substr(11, 10) != "nwind_init")
break;
return Intrinsic::eh_unwind_init; // "__builtin_unwind_init"
}
break;
case 23: // 1 string to match.
if (BuiltinName.substr(0, 23) != "__builtin_stack_restore")
break;
return Intrinsic::stackrestore; // "__builtin_stack_restore"
case 25: // 1 string to match.
if (BuiltinName.substr(0, 25) != "__builtin_init_trampoline")
break;
return Intrinsic::init_trampoline; // "__builtin_init_trampoline"
case 27: // 1 string to match.
if (BuiltinName.substr(0, 27) != "__builtin_adjust_trampoline")
break;
return Intrinsic::adjust_trampoline; // "__builtin_adjust_trampoline"
}
}
if (TargetPrefix == "x86") {
switch (BuiltinName.size()) {
default: break;
case 18: // 1 string to match.
if (BuiltinName.substr(0, 18) != "__builtin_ia32_por")
break;
return Intrinsic::x86_mmx_por; // "__builtin_ia32_por"
case 19: // 5 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'd': // 2 strings to match.
if (BuiltinName.substr(16, 2) != "pp")
break;
switch (BuiltinName[18]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_dppd; // "__builtin_ia32_dppd"
case 's': // 1 string to match.
return Intrinsic::x86_sse41_dpps; // "__builtin_ia32_dpps"
}
break;
case 'e': // 1 string to match.
if (BuiltinName.substr(16, 3) != "mms")
break;
return Intrinsic::x86_mmx_emms; // "__builtin_ia32_emms"
case 'p': // 2 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName.substr(17, 2) != "nd")
break;
return Intrinsic::x86_mmx_pand; // "__builtin_ia32_pand"
case 'x': // 1 string to match.
if (BuiltinName.substr(17, 2) != "or")
break;
return Intrinsic::x86_mmx_pxor; // "__builtin_ia32_pxor"
}
break;
}
break;
case 20: // 54 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(16, 3) != "dds")
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_add_sd; // "__builtin_ia32_addsd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_add_ss; // "__builtin_ia32_addss"
}
break;
case 'd': // 2 strings to match.
if (BuiltinName.substr(16, 3) != "ivs")
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_div_sd; // "__builtin_ia32_divsd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_div_ss; // "__builtin_ia32_divss"
}
break;
case 'f': // 1 string to match.
if (BuiltinName.substr(16, 4) != "emms")
break;
return Intrinsic::x86_mmx_femms; // "__builtin_ia32_femms"
case 'l': // 1 string to match.
if (BuiltinName.substr(16, 4) != "ddqu")
break;
return Intrinsic::x86_sse3_ldu_dq; // "__builtin_ia32_lddqu"
case 'm': // 11 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 4 strings to match.
if (BuiltinName[17] != 'x')
break;
switch (BuiltinName[18]) {
default: break;
case 'p': // 2 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_max_pd; // "__builtin_ia32_maxpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_max_ps; // "__builtin_ia32_maxps"
}
break;
case 's': // 2 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_max_sd; // "__builtin_ia32_maxsd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_max_ss; // "__builtin_ia32_maxss"
}
break;
}
break;
case 'i': // 4 strings to match.
if (BuiltinName[17] != 'n')
break;
switch (BuiltinName[18]) {
default: break;
case 'p': // 2 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_min_pd; // "__builtin_ia32_minpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_min_ps; // "__builtin_ia32_minps"
}
break;
case 's': // 2 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_min_sd; // "__builtin_ia32_minsd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_min_ss; // "__builtin_ia32_minss"
}
break;
}
break;
case 'u': // 2 strings to match.
if (BuiltinName.substr(17, 2) != "ls")
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_mul_sd; // "__builtin_ia32_mulsd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_mul_ss; // "__builtin_ia32_mulss"
}
break;
case 'w': // 1 string to match.
if (BuiltinName.substr(17, 3) != "ait")
break;
return Intrinsic::x86_sse3_mwait; // "__builtin_ia32_mwait"
}
break;
case 'p': // 33 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 10 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'b': // 3 strings to match.
if (BuiltinName[18] != 's')
break;
switch (BuiltinName[19]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_ssse3_pabs_b; // "__builtin_ia32_pabsb"
case 'd': // 1 string to match.
return Intrinsic::x86_ssse3_pabs_d; // "__builtin_ia32_pabsd"
case 'w': // 1 string to match.
return Intrinsic::x86_ssse3_pabs_w; // "__builtin_ia32_pabsw"
}
break;
case 'd': // 4 strings to match.
if (BuiltinName[18] != 'd')
break;
switch (BuiltinName[19]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_padd_b; // "__builtin_ia32_paddb"
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_padd_d; // "__builtin_ia32_paddd"
case 'q': // 1 string to match.
return Intrinsic::x86_mmx_padd_q; // "__builtin_ia32_paddq"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_padd_w; // "__builtin_ia32_paddw"
}
break;
case 'n': // 1 string to match.
if (BuiltinName.substr(18, 2) != "dn")
break;
return Intrinsic::x86_mmx_pandn; // "__builtin_ia32_pandn"
case 'v': // 2 strings to match.
if (BuiltinName[18] != 'g')
break;
switch (BuiltinName[19]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_pavg_b; // "__builtin_ia32_pavgb"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_pavg_w; // "__builtin_ia32_pavgw"
}
break;
}
break;
case 'f': // 9 strings to match.
switch (BuiltinName[17]) {
default: break;
case '2': // 2 strings to match.
if (BuiltinName[18] != 'i')
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_3dnow_pf2id; // "__builtin_ia32_pf2id"
case 'w': // 1 string to match.
return Intrinsic::x86_3dnowa_pf2iw; // "__builtin_ia32_pf2iw"
}
break;
case 'a': // 2 strings to match.
switch (BuiltinName[18]) {
default: break;
case 'c': // 1 string to match.
if (BuiltinName[19] != 'c')
break;
return Intrinsic::x86_3dnow_pfacc; // "__builtin_ia32_pfacc"
case 'd': // 1 string to match.
if (BuiltinName[19] != 'd')
break;
return Intrinsic::x86_3dnow_pfadd; // "__builtin_ia32_pfadd"
}
break;
case 'm': // 3 strings to match.
switch (BuiltinName[18]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName[19] != 'x')
break;
return Intrinsic::x86_3dnow_pfmax; // "__builtin_ia32_pfmax"
case 'i': // 1 string to match.
if (BuiltinName[19] != 'n')
break;
return Intrinsic::x86_3dnow_pfmin; // "__builtin_ia32_pfmin"
case 'u': // 1 string to match.
if (BuiltinName[19] != 'l')
break;
return Intrinsic::x86_3dnow_pfmul; // "__builtin_ia32_pfmul"
}
break;
case 'r': // 1 string to match.
if (BuiltinName.substr(18, 2) != "cp")
break;
return Intrinsic::x86_3dnow_pfrcp; // "__builtin_ia32_pfrcp"
case 's': // 1 string to match.
if (BuiltinName.substr(18, 2) != "ub")
break;
return Intrinsic::x86_3dnow_pfsub; // "__builtin_ia32_pfsub"
}
break;
case 'i': // 2 strings to match.
if (BuiltinName.substr(17, 2) != "2f")
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_3dnow_pi2fd; // "__builtin_ia32_pi2fd"
case 'w': // 1 string to match.
return Intrinsic::x86_3dnowa_pi2fw; // "__builtin_ia32_pi2fw"
}
break;
case 's': // 12 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'l': // 3 strings to match.
if (BuiltinName[18] != 'l')
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_psll_d; // "__builtin_ia32_pslld"
case 'q': // 1 string to match.
return Intrinsic::x86_mmx_psll_q; // "__builtin_ia32_psllq"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psll_w; // "__builtin_ia32_psllw"
}
break;
case 'r': // 5 strings to match.
switch (BuiltinName[18]) {
default: break;
case 'a': // 2 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_psra_d; // "__builtin_ia32_psrad"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psra_w; // "__builtin_ia32_psraw"
}
break;
case 'l': // 3 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_psrl_d; // "__builtin_ia32_psrld"
case 'q': // 1 string to match.
return Intrinsic::x86_mmx_psrl_q; // "__builtin_ia32_psrlq"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psrl_w; // "__builtin_ia32_psrlw"
}
break;
}
break;
case 'u': // 4 strings to match.
if (BuiltinName[18] != 'b')
break;
switch (BuiltinName[19]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_psub_b; // "__builtin_ia32_psubb"
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_psub_d; // "__builtin_ia32_psubd"
case 'q': // 1 string to match.
return Intrinsic::x86_mmx_psub_q; // "__builtin_ia32_psubq"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psub_w; // "__builtin_ia32_psubw"
}
break;
}
break;
}
break;
case 'r': // 2 strings to match.
if (BuiltinName.substr(16, 2) != "cp")
break;
switch (BuiltinName[18]) {
default: break;
case 'p': // 1 string to match.
if (BuiltinName[19] != 's')
break;
return Intrinsic::x86_sse_rcp_ps; // "__builtin_ia32_rcpps"
case 's': // 1 string to match.
if (BuiltinName[19] != 's')
break;
return Intrinsic::x86_sse_rcp_ss; // "__builtin_ia32_rcpss"
}
break;
case 's': // 2 strings to match.
if (BuiltinName.substr(16, 3) != "ubs")
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_sub_sd; // "__builtin_ia32_subsd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_sub_ss; // "__builtin_ia32_subss"
}
break;
}
break;
case 21: // 47 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'c': // 5 strings to match.
if (BuiltinName.substr(16, 3) != "omi")
break;
switch (BuiltinName[19]) {
default: break;
case 'e': // 1 string to match.
if (BuiltinName[20] != 'q')
break;
return Intrinsic::x86_sse_comieq_ss; // "__builtin_ia32_comieq"
case 'g': // 2 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'e': // 1 string to match.
return Intrinsic::x86_sse_comige_ss; // "__builtin_ia32_comige"
case 't': // 1 string to match.
return Intrinsic::x86_sse_comigt_ss; // "__builtin_ia32_comigt"
}
break;
case 'l': // 2 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'e': // 1 string to match.
return Intrinsic::x86_sse_comile_ss; // "__builtin_ia32_comile"
case 't': // 1 string to match.
return Intrinsic::x86_sse_comilt_ss; // "__builtin_ia32_comilt"
}
break;
}
break;
case 'h': // 4 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(17, 3) != "ddp")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse3_hadd_pd; // "__builtin_ia32_haddpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse3_hadd_ps; // "__builtin_ia32_haddps"
}
break;
case 's': // 2 strings to match.
if (BuiltinName.substr(17, 3) != "ubp")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse3_hsub_pd; // "__builtin_ia32_hsubpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse3_hsub_ps; // "__builtin_ia32_hsubps"
}
break;
}
break;
case 'l': // 1 string to match.
if (BuiltinName.substr(16, 5) != "fence")
break;
return Intrinsic::x86_sse2_lfence; // "__builtin_ia32_lfence"
case 'm': // 2 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'f': // 1 string to match.
if (BuiltinName.substr(17, 4) != "ence")
break;
return Intrinsic::x86_sse2_mfence; // "__builtin_ia32_mfence"
case 'o': // 1 string to match.
if (BuiltinName.substr(17, 4) != "vntq")
break;
return Intrinsic::x86_mmx_movnt_dq; // "__builtin_ia32_movntq"
}
break;
case 'p': // 30 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(17, 3) != "dds")
break;
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_padds_b; // "__builtin_ia32_paddsb"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_padds_w; // "__builtin_ia32_paddsw"
}
break;
case 'f': // 2 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'n': // 1 string to match.
if (BuiltinName.substr(18, 3) != "acc")
break;
return Intrinsic::x86_3dnowa_pfnacc; // "__builtin_ia32_pfnacc"
case 's': // 1 string to match.
if (BuiltinName.substr(18, 3) != "ubr")
break;
return Intrinsic::x86_3dnow_pfsubr; // "__builtin_ia32_pfsubr"
}
break;
case 'h': // 4 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(18, 2) != "dd")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_ssse3_phadd_d; // "__builtin_ia32_phaddd"
case 'w': // 1 string to match.
return Intrinsic::x86_ssse3_phadd_w; // "__builtin_ia32_phaddw"
}
break;
case 's': // 2 strings to match.
if (BuiltinName.substr(18, 2) != "ub")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_ssse3_phsub_d; // "__builtin_ia32_phsubd"
case 'w': // 1 string to match.
return Intrinsic::x86_ssse3_phsub_w; // "__builtin_ia32_phsubw"
}
break;
}
break;
case 'm': // 6 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName[18] != 'x')
break;
switch (BuiltinName[19]) {
default: break;
case 's': // 1 string to match.
if (BuiltinName[20] != 'w')
break;
return Intrinsic::x86_mmx_pmaxs_w; // "__builtin_ia32_pmaxsw"
case 'u': // 1 string to match.
if (BuiltinName[20] != 'b')
break;
return Intrinsic::x86_mmx_pmaxu_b; // "__builtin_ia32_pmaxub"
}
break;
case 'i': // 2 strings to match.
if (BuiltinName[18] != 'n')
break;
switch (BuiltinName[19]) {
default: break;
case 's': // 1 string to match.
if (BuiltinName[20] != 'w')
break;
return Intrinsic::x86_mmx_pmins_w; // "__builtin_ia32_pminsw"
case 'u': // 1 string to match.
if (BuiltinName[20] != 'b')
break;
return Intrinsic::x86_mmx_pminu_b; // "__builtin_ia32_pminub"
}
break;
case 'u': // 2 strings to match.
if (BuiltinName[18] != 'l')
break;
switch (BuiltinName[19]) {
default: break;
case 'h': // 1 string to match.
if (BuiltinName[20] != 'w')
break;
return Intrinsic::x86_mmx_pmulh_w; // "__builtin_ia32_pmulhw"
case 'l': // 1 string to match.
if (BuiltinName[20] != 'w')
break;
return Intrinsic::x86_mmx_pmull_w; // "__builtin_ia32_pmullw"
}
break;
}
break;
case 's': // 16 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName.substr(18, 3) != "dbw")
break;
return Intrinsic::x86_mmx_psad_bw; // "__builtin_ia32_psadbw"
case 'h': // 2 strings to match.
if (BuiltinName.substr(18, 2) != "uf")
break;
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_ssse3_pshuf_b; // "__builtin_ia32_pshufb"
case 'w': // 1 string to match.
return Intrinsic::x86_sse_pshuf_w; // "__builtin_ia32_pshufw"
}
break;
case 'i': // 3 strings to match.
if (BuiltinName.substr(18, 2) != "gn")
break;
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_ssse3_psign_b; // "__builtin_ia32_psignb"
case 'd': // 1 string to match.
return Intrinsic::x86_ssse3_psign_d; // "__builtin_ia32_psignd"
case 'w': // 1 string to match.
return Intrinsic::x86_ssse3_psign_w; // "__builtin_ia32_psignw"
}
break;
case 'l': // 3 strings to match.
if (BuiltinName[18] != 'l')
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName[20] != 'i')
break;
return Intrinsic::x86_mmx_pslli_d; // "__builtin_ia32_pslldi"
case 'q': // 1 string to match.
if (BuiltinName[20] != 'i')
break;
return Intrinsic::x86_mmx_pslli_q; // "__builtin_ia32_psllqi"
case 'w': // 1 string to match.
if (BuiltinName[20] != 'i')
break;
return Intrinsic::x86_mmx_pslli_w; // "__builtin_ia32_psllwi"
}
break;
case 'r': // 5 strings to match.
switch (BuiltinName[18]) {
default: break;
case 'a': // 2 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName[20] != 'i')
break;
return Intrinsic::x86_mmx_psrai_d; // "__builtin_ia32_psradi"
case 'w': // 1 string to match.
if (BuiltinName[20] != 'i')
break;
return Intrinsic::x86_mmx_psrai_w; // "__builtin_ia32_psrawi"
}
break;
case 'l': // 3 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName[20] != 'i')
break;
return Intrinsic::x86_mmx_psrli_d; // "__builtin_ia32_psrldi"
case 'q': // 1 string to match.
if (BuiltinName[20] != 'i')
break;
return Intrinsic::x86_mmx_psrli_q; // "__builtin_ia32_psrlqi"
case 'w': // 1 string to match.
if (BuiltinName[20] != 'i')
break;
return Intrinsic::x86_mmx_psrli_w; // "__builtin_ia32_psrlwi"
}
break;
}
break;
case 'u': // 2 strings to match.
if (BuiltinName.substr(18, 2) != "bs")
break;
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_psubs_b; // "__builtin_ia32_psubsb"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psubs_w; // "__builtin_ia32_psubsw"
}
break;
}
break;
}
break;
case 's': // 5 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'f': // 1 string to match.
if (BuiltinName.substr(17, 4) != "ence")
break;
return Intrinsic::x86_sse_sfence; // "__builtin_ia32_sfence"
case 'q': // 4 strings to match.
if (BuiltinName.substr(17, 2) != "rt")
break;
switch (BuiltinName[19]) {
default: break;
case 'p': // 2 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_sqrt_pd; // "__builtin_ia32_sqrtpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_sqrt_ps; // "__builtin_ia32_sqrtps"
}
break;
case 's': // 2 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_sqrt_sd; // "__builtin_ia32_sqrtsd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_sqrt_ss; // "__builtin_ia32_sqrtss"
}
break;
}
break;
}
break;
}
break;
case 22: // 46 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'b': // 2 strings to match.
if (BuiltinName.substr(16, 5) != "lendp")
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_blendpd; // "__builtin_ia32_blendpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse41_blendps; // "__builtin_ia32_blendps"
}
break;
case 'c': // 6 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'l': // 1 string to match.
if (BuiltinName.substr(17, 5) != "flush")
break;
return Intrinsic::x86_sse2_clflush; // "__builtin_ia32_clflush"
case 'o': // 1 string to match.
if (BuiltinName.substr(17, 5) != "mineq")
break;
return Intrinsic::x86_sse_comineq_ss; // "__builtin_ia32_comineq"
case 'r': // 4 strings to match.
if (BuiltinName.substr(17, 3) != "c32")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName[21] != 'i')
break;
return Intrinsic::x86_sse42_crc32_64_64; // "__builtin_ia32_crc32di"
case 'h': // 1 string to match.
if (BuiltinName[21] != 'i')
break;
return Intrinsic::x86_sse42_crc32_32_16; // "__builtin_ia32_crc32hi"
case 'q': // 1 string to match.
if (BuiltinName[21] != 'i')
break;
return Intrinsic::x86_sse42_crc32_32_8; // "__builtin_ia32_crc32qi"
case 's': // 1 string to match.
if (BuiltinName[21] != 'i')
break;
return Intrinsic::x86_sse42_crc32_32_32; // "__builtin_ia32_crc32si"
}
break;
}
break;
case 'd': // 1 string to match.
if (BuiltinName.substr(16, 6) != "pps256")
break;
return Intrinsic::x86_avx_dp_ps_256; // "__builtin_ia32_dpps256"
case 'm': // 1 string to match.
if (BuiltinName.substr(16, 6) != "onitor")
break;
return Intrinsic::x86_sse3_monitor; // "__builtin_ia32_monitor"
case 'p': // 25 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 4 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'd': // 2 strings to match.
if (BuiltinName.substr(18, 3) != "dus")
break;
switch (BuiltinName[21]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_paddus_b; // "__builtin_ia32_paddusb"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_paddus_w; // "__builtin_ia32_paddusw"
}
break;
case 'l': // 1 string to match.
if (BuiltinName.substr(18, 4) != "ignr")
break;
return Intrinsic::x86_mmx_palignr_b; // "__builtin_ia32_palignr"
case 'v': // 1 string to match.
if (BuiltinName.substr(18, 4) != "gusb")
break;
return Intrinsic::x86_3dnow_pavgusb; // "__builtin_ia32_pavgusb"
}
break;
case 'c': // 8 strings to match.
if (BuiltinName.substr(17, 2) != "mp")
break;
switch (BuiltinName[19]) {
default: break;
case 'e': // 4 strings to match.
if (BuiltinName[20] != 'q')
break;
switch (BuiltinName[21]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_pcmpeq_b; // "__builtin_ia32_pcmpeqb"
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_pcmpeq_d; // "__builtin_ia32_pcmpeqd"
case 'q': // 1 string to match.
return Intrinsic::x86_sse41_pcmpeqq; // "__builtin_ia32_pcmpeqq"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_pcmpeq_w; // "__builtin_ia32_pcmpeqw"
}
break;
case 'g': // 4 strings to match.
if (BuiltinName[20] != 't')
break;
switch (BuiltinName[21]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_pcmpgt_b; // "__builtin_ia32_pcmpgtb"
case 'd': // 1 string to match.
return Intrinsic::x86_mmx_pcmpgt_d; // "__builtin_ia32_pcmpgtd"
case 'q': // 1 string to match.
return Intrinsic::x86_sse42_pcmpgtq; // "__builtin_ia32_pcmpgtq"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_pcmpgt_w; // "__builtin_ia32_pcmpgtw"
}
break;
}
break;
case 'f': // 5 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'c': // 3 strings to match.
if (BuiltinName.substr(18, 2) != "mp")
break;
switch (BuiltinName[20]) {
default: break;
case 'e': // 1 string to match.
if (BuiltinName[21] != 'q')
break;
return Intrinsic::x86_3dnow_pfcmpeq; // "__builtin_ia32_pfcmpeq"
case 'g': // 2 strings to match.
switch (BuiltinName[21]) {
default: break;
case 'e': // 1 string to match.
return Intrinsic::x86_3dnow_pfcmpge; // "__builtin_ia32_pfcmpge"
case 't': // 1 string to match.
return Intrinsic::x86_3dnow_pfcmpgt; // "__builtin_ia32_pfcmpgt"
}
break;
}
break;
case 'p': // 1 string to match.
if (BuiltinName.substr(18, 4) != "nacc")
break;
return Intrinsic::x86_3dnowa_pfpnacc; // "__builtin_ia32_pfpnacc"
case 'r': // 1 string to match.
if (BuiltinName.substr(18, 4) != "sqrt")
break;
return Intrinsic::x86_3dnow_pfrsqrt; // "__builtin_ia32_pfrsqrt"
}
break;
case 'h': // 2 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName.substr(18, 4) != "ddsw")
break;
return Intrinsic::x86_ssse3_phadd_sw; // "__builtin_ia32_phaddsw"
case 's': // 1 string to match.
if (BuiltinName.substr(18, 4) != "ubsw")
break;
return Intrinsic::x86_ssse3_phsub_sw; // "__builtin_ia32_phsubsw"
}
break;
case 'm': // 4 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName.substr(18, 4) != "ddwd")
break;
return Intrinsic::x86_mmx_pmadd_wd; // "__builtin_ia32_pmaddwd"
case 'u': // 3 strings to match.
if (BuiltinName[18] != 'l')
break;
switch (BuiltinName[19]) {
default: break;
case 'h': // 2 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'r': // 1 string to match.
if (BuiltinName[21] != 'w')
break;
return Intrinsic::x86_3dnow_pmulhrw; // "__builtin_ia32_pmulhrw"
case 'u': // 1 string to match.
if (BuiltinName[21] != 'w')
break;
return Intrinsic::x86_mmx_pmulhu_w; // "__builtin_ia32_pmulhuw"
}
break;
case 'u': // 1 string to match.
if (BuiltinName.substr(20, 2) != "dq")
break;
return Intrinsic::x86_mmx_pmulu_dq; // "__builtin_ia32_pmuludq"
}
break;
}
break;
case 's': // 2 strings to match.
if (BuiltinName.substr(17, 4) != "ubus")
break;
switch (BuiltinName[21]) {
default: break;
case 'b': // 1 string to match.
return Intrinsic::x86_mmx_psubus_b; // "__builtin_ia32_psubusb"
case 'w': // 1 string to match.
return Intrinsic::x86_mmx_psubus_w; // "__builtin_ia32_psubusw"
}
break;
}
break;
case 'r': // 6 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'o': // 4 strings to match.
if (BuiltinName.substr(17, 3) != "und")
break;
switch (BuiltinName[20]) {
default: break;
case 'p': // 2 strings to match.
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_round_pd; // "__builtin_ia32_roundpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse41_round_ps; // "__builtin_ia32_roundps"
}
break;
case 's': // 2 strings to match.
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_round_sd; // "__builtin_ia32_roundsd"
case 's': // 1 string to match.
return Intrinsic::x86_sse41_round_ss; // "__builtin_ia32_roundss"
}
break;
}
break;
case 's': // 2 strings to match.
if (BuiltinName.substr(17, 3) != "qrt")
break;
switch (BuiltinName[20]) {
default: break;
case 'p': // 1 string to match.
if (BuiltinName[21] != 's')
break;
return Intrinsic::x86_sse_rsqrt_ps; // "__builtin_ia32_rsqrtps"
case 's': // 1 string to match.
if (BuiltinName[21] != 's')
break;
return Intrinsic::x86_sse_rsqrt_ss; // "__builtin_ia32_rsqrtss"
}
break;
}
break;
case 'u': // 5 strings to match.
if (BuiltinName.substr(16, 4) != "comi")
break;
switch (BuiltinName[20]) {
default: break;
case 'e': // 1 string to match.
if (BuiltinName[21] != 'q')
break;
return Intrinsic::x86_sse_ucomieq_ss; // "__builtin_ia32_ucomieq"
case 'g': // 2 strings to match.
switch (BuiltinName[21]) {
default: break;
case 'e': // 1 string to match.
return Intrinsic::x86_sse_ucomige_ss; // "__builtin_ia32_ucomige"
case 't': // 1 string to match.
return Intrinsic::x86_sse_ucomigt_ss; // "__builtin_ia32_ucomigt"
}
break;
case 'l': // 2 strings to match.
switch (BuiltinName[21]) {
default: break;
case 'e': // 1 string to match.
return Intrinsic::x86_sse_ucomile_ss; // "__builtin_ia32_ucomile"
case 't': // 1 string to match.
return Intrinsic::x86_sse_ucomilt_ss; // "__builtin_ia32_ucomilt"
}
break;
}
break;
}
break;
case 23: // 67 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(16, 6) != "ddsubp")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse3_addsub_pd; // "__builtin_ia32_addsubpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse3_addsub_ps; // "__builtin_ia32_addsubps"
}
break;
case 'b': // 2 strings to match.
if (BuiltinName.substr(16, 6) != "lendvp")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse41_blendvpd; // "__builtin_ia32_blendvpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse41_blendvps; // "__builtin_ia32_blendvps"
}
break;
case 'c': // 23 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'm': // 2 strings to match.
if (BuiltinName.substr(17, 2) != "pp")
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 3) != "256")
break;
return Intrinsic::x86_avx_cmp_pd_256; // "__builtin_ia32_cmppd256"
case 's': // 1 string to match.
if (BuiltinName.substr(20, 3) != "256")
break;
return Intrinsic::x86_avx_cmp_ps_256; // "__builtin_ia32_cmpps256"
}
break;
case 'o': // 5 strings to match.
if (BuiltinName.substr(17, 4) != "misd")
break;
switch (BuiltinName[21]) {
default: break;
case 'e': // 1 string to match.
if (BuiltinName[22] != 'q')
break;
return Intrinsic::x86_sse2_comieq_sd; // "__builtin_ia32_comisdeq"
case 'g': // 2 strings to match.
switch (BuiltinName[22]) {
default: break;
case 'e': // 1 string to match.
return Intrinsic::x86_sse2_comige_sd; // "__builtin_ia32_comisdge"
case 't': // 1 string to match.
return Intrinsic::x86_sse2_comigt_sd; // "__builtin_ia32_comisdgt"
}
break;
case 'l': // 2 strings to match.
switch (BuiltinName[22]) {
default: break;
case 'e': // 1 string to match.
return Intrinsic::x86_sse2_comile_sd; // "__builtin_ia32_comisdle"
case 't': // 1 string to match.
return Intrinsic::x86_sse2_comilt_sd; // "__builtin_ia32_comisdlt"
}
break;
}
break;
case 'v': // 16 strings to match.
if (BuiltinName[17] != 't')
break;
switch (BuiltinName[18]) {
default: break;
case 'd': // 2 strings to match.
if (BuiltinName.substr(19, 3) != "q2p")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_cvtdq2pd; // "__builtin_ia32_cvtdq2pd"
case 's': // 1 string to match.
return Intrinsic::x86_sse2_cvtdq2ps; // "__builtin_ia32_cvtdq2ps"
}
break;
case 'p': // 8 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 3 strings to match.
if (BuiltinName[20] != '2')
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName[22] != 'q')
break;
return Intrinsic::x86_sse2_cvtpd2dq; // "__builtin_ia32_cvtpd2dq"
case 'p': // 2 strings to match.
switch (BuiltinName[22]) {
default: break;
case 'i': // 1 string to match.
return Intrinsic::x86_sse_cvtpd2pi; // "__builtin_ia32_cvtpd2pi"
case 's': // 1 string to match.
return Intrinsic::x86_sse2_cvtpd2ps; // "__builtin_ia32_cvtpd2ps"
}
break;
}
break;
case 'i': // 2 strings to match.
if (BuiltinName.substr(20, 2) != "2p")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse_cvtpi2pd; // "__builtin_ia32_cvtpi2pd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_cvtpi2ps; // "__builtin_ia32_cvtpi2ps"
}
break;
case 's': // 3 strings to match.
if (BuiltinName[20] != '2')
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName[22] != 'q')
break;
return Intrinsic::x86_sse2_cvtps2dq; // "__builtin_ia32_cvtps2dq"
case 'p': // 2 strings to match.
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_cvtps2pd; // "__builtin_ia32_cvtps2pd"
case 'i': // 1 string to match.
return Intrinsic::x86_sse_cvtps2pi; // "__builtin_ia32_cvtps2pi"
}
break;
}
break;
}
break;
case 's': // 6 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 2 strings to match.
if (BuiltinName.substr(20, 2) != "2s")
break;
switch (BuiltinName[22]) {
default: break;
case 'i': // 1 string to match.
return Intrinsic::x86_sse2_cvtsd2si; // "__builtin_ia32_cvtsd2si"
case 's': // 1 string to match.
return Intrinsic::x86_sse2_cvtsd2ss; // "__builtin_ia32_cvtsd2ss"
}
break;
case 'i': // 2 strings to match.
if (BuiltinName.substr(20, 2) != "2s")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_cvtsi2sd; // "__builtin_ia32_cvtsi2sd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_cvtsi2ss; // "__builtin_ia32_cvtsi2ss"
}
break;
case 's': // 2 strings to match.
if (BuiltinName.substr(20, 2) != "2s")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_cvtss2sd; // "__builtin_ia32_cvtss2sd"
case 'i': // 1 string to match.
return Intrinsic::x86_sse_cvtss2si; // "__builtin_ia32_cvtss2si"
}
break;
}
break;
}
break;
}
break;
case 'l': // 1 string to match.
if (BuiltinName.substr(16, 7) != "ddqu256")
break;
return Intrinsic::x86_avx_ldu_dq_256; // "__builtin_ia32_lddqu256"
case 'm': // 8 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 3 strings to match.
switch (BuiltinName[17]) {
default: break;
case 's': // 1 string to match.
if (BuiltinName.substr(18, 5) != "kmovq")
break;
return Intrinsic::x86_mmx_maskmovq; // "__builtin_ia32_maskmovq"
case 'x': // 2 strings to match.
if (BuiltinName[18] != 'p')
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 3) != "256")
break;
return Intrinsic::x86_avx_max_pd_256; // "__builtin_ia32_maxpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(20, 3) != "256")
break;
return Intrinsic::x86_avx_max_ps_256; // "__builtin_ia32_maxps256"
}
break;
}
break;
case 'i': // 2 strings to match.
if (BuiltinName.substr(17, 2) != "np")
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 3) != "256")
break;
return Intrinsic::x86_avx_min_pd_256; // "__builtin_ia32_minpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(20, 3) != "256")
break;
return Intrinsic::x86_avx_min_ps_256; // "__builtin_ia32_minps256"
}
break;
case 'o': // 3 strings to match.
if (BuiltinName[17] != 'v')
break;
switch (BuiltinName[18]) {
default: break;
case 'm': // 2 strings to match.
if (BuiltinName.substr(19, 3) != "skp")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_movmsk_pd; // "__builtin_ia32_movmskpd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_movmsk_ps; // "__builtin_ia32_movmskps"
}
break;
case 'n': // 1 string to match.
if (BuiltinName.substr(19, 4) != "tdqa")
break;
return Intrinsic::x86_sse41_movntdqa; // "__builtin_ia32_movntdqa"
}
break;
}
break;
case 'p': // 21 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 8 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'b': // 3 strings to match.
if (BuiltinName[18] != 's')
break;
switch (BuiltinName[19]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_ssse3_pabs_b_128; // "__builtin_ia32_pabsb128"
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_ssse3_pabs_d_128; // "__builtin_ia32_pabsd128"
case 'w': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_ssse3_pabs_w_128; // "__builtin_ia32_pabsw128"
}
break;
case 'c': // 3 strings to match.
if (BuiltinName[18] != 'k')
break;
switch (BuiltinName[19]) {
default: break;
case 's': // 2 strings to match.
if (BuiltinName[20] != 's')
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName[22] != 'w')
break;
return Intrinsic::x86_mmx_packssdw; // "__builtin_ia32_packssdw"
case 'w': // 1 string to match.
if (BuiltinName[22] != 'b')
break;
return Intrinsic::x86_mmx_packsswb; // "__builtin_ia32_packsswb"
}
break;
case 'u': // 1 string to match.
if (BuiltinName.substr(20, 3) != "swb")
break;
return Intrinsic::x86_mmx_packuswb; // "__builtin_ia32_packuswb"
}
break;
case 'v': // 2 strings to match.
if (BuiltinName[18] != 'g')
break;
switch (BuiltinName[19]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_sse2_pavg_b; // "__builtin_ia32_pavgb128"
case 'w': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_sse2_pavg_w; // "__builtin_ia32_pavgw128"
}
break;
}
break;
case 'f': // 3 strings to match.
if (BuiltinName[17] != 'r')
break;
switch (BuiltinName[18]) {
default: break;
case 'c': // 2 strings to match.
if (BuiltinName.substr(19, 3) != "pit")
break;
switch (BuiltinName[22]) {
default: break;
case '1': // 1 string to match.
return Intrinsic::x86_3dnow_pfrcpit1; // "__builtin_ia32_pfrcpit1"
case '2': // 1 string to match.
return Intrinsic::x86_3dnow_pfrcpit2; // "__builtin_ia32_pfrcpit2"
}
break;
case 's': // 1 string to match.
if (BuiltinName.substr(19, 4) != "qit1")
break;
return Intrinsic::x86_3dnow_pfrsqit1; // "__builtin_ia32_pfrsqit1"
}
break;
case 'm': // 2 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'o': // 1 string to match.
if (BuiltinName.substr(18, 5) != "vmskb")
break;
return Intrinsic::x86_mmx_pmovmskb; // "__builtin_ia32_pmovmskb"
case 'u': // 1 string to match.
if (BuiltinName.substr(18, 5) != "lhrsw")
break;
return Intrinsic::x86_ssse3_pmul_hr_sw; // "__builtin_ia32_pmulhrsw"
}
break;
case 's': // 8 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'l': // 3 strings to match.
if (BuiltinName[18] != 'l')
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_sse2_psll_d; // "__builtin_ia32_pslld128"
case 'q': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_sse2_psll_q; // "__builtin_ia32_psllq128"
case 'w': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_sse2_psll_w; // "__builtin_ia32_psllw128"
}
break;
case 'r': // 5 strings to match.
switch (BuiltinName[18]) {
default: break;
case 'a': // 2 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_sse2_psra_d; // "__builtin_ia32_psrad128"
case 'w': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_sse2_psra_w; // "__builtin_ia32_psraw128"
}
break;
case 'l': // 3 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_sse2_psrl_d; // "__builtin_ia32_psrld128"
case 'q': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_sse2_psrl_q; // "__builtin_ia32_psrlq128"
case 'w': // 1 string to match.
if (BuiltinName.substr(20, 3) != "128")
break;
return Intrinsic::x86_sse2_psrl_w; // "__builtin_ia32_psrlw128"
}
break;
}
break;
}
break;
}
break;
case 'r': // 1 string to match.
if (BuiltinName.substr(16, 7) != "cpps256")
break;
return Intrinsic::x86_avx_rcp_ps_256; // "__builtin_ia32_rcpps256"
case 's': // 3 strings to match.
if (BuiltinName.substr(16, 4) != "tore")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 2) != "qu")
break;
return Intrinsic::x86_sse2_storeu_dq; // "__builtin_ia32_storedqu"
case 'u': // 2 strings to match.
if (BuiltinName[21] != 'p')
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_storeu_pd; // "__builtin_ia32_storeupd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_storeu_ps; // "__builtin_ia32_storeups"
}
break;
}
break;
case 'u': // 1 string to match.
if (BuiltinName.substr(16, 7) != "comineq")
break;
return Intrinsic::x86_sse_ucomineq_ss; // "__builtin_ia32_ucomineq"
case 'v': // 5 strings to match.
switch (BuiltinName[16]) {
default: break;
case 't': // 4 strings to match.
if (BuiltinName.substr(17, 3) != "est")
break;
switch (BuiltinName[20]) {
default: break;
case 'c': // 2 strings to match.
if (BuiltinName[21] != 'p')
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_vtestc_pd; // "__builtin_ia32_vtestcpd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_vtestc_ps; // "__builtin_ia32_vtestcps"
}
break;
case 'z': // 2 strings to match.
if (BuiltinName[21] != 'p')
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_vtestz_pd; // "__builtin_ia32_vtestzpd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_vtestz_ps; // "__builtin_ia32_vtestzps"
}
break;
}
break;
case 'z': // 1 string to match.
if (BuiltinName.substr(17, 6) != "eroall")
break;
return Intrinsic::x86_avx_vzeroall; // "__builtin_ia32_vzeroall"
}
break;
}
break;
case 24: // 69 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'a': // 3 strings to match.
if (BuiltinName.substr(16, 2) != "es")
break;
switch (BuiltinName[18]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(19, 5) != "ec128")
break;
return Intrinsic::x86_aesni_aesdec; // "__builtin_ia32_aesdec128"
case 'e': // 1 string to match.
if (BuiltinName.substr(19, 5) != "nc128")
break;
return Intrinsic::x86_aesni_aesenc; // "__builtin_ia32_aesenc128"
case 'i': // 1 string to match.
if (BuiltinName.substr(19, 5) != "mc128")
break;
return Intrinsic::x86_aesni_aesimc; // "__builtin_ia32_aesimc128"
}
break;
case 'c': // 7 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'o': // 1 string to match.
if (BuiltinName.substr(17, 7) != "misdneq")
break;
return Intrinsic::x86_sse2_comineq_sd; // "__builtin_ia32_comisdneq"
case 'v': // 6 strings to match.
if (BuiltinName.substr(17, 2) != "tt")
break;
switch (BuiltinName[19]) {
default: break;
case 'p': // 4 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'd': // 2 strings to match.
if (BuiltinName[21] != '2')
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName[23] != 'q')
break;
return Intrinsic::x86_sse2_cvttpd2dq; // "__builtin_ia32_cvttpd2dq"
case 'p': // 1 string to match.
if (BuiltinName[23] != 'i')
break;
return Intrinsic::x86_sse_cvttpd2pi; // "__builtin_ia32_cvttpd2pi"
}
break;
case 's': // 2 strings to match.
if (BuiltinName[21] != '2')
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName[23] != 'q')
break;
return Intrinsic::x86_sse2_cvttps2dq; // "__builtin_ia32_cvttps2dq"
case 'p': // 1 string to match.
if (BuiltinName[23] != 'i')
break;
return Intrinsic::x86_sse_cvttps2pi; // "__builtin_ia32_cvttps2pi"
}
break;
}
break;
case 's': // 2 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "2si")
break;
return Intrinsic::x86_sse2_cvttsd2si; // "__builtin_ia32_cvttsd2si"
case 's': // 1 string to match.
if (BuiltinName.substr(21, 3) != "2si")
break;
return Intrinsic::x86_sse_cvttss2si; // "__builtin_ia32_cvttss2si"
}
break;
}
break;
}
break;
case 'h': // 4 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(17, 3) != "ddp")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "256")
break;
return Intrinsic::x86_avx_hadd_pd_256; // "__builtin_ia32_haddpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(21, 3) != "256")
break;
return Intrinsic::x86_avx_hadd_ps_256; // "__builtin_ia32_haddps256"
}
break;
case 's': // 2 strings to match.
if (BuiltinName.substr(17, 3) != "ubp")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "256")
break;
return Intrinsic::x86_avx_hsub_pd_256; // "__builtin_ia32_hsubpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(21, 3) != "256")
break;
return Intrinsic::x86_avx_hsub_ps_256; // "__builtin_ia32_hsubps256"
}
break;
}
break;
case 'p': // 46 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(17, 3) != "dds")
break;
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse2_padds_b; // "__builtin_ia32_paddsb128"
case 'w': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse2_padds_w; // "__builtin_ia32_paddsw128"
}
break;
case 'h': // 4 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(18, 2) != "dd")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_ssse3_phadd_d_128; // "__builtin_ia32_phaddd128"
case 'w': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_ssse3_phadd_w_128; // "__builtin_ia32_phaddw128"
}
break;
case 's': // 2 strings to match.
if (BuiltinName.substr(18, 2) != "ub")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_ssse3_phsub_d_128; // "__builtin_ia32_phsubd128"
case 'w': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_ssse3_phsub_w_128; // "__builtin_ia32_phsubw128"
}
break;
}
break;
case 'm': // 15 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'a': // 7 strings to match.
switch (BuiltinName[18]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(19, 5) != "dubsw")
break;
return Intrinsic::x86_ssse3_pmadd_ub_sw; // "__builtin_ia32_pmaddubsw"
case 'x': // 6 strings to match.
switch (BuiltinName[19]) {
default: break;
case 's': // 3 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse41_pmaxsb; // "__builtin_ia32_pmaxsb128"
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse41_pmaxsd; // "__builtin_ia32_pmaxsd128"
case 'w': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse2_pmaxs_w; // "__builtin_ia32_pmaxsw128"
}
break;
case 'u': // 3 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse2_pmaxu_b; // "__builtin_ia32_pmaxub128"
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse41_pmaxud; // "__builtin_ia32_pmaxud128"
case 'w': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse41_pmaxuw; // "__builtin_ia32_pmaxuw128"
}
break;
}
break;
}
break;
case 'i': // 6 strings to match.
if (BuiltinName[18] != 'n')
break;
switch (BuiltinName[19]) {
default: break;
case 's': // 3 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse41_pminsb; // "__builtin_ia32_pminsb128"
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse41_pminsd; // "__builtin_ia32_pminsd128"
case 'w': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse2_pmins_w; // "__builtin_ia32_pminsw128"
}
break;
case 'u': // 3 strings to match.
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse2_pminu_b; // "__builtin_ia32_pminub128"
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse41_pminud; // "__builtin_ia32_pminud128"
case 'w': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse41_pminuw; // "__builtin_ia32_pminuw128"
}
break;
}
break;
case 'u': // 2 strings to match.
if (BuiltinName[18] != 'l')
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 4) != "q128")
break;
return Intrinsic::x86_sse41_pmuldq; // "__builtin_ia32_pmuldq128"
case 'h': // 1 string to match.
if (BuiltinName.substr(20, 4) != "w128")
break;
return Intrinsic::x86_sse2_pmulh_w; // "__builtin_ia32_pmulhw128"
}
break;
}
break;
case 's': // 15 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName.substr(18, 6) != "dbw128")
break;
return Intrinsic::x86_sse2_psad_bw; // "__builtin_ia32_psadbw128"
case 'h': // 1 string to match.
if (BuiltinName.substr(18, 6) != "ufb128")
break;
return Intrinsic::x86_ssse3_pshuf_b_128; // "__builtin_ia32_pshufb128"
case 'i': // 3 strings to match.
if (BuiltinName.substr(18, 2) != "gn")
break;
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_ssse3_psign_b_128; // "__builtin_ia32_psignb128"
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_ssse3_psign_d_128; // "__builtin_ia32_psignd128"
case 'w': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_ssse3_psign_w_128; // "__builtin_ia32_psignw128"
}
break;
case 'l': // 3 strings to match.
if (BuiltinName[18] != 'l')
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 4) != "i128")
break;
return Intrinsic::x86_sse2_pslli_d; // "__builtin_ia32_pslldi128"
case 'q': // 1 string to match.
if (BuiltinName.substr(20, 4) != "i128")
break;
return Intrinsic::x86_sse2_pslli_q; // "__builtin_ia32_psllqi128"
case 'w': // 1 string to match.
if (BuiltinName.substr(20, 4) != "i128")
break;
return Intrinsic::x86_sse2_pslli_w; // "__builtin_ia32_psllwi128"
}
break;
case 'r': // 5 strings to match.
switch (BuiltinName[18]) {
default: break;
case 'a': // 2 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 4) != "i128")
break;
return Intrinsic::x86_sse2_psrai_d; // "__builtin_ia32_psradi128"
case 'w': // 1 string to match.
if (BuiltinName.substr(20, 4) != "i128")
break;
return Intrinsic::x86_sse2_psrai_w; // "__builtin_ia32_psrawi128"
}
break;
case 'l': // 3 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 4) != "i128")
break;
return Intrinsic::x86_sse2_psrli_d; // "__builtin_ia32_psrldi128"
case 'q': // 1 string to match.
if (BuiltinName.substr(20, 4) != "i128")
break;
return Intrinsic::x86_sse2_psrli_q; // "__builtin_ia32_psrlqi128"
case 'w': // 1 string to match.
if (BuiltinName.substr(20, 4) != "i128")
break;
return Intrinsic::x86_sse2_psrli_w; // "__builtin_ia32_psrlwi128"
}
break;
}
break;
case 'u': // 2 strings to match.
if (BuiltinName.substr(18, 2) != "bs")
break;
switch (BuiltinName[20]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse2_psubs_b; // "__builtin_ia32_psubsb128"
case 'w': // 1 string to match.
if (BuiltinName.substr(21, 3) != "128")
break;
return Intrinsic::x86_sse2_psubs_w; // "__builtin_ia32_psubsw128"
}
break;
}
break;
case 't': // 4 strings to match.
if (BuiltinName.substr(17, 3) != "est")
break;
switch (BuiltinName[20]) {
default: break;
case 'c': // 2 strings to match.
switch (BuiltinName[21]) {
default: break;
case '1': // 1 string to match.
if (BuiltinName.substr(22, 2) != "28")
break;
return Intrinsic::x86_sse41_ptestc; // "__builtin_ia32_ptestc128"
case '2': // 1 string to match.
if (BuiltinName.substr(22, 2) != "56")
break;
return Intrinsic::x86_avx_ptestc_256; // "__builtin_ia32_ptestc256"
}
break;
case 'z': // 2 strings to match.
switch (BuiltinName[21]) {
default: break;
case '1': // 1 string to match.
if (BuiltinName.substr(22, 2) != "28")
break;
return Intrinsic::x86_sse41_ptestz; // "__builtin_ia32_ptestz128"
case '2': // 1 string to match.
if (BuiltinName.substr(22, 2) != "56")
break;
return Intrinsic::x86_avx_ptestz_256; // "__builtin_ia32_ptestz256"
}
break;
}
break;
case 'u': // 6 strings to match.
if (BuiltinName.substr(17, 4) != "npck")
break;
switch (BuiltinName[21]) {
default: break;
case 'h': // 3 strings to match.
switch (BuiltinName[22]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName[23] != 'w')
break;
return Intrinsic::x86_mmx_punpckhbw; // "__builtin_ia32_punpckhbw"
case 'd': // 1 string to match.
if (BuiltinName[23] != 'q')
break;
return Intrinsic::x86_mmx_punpckhdq; // "__builtin_ia32_punpckhdq"
case 'w': // 1 string to match.
if (BuiltinName[23] != 'd')
break;
return Intrinsic::x86_mmx_punpckhwd; // "__builtin_ia32_punpckhwd"
}
break;
case 'l': // 3 strings to match.
switch (BuiltinName[22]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName[23] != 'w')
break;
return Intrinsic::x86_mmx_punpcklbw; // "__builtin_ia32_punpcklbw"
case 'd': // 1 string to match.
if (BuiltinName[23] != 'q')
break;
return Intrinsic::x86_mmx_punpckldq; // "__builtin_ia32_punpckldq"
case 'w': // 1 string to match.
if (BuiltinName[23] != 'd')
break;
return Intrinsic::x86_mmx_punpcklwd; // "__builtin_ia32_punpcklwd"
}
break;
}
break;
}
break;
case 's': // 2 strings to match.
if (BuiltinName.substr(16, 4) != "qrtp")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 3) != "256")
break;
return Intrinsic::x86_avx_sqrt_pd_256; // "__builtin_ia32_sqrtpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(21, 3) != "256")
break;
return Intrinsic::x86_avx_sqrt_ps_256; // "__builtin_ia32_sqrtps256"
}
break;
case 'u': // 5 strings to match.
if (BuiltinName.substr(16, 6) != "comisd")
break;
switch (BuiltinName[22]) {
default: break;
case 'e': // 1 string to match.
if (BuiltinName[23] != 'q')
break;
return Intrinsic::x86_sse2_ucomieq_sd; // "__builtin_ia32_ucomisdeq"
case 'g': // 2 strings to match.
switch (BuiltinName[23]) {
default: break;
case 'e': // 1 string to match.
return Intrinsic::x86_sse2_ucomige_sd; // "__builtin_ia32_ucomisdge"
case 't': // 1 string to match.
return Intrinsic::x86_sse2_ucomigt_sd; // "__builtin_ia32_ucomisdgt"
}
break;
case 'l': // 2 strings to match.
switch (BuiltinName[23]) {
default: break;
case 'e': // 1 string to match.
return Intrinsic::x86_sse2_ucomile_sd; // "__builtin_ia32_ucomisdle"
case 't': // 1 string to match.
return Intrinsic::x86_sse2_ucomilt_sd; // "__builtin_ia32_ucomisdlt"
}
break;
}
break;
case 'v': // 2 strings to match.
if (BuiltinName.substr(16, 7) != "permilp")
break;
switch (BuiltinName[23]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_vpermil_pd; // "__builtin_ia32_vpermilpd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_vpermil_ps; // "__builtin_ia32_vpermilps"
}
break;
}
break;
case 25: // 42 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'b': // 2 strings to match.
if (BuiltinName.substr(16, 5) != "lendp")
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 3) != "256")
break;
return Intrinsic::x86_avx_blend_pd_256; // "__builtin_ia32_blendpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(22, 3) != "256")
break;
return Intrinsic::x86_avx_blend_ps_256; // "__builtin_ia32_blendps256"
}
break;
case 'c': // 4 strings to match.
if (BuiltinName.substr(16, 3) != "vts")
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 5) != "2si64")
break;
return Intrinsic::x86_sse2_cvtsd2si64; // "__builtin_ia32_cvtsd2si64"
case 'i': // 2 strings to match.
if (BuiltinName.substr(20, 4) != "642s")
break;
switch (BuiltinName[24]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_sse2_cvtsi642sd; // "__builtin_ia32_cvtsi642sd"
case 's': // 1 string to match.
return Intrinsic::x86_sse_cvtsi642ss; // "__builtin_ia32_cvtsi642ss"
}
break;
case 's': // 1 string to match.
if (BuiltinName.substr(20, 5) != "2si64")
break;
return Intrinsic::x86_sse_cvtss2si64; // "__builtin_ia32_cvtss2si64"
}
break;
case 'l': // 3 strings to match.
if (BuiltinName.substr(16, 3) != "oad")
break;
switch (BuiltinName[19]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(20, 5) != "qu256")
break;
return Intrinsic::x86_avx_loadu_dq_256; // "__builtin_ia32_loaddqu256"
case 'u': // 2 strings to match.
if (BuiltinName[20] != 'p')
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 3) != "256")
break;
return Intrinsic::x86_avx_loadu_pd_256; // "__builtin_ia32_loadupd256"
case 's': // 1 string to match.
if (BuiltinName.substr(22, 3) != "256")
break;
return Intrinsic::x86_avx_loadu_ps_256; // "__builtin_ia32_loadups256"
}
break;
}
break;
case 'm': // 7 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 3 strings to match.
if (BuiltinName.substr(17, 2) != "sk")
break;
switch (BuiltinName[19]) {
default: break;
case 'l': // 2 strings to match.
if (BuiltinName.substr(20, 4) != "oadp")
break;
switch (BuiltinName[24]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_maskload_pd; // "__builtin_ia32_maskloadpd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_maskload_ps; // "__builtin_ia32_maskloadps"
}
break;
case 'm': // 1 string to match.
if (BuiltinName.substr(20, 5) != "ovdqu")
break;
return Intrinsic::x86_sse2_maskmov_dqu; // "__builtin_ia32_maskmovdqu"
}
break;
case 'o': // 3 strings to match.
if (BuiltinName.substr(17, 3) != "vnt")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 4) != "q256")
break;
return Intrinsic::x86_avx_movnt_dq_256; // "__builtin_ia32_movntdq256"
case 'p': // 2 strings to match.
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 3) != "256")
break;
return Intrinsic::x86_avx_movnt_pd_256; // "__builtin_ia32_movntpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(22, 3) != "256")
break;
return Intrinsic::x86_avx_movnt_ps_256; // "__builtin_ia32_movntps256"
}
break;
}
break;
case 'p': // 1 string to match.
if (BuiltinName.substr(17, 8) != "sadbw128")
break;
return Intrinsic::x86_sse41_mpsadbw; // "__builtin_ia32_mpsadbw128"
}
break;
case 'p': // 18 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(17, 4) != "ddus")
break;
switch (BuiltinName[21]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(22, 3) != "128")
break;
return Intrinsic::x86_sse2_paddus_b; // "__builtin_ia32_paddusb128"
case 'w': // 1 string to match.
if (BuiltinName.substr(22, 3) != "128")
break;
return Intrinsic::x86_sse2_paddus_w; // "__builtin_ia32_paddusw128"
}
break;
case 'b': // 1 string to match.
if (BuiltinName.substr(17, 8) != "lendw128")
break;
return Intrinsic::x86_sse41_pblendw; // "__builtin_ia32_pblendw128"
case 'c': // 6 strings to match.
if (BuiltinName.substr(17, 2) != "mp")
break;
switch (BuiltinName[19]) {
default: break;
case 'e': // 3 strings to match.
if (BuiltinName[20] != 'q')
break;
switch (BuiltinName[21]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(22, 3) != "128")
break;
return Intrinsic::x86_sse2_pcmpeq_b; // "__builtin_ia32_pcmpeqb128"
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 3) != "128")
break;
return Intrinsic::x86_sse2_pcmpeq_d; // "__builtin_ia32_pcmpeqd128"
case 'w': // 1 string to match.
if (BuiltinName.substr(22, 3) != "128")
break;
return Intrinsic::x86_sse2_pcmpeq_w; // "__builtin_ia32_pcmpeqw128"
}
break;
case 'g': // 3 strings to match.
if (BuiltinName[20] != 't')
break;
switch (BuiltinName[21]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(22, 3) != "128")
break;
return Intrinsic::x86_sse2_pcmpgt_b; // "__builtin_ia32_pcmpgtb128"
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 3) != "128")
break;
return Intrinsic::x86_sse2_pcmpgt_d; // "__builtin_ia32_pcmpgtd128"
case 'w': // 1 string to match.
if (BuiltinName.substr(22, 3) != "128")
break;
return Intrinsic::x86_sse2_pcmpgt_w; // "__builtin_ia32_pcmpgtw128"
}
break;
}
break;
case 'h': // 2 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName.substr(18, 7) != "ddsw128")
break;
return Intrinsic::x86_ssse3_phadd_sw_128; // "__builtin_ia32_phaddsw128"
case 's': // 1 string to match.
if (BuiltinName.substr(18, 7) != "ubsw128")
break;
return Intrinsic::x86_ssse3_phsub_sw_128; // "__builtin_ia32_phsubsw128"
}
break;
case 'm': // 3 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName.substr(18, 7) != "ddwd128")
break;
return Intrinsic::x86_sse2_pmadd_wd; // "__builtin_ia32_pmaddwd128"
case 'u': // 2 strings to match.
if (BuiltinName[18] != 'l')
break;
switch (BuiltinName[19]) {
default: break;
case 'h': // 1 string to match.
if (BuiltinName.substr(20, 5) != "uw128")
break;
return Intrinsic::x86_sse2_pmulhu_w; // "__builtin_ia32_pmulhuw128"
case 'u': // 1 string to match.
if (BuiltinName.substr(20, 5) != "dq128")
break;
return Intrinsic::x86_sse2_pmulu_dq; // "__builtin_ia32_pmuludq128"
}
break;
}
break;
case 's': // 4 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'l': // 1 string to match.
if (BuiltinName.substr(18, 7) != "ldqi128")
break;
return Intrinsic::x86_sse2_psll_dq; // "__builtin_ia32_pslldqi128"
case 'r': // 1 string to match.
if (BuiltinName.substr(18, 7) != "ldqi128")
break;
return Intrinsic::x86_sse2_psrl_dq; // "__builtin_ia32_psrldqi128"
case 'u': // 2 strings to match.
if (BuiltinName.substr(18, 3) != "bus")
break;
switch (BuiltinName[21]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(22, 3) != "128")
break;
return Intrinsic::x86_sse2_psubus_b; // "__builtin_ia32_psubusb128"
case 'w': // 1 string to match.
if (BuiltinName.substr(22, 3) != "128")
break;
return Intrinsic::x86_sse2_psubus_w; // "__builtin_ia32_psubusw128"
}
break;
}
break;
}
break;
case 'r': // 3 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'o': // 2 strings to match.
if (BuiltinName.substr(17, 4) != "undp")
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 3) != "256")
break;
return Intrinsic::x86_avx_round_pd_256; // "__builtin_ia32_roundpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(22, 3) != "256")
break;
return Intrinsic::x86_avx_round_ps_256; // "__builtin_ia32_roundps256"
}
break;
case 's': // 1 string to match.
if (BuiltinName.substr(17, 8) != "qrtps256")
break;
return Intrinsic::x86_avx_rsqrt_ps_256; // "__builtin_ia32_rsqrtps256"
}
break;
case 's': // 1 string to match.
if (BuiltinName.substr(16, 9) != "torelv4si")
break;
return Intrinsic::x86_sse2_storel_dq; // "__builtin_ia32_storelv4si"
case 'u': // 1 string to match.
if (BuiltinName.substr(16, 9) != "comisdneq")
break;
return Intrinsic::x86_sse2_ucomineq_sd; // "__builtin_ia32_ucomisdneq"
case 'v': // 3 strings to match.
switch (BuiltinName[16]) {
default: break;
case 't': // 2 strings to match.
if (BuiltinName.substr(17, 7) != "estnzcp")
break;
switch (BuiltinName[24]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_vtestnzc_pd; // "__builtin_ia32_vtestnzcpd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_vtestnzc_ps; // "__builtin_ia32_vtestnzcps"
}
break;
case 'z': // 1 string to match.
if (BuiltinName.substr(17, 8) != "eroupper")
break;
return Intrinsic::x86_avx_vzeroupper; // "__builtin_ia32_vzeroupper"
}
break;
}
break;
case 26: // 45 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(16, 6) != "ddsubp")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_addsub_pd_256; // "__builtin_ia32_addsubpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_addsub_ps_256; // "__builtin_ia32_addsubps256"
}
break;
case 'b': // 2 strings to match.
if (BuiltinName.substr(16, 6) != "lendvp")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_blendv_pd_256; // "__builtin_ia32_blendvpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_blendv_ps_256; // "__builtin_ia32_blendvps256"
}
break;
case 'c': // 8 strings to match.
if (BuiltinName.substr(16, 2) != "vt")
break;
switch (BuiltinName[18]) {
default: break;
case 'd': // 2 strings to match.
if (BuiltinName.substr(19, 3) != "q2p")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_cvtdq2_pd_256; // "__builtin_ia32_cvtdq2pd256"
case 's': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_cvtdq2_ps_256; // "__builtin_ia32_cvtdq2ps256"
}
break;
case 'p': // 4 strings to match.
switch (BuiltinName[19]) {
default: break;
case 'd': // 2 strings to match.
if (BuiltinName[20] != '2')
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 4) != "q256")
break;
return Intrinsic::x86_avx_cvt_pd2dq_256; // "__builtin_ia32_cvtpd2dq256"
case 'p': // 1 string to match.
if (BuiltinName.substr(22, 4) != "s256")
break;
return Intrinsic::x86_avx_cvt_pd2_ps_256; // "__builtin_ia32_cvtpd2ps256"
}
break;
case 's': // 2 strings to match.
if (BuiltinName[20] != '2')
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 4) != "q256")
break;
return Intrinsic::x86_avx_cvt_ps2dq_256; // "__builtin_ia32_cvtps2dq256"
case 'p': // 1 string to match.
if (BuiltinName.substr(22, 4) != "d256")
break;
return Intrinsic::x86_avx_cvt_ps2_pd_256; // "__builtin_ia32_cvtps2pd256"
}
break;
}
break;
case 't': // 2 strings to match.
if (BuiltinName[19] != 's')
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 5) != "2si64")
break;
return Intrinsic::x86_sse2_cvttsd2si64; // "__builtin_ia32_cvttsd2si64"
case 's': // 1 string to match.
if (BuiltinName.substr(21, 5) != "2si64")
break;
return Intrinsic::x86_sse_cvttss2si64; // "__builtin_ia32_cvttss2si64"
}
break;
}
break;
case 'i': // 1 string to match.
if (BuiltinName.substr(16, 10) != "nsertps128")
break;
return Intrinsic::x86_sse41_insertps; // "__builtin_ia32_insertps128"
case 'm': // 4 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(17, 8) != "skstorep")
break;
switch (BuiltinName[25]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_maskstore_pd; // "__builtin_ia32_maskstorepd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_maskstore_ps; // "__builtin_ia32_maskstoreps"
}
break;
case 'o': // 2 strings to match.
if (BuiltinName.substr(17, 5) != "vmskp")
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_movmsk_pd_256; // "__builtin_ia32_movmskpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_movmsk_ps_256; // "__builtin_ia32_movmskps256"
}
break;
}
break;
case 'p': // 21 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'a': // 4 strings to match.
if (BuiltinName.substr(17, 2) != "ck")
break;
switch (BuiltinName[19]) {
default: break;
case 's': // 2 strings to match.
if (BuiltinName[20] != 's')
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 4) != "w128")
break;
return Intrinsic::x86_sse2_packssdw_128; // "__builtin_ia32_packssdw128"
case 'w': // 1 string to match.
if (BuiltinName.substr(22, 4) != "b128")
break;
return Intrinsic::x86_sse2_packsswb_128; // "__builtin_ia32_packsswb128"
}
break;
case 'u': // 2 strings to match.
if (BuiltinName[20] != 's')
break;
switch (BuiltinName[21]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 4) != "w128")
break;
return Intrinsic::x86_sse41_packusdw; // "__builtin_ia32_packusdw128"
case 'w': // 1 string to match.
if (BuiltinName.substr(22, 4) != "b128")
break;
return Intrinsic::x86_sse2_packuswb_128; // "__builtin_ia32_packuswb128"
}
break;
}
break;
case 'b': // 1 string to match.
if (BuiltinName.substr(17, 9) != "lendvb128")
break;
return Intrinsic::x86_sse41_pblendvb; // "__builtin_ia32_pblendvb128"
case 'm': // 14 strings to match.
switch (BuiltinName[17]) {
default: break;
case 'o': // 13 strings to match.
if (BuiltinName[18] != 'v')
break;
switch (BuiltinName[19]) {
default: break;
case 'm': // 1 string to match.
if (BuiltinName.substr(20, 6) != "skb128")
break;
return Intrinsic::x86_sse2_pmovmskb_128; // "__builtin_ia32_pmovmskb128"
case 's': // 6 strings to match.
if (BuiltinName[20] != 'x')
break;
switch (BuiltinName[21]) {
default: break;
case 'b': // 3 strings to match.
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "128")
break;
return Intrinsic::x86_sse41_pmovsxbd; // "__builtin_ia32_pmovsxbd128"
case 'q': // 1 string to match.
if (BuiltinName.substr(23, 3) != "128")
break;
return Intrinsic::x86_sse41_pmovsxbq; // "__builtin_ia32_pmovsxbq128"
case 'w': // 1 string to match.
if (BuiltinName.substr(23, 3) != "128")
break;
return Intrinsic::x86_sse41_pmovsxbw; // "__builtin_ia32_pmovsxbw128"
}
break;
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 4) != "q128")
break;
return Intrinsic::x86_sse41_pmovsxdq; // "__builtin_ia32_pmovsxdq128"
case 'w': // 2 strings to match.
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "128")
break;
return Intrinsic::x86_sse41_pmovsxwd; // "__builtin_ia32_pmovsxwd128"
case 'q': // 1 string to match.
if (BuiltinName.substr(23, 3) != "128")
break;
return Intrinsic::x86_sse41_pmovsxwq; // "__builtin_ia32_pmovsxwq128"
}
break;
}
break;
case 'z': // 6 strings to match.
if (BuiltinName[20] != 'x')
break;
switch (BuiltinName[21]) {
default: break;
case 'b': // 3 strings to match.
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "128")
break;
return Intrinsic::x86_sse41_pmovzxbd; // "__builtin_ia32_pmovzxbd128"
case 'q': // 1 string to match.
if (BuiltinName.substr(23, 3) != "128")
break;
return Intrinsic::x86_sse41_pmovzxbq; // "__builtin_ia32_pmovzxbq128"
case 'w': // 1 string to match.
if (BuiltinName.substr(23, 3) != "128")
break;
return Intrinsic::x86_sse41_pmovzxbw; // "__builtin_ia32_pmovzxbw128"
}
break;
case 'd': // 1 string to match.
if (BuiltinName.substr(22, 4) != "q128")
break;
return Intrinsic::x86_sse41_pmovzxdq; // "__builtin_ia32_pmovzxdq128"
case 'w': // 2 strings to match.
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "128")
break;
return Intrinsic::x86_sse41_pmovzxwd; // "__builtin_ia32_pmovzxwd128"
case 'q': // 1 string to match.
if (BuiltinName.substr(23, 3) != "128")
break;
return Intrinsic::x86_sse41_pmovzxwq; // "__builtin_ia32_pmovzxwq128"
}
break;
}
break;
}
break;
case 'u': // 1 string to match.
if (BuiltinName.substr(18, 8) != "lhrsw128")
break;
return Intrinsic::x86_ssse3_pmul_hr_sw_128; // "__builtin_ia32_pmulhrsw128"
}
break;
case 't': // 2 strings to match.
if (BuiltinName.substr(17, 6) != "estnzc")
break;
switch (BuiltinName[23]) {
default: break;
case '1': // 1 string to match.
if (BuiltinName.substr(24, 2) != "28")
break;
return Intrinsic::x86_sse41_ptestnzc; // "__builtin_ia32_ptestnzc128"
case '2': // 1 string to match.
if (BuiltinName.substr(24, 2) != "56")
break;
return Intrinsic::x86_avx_ptestnzc_256; // "__builtin_ia32_ptestnzc256"
}
break;
}
break;
case 's': // 3 strings to match.
if (BuiltinName.substr(16, 4) != "tore")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 5) != "qu256")
break;
return Intrinsic::x86_avx_storeu_dq_256; // "__builtin_ia32_storedqu256"
case 'u': // 2 strings to match.
if (BuiltinName[21] != 'p')
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_storeu_pd_256; // "__builtin_ia32_storeupd256"
case 's': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_storeu_ps_256; // "__builtin_ia32_storeups256"
}
break;
}
break;
case 'v': // 4 strings to match.
if (BuiltinName.substr(16, 4) != "test")
break;
switch (BuiltinName[20]) {
default: break;
case 'c': // 2 strings to match.
if (BuiltinName[21] != 'p')
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_vtestc_pd_256; // "__builtin_ia32_vtestcpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_vtestc_ps_256; // "__builtin_ia32_vtestcps256"
}
break;
case 'z': // 2 strings to match.
if (BuiltinName[21] != 'p')
break;
switch (BuiltinName[22]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_vtestz_pd_256; // "__builtin_ia32_vtestzpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(23, 3) != "256")
break;
return Intrinsic::x86_avx_vtestz_ps_256; // "__builtin_ia32_vtestzps256"
}
break;
}
break;
}
break;
case 27: // 15 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'c': // 2 strings to match.
if (BuiltinName.substr(16, 4) != "vttp")
break;
switch (BuiltinName[20]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(21, 6) != "2dq256")
break;
return Intrinsic::x86_avx_cvtt_pd2dq_256; // "__builtin_ia32_cvttpd2dq256"
case 's': // 1 string to match.
if (BuiltinName.substr(21, 6) != "2dq256")
break;
return Intrinsic::x86_avx_cvtt_ps2dq_256; // "__builtin_ia32_cvttps2dq256"
}
break;
case 'e': // 1 string to match.
if (BuiltinName.substr(16, 11) != "xtractps128")
break;
return Intrinsic::x86_sse41_extractps; // "__builtin_ia32_extractps128"
case 'p': // 5 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'c': // 4 strings to match.
if (BuiltinName.substr(17, 2) != "mp")
break;
switch (BuiltinName[19]) {
default: break;
case 'e': // 2 strings to match.
if (BuiltinName.substr(20, 3) != "str")
break;
switch (BuiltinName[23]) {
default: break;
case 'i': // 1 string to match.
if (BuiltinName.substr(24, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestri128; // "__builtin_ia32_pcmpestri128"
case 'm': // 1 string to match.
if (BuiltinName.substr(24, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestrm128; // "__builtin_ia32_pcmpestrm128"
}
break;
case 'i': // 2 strings to match.
if (BuiltinName.substr(20, 3) != "str")
break;
switch (BuiltinName[23]) {
default: break;
case 'i': // 1 string to match.
if (BuiltinName.substr(24, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistri128; // "__builtin_ia32_pcmpistri128"
case 'm': // 1 string to match.
if (BuiltinName.substr(24, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistrm128; // "__builtin_ia32_pcmpistrm128"
}
break;
}
break;
case 'm': // 1 string to match.
if (BuiltinName.substr(17, 10) != "addubsw128")
break;
return Intrinsic::x86_ssse3_pmadd_ub_sw_128; // "__builtin_ia32_pmaddubsw128"
}
break;
case 'v': // 7 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'b': // 1 string to match.
if (BuiltinName.substr(17, 10) != "roadcastss")
break;
return Intrinsic::x86_avx_vbroadcastss; // "__builtin_ia32_vbroadcastss"
case 'e': // 2 strings to match.
if (BuiltinName.substr(17, 2) != "c_")
break;
switch (BuiltinName[19]) {
default: break;
case 'e': // 1 string to match.
if (BuiltinName.substr(20, 7) != "xt_v4hi")
break;
return Intrinsic::x86_mmx_pextr_w; // "__builtin_ia32_vec_ext_v4hi"
case 's': // 1 string to match.
if (BuiltinName.substr(20, 7) != "et_v4hi")
break;
return Intrinsic::x86_mmx_pinsr_w; // "__builtin_ia32_vec_set_v4hi"
}
break;
case 'p': // 4 strings to match.
if (BuiltinName.substr(17, 5) != "ermil")
break;
switch (BuiltinName[22]) {
default: break;
case 'p': // 2 strings to match.
switch (BuiltinName[23]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(24, 3) != "256")
break;
return Intrinsic::x86_avx_vpermil_pd_256; // "__builtin_ia32_vpermilpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(24, 3) != "256")
break;
return Intrinsic::x86_avx_vpermil_ps_256; // "__builtin_ia32_vpermilps256"
}
break;
case 'v': // 2 strings to match.
if (BuiltinName.substr(23, 3) != "arp")
break;
switch (BuiltinName[26]) {
default: break;
case 'd': // 1 string to match.
return Intrinsic::x86_avx_vpermilvar_pd; // "__builtin_ia32_vpermilvarpd"
case 's': // 1 string to match.
return Intrinsic::x86_avx_vpermilvar_ps; // "__builtin_ia32_vpermilvarps"
}
break;
}
break;
}
break;
}
break;
case 28: // 17 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'a': // 2 strings to match.
if (BuiltinName.substr(16, 2) != "es")
break;
switch (BuiltinName[18]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(19, 9) != "eclast128")
break;
return Intrinsic::x86_aesni_aesdeclast; // "__builtin_ia32_aesdeclast128"
case 'e': // 1 string to match.
if (BuiltinName.substr(19, 9) != "nclast128")
break;
return Intrinsic::x86_aesni_aesenclast; // "__builtin_ia32_aesenclast128"
}
break;
case 'm': // 2 strings to match.
if (BuiltinName.substr(16, 8) != "askloadp")
break;
switch (BuiltinName[24]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(25, 3) != "256")
break;
return Intrinsic::x86_avx_maskload_pd_256; // "__builtin_ia32_maskloadpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(25, 3) != "256")
break;
return Intrinsic::x86_avx_maskload_ps_256; // "__builtin_ia32_maskloadps256"
}
break;
case 'p': // 11 strings to match.
switch (BuiltinName[16]) {
default: break;
case 'c': // 10 strings to match.
if (BuiltinName.substr(17, 2) != "mp")
break;
switch (BuiltinName[19]) {
default: break;
case 'e': // 5 strings to match.
if (BuiltinName.substr(20, 4) != "stri")
break;
switch (BuiltinName[24]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName.substr(25, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestria128; // "__builtin_ia32_pcmpestria128"
case 'c': // 1 string to match.
if (BuiltinName.substr(25, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestric128; // "__builtin_ia32_pcmpestric128"
case 'o': // 1 string to match.
if (BuiltinName.substr(25, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestrio128; // "__builtin_ia32_pcmpestrio128"
case 's': // 1 string to match.
if (BuiltinName.substr(25, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestris128; // "__builtin_ia32_pcmpestris128"
case 'z': // 1 string to match.
if (BuiltinName.substr(25, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpestriz128; // "__builtin_ia32_pcmpestriz128"
}
break;
case 'i': // 5 strings to match.
if (BuiltinName.substr(20, 4) != "stri")
break;
switch (BuiltinName[24]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName.substr(25, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistria128; // "__builtin_ia32_pcmpistria128"
case 'c': // 1 string to match.
if (BuiltinName.substr(25, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistric128; // "__builtin_ia32_pcmpistric128"
case 'o': // 1 string to match.
if (BuiltinName.substr(25, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistrio128; // "__builtin_ia32_pcmpistrio128"
case 's': // 1 string to match.
if (BuiltinName.substr(25, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistris128; // "__builtin_ia32_pcmpistris128"
case 'z': // 1 string to match.
if (BuiltinName.substr(25, 3) != "128")
break;
return Intrinsic::x86_sse42_pcmpistriz128; // "__builtin_ia32_pcmpistriz128"
}
break;
}
break;
case 'h': // 1 string to match.
if (BuiltinName.substr(17, 11) != "minposuw128")
break;
return Intrinsic::x86_sse41_phminposuw; // "__builtin_ia32_phminposuw128"
}
break;
case 'v': // 2 strings to match.
if (BuiltinName.substr(16, 8) != "testnzcp")
break;
switch (BuiltinName[24]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(25, 3) != "256")
break;
return Intrinsic::x86_avx_vtestnzc_pd_256; // "__builtin_ia32_vtestnzcpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(25, 3) != "256")
break;
return Intrinsic::x86_avx_vtestnzc_ps_256; // "__builtin_ia32_vtestnzcps256"
}
break;
}
break;
case 29: // 2 strings to match.
if (BuiltinName.substr(0, 25) != "__builtin_ia32_maskstorep")
break;
switch (BuiltinName[25]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(26, 3) != "256")
break;
return Intrinsic::x86_avx_maskstore_pd_256; // "__builtin_ia32_maskstorepd256"
case 's': // 1 string to match.
if (BuiltinName.substr(26, 3) != "256")
break;
return Intrinsic::x86_avx_maskstore_ps_256; // "__builtin_ia32_maskstoreps256"
}
break;
case 30: // 4 strings to match.
if (BuiltinName.substr(0, 16) != "__builtin_ia32_v")
break;
switch (BuiltinName[16]) {
default: break;
case 'b': // 2 strings to match.
if (BuiltinName.substr(17, 9) != "roadcasts")
break;
switch (BuiltinName[26]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(27, 3) != "256")
break;
return Intrinsic::x86_avx_vbroadcast_sd_256; // "__builtin_ia32_vbroadcastsd256"
case 's': // 1 string to match.
if (BuiltinName.substr(27, 3) != "256")
break;
return Intrinsic::x86_avx_vbroadcastss_256; // "__builtin_ia32_vbroadcastss256"
}
break;
case 'p': // 2 strings to match.
if (BuiltinName.substr(17, 9) != "ermilvarp")
break;
switch (BuiltinName[26]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(27, 3) != "256")
break;
return Intrinsic::x86_avx_vpermilvar_pd_256; // "__builtin_ia32_vpermilvarpd256"
case 's': // 1 string to match.
if (BuiltinName.substr(27, 3) != "256")
break;
return Intrinsic::x86_avx_vpermilvar_ps_256; // "__builtin_ia32_vpermilvarps256"
}
break;
}
break;
case 31: // 3 strings to match.
if (BuiltinName.substr(0, 26) != "__builtin_ia32_vperm2f128_")
break;
switch (BuiltinName[26]) {
default: break;
case 'p': // 2 strings to match.
switch (BuiltinName[27]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(28, 3) != "256")
break;
return Intrinsic::x86_avx_vperm2f128_pd_256; // "__builtin_ia32_vperm2f128_pd256"
case 's': // 1 string to match.
if (BuiltinName.substr(28, 3) != "256")
break;
return Intrinsic::x86_avx_vperm2f128_ps_256; // "__builtin_ia32_vperm2f128_ps256"
}
break;
case 's': // 1 string to match.
if (BuiltinName.substr(27, 4) != "i256")
break;
return Intrinsic::x86_avx_vperm2f128_si_256; // "__builtin_ia32_vperm2f128_si256"
}
break;
case 32: // 3 strings to match.
if (BuiltinName.substr(0, 27) != "__builtin_ia32_vinsertf128_")
break;
switch (BuiltinName[27]) {
default: break;
case 'p': // 2 strings to match.
switch (BuiltinName[28]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(29, 3) != "256")
break;
return Intrinsic::x86_avx_vinsertf128_pd_256; // "__builtin_ia32_vinsertf128_pd256"
case 's': // 1 string to match.
if (BuiltinName.substr(29, 3) != "256")
break;
return Intrinsic::x86_avx_vinsertf128_ps_256; // "__builtin_ia32_vinsertf128_ps256"
}
break;
case 's': // 1 string to match.
if (BuiltinName.substr(28, 4) != "i256")
break;
return Intrinsic::x86_avx_vinsertf128_si_256; // "__builtin_ia32_vinsertf128_si256"
}
break;
case 33: // 4 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'a': // 1 string to match.
if (BuiltinName.substr(16, 17) != "eskeygenassist128")
break;
return Intrinsic::x86_aesni_aeskeygenassist; // "__builtin_ia32_aeskeygenassist128"
case 'v': // 3 strings to match.
if (BuiltinName.substr(16, 12) != "extractf128_")
break;
switch (BuiltinName[28]) {
default: break;
case 'p': // 2 strings to match.
switch (BuiltinName[29]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(30, 3) != "256")
break;
return Intrinsic::x86_avx_vextractf128_pd_256; // "__builtin_ia32_vextractf128_pd256"
case 's': // 1 string to match.
if (BuiltinName.substr(30, 3) != "256")
break;
return Intrinsic::x86_avx_vextractf128_ps_256; // "__builtin_ia32_vextractf128_ps256"
}
break;
case 's': // 1 string to match.
if (BuiltinName.substr(29, 4) != "i256")
break;
return Intrinsic::x86_avx_vextractf128_si_256; // "__builtin_ia32_vextractf128_si256"
}
break;
}
break;
case 35: // 4 strings to match.
if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
break;
switch (BuiltinName[15]) {
default: break;
case 'p': // 2 strings to match.
if (BuiltinName[16] != 's')
break;
switch (BuiltinName[17]) {
default: break;
case 'l': // 1 string to match.
if (BuiltinName.substr(18, 17) != "ldqi128_byteshift")
break;
return Intrinsic::x86_sse2_psll_dq_bs; // "__builtin_ia32_pslldqi128_byteshift"
case 'r': // 1 string to match.
if (BuiltinName.substr(18, 17) != "ldqi128_byteshift")
break;
return Intrinsic::x86_sse2_psrl_dq_bs; // "__builtin_ia32_psrldqi128_byteshift"
}
break;
case 'v': // 2 strings to match.
if (BuiltinName.substr(16, 15) != "broadcastf128_p")
break;
switch (BuiltinName[31]) {
default: break;
case 'd': // 1 string to match.
if (BuiltinName.substr(32, 3) != "256")
break;
return Intrinsic::x86_avx_vbroadcastf128_pd_256; // "__builtin_ia32_vbroadcastf128_pd256"
case 's': // 1 string to match.
if (BuiltinName.substr(32, 3) != "256")
break;
return Intrinsic::x86_avx_vbroadcastf128_ps_256; // "__builtin_ia32_vbroadcastf128_ps256"
}
break;
}
break;
}
}
return Intrinsic::not_intrinsic;
}
#endif
#if defined(_MSC_VER) && defined(setjmp_undefined_for_msvc)
// let's return it to _setjmp state
# pragma pop_macro("setjmp")
# undef setjmp_undefined_for_msvc
#endif