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