1//===- TableGen'erated file -------------------------------------*- C++ -*-===//
2//
3// Intrinsic Function Source Fragment
4//
5// Automatically generated file, do not edit!
6//
7//===----------------------------------------------------------------------===//
8
9// VisualStudio defines setjmp as _setjmp
10#if defined(_MSC_VER) && defined(setjmp) && \
11                         !defined(setjmp_undefined_for_msvc)
12#  pragma push_macro("setjmp")
13#  undef setjmp
14#  define setjmp_undefined_for_msvc
15#endif
16
17// Enum values for Intrinsics.h
18#ifdef GET_INTRINSIC_ENUM_VALUES
19    adjust_trampoline,                        // llvm.adjust.trampoline
20    annotation,                               // llvm.annotation
21    bswap,                                    // llvm.bswap
22    convert_from_fp16,                        // llvm.convert.from.fp16
23    convert_to_fp16,                          // llvm.convert.to.fp16
24    convertff,                                // llvm.convertff
25    convertfsi,                               // llvm.convertfsi
26    convertfui,                               // llvm.convertfui
27    convertsif,                               // llvm.convertsif
28    convertss,                                // llvm.convertss
29    convertsu,                                // llvm.convertsu
30    convertuif,                               // llvm.convertuif
31    convertus,                                // llvm.convertus
32    convertuu,                                // llvm.convertuu
33    cos,                                      // llvm.cos
34    ctlz,                                     // llvm.ctlz
35    ctpop,                                    // llvm.ctpop
36    cttz,                                     // llvm.cttz
37    dbg_declare,                              // llvm.dbg.declare
38    dbg_value,                                // llvm.dbg.value
39    eh_dwarf_cfa,                             // llvm.eh.dwarf.cfa
40    eh_exception,                             // llvm.eh.exception
41    eh_resume,                                // llvm.eh.resume
42    eh_return_i32,                            // llvm.eh.return.i32
43    eh_return_i64,                            // llvm.eh.return.i64
44    eh_selector,                              // llvm.eh.selector
45    eh_sjlj_callsite,                         // llvm.eh.sjlj.callsite
46    eh_sjlj_dispatch_setup,                   // llvm.eh.sjlj.dispatch.setup
47    eh_sjlj_functioncontext,                  // llvm.eh.sjlj.functioncontext
48    eh_sjlj_longjmp,                          // llvm.eh.sjlj.longjmp
49    eh_sjlj_lsda,                             // llvm.eh.sjlj.lsda
50    eh_sjlj_setjmp,                           // llvm.eh.sjlj.setjmp
51    eh_typeid_for,                            // llvm.eh.typeid.for
52    eh_unwind_init,                           // llvm.eh.unwind.init
53    exp,                                      // llvm.exp
54    exp2,                                     // llvm.exp2
55    expect,                                   // llvm.expect
56    flt_rounds,                               // llvm.flt.rounds
57    fma,                                      // llvm.fma
58    frameaddress,                             // llvm.frameaddress
59    gcread,                                   // llvm.gcread
60    gcroot,                                   // llvm.gcroot
61    gcwrite,                                  // llvm.gcwrite
62    init_trampoline,                          // llvm.init.trampoline
63    invariant_end,                            // llvm.invariant.end
64    invariant_start,                          // llvm.invariant.start
65    lifetime_end,                             // llvm.lifetime.end
66    lifetime_start,                           // llvm.lifetime.start
67    log,                                      // llvm.log
68    log10,                                    // llvm.log10
69    log2,                                     // llvm.log2
70    longjmp,                                  // llvm.longjmp
71    memcpy,                                   // llvm.memcpy
72    memmove,                                  // llvm.memmove
73    memset,                                   // llvm.memset
74    objectsize,                               // llvm.objectsize
75    pcmarker,                                 // llvm.pcmarker
76    pow,                                      // llvm.pow
77    powi,                                     // llvm.powi
78    prefetch,                                 // llvm.prefetch
79    ptr_annotation,                           // llvm.ptr.annotation
80    readcyclecounter,                         // llvm.readcyclecounter
81    returnaddress,                            // llvm.returnaddress
82    sadd_with_overflow,                       // llvm.sadd.with.overflow
83    setjmp,                                   // llvm.setjmp
84    siglongjmp,                               // llvm.siglongjmp
85    sigsetjmp,                                // llvm.sigsetjmp
86    sin,                                      // llvm.sin
87    smul_with_overflow,                       // llvm.smul.with.overflow
88    sqrt,                                     // llvm.sqrt
89    ssub_with_overflow,                       // llvm.ssub.with.overflow
90    stackprotector,                           // llvm.stackprotector
91    stackrestore,                             // llvm.stackrestore
92    stacksave,                                // llvm.stacksave
93    trap,                                     // llvm.trap
94    uadd_with_overflow,                       // llvm.uadd.with.overflow
95    umul_with_overflow,                       // llvm.umul.with.overflow
96    usub_with_overflow,                       // llvm.usub.with.overflow
97    vacopy,                                   // llvm.va_copy
98    vaend,                                    // llvm.va_end
99    var_annotation,                           // llvm.var.annotation
100    vastart,                                  // llvm.va_start
101    x86_3dnow_pavgusb,                        // llvm.x86.3dnow.pavgusb
102    x86_3dnow_pf2id,                          // llvm.x86.3dnow.pf2id
103    x86_3dnow_pfacc,                          // llvm.x86.3dnow.pfacc
104    x86_3dnow_pfadd,                          // llvm.x86.3dnow.pfadd
105    x86_3dnow_pfcmpeq,                        // llvm.x86.3dnow.pfcmpeq
106    x86_3dnow_pfcmpge,                        // llvm.x86.3dnow.pfcmpge
107    x86_3dnow_pfcmpgt,                        // llvm.x86.3dnow.pfcmpgt
108    x86_3dnow_pfmax,                          // llvm.x86.3dnow.pfmax
109    x86_3dnow_pfmin,                          // llvm.x86.3dnow.pfmin
110    x86_3dnow_pfmul,                          // llvm.x86.3dnow.pfmul
111    x86_3dnow_pfrcp,                          // llvm.x86.3dnow.pfrcp
112    x86_3dnow_pfrcpit1,                       // llvm.x86.3dnow.pfrcpit1
113    x86_3dnow_pfrcpit2,                       // llvm.x86.3dnow.pfrcpit2
114    x86_3dnow_pfrsqit1,                       // llvm.x86.3dnow.pfrsqit1
115    x86_3dnow_pfrsqrt,                        // llvm.x86.3dnow.pfrsqrt
116    x86_3dnow_pfsub,                          // llvm.x86.3dnow.pfsub
117    x86_3dnow_pfsubr,                         // llvm.x86.3dnow.pfsubr
118    x86_3dnow_pi2fd,                          // llvm.x86.3dnow.pi2fd
119    x86_3dnow_pmulhrw,                        // llvm.x86.3dnow.pmulhrw
120    x86_3dnowa_pf2iw,                         // llvm.x86.3dnowa.pf2iw
121    x86_3dnowa_pfnacc,                        // llvm.x86.3dnowa.pfnacc
122    x86_3dnowa_pfpnacc,                       // llvm.x86.3dnowa.pfpnacc
123    x86_3dnowa_pi2fw,                         // llvm.x86.3dnowa.pi2fw
124    x86_3dnowa_pswapd,                        // llvm.x86.3dnowa.pswapd
125    x86_aesni_aesdec,                         // llvm.x86.aesni.aesdec
126    x86_aesni_aesdeclast,                     // llvm.x86.aesni.aesdeclast
127    x86_aesni_aesenc,                         // llvm.x86.aesni.aesenc
128    x86_aesni_aesenclast,                     // llvm.x86.aesni.aesenclast
129    x86_aesni_aesimc,                         // llvm.x86.aesni.aesimc
130    x86_aesni_aeskeygenassist,                // llvm.x86.aesni.aeskeygenassist
131    x86_avx_addsub_pd_256,                    // llvm.x86.avx.addsub.pd.256
132    x86_avx_addsub_ps_256,                    // llvm.x86.avx.addsub.ps.256
133    x86_avx_blend_pd_256,                     // llvm.x86.avx.blend.pd.256
134    x86_avx_blend_ps_256,                     // llvm.x86.avx.blend.ps.256
135    x86_avx_blendv_pd_256,                    // llvm.x86.avx.blendv.pd.256
136    x86_avx_blendv_ps_256,                    // llvm.x86.avx.blendv.ps.256
137    x86_avx_cmp_pd_256,                       // llvm.x86.avx.cmp.pd.256
138    x86_avx_cmp_ps_256,                       // llvm.x86.avx.cmp.ps.256
139    x86_avx_cvt_pd2_ps_256,                   // llvm.x86.avx.cvt.pd2.ps.256
140    x86_avx_cvt_pd2dq_256,                    // llvm.x86.avx.cvt.pd2dq.256
141    x86_avx_cvt_ps2_pd_256,                   // llvm.x86.avx.cvt.ps2.pd.256
142    x86_avx_cvt_ps2dq_256,                    // llvm.x86.avx.cvt.ps2dq.256
143    x86_avx_cvtdq2_pd_256,                    // llvm.x86.avx.cvtdq2.pd.256
144    x86_avx_cvtdq2_ps_256,                    // llvm.x86.avx.cvtdq2.ps.256
145    x86_avx_cvtt_pd2dq_256,                   // llvm.x86.avx.cvtt.pd2dq.256
146    x86_avx_cvtt_ps2dq_256,                   // llvm.x86.avx.cvtt.ps2dq.256
147    x86_avx_dp_ps_256,                        // llvm.x86.avx.dp.ps.256
148    x86_avx_hadd_pd_256,                      // llvm.x86.avx.hadd.pd.256
149    x86_avx_hadd_ps_256,                      // llvm.x86.avx.hadd.ps.256
150    x86_avx_hsub_pd_256,                      // llvm.x86.avx.hsub.pd.256
151    x86_avx_hsub_ps_256,                      // llvm.x86.avx.hsub.ps.256
152    x86_avx_ldu_dq_256,                       // llvm.x86.avx.ldu.dq.256
153    x86_avx_loadu_dq_256,                     // llvm.x86.avx.loadu.dq.256
154    x86_avx_loadu_pd_256,                     // llvm.x86.avx.loadu.pd.256
155    x86_avx_loadu_ps_256,                     // llvm.x86.avx.loadu.ps.256
156    x86_avx_maskload_pd,                      // llvm.x86.avx.maskload.pd
157    x86_avx_maskload_pd_256,                  // llvm.x86.avx.maskload.pd.256
158    x86_avx_maskload_ps,                      // llvm.x86.avx.maskload.ps
159    x86_avx_maskload_ps_256,                  // llvm.x86.avx.maskload.ps.256
160    x86_avx_maskstore_pd,                     // llvm.x86.avx.maskstore.pd
161    x86_avx_maskstore_pd_256,                 // llvm.x86.avx.maskstore.pd.256
162    x86_avx_maskstore_ps,                     // llvm.x86.avx.maskstore.ps
163    x86_avx_maskstore_ps_256,                 // llvm.x86.avx.maskstore.ps.256
164    x86_avx_max_pd_256,                       // llvm.x86.avx.max.pd.256
165    x86_avx_max_ps_256,                       // llvm.x86.avx.max.ps.256
166    x86_avx_min_pd_256,                       // llvm.x86.avx.min.pd.256
167    x86_avx_min_ps_256,                       // llvm.x86.avx.min.ps.256
168    x86_avx_movmsk_pd_256,                    // llvm.x86.avx.movmsk.pd.256
169    x86_avx_movmsk_ps_256,                    // llvm.x86.avx.movmsk.ps.256
170    x86_avx_movnt_dq_256,                     // llvm.x86.avx.movnt.dq.256
171    x86_avx_movnt_pd_256,                     // llvm.x86.avx.movnt.pd.256
172    x86_avx_movnt_ps_256,                     // llvm.x86.avx.movnt.ps.256
173    x86_avx_ptestc_256,                       // llvm.x86.avx.ptestc.256
174    x86_avx_ptestnzc_256,                     // llvm.x86.avx.ptestnzc.256
175    x86_avx_ptestz_256,                       // llvm.x86.avx.ptestz.256
176    x86_avx_rcp_ps_256,                       // llvm.x86.avx.rcp.ps.256
177    x86_avx_round_pd_256,                     // llvm.x86.avx.round.pd.256
178    x86_avx_round_ps_256,                     // llvm.x86.avx.round.ps.256
179    x86_avx_rsqrt_ps_256,                     // llvm.x86.avx.rsqrt.ps.256
180    x86_avx_sqrt_pd_256,                      // llvm.x86.avx.sqrt.pd.256
181    x86_avx_sqrt_ps_256,                      // llvm.x86.avx.sqrt.ps.256
182    x86_avx_storeu_dq_256,                    // llvm.x86.avx.storeu.dq.256
183    x86_avx_storeu_pd_256,                    // llvm.x86.avx.storeu.pd.256
184    x86_avx_storeu_ps_256,                    // llvm.x86.avx.storeu.ps.256
185    x86_avx_vbroadcast_sd_256,                // llvm.x86.avx.vbroadcast.sd.256
186    x86_avx_vbroadcastf128_pd_256,            // llvm.x86.avx.vbroadcastf128.pd.256
187    x86_avx_vbroadcastf128_ps_256,            // llvm.x86.avx.vbroadcastf128.ps.256
188    x86_avx_vbroadcastss,                     // llvm.x86.avx.vbroadcastss
189    x86_avx_vbroadcastss_256,                 // llvm.x86.avx.vbroadcastss.256
190    x86_avx_vextractf128_pd_256,              // llvm.x86.avx.vextractf128.pd.256
191    x86_avx_vextractf128_ps_256,              // llvm.x86.avx.vextractf128.ps.256
192    x86_avx_vextractf128_si_256,              // llvm.x86.avx.vextractf128.si.256
193    x86_avx_vinsertf128_pd_256,               // llvm.x86.avx.vinsertf128.pd.256
194    x86_avx_vinsertf128_ps_256,               // llvm.x86.avx.vinsertf128.ps.256
195    x86_avx_vinsertf128_si_256,               // llvm.x86.avx.vinsertf128.si.256
196    x86_avx_vperm2f128_pd_256,                // llvm.x86.avx.vperm2f128.pd.256
197    x86_avx_vperm2f128_ps_256,                // llvm.x86.avx.vperm2f128.ps.256
198    x86_avx_vperm2f128_si_256,                // llvm.x86.avx.vperm2f128.si.256
199    x86_avx_vpermil_pd,                       // llvm.x86.avx.vpermil.pd
200    x86_avx_vpermil_pd_256,                   // llvm.x86.avx.vpermil.pd.256
201    x86_avx_vpermil_ps,                       // llvm.x86.avx.vpermil.ps
202    x86_avx_vpermil_ps_256,                   // llvm.x86.avx.vpermil.ps.256
203    x86_avx_vpermilvar_pd,                    // llvm.x86.avx.vpermilvar.pd
204    x86_avx_vpermilvar_pd_256,                // llvm.x86.avx.vpermilvar.pd.256
205    x86_avx_vpermilvar_ps,                    // llvm.x86.avx.vpermilvar.ps
206    x86_avx_vpermilvar_ps_256,                // llvm.x86.avx.vpermilvar.ps.256
207    x86_avx_vtestc_pd,                        // llvm.x86.avx.vtestc.pd
208    x86_avx_vtestc_pd_256,                    // llvm.x86.avx.vtestc.pd.256
209    x86_avx_vtestc_ps,                        // llvm.x86.avx.vtestc.ps
210    x86_avx_vtestc_ps_256,                    // llvm.x86.avx.vtestc.ps.256
211    x86_avx_vtestnzc_pd,                      // llvm.x86.avx.vtestnzc.pd
212    x86_avx_vtestnzc_pd_256,                  // llvm.x86.avx.vtestnzc.pd.256
213    x86_avx_vtestnzc_ps,                      // llvm.x86.avx.vtestnzc.ps
214    x86_avx_vtestnzc_ps_256,                  // llvm.x86.avx.vtestnzc.ps.256
215    x86_avx_vtestz_pd,                        // llvm.x86.avx.vtestz.pd
216    x86_avx_vtestz_pd_256,                    // llvm.x86.avx.vtestz.pd.256
217    x86_avx_vtestz_ps,                        // llvm.x86.avx.vtestz.ps
218    x86_avx_vtestz_ps_256,                    // llvm.x86.avx.vtestz.ps.256
219    x86_avx_vzeroall,                         // llvm.x86.avx.vzeroall
220    x86_avx_vzeroupper,                       // llvm.x86.avx.vzeroupper
221    x86_int,                                  // llvm.x86.int
222    x86_mmx_emms,                             // llvm.x86.mmx.emms
223    x86_mmx_femms,                            // llvm.x86.mmx.femms
224    x86_mmx_maskmovq,                         // llvm.x86.mmx.maskmovq
225    x86_mmx_movnt_dq,                         // llvm.x86.mmx.movnt.dq
226    x86_mmx_packssdw,                         // llvm.x86.mmx.packssdw
227    x86_mmx_packsswb,                         // llvm.x86.mmx.packsswb
228    x86_mmx_packuswb,                         // llvm.x86.mmx.packuswb
229    x86_mmx_padd_b,                           // llvm.x86.mmx.padd.b
230    x86_mmx_padd_d,                           // llvm.x86.mmx.padd.d
231    x86_mmx_padd_q,                           // llvm.x86.mmx.padd.q
232    x86_mmx_padd_w,                           // llvm.x86.mmx.padd.w
233    x86_mmx_padds_b,                          // llvm.x86.mmx.padds.b
234    x86_mmx_padds_w,                          // llvm.x86.mmx.padds.w
235    x86_mmx_paddus_b,                         // llvm.x86.mmx.paddus.b
236    x86_mmx_paddus_w,                         // llvm.x86.mmx.paddus.w
237    x86_mmx_palignr_b,                        // llvm.x86.mmx.palignr.b
238    x86_mmx_pand,                             // llvm.x86.mmx.pand
239    x86_mmx_pandn,                            // llvm.x86.mmx.pandn
240    x86_mmx_pavg_b,                           // llvm.x86.mmx.pavg.b
241    x86_mmx_pavg_w,                           // llvm.x86.mmx.pavg.w
242    x86_mmx_pcmpeq_b,                         // llvm.x86.mmx.pcmpeq.b
243    x86_mmx_pcmpeq_d,                         // llvm.x86.mmx.pcmpeq.d
244    x86_mmx_pcmpeq_w,                         // llvm.x86.mmx.pcmpeq.w
245    x86_mmx_pcmpgt_b,                         // llvm.x86.mmx.pcmpgt.b
246    x86_mmx_pcmpgt_d,                         // llvm.x86.mmx.pcmpgt.d
247    x86_mmx_pcmpgt_w,                         // llvm.x86.mmx.pcmpgt.w
248    x86_mmx_pextr_w,                          // llvm.x86.mmx.pextr.w
249    x86_mmx_pinsr_w,                          // llvm.x86.mmx.pinsr.w
250    x86_mmx_pmadd_wd,                         // llvm.x86.mmx.pmadd.wd
251    x86_mmx_pmaxs_w,                          // llvm.x86.mmx.pmaxs.w
252    x86_mmx_pmaxu_b,                          // llvm.x86.mmx.pmaxu.b
253    x86_mmx_pmins_w,                          // llvm.x86.mmx.pmins.w
254    x86_mmx_pminu_b,                          // llvm.x86.mmx.pminu.b
255    x86_mmx_pmovmskb,                         // llvm.x86.mmx.pmovmskb
256    x86_mmx_pmulh_w,                          // llvm.x86.mmx.pmulh.w
257    x86_mmx_pmulhu_w,                         // llvm.x86.mmx.pmulhu.w
258    x86_mmx_pmull_w,                          // llvm.x86.mmx.pmull.w
259    x86_mmx_pmulu_dq,                         // llvm.x86.mmx.pmulu.dq
260    x86_mmx_por,                              // llvm.x86.mmx.por
261    x86_mmx_psad_bw,                          // llvm.x86.mmx.psad.bw
262    x86_mmx_psll_d,                           // llvm.x86.mmx.psll.d
263    x86_mmx_psll_q,                           // llvm.x86.mmx.psll.q
264    x86_mmx_psll_w,                           // llvm.x86.mmx.psll.w
265    x86_mmx_pslli_d,                          // llvm.x86.mmx.pslli.d
266    x86_mmx_pslli_q,                          // llvm.x86.mmx.pslli.q
267    x86_mmx_pslli_w,                          // llvm.x86.mmx.pslli.w
268    x86_mmx_psra_d,                           // llvm.x86.mmx.psra.d
269    x86_mmx_psra_w,                           // llvm.x86.mmx.psra.w
270    x86_mmx_psrai_d,                          // llvm.x86.mmx.psrai.d
271    x86_mmx_psrai_w,                          // llvm.x86.mmx.psrai.w
272    x86_mmx_psrl_d,                           // llvm.x86.mmx.psrl.d
273    x86_mmx_psrl_q,                           // llvm.x86.mmx.psrl.q
274    x86_mmx_psrl_w,                           // llvm.x86.mmx.psrl.w
275    x86_mmx_psrli_d,                          // llvm.x86.mmx.psrli.d
276    x86_mmx_psrli_q,                          // llvm.x86.mmx.psrli.q
277    x86_mmx_psrli_w,                          // llvm.x86.mmx.psrli.w
278    x86_mmx_psub_b,                           // llvm.x86.mmx.psub.b
279    x86_mmx_psub_d,                           // llvm.x86.mmx.psub.d
280    x86_mmx_psub_q,                           // llvm.x86.mmx.psub.q
281    x86_mmx_psub_w,                           // llvm.x86.mmx.psub.w
282    x86_mmx_psubs_b,                          // llvm.x86.mmx.psubs.b
283    x86_mmx_psubs_w,                          // llvm.x86.mmx.psubs.w
284    x86_mmx_psubus_b,                         // llvm.x86.mmx.psubus.b
285    x86_mmx_psubus_w,                         // llvm.x86.mmx.psubus.w
286    x86_mmx_punpckhbw,                        // llvm.x86.mmx.punpckhbw
287    x86_mmx_punpckhdq,                        // llvm.x86.mmx.punpckhdq
288    x86_mmx_punpckhwd,                        // llvm.x86.mmx.punpckhwd
289    x86_mmx_punpcklbw,                        // llvm.x86.mmx.punpcklbw
290    x86_mmx_punpckldq,                        // llvm.x86.mmx.punpckldq
291    x86_mmx_punpcklwd,                        // llvm.x86.mmx.punpcklwd
292    x86_mmx_pxor,                             // llvm.x86.mmx.pxor
293    x86_sse2_add_sd,                          // llvm.x86.sse2.add.sd
294    x86_sse2_clflush,                         // llvm.x86.sse2.clflush
295    x86_sse2_cmp_pd,                          // llvm.x86.sse2.cmp.pd
296    x86_sse2_cmp_sd,                          // llvm.x86.sse2.cmp.sd
297    x86_sse2_comieq_sd,                       // llvm.x86.sse2.comieq.sd
298    x86_sse2_comige_sd,                       // llvm.x86.sse2.comige.sd
299    x86_sse2_comigt_sd,                       // llvm.x86.sse2.comigt.sd
300    x86_sse2_comile_sd,                       // llvm.x86.sse2.comile.sd
301    x86_sse2_comilt_sd,                       // llvm.x86.sse2.comilt.sd
302    x86_sse2_comineq_sd,                      // llvm.x86.sse2.comineq.sd
303    x86_sse2_cvtdq2pd,                        // llvm.x86.sse2.cvtdq2pd
304    x86_sse2_cvtdq2ps,                        // llvm.x86.sse2.cvtdq2ps
305    x86_sse2_cvtpd2dq,                        // llvm.x86.sse2.cvtpd2dq
306    x86_sse2_cvtpd2ps,                        // llvm.x86.sse2.cvtpd2ps
307    x86_sse2_cvtps2dq,                        // llvm.x86.sse2.cvtps2dq
308    x86_sse2_cvtps2pd,                        // llvm.x86.sse2.cvtps2pd
309    x86_sse2_cvtsd2si,                        // llvm.x86.sse2.cvtsd2si
310    x86_sse2_cvtsd2si64,                      // llvm.x86.sse2.cvtsd2si64
311    x86_sse2_cvtsd2ss,                        // llvm.x86.sse2.cvtsd2ss
312    x86_sse2_cvtsi2sd,                        // llvm.x86.sse2.cvtsi2sd
313    x86_sse2_cvtsi642sd,                      // llvm.x86.sse2.cvtsi642sd
314    x86_sse2_cvtss2sd,                        // llvm.x86.sse2.cvtss2sd
315    x86_sse2_cvttpd2dq,                       // llvm.x86.sse2.cvttpd2dq
316    x86_sse2_cvttps2dq,                       // llvm.x86.sse2.cvttps2dq
317    x86_sse2_cvttsd2si,                       // llvm.x86.sse2.cvttsd2si
318    x86_sse2_cvttsd2si64,                     // llvm.x86.sse2.cvttsd2si64
319    x86_sse2_div_sd,                          // llvm.x86.sse2.div.sd
320    x86_sse2_lfence,                          // llvm.x86.sse2.lfence
321    x86_sse2_maskmov_dqu,                     // llvm.x86.sse2.maskmov.dqu
322    x86_sse2_max_pd,                          // llvm.x86.sse2.max.pd
323    x86_sse2_max_sd,                          // llvm.x86.sse2.max.sd
324    x86_sse2_mfence,                          // llvm.x86.sse2.mfence
325    x86_sse2_min_pd,                          // llvm.x86.sse2.min.pd
326    x86_sse2_min_sd,                          // llvm.x86.sse2.min.sd
327    x86_sse2_movmsk_pd,                       // llvm.x86.sse2.movmsk.pd
328    x86_sse2_mul_sd,                          // llvm.x86.sse2.mul.sd
329    x86_sse2_packssdw_128,                    // llvm.x86.sse2.packssdw.128
330    x86_sse2_packsswb_128,                    // llvm.x86.sse2.packsswb.128
331    x86_sse2_packuswb_128,                    // llvm.x86.sse2.packuswb.128
332    x86_sse2_padds_b,                         // llvm.x86.sse2.padds.b
333    x86_sse2_padds_w,                         // llvm.x86.sse2.padds.w
334    x86_sse2_paddus_b,                        // llvm.x86.sse2.paddus.b
335    x86_sse2_paddus_w,                        // llvm.x86.sse2.paddus.w
336    x86_sse2_pavg_b,                          // llvm.x86.sse2.pavg.b
337    x86_sse2_pavg_w,                          // llvm.x86.sse2.pavg.w
338    x86_sse2_pcmpeq_b,                        // llvm.x86.sse2.pcmpeq.b
339    x86_sse2_pcmpeq_d,                        // llvm.x86.sse2.pcmpeq.d
340    x86_sse2_pcmpeq_w,                        // llvm.x86.sse2.pcmpeq.w
341    x86_sse2_pcmpgt_b,                        // llvm.x86.sse2.pcmpgt.b
342    x86_sse2_pcmpgt_d,                        // llvm.x86.sse2.pcmpgt.d
343    x86_sse2_pcmpgt_w,                        // llvm.x86.sse2.pcmpgt.w
344    x86_sse2_pmadd_wd,                        // llvm.x86.sse2.pmadd.wd
345    x86_sse2_pmaxs_w,                         // llvm.x86.sse2.pmaxs.w
346    x86_sse2_pmaxu_b,                         // llvm.x86.sse2.pmaxu.b
347    x86_sse2_pmins_w,                         // llvm.x86.sse2.pmins.w
348    x86_sse2_pminu_b,                         // llvm.x86.sse2.pminu.b
349    x86_sse2_pmovmskb_128,                    // llvm.x86.sse2.pmovmskb.128
350    x86_sse2_pmulh_w,                         // llvm.x86.sse2.pmulh.w
351    x86_sse2_pmulhu_w,                        // llvm.x86.sse2.pmulhu.w
352    x86_sse2_pmulu_dq,                        // llvm.x86.sse2.pmulu.dq
353    x86_sse2_psad_bw,                         // llvm.x86.sse2.psad.bw
354    x86_sse2_psll_d,                          // llvm.x86.sse2.psll.d
355    x86_sse2_psll_dq,                         // llvm.x86.sse2.psll.dq
356    x86_sse2_psll_dq_bs,                      // llvm.x86.sse2.psll.dq.bs
357    x86_sse2_psll_q,                          // llvm.x86.sse2.psll.q
358    x86_sse2_psll_w,                          // llvm.x86.sse2.psll.w
359    x86_sse2_pslli_d,                         // llvm.x86.sse2.pslli.d
360    x86_sse2_pslli_q,                         // llvm.x86.sse2.pslli.q
361    x86_sse2_pslli_w,                         // llvm.x86.sse2.pslli.w
362    x86_sse2_psra_d,                          // llvm.x86.sse2.psra.d
363    x86_sse2_psra_w,                          // llvm.x86.sse2.psra.w
364    x86_sse2_psrai_d,                         // llvm.x86.sse2.psrai.d
365    x86_sse2_psrai_w,                         // llvm.x86.sse2.psrai.w
366    x86_sse2_psrl_d,                          // llvm.x86.sse2.psrl.d
367    x86_sse2_psrl_dq,                         // llvm.x86.sse2.psrl.dq
368    x86_sse2_psrl_dq_bs,                      // llvm.x86.sse2.psrl.dq.bs
369    x86_sse2_psrl_q,                          // llvm.x86.sse2.psrl.q
370    x86_sse2_psrl_w,                          // llvm.x86.sse2.psrl.w
371    x86_sse2_psrli_d,                         // llvm.x86.sse2.psrli.d
372    x86_sse2_psrli_q,                         // llvm.x86.sse2.psrli.q
373    x86_sse2_psrli_w,                         // llvm.x86.sse2.psrli.w
374    x86_sse2_psubs_b,                         // llvm.x86.sse2.psubs.b
375    x86_sse2_psubs_w,                         // llvm.x86.sse2.psubs.w
376    x86_sse2_psubus_b,                        // llvm.x86.sse2.psubus.b
377    x86_sse2_psubus_w,                        // llvm.x86.sse2.psubus.w
378    x86_sse2_sqrt_pd,                         // llvm.x86.sse2.sqrt.pd
379    x86_sse2_sqrt_sd,                         // llvm.x86.sse2.sqrt.sd
380    x86_sse2_storel_dq,                       // llvm.x86.sse2.storel.dq
381    x86_sse2_storeu_dq,                       // llvm.x86.sse2.storeu.dq
382    x86_sse2_storeu_pd,                       // llvm.x86.sse2.storeu.pd
383    x86_sse2_sub_sd,                          // llvm.x86.sse2.sub.sd
384    x86_sse2_ucomieq_sd,                      // llvm.x86.sse2.ucomieq.sd
385    x86_sse2_ucomige_sd,                      // llvm.x86.sse2.ucomige.sd
386    x86_sse2_ucomigt_sd,                      // llvm.x86.sse2.ucomigt.sd
387    x86_sse2_ucomile_sd,                      // llvm.x86.sse2.ucomile.sd
388    x86_sse2_ucomilt_sd,                      // llvm.x86.sse2.ucomilt.sd
389    x86_sse2_ucomineq_sd,                     // llvm.x86.sse2.ucomineq.sd
390    x86_sse3_addsub_pd,                       // llvm.x86.sse3.addsub.pd
391    x86_sse3_addsub_ps,                       // llvm.x86.sse3.addsub.ps
392    x86_sse3_hadd_pd,                         // llvm.x86.sse3.hadd.pd
393    x86_sse3_hadd_ps,                         // llvm.x86.sse3.hadd.ps
394    x86_sse3_hsub_pd,                         // llvm.x86.sse3.hsub.pd
395    x86_sse3_hsub_ps,                         // llvm.x86.sse3.hsub.ps
396    x86_sse3_ldu_dq,                          // llvm.x86.sse3.ldu.dq
397    x86_sse3_monitor,                         // llvm.x86.sse3.monitor
398    x86_sse3_mwait,                           // llvm.x86.sse3.mwait
399    x86_sse41_blendpd,                        // llvm.x86.sse41.blendpd
400    x86_sse41_blendps,                        // llvm.x86.sse41.blendps
401    x86_sse41_blendvpd,                       // llvm.x86.sse41.blendvpd
402    x86_sse41_blendvps,                       // llvm.x86.sse41.blendvps
403    x86_sse41_dppd,                           // llvm.x86.sse41.dppd
404    x86_sse41_dpps,                           // llvm.x86.sse41.dpps
405    x86_sse41_extractps,                      // llvm.x86.sse41.extractps
406    x86_sse41_insertps,                       // llvm.x86.sse41.insertps
407    x86_sse41_movntdqa,                       // llvm.x86.sse41.movntdqa
408    x86_sse41_mpsadbw,                        // llvm.x86.sse41.mpsadbw
409    x86_sse41_packusdw,                       // llvm.x86.sse41.packusdw
410    x86_sse41_pblendvb,                       // llvm.x86.sse41.pblendvb
411    x86_sse41_pblendw,                        // llvm.x86.sse41.pblendw
412    x86_sse41_pcmpeqq,                        // llvm.x86.sse41.pcmpeqq
413    x86_sse41_pextrb,                         // llvm.x86.sse41.pextrb
414    x86_sse41_pextrd,                         // llvm.x86.sse41.pextrd
415    x86_sse41_pextrq,                         // llvm.x86.sse41.pextrq
416    x86_sse41_phminposuw,                     // llvm.x86.sse41.phminposuw
417    x86_sse41_pmaxsb,                         // llvm.x86.sse41.pmaxsb
418    x86_sse41_pmaxsd,                         // llvm.x86.sse41.pmaxsd
419    x86_sse41_pmaxud,                         // llvm.x86.sse41.pmaxud
420    x86_sse41_pmaxuw,                         // llvm.x86.sse41.pmaxuw
421    x86_sse41_pminsb,                         // llvm.x86.sse41.pminsb
422    x86_sse41_pminsd,                         // llvm.x86.sse41.pminsd
423    x86_sse41_pminud,                         // llvm.x86.sse41.pminud
424    x86_sse41_pminuw,                         // llvm.x86.sse41.pminuw
425    x86_sse41_pmovsxbd,                       // llvm.x86.sse41.pmovsxbd
426    x86_sse41_pmovsxbq,                       // llvm.x86.sse41.pmovsxbq
427    x86_sse41_pmovsxbw,                       // llvm.x86.sse41.pmovsxbw
428    x86_sse41_pmovsxdq,                       // llvm.x86.sse41.pmovsxdq
429    x86_sse41_pmovsxwd,                       // llvm.x86.sse41.pmovsxwd
430    x86_sse41_pmovsxwq,                       // llvm.x86.sse41.pmovsxwq
431    x86_sse41_pmovzxbd,                       // llvm.x86.sse41.pmovzxbd
432    x86_sse41_pmovzxbq,                       // llvm.x86.sse41.pmovzxbq
433    x86_sse41_pmovzxbw,                       // llvm.x86.sse41.pmovzxbw
434    x86_sse41_pmovzxdq,                       // llvm.x86.sse41.pmovzxdq
435    x86_sse41_pmovzxwd,                       // llvm.x86.sse41.pmovzxwd
436    x86_sse41_pmovzxwq,                       // llvm.x86.sse41.pmovzxwq
437    x86_sse41_pmuldq,                         // llvm.x86.sse41.pmuldq
438    x86_sse41_ptestc,                         // llvm.x86.sse41.ptestc
439    x86_sse41_ptestnzc,                       // llvm.x86.sse41.ptestnzc
440    x86_sse41_ptestz,                         // llvm.x86.sse41.ptestz
441    x86_sse41_round_pd,                       // llvm.x86.sse41.round.pd
442    x86_sse41_round_ps,                       // llvm.x86.sse41.round.ps
443    x86_sse41_round_sd,                       // llvm.x86.sse41.round.sd
444    x86_sse41_round_ss,                       // llvm.x86.sse41.round.ss
445    x86_sse42_crc32_32_16,                    // llvm.x86.sse42.crc32.32.16
446    x86_sse42_crc32_32_32,                    // llvm.x86.sse42.crc32.32.32
447    x86_sse42_crc32_32_8,                     // llvm.x86.sse42.crc32.32.8
448    x86_sse42_crc32_64_64,                    // llvm.x86.sse42.crc32.64.64
449    x86_sse42_crc32_64_8,                     // llvm.x86.sse42.crc32.64.8
450    x86_sse42_pcmpestri128,                   // llvm.x86.sse42.pcmpestri128
451    x86_sse42_pcmpestria128,                  // llvm.x86.sse42.pcmpestria128
452    x86_sse42_pcmpestric128,                  // llvm.x86.sse42.pcmpestric128
453    x86_sse42_pcmpestrio128,                  // llvm.x86.sse42.pcmpestrio128
454    x86_sse42_pcmpestris128,                  // llvm.x86.sse42.pcmpestris128
455    x86_sse42_pcmpestriz128,                  // llvm.x86.sse42.pcmpestriz128
456    x86_sse42_pcmpestrm128,                   // llvm.x86.sse42.pcmpestrm128
457    x86_sse42_pcmpgtq,                        // llvm.x86.sse42.pcmpgtq
458    x86_sse42_pcmpistri128,                   // llvm.x86.sse42.pcmpistri128
459    x86_sse42_pcmpistria128,                  // llvm.x86.sse42.pcmpistria128
460    x86_sse42_pcmpistric128,                  // llvm.x86.sse42.pcmpistric128
461    x86_sse42_pcmpistrio128,                  // llvm.x86.sse42.pcmpistrio128
462    x86_sse42_pcmpistris128,                  // llvm.x86.sse42.pcmpistris128
463    x86_sse42_pcmpistriz128,                  // llvm.x86.sse42.pcmpistriz128
464    x86_sse42_pcmpistrm128,                   // llvm.x86.sse42.pcmpistrm128
465    x86_sse_add_ss,                           // llvm.x86.sse.add.ss
466    x86_sse_cmp_ps,                           // llvm.x86.sse.cmp.ps
467    x86_sse_cmp_ss,                           // llvm.x86.sse.cmp.ss
468    x86_sse_comieq_ss,                        // llvm.x86.sse.comieq.ss
469    x86_sse_comige_ss,                        // llvm.x86.sse.comige.ss
470    x86_sse_comigt_ss,                        // llvm.x86.sse.comigt.ss
471    x86_sse_comile_ss,                        // llvm.x86.sse.comile.ss
472    x86_sse_comilt_ss,                        // llvm.x86.sse.comilt.ss
473    x86_sse_comineq_ss,                       // llvm.x86.sse.comineq.ss
474    x86_sse_cvtpd2pi,                         // llvm.x86.sse.cvtpd2pi
475    x86_sse_cvtpi2pd,                         // llvm.x86.sse.cvtpi2pd
476    x86_sse_cvtpi2ps,                         // llvm.x86.sse.cvtpi2ps
477    x86_sse_cvtps2pi,                         // llvm.x86.sse.cvtps2pi
478    x86_sse_cvtsi2ss,                         // llvm.x86.sse.cvtsi2ss
479    x86_sse_cvtsi642ss,                       // llvm.x86.sse.cvtsi642ss
480    x86_sse_cvtss2si,                         // llvm.x86.sse.cvtss2si
481    x86_sse_cvtss2si64,                       // llvm.x86.sse.cvtss2si64
482    x86_sse_cvttpd2pi,                        // llvm.x86.sse.cvttpd2pi
483    x86_sse_cvttps2pi,                        // llvm.x86.sse.cvttps2pi
484    x86_sse_cvttss2si,                        // llvm.x86.sse.cvttss2si
485    x86_sse_cvttss2si64,                      // llvm.x86.sse.cvttss2si64
486    x86_sse_div_ss,                           // llvm.x86.sse.div.ss
487    x86_sse_ldmxcsr,                          // llvm.x86.sse.ldmxcsr
488    x86_sse_max_ps,                           // llvm.x86.sse.max.ps
489    x86_sse_max_ss,                           // llvm.x86.sse.max.ss
490    x86_sse_min_ps,                           // llvm.x86.sse.min.ps
491    x86_sse_min_ss,                           // llvm.x86.sse.min.ss
492    x86_sse_movmsk_ps,                        // llvm.x86.sse.movmsk.ps
493    x86_sse_mul_ss,                           // llvm.x86.sse.mul.ss
494    x86_sse_pshuf_w,                          // llvm.x86.sse.pshuf.w
495    x86_sse_rcp_ps,                           // llvm.x86.sse.rcp.ps
496    x86_sse_rcp_ss,                           // llvm.x86.sse.rcp.ss
497    x86_sse_rsqrt_ps,                         // llvm.x86.sse.rsqrt.ps
498    x86_sse_rsqrt_ss,                         // llvm.x86.sse.rsqrt.ss
499    x86_sse_sfence,                           // llvm.x86.sse.sfence
500    x86_sse_sqrt_ps,                          // llvm.x86.sse.sqrt.ps
501    x86_sse_sqrt_ss,                          // llvm.x86.sse.sqrt.ss
502    x86_sse_stmxcsr,                          // llvm.x86.sse.stmxcsr
503    x86_sse_storeu_ps,                        // llvm.x86.sse.storeu.ps
504    x86_sse_sub_ss,                           // llvm.x86.sse.sub.ss
505    x86_sse_ucomieq_ss,                       // llvm.x86.sse.ucomieq.ss
506    x86_sse_ucomige_ss,                       // llvm.x86.sse.ucomige.ss
507    x86_sse_ucomigt_ss,                       // llvm.x86.sse.ucomigt.ss
508    x86_sse_ucomile_ss,                       // llvm.x86.sse.ucomile.ss
509    x86_sse_ucomilt_ss,                       // llvm.x86.sse.ucomilt.ss
510    x86_sse_ucomineq_ss,                      // llvm.x86.sse.ucomineq.ss
511    x86_ssse3_pabs_b,                         // llvm.x86.ssse3.pabs.b
512    x86_ssse3_pabs_b_128,                     // llvm.x86.ssse3.pabs.b.128
513    x86_ssse3_pabs_d,                         // llvm.x86.ssse3.pabs.d
514    x86_ssse3_pabs_d_128,                     // llvm.x86.ssse3.pabs.d.128
515    x86_ssse3_pabs_w,                         // llvm.x86.ssse3.pabs.w
516    x86_ssse3_pabs_w_128,                     // llvm.x86.ssse3.pabs.w.128
517    x86_ssse3_phadd_d,                        // llvm.x86.ssse3.phadd.d
518    x86_ssse3_phadd_d_128,                    // llvm.x86.ssse3.phadd.d.128
519    x86_ssse3_phadd_sw,                       // llvm.x86.ssse3.phadd.sw
520    x86_ssse3_phadd_sw_128,                   // llvm.x86.ssse3.phadd.sw.128
521    x86_ssse3_phadd_w,                        // llvm.x86.ssse3.phadd.w
522    x86_ssse3_phadd_w_128,                    // llvm.x86.ssse3.phadd.w.128
523    x86_ssse3_phsub_d,                        // llvm.x86.ssse3.phsub.d
524    x86_ssse3_phsub_d_128,                    // llvm.x86.ssse3.phsub.d.128
525    x86_ssse3_phsub_sw,                       // llvm.x86.ssse3.phsub.sw
526    x86_ssse3_phsub_sw_128,                   // llvm.x86.ssse3.phsub.sw.128
527    x86_ssse3_phsub_w,                        // llvm.x86.ssse3.phsub.w
528    x86_ssse3_phsub_w_128,                    // llvm.x86.ssse3.phsub.w.128
529    x86_ssse3_pmadd_ub_sw,                    // llvm.x86.ssse3.pmadd.ub.sw
530    x86_ssse3_pmadd_ub_sw_128,                // llvm.x86.ssse3.pmadd.ub.sw.128
531    x86_ssse3_pmul_hr_sw,                     // llvm.x86.ssse3.pmul.hr.sw
532    x86_ssse3_pmul_hr_sw_128,                 // llvm.x86.ssse3.pmul.hr.sw.128
533    x86_ssse3_pshuf_b,                        // llvm.x86.ssse3.pshuf.b
534    x86_ssse3_pshuf_b_128,                    // llvm.x86.ssse3.pshuf.b.128
535    x86_ssse3_psign_b,                        // llvm.x86.ssse3.psign.b
536    x86_ssse3_psign_b_128,                    // llvm.x86.ssse3.psign.b.128
537    x86_ssse3_psign_d,                        // llvm.x86.ssse3.psign.d
538    x86_ssse3_psign_d_128,                    // llvm.x86.ssse3.psign.d.128
539    x86_ssse3_psign_w,                        // llvm.x86.ssse3.psign.w
540    x86_ssse3_psign_w_128                     // llvm.x86.ssse3.psign.w.128
541#endif
542
543// Intrinsic ID to name table
544#ifdef GET_INTRINSIC_NAME_TABLE
545  // Note that entry #0 is the invalid intrinsic!
546  "llvm.adjust.trampoline",
547  "llvm.annotation",
548  "llvm.bswap",
549  "llvm.convert.from.fp16",
550  "llvm.convert.to.fp16",
551  "llvm.convertff",
552  "llvm.convertfsi",
553  "llvm.convertfui",
554  "llvm.convertsif",
555  "llvm.convertss",
556  "llvm.convertsu",
557  "llvm.convertuif",
558  "llvm.convertus",
559  "llvm.convertuu",
560  "llvm.cos",
561  "llvm.ctlz",
562  "llvm.ctpop",
563  "llvm.cttz",
564  "llvm.dbg.declare",
565  "llvm.dbg.value",
566  "llvm.eh.dwarf.cfa",
567  "llvm.eh.exception",
568  "llvm.eh.resume",
569  "llvm.eh.return.i32",
570  "llvm.eh.return.i64",
571  "llvm.eh.selector",
572  "llvm.eh.sjlj.callsite",
573  "llvm.eh.sjlj.dispatch.setup",
574  "llvm.eh.sjlj.functioncontext",
575  "llvm.eh.sjlj.longjmp",
576  "llvm.eh.sjlj.lsda",
577  "llvm.eh.sjlj.setjmp",
578  "llvm.eh.typeid.for",
579  "llvm.eh.unwind.init",
580  "llvm.exp",
581  "llvm.exp2",
582  "llvm.expect",
583  "llvm.flt.rounds",
584  "llvm.fma",
585  "llvm.frameaddress",
586  "llvm.gcread",
587  "llvm.gcroot",
588  "llvm.gcwrite",
589  "llvm.init.trampoline",
590  "llvm.invariant.end",
591  "llvm.invariant.start",
592  "llvm.lifetime.end",
593  "llvm.lifetime.start",
594  "llvm.log",
595  "llvm.log10",
596  "llvm.log2",
597  "llvm.longjmp",
598  "llvm.memcpy",
599  "llvm.memmove",
600  "llvm.memset",
601  "llvm.objectsize",
602  "llvm.pcmarker",
603  "llvm.pow",
604  "llvm.powi",
605  "llvm.prefetch",
606  "llvm.ptr.annotation",
607  "llvm.readcyclecounter",
608  "llvm.returnaddress",
609  "llvm.sadd.with.overflow",
610  "llvm.setjmp",
611  "llvm.siglongjmp",
612  "llvm.sigsetjmp",
613  "llvm.sin",
614  "llvm.smul.with.overflow",
615  "llvm.sqrt",
616  "llvm.ssub.with.overflow",
617  "llvm.stackprotector",
618  "llvm.stackrestore",
619  "llvm.stacksave",
620  "llvm.trap",
621  "llvm.uadd.with.overflow",
622  "llvm.umul.with.overflow",
623  "llvm.usub.with.overflow",
624  "llvm.va_copy",
625  "llvm.va_end",
626  "llvm.var.annotation",
627  "llvm.va_start",
628  "llvm.x86.3dnow.pavgusb",
629  "llvm.x86.3dnow.pf2id",
630  "llvm.x86.3dnow.pfacc",
631  "llvm.x86.3dnow.pfadd",
632  "llvm.x86.3dnow.pfcmpeq",
633  "llvm.x86.3dnow.pfcmpge",
634  "llvm.x86.3dnow.pfcmpgt",
635  "llvm.x86.3dnow.pfmax",
636  "llvm.x86.3dnow.pfmin",
637  "llvm.x86.3dnow.pfmul",
638  "llvm.x86.3dnow.pfrcp",
639  "llvm.x86.3dnow.pfrcpit1",
640  "llvm.x86.3dnow.pfrcpit2",
641  "llvm.x86.3dnow.pfrsqit1",
642  "llvm.x86.3dnow.pfrsqrt",
643  "llvm.x86.3dnow.pfsub",
644  "llvm.x86.3dnow.pfsubr",
645  "llvm.x86.3dnow.pi2fd",
646  "llvm.x86.3dnow.pmulhrw",
647  "llvm.x86.3dnowa.pf2iw",
648  "llvm.x86.3dnowa.pfnacc",
649  "llvm.x86.3dnowa.pfpnacc",
650  "llvm.x86.3dnowa.pi2fw",
651  "llvm.x86.3dnowa.pswapd",
652  "llvm.x86.aesni.aesdec",
653  "llvm.x86.aesni.aesdeclast",
654  "llvm.x86.aesni.aesenc",
655  "llvm.x86.aesni.aesenclast",
656  "llvm.x86.aesni.aesimc",
657  "llvm.x86.aesni.aeskeygenassist",
658  "llvm.x86.avx.addsub.pd.256",
659  "llvm.x86.avx.addsub.ps.256",
660  "llvm.x86.avx.blend.pd.256",
661  "llvm.x86.avx.blend.ps.256",
662  "llvm.x86.avx.blendv.pd.256",
663  "llvm.x86.avx.blendv.ps.256",
664  "llvm.x86.avx.cmp.pd.256",
665  "llvm.x86.avx.cmp.ps.256",
666  "llvm.x86.avx.cvt.pd2.ps.256",
667  "llvm.x86.avx.cvt.pd2dq.256",
668  "llvm.x86.avx.cvt.ps2.pd.256",
669  "llvm.x86.avx.cvt.ps2dq.256",
670  "llvm.x86.avx.cvtdq2.pd.256",
671  "llvm.x86.avx.cvtdq2.ps.256",
672  "llvm.x86.avx.cvtt.pd2dq.256",
673  "llvm.x86.avx.cvtt.ps2dq.256",
674  "llvm.x86.avx.dp.ps.256",
675  "llvm.x86.avx.hadd.pd.256",
676  "llvm.x86.avx.hadd.ps.256",
677  "llvm.x86.avx.hsub.pd.256",
678  "llvm.x86.avx.hsub.ps.256",
679  "llvm.x86.avx.ldu.dq.256",
680  "llvm.x86.avx.loadu.dq.256",
681  "llvm.x86.avx.loadu.pd.256",
682  "llvm.x86.avx.loadu.ps.256",
683  "llvm.x86.avx.maskload.pd",
684  "llvm.x86.avx.maskload.pd.256",
685  "llvm.x86.avx.maskload.ps",
686  "llvm.x86.avx.maskload.ps.256",
687  "llvm.x86.avx.maskstore.pd",
688  "llvm.x86.avx.maskstore.pd.256",
689  "llvm.x86.avx.maskstore.ps",
690  "llvm.x86.avx.maskstore.ps.256",
691  "llvm.x86.avx.max.pd.256",
692  "llvm.x86.avx.max.ps.256",
693  "llvm.x86.avx.min.pd.256",
694  "llvm.x86.avx.min.ps.256",
695  "llvm.x86.avx.movmsk.pd.256",
696  "llvm.x86.avx.movmsk.ps.256",
697  "llvm.x86.avx.movnt.dq.256",
698  "llvm.x86.avx.movnt.pd.256",
699  "llvm.x86.avx.movnt.ps.256",
700  "llvm.x86.avx.ptestc.256",
701  "llvm.x86.avx.ptestnzc.256",
702  "llvm.x86.avx.ptestz.256",
703  "llvm.x86.avx.rcp.ps.256",
704  "llvm.x86.avx.round.pd.256",
705  "llvm.x86.avx.round.ps.256",
706  "llvm.x86.avx.rsqrt.ps.256",
707  "llvm.x86.avx.sqrt.pd.256",
708  "llvm.x86.avx.sqrt.ps.256",
709  "llvm.x86.avx.storeu.dq.256",
710  "llvm.x86.avx.storeu.pd.256",
711  "llvm.x86.avx.storeu.ps.256",
712  "llvm.x86.avx.vbroadcast.sd.256",
713  "llvm.x86.avx.vbroadcastf128.pd.256",
714  "llvm.x86.avx.vbroadcastf128.ps.256",
715  "llvm.x86.avx.vbroadcastss",
716  "llvm.x86.avx.vbroadcastss.256",
717  "llvm.x86.avx.vextractf128.pd.256",
718  "llvm.x86.avx.vextractf128.ps.256",
719  "llvm.x86.avx.vextractf128.si.256",
720  "llvm.x86.avx.vinsertf128.pd.256",
721  "llvm.x86.avx.vinsertf128.ps.256",
722  "llvm.x86.avx.vinsertf128.si.256",
723  "llvm.x86.avx.vperm2f128.pd.256",
724  "llvm.x86.avx.vperm2f128.ps.256",
725  "llvm.x86.avx.vperm2f128.si.256",
726  "llvm.x86.avx.vpermil.pd",
727  "llvm.x86.avx.vpermil.pd.256",
728  "llvm.x86.avx.vpermil.ps",
729  "llvm.x86.avx.vpermil.ps.256",
730  "llvm.x86.avx.vpermilvar.pd",
731  "llvm.x86.avx.vpermilvar.pd.256",
732  "llvm.x86.avx.vpermilvar.ps",
733  "llvm.x86.avx.vpermilvar.ps.256",
734  "llvm.x86.avx.vtestc.pd",
735  "llvm.x86.avx.vtestc.pd.256",
736  "llvm.x86.avx.vtestc.ps",
737  "llvm.x86.avx.vtestc.ps.256",
738  "llvm.x86.avx.vtestnzc.pd",
739  "llvm.x86.avx.vtestnzc.pd.256",
740  "llvm.x86.avx.vtestnzc.ps",
741  "llvm.x86.avx.vtestnzc.ps.256",
742  "llvm.x86.avx.vtestz.pd",
743  "llvm.x86.avx.vtestz.pd.256",
744  "llvm.x86.avx.vtestz.ps",
745  "llvm.x86.avx.vtestz.ps.256",
746  "llvm.x86.avx.vzeroall",
747  "llvm.x86.avx.vzeroupper",
748  "llvm.x86.int",
749  "llvm.x86.mmx.emms",
750  "llvm.x86.mmx.femms",
751  "llvm.x86.mmx.maskmovq",
752  "llvm.x86.mmx.movnt.dq",
753  "llvm.x86.mmx.packssdw",
754  "llvm.x86.mmx.packsswb",
755  "llvm.x86.mmx.packuswb",
756  "llvm.x86.mmx.padd.b",
757  "llvm.x86.mmx.padd.d",
758  "llvm.x86.mmx.padd.q",
759  "llvm.x86.mmx.padd.w",
760  "llvm.x86.mmx.padds.b",
761  "llvm.x86.mmx.padds.w",
762  "llvm.x86.mmx.paddus.b",
763  "llvm.x86.mmx.paddus.w",
764  "llvm.x86.mmx.palignr.b",
765  "llvm.x86.mmx.pand",
766  "llvm.x86.mmx.pandn",
767  "llvm.x86.mmx.pavg.b",
768  "llvm.x86.mmx.pavg.w",
769  "llvm.x86.mmx.pcmpeq.b",
770  "llvm.x86.mmx.pcmpeq.d",
771  "llvm.x86.mmx.pcmpeq.w",
772  "llvm.x86.mmx.pcmpgt.b",
773  "llvm.x86.mmx.pcmpgt.d",
774  "llvm.x86.mmx.pcmpgt.w",
775  "llvm.x86.mmx.pextr.w",
776  "llvm.x86.mmx.pinsr.w",
777  "llvm.x86.mmx.pmadd.wd",
778  "llvm.x86.mmx.pmaxs.w",
779  "llvm.x86.mmx.pmaxu.b",
780  "llvm.x86.mmx.pmins.w",
781  "llvm.x86.mmx.pminu.b",
782  "llvm.x86.mmx.pmovmskb",
783  "llvm.x86.mmx.pmulh.w",
784  "llvm.x86.mmx.pmulhu.w",
785  "llvm.x86.mmx.pmull.w",
786  "llvm.x86.mmx.pmulu.dq",
787  "llvm.x86.mmx.por",
788  "llvm.x86.mmx.psad.bw",
789  "llvm.x86.mmx.psll.d",
790  "llvm.x86.mmx.psll.q",
791  "llvm.x86.mmx.psll.w",
792  "llvm.x86.mmx.pslli.d",
793  "llvm.x86.mmx.pslli.q",
794  "llvm.x86.mmx.pslli.w",
795  "llvm.x86.mmx.psra.d",
796  "llvm.x86.mmx.psra.w",
797  "llvm.x86.mmx.psrai.d",
798  "llvm.x86.mmx.psrai.w",
799  "llvm.x86.mmx.psrl.d",
800  "llvm.x86.mmx.psrl.q",
801  "llvm.x86.mmx.psrl.w",
802  "llvm.x86.mmx.psrli.d",
803  "llvm.x86.mmx.psrli.q",
804  "llvm.x86.mmx.psrli.w",
805  "llvm.x86.mmx.psub.b",
806  "llvm.x86.mmx.psub.d",
807  "llvm.x86.mmx.psub.q",
808  "llvm.x86.mmx.psub.w",
809  "llvm.x86.mmx.psubs.b",
810  "llvm.x86.mmx.psubs.w",
811  "llvm.x86.mmx.psubus.b",
812  "llvm.x86.mmx.psubus.w",
813  "llvm.x86.mmx.punpckhbw",
814  "llvm.x86.mmx.punpckhdq",
815  "llvm.x86.mmx.punpckhwd",
816  "llvm.x86.mmx.punpcklbw",
817  "llvm.x86.mmx.punpckldq",
818  "llvm.x86.mmx.punpcklwd",
819  "llvm.x86.mmx.pxor",
820  "llvm.x86.sse2.add.sd",
821  "llvm.x86.sse2.clflush",
822  "llvm.x86.sse2.cmp.pd",
823  "llvm.x86.sse2.cmp.sd",
824  "llvm.x86.sse2.comieq.sd",
825  "llvm.x86.sse2.comige.sd",
826  "llvm.x86.sse2.comigt.sd",
827  "llvm.x86.sse2.comile.sd",
828  "llvm.x86.sse2.comilt.sd",
829  "llvm.x86.sse2.comineq.sd",
830  "llvm.x86.sse2.cvtdq2pd",
831  "llvm.x86.sse2.cvtdq2ps",
832  "llvm.x86.sse2.cvtpd2dq",
833  "llvm.x86.sse2.cvtpd2ps",
834  "llvm.x86.sse2.cvtps2dq",
835  "llvm.x86.sse2.cvtps2pd",
836  "llvm.x86.sse2.cvtsd2si",
837  "llvm.x86.sse2.cvtsd2si64",
838  "llvm.x86.sse2.cvtsd2ss",
839  "llvm.x86.sse2.cvtsi2sd",
840  "llvm.x86.sse2.cvtsi642sd",
841  "llvm.x86.sse2.cvtss2sd",
842  "llvm.x86.sse2.cvttpd2dq",
843  "llvm.x86.sse2.cvttps2dq",
844  "llvm.x86.sse2.cvttsd2si",
845  "llvm.x86.sse2.cvttsd2si64",
846  "llvm.x86.sse2.div.sd",
847  "llvm.x86.sse2.lfence",
848  "llvm.x86.sse2.maskmov.dqu",
849  "llvm.x86.sse2.max.pd",
850  "llvm.x86.sse2.max.sd",
851  "llvm.x86.sse2.mfence",
852  "llvm.x86.sse2.min.pd",
853  "llvm.x86.sse2.min.sd",
854  "llvm.x86.sse2.movmsk.pd",
855  "llvm.x86.sse2.mul.sd",
856  "llvm.x86.sse2.packssdw.128",
857  "llvm.x86.sse2.packsswb.128",
858  "llvm.x86.sse2.packuswb.128",
859  "llvm.x86.sse2.padds.b",
860  "llvm.x86.sse2.padds.w",
861  "llvm.x86.sse2.paddus.b",
862  "llvm.x86.sse2.paddus.w",
863  "llvm.x86.sse2.pavg.b",
864  "llvm.x86.sse2.pavg.w",
865  "llvm.x86.sse2.pcmpeq.b",
866  "llvm.x86.sse2.pcmpeq.d",
867  "llvm.x86.sse2.pcmpeq.w",
868  "llvm.x86.sse2.pcmpgt.b",
869  "llvm.x86.sse2.pcmpgt.d",
870  "llvm.x86.sse2.pcmpgt.w",
871  "llvm.x86.sse2.pmadd.wd",
872  "llvm.x86.sse2.pmaxs.w",
873  "llvm.x86.sse2.pmaxu.b",
874  "llvm.x86.sse2.pmins.w",
875  "llvm.x86.sse2.pminu.b",
876  "llvm.x86.sse2.pmovmskb.128",
877  "llvm.x86.sse2.pmulh.w",
878  "llvm.x86.sse2.pmulhu.w",
879  "llvm.x86.sse2.pmulu.dq",
880  "llvm.x86.sse2.psad.bw",
881  "llvm.x86.sse2.psll.d",
882  "llvm.x86.sse2.psll.dq",
883  "llvm.x86.sse2.psll.dq.bs",
884  "llvm.x86.sse2.psll.q",
885  "llvm.x86.sse2.psll.w",
886  "llvm.x86.sse2.pslli.d",
887  "llvm.x86.sse2.pslli.q",
888  "llvm.x86.sse2.pslli.w",
889  "llvm.x86.sse2.psra.d",
890  "llvm.x86.sse2.psra.w",
891  "llvm.x86.sse2.psrai.d",
892  "llvm.x86.sse2.psrai.w",
893  "llvm.x86.sse2.psrl.d",
894  "llvm.x86.sse2.psrl.dq",
895  "llvm.x86.sse2.psrl.dq.bs",
896  "llvm.x86.sse2.psrl.q",
897  "llvm.x86.sse2.psrl.w",
898  "llvm.x86.sse2.psrli.d",
899  "llvm.x86.sse2.psrli.q",
900  "llvm.x86.sse2.psrli.w",
901  "llvm.x86.sse2.psubs.b",
902  "llvm.x86.sse2.psubs.w",
903  "llvm.x86.sse2.psubus.b",
904  "llvm.x86.sse2.psubus.w",
905  "llvm.x86.sse2.sqrt.pd",
906  "llvm.x86.sse2.sqrt.sd",
907  "llvm.x86.sse2.storel.dq",
908  "llvm.x86.sse2.storeu.dq",
909  "llvm.x86.sse2.storeu.pd",
910  "llvm.x86.sse2.sub.sd",
911  "llvm.x86.sse2.ucomieq.sd",
912  "llvm.x86.sse2.ucomige.sd",
913  "llvm.x86.sse2.ucomigt.sd",
914  "llvm.x86.sse2.ucomile.sd",
915  "llvm.x86.sse2.ucomilt.sd",
916  "llvm.x86.sse2.ucomineq.sd",
917  "llvm.x86.sse3.addsub.pd",
918  "llvm.x86.sse3.addsub.ps",
919  "llvm.x86.sse3.hadd.pd",
920  "llvm.x86.sse3.hadd.ps",
921  "llvm.x86.sse3.hsub.pd",
922  "llvm.x86.sse3.hsub.ps",
923  "llvm.x86.sse3.ldu.dq",
924  "llvm.x86.sse3.monitor",
925  "llvm.x86.sse3.mwait",
926  "llvm.x86.sse41.blendpd",
927  "llvm.x86.sse41.blendps",
928  "llvm.x86.sse41.blendvpd",
929  "llvm.x86.sse41.blendvps",
930  "llvm.x86.sse41.dppd",
931  "llvm.x86.sse41.dpps",
932  "llvm.x86.sse41.extractps",
933  "llvm.x86.sse41.insertps",
934  "llvm.x86.sse41.movntdqa",
935  "llvm.x86.sse41.mpsadbw",
936  "llvm.x86.sse41.packusdw",
937  "llvm.x86.sse41.pblendvb",
938  "llvm.x86.sse41.pblendw",
939  "llvm.x86.sse41.pcmpeqq",
940  "llvm.x86.sse41.pextrb",
941  "llvm.x86.sse41.pextrd",
942  "llvm.x86.sse41.pextrq",
943  "llvm.x86.sse41.phminposuw",
944  "llvm.x86.sse41.pmaxsb",
945  "llvm.x86.sse41.pmaxsd",
946  "llvm.x86.sse41.pmaxud",
947  "llvm.x86.sse41.pmaxuw",
948  "llvm.x86.sse41.pminsb",
949  "llvm.x86.sse41.pminsd",
950  "llvm.x86.sse41.pminud",
951  "llvm.x86.sse41.pminuw",
952  "llvm.x86.sse41.pmovsxbd",
953  "llvm.x86.sse41.pmovsxbq",
954  "llvm.x86.sse41.pmovsxbw",
955  "llvm.x86.sse41.pmovsxdq",
956  "llvm.x86.sse41.pmovsxwd",
957  "llvm.x86.sse41.pmovsxwq",
958  "llvm.x86.sse41.pmovzxbd",
959  "llvm.x86.sse41.pmovzxbq",
960  "llvm.x86.sse41.pmovzxbw",
961  "llvm.x86.sse41.pmovzxdq",
962  "llvm.x86.sse41.pmovzxwd",
963  "llvm.x86.sse41.pmovzxwq",
964  "llvm.x86.sse41.pmuldq",
965  "llvm.x86.sse41.ptestc",
966  "llvm.x86.sse41.ptestnzc",
967  "llvm.x86.sse41.ptestz",
968  "llvm.x86.sse41.round.pd",
969  "llvm.x86.sse41.round.ps",
970  "llvm.x86.sse41.round.sd",
971  "llvm.x86.sse41.round.ss",
972  "llvm.x86.sse42.crc32.32.16",
973  "llvm.x86.sse42.crc32.32.32",
974  "llvm.x86.sse42.crc32.32.8",
975  "llvm.x86.sse42.crc32.64.64",
976  "llvm.x86.sse42.crc32.64.8",
977  "llvm.x86.sse42.pcmpestri128",
978  "llvm.x86.sse42.pcmpestria128",
979  "llvm.x86.sse42.pcmpestric128",
980  "llvm.x86.sse42.pcmpestrio128",
981  "llvm.x86.sse42.pcmpestris128",
982  "llvm.x86.sse42.pcmpestriz128",
983  "llvm.x86.sse42.pcmpestrm128",
984  "llvm.x86.sse42.pcmpgtq",
985  "llvm.x86.sse42.pcmpistri128",
986  "llvm.x86.sse42.pcmpistria128",
987  "llvm.x86.sse42.pcmpistric128",
988  "llvm.x86.sse42.pcmpistrio128",
989  "llvm.x86.sse42.pcmpistris128",
990  "llvm.x86.sse42.pcmpistriz128",
991  "llvm.x86.sse42.pcmpistrm128",
992  "llvm.x86.sse.add.ss",
993  "llvm.x86.sse.cmp.ps",
994  "llvm.x86.sse.cmp.ss",
995  "llvm.x86.sse.comieq.ss",
996  "llvm.x86.sse.comige.ss",
997  "llvm.x86.sse.comigt.ss",
998  "llvm.x86.sse.comile.ss",
999  "llvm.x86.sse.comilt.ss",
1000  "llvm.x86.sse.comineq.ss",
1001  "llvm.x86.sse.cvtpd2pi",
1002  "llvm.x86.sse.cvtpi2pd",
1003  "llvm.x86.sse.cvtpi2ps",
1004  "llvm.x86.sse.cvtps2pi",
1005  "llvm.x86.sse.cvtsi2ss",
1006  "llvm.x86.sse.cvtsi642ss",
1007  "llvm.x86.sse.cvtss2si",
1008  "llvm.x86.sse.cvtss2si64",
1009  "llvm.x86.sse.cvttpd2pi",
1010  "llvm.x86.sse.cvttps2pi",
1011  "llvm.x86.sse.cvttss2si",
1012  "llvm.x86.sse.cvttss2si64",
1013  "llvm.x86.sse.div.ss",
1014  "llvm.x86.sse.ldmxcsr",
1015  "llvm.x86.sse.max.ps",
1016  "llvm.x86.sse.max.ss",
1017  "llvm.x86.sse.min.ps",
1018  "llvm.x86.sse.min.ss",
1019  "llvm.x86.sse.movmsk.ps",
1020  "llvm.x86.sse.mul.ss",
1021  "llvm.x86.sse.pshuf.w",
1022  "llvm.x86.sse.rcp.ps",
1023  "llvm.x86.sse.rcp.ss",
1024  "llvm.x86.sse.rsqrt.ps",
1025  "llvm.x86.sse.rsqrt.ss",
1026  "llvm.x86.sse.sfence",
1027  "llvm.x86.sse.sqrt.ps",
1028  "llvm.x86.sse.sqrt.ss",
1029  "llvm.x86.sse.stmxcsr",
1030  "llvm.x86.sse.storeu.ps",
1031  "llvm.x86.sse.sub.ss",
1032  "llvm.x86.sse.ucomieq.ss",
1033  "llvm.x86.sse.ucomige.ss",
1034  "llvm.x86.sse.ucomigt.ss",
1035  "llvm.x86.sse.ucomile.ss",
1036  "llvm.x86.sse.ucomilt.ss",
1037  "llvm.x86.sse.ucomineq.ss",
1038  "llvm.x86.ssse3.pabs.b",
1039  "llvm.x86.ssse3.pabs.b.128",
1040  "llvm.x86.ssse3.pabs.d",
1041  "llvm.x86.ssse3.pabs.d.128",
1042  "llvm.x86.ssse3.pabs.w",
1043  "llvm.x86.ssse3.pabs.w.128",
1044  "llvm.x86.ssse3.phadd.d",
1045  "llvm.x86.ssse3.phadd.d.128",
1046  "llvm.x86.ssse3.phadd.sw",
1047  "llvm.x86.ssse3.phadd.sw.128",
1048  "llvm.x86.ssse3.phadd.w",
1049  "llvm.x86.ssse3.phadd.w.128",
1050  "llvm.x86.ssse3.phsub.d",
1051  "llvm.x86.ssse3.phsub.d.128",
1052  "llvm.x86.ssse3.phsub.sw",
1053  "llvm.x86.ssse3.phsub.sw.128",
1054  "llvm.x86.ssse3.phsub.w",
1055  "llvm.x86.ssse3.phsub.w.128",
1056  "llvm.x86.ssse3.pmadd.ub.sw",
1057  "llvm.x86.ssse3.pmadd.ub.sw.128",
1058  "llvm.x86.ssse3.pmul.hr.sw",
1059  "llvm.x86.ssse3.pmul.hr.sw.128",
1060  "llvm.x86.ssse3.pshuf.b",
1061  "llvm.x86.ssse3.pshuf.b.128",
1062  "llvm.x86.ssse3.psign.b",
1063  "llvm.x86.ssse3.psign.b.128",
1064  "llvm.x86.ssse3.psign.d",
1065  "llvm.x86.ssse3.psign.d.128",
1066  "llvm.x86.ssse3.psign.w",
1067  "llvm.x86.ssse3.psign.w.128",
1068#endif
1069
1070// Intrinsic ID to overload table
1071#ifdef GET_INTRINSIC_OVERLOAD_TABLE
1072  // Note that entry #0 is the invalid intrinsic!
1073  false,
1074  true,
1075  true,
1076  false,
1077  false,
1078  true,
1079  true,
1080  true,
1081  true,
1082  true,
1083  true,
1084  true,
1085  true,
1086  true,
1087  true,
1088  true,
1089  true,
1090  true,
1091  false,
1092  false,
1093  false,
1094  false,
1095  false,
1096  false,
1097  false,
1098  false,
1099  false,
1100  false,
1101  false,
1102  false,
1103  false,
1104  false,
1105  false,
1106  false,
1107  true,
1108  true,
1109  true,
1110  false,
1111  true,
1112  false,
1113  false,
1114  false,
1115  false,
1116  false,
1117  false,
1118  false,
1119  false,
1120  false,
1121  true,
1122  true,
1123  true,
1124  false,
1125  true,
1126  true,
1127  true,
1128  true,
1129  false,
1130  true,
1131  true,
1132  false,
1133  true,
1134  false,
1135  false,
1136  true,
1137  false,
1138  false,
1139  false,
1140  true,
1141  true,
1142  true,
1143  true,
1144  false,
1145  false,
1146  false,
1147  false,
1148  true,
1149  true,
1150  true,
1151  false,
1152  false,
1153  false,
1154  false,
1155  false,
1156  false,
1157  false,
1158  false,
1159  false,
1160  false,
1161  false,
1162  false,
1163  false,
1164  false,
1165  false,
1166  false,
1167  false,
1168  false,
1169  false,
1170  false,
1171  false,
1172  false,
1173  false,
1174  false,
1175  false,
1176  false,
1177  false,
1178  false,
1179  false,
1180  false,
1181  false,
1182  false,
1183  false,
1184  false,
1185  false,
1186  false,
1187  false,
1188  false,
1189  false,
1190  false,
1191  false,
1192  false,
1193  false,
1194  false,
1195  false,
1196  false,
1197  false,
1198  false,
1199  false,
1200  false,
1201  false,
1202  false,
1203  false,
1204  false,
1205  false,
1206  false,
1207  false,
1208  false,
1209  false,
1210  false,
1211  false,
1212  false,
1213  false,
1214  false,
1215  false,
1216  false,
1217  false,
1218  false,
1219  false,
1220  false,
1221  false,
1222  false,
1223  false,
1224  false,
1225  false,
1226  false,
1227  false,
1228  false,
1229  false,
1230  false,
1231  false,
1232  false,
1233  false,
1234  false,
1235  false,
1236  false,
1237  false,
1238  false,
1239  false,
1240  false,
1241  false,
1242  false,
1243  false,
1244  false,
1245  false,
1246  false,
1247  false,
1248  false,
1249  false,
1250  false,
1251  false,
1252  false,
1253  false,
1254  false,
1255  false,
1256  false,
1257  false,
1258  false,
1259  false,
1260  false,
1261  false,
1262  false,
1263  false,
1264  false,
1265  false,
1266  false,
1267  false,
1268  false,
1269  false,
1270  false,
1271  false,
1272  false,
1273  false,
1274  false,
1275  false,
1276  false,
1277  false,
1278  false,
1279  false,
1280  false,
1281  false,
1282  false,
1283  false,
1284  false,
1285  false,
1286  false,
1287  false,
1288  false,
1289  false,
1290  false,
1291  false,
1292  false,
1293  false,
1294  false,
1295  false,
1296  false,
1297  false,
1298  false,
1299  false,
1300  false,
1301  false,
1302  false,
1303  false,
1304  false,
1305  false,
1306  false,
1307  false,
1308  false,
1309  false,
1310  false,
1311  false,
1312  false,
1313  false,
1314  false,
1315  false,
1316  false,
1317  false,
1318  false,
1319  false,
1320  false,
1321  false,
1322  false,
1323  false,
1324  false,
1325  false,
1326  false,
1327  false,
1328  false,
1329  false,
1330  false,
1331  false,
1332  false,
1333  false,
1334  false,
1335  false,
1336  false,
1337  false,
1338  false,
1339  false,
1340  false,
1341  false,
1342  false,
1343  false,
1344  false,
1345  false,
1346  false,
1347  false,
1348  false,
1349  false,
1350  false,
1351  false,
1352  false,
1353  false,
1354  false,
1355  false,
1356  false,
1357  false,
1358  false,
1359  false,
1360  false,
1361  false,
1362  false,
1363  false,
1364  false,
1365  false,
1366  false,
1367  false,
1368  false,
1369  false,
1370  false,
1371  false,
1372  false,
1373  false,
1374  false,
1375  false,
1376  false,
1377  false,
1378  false,
1379  false,
1380  false,
1381  false,
1382  false,
1383  false,
1384  false,
1385  false,
1386  false,
1387  false,
1388  false,
1389  false,
1390  false,
1391  false,
1392  false,
1393  false,
1394  false,
1395  false,
1396  false,
1397  false,
1398  false,
1399  false,
1400  false,
1401  false,
1402  false,
1403  false,
1404  false,
1405  false,
1406  false,
1407  false,
1408  false,
1409  false,
1410  false,
1411  false,
1412  false,
1413  false,
1414  false,
1415  false,
1416  false,
1417  false,
1418  false,
1419  false,
1420  false,
1421  false,
1422  false,
1423  false,
1424  false,
1425  false,
1426  false,
1427  false,
1428  false,
1429  false,
1430  false,
1431  false,
1432  false,
1433  false,
1434  false,
1435  false,
1436  false,
1437  false,
1438  false,
1439  false,
1440  false,
1441  false,
1442  false,
1443  false,
1444  false,
1445  false,
1446  false,
1447  false,
1448  false,
1449  false,
1450  false,
1451  false,
1452  false,
1453  false,
1454  false,
1455  false,
1456  false,
1457  false,
1458  false,
1459  false,
1460  false,
1461  false,
1462  false,
1463  false,
1464  false,
1465  false,
1466  false,
1467  false,
1468  false,
1469  false,
1470  false,
1471  false,
1472  false,
1473  false,
1474  false,
1475  false,
1476  false,
1477  false,
1478  false,
1479  false,
1480  false,
1481  false,
1482  false,
1483  false,
1484  false,
1485  false,
1486  false,
1487  false,
1488  false,
1489  false,
1490  false,
1491  false,
1492  false,
1493  false,
1494  false,
1495  false,
1496  false,
1497  false,
1498  false,
1499  false,
1500  false,
1501  false,
1502  false,
1503  false,
1504  false,
1505  false,
1506  false,
1507  false,
1508  false,
1509  false,
1510  false,
1511  false,
1512  false,
1513  false,
1514  false,
1515  false,
1516  false,
1517  false,
1518  false,
1519  false,
1520  false,
1521  false,
1522  false,
1523  false,
1524  false,
1525  false,
1526  false,
1527  false,
1528  false,
1529  false,
1530  false,
1531  false,
1532  false,
1533  false,
1534  false,
1535  false,
1536  false,
1537  false,
1538  false,
1539  false,
1540  false,
1541  false,
1542  false,
1543  false,
1544  false,
1545  false,
1546  false,
1547  false,
1548  false,
1549  false,
1550  false,
1551  false,
1552  false,
1553  false,
1554  false,
1555  false,
1556  false,
1557  false,
1558  false,
1559  false,
1560  false,
1561  false,
1562  false,
1563  false,
1564  false,
1565  false,
1566  false,
1567  false,
1568  false,
1569  false,
1570  false,
1571  false,
1572  false,
1573  false,
1574  false,
1575  false,
1576  false,
1577  false,
1578  false,
1579  false,
1580  false,
1581  false,
1582  false,
1583  false,
1584  false,
1585  false,
1586  false,
1587  false,
1588  false,
1589  false,
1590  false,
1591  false,
1592  false,
1593  false,
1594  false,
1595#endif
1596
1597// Function name -> enum value recognizer code.
1598#ifdef GET_FUNCTION_RECOGNIZER
1599  StringRef NameR(Name+6, Len-6);   // Skip over 'llvm.'
1600  switch (Name[5]) {                  // Dispatch on first letter.
1601  default: break;
1602  case 'a':
1603    if (NameR.startswith("nnotation.")) return Intrinsic::annotation;
1604    switch (NameR.size()) {
1605    default: break;
1606    case 16:	 // 1 string to match.
1607      if (NameR.substr(0, 16) != "djust.trampoline")
1608        break;
1609      return Intrinsic::adjust_trampoline;	 // "djust.trampoline"
1610    }
1611    break;  // end of 'a' case.
1612  case 'b':
1613    if (NameR.startswith("swap.")) return Intrinsic::bswap;
1614    break;  // end of 'b' case.
1615  case 'c':
1616    if (NameR.startswith("onvertff.")) return Intrinsic::convertff;
1617    if (NameR.startswith("onvertfsi.")) return Intrinsic::convertfsi;
1618    if (NameR.startswith("onvertfui.")) return Intrinsic::convertfui;
1619    if (NameR.startswith("onvertsif.")) return Intrinsic::convertsif;
1620    if (NameR.startswith("onvertss.")) return Intrinsic::convertss;
1621    if (NameR.startswith("onvertsu.")) return Intrinsic::convertsu;
1622    if (NameR.startswith("onvertuif.")) return Intrinsic::convertuif;
1623    if (NameR.startswith("onvertus.")) return Intrinsic::convertus;
1624    if (NameR.startswith("onvertuu.")) return Intrinsic::convertuu;
1625    if (NameR.startswith("os.")) return Intrinsic::cos;
1626    if (NameR.startswith("tlz.")) return Intrinsic::ctlz;
1627    if (NameR.startswith("tpop.")) return Intrinsic::ctpop;
1628    if (NameR.startswith("ttz.")) return Intrinsic::cttz;
1629    switch (NameR.size()) {
1630    default: break;
1631    case 14:	 // 1 string to match.
1632      if (NameR.substr(0, 14) != "onvert.to.fp16")
1633        break;
1634      return Intrinsic::convert_to_fp16;	 // "onvert.to.fp16"
1635    case 16:	 // 1 string to match.
1636      if (NameR.substr(0, 16) != "onvert.from.fp16")
1637        break;
1638      return Intrinsic::convert_from_fp16;	 // "onvert.from.fp16"
1639    }
1640    break;  // end of 'c' case.
1641  case 'd':
1642    switch (NameR.size()) {
1643    default: break;
1644    case 8:	 // 1 string to match.
1645      if (NameR.substr(0, 8) != "bg.value")
1646        break;
1647      return Intrinsic::dbg_value;	 // "bg.value"
1648    case 10:	 // 1 string to match.
1649      if (NameR.substr(0, 10) != "bg.declare")
1650        break;
1651      return Intrinsic::dbg_declare;	 // "bg.declare"
1652    }
1653    break;  // end of 'd' case.
1654  case 'e':
1655    if (NameR.startswith("xp.")) return Intrinsic::exp;
1656    if (NameR.startswith("xp2.")) return Intrinsic::exp2;
1657    if (NameR.startswith("xpect.")) return Intrinsic::expect;
1658    switch (NameR.size()) {
1659    default: break;
1660    case 8:	 // 1 string to match.
1661      if (NameR.substr(0, 8) != "h.resume")
1662        break;
1663      return Intrinsic::eh_resume;	 // "h.resume"
1664    case 10:	 // 1 string to match.
1665      if (NameR.substr(0, 10) != "h.selector")
1666        break;
1667      return Intrinsic::eh_selector;	 // "h.selector"
1668    case 11:	 // 3 strings to match.
1669      if (NameR.substr(0, 2) != "h.")
1670        break;
1671      switch (NameR[2]) {
1672      default: break;
1673      case 'd':	 // 1 string to match.
1674        if (NameR.substr(3, 8) != "warf.cfa")
1675          break;
1676        return Intrinsic::eh_dwarf_cfa;	 // "h.dwarf.cfa"
1677      case 'e':	 // 1 string to match.
1678        if (NameR.substr(3, 8) != "xception")
1679          break;
1680        return Intrinsic::eh_exception;	 // "h.exception"
1681      case 's':	 // 1 string to match.
1682        if (NameR.substr(3, 8) != "jlj.lsda")
1683          break;
1684        return Intrinsic::eh_sjlj_lsda;	 // "h.sjlj.lsda"
1685      }
1686      break;
1687    case 12:	 // 3 strings to match.
1688      if (NameR.substr(0, 2) != "h.")
1689        break;
1690      switch (NameR[2]) {
1691      default: break;
1692      case 'r':	 // 2 strings to match.
1693        if (NameR.substr(3, 7) != "eturn.i")
1694          break;
1695        switch (NameR[10]) {
1696        default: break;
1697        case '3':	 // 1 string to match.
1698          if (NameR[11] != '2')
1699            break;
1700          return Intrinsic::eh_return_i32;	 // "h.return.i32"
1701        case '6':	 // 1 string to match.
1702          if (NameR[11] != '4')
1703            break;
1704          return Intrinsic::eh_return_i64;	 // "h.return.i64"
1705        }
1706        break;
1707      case 't':	 // 1 string to match.
1708        if (NameR.substr(3, 9) != "ypeid.for")
1709          break;
1710        return Intrinsic::eh_typeid_for;	 // "h.typeid.for"
1711      }
1712      break;
1713    case 13:	 // 2 strings to match.
1714      if (NameR.substr(0, 2) != "h.")
1715        break;
1716      switch (NameR[2]) {
1717      default: break;
1718      case 's':	 // 1 string to match.
1719        if (NameR.substr(3, 10) != "jlj.setjmp")
1720          break;
1721        return Intrinsic::eh_sjlj_setjmp;	 // "h.sjlj.setjmp"
1722      case 'u':	 // 1 string to match.
1723        if (NameR.substr(3, 10) != "nwind.init")
1724          break;
1725        return Intrinsic::eh_unwind_init;	 // "h.unwind.init"
1726      }
1727      break;
1728    case 14:	 // 1 string to match.
1729      if (NameR.substr(0, 14) != "h.sjlj.longjmp")
1730        break;
1731      return Intrinsic::eh_sjlj_longjmp;	 // "h.sjlj.longjmp"
1732    case 15:	 // 1 string to match.
1733      if (NameR.substr(0, 15) != "h.sjlj.callsite")
1734        break;
1735      return Intrinsic::eh_sjlj_callsite;	 // "h.sjlj.callsite"
1736    case 21:	 // 1 string to match.
1737      if (NameR.substr(0, 21) != "h.sjlj.dispatch.setup")
1738        break;
1739      return Intrinsic::eh_sjlj_dispatch_setup;	 // "h.sjlj.dispatch.setup"
1740    case 22:	 // 1 string to match.
1741      if (NameR.substr(0, 22) != "h.sjlj.functioncontext")
1742        break;
1743      return Intrinsic::eh_sjlj_functioncontext;	 // "h.sjlj.functioncontext"
1744    }
1745    break;  // end of 'e' case.
1746  case 'f':
1747    if (NameR.startswith("ma.")) return Intrinsic::fma;
1748    switch (NameR.size()) {
1749    default: break;
1750    case 9:	 // 1 string to match.
1751      if (NameR.substr(0, 9) != "lt.rounds")
1752        break;
1753      return Intrinsic::flt_rounds;	 // "lt.rounds"
1754    case 11:	 // 1 string to match.
1755      if (NameR.substr(0, 11) != "rameaddress")
1756        break;
1757      return Intrinsic::frameaddress;	 // "rameaddress"
1758    }
1759    break;  // end of 'f' case.
1760  case 'g':
1761    switch (NameR.size()) {
1762    default: break;
1763    case 5:	 // 2 strings to match.
1764      if (NameR.substr(0, 2) != "cr")
1765        break;
1766      switch (NameR[2]) {
1767      default: break;
1768      case 'e':	 // 1 string to match.
1769        if (NameR.substr(3, 2) != "ad")
1770          break;
1771        return Intrinsic::gcread;	 // "cread"
1772      case 'o':	 // 1 string to match.
1773        if (NameR.substr(3, 2) != "ot")
1774          break;
1775        return Intrinsic::gcroot;	 // "croot"
1776      }
1777      break;
1778    case 6:	 // 1 string to match.
1779      if (NameR.substr(0, 6) != "cwrite")
1780        break;
1781      return Intrinsic::gcwrite;	 // "cwrite"
1782    }
1783    break;  // end of 'g' case.
1784  case 'i':
1785    switch (NameR.size()) {
1786    default: break;
1787    case 12:	 // 1 string to match.
1788      if (NameR.substr(0, 12) != "nvariant.end")
1789        break;
1790      return Intrinsic::invariant_end;	 // "nvariant.end"
1791    case 14:	 // 2 strings to match.
1792      if (NameR[0] != 'n')
1793        break;
1794      switch (NameR[1]) {
1795      default: break;
1796      case 'i':	 // 1 string to match.
1797        if (NameR.substr(2, 12) != "t.trampoline")
1798          break;
1799        return Intrinsic::init_trampoline;	 // "nit.trampoline"
1800      case 'v':	 // 1 string to match.
1801        if (NameR.substr(2, 12) != "ariant.start")
1802          break;
1803        return Intrinsic::invariant_start;	 // "nvariant.start"
1804      }
1805      break;
1806    }
1807    break;  // end of 'i' case.
1808  case 'l':
1809    if (NameR.startswith("og.")) return Intrinsic::log;
1810    if (NameR.startswith("og10.")) return Intrinsic::log10;
1811    if (NameR.startswith("og2.")) return Intrinsic::log2;
1812    switch (NameR.size()) {
1813    default: break;
1814    case 6:	 // 1 string to match.
1815      if (NameR.substr(0, 6) != "ongjmp")
1816        break;
1817      return Intrinsic::longjmp;	 // "ongjmp"
1818    case 11:	 // 1 string to match.
1819      if (NameR.substr(0, 11) != "ifetime.end")
1820        break;
1821      return Intrinsic::lifetime_end;	 // "ifetime.end"
1822    case 13:	 // 1 string to match.
1823      if (NameR.substr(0, 13) != "ifetime.start")
1824        break;
1825      return Intrinsic::lifetime_start;	 // "ifetime.start"
1826    }
1827    break;  // end of 'l' case.
1828  case 'm':
1829    if (NameR.startswith("emcpy.")) return Intrinsic::memcpy;
1830    if (NameR.startswith("emmove.")) return Intrinsic::memmove;
1831    if (NameR.startswith("emset.")) return Intrinsic::memset;
1832    break;  // end of 'm' case.
1833  case 'o':
1834    if (NameR.startswith("bjectsize.")) return Intrinsic::objectsize;
1835    break;  // end of 'o' case.
1836  case 'p':
1837    if (NameR.startswith("ow.")) return Intrinsic::pow;
1838    if (NameR.startswith("owi.")) return Intrinsic::powi;
1839    if (NameR.startswith("tr.annotation.")) return Intrinsic::ptr_annotation;
1840    switch (NameR.size()) {
1841    default: break;
1842    case 7:	 // 2 strings to match.
1843      switch (NameR[0]) {
1844      default: break;
1845      case 'c':	 // 1 string to match.
1846        if (NameR.substr(1, 6) != "marker")
1847          break;
1848        return Intrinsic::pcmarker;	 // "cmarker"
1849      case 'r':	 // 1 string to match.
1850        if (NameR.substr(1, 6) != "efetch")
1851          break;
1852        return Intrinsic::prefetch;	 // "refetch"
1853      }
1854      break;
1855    }
1856    break;  // end of 'p' case.
1857  case 'r':
1858    switch (NameR.size()) {
1859    default: break;
1860    case 12:	 // 1 string to match.
1861      if (NameR.substr(0, 12) != "eturnaddress")
1862        break;
1863      return Intrinsic::returnaddress;	 // "eturnaddress"
1864    case 15:	 // 1 string to match.
1865      if (NameR.substr(0, 15) != "eadcyclecounter")
1866        break;
1867      return Intrinsic::readcyclecounter;	 // "eadcyclecounter"
1868    }
1869    break;  // end of 'r' case.
1870  case 's':
1871    if (NameR.startswith("add.with.overflow.")) return Intrinsic::sadd_with_overflow;
1872    if (NameR.startswith("in.")) return Intrinsic::sin;
1873    if (NameR.startswith("mul.with.overflow.")) return Intrinsic::smul_with_overflow;
1874    if (NameR.startswith("qrt.")) return Intrinsic::sqrt;
1875    if (NameR.startswith("sub.with.overflow.")) return Intrinsic::ssub_with_overflow;
1876    switch (NameR.size()) {
1877    default: break;
1878    case 5:	 // 1 string to match.
1879      if (NameR.substr(0, 5) != "etjmp")
1880        break;
1881      return Intrinsic::setjmp;	 // "etjmp"
1882    case 8:	 // 2 strings to match.
1883      switch (NameR[0]) {
1884      default: break;
1885      case 'i':	 // 1 string to match.
1886        if (NameR.substr(1, 7) != "gsetjmp")
1887          break;
1888        return Intrinsic::sigsetjmp;	 // "igsetjmp"
1889      case 't':	 // 1 string to match.
1890        if (NameR.substr(1, 7) != "acksave")
1891          break;
1892        return Intrinsic::stacksave;	 // "tacksave"
1893      }
1894      break;
1895    case 9:	 // 1 string to match.
1896      if (NameR.substr(0, 9) != "iglongjmp")
1897        break;
1898      return Intrinsic::siglongjmp;	 // "iglongjmp"
1899    case 11:	 // 1 string to match.
1900      if (NameR.substr(0, 11) != "tackrestore")
1901        break;
1902      return Intrinsic::stackrestore;	 // "tackrestore"
1903    case 13:	 // 1 string to match.
1904      if (NameR.substr(0, 13) != "tackprotector")
1905        break;
1906      return Intrinsic::stackprotector;	 // "tackprotector"
1907    }
1908    break;  // end of 's' case.
1909  case 't':
1910    switch (NameR.size()) {
1911    default: break;
1912    case 3:	 // 1 string to match.
1913      if (NameR.substr(0, 3) != "rap")
1914        break;
1915      return Intrinsic::trap;	 // "rap"
1916    }
1917    break;  // end of 't' case.
1918  case 'u':
1919    if (NameR.startswith("add.with.overflow.")) return Intrinsic::uadd_with_overflow;
1920    if (NameR.startswith("mul.with.overflow.")) return Intrinsic::umul_with_overflow;
1921    if (NameR.startswith("sub.with.overflow.")) return Intrinsic::usub_with_overflow;
1922    break;  // end of 'u' case.
1923  case 'v':
1924    switch (NameR.size()) {
1925    default: break;
1926    case 5:	 // 1 string to match.
1927      if (NameR.substr(0, 5) != "a_end")
1928        break;
1929      return Intrinsic::vaend;	 // "a_end"
1930    case 6:	 // 1 string to match.
1931      if (NameR.substr(0, 6) != "a_copy")
1932        break;
1933      return Intrinsic::vacopy;	 // "a_copy"
1934    case 7:	 // 1 string to match.
1935      if (NameR.substr(0, 7) != "a_start")
1936        break;
1937      return Intrinsic::vastart;	 // "a_start"
1938    case 13:	 // 1 string to match.
1939      if (NameR.substr(0, 13) != "ar.annotation")
1940        break;
1941      return Intrinsic::var_annotation;	 // "ar.annotation"
1942    }
1943    break;  // end of 'v' case.
1944  case 'x':
1945    switch (NameR.size()) {
1946    default: break;
1947    case 6:	 // 1 string to match.
1948      if (NameR.substr(0, 6) != "86.int")
1949        break;
1950      return Intrinsic::x86_int;	 // "86.int"
1951    case 10:	 // 1 string to match.
1952      if (NameR.substr(0, 10) != "86.mmx.por")
1953        break;
1954      return Intrinsic::x86_mmx_por;	 // "86.mmx.por"
1955    case 11:	 // 3 strings to match.
1956      if (NameR.substr(0, 7) != "86.mmx.")
1957        break;
1958      switch (NameR[7]) {
1959      default: break;
1960      case 'e':	 // 1 string to match.
1961        if (NameR.substr(8, 3) != "mms")
1962          break;
1963        return Intrinsic::x86_mmx_emms;	 // "86.mmx.emms"
1964      case 'p':	 // 2 strings to match.
1965        switch (NameR[8]) {
1966        default: break;
1967        case 'a':	 // 1 string to match.
1968          if (NameR.substr(9, 2) != "nd")
1969            break;
1970          return Intrinsic::x86_mmx_pand;	 // "86.mmx.pand"
1971        case 'x':	 // 1 string to match.
1972          if (NameR.substr(9, 2) != "or")
1973            break;
1974          return Intrinsic::x86_mmx_pxor;	 // "86.mmx.pxor"
1975        }
1976        break;
1977      }
1978      break;
1979    case 12:	 // 2 strings to match.
1980      if (NameR.substr(0, 7) != "86.mmx.")
1981        break;
1982      switch (NameR[7]) {
1983      default: break;
1984      case 'f':	 // 1 string to match.
1985        if (NameR.substr(8, 4) != "emms")
1986          break;
1987        return Intrinsic::x86_mmx_femms;	 // "86.mmx.femms"
1988      case 'p':	 // 1 string to match.
1989        if (NameR.substr(8, 4) != "andn")
1990          break;
1991        return Intrinsic::x86_mmx_pandn;	 // "86.mmx.pandn"
1992      }
1993      break;
1994    case 13:	 // 34 strings to match.
1995      if (NameR.substr(0, 3) != "86.")
1996        break;
1997      switch (NameR[3]) {
1998      default: break;
1999      case 'm':	 // 18 strings to match.
2000        if (NameR.substr(4, 4) != "mx.p")
2001          break;
2002        switch (NameR[8]) {
2003        default: break;
2004        case 'a':	 // 6 strings to match.
2005          switch (NameR[9]) {
2006          default: break;
2007          case 'd':	 // 4 strings to match.
2008            if (NameR.substr(10, 2) != "d.")
2009              break;
2010            switch (NameR[12]) {
2011            default: break;
2012            case 'b':	 // 1 string to match.
2013              return Intrinsic::x86_mmx_padd_b;	 // "86.mmx.padd.b"
2014            case 'd':	 // 1 string to match.
2015              return Intrinsic::x86_mmx_padd_d;	 // "86.mmx.padd.d"
2016            case 'q':	 // 1 string to match.
2017              return Intrinsic::x86_mmx_padd_q;	 // "86.mmx.padd.q"
2018            case 'w':	 // 1 string to match.
2019              return Intrinsic::x86_mmx_padd_w;	 // "86.mmx.padd.w"
2020            }
2021            break;
2022          case 'v':	 // 2 strings to match.
2023            if (NameR.substr(10, 2) != "g.")
2024              break;
2025            switch (NameR[12]) {
2026            default: break;
2027            case 'b':	 // 1 string to match.
2028              return Intrinsic::x86_mmx_pavg_b;	 // "86.mmx.pavg.b"
2029            case 'w':	 // 1 string to match.
2030              return Intrinsic::x86_mmx_pavg_w;	 // "86.mmx.pavg.w"
2031            }
2032            break;
2033          }
2034          break;
2035        case 's':	 // 12 strings to match.
2036          switch (NameR[9]) {
2037          default: break;
2038          case 'l':	 // 3 strings to match.
2039            if (NameR.substr(10, 2) != "l.")
2040              break;
2041            switch (NameR[12]) {
2042            default: break;
2043            case 'd':	 // 1 string to match.
2044              return Intrinsic::x86_mmx_psll_d;	 // "86.mmx.psll.d"
2045            case 'q':	 // 1 string to match.
2046              return Intrinsic::x86_mmx_psll_q;	 // "86.mmx.psll.q"
2047            case 'w':	 // 1 string to match.
2048              return Intrinsic::x86_mmx_psll_w;	 // "86.mmx.psll.w"
2049            }
2050            break;
2051          case 'r':	 // 5 strings to match.
2052            switch (NameR[10]) {
2053            default: break;
2054            case 'a':	 // 2 strings to match.
2055              if (NameR[11] != '.')
2056                break;
2057              switch (NameR[12]) {
2058              default: break;
2059              case 'd':	 // 1 string to match.
2060                return Intrinsic::x86_mmx_psra_d;	 // "86.mmx.psra.d"
2061              case 'w':	 // 1 string to match.
2062                return Intrinsic::x86_mmx_psra_w;	 // "86.mmx.psra.w"
2063              }
2064              break;
2065            case 'l':	 // 3 strings to match.
2066              if (NameR[11] != '.')
2067                break;
2068              switch (NameR[12]) {
2069              default: break;
2070              case 'd':	 // 1 string to match.
2071                return Intrinsic::x86_mmx_psrl_d;	 // "86.mmx.psrl.d"
2072              case 'q':	 // 1 string to match.
2073                return Intrinsic::x86_mmx_psrl_q;	 // "86.mmx.psrl.q"
2074              case 'w':	 // 1 string to match.
2075                return Intrinsic::x86_mmx_psrl_w;	 // "86.mmx.psrl.w"
2076              }
2077              break;
2078            }
2079            break;
2080          case 'u':	 // 4 strings to match.
2081            if (NameR.substr(10, 2) != "b.")
2082              break;
2083            switch (NameR[12]) {
2084            default: break;
2085            case 'b':	 // 1 string to match.
2086              return Intrinsic::x86_mmx_psub_b;	 // "86.mmx.psub.b"
2087            case 'd':	 // 1 string to match.
2088              return Intrinsic::x86_mmx_psub_d;	 // "86.mmx.psub.d"
2089            case 'q':	 // 1 string to match.
2090              return Intrinsic::x86_mmx_psub_q;	 // "86.mmx.psub.q"
2091            case 'w':	 // 1 string to match.
2092              return Intrinsic::x86_mmx_psub_w;	 // "86.mmx.psub.w"
2093            }
2094            break;
2095          }
2096          break;
2097        }
2098        break;
2099      case 's':	 // 16 strings to match.
2100        if (NameR.substr(4, 2) != "se")
2101          break;
2102        switch (NameR[6]) {
2103        default: break;
2104        case '.':	 // 13 strings to match.
2105          switch (NameR[7]) {
2106          default: break;
2107          case 'a':	 // 1 string to match.
2108            if (NameR.substr(8, 5) != "dd.ss")
2109              break;
2110            return Intrinsic::x86_sse_add_ss;	 // "86.sse.add.ss"
2111          case 'c':	 // 2 strings to match.
2112            if (NameR.substr(8, 3) != "mp.")
2113              break;
2114            switch (NameR[11]) {
2115            default: break;
2116            case 'p':	 // 1 string to match.
2117              if (NameR[12] != 's')
2118                break;
2119              return Intrinsic::x86_sse_cmp_ps;	 // "86.sse.cmp.ps"
2120            case 's':	 // 1 string to match.
2121              if (NameR[12] != 's')
2122                break;
2123              return Intrinsic::x86_sse_cmp_ss;	 // "86.sse.cmp.ss"
2124            }
2125            break;
2126          case 'd':	 // 1 string to match.
2127            if (NameR.substr(8, 5) != "iv.ss")
2128              break;
2129            return Intrinsic::x86_sse_div_ss;	 // "86.sse.div.ss"
2130          case 'm':	 // 5 strings to match.
2131            switch (NameR[8]) {
2132            default: break;
2133            case 'a':	 // 2 strings to match.
2134              if (NameR.substr(9, 2) != "x.")
2135                break;
2136              switch (NameR[11]) {
2137              default: break;
2138              case 'p':	 // 1 string to match.
2139                if (NameR[12] != 's')
2140                  break;
2141                return Intrinsic::x86_sse_max_ps;	 // "86.sse.max.ps"
2142              case 's':	 // 1 string to match.
2143                if (NameR[12] != 's')
2144                  break;
2145                return Intrinsic::x86_sse_max_ss;	 // "86.sse.max.ss"
2146              }
2147              break;
2148            case 'i':	 // 2 strings to match.
2149              if (NameR.substr(9, 2) != "n.")
2150                break;
2151              switch (NameR[11]) {
2152              default: break;
2153              case 'p':	 // 1 string to match.
2154                if (NameR[12] != 's')
2155                  break;
2156                return Intrinsic::x86_sse_min_ps;	 // "86.sse.min.ps"
2157              case 's':	 // 1 string to match.
2158                if (NameR[12] != 's')
2159                  break;
2160                return Intrinsic::x86_sse_min_ss;	 // "86.sse.min.ss"
2161              }
2162              break;
2163            case 'u':	 // 1 string to match.
2164              if (NameR.substr(9, 4) != "l.ss")
2165                break;
2166              return Intrinsic::x86_sse_mul_ss;	 // "86.sse.mul.ss"
2167            }
2168            break;
2169          case 'r':	 // 2 strings to match.
2170            if (NameR.substr(8, 3) != "cp.")
2171              break;
2172            switch (NameR[11]) {
2173            default: break;
2174            case 'p':	 // 1 string to match.
2175              if (NameR[12] != 's')
2176                break;
2177              return Intrinsic::x86_sse_rcp_ps;	 // "86.sse.rcp.ps"
2178            case 's':	 // 1 string to match.
2179              if (NameR[12] != 's')
2180                break;
2181              return Intrinsic::x86_sse_rcp_ss;	 // "86.sse.rcp.ss"
2182            }
2183            break;
2184          case 's':	 // 2 strings to match.
2185            switch (NameR[8]) {
2186            default: break;
2187            case 'f':	 // 1 string to match.
2188              if (NameR.substr(9, 4) != "ence")
2189                break;
2190              return Intrinsic::x86_sse_sfence;	 // "86.sse.sfence"
2191            case 'u':	 // 1 string to match.
2192              if (NameR.substr(9, 4) != "b.ss")
2193                break;
2194              return Intrinsic::x86_sse_sub_ss;	 // "86.sse.sub.ss"
2195            }
2196            break;
2197          }
2198          break;
2199        case '3':	 // 1 string to match.
2200          if (NameR.substr(7, 6) != ".mwait")
2201            break;
2202          return Intrinsic::x86_sse3_mwait;	 // "86.sse3.mwait"
2203        case '4':	 // 2 strings to match.
2204          if (NameR.substr(7, 5) != "1.dpp")
2205            break;
2206          switch (NameR[12]) {
2207          default: break;
2208          case 'd':	 // 1 string to match.
2209            return Intrinsic::x86_sse41_dppd;	 // "86.sse41.dppd"
2210          case 's':	 // 1 string to match.
2211            return Intrinsic::x86_sse41_dpps;	 // "86.sse41.dpps"
2212          }
2213          break;
2214        }
2215        break;
2216      }
2217      break;
2218    case 14:	 // 58 strings to match.
2219      if (NameR.substr(0, 3) != "86.")
2220        break;
2221      switch (NameR[3]) {
2222      default: break;
2223      case '3':	 // 9 strings to match.
2224        if (NameR.substr(4, 6) != "dnow.p")
2225          break;
2226        switch (NameR[10]) {
2227        default: break;
2228        case 'f':	 // 8 strings to match.
2229          switch (NameR[11]) {
2230          default: break;
2231          case '2':	 // 1 string to match.
2232            if (NameR.substr(12, 2) != "id")
2233              break;
2234            return Intrinsic::x86_3dnow_pf2id;	 // "86.3dnow.pf2id"
2235          case 'a':	 // 2 strings to match.
2236            switch (NameR[12]) {
2237            default: break;
2238            case 'c':	 // 1 string to match.
2239              if (NameR[13] != 'c')
2240                break;
2241              return Intrinsic::x86_3dnow_pfacc;	 // "86.3dnow.pfacc"
2242            case 'd':	 // 1 string to match.
2243              if (NameR[13] != 'd')
2244                break;
2245              return Intrinsic::x86_3dnow_pfadd;	 // "86.3dnow.pfadd"
2246            }
2247            break;
2248          case 'm':	 // 3 strings to match.
2249            switch (NameR[12]) {
2250            default: break;
2251            case 'a':	 // 1 string to match.
2252              if (NameR[13] != 'x')
2253                break;
2254              return Intrinsic::x86_3dnow_pfmax;	 // "86.3dnow.pfmax"
2255            case 'i':	 // 1 string to match.
2256              if (NameR[13] != 'n')
2257                break;
2258              return Intrinsic::x86_3dnow_pfmin;	 // "86.3dnow.pfmin"
2259            case 'u':	 // 1 string to match.
2260              if (NameR[13] != 'l')
2261                break;
2262              return Intrinsic::x86_3dnow_pfmul;	 // "86.3dnow.pfmul"
2263            }
2264            break;
2265          case 'r':	 // 1 string to match.
2266            if (NameR.substr(12, 2) != "cp")
2267              break;
2268            return Intrinsic::x86_3dnow_pfrcp;	 // "86.3dnow.pfrcp"
2269          case 's':	 // 1 string to match.
2270            if (NameR.substr(12, 2) != "ub")
2271              break;
2272            return Intrinsic::x86_3dnow_pfsub;	 // "86.3dnow.pfsub"
2273          }
2274          break;
2275        case 'i':	 // 1 string to match.
2276          if (NameR.substr(11, 3) != "2fd")
2277            break;
2278          return Intrinsic::x86_3dnow_pi2fd;	 // "86.3dnow.pi2fd"
2279        }
2280        break;
2281      case 'm':	 // 21 strings to match.
2282        if (NameR.substr(4, 4) != "mx.p")
2283          break;
2284        switch (NameR[8]) {
2285        default: break;
2286        case 'a':	 // 2 strings to match.
2287          if (NameR.substr(9, 4) != "dds.")
2288            break;
2289          switch (NameR[13]) {
2290          default: break;
2291          case 'b':	 // 1 string to match.
2292            return Intrinsic::x86_mmx_padds_b;	 // "86.mmx.padds.b"
2293          case 'w':	 // 1 string to match.
2294            return Intrinsic::x86_mmx_padds_w;	 // "86.mmx.padds.w"
2295          }
2296          break;
2297        case 'e':	 // 1 string to match.
2298          if (NameR.substr(9, 5) != "xtr.w")
2299            break;
2300          return Intrinsic::x86_mmx_pextr_w;	 // "86.mmx.pextr.w"
2301        case 'i':	 // 1 string to match.
2302          if (NameR.substr(9, 5) != "nsr.w")
2303            break;
2304          return Intrinsic::x86_mmx_pinsr_w;	 // "86.mmx.pinsr.w"
2305        case 'm':	 // 6 strings to match.
2306          switch (NameR[9]) {
2307          default: break;
2308          case 'a':	 // 2 strings to match.
2309            if (NameR[10] != 'x')
2310              break;
2311            switch (NameR[11]) {
2312            default: break;
2313            case 's':	 // 1 string to match.
2314              if (NameR.substr(12, 2) != ".w")
2315                break;
2316              return Intrinsic::x86_mmx_pmaxs_w;	 // "86.mmx.pmaxs.w"
2317            case 'u':	 // 1 string to match.
2318              if (NameR.substr(12, 2) != ".b")
2319                break;
2320              return Intrinsic::x86_mmx_pmaxu_b;	 // "86.mmx.pmaxu.b"
2321            }
2322            break;
2323          case 'i':	 // 2 strings to match.
2324            if (NameR[10] != 'n')
2325              break;
2326            switch (NameR[11]) {
2327            default: break;
2328            case 's':	 // 1 string to match.
2329              if (NameR.substr(12, 2) != ".w")
2330                break;
2331              return Intrinsic::x86_mmx_pmins_w;	 // "86.mmx.pmins.w"
2332            case 'u':	 // 1 string to match.
2333              if (NameR.substr(12, 2) != ".b")
2334                break;
2335              return Intrinsic::x86_mmx_pminu_b;	 // "86.mmx.pminu.b"
2336            }
2337            break;
2338          case 'u':	 // 2 strings to match.
2339            if (NameR[10] != 'l')
2340              break;
2341            switch (NameR[11]) {
2342            default: break;
2343            case 'h':	 // 1 string to match.
2344              if (NameR.substr(12, 2) != ".w")
2345                break;
2346              return Intrinsic::x86_mmx_pmulh_w;	 // "86.mmx.pmulh.w"
2347            case 'l':	 // 1 string to match.
2348              if (NameR.substr(12, 2) != ".w")
2349                break;
2350              return Intrinsic::x86_mmx_pmull_w;	 // "86.mmx.pmull.w"
2351            }
2352            break;
2353          }
2354          break;
2355        case 's':	 // 11 strings to match.
2356          switch (NameR[9]) {
2357          default: break;
2358          case 'a':	 // 1 string to match.
2359            if (NameR.substr(10, 4) != "d.bw")
2360              break;
2361            return Intrinsic::x86_mmx_psad_bw;	 // "86.mmx.psad.bw"
2362          case 'l':	 // 3 strings to match.
2363            if (NameR.substr(10, 3) != "li.")
2364              break;
2365            switch (NameR[13]) {
2366            default: break;
2367            case 'd':	 // 1 string to match.
2368              return Intrinsic::x86_mmx_pslli_d;	 // "86.mmx.pslli.d"
2369            case 'q':	 // 1 string to match.
2370              return Intrinsic::x86_mmx_pslli_q;	 // "86.mmx.pslli.q"
2371            case 'w':	 // 1 string to match.
2372              return Intrinsic::x86_mmx_pslli_w;	 // "86.mmx.pslli.w"
2373            }
2374            break;
2375          case 'r':	 // 5 strings to match.
2376            switch (NameR[10]) {
2377            default: break;
2378            case 'a':	 // 2 strings to match.
2379              if (NameR.substr(11, 2) != "i.")
2380                break;
2381              switch (NameR[13]) {
2382              default: break;
2383              case 'd':	 // 1 string to match.
2384                return Intrinsic::x86_mmx_psrai_d;	 // "86.mmx.psrai.d"
2385              case 'w':	 // 1 string to match.
2386                return Intrinsic::x86_mmx_psrai_w;	 // "86.mmx.psrai.w"
2387              }
2388              break;
2389            case 'l':	 // 3 strings to match.
2390              if (NameR.substr(11, 2) != "i.")
2391                break;
2392              switch (NameR[13]) {
2393              default: break;
2394              case 'd':	 // 1 string to match.
2395                return Intrinsic::x86_mmx_psrli_d;	 // "86.mmx.psrli.d"
2396              case 'q':	 // 1 string to match.
2397                return Intrinsic::x86_mmx_psrli_q;	 // "86.mmx.psrli.q"
2398              case 'w':	 // 1 string to match.
2399                return Intrinsic::x86_mmx_psrli_w;	 // "86.mmx.psrli.w"
2400              }
2401              break;
2402            }
2403            break;
2404          case 'u':	 // 2 strings to match.
2405            if (NameR.substr(10, 3) != "bs.")
2406              break;
2407            switch (NameR[13]) {
2408            default: break;
2409            case 'b':	 // 1 string to match.
2410              return Intrinsic::x86_mmx_psubs_b;	 // "86.mmx.psubs.b"
2411            case 'w':	 // 1 string to match.
2412              return Intrinsic::x86_mmx_psubs_w;	 // "86.mmx.psubs.w"
2413            }
2414            break;
2415          }
2416          break;
2417        }
2418        break;
2419      case 's':	 // 28 strings to match.
2420        if (NameR.substr(4, 2) != "se")
2421          break;
2422        switch (NameR[6]) {
2423        default: break;
2424        case '.':	 // 5 strings to match.
2425          switch (NameR[7]) {
2426          default: break;
2427          case 'l':	 // 1 string to match.
2428            if (NameR.substr(8, 6) != "dmxcsr")
2429              break;
2430            return Intrinsic::x86_sse_ldmxcsr;	 // "86.sse.ldmxcsr"
2431          case 'p':	 // 1 string to match.
2432            if (NameR.substr(8, 6) != "shuf.w")
2433              break;
2434            return Intrinsic::x86_sse_pshuf_w;	 // "86.sse.pshuf.w"
2435          case 's':	 // 3 strings to match.
2436            switch (NameR[8]) {
2437            default: break;
2438            case 'q':	 // 2 strings to match.
2439              if (NameR.substr(9, 3) != "rt.")
2440                break;
2441              switch (NameR[12]) {
2442              default: break;
2443              case 'p':	 // 1 string to match.
2444                if (NameR[13] != 's')
2445                  break;
2446                return Intrinsic::x86_sse_sqrt_ps;	 // "86.sse.sqrt.ps"
2447              case 's':	 // 1 string to match.
2448                if (NameR[13] != 's')
2449                  break;
2450                return Intrinsic::x86_sse_sqrt_ss;	 // "86.sse.sqrt.ss"
2451              }
2452              break;
2453            case 't':	 // 1 string to match.
2454              if (NameR.substr(9, 5) != "mxcsr")
2455                break;
2456              return Intrinsic::x86_sse_stmxcsr;	 // "86.sse.stmxcsr"
2457            }
2458            break;
2459          }
2460          break;
2461        case '2':	 // 22 strings to match.
2462          if (NameR[7] != '.')
2463            break;
2464          switch (NameR[8]) {
2465          default: break;
2466          case 'a':	 // 1 string to match.
2467            if (NameR.substr(9, 5) != "dd.sd")
2468              break;
2469            return Intrinsic::x86_sse2_add_sd;	 // "86.sse2.add.sd"
2470          case 'c':	 // 2 strings to match.
2471            if (NameR.substr(9, 3) != "mp.")
2472              break;
2473            switch (NameR[12]) {
2474            default: break;
2475            case 'p':	 // 1 string to match.
2476              if (NameR[13] != 'd')
2477                break;
2478              return Intrinsic::x86_sse2_cmp_pd;	 // "86.sse2.cmp.pd"
2479            case 's':	 // 1 string to match.
2480              if (NameR[13] != 'd')
2481                break;
2482              return Intrinsic::x86_sse2_cmp_sd;	 // "86.sse2.cmp.sd"
2483            }
2484            break;
2485          case 'd':	 // 1 string to match.
2486            if (NameR.substr(9, 5) != "iv.sd")
2487              break;
2488            return Intrinsic::x86_sse2_div_sd;	 // "86.sse2.div.sd"
2489          case 'l':	 // 1 string to match.
2490            if (NameR.substr(9, 5) != "fence")
2491              break;
2492            return Intrinsic::x86_sse2_lfence;	 // "86.sse2.lfence"
2493          case 'm':	 // 6 strings to match.
2494            switch (NameR[9]) {
2495            default: break;
2496            case 'a':	 // 2 strings to match.
2497              if (NameR.substr(10, 2) != "x.")
2498                break;
2499              switch (NameR[12]) {
2500              default: break;
2501              case 'p':	 // 1 string to match.
2502                if (NameR[13] != 'd')
2503                  break;
2504                return Intrinsic::x86_sse2_max_pd;	 // "86.sse2.max.pd"
2505              case 's':	 // 1 string to match.
2506                if (NameR[13] != 'd')
2507                  break;
2508                return Intrinsic::x86_sse2_max_sd;	 // "86.sse2.max.sd"
2509              }
2510              break;
2511            case 'f':	 // 1 string to match.
2512              if (NameR.substr(10, 4) != "ence")
2513                break;
2514              return Intrinsic::x86_sse2_mfence;	 // "86.sse2.mfence"
2515            case 'i':	 // 2 strings to match.
2516              if (NameR.substr(10, 2) != "n.")
2517                break;
2518              switch (NameR[12]) {
2519              default: break;
2520              case 'p':	 // 1 string to match.
2521                if (NameR[13] != 'd')
2522                  break;
2523                return Intrinsic::x86_sse2_min_pd;	 // "86.sse2.min.pd"
2524              case 's':	 // 1 string to match.
2525                if (NameR[13] != 'd')
2526                  break;
2527                return Intrinsic::x86_sse2_min_sd;	 // "86.sse2.min.sd"
2528              }
2529              break;
2530            case 'u':	 // 1 string to match.
2531              if (NameR.substr(10, 4) != "l.sd")
2532                break;
2533              return Intrinsic::x86_sse2_mul_sd;	 // "86.sse2.mul.sd"
2534            }
2535            break;
2536          case 'p':	 // 10 strings to match.
2537            switch (NameR[9]) {
2538            default: break;
2539            case 'a':	 // 2 strings to match.
2540              if (NameR.substr(10, 3) != "vg.")
2541                break;
2542              switch (NameR[13]) {
2543              default: break;
2544              case 'b':	 // 1 string to match.
2545                return Intrinsic::x86_sse2_pavg_b;	 // "86.sse2.pavg.b"
2546              case 'w':	 // 1 string to match.
2547                return Intrinsic::x86_sse2_pavg_w;	 // "86.sse2.pavg.w"
2548              }
2549              break;
2550            case 's':	 // 8 strings to match.
2551              switch (NameR[10]) {
2552              default: break;
2553              case 'l':	 // 3 strings to match.
2554                if (NameR.substr(11, 2) != "l.")
2555                  break;
2556                switch (NameR[13]) {
2557                default: break;
2558                case 'd':	 // 1 string to match.
2559                  return Intrinsic::x86_sse2_psll_d;	 // "86.sse2.psll.d"
2560                case 'q':	 // 1 string to match.
2561                  return Intrinsic::x86_sse2_psll_q;	 // "86.sse2.psll.q"
2562                case 'w':	 // 1 string to match.
2563                  return Intrinsic::x86_sse2_psll_w;	 // "86.sse2.psll.w"
2564                }
2565                break;
2566              case 'r':	 // 5 strings to match.
2567                switch (NameR[11]) {
2568                default: break;
2569                case 'a':	 // 2 strings to match.
2570                  if (NameR[12] != '.')
2571                    break;
2572                  switch (NameR[13]) {
2573                  default: break;
2574                  case 'd':	 // 1 string to match.
2575                    return Intrinsic::x86_sse2_psra_d;	 // "86.sse2.psra.d"
2576                  case 'w':	 // 1 string to match.
2577                    return Intrinsic::x86_sse2_psra_w;	 // "86.sse2.psra.w"
2578                  }
2579                  break;
2580                case 'l':	 // 3 strings to match.
2581                  if (NameR[12] != '.')
2582                    break;
2583                  switch (NameR[13]) {
2584                  default: break;
2585                  case 'd':	 // 1 string to match.
2586                    return Intrinsic::x86_sse2_psrl_d;	 // "86.sse2.psrl.d"
2587                  case 'q':	 // 1 string to match.
2588                    return Intrinsic::x86_sse2_psrl_q;	 // "86.sse2.psrl.q"
2589                  case 'w':	 // 1 string to match.
2590                    return Intrinsic::x86_sse2_psrl_w;	 // "86.sse2.psrl.w"
2591                  }
2592                  break;
2593                }
2594                break;
2595              }
2596              break;
2597            }
2598            break;
2599          case 's':	 // 1 string to match.
2600            if (NameR.substr(9, 5) != "ub.sd")
2601              break;
2602            return Intrinsic::x86_sse2_sub_sd;	 // "86.sse2.sub.sd"
2603          }
2604          break;
2605        case '3':	 // 1 string to match.
2606          if (NameR.substr(7, 7) != ".ldu.dq")
2607            break;
2608          return Intrinsic::x86_sse3_ldu_dq;	 // "86.sse3.ldu.dq"
2609        }
2610        break;
2611      }
2612      break;
2613    case 15:	 // 79 strings to match.
2614      if (NameR.substr(0, 3) != "86.")
2615        break;
2616      switch (NameR[3]) {
2617      default: break;
2618      case '3':	 // 3 strings to match.
2619        if (NameR.substr(4, 4) != "dnow")
2620          break;
2621        switch (NameR[8]) {
2622        default: break;
2623        case '.':	 // 1 string to match.
2624          if (NameR.substr(9, 6) != "pfsubr")
2625            break;
2626          return Intrinsic::x86_3dnow_pfsubr;	 // "86.3dnow.pfsubr"
2627        case 'a':	 // 2 strings to match.
2628          if (NameR.substr(9, 2) != ".p")
2629            break;
2630          switch (NameR[11]) {
2631          default: break;
2632          case 'f':	 // 1 string to match.
2633            if (NameR.substr(12, 3) != "2iw")
2634              break;
2635            return Intrinsic::x86_3dnowa_pf2iw;	 // "86.3dnowa.pf2iw"
2636          case 'i':	 // 1 string to match.
2637            if (NameR.substr(12, 3) != "2fw")
2638              break;
2639            return Intrinsic::x86_3dnowa_pi2fw;	 // "86.3dnowa.pi2fw"
2640          }
2641          break;
2642        }
2643        break;
2644      case 'a':	 // 4 strings to match.
2645        switch (NameR[4]) {
2646        default: break;
2647        case 'e':	 // 3 strings to match.
2648          if (NameR.substr(5, 7) != "sni.aes")
2649            break;
2650          switch (NameR[12]) {
2651          default: break;
2652          case 'd':	 // 1 string to match.
2653            if (NameR.substr(13, 2) != "ec")
2654              break;
2655            return Intrinsic::x86_aesni_aesdec;	 // "86.aesni.aesdec"
2656          case 'e':	 // 1 string to match.
2657            if (NameR.substr(13, 2) != "nc")
2658              break;
2659            return Intrinsic::x86_aesni_aesenc;	 // "86.aesni.aesenc"
2660          case 'i':	 // 1 string to match.
2661            if (NameR.substr(13, 2) != "mc")
2662              break;
2663            return Intrinsic::x86_aesni_aesimc;	 // "86.aesni.aesimc"
2664          }
2665          break;
2666        case 'v':	 // 1 string to match.
2667          if (NameR.substr(5, 10) != "x.vzeroall")
2668            break;
2669          return Intrinsic::x86_avx_vzeroall;	 // "86.avx.vzeroall"
2670        }
2671        break;
2672      case 'm':	 // 19 strings to match.
2673        if (NameR.substr(4, 3) != "mx.")
2674          break;
2675        switch (NameR[7]) {
2676        default: break;
2677        case 'm':	 // 2 strings to match.
2678          switch (NameR[8]) {
2679          default: break;
2680          case 'a':	 // 1 string to match.
2681            if (NameR.substr(9, 6) != "skmovq")
2682              break;
2683            return Intrinsic::x86_mmx_maskmovq;	 // "86.mmx.maskmovq"
2684          case 'o':	 // 1 string to match.
2685            if (NameR.substr(9, 6) != "vnt.dq")
2686              break;
2687            return Intrinsic::x86_mmx_movnt_dq;	 // "86.mmx.movnt.dq"
2688          }
2689          break;
2690        case 'p':	 // 17 strings to match.
2691          switch (NameR[8]) {
2692          default: break;
2693          case 'a':	 // 5 strings to match.
2694            switch (NameR[9]) {
2695            default: break;
2696            case 'c':	 // 3 strings to match.
2697              if (NameR[10] != 'k')
2698                break;
2699              switch (NameR[11]) {
2700              default: break;
2701              case 's':	 // 2 strings to match.
2702                if (NameR[12] != 's')
2703                  break;
2704                switch (NameR[13]) {
2705                default: break;
2706                case 'd':	 // 1 string to match.
2707                  if (NameR[14] != 'w')
2708                    break;
2709                  return Intrinsic::x86_mmx_packssdw;	 // "86.mmx.packssdw"
2710                case 'w':	 // 1 string to match.
2711                  if (NameR[14] != 'b')
2712                    break;
2713                  return Intrinsic::x86_mmx_packsswb;	 // "86.mmx.packsswb"
2714                }
2715                break;
2716              case 'u':	 // 1 string to match.
2717                if (NameR.substr(12, 3) != "swb")
2718                  break;
2719                return Intrinsic::x86_mmx_packuswb;	 // "86.mmx.packuswb"
2720              }
2721              break;
2722            case 'd':	 // 2 strings to match.
2723              if (NameR.substr(10, 4) != "dus.")
2724                break;
2725              switch (NameR[14]) {
2726              default: break;
2727              case 'b':	 // 1 string to match.
2728                return Intrinsic::x86_mmx_paddus_b;	 // "86.mmx.paddus.b"
2729              case 'w':	 // 1 string to match.
2730                return Intrinsic::x86_mmx_paddus_w;	 // "86.mmx.paddus.w"
2731              }
2732              break;
2733            }
2734            break;
2735          case 'c':	 // 6 strings to match.
2736            if (NameR.substr(9, 2) != "mp")
2737              break;
2738            switch (NameR[11]) {
2739            default: break;
2740            case 'e':	 // 3 strings to match.
2741              if (NameR.substr(12, 2) != "q.")
2742                break;
2743              switch (NameR[14]) {
2744              default: break;
2745              case 'b':	 // 1 string to match.
2746                return Intrinsic::x86_mmx_pcmpeq_b;	 // "86.mmx.pcmpeq.b"
2747              case 'd':	 // 1 string to match.
2748                return Intrinsic::x86_mmx_pcmpeq_d;	 // "86.mmx.pcmpeq.d"
2749              case 'w':	 // 1 string to match.
2750                return Intrinsic::x86_mmx_pcmpeq_w;	 // "86.mmx.pcmpeq.w"
2751              }
2752              break;
2753            case 'g':	 // 3 strings to match.
2754              if (NameR.substr(12, 2) != "t.")
2755                break;
2756              switch (NameR[14]) {
2757              default: break;
2758              case 'b':	 // 1 string to match.
2759                return Intrinsic::x86_mmx_pcmpgt_b;	 // "86.mmx.pcmpgt.b"
2760              case 'd':	 // 1 string to match.
2761                return Intrinsic::x86_mmx_pcmpgt_d;	 // "86.mmx.pcmpgt.d"
2762              case 'w':	 // 1 string to match.
2763                return Intrinsic::x86_mmx_pcmpgt_w;	 // "86.mmx.pcmpgt.w"
2764              }
2765              break;
2766            }
2767            break;
2768          case 'm':	 // 4 strings to match.
2769            switch (NameR[9]) {
2770            default: break;
2771            case 'a':	 // 1 string to match.
2772              if (NameR.substr(10, 5) != "dd.wd")
2773                break;
2774              return Intrinsic::x86_mmx_pmadd_wd;	 // "86.mmx.pmadd.wd"
2775            case 'o':	 // 1 string to match.
2776              if (NameR.substr(10, 5) != "vmskb")
2777                break;
2778              return Intrinsic::x86_mmx_pmovmskb;	 // "86.mmx.pmovmskb"
2779            case 'u':	 // 2 strings to match.
2780              if (NameR[10] != 'l')
2781                break;
2782              switch (NameR[11]) {
2783              default: break;
2784              case 'h':	 // 1 string to match.
2785                if (NameR.substr(12, 3) != "u.w")
2786                  break;
2787                return Intrinsic::x86_mmx_pmulhu_w;	 // "86.mmx.pmulhu.w"
2788              case 'u':	 // 1 string to match.
2789                if (NameR.substr(12, 3) != ".dq")
2790                  break;
2791                return Intrinsic::x86_mmx_pmulu_dq;	 // "86.mmx.pmulu.dq"
2792              }
2793              break;
2794            }
2795            break;
2796          case 's':	 // 2 strings to match.
2797            if (NameR.substr(9, 5) != "ubus.")
2798              break;
2799            switch (NameR[14]) {
2800            default: break;
2801            case 'b':	 // 1 string to match.
2802              return Intrinsic::x86_mmx_psubus_b;	 // "86.mmx.psubus.b"
2803            case 'w':	 // 1 string to match.
2804              return Intrinsic::x86_mmx_psubus_w;	 // "86.mmx.psubus.w"
2805            }
2806            break;
2807          }
2808          break;
2809        }
2810        break;
2811      case 's':	 // 53 strings to match.
2812        if (NameR[4] != 's')
2813          break;
2814        switch (NameR[5]) {
2815        default: break;
2816        case 'e':	 // 50 strings to match.
2817          switch (NameR[6]) {
2818          default: break;
2819          case '.':	 // 8 strings to match.
2820            switch (NameR[7]) {
2821            default: break;
2822            case 'c':	 // 6 strings to match.
2823              if (NameR.substr(8, 2) != "vt")
2824                break;
2825              switch (NameR[10]) {
2826              default: break;
2827              case 'p':	 // 4 strings to match.
2828                switch (NameR[11]) {
2829                default: break;
2830                case 'd':	 // 1 string to match.
2831                  if (NameR.substr(12, 3) != "2pi")
2832                    break;
2833                  return Intrinsic::x86_sse_cvtpd2pi;	 // "86.sse.cvtpd2pi"
2834                case 'i':	 // 2 strings to match.
2835                  if (NameR.substr(12, 2) != "2p")
2836                    break;
2837                  switch (NameR[14]) {
2838                  default: break;
2839                  case 'd':	 // 1 string to match.
2840                    return Intrinsic::x86_sse_cvtpi2pd;	 // "86.sse.cvtpi2pd"
2841                  case 's':	 // 1 string to match.
2842                    return Intrinsic::x86_sse_cvtpi2ps;	 // "86.sse.cvtpi2ps"
2843                  }
2844                  break;
2845                case 's':	 // 1 string to match.
2846                  if (NameR.substr(12, 3) != "2pi")
2847                    break;
2848                  return Intrinsic::x86_sse_cvtps2pi;	 // "86.sse.cvtps2pi"
2849                }
2850                break;
2851              case 's':	 // 2 strings to match.
2852                switch (NameR[11]) {
2853                default: break;
2854                case 'i':	 // 1 string to match.
2855                  if (NameR.substr(12, 3) != "2ss")
2856                    break;
2857                  return Intrinsic::x86_sse_cvtsi2ss;	 // "86.sse.cvtsi2ss"
2858                case 's':	 // 1 string to match.
2859                  if (NameR.substr(12, 3) != "2si")
2860                    break;
2861                  return Intrinsic::x86_sse_cvtss2si;	 // "86.sse.cvtss2si"
2862                }
2863                break;
2864              }
2865              break;
2866            case 'r':	 // 2 strings to match.
2867              if (NameR.substr(8, 5) != "sqrt.")
2868                break;
2869              switch (NameR[13]) {
2870              default: break;
2871              case 'p':	 // 1 string to match.
2872                if (NameR[14] != 's')
2873                  break;
2874                return Intrinsic::x86_sse_rsqrt_ps;	 // "86.sse.rsqrt.ps"
2875              case 's':	 // 1 string to match.
2876                if (NameR[14] != 's')
2877                  break;
2878                return Intrinsic::x86_sse_rsqrt_ss;	 // "86.sse.rsqrt.ss"
2879              }
2880              break;
2881            }
2882            break;
2883          case '2':	 // 23 strings to match.
2884            if (NameR[7] != '.')
2885              break;
2886            switch (NameR[8]) {
2887            default: break;
2888            case 'c':	 // 1 string to match.
2889              if (NameR.substr(9, 6) != "lflush")
2890                break;
2891              return Intrinsic::x86_sse2_clflush;	 // "86.sse2.clflush"
2892            case 'p':	 // 20 strings to match.
2893              switch (NameR[9]) {
2894              default: break;
2895              case 'a':	 // 2 strings to match.
2896                if (NameR.substr(10, 4) != "dds.")
2897                  break;
2898                switch (NameR[14]) {
2899                default: break;
2900                case 'b':	 // 1 string to match.
2901                  return Intrinsic::x86_sse2_padds_b;	 // "86.sse2.padds.b"
2902                case 'w':	 // 1 string to match.
2903                  return Intrinsic::x86_sse2_padds_w;	 // "86.sse2.padds.w"
2904                }
2905                break;
2906              case 'm':	 // 5 strings to match.
2907                switch (NameR[10]) {
2908                default: break;
2909                case 'a':	 // 2 strings to match.
2910                  if (NameR[11] != 'x')
2911                    break;
2912                  switch (NameR[12]) {
2913                  default: break;
2914                  case 's':	 // 1 string to match.
2915                    if (NameR.substr(13, 2) != ".w")
2916                      break;
2917                    return Intrinsic::x86_sse2_pmaxs_w;	 // "86.sse2.pmaxs.w"
2918                  case 'u':	 // 1 string to match.
2919                    if (NameR.substr(13, 2) != ".b")
2920                      break;
2921                    return Intrinsic::x86_sse2_pmaxu_b;	 // "86.sse2.pmaxu.b"
2922                  }
2923                  break;
2924                case 'i':	 // 2 strings to match.
2925                  if (NameR[11] != 'n')
2926                    break;
2927                  switch (NameR[12]) {
2928                  default: break;
2929                  case 's':	 // 1 string to match.
2930                    if (NameR.substr(13, 2) != ".w")
2931                      break;
2932                    return Intrinsic::x86_sse2_pmins_w;	 // "86.sse2.pmins.w"
2933                  case 'u':	 // 1 string to match.
2934                    if (NameR.substr(13, 2) != ".b")
2935                      break;
2936                    return Intrinsic::x86_sse2_pminu_b;	 // "86.sse2.pminu.b"
2937                  }
2938                  break;
2939                case 'u':	 // 1 string to match.
2940                  if (NameR.substr(11, 4) != "lh.w")
2941                    break;
2942                  return Intrinsic::x86_sse2_pmulh_w;	 // "86.sse2.pmulh.w"
2943                }
2944                break;
2945              case 's':	 // 13 strings to match.
2946                switch (NameR[10]) {
2947                default: break;
2948                case 'a':	 // 1 string to match.
2949                  if (NameR.substr(11, 4) != "d.bw")
2950                    break;
2951                  return Intrinsic::x86_sse2_psad_bw;	 // "86.sse2.psad.bw"
2952                case 'l':	 // 4 strings to match.
2953                  if (NameR[11] != 'l')
2954                    break;
2955                  switch (NameR[12]) {
2956                  default: break;
2957                  case '.':	 // 1 string to match.
2958                    if (NameR.substr(13, 2) != "dq")
2959                      break;
2960                    return Intrinsic::x86_sse2_psll_dq;	 // "86.sse2.psll.dq"
2961                  case 'i':	 // 3 strings to match.
2962                    if (NameR[13] != '.')
2963                      break;
2964                    switch (NameR[14]) {
2965                    default: break;
2966                    case 'd':	 // 1 string to match.
2967                      return Intrinsic::x86_sse2_pslli_d;	 // "86.sse2.pslli.d"
2968                    case 'q':	 // 1 string to match.
2969                      return Intrinsic::x86_sse2_pslli_q;	 // "86.sse2.pslli.q"
2970                    case 'w':	 // 1 string to match.
2971                      return Intrinsic::x86_sse2_pslli_w;	 // "86.sse2.pslli.w"
2972                    }
2973                    break;
2974                  }
2975                  break;
2976                case 'r':	 // 6 strings to match.
2977                  switch (NameR[11]) {
2978                  default: break;
2979                  case 'a':	 // 2 strings to match.
2980                    if (NameR.substr(12, 2) != "i.")
2981                      break;
2982                    switch (NameR[14]) {
2983                    default: break;
2984                    case 'd':	 // 1 string to match.
2985                      return Intrinsic::x86_sse2_psrai_d;	 // "86.sse2.psrai.d"
2986                    case 'w':	 // 1 string to match.
2987                      return Intrinsic::x86_sse2_psrai_w;	 // "86.sse2.psrai.w"
2988                    }
2989                    break;
2990                  case 'l':	 // 4 strings to match.
2991                    switch (NameR[12]) {
2992                    default: break;
2993                    case '.':	 // 1 string to match.
2994                      if (NameR.substr(13, 2) != "dq")
2995                        break;
2996                      return Intrinsic::x86_sse2_psrl_dq;	 // "86.sse2.psrl.dq"
2997                    case 'i':	 // 3 strings to match.
2998                      if (NameR[13] != '.')
2999                        break;
3000                      switch (NameR[14]) {
3001                      default: break;
3002                      case 'd':	 // 1 string to match.
3003                        return Intrinsic::x86_sse2_psrli_d;	 // "86.sse2.psrli.d"
3004                      case 'q':	 // 1 string to match.
3005                        return Intrinsic::x86_sse2_psrli_q;	 // "86.sse2.psrli.q"
3006                      case 'w':	 // 1 string to match.
3007                        return Intrinsic::x86_sse2_psrli_w;	 // "86.sse2.psrli.w"
3008                      }
3009                      break;
3010                    }
3011                    break;
3012                  }
3013                  break;
3014                case 'u':	 // 2 strings to match.
3015                  if (NameR.substr(11, 3) != "bs.")
3016                    break;
3017                  switch (NameR[14]) {
3018                  default: break;
3019                  case 'b':	 // 1 string to match.
3020                    return Intrinsic::x86_sse2_psubs_b;	 // "86.sse2.psubs.b"
3021                  case 'w':	 // 1 string to match.
3022                    return Intrinsic::x86_sse2_psubs_w;	 // "86.sse2.psubs.w"
3023                  }
3024                  break;
3025                }
3026                break;
3027              }
3028              break;
3029            case 's':	 // 2 strings to match.
3030              if (NameR.substr(9, 4) != "qrt.")
3031                break;
3032              switch (NameR[13]) {
3033              default: break;
3034              case 'p':	 // 1 string to match.
3035                if (NameR[14] != 'd')
3036                  break;
3037                return Intrinsic::x86_sse2_sqrt_pd;	 // "86.sse2.sqrt.pd"
3038              case 's':	 // 1 string to match.
3039                if (NameR[14] != 'd')
3040                  break;
3041                return Intrinsic::x86_sse2_sqrt_sd;	 // "86.sse2.sqrt.sd"
3042              }
3043              break;
3044            }
3045            break;
3046          case '3':	 // 5 strings to match.
3047            if (NameR[7] != '.')
3048              break;
3049            switch (NameR[8]) {
3050            default: break;
3051            case 'h':	 // 4 strings to match.
3052              switch (NameR[9]) {
3053              default: break;
3054              case 'a':	 // 2 strings to match.
3055                if (NameR.substr(10, 4) != "dd.p")
3056                  break;
3057                switch (NameR[14]) {
3058                default: break;
3059                case 'd':	 // 1 string to match.
3060                  return Intrinsic::x86_sse3_hadd_pd;	 // "86.sse3.hadd.pd"
3061                case 's':	 // 1 string to match.
3062                  return Intrinsic::x86_sse3_hadd_ps;	 // "86.sse3.hadd.ps"
3063                }
3064                break;
3065              case 's':	 // 2 strings to match.
3066                if (NameR.substr(10, 4) != "ub.p")
3067                  break;
3068                switch (NameR[14]) {
3069                default: break;
3070                case 'd':	 // 1 string to match.
3071                  return Intrinsic::x86_sse3_hsub_pd;	 // "86.sse3.hsub.pd"
3072                case 's':	 // 1 string to match.
3073                  return Intrinsic::x86_sse3_hsub_ps;	 // "86.sse3.hsub.ps"
3074                }
3075                break;
3076              }
3077              break;
3078            case 'm':	 // 1 string to match.
3079              if (NameR.substr(9, 6) != "onitor")
3080                break;
3081              return Intrinsic::x86_sse3_monitor;	 // "86.sse3.monitor"
3082            }
3083            break;
3084          case '4':	 // 14 strings to match.
3085            if (NameR.substr(7, 3) != "1.p")
3086              break;
3087            switch (NameR[10]) {
3088            default: break;
3089            case 'e':	 // 3 strings to match.
3090              if (NameR.substr(11, 3) != "xtr")
3091                break;
3092              switch (NameR[14]) {
3093              default: break;
3094              case 'b':	 // 1 string to match.
3095                return Intrinsic::x86_sse41_pextrb;	 // "86.sse41.pextrb"
3096              case 'd':	 // 1 string to match.
3097                return Intrinsic::x86_sse41_pextrd;	 // "86.sse41.pextrd"
3098              case 'q':	 // 1 string to match.
3099                return Intrinsic::x86_sse41_pextrq;	 // "86.sse41.pextrq"
3100              }
3101              break;
3102            case 'm':	 // 9 strings to match.
3103              switch (NameR[11]) {
3104              default: break;
3105              case 'a':	 // 4 strings to match.
3106                if (NameR[12] != 'x')
3107                  break;
3108                switch (NameR[13]) {
3109                default: break;
3110                case 's':	 // 2 strings to match.
3111                  switch (NameR[14]) {
3112                  default: break;
3113                  case 'b':	 // 1 string to match.
3114                    return Intrinsic::x86_sse41_pmaxsb;	 // "86.sse41.pmaxsb"
3115                  case 'd':	 // 1 string to match.
3116                    return Intrinsic::x86_sse41_pmaxsd;	 // "86.sse41.pmaxsd"
3117                  }
3118                  break;
3119                case 'u':	 // 2 strings to match.
3120                  switch (NameR[14]) {
3121                  default: break;
3122                  case 'd':	 // 1 string to match.
3123                    return Intrinsic::x86_sse41_pmaxud;	 // "86.sse41.pmaxud"
3124                  case 'w':	 // 1 string to match.
3125                    return Intrinsic::x86_sse41_pmaxuw;	 // "86.sse41.pmaxuw"
3126                  }
3127                  break;
3128                }
3129                break;
3130              case 'i':	 // 4 strings to match.
3131                if (NameR[12] != 'n')
3132                  break;
3133                switch (NameR[13]) {
3134                default: break;
3135                case 's':	 // 2 strings to match.
3136                  switch (NameR[14]) {
3137                  default: break;
3138                  case 'b':	 // 1 string to match.
3139                    return Intrinsic::x86_sse41_pminsb;	 // "86.sse41.pminsb"
3140                  case 'd':	 // 1 string to match.
3141                    return Intrinsic::x86_sse41_pminsd;	 // "86.sse41.pminsd"
3142                  }
3143                  break;
3144                case 'u':	 // 2 strings to match.
3145                  switch (NameR[14]) {
3146                  default: break;
3147                  case 'd':	 // 1 string to match.
3148                    return Intrinsic::x86_sse41_pminud;	 // "86.sse41.pminud"
3149                  case 'w':	 // 1 string to match.
3150                    return Intrinsic::x86_sse41_pminuw;	 // "86.sse41.pminuw"
3151                  }
3152                  break;
3153                }
3154                break;
3155              case 'u':	 // 1 string to match.
3156                if (NameR.substr(12, 3) != "ldq")
3157                  break;
3158                return Intrinsic::x86_sse41_pmuldq;	 // "86.sse41.pmuldq"
3159              }
3160              break;
3161            case 't':	 // 2 strings to match.
3162              if (NameR.substr(11, 3) != "est")
3163                break;
3164              switch (NameR[14]) {
3165              default: break;
3166              case 'c':	 // 1 string to match.
3167                return Intrinsic::x86_sse41_ptestc;	 // "86.sse41.ptestc"
3168              case 'z':	 // 1 string to match.
3169                return Intrinsic::x86_sse41_ptestz;	 // "86.sse41.ptestz"
3170              }
3171              break;
3172            }
3173            break;
3174          }
3175          break;
3176        case 's':	 // 3 strings to match.
3177          if (NameR.substr(6, 8) != "e3.pabs.")
3178            break;
3179          switch (NameR[14]) {
3180          default: break;
3181          case 'b':	 // 1 string to match.
3182            return Intrinsic::x86_ssse3_pabs_b;	 // "86.ssse3.pabs.b"
3183          case 'd':	 // 1 string to match.
3184            return Intrinsic::x86_ssse3_pabs_d;	 // "86.ssse3.pabs.d"
3185          case 'w':	 // 1 string to match.
3186            return Intrinsic::x86_ssse3_pabs_w;	 // "86.ssse3.pabs.w"
3187          }
3188          break;
3189        }
3190        break;
3191      }
3192      break;
3193    case 16:	 // 67 strings to match.
3194      if (NameR.substr(0, 3) != "86.")
3195        break;
3196      switch (NameR[3]) {
3197      default: break;
3198      case '3':	 // 8 strings to match.
3199        if (NameR.substr(4, 4) != "dnow")
3200          break;
3201        switch (NameR[8]) {
3202        default: break;
3203        case '.':	 // 6 strings to match.
3204          if (NameR[9] != 'p')
3205            break;
3206          switch (NameR[10]) {
3207          default: break;
3208          case 'a':	 // 1 string to match.
3209            if (NameR.substr(11, 5) != "vgusb")
3210              break;
3211            return Intrinsic::x86_3dnow_pavgusb;	 // "86.3dnow.pavgusb"
3212          case 'f':	 // 4 strings to match.
3213            switch (NameR[11]) {
3214            default: break;
3215            case 'c':	 // 3 strings to match.
3216              if (NameR.substr(12, 2) != "mp")
3217                break;
3218              switch (NameR[14]) {
3219              default: break;
3220              case 'e':	 // 1 string to match.
3221                if (NameR[15] != 'q')
3222                  break;
3223                return Intrinsic::x86_3dnow_pfcmpeq;	 // "86.3dnow.pfcmpeq"
3224              case 'g':	 // 2 strings to match.
3225                switch (NameR[15]) {
3226                default: break;
3227                case 'e':	 // 1 string to match.
3228                  return Intrinsic::x86_3dnow_pfcmpge;	 // "86.3dnow.pfcmpge"
3229                case 't':	 // 1 string to match.
3230                  return Intrinsic::x86_3dnow_pfcmpgt;	 // "86.3dnow.pfcmpgt"
3231                }
3232                break;
3233              }
3234              break;
3235            case 'r':	 // 1 string to match.
3236              if (NameR.substr(12, 4) != "sqrt")
3237                break;
3238              return Intrinsic::x86_3dnow_pfrsqrt;	 // "86.3dnow.pfrsqrt"
3239            }
3240            break;
3241          case 'm':	 // 1 string to match.
3242            if (NameR.substr(11, 5) != "ulhrw")
3243              break;
3244            return Intrinsic::x86_3dnow_pmulhrw;	 // "86.3dnow.pmulhrw"
3245          }
3246          break;
3247        case 'a':	 // 2 strings to match.
3248          if (NameR.substr(9, 2) != ".p")
3249            break;
3250          switch (NameR[11]) {
3251          default: break;
3252          case 'f':	 // 1 string to match.
3253            if (NameR.substr(12, 4) != "nacc")
3254              break;
3255            return Intrinsic::x86_3dnowa_pfnacc;	 // "86.3dnowa.pfnacc"
3256          case 's':	 // 1 string to match.
3257            if (NameR.substr(12, 4) != "wapd")
3258              break;
3259            return Intrinsic::x86_3dnowa_pswapd;	 // "86.3dnowa.pswapd"
3260          }
3261          break;
3262        }
3263        break;
3264      case 'a':	 // 5 strings to match.
3265        if (NameR.substr(4, 3) != "vx.")
3266          break;
3267        switch (NameR[7]) {
3268        default: break;
3269        case 'd':	 // 1 string to match.
3270          if (NameR.substr(8, 8) != "p.ps.256")
3271            break;
3272          return Intrinsic::x86_avx_dp_ps_256;	 // "86.avx.dp.ps.256"
3273        case 'v':	 // 4 strings to match.
3274          if (NameR.substr(8, 4) != "test")
3275            break;
3276          switch (NameR[12]) {
3277          default: break;
3278          case 'c':	 // 2 strings to match.
3279            if (NameR.substr(13, 2) != ".p")
3280              break;
3281            switch (NameR[15]) {
3282            default: break;
3283            case 'd':	 // 1 string to match.
3284              return Intrinsic::x86_avx_vtestc_pd;	 // "86.avx.vtestc.pd"
3285            case 's':	 // 1 string to match.
3286              return Intrinsic::x86_avx_vtestc_ps;	 // "86.avx.vtestc.ps"
3287            }
3288            break;
3289          case 'z':	 // 2 strings to match.
3290            if (NameR.substr(13, 2) != ".p")
3291              break;
3292            switch (NameR[15]) {
3293            default: break;
3294            case 'd':	 // 1 string to match.
3295              return Intrinsic::x86_avx_vtestz_pd;	 // "86.avx.vtestz.pd"
3296            case 's':	 // 1 string to match.
3297              return Intrinsic::x86_avx_vtestz_ps;	 // "86.avx.vtestz.ps"
3298            }
3299            break;
3300          }
3301          break;
3302        }
3303        break;
3304      case 'm':	 // 7 strings to match.
3305        if (NameR.substr(4, 4) != "mx.p")
3306          break;
3307        switch (NameR[8]) {
3308        default: break;
3309        case 'a':	 // 1 string to match.
3310          if (NameR.substr(9, 7) != "lignr.b")
3311            break;
3312          return Intrinsic::x86_mmx_palignr_b;	 // "86.mmx.palignr.b"
3313        case 'u':	 // 6 strings to match.
3314          if (NameR.substr(9, 4) != "npck")
3315            break;
3316          switch (NameR[13]) {
3317          default: break;
3318          case 'h':	 // 3 strings to match.
3319            switch (NameR[14]) {
3320            default: break;
3321            case 'b':	 // 1 string to match.
3322              if (NameR[15] != 'w')
3323                break;
3324              return Intrinsic::x86_mmx_punpckhbw;	 // "86.mmx.punpckhbw"
3325            case 'd':	 // 1 string to match.
3326              if (NameR[15] != 'q')
3327                break;
3328              return Intrinsic::x86_mmx_punpckhdq;	 // "86.mmx.punpckhdq"
3329            case 'w':	 // 1 string to match.
3330              if (NameR[15] != 'd')
3331                break;
3332              return Intrinsic::x86_mmx_punpckhwd;	 // "86.mmx.punpckhwd"
3333            }
3334            break;
3335          case 'l':	 // 3 strings to match.
3336            switch (NameR[14]) {
3337            default: break;
3338            case 'b':	 // 1 string to match.
3339              if (NameR[15] != 'w')
3340                break;
3341              return Intrinsic::x86_mmx_punpcklbw;	 // "86.mmx.punpcklbw"
3342            case 'd':	 // 1 string to match.
3343              if (NameR[15] != 'q')
3344                break;
3345              return Intrinsic::x86_mmx_punpckldq;	 // "86.mmx.punpckldq"
3346            case 'w':	 // 1 string to match.
3347              if (NameR[15] != 'd')
3348                break;
3349              return Intrinsic::x86_mmx_punpcklwd;	 // "86.mmx.punpcklwd"
3350            }
3351            break;
3352          }
3353          break;
3354        }
3355        break;
3356      case 's':	 // 47 strings to match.
3357        if (NameR[4] != 's')
3358          break;
3359        switch (NameR[5]) {
3360        default: break;
3361        case 'e':	 // 39 strings to match.
3362          switch (NameR[6]) {
3363          default: break;
3364          case '.':	 // 10 strings to match.
3365            switch (NameR[7]) {
3366            default: break;
3367            case 'c':	 // 8 strings to match.
3368              switch (NameR[8]) {
3369              default: break;
3370              case 'o':	 // 5 strings to match.
3371                if (NameR.substr(9, 2) != "mi")
3372                  break;
3373                switch (NameR[11]) {
3374                default: break;
3375                case 'e':	 // 1 string to match.
3376                  if (NameR.substr(12, 4) != "q.ss")
3377                    break;
3378                  return Intrinsic::x86_sse_comieq_ss;	 // "86.sse.comieq.ss"
3379                case 'g':	 // 2 strings to match.
3380                  switch (NameR[12]) {
3381                  default: break;
3382                  case 'e':	 // 1 string to match.
3383                    if (NameR.substr(13, 3) != ".ss")
3384                      break;
3385                    return Intrinsic::x86_sse_comige_ss;	 // "86.sse.comige.ss"
3386                  case 't':	 // 1 string to match.
3387                    if (NameR.substr(13, 3) != ".ss")
3388                      break;
3389                    return Intrinsic::x86_sse_comigt_ss;	 // "86.sse.comigt.ss"
3390                  }
3391                  break;
3392                case 'l':	 // 2 strings to match.
3393                  switch (NameR[12]) {
3394                  default: break;
3395                  case 'e':	 // 1 string to match.
3396                    if (NameR.substr(13, 3) != ".ss")
3397                      break;
3398                    return Intrinsic::x86_sse_comile_ss;	 // "86.sse.comile.ss"
3399                  case 't':	 // 1 string to match.
3400                    if (NameR.substr(13, 3) != ".ss")
3401                      break;
3402                    return Intrinsic::x86_sse_comilt_ss;	 // "86.sse.comilt.ss"
3403                  }
3404                  break;
3405                }
3406                break;
3407              case 'v':	 // 3 strings to match.
3408                if (NameR.substr(9, 2) != "tt")
3409                  break;
3410                switch (NameR[11]) {
3411                default: break;
3412                case 'p':	 // 2 strings to match.
3413                  switch (NameR[12]) {
3414                  default: break;
3415                  case 'd':	 // 1 string to match.
3416                    if (NameR.substr(13, 3) != "2pi")
3417                      break;
3418                    return Intrinsic::x86_sse_cvttpd2pi;	 // "86.sse.cvttpd2pi"
3419                  case 's':	 // 1 string to match.
3420                    if (NameR.substr(13, 3) != "2pi")
3421                      break;
3422                    return Intrinsic::x86_sse_cvttps2pi;	 // "86.sse.cvttps2pi"
3423                  }
3424                  break;
3425                case 's':	 // 1 string to match.
3426                  if (NameR.substr(12, 4) != "s2si")
3427                    break;
3428                  return Intrinsic::x86_sse_cvttss2si;	 // "86.sse.cvttss2si"
3429                }
3430                break;
3431              }
3432              break;
3433            case 'm':	 // 1 string to match.
3434              if (NameR.substr(8, 8) != "ovmsk.ps")
3435                break;
3436              return Intrinsic::x86_sse_movmsk_ps;	 // "86.sse.movmsk.ps"
3437            case 's':	 // 1 string to match.
3438              if (NameR.substr(8, 8) != "toreu.ps")
3439                break;
3440              return Intrinsic::x86_sse_storeu_ps;	 // "86.sse.storeu.ps"
3441            }
3442            break;
3443          case '2':	 // 23 strings to match.
3444            if (NameR[7] != '.')
3445              break;
3446            switch (NameR[8]) {
3447            default: break;
3448            case 'c':	 // 10 strings to match.
3449              if (NameR.substr(9, 2) != "vt")
3450                break;
3451              switch (NameR[11]) {
3452              default: break;
3453              case 'd':	 // 2 strings to match.
3454                if (NameR.substr(12, 3) != "q2p")
3455                  break;
3456                switch (NameR[15]) {
3457                default: break;
3458                case 'd':	 // 1 string to match.
3459                  return Intrinsic::x86_sse2_cvtdq2pd;	 // "86.sse2.cvtdq2pd"
3460                case 's':	 // 1 string to match.
3461                  return Intrinsic::x86_sse2_cvtdq2ps;	 // "86.sse2.cvtdq2ps"
3462                }
3463                break;
3464              case 'p':	 // 4 strings to match.
3465                switch (NameR[12]) {
3466                default: break;
3467                case 'd':	 // 2 strings to match.
3468                  if (NameR[13] != '2')
3469                    break;
3470                  switch (NameR[14]) {
3471                  default: break;
3472                  case 'd':	 // 1 string to match.
3473                    if (NameR[15] != 'q')
3474                      break;
3475                    return Intrinsic::x86_sse2_cvtpd2dq;	 // "86.sse2.cvtpd2dq"
3476                  case 'p':	 // 1 string to match.
3477                    if (NameR[15] != 's')
3478                      break;
3479                    return Intrinsic::x86_sse2_cvtpd2ps;	 // "86.sse2.cvtpd2ps"
3480                  }
3481                  break;
3482                case 's':	 // 2 strings to match.
3483                  if (NameR[13] != '2')
3484                    break;
3485                  switch (NameR[14]) {
3486                  default: break;
3487                  case 'd':	 // 1 string to match.
3488                    if (NameR[15] != 'q')
3489                      break;
3490                    return Intrinsic::x86_sse2_cvtps2dq;	 // "86.sse2.cvtps2dq"
3491                  case 'p':	 // 1 string to match.
3492                    if (NameR[15] != 'd')
3493                      break;
3494                    return Intrinsic::x86_sse2_cvtps2pd;	 // "86.sse2.cvtps2pd"
3495                  }
3496                  break;
3497                }
3498                break;
3499              case 's':	 // 4 strings to match.
3500                switch (NameR[12]) {
3501                default: break;
3502                case 'd':	 // 2 strings to match.
3503                  if (NameR.substr(13, 2) != "2s")
3504                    break;
3505                  switch (NameR[15]) {
3506                  default: break;
3507                  case 'i':	 // 1 string to match.
3508                    return Intrinsic::x86_sse2_cvtsd2si;	 // "86.sse2.cvtsd2si"
3509                  case 's':	 // 1 string to match.
3510                    return Intrinsic::x86_sse2_cvtsd2ss;	 // "86.sse2.cvtsd2ss"
3511                  }
3512                  break;
3513                case 'i':	 // 1 string to match.
3514                  if (NameR.substr(13, 3) != "2sd")
3515                    break;
3516                  return Intrinsic::x86_sse2_cvtsi2sd;	 // "86.sse2.cvtsi2sd"
3517                case 's':	 // 1 string to match.
3518                  if (NameR.substr(13, 3) != "2sd")
3519                    break;
3520                  return Intrinsic::x86_sse2_cvtss2sd;	 // "86.sse2.cvtss2sd"
3521                }
3522                break;
3523              }
3524              break;
3525            case 'p':	 // 13 strings to match.
3526              switch (NameR[9]) {
3527              default: break;
3528              case 'a':	 // 2 strings to match.
3529                if (NameR.substr(10, 5) != "ddus.")
3530                  break;
3531                switch (NameR[15]) {
3532                default: break;
3533                case 'b':	 // 1 string to match.
3534                  return Intrinsic::x86_sse2_paddus_b;	 // "86.sse2.paddus.b"
3535                case 'w':	 // 1 string to match.
3536                  return Intrinsic::x86_sse2_paddus_w;	 // "86.sse2.paddus.w"
3537                }
3538                break;
3539              case 'c':	 // 6 strings to match.
3540                if (NameR.substr(10, 2) != "mp")
3541                  break;
3542                switch (NameR[12]) {
3543                default: break;
3544                case 'e':	 // 3 strings to match.
3545                  if (NameR.substr(13, 2) != "q.")
3546                    break;
3547                  switch (NameR[15]) {
3548                  default: break;
3549                  case 'b':	 // 1 string to match.
3550                    return Intrinsic::x86_sse2_pcmpeq_b;	 // "86.sse2.pcmpeq.b"
3551                  case 'd':	 // 1 string to match.
3552                    return Intrinsic::x86_sse2_pcmpeq_d;	 // "86.sse2.pcmpeq.d"
3553                  case 'w':	 // 1 string to match.
3554                    return Intrinsic::x86_sse2_pcmpeq_w;	 // "86.sse2.pcmpeq.w"
3555                  }
3556                  break;
3557                case 'g':	 // 3 strings to match.
3558                  if (NameR.substr(13, 2) != "t.")
3559                    break;
3560                  switch (NameR[15]) {
3561                  default: break;
3562                  case 'b':	 // 1 string to match.
3563                    return Intrinsic::x86_sse2_pcmpgt_b;	 // "86.sse2.pcmpgt.b"
3564                  case 'd':	 // 1 string to match.
3565                    return Intrinsic::x86_sse2_pcmpgt_d;	 // "86.sse2.pcmpgt.d"
3566                  case 'w':	 // 1 string to match.
3567                    return Intrinsic::x86_sse2_pcmpgt_w;	 // "86.sse2.pcmpgt.w"
3568                  }
3569                  break;
3570                }
3571                break;
3572              case 'm':	 // 3 strings to match.
3573                switch (NameR[10]) {
3574                default: break;
3575                case 'a':	 // 1 string to match.
3576                  if (NameR.substr(11, 5) != "dd.wd")
3577                    break;
3578                  return Intrinsic::x86_sse2_pmadd_wd;	 // "86.sse2.pmadd.wd"
3579                case 'u':	 // 2 strings to match.
3580                  if (NameR[11] != 'l')
3581                    break;
3582                  switch (NameR[12]) {
3583                  default: break;
3584                  case 'h':	 // 1 string to match.
3585                    if (NameR.substr(13, 3) != "u.w")
3586                      break;
3587                    return Intrinsic::x86_sse2_pmulhu_w;	 // "86.sse2.pmulhu.w"
3588                  case 'u':	 // 1 string to match.
3589                    if (NameR.substr(13, 3) != ".dq")
3590                      break;
3591                    return Intrinsic::x86_sse2_pmulu_dq;	 // "86.sse2.pmulu.dq"
3592                  }
3593                  break;
3594                }
3595                break;
3596              case 's':	 // 2 strings to match.
3597                if (NameR.substr(10, 5) != "ubus.")
3598                  break;
3599                switch (NameR[15]) {
3600                default: break;
3601                case 'b':	 // 1 string to match.
3602                  return Intrinsic::x86_sse2_psubus_b;	 // "86.sse2.psubus.b"
3603                case 'w':	 // 1 string to match.
3604                  return Intrinsic::x86_sse2_psubus_w;	 // "86.sse2.psubus.w"
3605                }
3606                break;
3607              }
3608              break;
3609            }
3610            break;
3611          case '4':	 // 6 strings to match.
3612            switch (NameR[7]) {
3613            default: break;
3614            case '1':	 // 5 strings to match.
3615              if (NameR[8] != '.')
3616                break;
3617              switch (NameR[9]) {
3618              default: break;
3619              case 'b':	 // 2 strings to match.
3620                if (NameR.substr(10, 5) != "lendp")
3621                  break;
3622                switch (NameR[15]) {
3623                default: break;
3624                case 'd':	 // 1 string to match.
3625                  return Intrinsic::x86_sse41_blendpd;	 // "86.sse41.blendpd"
3626                case 's':	 // 1 string to match.
3627                  return Intrinsic::x86_sse41_blendps;	 // "86.sse41.blendps"
3628                }
3629                break;
3630              case 'm':	 // 1 string to match.
3631                if (NameR.substr(10, 6) != "psadbw")
3632                  break;
3633                return Intrinsic::x86_sse41_mpsadbw;	 // "86.sse41.mpsadbw"
3634              case 'p':	 // 2 strings to match.
3635                switch (NameR[10]) {
3636                default: break;
3637                case 'b':	 // 1 string to match.
3638                  if (NameR.substr(11, 5) != "lendw")
3639                    break;
3640                  return Intrinsic::x86_sse41_pblendw;	 // "86.sse41.pblendw"
3641                case 'c':	 // 1 string to match.
3642                  if (NameR.substr(11, 5) != "mpeqq")
3643                    break;
3644                  return Intrinsic::x86_sse41_pcmpeqq;	 // "86.sse41.pcmpeqq"
3645                }
3646                break;
3647              }
3648              break;
3649            case '2':	 // 1 string to match.
3650              if (NameR.substr(8, 8) != ".pcmpgtq")
3651                break;
3652              return Intrinsic::x86_sse42_pcmpgtq;	 // "86.sse42.pcmpgtq"
3653            }
3654            break;
3655          }
3656          break;
3657        case 's':	 // 8 strings to match.
3658          if (NameR.substr(6, 4) != "e3.p")
3659            break;
3660          switch (NameR[10]) {
3661          default: break;
3662          case 'h':	 // 4 strings to match.
3663            switch (NameR[11]) {
3664            default: break;
3665            case 'a':	 // 2 strings to match.
3666              if (NameR.substr(12, 3) != "dd.")
3667                break;
3668              switch (NameR[15]) {
3669              default: break;
3670              case 'd':	 // 1 string to match.
3671                return Intrinsic::x86_ssse3_phadd_d;	 // "86.ssse3.phadd.d"
3672              case 'w':	 // 1 string to match.
3673                return Intrinsic::x86_ssse3_phadd_w;	 // "86.ssse3.phadd.w"
3674              }
3675              break;
3676            case 's':	 // 2 strings to match.
3677              if (NameR.substr(12, 3) != "ub.")
3678                break;
3679              switch (NameR[15]) {
3680              default: break;
3681              case 'd':	 // 1 string to match.
3682                return Intrinsic::x86_ssse3_phsub_d;	 // "86.ssse3.phsub.d"
3683              case 'w':	 // 1 string to match.
3684                return Intrinsic::x86_ssse3_phsub_w;	 // "86.ssse3.phsub.w"
3685              }
3686              break;
3687            }
3688            break;
3689          case 's':	 // 4 strings to match.
3690            switch (NameR[11]) {
3691            default: break;
3692            case 'h':	 // 1 string to match.
3693              if (NameR.substr(12, 4) != "uf.b")
3694                break;
3695              return Intrinsic::x86_ssse3_pshuf_b;	 // "86.ssse3.pshuf.b"
3696            case 'i':	 // 3 strings to match.
3697              if (NameR.substr(12, 3) != "gn.")
3698                break;
3699              switch (NameR[15]) {
3700              default: break;
3701              case 'b':	 // 1 string to match.
3702                return Intrinsic::x86_ssse3_psign_b;	 // "86.ssse3.psign.b"
3703              case 'd':	 // 1 string to match.
3704                return Intrinsic::x86_ssse3_psign_d;	 // "86.ssse3.psign.d"
3705              case 'w':	 // 1 string to match.
3706                return Intrinsic::x86_ssse3_psign_w;	 // "86.ssse3.psign.w"
3707              }
3708              break;
3709            }
3710            break;
3711          }
3712          break;
3713        }
3714        break;
3715      }
3716      break;
3717    case 17:	 // 64 strings to match.
3718      if (NameR.substr(0, 3) != "86.")
3719        break;
3720      switch (NameR[3]) {
3721      default: break;
3722      case '3':	 // 4 strings to match.
3723        if (NameR.substr(4, 4) != "dnow")
3724          break;
3725        switch (NameR[8]) {
3726        default: break;
3727        case '.':	 // 3 strings to match.
3728          if (NameR.substr(9, 3) != "pfr")
3729            break;
3730          switch (NameR[12]) {
3731          default: break;
3732          case 'c':	 // 2 strings to match.
3733            if (NameR.substr(13, 3) != "pit")
3734              break;
3735            switch (NameR[16]) {
3736            default: break;
3737            case '1':	 // 1 string to match.
3738              return Intrinsic::x86_3dnow_pfrcpit1;	 // "86.3dnow.pfrcpit1"
3739            case '2':	 // 1 string to match.
3740              return Intrinsic::x86_3dnow_pfrcpit2;	 // "86.3dnow.pfrcpit2"
3741            }
3742            break;
3743          case 's':	 // 1 string to match.
3744            if (NameR.substr(13, 4) != "qit1")
3745              break;
3746            return Intrinsic::x86_3dnow_pfrsqit1;	 // "86.3dnow.pfrsqit1"
3747          }
3748          break;
3749        case 'a':	 // 1 string to match.
3750          if (NameR.substr(9, 8) != ".pfpnacc")
3751            break;
3752          return Intrinsic::x86_3dnowa_pfpnacc;	 // "86.3dnowa.pfpnacc"
3753        }
3754        break;
3755      case 'a':	 // 13 strings to match.
3756        if (NameR.substr(4, 3) != "vx.")
3757          break;
3758        switch (NameR[7]) {
3759        default: break;
3760        case 'c':	 // 2 strings to match.
3761          if (NameR.substr(8, 4) != "mp.p")
3762            break;
3763          switch (NameR[12]) {
3764          default: break;
3765          case 'd':	 // 1 string to match.
3766            if (NameR.substr(13, 4) != ".256")
3767              break;
3768            return Intrinsic::x86_avx_cmp_pd_256;	 // "86.avx.cmp.pd.256"
3769          case 's':	 // 1 string to match.
3770            if (NameR.substr(13, 4) != ".256")
3771              break;
3772            return Intrinsic::x86_avx_cmp_ps_256;	 // "86.avx.cmp.ps.256"
3773          }
3774          break;
3775        case 'l':	 // 1 string to match.
3776          if (NameR.substr(8, 9) != "du.dq.256")
3777            break;
3778          return Intrinsic::x86_avx_ldu_dq_256;	 // "86.avx.ldu.dq.256"
3779        case 'm':	 // 4 strings to match.
3780          switch (NameR[8]) {
3781          default: break;
3782          case 'a':	 // 2 strings to match.
3783            if (NameR.substr(9, 3) != "x.p")
3784              break;
3785            switch (NameR[12]) {
3786            default: break;
3787            case 'd':	 // 1 string to match.
3788              if (NameR.substr(13, 4) != ".256")
3789                break;
3790              return Intrinsic::x86_avx_max_pd_256;	 // "86.avx.max.pd.256"
3791            case 's':	 // 1 string to match.
3792              if (NameR.substr(13, 4) != ".256")
3793                break;
3794              return Intrinsic::x86_avx_max_ps_256;	 // "86.avx.max.ps.256"
3795            }
3796            break;
3797          case 'i':	 // 2 strings to match.
3798            if (NameR.substr(9, 3) != "n.p")
3799              break;
3800            switch (NameR[12]) {
3801            default: break;
3802            case 'd':	 // 1 string to match.
3803              if (NameR.substr(13, 4) != ".256")
3804                break;
3805              return Intrinsic::x86_avx_min_pd_256;	 // "86.avx.min.pd.256"
3806            case 's':	 // 1 string to match.
3807              if (NameR.substr(13, 4) != ".256")
3808                break;
3809              return Intrinsic::x86_avx_min_ps_256;	 // "86.avx.min.ps.256"
3810            }
3811            break;
3812          }
3813          break;
3814        case 'p':	 // 2 strings to match.
3815          if (NameR.substr(8, 4) != "test")
3816            break;
3817          switch (NameR[12]) {
3818          default: break;
3819          case 'c':	 // 1 string to match.
3820            if (NameR.substr(13, 4) != ".256")
3821              break;
3822            return Intrinsic::x86_avx_ptestc_256;	 // "86.avx.ptestc.256"
3823          case 'z':	 // 1 string to match.
3824            if (NameR.substr(13, 4) != ".256")
3825              break;
3826            return Intrinsic::x86_avx_ptestz_256;	 // "86.avx.ptestz.256"
3827          }
3828          break;
3829        case 'r':	 // 1 string to match.
3830          if (NameR.substr(8, 9) != "cp.ps.256")
3831            break;
3832          return Intrinsic::x86_avx_rcp_ps_256;	 // "86.avx.rcp.ps.256"
3833        case 'v':	 // 3 strings to match.
3834          switch (NameR[8]) {
3835          default: break;
3836          case 'p':	 // 2 strings to match.
3837            if (NameR.substr(9, 7) != "ermil.p")
3838              break;
3839            switch (NameR[16]) {
3840            default: break;
3841            case 'd':	 // 1 string to match.
3842              return Intrinsic::x86_avx_vpermil_pd;	 // "86.avx.vpermil.pd"
3843            case 's':	 // 1 string to match.
3844              return Intrinsic::x86_avx_vpermil_ps;	 // "86.avx.vpermil.ps"
3845            }
3846            break;
3847          case 'z':	 // 1 string to match.
3848            if (NameR.substr(9, 8) != "eroupper")
3849              break;
3850            return Intrinsic::x86_avx_vzeroupper;	 // "86.avx.vzeroupper"
3851          }
3852          break;
3853        }
3854        break;
3855      case 's':	 // 47 strings to match.
3856        if (NameR[4] != 's')
3857          break;
3858        switch (NameR[5]) {
3859        default: break;
3860        case 'e':	 // 45 strings to match.
3861          switch (NameR[6]) {
3862          default: break;
3863          case '.':	 // 8 strings to match.
3864            switch (NameR[7]) {
3865            default: break;
3866            case 'c':	 // 3 strings to match.
3867              switch (NameR[8]) {
3868              default: break;
3869              case 'o':	 // 1 string to match.
3870                if (NameR.substr(9, 8) != "mineq.ss")
3871                  break;
3872                return Intrinsic::x86_sse_comineq_ss;	 // "86.sse.comineq.ss"
3873              case 'v':	 // 2 strings to match.
3874                if (NameR.substr(9, 2) != "ts")
3875                  break;
3876                switch (NameR[11]) {
3877                default: break;
3878                case 'i':	 // 1 string to match.
3879                  if (NameR.substr(12, 5) != "642ss")
3880                    break;
3881                  return Intrinsic::x86_sse_cvtsi642ss;	 // "86.sse.cvtsi642ss"
3882                case 's':	 // 1 string to match.
3883                  if (NameR.substr(12, 5) != "2si64")
3884                    break;
3885                  return Intrinsic::x86_sse_cvtss2si64;	 // "86.sse.cvtss2si64"
3886                }
3887                break;
3888              }
3889              break;
3890            case 'u':	 // 5 strings to match.
3891              if (NameR.substr(8, 4) != "comi")
3892                break;
3893              switch (NameR[12]) {
3894              default: break;
3895              case 'e':	 // 1 string to match.
3896                if (NameR.substr(13, 4) != "q.ss")
3897                  break;
3898                return Intrinsic::x86_sse_ucomieq_ss;	 // "86.sse.ucomieq.ss"
3899              case 'g':	 // 2 strings to match.
3900                switch (NameR[13]) {
3901                default: break;
3902                case 'e':	 // 1 string to match.
3903                  if (NameR.substr(14, 3) != ".ss")
3904                    break;
3905                  return Intrinsic::x86_sse_ucomige_ss;	 // "86.sse.ucomige.ss"
3906                case 't':	 // 1 string to match.
3907                  if (NameR.substr(14, 3) != ".ss")
3908                    break;
3909                  return Intrinsic::x86_sse_ucomigt_ss;	 // "86.sse.ucomigt.ss"
3910                }
3911                break;
3912              case 'l':	 // 2 strings to match.
3913                switch (NameR[13]) {
3914                default: break;
3915                case 'e':	 // 1 string to match.
3916                  if (NameR.substr(14, 3) != ".ss")
3917                    break;
3918                  return Intrinsic::x86_sse_ucomile_ss;	 // "86.sse.ucomile.ss"
3919                case 't':	 // 1 string to match.
3920                  if (NameR.substr(14, 3) != ".ss")
3921                    break;
3922                  return Intrinsic::x86_sse_ucomilt_ss;	 // "86.sse.ucomilt.ss"
3923                }
3924                break;
3925              }
3926              break;
3927            }
3928            break;
3929          case '2':	 // 12 strings to match.
3930            if (NameR[7] != '.')
3931              break;
3932            switch (NameR[8]) {
3933            default: break;
3934            case 'c':	 // 8 strings to match.
3935              switch (NameR[9]) {
3936              default: break;
3937              case 'o':	 // 5 strings to match.
3938                if (NameR.substr(10, 2) != "mi")
3939                  break;
3940                switch (NameR[12]) {
3941                default: break;
3942                case 'e':	 // 1 string to match.
3943                  if (NameR.substr(13, 4) != "q.sd")
3944                    break;
3945                  return Intrinsic::x86_sse2_comieq_sd;	 // "86.sse2.comieq.sd"
3946                case 'g':	 // 2 strings to match.
3947                  switch (NameR[13]) {
3948                  default: break;
3949                  case 'e':	 // 1 string to match.
3950                    if (NameR.substr(14, 3) != ".sd")
3951                      break;
3952                    return Intrinsic::x86_sse2_comige_sd;	 // "86.sse2.comige.sd"
3953                  case 't':	 // 1 string to match.
3954                    if (NameR.substr(14, 3) != ".sd")
3955                      break;
3956                    return Intrinsic::x86_sse2_comigt_sd;	 // "86.sse2.comigt.sd"
3957                  }
3958                  break;
3959                case 'l':	 // 2 strings to match.
3960                  switch (NameR[13]) {
3961                  default: break;
3962                  case 'e':	 // 1 string to match.
3963                    if (NameR.substr(14, 3) != ".sd")
3964                      break;
3965                    return Intrinsic::x86_sse2_comile_sd;	 // "86.sse2.comile.sd"
3966                  case 't':	 // 1 string to match.
3967                    if (NameR.substr(14, 3) != ".sd")
3968                      break;
3969                    return Intrinsic::x86_sse2_comilt_sd;	 // "86.sse2.comilt.sd"
3970                  }
3971                  break;
3972                }
3973                break;
3974              case 'v':	 // 3 strings to match.
3975                if (NameR.substr(10, 2) != "tt")
3976                  break;
3977                switch (NameR[12]) {
3978                default: break;
3979                case 'p':	 // 2 strings to match.
3980                  switch (NameR[13]) {
3981                  default: break;
3982                  case 'd':	 // 1 string to match.
3983                    if (NameR.substr(14, 3) != "2dq")
3984                      break;
3985                    return Intrinsic::x86_sse2_cvttpd2dq;	 // "86.sse2.cvttpd2dq"
3986                  case 's':	 // 1 string to match.
3987                    if (NameR.substr(14, 3) != "2dq")
3988                      break;
3989                    return Intrinsic::x86_sse2_cvttps2dq;	 // "86.sse2.cvttps2dq"
3990                  }
3991                  break;
3992                case 's':	 // 1 string to match.
3993                  if (NameR.substr(13, 4) != "d2si")
3994                    break;
3995                  return Intrinsic::x86_sse2_cvttsd2si;	 // "86.sse2.cvttsd2si"
3996                }
3997                break;
3998              }
3999              break;
4000            case 'm':	 // 1 string to match.
4001              if (NameR.substr(9, 8) != "ovmsk.pd")
4002                break;
4003              return Intrinsic::x86_sse2_movmsk_pd;	 // "86.sse2.movmsk.pd"
4004            case 's':	 // 3 strings to match.
4005              if (NameR.substr(9, 4) != "tore")
4006                break;
4007              switch (NameR[13]) {
4008              default: break;
4009              case 'l':	 // 1 string to match.
4010                if (NameR.substr(14, 3) != ".dq")
4011                  break;
4012                return Intrinsic::x86_sse2_storel_dq;	 // "86.sse2.storel.dq"
4013              case 'u':	 // 2 strings to match.
4014                if (NameR[14] != '.')
4015                  break;
4016                switch (NameR[15]) {
4017                default: break;
4018                case 'd':	 // 1 string to match.
4019                  if (NameR[16] != 'q')
4020                    break;
4021                  return Intrinsic::x86_sse2_storeu_dq;	 // "86.sse2.storeu.dq"
4022                case 'p':	 // 1 string to match.
4023                  if (NameR[16] != 'd')
4024                    break;
4025                  return Intrinsic::x86_sse2_storeu_pd;	 // "86.sse2.storeu.pd"
4026                }
4027                break;
4028              }
4029              break;
4030            }
4031            break;
4032          case '3':	 // 2 strings to match.
4033            if (NameR.substr(7, 9) != ".addsub.p")
4034              break;
4035            switch (NameR[16]) {
4036            default: break;
4037            case 'd':	 // 1 string to match.
4038              return Intrinsic::x86_sse3_addsub_pd;	 // "86.sse3.addsub.pd"
4039            case 's':	 // 1 string to match.
4040              return Intrinsic::x86_sse3_addsub_ps;	 // "86.sse3.addsub.ps"
4041            }
4042            break;
4043          case '4':	 // 23 strings to match.
4044            if (NameR.substr(7, 2) != "1.")
4045              break;
4046            switch (NameR[9]) {
4047            default: break;
4048            case 'b':	 // 2 strings to match.
4049              if (NameR.substr(10, 6) != "lendvp")
4050                break;
4051              switch (NameR[16]) {
4052              default: break;
4053              case 'd':	 // 1 string to match.
4054                return Intrinsic::x86_sse41_blendvpd;	 // "86.sse41.blendvpd"
4055              case 's':	 // 1 string to match.
4056                return Intrinsic::x86_sse41_blendvps;	 // "86.sse41.blendvps"
4057              }
4058              break;
4059            case 'i':	 // 1 string to match.
4060              if (NameR.substr(10, 7) != "nsertps")
4061                break;
4062              return Intrinsic::x86_sse41_insertps;	 // "86.sse41.insertps"
4063            case 'm':	 // 1 string to match.
4064              if (NameR.substr(10, 7) != "ovntdqa")
4065                break;
4066              return Intrinsic::x86_sse41_movntdqa;	 // "86.sse41.movntdqa"
4067            case 'p':	 // 15 strings to match.
4068              switch (NameR[10]) {
4069              default: break;
4070              case 'a':	 // 1 string to match.
4071                if (NameR.substr(11, 6) != "ckusdw")
4072                  break;
4073                return Intrinsic::x86_sse41_packusdw;	 // "86.sse41.packusdw"
4074              case 'b':	 // 1 string to match.
4075                if (NameR.substr(11, 6) != "lendvb")
4076                  break;
4077                return Intrinsic::x86_sse41_pblendvb;	 // "86.sse41.pblendvb"
4078              case 'm':	 // 12 strings to match.
4079                if (NameR.substr(11, 2) != "ov")
4080                  break;
4081                switch (NameR[13]) {
4082                default: break;
4083                case 's':	 // 6 strings to match.
4084                  if (NameR[14] != 'x')
4085                    break;
4086                  switch (NameR[15]) {
4087                  default: break;
4088                  case 'b':	 // 3 strings to match.
4089                    switch (NameR[16]) {
4090                    default: break;
4091                    case 'd':	 // 1 string to match.
4092                      return Intrinsic::x86_sse41_pmovsxbd;	 // "86.sse41.pmovsxbd"
4093                    case 'q':	 // 1 string to match.
4094                      return Intrinsic::x86_sse41_pmovsxbq;	 // "86.sse41.pmovsxbq"
4095                    case 'w':	 // 1 string to match.
4096                      return Intrinsic::x86_sse41_pmovsxbw;	 // "86.sse41.pmovsxbw"
4097                    }
4098                    break;
4099                  case 'd':	 // 1 string to match.
4100                    if (NameR[16] != 'q')
4101                      break;
4102                    return Intrinsic::x86_sse41_pmovsxdq;	 // "86.sse41.pmovsxdq"
4103                  case 'w':	 // 2 strings to match.
4104                    switch (NameR[16]) {
4105                    default: break;
4106                    case 'd':	 // 1 string to match.
4107                      return Intrinsic::x86_sse41_pmovsxwd;	 // "86.sse41.pmovsxwd"
4108                    case 'q':	 // 1 string to match.
4109                      return Intrinsic::x86_sse41_pmovsxwq;	 // "86.sse41.pmovsxwq"
4110                    }
4111                    break;
4112                  }
4113                  break;
4114                case 'z':	 // 6 strings to match.
4115                  if (NameR[14] != 'x')
4116                    break;
4117                  switch (NameR[15]) {
4118                  default: break;
4119                  case 'b':	 // 3 strings to match.
4120                    switch (NameR[16]) {
4121                    default: break;
4122                    case 'd':	 // 1 string to match.
4123                      return Intrinsic::x86_sse41_pmovzxbd;	 // "86.sse41.pmovzxbd"
4124                    case 'q':	 // 1 string to match.
4125                      return Intrinsic::x86_sse41_pmovzxbq;	 // "86.sse41.pmovzxbq"
4126                    case 'w':	 // 1 string to match.
4127                      return Intrinsic::x86_sse41_pmovzxbw;	 // "86.sse41.pmovzxbw"
4128                    }
4129                    break;
4130                  case 'd':	 // 1 string to match.
4131                    if (NameR[16] != 'q')
4132                      break;
4133                    return Intrinsic::x86_sse41_pmovzxdq;	 // "86.sse41.pmovzxdq"
4134                  case 'w':	 // 2 strings to match.
4135                    switch (NameR[16]) {
4136                    default: break;
4137                    case 'd':	 // 1 string to match.
4138                      return Intrinsic::x86_sse41_pmovzxwd;	 // "86.sse41.pmovzxwd"
4139                    case 'q':	 // 1 string to match.
4140                      return Intrinsic::x86_sse41_pmovzxwq;	 // "86.sse41.pmovzxwq"
4141                    }
4142                    break;
4143                  }
4144                  break;
4145                }
4146                break;
4147              case 't':	 // 1 string to match.
4148                if (NameR.substr(11, 6) != "estnzc")
4149                  break;
4150                return Intrinsic::x86_sse41_ptestnzc;	 // "86.sse41.ptestnzc"
4151              }
4152              break;
4153            case 'r':	 // 4 strings to match.
4154              if (NameR.substr(10, 5) != "ound.")
4155                break;
4156              switch (NameR[15]) {
4157              default: break;
4158              case 'p':	 // 2 strings to match.
4159                switch (NameR[16]) {
4160                default: break;
4161                case 'd':	 // 1 string to match.
4162                  return Intrinsic::x86_sse41_round_pd;	 // "86.sse41.round.pd"
4163                case 's':	 // 1 string to match.
4164                  return Intrinsic::x86_sse41_round_ps;	 // "86.sse41.round.ps"
4165                }
4166                break;
4167              case 's':	 // 2 strings to match.
4168                switch (NameR[16]) {
4169                default: break;
4170                case 'd':	 // 1 string to match.
4171                  return Intrinsic::x86_sse41_round_sd;	 // "86.sse41.round.sd"
4172                case 's':	 // 1 string to match.
4173                  return Intrinsic::x86_sse41_round_ss;	 // "86.sse41.round.ss"
4174                }
4175                break;
4176              }
4177              break;
4178            }
4179            break;
4180          }
4181          break;
4182        case 's':	 // 2 strings to match.
4183          if (NameR.substr(6, 5) != "e3.ph")
4184            break;
4185          switch (NameR[11]) {
4186          default: break;
4187          case 'a':	 // 1 string to match.
4188            if (NameR.substr(12, 5) != "dd.sw")
4189              break;
4190            return Intrinsic::x86_ssse3_phadd_sw;	 // "86.ssse3.phadd.sw"
4191          case 's':	 // 1 string to match.
4192            if (NameR.substr(12, 5) != "ub.sw")
4193              break;
4194            return Intrinsic::x86_ssse3_phsub_sw;	 // "86.ssse3.phsub.sw"
4195          }
4196          break;
4197        }
4198        break;
4199      }
4200      break;
4201    case 18:	 // 23 strings to match.
4202      if (NameR.substr(0, 3) != "86.")
4203        break;
4204      switch (NameR[3]) {
4205      default: break;
4206      case 'a':	 // 10 strings to match.
4207        if (NameR.substr(4, 3) != "vx.")
4208          break;
4209        switch (NameR[7]) {
4210        default: break;
4211        case 'h':	 // 4 strings to match.
4212          switch (NameR[8]) {
4213          default: break;
4214          case 'a':	 // 2 strings to match.
4215            if (NameR.substr(9, 4) != "dd.p")
4216              break;
4217            switch (NameR[13]) {
4218            default: break;
4219            case 'd':	 // 1 string to match.
4220              if (NameR.substr(14, 4) != ".256")
4221                break;
4222              return Intrinsic::x86_avx_hadd_pd_256;	 // "86.avx.hadd.pd.256"
4223            case 's':	 // 1 string to match.
4224              if (NameR.substr(14, 4) != ".256")
4225                break;
4226              return Intrinsic::x86_avx_hadd_ps_256;	 // "86.avx.hadd.ps.256"
4227            }
4228            break;
4229          case 's':	 // 2 strings to match.
4230            if (NameR.substr(9, 4) != "ub.p")
4231              break;
4232            switch (NameR[13]) {
4233            default: break;
4234            case 'd':	 // 1 string to match.
4235              if (NameR.substr(14, 4) != ".256")
4236                break;
4237              return Intrinsic::x86_avx_hsub_pd_256;	 // "86.avx.hsub.pd.256"
4238            case 's':	 // 1 string to match.
4239              if (NameR.substr(14, 4) != ".256")
4240                break;
4241              return Intrinsic::x86_avx_hsub_ps_256;	 // "86.avx.hsub.ps.256"
4242            }
4243            break;
4244          }
4245          break;
4246        case 'm':	 // 2 strings to match.
4247          if (NameR.substr(8, 9) != "askload.p")
4248            break;
4249          switch (NameR[17]) {
4250          default: break;
4251          case 'd':	 // 1 string to match.
4252            return Intrinsic::x86_avx_maskload_pd;	 // "86.avx.maskload.pd"
4253          case 's':	 // 1 string to match.
4254            return Intrinsic::x86_avx_maskload_ps;	 // "86.avx.maskload.ps"
4255          }
4256          break;
4257        case 's':	 // 2 strings to match.
4258          if (NameR.substr(8, 5) != "qrt.p")
4259            break;
4260          switch (NameR[13]) {
4261          default: break;
4262          case 'd':	 // 1 string to match.
4263            if (NameR.substr(14, 4) != ".256")
4264              break;
4265            return Intrinsic::x86_avx_sqrt_pd_256;	 // "86.avx.sqrt.pd.256"
4266          case 's':	 // 1 string to match.
4267            if (NameR.substr(14, 4) != ".256")
4268              break;
4269            return Intrinsic::x86_avx_sqrt_ps_256;	 // "86.avx.sqrt.ps.256"
4270          }
4271          break;
4272        case 'v':	 // 2 strings to match.
4273          if (NameR.substr(8, 9) != "testnzc.p")
4274            break;
4275          switch (NameR[17]) {
4276          default: break;
4277          case 'd':	 // 1 string to match.
4278            return Intrinsic::x86_avx_vtestnzc_pd;	 // "86.avx.vtestnzc.pd"
4279          case 's':	 // 1 string to match.
4280            return Intrinsic::x86_avx_vtestnzc_ps;	 // "86.avx.vtestnzc.ps"
4281          }
4282          break;
4283        }
4284        break;
4285      case 's':	 // 13 strings to match.
4286        if (NameR.substr(4, 2) != "se")
4287          break;
4288        switch (NameR[6]) {
4289        default: break;
4290        case '.':	 // 2 strings to match.
4291          switch (NameR[7]) {
4292          default: break;
4293          case 'c':	 // 1 string to match.
4294            if (NameR.substr(8, 10) != "vttss2si64")
4295              break;
4296            return Intrinsic::x86_sse_cvttss2si64;	 // "86.sse.cvttss2si64"
4297          case 'u':	 // 1 string to match.
4298            if (NameR.substr(8, 10) != "comineq.ss")
4299              break;
4300            return Intrinsic::x86_sse_ucomineq_ss;	 // "86.sse.ucomineq.ss"
4301          }
4302          break;
4303        case '2':	 // 10 strings to match.
4304          if (NameR[7] != '.')
4305            break;
4306          switch (NameR[8]) {
4307          default: break;
4308          case 'c':	 // 3 strings to match.
4309            switch (NameR[9]) {
4310            default: break;
4311            case 'o':	 // 1 string to match.
4312              if (NameR.substr(10, 8) != "mineq.sd")
4313                break;
4314              return Intrinsic::x86_sse2_comineq_sd;	 // "86.sse2.comineq.sd"
4315            case 'v':	 // 2 strings to match.
4316              if (NameR.substr(10, 2) != "ts")
4317                break;
4318              switch (NameR[12]) {
4319              default: break;
4320              case 'd':	 // 1 string to match.
4321                if (NameR.substr(13, 5) != "2si64")
4322                  break;
4323                return Intrinsic::x86_sse2_cvtsd2si64;	 // "86.sse2.cvtsd2si64"
4324              case 'i':	 // 1 string to match.
4325                if (NameR.substr(13, 5) != "642sd")
4326                  break;
4327                return Intrinsic::x86_sse2_cvtsi642sd;	 // "86.sse2.cvtsi642sd"
4328              }
4329              break;
4330            }
4331            break;
4332          case 'p':	 // 2 strings to match.
4333            if (NameR[9] != 's')
4334              break;
4335            switch (NameR[10]) {
4336            default: break;
4337            case 'l':	 // 1 string to match.
4338              if (NameR.substr(11, 7) != "l.dq.bs")
4339                break;
4340              return Intrinsic::x86_sse2_psll_dq_bs;	 // "86.sse2.psll.dq.bs"
4341            case 'r':	 // 1 string to match.
4342              if (NameR.substr(11, 7) != "l.dq.bs")
4343                break;
4344              return Intrinsic::x86_sse2_psrl_dq_bs;	 // "86.sse2.psrl.dq.bs"
4345            }
4346            break;
4347          case 'u':	 // 5 strings to match.
4348            if (NameR.substr(9, 4) != "comi")
4349              break;
4350            switch (NameR[13]) {
4351            default: break;
4352            case 'e':	 // 1 string to match.
4353              if (NameR.substr(14, 4) != "q.sd")
4354                break;
4355              return Intrinsic::x86_sse2_ucomieq_sd;	 // "86.sse2.ucomieq.sd"
4356            case 'g':	 // 2 strings to match.
4357              switch (NameR[14]) {
4358              default: break;
4359              case 'e':	 // 1 string to match.
4360                if (NameR.substr(15, 3) != ".sd")
4361                  break;
4362                return Intrinsic::x86_sse2_ucomige_sd;	 // "86.sse2.ucomige.sd"
4363              case 't':	 // 1 string to match.
4364                if (NameR.substr(15, 3) != ".sd")
4365                  break;
4366                return Intrinsic::x86_sse2_ucomigt_sd;	 // "86.sse2.ucomigt.sd"
4367              }
4368              break;
4369            case 'l':	 // 2 strings to match.
4370              switch (NameR[14]) {
4371              default: break;
4372              case 'e':	 // 1 string to match.
4373                if (NameR.substr(15, 3) != ".sd")
4374                  break;
4375                return Intrinsic::x86_sse2_ucomile_sd;	 // "86.sse2.ucomile.sd"
4376              case 't':	 // 1 string to match.
4377                if (NameR.substr(15, 3) != ".sd")
4378                  break;
4379                return Intrinsic::x86_sse2_ucomilt_sd;	 // "86.sse2.ucomilt.sd"
4380              }
4381              break;
4382            }
4383            break;
4384          }
4385          break;
4386        case '4':	 // 1 string to match.
4387          if (NameR.substr(7, 11) != "1.extractps")
4388            break;
4389          return Intrinsic::x86_sse41_extractps;	 // "86.sse41.extractps"
4390        }
4391        break;
4392      }
4393      break;
4394    case 19:	 // 27 strings to match.
4395      if (NameR.substr(0, 3) != "86.")
4396        break;
4397      switch (NameR[3]) {
4398      default: break;
4399      case 'a':	 // 17 strings to match.
4400        switch (NameR[4]) {
4401        default: break;
4402        case 'e':	 // 2 strings to match.
4403          if (NameR.substr(5, 7) != "sni.aes")
4404            break;
4405          switch (NameR[12]) {
4406          default: break;
4407          case 'd':	 // 1 string to match.
4408            if (NameR.substr(13, 6) != "eclast")
4409              break;
4410            return Intrinsic::x86_aesni_aesdeclast;	 // "86.aesni.aesdeclast"
4411          case 'e':	 // 1 string to match.
4412            if (NameR.substr(13, 6) != "nclast")
4413              break;
4414            return Intrinsic::x86_aesni_aesenclast;	 // "86.aesni.aesenclast"
4415          }
4416          break;
4417        case 'v':	 // 15 strings to match.
4418          if (NameR.substr(5, 2) != "x.")
4419            break;
4420          switch (NameR[7]) {
4421          default: break;
4422          case 'b':	 // 2 strings to match.
4423            if (NameR.substr(8, 6) != "lend.p")
4424              break;
4425            switch (NameR[14]) {
4426            default: break;
4427            case 'd':	 // 1 string to match.
4428              if (NameR.substr(15, 4) != ".256")
4429                break;
4430              return Intrinsic::x86_avx_blend_pd_256;	 // "86.avx.blend.pd.256"
4431            case 's':	 // 1 string to match.
4432              if (NameR.substr(15, 4) != ".256")
4433                break;
4434              return Intrinsic::x86_avx_blend_ps_256;	 // "86.avx.blend.ps.256"
4435            }
4436            break;
4437          case 'l':	 // 3 strings to match.
4438            if (NameR.substr(8, 5) != "oadu.")
4439              break;
4440            switch (NameR[13]) {
4441            default: break;
4442            case 'd':	 // 1 string to match.
4443              if (NameR.substr(14, 5) != "q.256")
4444                break;
4445              return Intrinsic::x86_avx_loadu_dq_256;	 // "86.avx.loadu.dq.256"
4446            case 'p':	 // 2 strings to match.
4447              switch (NameR[14]) {
4448              default: break;
4449              case 'd':	 // 1 string to match.
4450                if (NameR.substr(15, 4) != ".256")
4451                  break;
4452                return Intrinsic::x86_avx_loadu_pd_256;	 // "86.avx.loadu.pd.256"
4453              case 's':	 // 1 string to match.
4454                if (NameR.substr(15, 4) != ".256")
4455                  break;
4456                return Intrinsic::x86_avx_loadu_ps_256;	 // "86.avx.loadu.ps.256"
4457              }
4458              break;
4459            }
4460            break;
4461          case 'm':	 // 5 strings to match.
4462            switch (NameR[8]) {
4463            default: break;
4464            case 'a':	 // 2 strings to match.
4465              if (NameR.substr(9, 9) != "skstore.p")
4466                break;
4467              switch (NameR[18]) {
4468              default: break;
4469              case 'd':	 // 1 string to match.
4470                return Intrinsic::x86_avx_maskstore_pd;	 // "86.avx.maskstore.pd"
4471              case 's':	 // 1 string to match.
4472                return Intrinsic::x86_avx_maskstore_ps;	 // "86.avx.maskstore.ps"
4473              }
4474              break;
4475            case 'o':	 // 3 strings to match.
4476              if (NameR.substr(9, 4) != "vnt.")
4477                break;
4478              switch (NameR[13]) {
4479              default: break;
4480              case 'd':	 // 1 string to match.
4481                if (NameR.substr(14, 5) != "q.256")
4482                  break;
4483                return Intrinsic::x86_avx_movnt_dq_256;	 // "86.avx.movnt.dq.256"
4484              case 'p':	 // 2 strings to match.
4485                switch (NameR[14]) {
4486                default: break;
4487                case 'd':	 // 1 string to match.
4488                  if (NameR.substr(15, 4) != ".256")
4489                    break;
4490                  return Intrinsic::x86_avx_movnt_pd_256;	 // "86.avx.movnt.pd.256"
4491                case 's':	 // 1 string to match.
4492                  if (NameR.substr(15, 4) != ".256")
4493                    break;
4494                  return Intrinsic::x86_avx_movnt_ps_256;	 // "86.avx.movnt.ps.256"
4495                }
4496                break;
4497              }
4498              break;
4499            }
4500            break;
4501          case 'p':	 // 1 string to match.
4502            if (NameR.substr(8, 11) != "testnzc.256")
4503              break;
4504            return Intrinsic::x86_avx_ptestnzc_256;	 // "86.avx.ptestnzc.256"
4505          case 'r':	 // 3 strings to match.
4506            switch (NameR[8]) {
4507            default: break;
4508            case 'o':	 // 2 strings to match.
4509              if (NameR.substr(9, 5) != "und.p")
4510                break;
4511              switch (NameR[14]) {
4512              default: break;
4513              case 'd':	 // 1 string to match.
4514                if (NameR.substr(15, 4) != ".256")
4515                  break;
4516                return Intrinsic::x86_avx_round_pd_256;	 // "86.avx.round.pd.256"
4517              case 's':	 // 1 string to match.
4518                if (NameR.substr(15, 4) != ".256")
4519                  break;
4520                return Intrinsic::x86_avx_round_ps_256;	 // "86.avx.round.ps.256"
4521              }
4522              break;
4523            case 's':	 // 1 string to match.
4524              if (NameR.substr(9, 10) != "qrt.ps.256")
4525                break;
4526              return Intrinsic::x86_avx_rsqrt_ps_256;	 // "86.avx.rsqrt.ps.256"
4527            }
4528            break;
4529          case 'v':	 // 1 string to match.
4530            if (NameR.substr(8, 11) != "broadcastss")
4531              break;
4532            return Intrinsic::x86_avx_vbroadcastss;	 // "86.avx.vbroadcastss"
4533          }
4534          break;
4535        }
4536        break;
4537      case 's':	 // 10 strings to match.
4538        if (NameR[4] != 's')
4539          break;
4540        switch (NameR[5]) {
4541        default: break;
4542        case 'e':	 // 6 strings to match.
4543          switch (NameR[6]) {
4544          default: break;
4545          case '2':	 // 3 strings to match.
4546            if (NameR[7] != '.')
4547              break;
4548            switch (NameR[8]) {
4549            default: break;
4550            case 'c':	 // 1 string to match.
4551              if (NameR.substr(9, 10) != "vttsd2si64")
4552                break;
4553              return Intrinsic::x86_sse2_cvttsd2si64;	 // "86.sse2.cvttsd2si64"
4554            case 'm':	 // 1 string to match.
4555              if (NameR.substr(9, 10) != "askmov.dqu")
4556                break;
4557              return Intrinsic::x86_sse2_maskmov_dqu;	 // "86.sse2.maskmov.dqu"
4558            case 'u':	 // 1 string to match.
4559              if (NameR.substr(9, 10) != "comineq.sd")
4560                break;
4561              return Intrinsic::x86_sse2_ucomineq_sd;	 // "86.sse2.ucomineq.sd"
4562            }
4563            break;
4564          case '4':	 // 3 strings to match.
4565            switch (NameR[7]) {
4566            default: break;
4567            case '1':	 // 1 string to match.
4568              if (NameR.substr(8, 11) != ".phminposuw")
4569                break;
4570              return Intrinsic::x86_sse41_phminposuw;	 // "86.sse41.phminposuw"
4571            case '2':	 // 2 strings to match.
4572              if (NameR.substr(8, 7) != ".crc32.")
4573                break;
4574              switch (NameR[15]) {
4575              default: break;
4576              case '3':	 // 1 string to match.
4577                if (NameR.substr(16, 3) != "2.8")
4578                  break;
4579                return Intrinsic::x86_sse42_crc32_32_8;	 // "86.sse42.crc32.32.8"
4580              case '6':	 // 1 string to match.
4581                if (NameR.substr(16, 3) != "4.8")
4582                  break;
4583                return Intrinsic::x86_sse42_crc32_64_8;	 // "86.sse42.crc32.64.8"
4584              }
4585              break;
4586            }
4587            break;
4588          }
4589          break;
4590        case 's':	 // 4 strings to match.
4591          if (NameR.substr(6, 4) != "e3.p")
4592            break;
4593          switch (NameR[10]) {
4594          default: break;
4595          case 'a':	 // 3 strings to match.
4596            if (NameR.substr(11, 3) != "bs.")
4597              break;
4598            switch (NameR[14]) {
4599            default: break;
4600            case 'b':	 // 1 string to match.
4601              if (NameR.substr(15, 4) != ".128")
4602                break;
4603              return Intrinsic::x86_ssse3_pabs_b_128;	 // "86.ssse3.pabs.b.128"
4604            case 'd':	 // 1 string to match.
4605              if (NameR.substr(15, 4) != ".128")
4606                break;
4607              return Intrinsic::x86_ssse3_pabs_d_128;	 // "86.ssse3.pabs.d.128"
4608            case 'w':	 // 1 string to match.
4609              if (NameR.substr(15, 4) != ".128")
4610                break;
4611              return Intrinsic::x86_ssse3_pabs_w_128;	 // "86.ssse3.pabs.w.128"
4612            }
4613            break;
4614          case 'm':	 // 1 string to match.
4615            if (NameR.substr(11, 8) != "ul.hr.sw")
4616              break;
4617            return Intrinsic::x86_ssse3_pmul_hr_sw;	 // "86.ssse3.pmul.hr.sw"
4618          }
4619          break;
4620        }
4621        break;
4622      }
4623      break;
4624    case 20:	 // 35 strings to match.
4625      if (NameR.substr(0, 3) != "86.")
4626        break;
4627      switch (NameR[3]) {
4628      default: break;
4629      case 'a':	 // 19 strings to match.
4630        if (NameR.substr(4, 3) != "vx.")
4631          break;
4632        switch (NameR[7]) {
4633        default: break;
4634        case 'a':	 // 2 strings to match.
4635          if (NameR.substr(8, 7) != "ddsub.p")
4636            break;
4637          switch (NameR[15]) {
4638          default: break;
4639          case 'd':	 // 1 string to match.
4640            if (NameR.substr(16, 4) != ".256")
4641              break;
4642            return Intrinsic::x86_avx_addsub_pd_256;	 // "86.avx.addsub.pd.256"
4643          case 's':	 // 1 string to match.
4644            if (NameR.substr(16, 4) != ".256")
4645              break;
4646            return Intrinsic::x86_avx_addsub_ps_256;	 // "86.avx.addsub.ps.256"
4647          }
4648          break;
4649        case 'b':	 // 2 strings to match.
4650          if (NameR.substr(8, 7) != "lendv.p")
4651            break;
4652          switch (NameR[15]) {
4653          default: break;
4654          case 'd':	 // 1 string to match.
4655            if (NameR.substr(16, 4) != ".256")
4656              break;
4657            return Intrinsic::x86_avx_blendv_pd_256;	 // "86.avx.blendv.pd.256"
4658          case 's':	 // 1 string to match.
4659            if (NameR.substr(16, 4) != ".256")
4660              break;
4661            return Intrinsic::x86_avx_blendv_ps_256;	 // "86.avx.blendv.ps.256"
4662          }
4663          break;
4664        case 'c':	 // 4 strings to match.
4665          if (NameR.substr(8, 2) != "vt")
4666            break;
4667          switch (NameR[10]) {
4668          default: break;
4669          case '.':	 // 2 strings to match.
4670            if (NameR[11] != 'p')
4671              break;
4672            switch (NameR[12]) {
4673            default: break;
4674            case 'd':	 // 1 string to match.
4675              if (NameR.substr(13, 7) != "2dq.256")
4676                break;
4677              return Intrinsic::x86_avx_cvt_pd2dq_256;	 // "86.avx.cvt.pd2dq.256"
4678            case 's':	 // 1 string to match.
4679              if (NameR.substr(13, 7) != "2dq.256")
4680                break;
4681              return Intrinsic::x86_avx_cvt_ps2dq_256;	 // "86.avx.cvt.ps2dq.256"
4682            }
4683            break;
4684          case 'd':	 // 2 strings to match.
4685            if (NameR.substr(11, 4) != "q2.p")
4686              break;
4687            switch (NameR[15]) {
4688            default: break;
4689            case 'd':	 // 1 string to match.
4690              if (NameR.substr(16, 4) != ".256")
4691                break;
4692              return Intrinsic::x86_avx_cvtdq2_pd_256;	 // "86.avx.cvtdq2.pd.256"
4693            case 's':	 // 1 string to match.
4694              if (NameR.substr(16, 4) != ".256")
4695                break;
4696              return Intrinsic::x86_avx_cvtdq2_ps_256;	 // "86.avx.cvtdq2.ps.256"
4697            }
4698            break;
4699          }
4700          break;
4701        case 'm':	 // 2 strings to match.
4702          if (NameR.substr(8, 7) != "ovmsk.p")
4703            break;
4704          switch (NameR[15]) {
4705          default: break;
4706          case 'd':	 // 1 string to match.
4707            if (NameR.substr(16, 4) != ".256")
4708              break;
4709            return Intrinsic::x86_avx_movmsk_pd_256;	 // "86.avx.movmsk.pd.256"
4710          case 's':	 // 1 string to match.
4711            if (NameR.substr(16, 4) != ".256")
4712              break;
4713            return Intrinsic::x86_avx_movmsk_ps_256;	 // "86.avx.movmsk.ps.256"
4714          }
4715          break;
4716        case 's':	 // 3 strings to match.
4717          if (NameR.substr(8, 6) != "toreu.")
4718            break;
4719          switch (NameR[14]) {
4720          default: break;
4721          case 'd':	 // 1 string to match.
4722            if (NameR.substr(15, 5) != "q.256")
4723              break;
4724            return Intrinsic::x86_avx_storeu_dq_256;	 // "86.avx.storeu.dq.256"
4725          case 'p':	 // 2 strings to match.
4726            switch (NameR[15]) {
4727            default: break;
4728            case 'd':	 // 1 string to match.
4729              if (NameR.substr(16, 4) != ".256")
4730                break;
4731              return Intrinsic::x86_avx_storeu_pd_256;	 // "86.avx.storeu.pd.256"
4732            case 's':	 // 1 string to match.
4733              if (NameR.substr(16, 4) != ".256")
4734                break;
4735              return Intrinsic::x86_avx_storeu_ps_256;	 // "86.avx.storeu.ps.256"
4736            }
4737            break;
4738          }
4739          break;
4740        case 'v':	 // 6 strings to match.
4741          switch (NameR[8]) {
4742          default: break;
4743          case 'p':	 // 2 strings to match.
4744            if (NameR.substr(9, 10) != "ermilvar.p")
4745              break;
4746            switch (NameR[19]) {
4747            default: break;
4748            case 'd':	 // 1 string to match.
4749              return Intrinsic::x86_avx_vpermilvar_pd;	 // "86.avx.vpermilvar.pd"
4750            case 's':	 // 1 string to match.
4751              return Intrinsic::x86_avx_vpermilvar_ps;	 // "86.avx.vpermilvar.ps"
4752            }
4753            break;
4754          case 't':	 // 4 strings to match.
4755            if (NameR.substr(9, 3) != "est")
4756              break;
4757            switch (NameR[12]) {
4758            default: break;
4759            case 'c':	 // 2 strings to match.
4760              if (NameR.substr(13, 2) != ".p")
4761                break;
4762              switch (NameR[15]) {
4763              default: break;
4764              case 'd':	 // 1 string to match.
4765                if (NameR.substr(16, 4) != ".256")
4766                  break;
4767                return Intrinsic::x86_avx_vtestc_pd_256;	 // "86.avx.vtestc.pd.256"
4768              case 's':	 // 1 string to match.
4769                if (NameR.substr(16, 4) != ".256")
4770                  break;
4771                return Intrinsic::x86_avx_vtestc_ps_256;	 // "86.avx.vtestc.ps.256"
4772              }
4773              break;
4774            case 'z':	 // 2 strings to match.
4775              if (NameR.substr(13, 2) != ".p")
4776                break;
4777              switch (NameR[15]) {
4778              default: break;
4779              case 'd':	 // 1 string to match.
4780                if (NameR.substr(16, 4) != ".256")
4781                  break;
4782                return Intrinsic::x86_avx_vtestz_pd_256;	 // "86.avx.vtestz.pd.256"
4783              case 's':	 // 1 string to match.
4784                if (NameR.substr(16, 4) != ".256")
4785                  break;
4786                return Intrinsic::x86_avx_vtestz_ps_256;	 // "86.avx.vtestz.ps.256"
4787              }
4788              break;
4789            }
4790            break;
4791          }
4792          break;
4793        }
4794        break;
4795      case 's':	 // 16 strings to match.
4796        if (NameR[4] != 's')
4797          break;
4798        switch (NameR[5]) {
4799        default: break;
4800        case 'e':	 // 7 strings to match.
4801          switch (NameR[6]) {
4802          default: break;
4803          case '2':	 // 4 strings to match.
4804            if (NameR.substr(7, 2) != ".p")
4805              break;
4806            switch (NameR[9]) {
4807            default: break;
4808            case 'a':	 // 3 strings to match.
4809              if (NameR.substr(10, 2) != "ck")
4810                break;
4811              switch (NameR[12]) {
4812              default: break;
4813              case 's':	 // 2 strings to match.
4814                if (NameR[13] != 's')
4815                  break;
4816                switch (NameR[14]) {
4817                default: break;
4818                case 'd':	 // 1 string to match.
4819                  if (NameR.substr(15, 5) != "w.128")
4820                    break;
4821                  return Intrinsic::x86_sse2_packssdw_128;	 // "86.sse2.packssdw.128"
4822                case 'w':	 // 1 string to match.
4823                  if (NameR.substr(15, 5) != "b.128")
4824                    break;
4825                  return Intrinsic::x86_sse2_packsswb_128;	 // "86.sse2.packsswb.128"
4826                }
4827                break;
4828              case 'u':	 // 1 string to match.
4829                if (NameR.substr(13, 7) != "swb.128")
4830                  break;
4831                return Intrinsic::x86_sse2_packuswb_128;	 // "86.sse2.packuswb.128"
4832              }
4833              break;
4834            case 'm':	 // 1 string to match.
4835              if (NameR.substr(10, 10) != "ovmskb.128")
4836                break;
4837              return Intrinsic::x86_sse2_pmovmskb_128;	 // "86.sse2.pmovmskb.128"
4838            }
4839            break;
4840          case '4':	 // 3 strings to match.
4841            if (NameR.substr(7, 8) != "2.crc32.")
4842              break;
4843            switch (NameR[15]) {
4844            default: break;
4845            case '3':	 // 2 strings to match.
4846              if (NameR.substr(16, 2) != "2.")
4847                break;
4848              switch (NameR[18]) {
4849              default: break;
4850              case '1':	 // 1 string to match.
4851                if (NameR[19] != '6')
4852                  break;
4853                return Intrinsic::x86_sse42_crc32_32_16;	 // "86.sse42.crc32.32.16"
4854              case '3':	 // 1 string to match.
4855                if (NameR[19] != '2')
4856                  break;
4857                return Intrinsic::x86_sse42_crc32_32_32;	 // "86.sse42.crc32.32.32"
4858              }
4859              break;
4860            case '6':	 // 1 string to match.
4861              if (NameR.substr(16, 4) != "4.64")
4862                break;
4863              return Intrinsic::x86_sse42_crc32_64_64;	 // "86.sse42.crc32.64.64"
4864            }
4865            break;
4866          }
4867          break;
4868        case 's':	 // 9 strings to match.
4869          if (NameR.substr(6, 4) != "e3.p")
4870            break;
4871          switch (NameR[10]) {
4872          default: break;
4873          case 'h':	 // 4 strings to match.
4874            switch (NameR[11]) {
4875            default: break;
4876            case 'a':	 // 2 strings to match.
4877              if (NameR.substr(12, 3) != "dd.")
4878                break;
4879              switch (NameR[15]) {
4880              default: break;
4881              case 'd':	 // 1 string to match.
4882                if (NameR.substr(16, 4) != ".128")
4883                  break;
4884                return Intrinsic::x86_ssse3_phadd_d_128;	 // "86.ssse3.phadd.d.128"
4885              case 'w':	 // 1 string to match.
4886                if (NameR.substr(16, 4) != ".128")
4887                  break;
4888                return Intrinsic::x86_ssse3_phadd_w_128;	 // "86.ssse3.phadd.w.128"
4889              }
4890              break;
4891            case 's':	 // 2 strings to match.
4892              if (NameR.substr(12, 3) != "ub.")
4893                break;
4894              switch (NameR[15]) {
4895              default: break;
4896              case 'd':	 // 1 string to match.
4897                if (NameR.substr(16, 4) != ".128")
4898                  break;
4899                return Intrinsic::x86_ssse3_phsub_d_128;	 // "86.ssse3.phsub.d.128"
4900              case 'w':	 // 1 string to match.
4901                if (NameR.substr(16, 4) != ".128")
4902                  break;
4903                return Intrinsic::x86_ssse3_phsub_w_128;	 // "86.ssse3.phsub.w.128"
4904              }
4905              break;
4906            }
4907            break;
4908          case 'm':	 // 1 string to match.
4909            if (NameR.substr(11, 9) != "add.ub.sw")
4910              break;
4911            return Intrinsic::x86_ssse3_pmadd_ub_sw;	 // "86.ssse3.pmadd.ub.sw"
4912          case 's':	 // 4 strings to match.
4913            switch (NameR[11]) {
4914            default: break;
4915            case 'h':	 // 1 string to match.
4916              if (NameR.substr(12, 8) != "uf.b.128")
4917                break;
4918              return Intrinsic::x86_ssse3_pshuf_b_128;	 // "86.ssse3.pshuf.b.128"
4919            case 'i':	 // 3 strings to match.
4920              if (NameR.substr(12, 3) != "gn.")
4921                break;
4922              switch (NameR[15]) {
4923              default: break;
4924              case 'b':	 // 1 string to match.
4925                if (NameR.substr(16, 4) != ".128")
4926                  break;
4927                return Intrinsic::x86_ssse3_psign_b_128;	 // "86.ssse3.psign.b.128"
4928              case 'd':	 // 1 string to match.
4929                if (NameR.substr(16, 4) != ".128")
4930                  break;
4931                return Intrinsic::x86_ssse3_psign_d_128;	 // "86.ssse3.psign.d.128"
4932              case 'w':	 // 1 string to match.
4933                if (NameR.substr(16, 4) != ".128")
4934                  break;
4935                return Intrinsic::x86_ssse3_psign_w_128;	 // "86.ssse3.psign.w.128"
4936              }
4937              break;
4938            }
4939            break;
4940          }
4941          break;
4942        }
4943        break;
4944      }
4945      break;
4946    case 21:	 // 12 strings to match.
4947      if (NameR.substr(0, 3) != "86.")
4948        break;
4949      switch (NameR[3]) {
4950      default: break;
4951      case 'a':	 // 6 strings to match.
4952        if (NameR.substr(4, 3) != "vx.")
4953          break;
4954        switch (NameR[7]) {
4955        default: break;
4956        case 'c':	 // 4 strings to match.
4957          if (NameR.substr(8, 2) != "vt")
4958            break;
4959          switch (NameR[10]) {
4960          default: break;
4961          case '.':	 // 2 strings to match.
4962            if (NameR[11] != 'p')
4963              break;
4964            switch (NameR[12]) {
4965            default: break;
4966            case 'd':	 // 1 string to match.
4967              if (NameR.substr(13, 8) != "2.ps.256")
4968                break;
4969              return Intrinsic::x86_avx_cvt_pd2_ps_256;	 // "86.avx.cvt.pd2.ps.256"
4970            case 's':	 // 1 string to match.
4971              if (NameR.substr(13, 8) != "2.pd.256")
4972                break;
4973              return Intrinsic::x86_avx_cvt_ps2_pd_256;	 // "86.avx.cvt.ps2.pd.256"
4974            }
4975            break;
4976          case 't':	 // 2 strings to match.
4977            if (NameR.substr(11, 2) != ".p")
4978              break;
4979            switch (NameR[13]) {
4980            default: break;
4981            case 'd':	 // 1 string to match.
4982              if (NameR.substr(14, 7) != "2dq.256")
4983                break;
4984              return Intrinsic::x86_avx_cvtt_pd2dq_256;	 // "86.avx.cvtt.pd2dq.256"
4985            case 's':	 // 1 string to match.
4986              if (NameR.substr(14, 7) != "2dq.256")
4987                break;
4988              return Intrinsic::x86_avx_cvtt_ps2dq_256;	 // "86.avx.cvtt.ps2dq.256"
4989            }
4990            break;
4991          }
4992          break;
4993        case 'v':	 // 2 strings to match.
4994          if (NameR.substr(8, 8) != "permil.p")
4995            break;
4996          switch (NameR[16]) {
4997          default: break;
4998          case 'd':	 // 1 string to match.
4999            if (NameR.substr(17, 4) != ".256")
5000              break;
5001            return Intrinsic::x86_avx_vpermil_pd_256;	 // "86.avx.vpermil.pd.256"
5002          case 's':	 // 1 string to match.
5003            if (NameR.substr(17, 4) != ".256")
5004              break;
5005            return Intrinsic::x86_avx_vpermil_ps_256;	 // "86.avx.vpermil.ps.256"
5006          }
5007          break;
5008        }
5009        break;
5010      case 's':	 // 6 strings to match.
5011        if (NameR[4] != 's')
5012          break;
5013        switch (NameR[5]) {
5014        default: break;
5015        case 'e':	 // 4 strings to match.
5016          if (NameR.substr(6, 7) != "42.pcmp")
5017            break;
5018          switch (NameR[13]) {
5019          default: break;
5020          case 'e':	 // 2 strings to match.
5021            if (NameR.substr(14, 3) != "str")
5022              break;
5023            switch (NameR[17]) {
5024            default: break;
5025            case 'i':	 // 1 string to match.
5026              if (NameR.substr(18, 3) != "128")
5027                break;
5028              return Intrinsic::x86_sse42_pcmpestri128;	 // "86.sse42.pcmpestri128"
5029            case 'm':	 // 1 string to match.
5030              if (NameR.substr(18, 3) != "128")
5031                break;
5032              return Intrinsic::x86_sse42_pcmpestrm128;	 // "86.sse42.pcmpestrm128"
5033            }
5034            break;
5035          case 'i':	 // 2 strings to match.
5036            if (NameR.substr(14, 3) != "str")
5037              break;
5038            switch (NameR[17]) {
5039            default: break;
5040            case 'i':	 // 1 string to match.
5041              if (NameR.substr(18, 3) != "128")
5042                break;
5043              return Intrinsic::x86_sse42_pcmpistri128;	 // "86.sse42.pcmpistri128"
5044            case 'm':	 // 1 string to match.
5045              if (NameR.substr(18, 3) != "128")
5046                break;
5047              return Intrinsic::x86_sse42_pcmpistrm128;	 // "86.sse42.pcmpistrm128"
5048            }
5049            break;
5050          }
5051          break;
5052        case 's':	 // 2 strings to match.
5053          if (NameR.substr(6, 5) != "e3.ph")
5054            break;
5055          switch (NameR[11]) {
5056          default: break;
5057          case 'a':	 // 1 string to match.
5058            if (NameR.substr(12, 9) != "dd.sw.128")
5059              break;
5060            return Intrinsic::x86_ssse3_phadd_sw_128;	 // "86.ssse3.phadd.sw.128"
5061          case 's':	 // 1 string to match.
5062            if (NameR.substr(12, 9) != "ub.sw.128")
5063              break;
5064            return Intrinsic::x86_ssse3_phsub_sw_128;	 // "86.ssse3.phsub.sw.128"
5065          }
5066          break;
5067        }
5068        break;
5069      }
5070      break;
5071    case 22:	 // 14 strings to match.
5072      if (NameR.substr(0, 3) != "86.")
5073        break;
5074      switch (NameR[3]) {
5075      default: break;
5076      case 'a':	 // 4 strings to match.
5077        if (NameR.substr(4, 3) != "vx.")
5078          break;
5079        switch (NameR[7]) {
5080        default: break;
5081        case 'm':	 // 2 strings to match.
5082          if (NameR.substr(8, 9) != "askload.p")
5083            break;
5084          switch (NameR[17]) {
5085          default: break;
5086          case 'd':	 // 1 string to match.
5087            if (NameR.substr(18, 4) != ".256")
5088              break;
5089            return Intrinsic::x86_avx_maskload_pd_256;	 // "86.avx.maskload.pd.256"
5090          case 's':	 // 1 string to match.
5091            if (NameR.substr(18, 4) != ".256")
5092              break;
5093            return Intrinsic::x86_avx_maskload_ps_256;	 // "86.avx.maskload.ps.256"
5094          }
5095          break;
5096        case 'v':	 // 2 strings to match.
5097          if (NameR.substr(8, 9) != "testnzc.p")
5098            break;
5099          switch (NameR[17]) {
5100          default: break;
5101          case 'd':	 // 1 string to match.
5102            if (NameR.substr(18, 4) != ".256")
5103              break;
5104            return Intrinsic::x86_avx_vtestnzc_pd_256;	 // "86.avx.vtestnzc.pd.256"
5105          case 's':	 // 1 string to match.
5106            if (NameR.substr(18, 4) != ".256")
5107              break;
5108            return Intrinsic::x86_avx_vtestnzc_ps_256;	 // "86.avx.vtestnzc.ps.256"
5109          }
5110          break;
5111        }
5112        break;
5113      case 's':	 // 10 strings to match.
5114        if (NameR.substr(4, 9) != "se42.pcmp")
5115          break;
5116        switch (NameR[13]) {
5117        default: break;
5118        case 'e':	 // 5 strings to match.
5119          if (NameR.substr(14, 4) != "stri")
5120            break;
5121          switch (NameR[18]) {
5122          default: break;
5123          case 'a':	 // 1 string to match.
5124            if (NameR.substr(19, 3) != "128")
5125              break;
5126            return Intrinsic::x86_sse42_pcmpestria128;	 // "86.sse42.pcmpestria128"
5127          case 'c':	 // 1 string to match.
5128            if (NameR.substr(19, 3) != "128")
5129              break;
5130            return Intrinsic::x86_sse42_pcmpestric128;	 // "86.sse42.pcmpestric128"
5131          case 'o':	 // 1 string to match.
5132            if (NameR.substr(19, 3) != "128")
5133              break;
5134            return Intrinsic::x86_sse42_pcmpestrio128;	 // "86.sse42.pcmpestrio128"
5135          case 's':	 // 1 string to match.
5136            if (NameR.substr(19, 3) != "128")
5137              break;
5138            return Intrinsic::x86_sse42_pcmpestris128;	 // "86.sse42.pcmpestris128"
5139          case 'z':	 // 1 string to match.
5140            if (NameR.substr(19, 3) != "128")
5141              break;
5142            return Intrinsic::x86_sse42_pcmpestriz128;	 // "86.sse42.pcmpestriz128"
5143          }
5144          break;
5145        case 'i':	 // 5 strings to match.
5146          if (NameR.substr(14, 4) != "stri")
5147            break;
5148          switch (NameR[18]) {
5149          default: break;
5150          case 'a':	 // 1 string to match.
5151            if (NameR.substr(19, 3) != "128")
5152              break;
5153            return Intrinsic::x86_sse42_pcmpistria128;	 // "86.sse42.pcmpistria128"
5154          case 'c':	 // 1 string to match.
5155            if (NameR.substr(19, 3) != "128")
5156              break;
5157            return Intrinsic::x86_sse42_pcmpistric128;	 // "86.sse42.pcmpistric128"
5158          case 'o':	 // 1 string to match.
5159            if (NameR.substr(19, 3) != "128")
5160              break;
5161            return Intrinsic::x86_sse42_pcmpistrio128;	 // "86.sse42.pcmpistrio128"
5162          case 's':	 // 1 string to match.
5163            if (NameR.substr(19, 3) != "128")
5164              break;
5165            return Intrinsic::x86_sse42_pcmpistris128;	 // "86.sse42.pcmpistris128"
5166          case 'z':	 // 1 string to match.
5167            if (NameR.substr(19, 3) != "128")
5168              break;
5169            return Intrinsic::x86_sse42_pcmpistriz128;	 // "86.sse42.pcmpistriz128"
5170          }
5171          break;
5172        }
5173        break;
5174      }
5175      break;
5176    case 23:	 // 4 strings to match.
5177      if (NameR.substr(0, 3) != "86.")
5178        break;
5179      switch (NameR[3]) {
5180      default: break;
5181      case 'a':	 // 3 strings to match.
5182        if (NameR.substr(4, 3) != "vx.")
5183          break;
5184        switch (NameR[7]) {
5185        default: break;
5186        case 'm':	 // 2 strings to match.
5187          if (NameR.substr(8, 10) != "askstore.p")
5188            break;
5189          switch (NameR[18]) {
5190          default: break;
5191          case 'd':	 // 1 string to match.
5192            if (NameR.substr(19, 4) != ".256")
5193              break;
5194            return Intrinsic::x86_avx_maskstore_pd_256;	 // "86.avx.maskstore.pd.256"
5195          case 's':	 // 1 string to match.
5196            if (NameR.substr(19, 4) != ".256")
5197              break;
5198            return Intrinsic::x86_avx_maskstore_ps_256;	 // "86.avx.maskstore.ps.256"
5199          }
5200          break;
5201        case 'v':	 // 1 string to match.
5202          if (NameR.substr(8, 15) != "broadcastss.256")
5203            break;
5204          return Intrinsic::x86_avx_vbroadcastss_256;	 // "86.avx.vbroadcastss.256"
5205        }
5206        break;
5207      case 's':	 // 1 string to match.
5208        if (NameR.substr(4, 19) != "sse3.pmul.hr.sw.128")
5209          break;
5210        return Intrinsic::x86_ssse3_pmul_hr_sw_128;	 // "86.ssse3.pmul.hr.sw.128"
5211      }
5212      break;
5213    case 24:	 // 8 strings to match.
5214      if (NameR.substr(0, 3) != "86.")
5215        break;
5216      switch (NameR[3]) {
5217      default: break;
5218      case 'a':	 // 7 strings to match.
5219        switch (NameR[4]) {
5220        default: break;
5221        case 'e':	 // 1 string to match.
5222          if (NameR.substr(5, 19) != "sni.aeskeygenassist")
5223            break;
5224          return Intrinsic::x86_aesni_aeskeygenassist;	 // "86.aesni.aeskeygenassist"
5225        case 'v':	 // 6 strings to match.
5226          if (NameR.substr(5, 3) != "x.v")
5227            break;
5228          switch (NameR[8]) {
5229          default: break;
5230          case 'b':	 // 1 string to match.
5231            if (NameR.substr(9, 15) != "roadcast.sd.256")
5232              break;
5233            return Intrinsic::x86_avx_vbroadcast_sd_256;	 // "86.avx.vbroadcast.sd.256"
5234          case 'p':	 // 5 strings to match.
5235            if (NameR.substr(9, 3) != "erm")
5236              break;
5237            switch (NameR[12]) {
5238            default: break;
5239            case '2':	 // 3 strings to match.
5240              if (NameR.substr(13, 5) != "f128.")
5241                break;
5242              switch (NameR[18]) {
5243              default: break;
5244              case 'p':	 // 2 strings to match.
5245                switch (NameR[19]) {
5246                default: break;
5247                case 'd':	 // 1 string to match.
5248                  if (NameR.substr(20, 4) != ".256")
5249                    break;
5250                  return Intrinsic::x86_avx_vperm2f128_pd_256;	 // "86.avx.vperm2f128.pd.256"
5251                case 's':	 // 1 string to match.
5252                  if (NameR.substr(20, 4) != ".256")
5253                    break;
5254                  return Intrinsic::x86_avx_vperm2f128_ps_256;	 // "86.avx.vperm2f128.ps.256"
5255                }
5256                break;
5257              case 's':	 // 1 string to match.
5258                if (NameR.substr(19, 5) != "i.256")
5259                  break;
5260                return Intrinsic::x86_avx_vperm2f128_si_256;	 // "86.avx.vperm2f128.si.256"
5261              }
5262              break;
5263            case 'i':	 // 2 strings to match.
5264              if (NameR.substr(13, 6) != "lvar.p")
5265                break;
5266              switch (NameR[19]) {
5267              default: break;
5268              case 'd':	 // 1 string to match.
5269                if (NameR.substr(20, 4) != ".256")
5270                  break;
5271                return Intrinsic::x86_avx_vpermilvar_pd_256;	 // "86.avx.vpermilvar.pd.256"
5272              case 's':	 // 1 string to match.
5273                if (NameR.substr(20, 4) != ".256")
5274                  break;
5275                return Intrinsic::x86_avx_vpermilvar_ps_256;	 // "86.avx.vpermilvar.ps.256"
5276              }
5277              break;
5278            }
5279            break;
5280          }
5281          break;
5282        }
5283        break;
5284      case 's':	 // 1 string to match.
5285        if (NameR.substr(4, 20) != "sse3.pmadd.ub.sw.128")
5286          break;
5287        return Intrinsic::x86_ssse3_pmadd_ub_sw_128;	 // "86.ssse3.pmadd.ub.sw.128"
5288      }
5289      break;
5290    case 25:	 // 3 strings to match.
5291      if (NameR.substr(0, 19) != "86.avx.vinsertf128.")
5292        break;
5293      switch (NameR[19]) {
5294      default: break;
5295      case 'p':	 // 2 strings to match.
5296        switch (NameR[20]) {
5297        default: break;
5298        case 'd':	 // 1 string to match.
5299          if (NameR.substr(21, 4) != ".256")
5300            break;
5301          return Intrinsic::x86_avx_vinsertf128_pd_256;	 // "86.avx.vinsertf128.pd.256"
5302        case 's':	 // 1 string to match.
5303          if (NameR.substr(21, 4) != ".256")
5304            break;
5305          return Intrinsic::x86_avx_vinsertf128_ps_256;	 // "86.avx.vinsertf128.ps.256"
5306        }
5307        break;
5308      case 's':	 // 1 string to match.
5309        if (NameR.substr(20, 5) != "i.256")
5310          break;
5311        return Intrinsic::x86_avx_vinsertf128_si_256;	 // "86.avx.vinsertf128.si.256"
5312      }
5313      break;
5314    case 26:	 // 3 strings to match.
5315      if (NameR.substr(0, 20) != "86.avx.vextractf128.")
5316        break;
5317      switch (NameR[20]) {
5318      default: break;
5319      case 'p':	 // 2 strings to match.
5320        switch (NameR[21]) {
5321        default: break;
5322        case 'd':	 // 1 string to match.
5323          if (NameR.substr(22, 4) != ".256")
5324            break;
5325          return Intrinsic::x86_avx_vextractf128_pd_256;	 // "86.avx.vextractf128.pd.256"
5326        case 's':	 // 1 string to match.
5327          if (NameR.substr(22, 4) != ".256")
5328            break;
5329          return Intrinsic::x86_avx_vextractf128_ps_256;	 // "86.avx.vextractf128.ps.256"
5330        }
5331        break;
5332      case 's':	 // 1 string to match.
5333        if (NameR.substr(21, 5) != "i.256")
5334          break;
5335        return Intrinsic::x86_avx_vextractf128_si_256;	 // "86.avx.vextractf128.si.256"
5336      }
5337      break;
5338    case 28:	 // 2 strings to match.
5339      if (NameR.substr(0, 23) != "86.avx.vbroadcastf128.p")
5340        break;
5341      switch (NameR[23]) {
5342      default: break;
5343      case 'd':	 // 1 string to match.
5344        if (NameR.substr(24, 4) != ".256")
5345          break;
5346        return Intrinsic::x86_avx_vbroadcastf128_pd_256;	 // "86.avx.vbroadcastf128.pd.256"
5347      case 's':	 // 1 string to match.
5348        if (NameR.substr(24, 4) != ".256")
5349          break;
5350        return Intrinsic::x86_avx_vbroadcastf128_ps_256;	 // "86.avx.vbroadcastf128.ps.256"
5351      }
5352      break;
5353    }
5354    break;  // end of 'x' case.
5355  }
5356#endif
5357
5358// Verifier::visitIntrinsicFunctionCall code.
5359#ifdef GET_INTRINSIC_VERIFIER
5360  switch (ID) {
5361  default: assert(0 && "Invalid intrinsic!");
5362  case Intrinsic::eh_unwind_init:		// llvm.eh.unwind.init
5363  case Intrinsic::trap:		// llvm.trap
5364  case Intrinsic::x86_avx_vzeroall:		// llvm.x86.avx.vzeroall
5365  case Intrinsic::x86_avx_vzeroupper:		// llvm.x86.avx.vzeroupper
5366  case Intrinsic::x86_mmx_emms:		// llvm.x86.mmx.emms
5367  case Intrinsic::x86_mmx_femms:		// llvm.x86.mmx.femms
5368  case Intrinsic::x86_sse2_lfence:		// llvm.x86.sse2.lfence
5369  case Intrinsic::x86_sse2_mfence:		// llvm.x86.sse2.mfence
5370  case Intrinsic::x86_sse_sfence:		// llvm.x86.sse.sfence
5371    VerifyIntrinsicPrototype(ID, IF, 0, 0);
5372    break;
5373  case Intrinsic::memcpy:		// llvm.memcpy
5374  case Intrinsic::memmove:		// llvm.memmove
5375    VerifyIntrinsicPrototype(ID, IF, 0, 5, MVT::iPTRAny, MVT::iPTRAny, MVT::iAny, MVT::i32, MVT::i1);
5376    break;
5377  case Intrinsic::memset:		// llvm.memset
5378    VerifyIntrinsicPrototype(ID, IF, 0, 5, MVT::iPTRAny, MVT::i8, MVT::iAny, MVT::i32, MVT::i1);
5379    break;
5380  case Intrinsic::invariant_end:		// llvm.invariant.end
5381    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::i64, MVT::iPTR);
5382    break;
5383  case Intrinsic::eh_sjlj_callsite:		// llvm.eh.sjlj.callsite
5384  case Intrinsic::eh_sjlj_dispatch_setup:		// llvm.eh.sjlj.dispatch.setup
5385  case Intrinsic::pcmarker:		// llvm.pcmarker
5386    VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::i32);
5387    break;
5388  case Intrinsic::x86_sse3_mwait:		// llvm.x86.sse3.mwait
5389    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i32, MVT::i32);
5390    break;
5391  case Intrinsic::eh_return_i32:		// llvm.eh.return.i32
5392    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i32, MVT::iPTR);
5393    break;
5394  case Intrinsic::eh_return_i64:		// llvm.eh.return.i64
5395  case Intrinsic::lifetime_end:		// llvm.lifetime.end
5396  case Intrinsic::lifetime_start:		// llvm.lifetime.start
5397    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::i64, MVT::iPTR);
5398    break;
5399  case Intrinsic::x86_int:		// llvm.x86.int
5400    VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::i8);
5401    break;
5402  case Intrinsic::dbg_value:		// llvm.dbg.value
5403    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::Metadata, MVT::i64, MVT::Metadata);
5404    break;
5405  case Intrinsic::dbg_declare:		// llvm.dbg.declare
5406    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::Metadata, MVT::Metadata);
5407    break;
5408  case Intrinsic::eh_sjlj_functioncontext:		// llvm.eh.sjlj.functioncontext
5409  case Intrinsic::eh_sjlj_longjmp:		// llvm.eh.sjlj.longjmp
5410  case Intrinsic::stackrestore:		// llvm.stackrestore
5411  case Intrinsic::vaend:		// llvm.va_end
5412  case Intrinsic::vastart:		// llvm.va_start
5413  case Intrinsic::x86_sse2_clflush:		// llvm.x86.sse2.clflush
5414  case Intrinsic::x86_sse_ldmxcsr:		// llvm.x86.sse.ldmxcsr
5415  case Intrinsic::x86_sse_stmxcsr:		// llvm.x86.sse.stmxcsr
5416    VerifyIntrinsicPrototype(ID, IF, 0, 1, MVT::iPTR);
5417    break;
5418  case Intrinsic::eh_resume:		// llvm.eh.resume
5419  case Intrinsic::longjmp:		// llvm.longjmp
5420  case Intrinsic::siglongjmp:		// llvm.siglongjmp
5421    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::i32);
5422    break;
5423  case Intrinsic::x86_sse3_monitor:		// llvm.x86.sse3.monitor
5424    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::i32, MVT::i32);
5425    break;
5426  case Intrinsic::prefetch:		// llvm.prefetch
5427    VerifyIntrinsicPrototype(ID, IF, 0, 4, MVT::iPTR, MVT::i32, MVT::i32, MVT::i32);
5428    break;
5429  case Intrinsic::vacopy:		// llvm.va_copy
5430    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR);
5431    break;
5432  case Intrinsic::init_trampoline:		// llvm.init.trampoline
5433    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::iPTR, MVT::iPTR);
5434    break;
5435  case Intrinsic::var_annotation:		// llvm.var.annotation
5436    VerifyIntrinsicPrototype(ID, IF, 0, 4, MVT::iPTR, MVT::iPTR, MVT::iPTR, MVT::i32);
5437    break;
5438  case Intrinsic::gcwrite:		// llvm.gcwrite
5439    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::iPTR, MVT::iPTR);
5440    break;
5441  case Intrinsic::stackprotector:		// llvm.stackprotector
5442    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR);
5443    break;
5444  case Intrinsic::x86_sse2_storeu_dq:		// llvm.x86.sse2.storeu.dq
5445    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v16i8);
5446    break;
5447  case Intrinsic::x86_sse2_storeu_pd:		// llvm.x86.sse2.storeu.pd
5448    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v2f64);
5449    break;
5450  case Intrinsic::x86_avx_maskstore_pd:		// llvm.x86.avx.maskstore.pd
5451    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v2f64, MVT::v2f64);
5452    break;
5453  case Intrinsic::x86_avx_storeu_dq_256:		// llvm.x86.avx.storeu.dq.256
5454    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v32i8);
5455    break;
5456  case Intrinsic::x86_sse_storeu_ps:		// llvm.x86.sse.storeu.ps
5457    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4f32);
5458    break;
5459  case Intrinsic::x86_avx_maskstore_ps:		// llvm.x86.avx.maskstore.ps
5460    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v4f32, MVT::v4f32);
5461    break;
5462  case Intrinsic::x86_avx_movnt_pd_256:		// llvm.x86.avx.movnt.pd.256
5463  case Intrinsic::x86_avx_storeu_pd_256:		// llvm.x86.avx.storeu.pd.256
5464    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4f64);
5465    break;
5466  case Intrinsic::x86_avx_maskstore_pd_256:		// llvm.x86.avx.maskstore.pd.256
5467    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v4f64, MVT::v4f64);
5468    break;
5469  case Intrinsic::x86_sse2_storel_dq:		// llvm.x86.sse2.storel.dq
5470    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4i32);
5471    break;
5472  case Intrinsic::x86_avx_movnt_dq_256:		// llvm.x86.avx.movnt.dq.256
5473    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v4i64);
5474    break;
5475  case Intrinsic::x86_avx_movnt_ps_256:		// llvm.x86.avx.movnt.ps.256
5476  case Intrinsic::x86_avx_storeu_ps_256:		// llvm.x86.avx.storeu.ps.256
5477    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::v8f32);
5478    break;
5479  case Intrinsic::x86_avx_maskstore_ps_256:		// llvm.x86.avx.maskstore.ps.256
5480    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::iPTR, MVT::v8f32, MVT::v8f32);
5481    break;
5482  case Intrinsic::gcroot:		// llvm.gcroot
5483    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::iPTR);
5484    break;
5485  case Intrinsic::x86_mmx_movnt_dq:		// llvm.x86.mmx.movnt.dq
5486    VerifyIntrinsicPrototype(ID, IF, 0, 2, MVT::iPTR, MVT::x86mmx);
5487    break;
5488  case Intrinsic::x86_sse2_maskmov_dqu:		// llvm.x86.sse2.maskmov.dqu
5489    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::v16i8, MVT::v16i8, MVT::iPTR);
5490    break;
5491  case Intrinsic::x86_mmx_maskmovq:		// llvm.x86.mmx.maskmovq
5492    VerifyIntrinsicPrototype(ID, IF, 0, 3, MVT::x86mmx, MVT::x86mmx, MVT::iPTR);
5493    break;
5494  case Intrinsic::ptr_annotation:		// llvm.ptr.annotation
5495    VerifyIntrinsicPrototype(ID, IF, 1, 4, MVT::iPTRAny, ~0, MVT::iPTR, MVT::iPTR, MVT::i32);
5496    break;
5497  case Intrinsic::sin:		// llvm.sin
5498    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
5499    break;
5500  case Intrinsic::cos:		// llvm.cos
5501    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
5502    break;
5503  case Intrinsic::pow:		// llvm.pow
5504    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::fAny, ~0, ~0);
5505    break;
5506  case Intrinsic::log:		// llvm.log
5507    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
5508    break;
5509  case Intrinsic::log10:		// llvm.log10
5510    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
5511    break;
5512  case Intrinsic::log2:		// llvm.log2
5513    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
5514    break;
5515  case Intrinsic::exp:		// llvm.exp
5516    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
5517    break;
5518  case Intrinsic::exp2:		// llvm.exp2
5519    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
5520    break;
5521  case Intrinsic::fma:		// llvm.fma
5522    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, ~0, ~0, ~0);
5523    break;
5524  case Intrinsic::sqrt:		// llvm.sqrt
5525    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::fAny, ~0);
5526    break;
5527  case Intrinsic::powi:		// llvm.powi
5528    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::fAny, ~0, MVT::i32);
5529    break;
5530  case Intrinsic::convertff:		// llvm.convertff
5531    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, MVT::fAny, MVT::i32, MVT::i32);
5532    break;
5533  case Intrinsic::convertfsi:		// llvm.convertfsi
5534  case Intrinsic::convertfui:		// llvm.convertfui
5535    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::fAny, MVT::iAny, MVT::i32, MVT::i32);
5536    break;
5537  case Intrinsic::expect:		// llvm.expect
5538    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iAny, ~0, ~0);
5539    break;
5540  case Intrinsic::bswap:		// llvm.bswap
5541    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0);
5542    break;
5543  case Intrinsic::ctpop:		// llvm.ctpop
5544    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0);
5545    break;
5546  case Intrinsic::ctlz:		// llvm.ctlz
5547    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0);
5548    break;
5549  case Intrinsic::cttz:		// llvm.cttz
5550    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iAny, ~0);
5551    break;
5552  case Intrinsic::annotation:		// llvm.annotation
5553    VerifyIntrinsicPrototype(ID, IF, 1, 4, MVT::iAny, ~0, MVT::iPTR, MVT::iPTR, MVT::i32);
5554    break;
5555  case Intrinsic::convertsif:		// llvm.convertsif
5556  case Intrinsic::convertuif:		// llvm.convertuif
5557    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::iAny, MVT::fAny, MVT::i32, MVT::i32);
5558    break;
5559  case Intrinsic::convertss:		// llvm.convertss
5560  case Intrinsic::convertsu:		// llvm.convertsu
5561  case Intrinsic::convertus:		// llvm.convertus
5562  case Intrinsic::convertuu:		// llvm.convertuu
5563    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::iAny, MVT::iAny, MVT::i32, MVT::i32);
5564    break;
5565  case Intrinsic::objectsize:		// llvm.objectsize
5566    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iAny, MVT::iPTR, MVT::i1);
5567    break;
5568  case Intrinsic::sadd_with_overflow:		// llvm.sadd.with.overflow
5569    VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
5570    break;
5571  case Intrinsic::uadd_with_overflow:		// llvm.uadd.with.overflow
5572    VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
5573    break;
5574  case Intrinsic::ssub_with_overflow:		// llvm.ssub.with.overflow
5575    VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
5576    break;
5577  case Intrinsic::usub_with_overflow:		// llvm.usub.with.overflow
5578    VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
5579    break;
5580  case Intrinsic::smul_with_overflow:		// llvm.smul.with.overflow
5581    VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
5582    break;
5583  case Intrinsic::umul_with_overflow:		// llvm.umul.with.overflow
5584    VerifyIntrinsicPrototype(ID, IF, 2, 2, MVT::iAny, MVT::i1, ~0, ~0);
5585    break;
5586  case Intrinsic::invariant_start:		// llvm.invariant.start
5587    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iPTR, MVT::i64, MVT::iPTR);
5588    break;
5589  case Intrinsic::convert_from_fp16:		// llvm.convert.from.fp16
5590    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::f32, MVT::i16);
5591    break;
5592  case Intrinsic::convert_to_fp16:		// llvm.convert.to.fp16
5593    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i16, MVT::f32);
5594    break;
5595  case Intrinsic::flt_rounds:		// llvm.flt.rounds
5596    VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::i32);
5597    break;
5598  case Intrinsic::x86_sse42_crc32_32_16:		// llvm.x86.sse42.crc32.32.16
5599    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i16);
5600    break;
5601  case Intrinsic::x86_sse42_crc32_32_32:		// llvm.x86.sse42.crc32.32.32
5602    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i32);
5603    break;
5604  case Intrinsic::x86_sse42_crc32_32_8:		// llvm.x86.sse42.crc32.32.8
5605    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::i32, MVT::i8);
5606    break;
5607  case Intrinsic::eh_sjlj_setjmp:		// llvm.eh.sjlj.setjmp
5608  case Intrinsic::eh_typeid_for:		// llvm.eh.typeid.for
5609  case Intrinsic::setjmp:		// llvm.setjmp
5610    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::iPTR);
5611    break;
5612  case Intrinsic::sigsetjmp:		// llvm.sigsetjmp
5613    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::iPTR, MVT::i32);
5614    break;
5615  case Intrinsic::eh_selector:		// llvm.eh.selector
5616    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::i32, MVT::iPTR, MVT::iPTR, MVT::isVoid);
5617    break;
5618  case Intrinsic::x86_sse2_pmovmskb_128:		// llvm.x86.sse2.pmovmskb.128
5619    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v16i8);
5620    break;
5621  case Intrinsic::x86_sse41_pextrb:		// llvm.x86.sse41.pextrb
5622    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v16i8, MVT::i32);
5623    break;
5624  case Intrinsic::x86_sse42_pcmpestri128:		// llvm.x86.sse42.pcmpestri128
5625  case Intrinsic::x86_sse42_pcmpestria128:		// llvm.x86.sse42.pcmpestria128
5626  case Intrinsic::x86_sse42_pcmpestric128:		// llvm.x86.sse42.pcmpestric128
5627  case Intrinsic::x86_sse42_pcmpestrio128:		// llvm.x86.sse42.pcmpestrio128
5628  case Intrinsic::x86_sse42_pcmpestris128:		// llvm.x86.sse42.pcmpestris128
5629  case Intrinsic::x86_sse42_pcmpestriz128:		// llvm.x86.sse42.pcmpestriz128
5630    VerifyIntrinsicPrototype(ID, IF, 1, 5, MVT::i32, MVT::v16i8, MVT::i32, MVT::v16i8, MVT::i32, MVT::i8);
5631    break;
5632  case Intrinsic::x86_sse42_pcmpistri128:		// llvm.x86.sse42.pcmpistri128
5633  case Intrinsic::x86_sse42_pcmpistria128:		// llvm.x86.sse42.pcmpistria128
5634  case Intrinsic::x86_sse42_pcmpistric128:		// llvm.x86.sse42.pcmpistric128
5635  case Intrinsic::x86_sse42_pcmpistrio128:		// llvm.x86.sse42.pcmpistrio128
5636  case Intrinsic::x86_sse42_pcmpistris128:		// llvm.x86.sse42.pcmpistris128
5637  case Intrinsic::x86_sse42_pcmpistriz128:		// llvm.x86.sse42.pcmpistriz128
5638    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::i32, MVT::v16i8, MVT::v16i8, MVT::i8);
5639    break;
5640  case Intrinsic::x86_sse2_cvtsd2si:		// llvm.x86.sse2.cvtsd2si
5641  case Intrinsic::x86_sse2_cvttsd2si:		// llvm.x86.sse2.cvttsd2si
5642  case Intrinsic::x86_sse2_movmsk_pd:		// llvm.x86.sse2.movmsk.pd
5643    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v2f64);
5644    break;
5645  case Intrinsic::x86_avx_vtestc_pd:		// llvm.x86.avx.vtestc.pd
5646  case Intrinsic::x86_avx_vtestnzc_pd:		// llvm.x86.avx.vtestnzc.pd
5647  case Intrinsic::x86_avx_vtestz_pd:		// llvm.x86.avx.vtestz.pd
5648  case Intrinsic::x86_sse2_comieq_sd:		// llvm.x86.sse2.comieq.sd
5649  case Intrinsic::x86_sse2_comige_sd:		// llvm.x86.sse2.comige.sd
5650  case Intrinsic::x86_sse2_comigt_sd:		// llvm.x86.sse2.comigt.sd
5651  case Intrinsic::x86_sse2_comile_sd:		// llvm.x86.sse2.comile.sd
5652  case Intrinsic::x86_sse2_comilt_sd:		// llvm.x86.sse2.comilt.sd
5653  case Intrinsic::x86_sse2_comineq_sd:		// llvm.x86.sse2.comineq.sd
5654  case Intrinsic::x86_sse2_ucomieq_sd:		// llvm.x86.sse2.ucomieq.sd
5655  case Intrinsic::x86_sse2_ucomige_sd:		// llvm.x86.sse2.ucomige.sd
5656  case Intrinsic::x86_sse2_ucomigt_sd:		// llvm.x86.sse2.ucomigt.sd
5657  case Intrinsic::x86_sse2_ucomile_sd:		// llvm.x86.sse2.ucomile.sd
5658  case Intrinsic::x86_sse2_ucomilt_sd:		// llvm.x86.sse2.ucomilt.sd
5659  case Intrinsic::x86_sse2_ucomineq_sd:		// llvm.x86.sse2.ucomineq.sd
5660    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v2f64, MVT::v2f64);
5661    break;
5662  case Intrinsic::x86_sse_cvtss2si:		// llvm.x86.sse.cvtss2si
5663  case Intrinsic::x86_sse_cvttss2si:		// llvm.x86.sse.cvttss2si
5664  case Intrinsic::x86_sse_movmsk_ps:		// llvm.x86.sse.movmsk.ps
5665    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v4f32);
5666    break;
5667  case Intrinsic::x86_sse41_extractps:		// llvm.x86.sse41.extractps
5668    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f32, MVT::i32);
5669    break;
5670  case Intrinsic::x86_avx_vtestc_ps:		// llvm.x86.avx.vtestc.ps
5671  case Intrinsic::x86_avx_vtestnzc_ps:		// llvm.x86.avx.vtestnzc.ps
5672  case Intrinsic::x86_avx_vtestz_ps:		// llvm.x86.avx.vtestz.ps
5673  case Intrinsic::x86_sse41_ptestc:		// llvm.x86.sse41.ptestc
5674  case Intrinsic::x86_sse41_ptestnzc:		// llvm.x86.sse41.ptestnzc
5675  case Intrinsic::x86_sse41_ptestz:		// llvm.x86.sse41.ptestz
5676  case Intrinsic::x86_sse_comieq_ss:		// llvm.x86.sse.comieq.ss
5677  case Intrinsic::x86_sse_comige_ss:		// llvm.x86.sse.comige.ss
5678  case Intrinsic::x86_sse_comigt_ss:		// llvm.x86.sse.comigt.ss
5679  case Intrinsic::x86_sse_comile_ss:		// llvm.x86.sse.comile.ss
5680  case Intrinsic::x86_sse_comilt_ss:		// llvm.x86.sse.comilt.ss
5681  case Intrinsic::x86_sse_comineq_ss:		// llvm.x86.sse.comineq.ss
5682  case Intrinsic::x86_sse_ucomieq_ss:		// llvm.x86.sse.ucomieq.ss
5683  case Intrinsic::x86_sse_ucomige_ss:		// llvm.x86.sse.ucomige.ss
5684  case Intrinsic::x86_sse_ucomigt_ss:		// llvm.x86.sse.ucomigt.ss
5685  case Intrinsic::x86_sse_ucomile_ss:		// llvm.x86.sse.ucomile.ss
5686  case Intrinsic::x86_sse_ucomilt_ss:		// llvm.x86.sse.ucomilt.ss
5687  case Intrinsic::x86_sse_ucomineq_ss:		// llvm.x86.sse.ucomineq.ss
5688    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f32, MVT::v4f32);
5689    break;
5690  case Intrinsic::x86_avx_movmsk_pd_256:		// llvm.x86.avx.movmsk.pd.256
5691    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v4f64);
5692    break;
5693  case Intrinsic::x86_avx_vtestc_pd_256:		// llvm.x86.avx.vtestc.pd.256
5694  case Intrinsic::x86_avx_vtestnzc_pd_256:		// llvm.x86.avx.vtestnzc.pd.256
5695  case Intrinsic::x86_avx_vtestz_pd_256:		// llvm.x86.avx.vtestz.pd.256
5696    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4f64, MVT::v4f64);
5697    break;
5698  case Intrinsic::x86_sse41_pextrd:		// llvm.x86.sse41.pextrd
5699    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4i32, MVT::i32);
5700    break;
5701  case Intrinsic::x86_avx_ptestc_256:		// llvm.x86.avx.ptestc.256
5702  case Intrinsic::x86_avx_ptestnzc_256:		// llvm.x86.avx.ptestnzc.256
5703  case Intrinsic::x86_avx_ptestz_256:		// llvm.x86.avx.ptestz.256
5704    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v4i64, MVT::v4i64);
5705    break;
5706  case Intrinsic::x86_avx_movmsk_ps_256:		// llvm.x86.avx.movmsk.ps.256
5707    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::v8f32);
5708    break;
5709  case Intrinsic::x86_avx_vtestc_ps_256:		// llvm.x86.avx.vtestc.ps.256
5710  case Intrinsic::x86_avx_vtestnzc_ps_256:		// llvm.x86.avx.vtestnzc.ps.256
5711  case Intrinsic::x86_avx_vtestz_ps_256:		// llvm.x86.avx.vtestz.ps.256
5712    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::v8f32, MVT::v8f32);
5713    break;
5714  case Intrinsic::x86_mmx_pmovmskb:		// llvm.x86.mmx.pmovmskb
5715    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i32, MVT::x86mmx);
5716    break;
5717  case Intrinsic::x86_mmx_pextr_w:		// llvm.x86.mmx.pextr.w
5718    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i32, MVT::x86mmx, MVT::i32);
5719    break;
5720  case Intrinsic::readcyclecounter:		// llvm.readcyclecounter
5721    VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::i64);
5722    break;
5723  case Intrinsic::x86_sse42_crc32_64_64:		// llvm.x86.sse42.crc32.64.64
5724    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::i64, MVT::i64);
5725    break;
5726  case Intrinsic::x86_sse42_crc32_64_8:		// llvm.x86.sse42.crc32.64.8
5727    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::i64, MVT::i8);
5728    break;
5729  case Intrinsic::x86_sse2_cvtsd2si64:		// llvm.x86.sse2.cvtsd2si64
5730  case Intrinsic::x86_sse2_cvttsd2si64:		// llvm.x86.sse2.cvttsd2si64
5731    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i64, MVT::v2f64);
5732    break;
5733  case Intrinsic::x86_sse41_pextrq:		// llvm.x86.sse41.pextrq
5734    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::i64, MVT::v2i64, MVT::i32);
5735    break;
5736  case Intrinsic::x86_sse_cvtss2si64:		// llvm.x86.sse.cvtss2si64
5737  case Intrinsic::x86_sse_cvttss2si64:		// llvm.x86.sse.cvttss2si64
5738    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::i64, MVT::v4f32);
5739    break;
5740  case Intrinsic::eh_exception:		// llvm.eh.exception
5741  case Intrinsic::eh_sjlj_lsda:		// llvm.eh.sjlj.lsda
5742  case Intrinsic::stacksave:		// llvm.stacksave
5743    VerifyIntrinsicPrototype(ID, IF, 1, 0, MVT::iPTR);
5744    break;
5745  case Intrinsic::eh_dwarf_cfa:		// llvm.eh.dwarf.cfa
5746  case Intrinsic::frameaddress:		// llvm.frameaddress
5747  case Intrinsic::returnaddress:		// llvm.returnaddress
5748    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iPTR, MVT::i32);
5749    break;
5750  case Intrinsic::adjust_trampoline:		// llvm.adjust.trampoline
5751    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::iPTR, MVT::iPTR);
5752    break;
5753  case Intrinsic::gcread:		// llvm.gcread
5754    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::iPTR, MVT::iPTR, MVT::iPTR);
5755    break;
5756  case Intrinsic::x86_sse3_ldu_dq:		// llvm.x86.sse3.ldu.dq
5757    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v16i8, MVT::iPTR);
5758    break;
5759  case Intrinsic::x86_ssse3_pabs_b_128:		// llvm.x86.ssse3.pabs.b.128
5760    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v16i8, MVT::v16i8);
5761    break;
5762  case Intrinsic::x86_sse42_pcmpestrm128:		// llvm.x86.sse42.pcmpestrm128
5763    VerifyIntrinsicPrototype(ID, IF, 1, 5, MVT::v16i8, MVT::v16i8, MVT::i32, MVT::v16i8, MVT::i32, MVT::i8);
5764    break;
5765  case Intrinsic::x86_sse2_padds_b:		// llvm.x86.sse2.padds.b
5766  case Intrinsic::x86_sse2_paddus_b:		// llvm.x86.sse2.paddus.b
5767  case Intrinsic::x86_sse2_pavg_b:		// llvm.x86.sse2.pavg.b
5768  case Intrinsic::x86_sse2_pcmpeq_b:		// llvm.x86.sse2.pcmpeq.b
5769  case Intrinsic::x86_sse2_pcmpgt_b:		// llvm.x86.sse2.pcmpgt.b
5770  case Intrinsic::x86_sse2_pmaxu_b:		// llvm.x86.sse2.pmaxu.b
5771  case Intrinsic::x86_sse2_pminu_b:		// llvm.x86.sse2.pminu.b
5772  case Intrinsic::x86_sse2_psubs_b:		// llvm.x86.sse2.psubs.b
5773  case Intrinsic::x86_sse2_psubus_b:		// llvm.x86.sse2.psubus.b
5774  case Intrinsic::x86_sse41_pmaxsb:		// llvm.x86.sse41.pmaxsb
5775  case Intrinsic::x86_sse41_pminsb:		// llvm.x86.sse41.pminsb
5776  case Intrinsic::x86_ssse3_pshuf_b_128:		// llvm.x86.ssse3.pshuf.b.128
5777  case Intrinsic::x86_ssse3_psign_b_128:		// llvm.x86.ssse3.psign.b.128
5778    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v16i8, MVT::v16i8, MVT::v16i8);
5779    break;
5780  case Intrinsic::x86_sse41_mpsadbw:		// llvm.x86.sse41.mpsadbw
5781    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::i32);
5782    break;
5783  case Intrinsic::x86_sse42_pcmpistrm128:		// llvm.x86.sse42.pcmpistrm128
5784    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::i8);
5785    break;
5786  case Intrinsic::x86_sse41_pblendvb:		// llvm.x86.sse41.pblendvb
5787    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v16i8, MVT::v16i8, MVT::v16i8, MVT::v16i8);
5788    break;
5789  case Intrinsic::x86_sse2_packsswb_128:		// llvm.x86.sse2.packsswb.128
5790  case Intrinsic::x86_sse2_packuswb_128:		// llvm.x86.sse2.packuswb.128
5791    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v16i8, MVT::v8i16, MVT::v8i16);
5792    break;
5793  case Intrinsic::x86_avx_maskload_pd:		// llvm.x86.avx.maskload.pd
5794    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::iPTR, MVT::v2f64);
5795    break;
5796  case Intrinsic::x86_sse2_sqrt_pd:		// llvm.x86.sse2.sqrt.pd
5797  case Intrinsic::x86_sse2_sqrt_sd:		// llvm.x86.sse2.sqrt.sd
5798    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v2f64);
5799    break;
5800  case Intrinsic::x86_sse2_cvtsi2sd:		// llvm.x86.sse2.cvtsi2sd
5801  case Intrinsic::x86_sse41_round_pd:		// llvm.x86.sse41.round.pd
5802    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i32);
5803    break;
5804  case Intrinsic::x86_sse2_cvtsi642sd:		// llvm.x86.sse2.cvtsi642sd
5805    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i64);
5806    break;
5807  case Intrinsic::x86_avx_vpermil_pd:		// llvm.x86.avx.vpermil.pd
5808    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::i8);
5809    break;
5810  case Intrinsic::x86_sse2_add_sd:		// llvm.x86.sse2.add.sd
5811  case Intrinsic::x86_sse2_div_sd:		// llvm.x86.sse2.div.sd
5812  case Intrinsic::x86_sse2_max_pd:		// llvm.x86.sse2.max.pd
5813  case Intrinsic::x86_sse2_max_sd:		// llvm.x86.sse2.max.sd
5814  case Intrinsic::x86_sse2_min_pd:		// llvm.x86.sse2.min.pd
5815  case Intrinsic::x86_sse2_min_sd:		// llvm.x86.sse2.min.sd
5816  case Intrinsic::x86_sse2_mul_sd:		// llvm.x86.sse2.mul.sd
5817  case Intrinsic::x86_sse2_sub_sd:		// llvm.x86.sse2.sub.sd
5818  case Intrinsic::x86_sse3_addsub_pd:		// llvm.x86.sse3.addsub.pd
5819  case Intrinsic::x86_sse3_hadd_pd:		// llvm.x86.sse3.hadd.pd
5820  case Intrinsic::x86_sse3_hsub_pd:		// llvm.x86.sse3.hsub.pd
5821    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v2f64);
5822    break;
5823  case Intrinsic::x86_sse41_blendpd:		// llvm.x86.sse41.blendpd
5824  case Intrinsic::x86_sse41_dppd:		// llvm.x86.sse41.dppd
5825  case Intrinsic::x86_sse41_round_sd:		// llvm.x86.sse41.round.sd
5826    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::i32);
5827    break;
5828  case Intrinsic::x86_sse2_cmp_pd:		// llvm.x86.sse2.cmp.pd
5829  case Intrinsic::x86_sse2_cmp_sd:		// llvm.x86.sse2.cmp.sd
5830    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::i8);
5831    break;
5832  case Intrinsic::x86_sse41_blendvpd:		// llvm.x86.sse41.blendvpd
5833    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v2f64, MVT::v2f64, MVT::v2f64, MVT::v2f64);
5834    break;
5835  case Intrinsic::x86_avx_vpermilvar_pd:		// llvm.x86.avx.vpermilvar.pd
5836    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v2i64);
5837    break;
5838  case Intrinsic::x86_sse2_cvtss2sd:		// llvm.x86.sse2.cvtss2sd
5839    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v2f64, MVT::v4f32);
5840    break;
5841  case Intrinsic::x86_sse2_cvtps2pd:		// llvm.x86.sse2.cvtps2pd
5842    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v4f32);
5843    break;
5844  case Intrinsic::x86_avx_vextractf128_pd_256:		// llvm.x86.avx.vextractf128.pd.256
5845    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2f64, MVT::v4f64, MVT::i8);
5846    break;
5847  case Intrinsic::x86_sse2_cvtdq2pd:		// llvm.x86.sse2.cvtdq2pd
5848    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::v4i32);
5849    break;
5850  case Intrinsic::x86_sse_cvtpi2pd:		// llvm.x86.sse.cvtpi2pd
5851    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2f64, MVT::x86mmx);
5852    break;
5853  case Intrinsic::x86_sse41_movntdqa:		// llvm.x86.sse41.movntdqa
5854    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::iPTR);
5855    break;
5856  case Intrinsic::x86_sse41_pmovsxbq:		// llvm.x86.sse41.pmovsxbq
5857  case Intrinsic::x86_sse41_pmovzxbq:		// llvm.x86.sse41.pmovzxbq
5858    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v16i8);
5859    break;
5860  case Intrinsic::x86_sse2_psad_bw:		// llvm.x86.sse2.psad.bw
5861    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v16i8, MVT::v16i8);
5862    break;
5863  case Intrinsic::x86_aesni_aesimc:		// llvm.x86.aesni.aesimc
5864    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v2i64);
5865    break;
5866  case Intrinsic::x86_sse2_psll_dq:		// llvm.x86.sse2.psll.dq
5867  case Intrinsic::x86_sse2_psll_dq_bs:		// llvm.x86.sse2.psll.dq.bs
5868  case Intrinsic::x86_sse2_pslli_q:		// llvm.x86.sse2.pslli.q
5869  case Intrinsic::x86_sse2_psrl_dq:		// llvm.x86.sse2.psrl.dq
5870  case Intrinsic::x86_sse2_psrl_dq_bs:		// llvm.x86.sse2.psrl.dq.bs
5871  case Intrinsic::x86_sse2_psrli_q:		// llvm.x86.sse2.psrli.q
5872    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::i32);
5873    break;
5874  case Intrinsic::x86_aesni_aeskeygenassist:		// llvm.x86.aesni.aeskeygenassist
5875    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::i8);
5876    break;
5877  case Intrinsic::x86_aesni_aesdec:		// llvm.x86.aesni.aesdec
5878  case Intrinsic::x86_aesni_aesdeclast:		// llvm.x86.aesni.aesdeclast
5879  case Intrinsic::x86_aesni_aesenc:		// llvm.x86.aesni.aesenc
5880  case Intrinsic::x86_aesni_aesenclast:		// llvm.x86.aesni.aesenclast
5881  case Intrinsic::x86_sse2_psll_q:		// llvm.x86.sse2.psll.q
5882  case Intrinsic::x86_sse2_psrl_q:		// llvm.x86.sse2.psrl.q
5883  case Intrinsic::x86_sse41_pcmpeqq:		// llvm.x86.sse41.pcmpeqq
5884  case Intrinsic::x86_sse42_pcmpgtq:		// llvm.x86.sse42.pcmpgtq
5885    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v2i64, MVT::v2i64);
5886    break;
5887  case Intrinsic::x86_sse41_pmovsxdq:		// llvm.x86.sse41.pmovsxdq
5888  case Intrinsic::x86_sse41_pmovzxdq:		// llvm.x86.sse41.pmovzxdq
5889    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v4i32);
5890    break;
5891  case Intrinsic::x86_sse2_pmulu_dq:		// llvm.x86.sse2.pmulu.dq
5892  case Intrinsic::x86_sse41_pmuldq:		// llvm.x86.sse41.pmuldq
5893    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v2i64, MVT::v4i32, MVT::v4i32);
5894    break;
5895  case Intrinsic::x86_sse41_pmovsxwq:		// llvm.x86.sse41.pmovsxwq
5896  case Intrinsic::x86_sse41_pmovzxwq:		// llvm.x86.sse41.pmovzxwq
5897    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v2i64, MVT::v8i16);
5898    break;
5899  case Intrinsic::x86_avx_ldu_dq_256:		// llvm.x86.avx.ldu.dq.256
5900  case Intrinsic::x86_avx_loadu_dq_256:		// llvm.x86.avx.loadu.dq.256
5901    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v32i8, MVT::iPTR);
5902    break;
5903  case Intrinsic::x86_avx_vbroadcastss:		// llvm.x86.avx.vbroadcastss
5904    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::iPTR);
5905    break;
5906  case Intrinsic::x86_avx_maskload_ps:		// llvm.x86.avx.maskload.ps
5907    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::iPTR, MVT::v4f32);
5908    break;
5909  case Intrinsic::x86_sse2_cvtpd2ps:		// llvm.x86.sse2.cvtpd2ps
5910    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v2f64);
5911    break;
5912  case Intrinsic::x86_sse_rcp_ps:		// llvm.x86.sse.rcp.ps
5913  case Intrinsic::x86_sse_rcp_ss:		// llvm.x86.sse.rcp.ss
5914  case Intrinsic::x86_sse_rsqrt_ps:		// llvm.x86.sse.rsqrt.ps
5915  case Intrinsic::x86_sse_rsqrt_ss:		// llvm.x86.sse.rsqrt.ss
5916  case Intrinsic::x86_sse_sqrt_ps:		// llvm.x86.sse.sqrt.ps
5917  case Intrinsic::x86_sse_sqrt_ss:		// llvm.x86.sse.sqrt.ss
5918    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4f32);
5919    break;
5920  case Intrinsic::x86_sse41_round_ps:		// llvm.x86.sse41.round.ps
5921  case Intrinsic::x86_sse_cvtsi2ss:		// llvm.x86.sse.cvtsi2ss
5922    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i32);
5923    break;
5924  case Intrinsic::x86_sse_cvtsi642ss:		// llvm.x86.sse.cvtsi642ss
5925    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i64);
5926    break;
5927  case Intrinsic::x86_avx_vpermil_ps:		// llvm.x86.avx.vpermil.ps
5928    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::i8);
5929    break;
5930  case Intrinsic::x86_sse2_cvtsd2ss:		// llvm.x86.sse2.cvtsd2ss
5931    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v2f64);
5932    break;
5933  case Intrinsic::x86_sse3_addsub_ps:		// llvm.x86.sse3.addsub.ps
5934  case Intrinsic::x86_sse3_hadd_ps:		// llvm.x86.sse3.hadd.ps
5935  case Intrinsic::x86_sse3_hsub_ps:		// llvm.x86.sse3.hsub.ps
5936  case Intrinsic::x86_sse_add_ss:		// llvm.x86.sse.add.ss
5937  case Intrinsic::x86_sse_div_ss:		// llvm.x86.sse.div.ss
5938  case Intrinsic::x86_sse_max_ps:		// llvm.x86.sse.max.ps
5939  case Intrinsic::x86_sse_max_ss:		// llvm.x86.sse.max.ss
5940  case Intrinsic::x86_sse_min_ps:		// llvm.x86.sse.min.ps
5941  case Intrinsic::x86_sse_min_ss:		// llvm.x86.sse.min.ss
5942  case Intrinsic::x86_sse_mul_ss:		// llvm.x86.sse.mul.ss
5943  case Intrinsic::x86_sse_sub_ss:		// llvm.x86.sse.sub.ss
5944    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v4f32);
5945    break;
5946  case Intrinsic::x86_sse41_blendps:		// llvm.x86.sse41.blendps
5947  case Intrinsic::x86_sse41_dpps:		// llvm.x86.sse41.dpps
5948  case Intrinsic::x86_sse41_insertps:		// llvm.x86.sse41.insertps
5949  case Intrinsic::x86_sse41_round_ss:		// llvm.x86.sse41.round.ss
5950    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::i32);
5951    break;
5952  case Intrinsic::x86_sse_cmp_ps:		// llvm.x86.sse.cmp.ps
5953  case Intrinsic::x86_sse_cmp_ss:		// llvm.x86.sse.cmp.ss
5954    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::i8);
5955    break;
5956  case Intrinsic::x86_sse41_blendvps:		// llvm.x86.sse41.blendvps
5957    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f32, MVT::v4f32, MVT::v4f32, MVT::v4f32);
5958    break;
5959  case Intrinsic::x86_avx_vpermilvar_ps:		// llvm.x86.avx.vpermilvar.ps
5960    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::v4i32);
5961    break;
5962  case Intrinsic::x86_sse_cvtpi2ps:		// llvm.x86.sse.cvtpi2ps
5963    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v4f32, MVT::x86mmx);
5964    break;
5965  case Intrinsic::x86_avx_cvt_pd2_ps_256:		// llvm.x86.avx.cvt.pd2.ps.256
5966    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4f64);
5967    break;
5968  case Intrinsic::x86_sse2_cvtdq2ps:		// llvm.x86.sse2.cvtdq2ps
5969    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f32, MVT::v4i32);
5970    break;
5971  case Intrinsic::x86_avx_vextractf128_ps_256:		// llvm.x86.avx.vextractf128.ps.256
5972    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f32, MVT::v8f32, MVT::i8);
5973    break;
5974  case Intrinsic::x86_avx_loadu_pd_256:		// llvm.x86.avx.loadu.pd.256
5975  case Intrinsic::x86_avx_vbroadcast_sd_256:		// llvm.x86.avx.vbroadcast.sd.256
5976  case Intrinsic::x86_avx_vbroadcastf128_pd_256:		// llvm.x86.avx.vbroadcastf128.pd.256
5977    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::iPTR);
5978    break;
5979  case Intrinsic::x86_avx_maskload_pd_256:		// llvm.x86.avx.maskload.pd.256
5980    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::iPTR, MVT::v4f64);
5981    break;
5982  case Intrinsic::x86_avx_cvt_ps2_pd_256:		// llvm.x86.avx.cvt.ps2.pd.256
5983    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4f32);
5984    break;
5985  case Intrinsic::x86_avx_sqrt_pd_256:		// llvm.x86.avx.sqrt.pd.256
5986    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4f64);
5987    break;
5988  case Intrinsic::x86_avx_round_pd_256:		// llvm.x86.avx.round.pd.256
5989    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::i32);
5990    break;
5991  case Intrinsic::x86_avx_vpermil_pd_256:		// llvm.x86.avx.vpermil.pd.256
5992    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::i8);
5993    break;
5994  case Intrinsic::x86_avx_vinsertf128_pd_256:		// llvm.x86.avx.vinsertf128.pd.256
5995    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v2f64, MVT::i8);
5996    break;
5997  case Intrinsic::x86_avx_addsub_pd_256:		// llvm.x86.avx.addsub.pd.256
5998  case Intrinsic::x86_avx_hadd_pd_256:		// llvm.x86.avx.hadd.pd.256
5999  case Intrinsic::x86_avx_hsub_pd_256:		// llvm.x86.avx.hsub.pd.256
6000  case Intrinsic::x86_avx_max_pd_256:		// llvm.x86.avx.max.pd.256
6001  case Intrinsic::x86_avx_min_pd_256:		// llvm.x86.avx.min.pd.256
6002    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::v4f64);
6003    break;
6004  case Intrinsic::x86_avx_blend_pd_256:		// llvm.x86.avx.blend.pd.256
6005    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::i32);
6006    break;
6007  case Intrinsic::x86_avx_cmp_pd_256:		// llvm.x86.avx.cmp.pd.256
6008  case Intrinsic::x86_avx_vperm2f128_pd_256:		// llvm.x86.avx.vperm2f128.pd.256
6009    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::i8);
6010    break;
6011  case Intrinsic::x86_avx_blendv_pd_256:		// llvm.x86.avx.blendv.pd.256
6012    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v4f64, MVT::v4f64, MVT::v4f64, MVT::v4f64);
6013    break;
6014  case Intrinsic::x86_avx_vpermilvar_pd_256:		// llvm.x86.avx.vpermilvar.pd.256
6015    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4f64, MVT::v4f64, MVT::v4i64);
6016    break;
6017  case Intrinsic::x86_avx_cvtdq2_pd_256:		// llvm.x86.avx.cvtdq2.pd.256
6018    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4f64, MVT::v4i32);
6019    break;
6020  case Intrinsic::x86_sse41_pmovsxbd:		// llvm.x86.sse41.pmovsxbd
6021  case Intrinsic::x86_sse41_pmovzxbd:		// llvm.x86.sse41.pmovzxbd
6022    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v16i8);
6023    break;
6024  case Intrinsic::x86_sse2_cvtpd2dq:		// llvm.x86.sse2.cvtpd2dq
6025  case Intrinsic::x86_sse2_cvttpd2dq:		// llvm.x86.sse2.cvttpd2dq
6026    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v2f64);
6027    break;
6028  case Intrinsic::x86_sse2_cvtps2dq:		// llvm.x86.sse2.cvtps2dq
6029  case Intrinsic::x86_sse2_cvttps2dq:		// llvm.x86.sse2.cvttps2dq
6030    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4f32);
6031    break;
6032  case Intrinsic::x86_avx_cvt_pd2dq_256:		// llvm.x86.avx.cvt.pd2dq.256
6033  case Intrinsic::x86_avx_cvtt_pd2dq_256:		// llvm.x86.avx.cvtt.pd2dq.256
6034    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4f64);
6035    break;
6036  case Intrinsic::x86_ssse3_pabs_d_128:		// llvm.x86.ssse3.pabs.d.128
6037    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v4i32);
6038    break;
6039  case Intrinsic::x86_sse2_pslli_d:		// llvm.x86.sse2.pslli.d
6040  case Intrinsic::x86_sse2_psrai_d:		// llvm.x86.sse2.psrai.d
6041  case Intrinsic::x86_sse2_psrli_d:		// llvm.x86.sse2.psrli.d
6042    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v4i32, MVT::i32);
6043    break;
6044  case Intrinsic::x86_sse2_pcmpeq_d:		// llvm.x86.sse2.pcmpeq.d
6045  case Intrinsic::x86_sse2_pcmpgt_d:		// llvm.x86.sse2.pcmpgt.d
6046  case Intrinsic::x86_sse2_psll_d:		// llvm.x86.sse2.psll.d
6047  case Intrinsic::x86_sse2_psra_d:		// llvm.x86.sse2.psra.d
6048  case Intrinsic::x86_sse2_psrl_d:		// llvm.x86.sse2.psrl.d
6049  case Intrinsic::x86_sse41_pmaxsd:		// llvm.x86.sse41.pmaxsd
6050  case Intrinsic::x86_sse41_pmaxud:		// llvm.x86.sse41.pmaxud
6051  case Intrinsic::x86_sse41_pminsd:		// llvm.x86.sse41.pminsd
6052  case Intrinsic::x86_sse41_pminud:		// llvm.x86.sse41.pminud
6053  case Intrinsic::x86_ssse3_phadd_d_128:		// llvm.x86.ssse3.phadd.d.128
6054  case Intrinsic::x86_ssse3_phadd_sw_128:		// llvm.x86.ssse3.phadd.sw.128
6055  case Intrinsic::x86_ssse3_phsub_d_128:		// llvm.x86.ssse3.phsub.d.128
6056  case Intrinsic::x86_ssse3_psign_d_128:		// llvm.x86.ssse3.psign.d.128
6057    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v4i32, MVT::v4i32);
6058    break;
6059  case Intrinsic::x86_sse41_pmovsxwd:		// llvm.x86.sse41.pmovsxwd
6060  case Intrinsic::x86_sse41_pmovzxwd:		// llvm.x86.sse41.pmovzxwd
6061    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v4i32, MVT::v8i16);
6062    break;
6063  case Intrinsic::x86_sse2_pmadd_wd:		// llvm.x86.sse2.pmadd.wd
6064    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v8i16, MVT::v8i16);
6065    break;
6066  case Intrinsic::x86_avx_vextractf128_si_256:		// llvm.x86.avx.vextractf128.si.256
6067    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v4i32, MVT::v8i32, MVT::i8);
6068    break;
6069  case Intrinsic::x86_avx_loadu_ps_256:		// llvm.x86.avx.loadu.ps.256
6070  case Intrinsic::x86_avx_vbroadcastf128_ps_256:		// llvm.x86.avx.vbroadcastf128.ps.256
6071  case Intrinsic::x86_avx_vbroadcastss_256:		// llvm.x86.avx.vbroadcastss.256
6072    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::iPTR);
6073    break;
6074  case Intrinsic::x86_avx_maskload_ps_256:		// llvm.x86.avx.maskload.ps.256
6075    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::iPTR, MVT::v8f32);
6076    break;
6077  case Intrinsic::x86_avx_rcp_ps_256:		// llvm.x86.avx.rcp.ps.256
6078  case Intrinsic::x86_avx_rsqrt_ps_256:		// llvm.x86.avx.rsqrt.ps.256
6079  case Intrinsic::x86_avx_sqrt_ps_256:		// llvm.x86.avx.sqrt.ps.256
6080    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::v8f32);
6081    break;
6082  case Intrinsic::x86_avx_round_ps_256:		// llvm.x86.avx.round.ps.256
6083    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::i32);
6084    break;
6085  case Intrinsic::x86_avx_vpermil_ps_256:		// llvm.x86.avx.vpermil.ps.256
6086    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::i8);
6087    break;
6088  case Intrinsic::x86_avx_vinsertf128_ps_256:		// llvm.x86.avx.vinsertf128.ps.256
6089    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v4f32, MVT::i8);
6090    break;
6091  case Intrinsic::x86_avx_addsub_ps_256:		// llvm.x86.avx.addsub.ps.256
6092  case Intrinsic::x86_avx_hadd_ps_256:		// llvm.x86.avx.hadd.ps.256
6093  case Intrinsic::x86_avx_hsub_ps_256:		// llvm.x86.avx.hsub.ps.256
6094  case Intrinsic::x86_avx_max_ps_256:		// llvm.x86.avx.max.ps.256
6095  case Intrinsic::x86_avx_min_ps_256:		// llvm.x86.avx.min.ps.256
6096    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::v8f32);
6097    break;
6098  case Intrinsic::x86_avx_blend_ps_256:		// llvm.x86.avx.blend.ps.256
6099  case Intrinsic::x86_avx_dp_ps_256:		// llvm.x86.avx.dp.ps.256
6100    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::i32);
6101    break;
6102  case Intrinsic::x86_avx_cmp_ps_256:		// llvm.x86.avx.cmp.ps.256
6103  case Intrinsic::x86_avx_vperm2f128_ps_256:		// llvm.x86.avx.vperm2f128.ps.256
6104    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::i8);
6105    break;
6106  case Intrinsic::x86_avx_blendv_ps_256:		// llvm.x86.avx.blendv.ps.256
6107    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8f32, MVT::v8f32, MVT::v8f32, MVT::v8f32);
6108    break;
6109  case Intrinsic::x86_avx_vpermilvar_ps_256:		// llvm.x86.avx.vpermilvar.ps.256
6110    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8f32, MVT::v8f32, MVT::v8i32);
6111    break;
6112  case Intrinsic::x86_avx_cvtdq2_ps_256:		// llvm.x86.avx.cvtdq2.ps.256
6113    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8f32, MVT::v8i32);
6114    break;
6115  case Intrinsic::x86_sse41_pmovsxbw:		// llvm.x86.sse41.pmovsxbw
6116  case Intrinsic::x86_sse41_pmovzxbw:		// llvm.x86.sse41.pmovzxbw
6117    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i16, MVT::v16i8);
6118    break;
6119  case Intrinsic::x86_sse2_packssdw_128:		// llvm.x86.sse2.packssdw.128
6120  case Intrinsic::x86_sse41_packusdw:		// llvm.x86.sse41.packusdw
6121    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v4i32, MVT::v4i32);
6122    break;
6123  case Intrinsic::x86_sse41_phminposuw:		// llvm.x86.sse41.phminposuw
6124  case Intrinsic::x86_ssse3_pabs_w_128:		// llvm.x86.ssse3.pabs.w.128
6125    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i16, MVT::v8i16);
6126    break;
6127  case Intrinsic::x86_sse2_pslli_w:		// llvm.x86.sse2.pslli.w
6128  case Intrinsic::x86_sse2_psrai_w:		// llvm.x86.sse2.psrai.w
6129  case Intrinsic::x86_sse2_psrli_w:		// llvm.x86.sse2.psrli.w
6130    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v8i16, MVT::i32);
6131    break;
6132  case Intrinsic::x86_sse2_padds_w:		// llvm.x86.sse2.padds.w
6133  case Intrinsic::x86_sse2_paddus_w:		// llvm.x86.sse2.paddus.w
6134  case Intrinsic::x86_sse2_pavg_w:		// llvm.x86.sse2.pavg.w
6135  case Intrinsic::x86_sse2_pcmpeq_w:		// llvm.x86.sse2.pcmpeq.w
6136  case Intrinsic::x86_sse2_pcmpgt_w:		// llvm.x86.sse2.pcmpgt.w
6137  case Intrinsic::x86_sse2_pmaxs_w:		// llvm.x86.sse2.pmaxs.w
6138  case Intrinsic::x86_sse2_pmins_w:		// llvm.x86.sse2.pmins.w
6139  case Intrinsic::x86_sse2_pmulh_w:		// llvm.x86.sse2.pmulh.w
6140  case Intrinsic::x86_sse2_pmulhu_w:		// llvm.x86.sse2.pmulhu.w
6141  case Intrinsic::x86_sse2_psll_w:		// llvm.x86.sse2.psll.w
6142  case Intrinsic::x86_sse2_psra_w:		// llvm.x86.sse2.psra.w
6143  case Intrinsic::x86_sse2_psrl_w:		// llvm.x86.sse2.psrl.w
6144  case Intrinsic::x86_sse2_psubs_w:		// llvm.x86.sse2.psubs.w
6145  case Intrinsic::x86_sse2_psubus_w:		// llvm.x86.sse2.psubus.w
6146  case Intrinsic::x86_sse41_pmaxuw:		// llvm.x86.sse41.pmaxuw
6147  case Intrinsic::x86_sse41_pminuw:		// llvm.x86.sse41.pminuw
6148  case Intrinsic::x86_ssse3_phadd_w_128:		// llvm.x86.ssse3.phadd.w.128
6149  case Intrinsic::x86_ssse3_phsub_sw_128:		// llvm.x86.ssse3.phsub.sw.128
6150  case Intrinsic::x86_ssse3_phsub_w_128:		// llvm.x86.ssse3.phsub.w.128
6151  case Intrinsic::x86_ssse3_pmadd_ub_sw_128:		// llvm.x86.ssse3.pmadd.ub.sw.128
6152  case Intrinsic::x86_ssse3_pmul_hr_sw_128:		// llvm.x86.ssse3.pmul.hr.sw.128
6153  case Intrinsic::x86_ssse3_psign_w_128:		// llvm.x86.ssse3.psign.w.128
6154    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::v8i16, MVT::v8i16, MVT::v8i16);
6155    break;
6156  case Intrinsic::x86_sse41_pblendw:		// llvm.x86.sse41.pblendw
6157    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i16, MVT::v8i16, MVT::v8i16, MVT::i32);
6158    break;
6159  case Intrinsic::x86_avx_cvt_ps2dq_256:		// llvm.x86.avx.cvt.ps2dq.256
6160  case Intrinsic::x86_avx_cvtt_ps2dq_256:		// llvm.x86.avx.cvtt.ps2dq.256
6161    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::v8i32, MVT::v8f32);
6162    break;
6163  case Intrinsic::x86_avx_vinsertf128_si_256:		// llvm.x86.avx.vinsertf128.si.256
6164    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i32, MVT::v8i32, MVT::v4i32, MVT::i8);
6165    break;
6166  case Intrinsic::x86_avx_vperm2f128_si_256:		// llvm.x86.avx.vperm2f128.si.256
6167    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::v8i32, MVT::v8i32, MVT::v8i32, MVT::i8);
6168    break;
6169  case Intrinsic::x86_sse_cvtpd2pi:		// llvm.x86.sse.cvtpd2pi
6170  case Intrinsic::x86_sse_cvttpd2pi:		// llvm.x86.sse.cvttpd2pi
6171    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::v2f64);
6172    break;
6173  case Intrinsic::x86_sse_cvtps2pi:		// llvm.x86.sse.cvtps2pi
6174  case Intrinsic::x86_sse_cvttps2pi:		// llvm.x86.sse.cvttps2pi
6175    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::v4f32);
6176    break;
6177  case Intrinsic::x86_3dnow_pf2id:		// llvm.x86.3dnow.pf2id
6178  case Intrinsic::x86_3dnow_pfrcp:		// llvm.x86.3dnow.pfrcp
6179  case Intrinsic::x86_3dnow_pfrsqrt:		// llvm.x86.3dnow.pfrsqrt
6180  case Intrinsic::x86_3dnow_pi2fd:		// llvm.x86.3dnow.pi2fd
6181  case Intrinsic::x86_3dnowa_pf2iw:		// llvm.x86.3dnowa.pf2iw
6182  case Intrinsic::x86_3dnowa_pi2fw:		// llvm.x86.3dnowa.pi2fw
6183  case Intrinsic::x86_3dnowa_pswapd:		// llvm.x86.3dnowa.pswapd
6184  case Intrinsic::x86_ssse3_pabs_b:		// llvm.x86.ssse3.pabs.b
6185  case Intrinsic::x86_ssse3_pabs_d:		// llvm.x86.ssse3.pabs.d
6186  case Intrinsic::x86_ssse3_pabs_w:		// llvm.x86.ssse3.pabs.w
6187    VerifyIntrinsicPrototype(ID, IF, 1, 1, MVT::x86mmx, MVT::x86mmx);
6188    break;
6189  case Intrinsic::x86_mmx_pslli_d:		// llvm.x86.mmx.pslli.d
6190  case Intrinsic::x86_mmx_pslli_q:		// llvm.x86.mmx.pslli.q
6191  case Intrinsic::x86_mmx_pslli_w:		// llvm.x86.mmx.pslli.w
6192  case Intrinsic::x86_mmx_psrai_d:		// llvm.x86.mmx.psrai.d
6193  case Intrinsic::x86_mmx_psrai_w:		// llvm.x86.mmx.psrai.w
6194  case Intrinsic::x86_mmx_psrli_d:		// llvm.x86.mmx.psrli.d
6195  case Intrinsic::x86_mmx_psrli_q:		// llvm.x86.mmx.psrli.q
6196  case Intrinsic::x86_mmx_psrli_w:		// llvm.x86.mmx.psrli.w
6197    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::i32);
6198    break;
6199  case Intrinsic::x86_mmx_pinsr_w:		// llvm.x86.mmx.pinsr.w
6200    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::x86mmx, MVT::x86mmx, MVT::i32, MVT::i32);
6201    break;
6202  case Intrinsic::x86_sse_pshuf_w:		// llvm.x86.sse.pshuf.w
6203    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::i8);
6204    break;
6205  case Intrinsic::x86_3dnow_pavgusb:		// llvm.x86.3dnow.pavgusb
6206  case Intrinsic::x86_3dnow_pfacc:		// llvm.x86.3dnow.pfacc
6207  case Intrinsic::x86_3dnow_pfadd:		// llvm.x86.3dnow.pfadd
6208  case Intrinsic::x86_3dnow_pfcmpeq:		// llvm.x86.3dnow.pfcmpeq
6209  case Intrinsic::x86_3dnow_pfcmpge:		// llvm.x86.3dnow.pfcmpge
6210  case Intrinsic::x86_3dnow_pfcmpgt:		// llvm.x86.3dnow.pfcmpgt
6211  case Intrinsic::x86_3dnow_pfmax:		// llvm.x86.3dnow.pfmax
6212  case Intrinsic::x86_3dnow_pfmin:		// llvm.x86.3dnow.pfmin
6213  case Intrinsic::x86_3dnow_pfmul:		// llvm.x86.3dnow.pfmul
6214  case Intrinsic::x86_3dnow_pfrcpit1:		// llvm.x86.3dnow.pfrcpit1
6215  case Intrinsic::x86_3dnow_pfrcpit2:		// llvm.x86.3dnow.pfrcpit2
6216  case Intrinsic::x86_3dnow_pfrsqit1:		// llvm.x86.3dnow.pfrsqit1
6217  case Intrinsic::x86_3dnow_pfsub:		// llvm.x86.3dnow.pfsub
6218  case Intrinsic::x86_3dnow_pfsubr:		// llvm.x86.3dnow.pfsubr
6219  case Intrinsic::x86_3dnow_pmulhrw:		// llvm.x86.3dnow.pmulhrw
6220  case Intrinsic::x86_3dnowa_pfnacc:		// llvm.x86.3dnowa.pfnacc
6221  case Intrinsic::x86_3dnowa_pfpnacc:		// llvm.x86.3dnowa.pfpnacc
6222  case Intrinsic::x86_mmx_packssdw:		// llvm.x86.mmx.packssdw
6223  case Intrinsic::x86_mmx_packsswb:		// llvm.x86.mmx.packsswb
6224  case Intrinsic::x86_mmx_packuswb:		// llvm.x86.mmx.packuswb
6225  case Intrinsic::x86_mmx_padd_b:		// llvm.x86.mmx.padd.b
6226  case Intrinsic::x86_mmx_padd_d:		// llvm.x86.mmx.padd.d
6227  case Intrinsic::x86_mmx_padd_q:		// llvm.x86.mmx.padd.q
6228  case Intrinsic::x86_mmx_padd_w:		// llvm.x86.mmx.padd.w
6229  case Intrinsic::x86_mmx_padds_b:		// llvm.x86.mmx.padds.b
6230  case Intrinsic::x86_mmx_padds_w:		// llvm.x86.mmx.padds.w
6231  case Intrinsic::x86_mmx_paddus_b:		// llvm.x86.mmx.paddus.b
6232  case Intrinsic::x86_mmx_paddus_w:		// llvm.x86.mmx.paddus.w
6233  case Intrinsic::x86_mmx_pand:		// llvm.x86.mmx.pand
6234  case Intrinsic::x86_mmx_pandn:		// llvm.x86.mmx.pandn
6235  case Intrinsic::x86_mmx_pavg_b:		// llvm.x86.mmx.pavg.b
6236  case Intrinsic::x86_mmx_pavg_w:		// llvm.x86.mmx.pavg.w
6237  case Intrinsic::x86_mmx_pcmpeq_b:		// llvm.x86.mmx.pcmpeq.b
6238  case Intrinsic::x86_mmx_pcmpeq_d:		// llvm.x86.mmx.pcmpeq.d
6239  case Intrinsic::x86_mmx_pcmpeq_w:		// llvm.x86.mmx.pcmpeq.w
6240  case Intrinsic::x86_mmx_pcmpgt_b:		// llvm.x86.mmx.pcmpgt.b
6241  case Intrinsic::x86_mmx_pcmpgt_d:		// llvm.x86.mmx.pcmpgt.d
6242  case Intrinsic::x86_mmx_pcmpgt_w:		// llvm.x86.mmx.pcmpgt.w
6243  case Intrinsic::x86_mmx_pmadd_wd:		// llvm.x86.mmx.pmadd.wd
6244  case Intrinsic::x86_mmx_pmaxs_w:		// llvm.x86.mmx.pmaxs.w
6245  case Intrinsic::x86_mmx_pmaxu_b:		// llvm.x86.mmx.pmaxu.b
6246  case Intrinsic::x86_mmx_pmins_w:		// llvm.x86.mmx.pmins.w
6247  case Intrinsic::x86_mmx_pminu_b:		// llvm.x86.mmx.pminu.b
6248  case Intrinsic::x86_mmx_pmulh_w:		// llvm.x86.mmx.pmulh.w
6249  case Intrinsic::x86_mmx_pmulhu_w:		// llvm.x86.mmx.pmulhu.w
6250  case Intrinsic::x86_mmx_pmull_w:		// llvm.x86.mmx.pmull.w
6251  case Intrinsic::x86_mmx_pmulu_dq:		// llvm.x86.mmx.pmulu.dq
6252  case Intrinsic::x86_mmx_por:		// llvm.x86.mmx.por
6253  case Intrinsic::x86_mmx_psad_bw:		// llvm.x86.mmx.psad.bw
6254  case Intrinsic::x86_mmx_psll_d:		// llvm.x86.mmx.psll.d
6255  case Intrinsic::x86_mmx_psll_q:		// llvm.x86.mmx.psll.q
6256  case Intrinsic::x86_mmx_psll_w:		// llvm.x86.mmx.psll.w
6257  case Intrinsic::x86_mmx_psra_d:		// llvm.x86.mmx.psra.d
6258  case Intrinsic::x86_mmx_psra_w:		// llvm.x86.mmx.psra.w
6259  case Intrinsic::x86_mmx_psrl_d:		// llvm.x86.mmx.psrl.d
6260  case Intrinsic::x86_mmx_psrl_q:		// llvm.x86.mmx.psrl.q
6261  case Intrinsic::x86_mmx_psrl_w:		// llvm.x86.mmx.psrl.w
6262  case Intrinsic::x86_mmx_psub_b:		// llvm.x86.mmx.psub.b
6263  case Intrinsic::x86_mmx_psub_d:		// llvm.x86.mmx.psub.d
6264  case Intrinsic::x86_mmx_psub_q:		// llvm.x86.mmx.psub.q
6265  case Intrinsic::x86_mmx_psub_w:		// llvm.x86.mmx.psub.w
6266  case Intrinsic::x86_mmx_psubs_b:		// llvm.x86.mmx.psubs.b
6267  case Intrinsic::x86_mmx_psubs_w:		// llvm.x86.mmx.psubs.w
6268  case Intrinsic::x86_mmx_psubus_b:		// llvm.x86.mmx.psubus.b
6269  case Intrinsic::x86_mmx_psubus_w:		// llvm.x86.mmx.psubus.w
6270  case Intrinsic::x86_mmx_punpckhbw:		// llvm.x86.mmx.punpckhbw
6271  case Intrinsic::x86_mmx_punpckhdq:		// llvm.x86.mmx.punpckhdq
6272  case Intrinsic::x86_mmx_punpckhwd:		// llvm.x86.mmx.punpckhwd
6273  case Intrinsic::x86_mmx_punpcklbw:		// llvm.x86.mmx.punpcklbw
6274  case Intrinsic::x86_mmx_punpckldq:		// llvm.x86.mmx.punpckldq
6275  case Intrinsic::x86_mmx_punpcklwd:		// llvm.x86.mmx.punpcklwd
6276  case Intrinsic::x86_mmx_pxor:		// llvm.x86.mmx.pxor
6277  case Intrinsic::x86_ssse3_phadd_d:		// llvm.x86.ssse3.phadd.d
6278  case Intrinsic::x86_ssse3_phadd_sw:		// llvm.x86.ssse3.phadd.sw
6279  case Intrinsic::x86_ssse3_phadd_w:		// llvm.x86.ssse3.phadd.w
6280  case Intrinsic::x86_ssse3_phsub_d:		// llvm.x86.ssse3.phsub.d
6281  case Intrinsic::x86_ssse3_phsub_sw:		// llvm.x86.ssse3.phsub.sw
6282  case Intrinsic::x86_ssse3_phsub_w:		// llvm.x86.ssse3.phsub.w
6283  case Intrinsic::x86_ssse3_pmadd_ub_sw:		// llvm.x86.ssse3.pmadd.ub.sw
6284  case Intrinsic::x86_ssse3_pmul_hr_sw:		// llvm.x86.ssse3.pmul.hr.sw
6285  case Intrinsic::x86_ssse3_pshuf_b:		// llvm.x86.ssse3.pshuf.b
6286  case Intrinsic::x86_ssse3_psign_b:		// llvm.x86.ssse3.psign.b
6287  case Intrinsic::x86_ssse3_psign_d:		// llvm.x86.ssse3.psign.d
6288  case Intrinsic::x86_ssse3_psign_w:		// llvm.x86.ssse3.psign.w
6289    VerifyIntrinsicPrototype(ID, IF, 1, 2, MVT::x86mmx, MVT::x86mmx, MVT::x86mmx);
6290    break;
6291  case Intrinsic::x86_mmx_palignr_b:		// llvm.x86.mmx.palignr.b
6292    VerifyIntrinsicPrototype(ID, IF, 1, 3, MVT::x86mmx, MVT::x86mmx, MVT::x86mmx, MVT::i8);
6293    break;
6294  }
6295#endif
6296
6297// Code for generating Intrinsic function declarations.
6298#ifdef GET_INTRINSIC_GENERATOR
6299  switch (id) {
6300  default: assert(0 && "Invalid intrinsic!");
6301  case Intrinsic::eh_unwind_init:		// llvm.eh.unwind.init
6302  case Intrinsic::trap:		// llvm.trap
6303  case Intrinsic::x86_avx_vzeroall:		// llvm.x86.avx.vzeroall
6304  case Intrinsic::x86_avx_vzeroupper:		// llvm.x86.avx.vzeroupper
6305  case Intrinsic::x86_mmx_emms:		// llvm.x86.mmx.emms
6306  case Intrinsic::x86_mmx_femms:		// llvm.x86.mmx.femms
6307  case Intrinsic::x86_sse2_lfence:		// llvm.x86.sse2.lfence
6308  case Intrinsic::x86_sse2_mfence:		// llvm.x86.sse2.mfence
6309  case Intrinsic::x86_sse_sfence:		// llvm.x86.sse.sfence
6310    ResultTy = Type::getVoidTy(Context);
6311    break;
6312  case Intrinsic::memcpy:		// llvm.memcpy
6313  case Intrinsic::memmove:		// llvm.memmove
6314    ResultTy = Type::getVoidTy(Context);
6315    ArgTys.push_back((0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(IntegerType::get(Context, 8)));
6316    ArgTys.push_back((1 < Tys.size()) ? Tys[1] : PointerType::getUnqual(IntegerType::get(Context, 8)));
6317    ArgTys.push_back(Tys[2]);
6318    ArgTys.push_back(IntegerType::get(Context, 32));
6319    ArgTys.push_back(IntegerType::get(Context, 1));
6320    break;
6321  case Intrinsic::memset:		// llvm.memset
6322    ResultTy = Type::getVoidTy(Context);
6323    ArgTys.push_back((0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(IntegerType::get(Context, 8)));
6324    ArgTys.push_back(IntegerType::get(Context, 8));
6325    ArgTys.push_back(Tys[1]);
6326    ArgTys.push_back(IntegerType::get(Context, 32));
6327    ArgTys.push_back(IntegerType::get(Context, 1));
6328    break;
6329  case Intrinsic::invariant_end:		// llvm.invariant.end
6330    ResultTy = Type::getVoidTy(Context);
6331    ArgTys.push_back(PointerType::getUnqual(StructType::get(Context)));
6332    ArgTys.push_back(IntegerType::get(Context, 64));
6333    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6334    break;
6335  case Intrinsic::eh_sjlj_callsite:		// llvm.eh.sjlj.callsite
6336  case Intrinsic::eh_sjlj_dispatch_setup:		// llvm.eh.sjlj.dispatch.setup
6337  case Intrinsic::pcmarker:		// llvm.pcmarker
6338    ResultTy = Type::getVoidTy(Context);
6339    ArgTys.push_back(IntegerType::get(Context, 32));
6340    break;
6341  case Intrinsic::x86_sse3_mwait:		// llvm.x86.sse3.mwait
6342    ResultTy = Type::getVoidTy(Context);
6343    ArgTys.push_back(IntegerType::get(Context, 32));
6344    ArgTys.push_back(IntegerType::get(Context, 32));
6345    break;
6346  case Intrinsic::eh_return_i32:		// llvm.eh.return.i32
6347    ResultTy = Type::getVoidTy(Context);
6348    ArgTys.push_back(IntegerType::get(Context, 32));
6349    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6350    break;
6351  case Intrinsic::eh_return_i64:		// llvm.eh.return.i64
6352  case Intrinsic::lifetime_end:		// llvm.lifetime.end
6353  case Intrinsic::lifetime_start:		// llvm.lifetime.start
6354    ResultTy = Type::getVoidTy(Context);
6355    ArgTys.push_back(IntegerType::get(Context, 64));
6356    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6357    break;
6358  case Intrinsic::x86_int:		// llvm.x86.int
6359    ResultTy = Type::getVoidTy(Context);
6360    ArgTys.push_back(IntegerType::get(Context, 8));
6361    break;
6362  case Intrinsic::dbg_value:		// llvm.dbg.value
6363    ResultTy = Type::getVoidTy(Context);
6364    ArgTys.push_back(Type::getMetadataTy(Context));
6365    ArgTys.push_back(IntegerType::get(Context, 64));
6366    ArgTys.push_back(Type::getMetadataTy(Context));
6367    break;
6368  case Intrinsic::dbg_declare:		// llvm.dbg.declare
6369    ResultTy = Type::getVoidTy(Context);
6370    ArgTys.push_back(Type::getMetadataTy(Context));
6371    ArgTys.push_back(Type::getMetadataTy(Context));
6372    break;
6373  case Intrinsic::eh_sjlj_functioncontext:		// llvm.eh.sjlj.functioncontext
6374  case Intrinsic::eh_sjlj_longjmp:		// llvm.eh.sjlj.longjmp
6375  case Intrinsic::stackrestore:		// llvm.stackrestore
6376  case Intrinsic::vaend:		// llvm.va_end
6377  case Intrinsic::vastart:		// llvm.va_start
6378  case Intrinsic::x86_sse2_clflush:		// llvm.x86.sse2.clflush
6379  case Intrinsic::x86_sse_ldmxcsr:		// llvm.x86.sse.ldmxcsr
6380  case Intrinsic::x86_sse_stmxcsr:		// llvm.x86.sse.stmxcsr
6381    ResultTy = Type::getVoidTy(Context);
6382    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6383    break;
6384  case Intrinsic::eh_resume:		// llvm.eh.resume
6385  case Intrinsic::longjmp:		// llvm.longjmp
6386  case Intrinsic::siglongjmp:		// llvm.siglongjmp
6387    ResultTy = Type::getVoidTy(Context);
6388    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6389    ArgTys.push_back(IntegerType::get(Context, 32));
6390    break;
6391  case Intrinsic::x86_sse3_monitor:		// llvm.x86.sse3.monitor
6392    ResultTy = Type::getVoidTy(Context);
6393    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6394    ArgTys.push_back(IntegerType::get(Context, 32));
6395    ArgTys.push_back(IntegerType::get(Context, 32));
6396    break;
6397  case Intrinsic::prefetch:		// llvm.prefetch
6398    ResultTy = Type::getVoidTy(Context);
6399    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6400    ArgTys.push_back(IntegerType::get(Context, 32));
6401    ArgTys.push_back(IntegerType::get(Context, 32));
6402    ArgTys.push_back(IntegerType::get(Context, 32));
6403    break;
6404  case Intrinsic::vacopy:		// llvm.va_copy
6405    ResultTy = Type::getVoidTy(Context);
6406    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6407    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6408    break;
6409  case Intrinsic::init_trampoline:		// llvm.init.trampoline
6410    ResultTy = Type::getVoidTy(Context);
6411    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6412    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6413    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6414    break;
6415  case Intrinsic::var_annotation:		// llvm.var.annotation
6416    ResultTy = Type::getVoidTy(Context);
6417    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6418    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6419    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6420    ArgTys.push_back(IntegerType::get(Context, 32));
6421    break;
6422  case Intrinsic::gcwrite:		// llvm.gcwrite
6423    ResultTy = Type::getVoidTy(Context);
6424    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6425    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6426    ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8))));
6427    break;
6428  case Intrinsic::stackprotector:		// llvm.stackprotector
6429    ResultTy = Type::getVoidTy(Context);
6430    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6431    ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8))));
6432    break;
6433  case Intrinsic::x86_sse2_storeu_dq:		// llvm.x86.sse2.storeu.dq
6434    ResultTy = Type::getVoidTy(Context);
6435    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6436    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6437    break;
6438  case Intrinsic::x86_sse2_storeu_pd:		// llvm.x86.sse2.storeu.pd
6439    ResultTy = Type::getVoidTy(Context);
6440    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6441    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6442    break;
6443  case Intrinsic::x86_avx_maskstore_pd:		// llvm.x86.avx.maskstore.pd
6444    ResultTy = Type::getVoidTy(Context);
6445    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6446    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6447    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6448    break;
6449  case Intrinsic::x86_avx_storeu_dq_256:		// llvm.x86.avx.storeu.dq.256
6450    ResultTy = Type::getVoidTy(Context);
6451    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6452    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 32));
6453    break;
6454  case Intrinsic::x86_sse_storeu_ps:		// llvm.x86.sse.storeu.ps
6455    ResultTy = Type::getVoidTy(Context);
6456    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6457    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
6458    break;
6459  case Intrinsic::x86_avx_maskstore_ps:		// llvm.x86.avx.maskstore.ps
6460    ResultTy = Type::getVoidTy(Context);
6461    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6462    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
6463    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
6464    break;
6465  case Intrinsic::x86_avx_movnt_pd_256:		// llvm.x86.avx.movnt.pd.256
6466  case Intrinsic::x86_avx_storeu_pd_256:		// llvm.x86.avx.storeu.pd.256
6467    ResultTy = Type::getVoidTy(Context);
6468    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6469    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
6470    break;
6471  case Intrinsic::x86_avx_maskstore_pd_256:		// llvm.x86.avx.maskstore.pd.256
6472    ResultTy = Type::getVoidTy(Context);
6473    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6474    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
6475    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
6476    break;
6477  case Intrinsic::x86_sse2_storel_dq:		// llvm.x86.sse2.storel.dq
6478    ResultTy = Type::getVoidTy(Context);
6479    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6480    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
6481    break;
6482  case Intrinsic::x86_avx_movnt_dq_256:		// llvm.x86.avx.movnt.dq.256
6483    ResultTy = Type::getVoidTy(Context);
6484    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6485    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4));
6486    break;
6487  case Intrinsic::x86_avx_movnt_ps_256:		// llvm.x86.avx.movnt.ps.256
6488  case Intrinsic::x86_avx_storeu_ps_256:		// llvm.x86.avx.storeu.ps.256
6489    ResultTy = Type::getVoidTy(Context);
6490    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6491    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
6492    break;
6493  case Intrinsic::x86_avx_maskstore_ps_256:		// llvm.x86.avx.maskstore.ps.256
6494    ResultTy = Type::getVoidTy(Context);
6495    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6496    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
6497    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
6498    break;
6499  case Intrinsic::gcroot:		// llvm.gcroot
6500    ResultTy = Type::getVoidTy(Context);
6501    ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8))));
6502    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6503    break;
6504  case Intrinsic::x86_mmx_movnt_dq:		// llvm.x86.mmx.movnt.dq
6505    ResultTy = Type::getVoidTy(Context);
6506    ArgTys.push_back(PointerType::getUnqual(Type::getX86_MMXTy(Context)));
6507    ArgTys.push_back(Type::getX86_MMXTy(Context));
6508    break;
6509  case Intrinsic::x86_sse2_maskmov_dqu:		// llvm.x86.sse2.maskmov.dqu
6510    ResultTy = Type::getVoidTy(Context);
6511    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6512    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6513    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6514    break;
6515  case Intrinsic::x86_mmx_maskmovq:		// llvm.x86.mmx.maskmovq
6516    ResultTy = Type::getVoidTy(Context);
6517    ArgTys.push_back(Type::getX86_MMXTy(Context));
6518    ArgTys.push_back(Type::getX86_MMXTy(Context));
6519    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6520    break;
6521  case Intrinsic::ptr_annotation:		// llvm.ptr.annotation
6522    ResultTy = (0 < Tys.size()) ? Tys[0] : PointerType::getUnqual(Tys[0]);
6523    ArgTys.push_back(Tys[0]);
6524    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6525    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6526    ArgTys.push_back(IntegerType::get(Context, 32));
6527    break;
6528  case Intrinsic::sin:		// llvm.sin
6529    ResultTy = Tys[0];
6530    ArgTys.push_back(Tys[0]);
6531    break;
6532  case Intrinsic::cos:		// llvm.cos
6533    ResultTy = Tys[0];
6534    ArgTys.push_back(Tys[0]);
6535    break;
6536  case Intrinsic::pow:		// llvm.pow
6537    ResultTy = Tys[0];
6538    ArgTys.push_back(Tys[0]);
6539    ArgTys.push_back(Tys[0]);
6540    break;
6541  case Intrinsic::log:		// llvm.log
6542    ResultTy = Tys[0];
6543    ArgTys.push_back(Tys[0]);
6544    break;
6545  case Intrinsic::log10:		// llvm.log10
6546    ResultTy = Tys[0];
6547    ArgTys.push_back(Tys[0]);
6548    break;
6549  case Intrinsic::log2:		// llvm.log2
6550    ResultTy = Tys[0];
6551    ArgTys.push_back(Tys[0]);
6552    break;
6553  case Intrinsic::exp:		// llvm.exp
6554    ResultTy = Tys[0];
6555    ArgTys.push_back(Tys[0]);
6556    break;
6557  case Intrinsic::exp2:		// llvm.exp2
6558    ResultTy = Tys[0];
6559    ArgTys.push_back(Tys[0]);
6560    break;
6561  case Intrinsic::fma:		// llvm.fma
6562    ResultTy = Tys[0];
6563    ArgTys.push_back(Tys[0]);
6564    ArgTys.push_back(Tys[0]);
6565    ArgTys.push_back(Tys[0]);
6566    break;
6567  case Intrinsic::sqrt:		// llvm.sqrt
6568    ResultTy = Tys[0];
6569    ArgTys.push_back(Tys[0]);
6570    break;
6571  case Intrinsic::powi:		// llvm.powi
6572    ResultTy = Tys[0];
6573    ArgTys.push_back(Tys[0]);
6574    ArgTys.push_back(IntegerType::get(Context, 32));
6575    break;
6576  case Intrinsic::convertff:		// llvm.convertff
6577    ResultTy = Tys[0];
6578    ArgTys.push_back(Tys[1]);
6579    ArgTys.push_back(IntegerType::get(Context, 32));
6580    ArgTys.push_back(IntegerType::get(Context, 32));
6581    break;
6582  case Intrinsic::convertfsi:		// llvm.convertfsi
6583  case Intrinsic::convertfui:		// llvm.convertfui
6584    ResultTy = Tys[0];
6585    ArgTys.push_back(Tys[1]);
6586    ArgTys.push_back(IntegerType::get(Context, 32));
6587    ArgTys.push_back(IntegerType::get(Context, 32));
6588    break;
6589  case Intrinsic::expect:		// llvm.expect
6590    ResultTy = Tys[0];
6591    ArgTys.push_back(Tys[0]);
6592    ArgTys.push_back(Tys[0]);
6593    break;
6594  case Intrinsic::bswap:		// llvm.bswap
6595    ResultTy = Tys[0];
6596    ArgTys.push_back(Tys[0]);
6597    break;
6598  case Intrinsic::ctpop:		// llvm.ctpop
6599    ResultTy = Tys[0];
6600    ArgTys.push_back(Tys[0]);
6601    break;
6602  case Intrinsic::ctlz:		// llvm.ctlz
6603    ResultTy = Tys[0];
6604    ArgTys.push_back(Tys[0]);
6605    break;
6606  case Intrinsic::cttz:		// llvm.cttz
6607    ResultTy = Tys[0];
6608    ArgTys.push_back(Tys[0]);
6609    break;
6610  case Intrinsic::annotation:		// llvm.annotation
6611    ResultTy = Tys[0];
6612    ArgTys.push_back(Tys[0]);
6613    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6614    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6615    ArgTys.push_back(IntegerType::get(Context, 32));
6616    break;
6617  case Intrinsic::convertsif:		// llvm.convertsif
6618  case Intrinsic::convertuif:		// llvm.convertuif
6619    ResultTy = Tys[0];
6620    ArgTys.push_back(Tys[1]);
6621    ArgTys.push_back(IntegerType::get(Context, 32));
6622    ArgTys.push_back(IntegerType::get(Context, 32));
6623    break;
6624  case Intrinsic::convertss:		// llvm.convertss
6625  case Intrinsic::convertsu:		// llvm.convertsu
6626  case Intrinsic::convertus:		// llvm.convertus
6627  case Intrinsic::convertuu:		// llvm.convertuu
6628    ResultTy = Tys[0];
6629    ArgTys.push_back(Tys[1]);
6630    ArgTys.push_back(IntegerType::get(Context, 32));
6631    ArgTys.push_back(IntegerType::get(Context, 32));
6632    break;
6633  case Intrinsic::objectsize:		// llvm.objectsize
6634    ResultTy = Tys[0];
6635    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6636    ArgTys.push_back(IntegerType::get(Context, 1));
6637    break;
6638  case Intrinsic::sadd_with_overflow:		// llvm.sadd.with.overflow
6639    ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1),  NULL);
6640    ArgTys.push_back(Tys[0]);
6641    ArgTys.push_back(Tys[0]);
6642    break;
6643  case Intrinsic::uadd_with_overflow:		// llvm.uadd.with.overflow
6644    ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1),  NULL);
6645    ArgTys.push_back(Tys[0]);
6646    ArgTys.push_back(Tys[0]);
6647    break;
6648  case Intrinsic::ssub_with_overflow:		// llvm.ssub.with.overflow
6649    ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1),  NULL);
6650    ArgTys.push_back(Tys[0]);
6651    ArgTys.push_back(Tys[0]);
6652    break;
6653  case Intrinsic::usub_with_overflow:		// llvm.usub.with.overflow
6654    ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1),  NULL);
6655    ArgTys.push_back(Tys[0]);
6656    ArgTys.push_back(Tys[0]);
6657    break;
6658  case Intrinsic::smul_with_overflow:		// llvm.smul.with.overflow
6659    ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1),  NULL);
6660    ArgTys.push_back(Tys[0]);
6661    ArgTys.push_back(Tys[0]);
6662    break;
6663  case Intrinsic::umul_with_overflow:		// llvm.umul.with.overflow
6664    ResultTy = StructType::get(Tys[0], IntegerType::get(Context, 1),  NULL);
6665    ArgTys.push_back(Tys[0]);
6666    ArgTys.push_back(Tys[0]);
6667    break;
6668  case Intrinsic::invariant_start:		// llvm.invariant.start
6669    ResultTy = PointerType::getUnqual(StructType::get(Context));
6670    ArgTys.push_back(IntegerType::get(Context, 64));
6671    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6672    break;
6673  case Intrinsic::convert_from_fp16:		// llvm.convert.from.fp16
6674    ResultTy = Type::getFloatTy(Context);
6675    ArgTys.push_back(IntegerType::get(Context, 16));
6676    break;
6677  case Intrinsic::convert_to_fp16:		// llvm.convert.to.fp16
6678    ResultTy = IntegerType::get(Context, 16);
6679    ArgTys.push_back(Type::getFloatTy(Context));
6680    break;
6681  case Intrinsic::flt_rounds:		// llvm.flt.rounds
6682    ResultTy = IntegerType::get(Context, 32);
6683    break;
6684  case Intrinsic::x86_sse42_crc32_32_16:		// llvm.x86.sse42.crc32.32.16
6685    ResultTy = IntegerType::get(Context, 32);
6686    ArgTys.push_back(IntegerType::get(Context, 32));
6687    ArgTys.push_back(IntegerType::get(Context, 16));
6688    break;
6689  case Intrinsic::x86_sse42_crc32_32_32:		// llvm.x86.sse42.crc32.32.32
6690    ResultTy = IntegerType::get(Context, 32);
6691    ArgTys.push_back(IntegerType::get(Context, 32));
6692    ArgTys.push_back(IntegerType::get(Context, 32));
6693    break;
6694  case Intrinsic::x86_sse42_crc32_32_8:		// llvm.x86.sse42.crc32.32.8
6695    ResultTy = IntegerType::get(Context, 32);
6696    ArgTys.push_back(IntegerType::get(Context, 32));
6697    ArgTys.push_back(IntegerType::get(Context, 8));
6698    break;
6699  case Intrinsic::eh_sjlj_setjmp:		// llvm.eh.sjlj.setjmp
6700  case Intrinsic::eh_typeid_for:		// llvm.eh.typeid.for
6701  case Intrinsic::setjmp:		// llvm.setjmp
6702    ResultTy = IntegerType::get(Context, 32);
6703    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6704    break;
6705  case Intrinsic::sigsetjmp:		// llvm.sigsetjmp
6706    ResultTy = IntegerType::get(Context, 32);
6707    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6708    ArgTys.push_back(IntegerType::get(Context, 32));
6709    break;
6710  case Intrinsic::eh_selector:		// llvm.eh.selector
6711    IsVarArg = true;
6712    ResultTy = IntegerType::get(Context, 32);
6713    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6714    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6715    break;
6716  case Intrinsic::x86_sse2_pmovmskb_128:		// llvm.x86.sse2.pmovmskb.128
6717    ResultTy = IntegerType::get(Context, 32);
6718    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6719    break;
6720  case Intrinsic::x86_sse41_pextrb:		// llvm.x86.sse41.pextrb
6721    ResultTy = IntegerType::get(Context, 32);
6722    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6723    ArgTys.push_back(IntegerType::get(Context, 32));
6724    break;
6725  case Intrinsic::x86_sse42_pcmpestri128:		// llvm.x86.sse42.pcmpestri128
6726  case Intrinsic::x86_sse42_pcmpestria128:		// llvm.x86.sse42.pcmpestria128
6727  case Intrinsic::x86_sse42_pcmpestric128:		// llvm.x86.sse42.pcmpestric128
6728  case Intrinsic::x86_sse42_pcmpestrio128:		// llvm.x86.sse42.pcmpestrio128
6729  case Intrinsic::x86_sse42_pcmpestris128:		// llvm.x86.sse42.pcmpestris128
6730  case Intrinsic::x86_sse42_pcmpestriz128:		// llvm.x86.sse42.pcmpestriz128
6731    ResultTy = IntegerType::get(Context, 32);
6732    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6733    ArgTys.push_back(IntegerType::get(Context, 32));
6734    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6735    ArgTys.push_back(IntegerType::get(Context, 32));
6736    ArgTys.push_back(IntegerType::get(Context, 8));
6737    break;
6738  case Intrinsic::x86_sse42_pcmpistri128:		// llvm.x86.sse42.pcmpistri128
6739  case Intrinsic::x86_sse42_pcmpistria128:		// llvm.x86.sse42.pcmpistria128
6740  case Intrinsic::x86_sse42_pcmpistric128:		// llvm.x86.sse42.pcmpistric128
6741  case Intrinsic::x86_sse42_pcmpistrio128:		// llvm.x86.sse42.pcmpistrio128
6742  case Intrinsic::x86_sse42_pcmpistris128:		// llvm.x86.sse42.pcmpistris128
6743  case Intrinsic::x86_sse42_pcmpistriz128:		// llvm.x86.sse42.pcmpistriz128
6744    ResultTy = IntegerType::get(Context, 32);
6745    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6746    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6747    ArgTys.push_back(IntegerType::get(Context, 8));
6748    break;
6749  case Intrinsic::x86_sse2_cvtsd2si:		// llvm.x86.sse2.cvtsd2si
6750  case Intrinsic::x86_sse2_cvttsd2si:		// llvm.x86.sse2.cvttsd2si
6751  case Intrinsic::x86_sse2_movmsk_pd:		// llvm.x86.sse2.movmsk.pd
6752    ResultTy = IntegerType::get(Context, 32);
6753    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6754    break;
6755  case Intrinsic::x86_avx_vtestc_pd:		// llvm.x86.avx.vtestc.pd
6756  case Intrinsic::x86_avx_vtestnzc_pd:		// llvm.x86.avx.vtestnzc.pd
6757  case Intrinsic::x86_avx_vtestz_pd:		// llvm.x86.avx.vtestz.pd
6758  case Intrinsic::x86_sse2_comieq_sd:		// llvm.x86.sse2.comieq.sd
6759  case Intrinsic::x86_sse2_comige_sd:		// llvm.x86.sse2.comige.sd
6760  case Intrinsic::x86_sse2_comigt_sd:		// llvm.x86.sse2.comigt.sd
6761  case Intrinsic::x86_sse2_comile_sd:		// llvm.x86.sse2.comile.sd
6762  case Intrinsic::x86_sse2_comilt_sd:		// llvm.x86.sse2.comilt.sd
6763  case Intrinsic::x86_sse2_comineq_sd:		// llvm.x86.sse2.comineq.sd
6764  case Intrinsic::x86_sse2_ucomieq_sd:		// llvm.x86.sse2.ucomieq.sd
6765  case Intrinsic::x86_sse2_ucomige_sd:		// llvm.x86.sse2.ucomige.sd
6766  case Intrinsic::x86_sse2_ucomigt_sd:		// llvm.x86.sse2.ucomigt.sd
6767  case Intrinsic::x86_sse2_ucomile_sd:		// llvm.x86.sse2.ucomile.sd
6768  case Intrinsic::x86_sse2_ucomilt_sd:		// llvm.x86.sse2.ucomilt.sd
6769  case Intrinsic::x86_sse2_ucomineq_sd:		// llvm.x86.sse2.ucomineq.sd
6770    ResultTy = IntegerType::get(Context, 32);
6771    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6772    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6773    break;
6774  case Intrinsic::x86_sse_cvtss2si:		// llvm.x86.sse.cvtss2si
6775  case Intrinsic::x86_sse_cvttss2si:		// llvm.x86.sse.cvttss2si
6776  case Intrinsic::x86_sse_movmsk_ps:		// llvm.x86.sse.movmsk.ps
6777    ResultTy = IntegerType::get(Context, 32);
6778    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
6779    break;
6780  case Intrinsic::x86_sse41_extractps:		// llvm.x86.sse41.extractps
6781    ResultTy = IntegerType::get(Context, 32);
6782    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
6783    ArgTys.push_back(IntegerType::get(Context, 32));
6784    break;
6785  case Intrinsic::x86_avx_vtestc_ps:		// llvm.x86.avx.vtestc.ps
6786  case Intrinsic::x86_avx_vtestnzc_ps:		// llvm.x86.avx.vtestnzc.ps
6787  case Intrinsic::x86_avx_vtestz_ps:		// llvm.x86.avx.vtestz.ps
6788  case Intrinsic::x86_sse41_ptestc:		// llvm.x86.sse41.ptestc
6789  case Intrinsic::x86_sse41_ptestnzc:		// llvm.x86.sse41.ptestnzc
6790  case Intrinsic::x86_sse41_ptestz:		// llvm.x86.sse41.ptestz
6791  case Intrinsic::x86_sse_comieq_ss:		// llvm.x86.sse.comieq.ss
6792  case Intrinsic::x86_sse_comige_ss:		// llvm.x86.sse.comige.ss
6793  case Intrinsic::x86_sse_comigt_ss:		// llvm.x86.sse.comigt.ss
6794  case Intrinsic::x86_sse_comile_ss:		// llvm.x86.sse.comile.ss
6795  case Intrinsic::x86_sse_comilt_ss:		// llvm.x86.sse.comilt.ss
6796  case Intrinsic::x86_sse_comineq_ss:		// llvm.x86.sse.comineq.ss
6797  case Intrinsic::x86_sse_ucomieq_ss:		// llvm.x86.sse.ucomieq.ss
6798  case Intrinsic::x86_sse_ucomige_ss:		// llvm.x86.sse.ucomige.ss
6799  case Intrinsic::x86_sse_ucomigt_ss:		// llvm.x86.sse.ucomigt.ss
6800  case Intrinsic::x86_sse_ucomile_ss:		// llvm.x86.sse.ucomile.ss
6801  case Intrinsic::x86_sse_ucomilt_ss:		// llvm.x86.sse.ucomilt.ss
6802  case Intrinsic::x86_sse_ucomineq_ss:		// llvm.x86.sse.ucomineq.ss
6803    ResultTy = IntegerType::get(Context, 32);
6804    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
6805    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
6806    break;
6807  case Intrinsic::x86_avx_movmsk_pd_256:		// llvm.x86.avx.movmsk.pd.256
6808    ResultTy = IntegerType::get(Context, 32);
6809    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
6810    break;
6811  case Intrinsic::x86_avx_vtestc_pd_256:		// llvm.x86.avx.vtestc.pd.256
6812  case Intrinsic::x86_avx_vtestnzc_pd_256:		// llvm.x86.avx.vtestnzc.pd.256
6813  case Intrinsic::x86_avx_vtestz_pd_256:		// llvm.x86.avx.vtestz.pd.256
6814    ResultTy = IntegerType::get(Context, 32);
6815    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
6816    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
6817    break;
6818  case Intrinsic::x86_sse41_pextrd:		// llvm.x86.sse41.pextrd
6819    ResultTy = IntegerType::get(Context, 32);
6820    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
6821    ArgTys.push_back(IntegerType::get(Context, 32));
6822    break;
6823  case Intrinsic::x86_avx_ptestc_256:		// llvm.x86.avx.ptestc.256
6824  case Intrinsic::x86_avx_ptestnzc_256:		// llvm.x86.avx.ptestnzc.256
6825  case Intrinsic::x86_avx_ptestz_256:		// llvm.x86.avx.ptestz.256
6826    ResultTy = IntegerType::get(Context, 32);
6827    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4));
6828    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4));
6829    break;
6830  case Intrinsic::x86_avx_movmsk_ps_256:		// llvm.x86.avx.movmsk.ps.256
6831    ResultTy = IntegerType::get(Context, 32);
6832    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
6833    break;
6834  case Intrinsic::x86_avx_vtestc_ps_256:		// llvm.x86.avx.vtestc.ps.256
6835  case Intrinsic::x86_avx_vtestnzc_ps_256:		// llvm.x86.avx.vtestnzc.ps.256
6836  case Intrinsic::x86_avx_vtestz_ps_256:		// llvm.x86.avx.vtestz.ps.256
6837    ResultTy = IntegerType::get(Context, 32);
6838    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
6839    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
6840    break;
6841  case Intrinsic::x86_mmx_pmovmskb:		// llvm.x86.mmx.pmovmskb
6842    ResultTy = IntegerType::get(Context, 32);
6843    ArgTys.push_back(Type::getX86_MMXTy(Context));
6844    break;
6845  case Intrinsic::x86_mmx_pextr_w:		// llvm.x86.mmx.pextr.w
6846    ResultTy = IntegerType::get(Context, 32);
6847    ArgTys.push_back(Type::getX86_MMXTy(Context));
6848    ArgTys.push_back(IntegerType::get(Context, 32));
6849    break;
6850  case Intrinsic::readcyclecounter:		// llvm.readcyclecounter
6851    ResultTy = IntegerType::get(Context, 64);
6852    break;
6853  case Intrinsic::x86_sse42_crc32_64_64:		// llvm.x86.sse42.crc32.64.64
6854    ResultTy = IntegerType::get(Context, 64);
6855    ArgTys.push_back(IntegerType::get(Context, 64));
6856    ArgTys.push_back(IntegerType::get(Context, 64));
6857    break;
6858  case Intrinsic::x86_sse42_crc32_64_8:		// llvm.x86.sse42.crc32.64.8
6859    ResultTy = IntegerType::get(Context, 64);
6860    ArgTys.push_back(IntegerType::get(Context, 64));
6861    ArgTys.push_back(IntegerType::get(Context, 8));
6862    break;
6863  case Intrinsic::x86_sse2_cvtsd2si64:		// llvm.x86.sse2.cvtsd2si64
6864  case Intrinsic::x86_sse2_cvttsd2si64:		// llvm.x86.sse2.cvttsd2si64
6865    ResultTy = IntegerType::get(Context, 64);
6866    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6867    break;
6868  case Intrinsic::x86_sse41_pextrq:		// llvm.x86.sse41.pextrq
6869    ResultTy = IntegerType::get(Context, 64);
6870    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
6871    ArgTys.push_back(IntegerType::get(Context, 32));
6872    break;
6873  case Intrinsic::x86_sse_cvtss2si64:		// llvm.x86.sse.cvtss2si64
6874  case Intrinsic::x86_sse_cvttss2si64:		// llvm.x86.sse.cvttss2si64
6875    ResultTy = IntegerType::get(Context, 64);
6876    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
6877    break;
6878  case Intrinsic::eh_exception:		// llvm.eh.exception
6879  case Intrinsic::eh_sjlj_lsda:		// llvm.eh.sjlj.lsda
6880  case Intrinsic::stacksave:		// llvm.stacksave
6881    ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8));
6882    break;
6883  case Intrinsic::eh_dwarf_cfa:		// llvm.eh.dwarf.cfa
6884  case Intrinsic::frameaddress:		// llvm.frameaddress
6885  case Intrinsic::returnaddress:		// llvm.returnaddress
6886    ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8));
6887    ArgTys.push_back(IntegerType::get(Context, 32));
6888    break;
6889  case Intrinsic::adjust_trampoline:		// llvm.adjust.trampoline
6890    ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8));
6891    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6892    break;
6893  case Intrinsic::gcread:		// llvm.gcread
6894    ResultTy = PointerType::getUnqual(IntegerType::get(Context, 8));
6895    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6896    ArgTys.push_back(PointerType::getUnqual(PointerType::getUnqual(IntegerType::get(Context, 8))));
6897    break;
6898  case Intrinsic::x86_sse3_ldu_dq:		// llvm.x86.sse3.ldu.dq
6899    ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
6900    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6901    break;
6902  case Intrinsic::x86_ssse3_pabs_b_128:		// llvm.x86.ssse3.pabs.b.128
6903    ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
6904    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6905    break;
6906  case Intrinsic::x86_sse42_pcmpestrm128:		// llvm.x86.sse42.pcmpestrm128
6907    ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
6908    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6909    ArgTys.push_back(IntegerType::get(Context, 32));
6910    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6911    ArgTys.push_back(IntegerType::get(Context, 32));
6912    ArgTys.push_back(IntegerType::get(Context, 8));
6913    break;
6914  case Intrinsic::x86_sse2_padds_b:		// llvm.x86.sse2.padds.b
6915  case Intrinsic::x86_sse2_paddus_b:		// llvm.x86.sse2.paddus.b
6916  case Intrinsic::x86_sse2_pavg_b:		// llvm.x86.sse2.pavg.b
6917  case Intrinsic::x86_sse2_pcmpeq_b:		// llvm.x86.sse2.pcmpeq.b
6918  case Intrinsic::x86_sse2_pcmpgt_b:		// llvm.x86.sse2.pcmpgt.b
6919  case Intrinsic::x86_sse2_pmaxu_b:		// llvm.x86.sse2.pmaxu.b
6920  case Intrinsic::x86_sse2_pminu_b:		// llvm.x86.sse2.pminu.b
6921  case Intrinsic::x86_sse2_psubs_b:		// llvm.x86.sse2.psubs.b
6922  case Intrinsic::x86_sse2_psubus_b:		// llvm.x86.sse2.psubus.b
6923  case Intrinsic::x86_sse41_pmaxsb:		// llvm.x86.sse41.pmaxsb
6924  case Intrinsic::x86_sse41_pminsb:		// llvm.x86.sse41.pminsb
6925  case Intrinsic::x86_ssse3_pshuf_b_128:		// llvm.x86.ssse3.pshuf.b.128
6926  case Intrinsic::x86_ssse3_psign_b_128:		// llvm.x86.ssse3.psign.b.128
6927    ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
6928    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6929    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6930    break;
6931  case Intrinsic::x86_sse41_mpsadbw:		// llvm.x86.sse41.mpsadbw
6932    ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
6933    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6934    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6935    ArgTys.push_back(IntegerType::get(Context, 32));
6936    break;
6937  case Intrinsic::x86_sse42_pcmpistrm128:		// llvm.x86.sse42.pcmpistrm128
6938    ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
6939    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6940    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6941    ArgTys.push_back(IntegerType::get(Context, 8));
6942    break;
6943  case Intrinsic::x86_sse41_pblendvb:		// llvm.x86.sse41.pblendvb
6944    ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
6945    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6946    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6947    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
6948    break;
6949  case Intrinsic::x86_sse2_packsswb_128:		// llvm.x86.sse2.packsswb.128
6950  case Intrinsic::x86_sse2_packuswb_128:		// llvm.x86.sse2.packuswb.128
6951    ResultTy = VectorType::get(IntegerType::get(Context, 8), 16);
6952    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
6953    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
6954    break;
6955  case Intrinsic::x86_avx_maskload_pd:		// llvm.x86.avx.maskload.pd
6956    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
6957    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
6958    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6959    break;
6960  case Intrinsic::x86_sse2_sqrt_pd:		// llvm.x86.sse2.sqrt.pd
6961  case Intrinsic::x86_sse2_sqrt_sd:		// llvm.x86.sse2.sqrt.sd
6962    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
6963    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6964    break;
6965  case Intrinsic::x86_sse2_cvtsi2sd:		// llvm.x86.sse2.cvtsi2sd
6966  case Intrinsic::x86_sse41_round_pd:		// llvm.x86.sse41.round.pd
6967    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
6968    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6969    ArgTys.push_back(IntegerType::get(Context, 32));
6970    break;
6971  case Intrinsic::x86_sse2_cvtsi642sd:		// llvm.x86.sse2.cvtsi642sd
6972    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
6973    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6974    ArgTys.push_back(IntegerType::get(Context, 64));
6975    break;
6976  case Intrinsic::x86_avx_vpermil_pd:		// llvm.x86.avx.vpermil.pd
6977    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
6978    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6979    ArgTys.push_back(IntegerType::get(Context, 8));
6980    break;
6981  case Intrinsic::x86_sse2_add_sd:		// llvm.x86.sse2.add.sd
6982  case Intrinsic::x86_sse2_div_sd:		// llvm.x86.sse2.div.sd
6983  case Intrinsic::x86_sse2_max_pd:		// llvm.x86.sse2.max.pd
6984  case Intrinsic::x86_sse2_max_sd:		// llvm.x86.sse2.max.sd
6985  case Intrinsic::x86_sse2_min_pd:		// llvm.x86.sse2.min.pd
6986  case Intrinsic::x86_sse2_min_sd:		// llvm.x86.sse2.min.sd
6987  case Intrinsic::x86_sse2_mul_sd:		// llvm.x86.sse2.mul.sd
6988  case Intrinsic::x86_sse2_sub_sd:		// llvm.x86.sse2.sub.sd
6989  case Intrinsic::x86_sse3_addsub_pd:		// llvm.x86.sse3.addsub.pd
6990  case Intrinsic::x86_sse3_hadd_pd:		// llvm.x86.sse3.hadd.pd
6991  case Intrinsic::x86_sse3_hsub_pd:		// llvm.x86.sse3.hsub.pd
6992    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
6993    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6994    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
6995    break;
6996  case Intrinsic::x86_sse41_blendpd:		// llvm.x86.sse41.blendpd
6997  case Intrinsic::x86_sse41_dppd:		// llvm.x86.sse41.dppd
6998  case Intrinsic::x86_sse41_round_sd:		// llvm.x86.sse41.round.sd
6999    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
7000    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7001    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7002    ArgTys.push_back(IntegerType::get(Context, 32));
7003    break;
7004  case Intrinsic::x86_sse2_cmp_pd:		// llvm.x86.sse2.cmp.pd
7005  case Intrinsic::x86_sse2_cmp_sd:		// llvm.x86.sse2.cmp.sd
7006    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
7007    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7008    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7009    ArgTys.push_back(IntegerType::get(Context, 8));
7010    break;
7011  case Intrinsic::x86_sse41_blendvpd:		// llvm.x86.sse41.blendvpd
7012    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
7013    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7014    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7015    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7016    break;
7017  case Intrinsic::x86_avx_vpermilvar_pd:		// llvm.x86.avx.vpermilvar.pd
7018    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
7019    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7020    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
7021    break;
7022  case Intrinsic::x86_sse2_cvtss2sd:		// llvm.x86.sse2.cvtss2sd
7023    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
7024    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7025    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7026    break;
7027  case Intrinsic::x86_sse2_cvtps2pd:		// llvm.x86.sse2.cvtps2pd
7028    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
7029    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7030    break;
7031  case Intrinsic::x86_avx_vextractf128_pd_256:		// llvm.x86.avx.vextractf128.pd.256
7032    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
7033    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7034    ArgTys.push_back(IntegerType::get(Context, 8));
7035    break;
7036  case Intrinsic::x86_sse2_cvtdq2pd:		// llvm.x86.sse2.cvtdq2pd
7037    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
7038    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7039    break;
7040  case Intrinsic::x86_sse_cvtpi2pd:		// llvm.x86.sse.cvtpi2pd
7041    ResultTy = VectorType::get(Type::getDoubleTy(Context), 2);
7042    ArgTys.push_back(Type::getX86_MMXTy(Context));
7043    break;
7044  case Intrinsic::x86_sse41_movntdqa:		// llvm.x86.sse41.movntdqa
7045    ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
7046    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
7047    break;
7048  case Intrinsic::x86_sse41_pmovsxbq:		// llvm.x86.sse41.pmovsxbq
7049  case Intrinsic::x86_sse41_pmovzxbq:		// llvm.x86.sse41.pmovzxbq
7050    ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
7051    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
7052    break;
7053  case Intrinsic::x86_sse2_psad_bw:		// llvm.x86.sse2.psad.bw
7054    ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
7055    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
7056    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
7057    break;
7058  case Intrinsic::x86_aesni_aesimc:		// llvm.x86.aesni.aesimc
7059    ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
7060    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
7061    break;
7062  case Intrinsic::x86_sse2_psll_dq:		// llvm.x86.sse2.psll.dq
7063  case Intrinsic::x86_sse2_psll_dq_bs:		// llvm.x86.sse2.psll.dq.bs
7064  case Intrinsic::x86_sse2_pslli_q:		// llvm.x86.sse2.pslli.q
7065  case Intrinsic::x86_sse2_psrl_dq:		// llvm.x86.sse2.psrl.dq
7066  case Intrinsic::x86_sse2_psrl_dq_bs:		// llvm.x86.sse2.psrl.dq.bs
7067  case Intrinsic::x86_sse2_psrli_q:		// llvm.x86.sse2.psrli.q
7068    ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
7069    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
7070    ArgTys.push_back(IntegerType::get(Context, 32));
7071    break;
7072  case Intrinsic::x86_aesni_aeskeygenassist:		// llvm.x86.aesni.aeskeygenassist
7073    ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
7074    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
7075    ArgTys.push_back(IntegerType::get(Context, 8));
7076    break;
7077  case Intrinsic::x86_aesni_aesdec:		// llvm.x86.aesni.aesdec
7078  case Intrinsic::x86_aesni_aesdeclast:		// llvm.x86.aesni.aesdeclast
7079  case Intrinsic::x86_aesni_aesenc:		// llvm.x86.aesni.aesenc
7080  case Intrinsic::x86_aesni_aesenclast:		// llvm.x86.aesni.aesenclast
7081  case Intrinsic::x86_sse2_psll_q:		// llvm.x86.sse2.psll.q
7082  case Intrinsic::x86_sse2_psrl_q:		// llvm.x86.sse2.psrl.q
7083  case Intrinsic::x86_sse41_pcmpeqq:		// llvm.x86.sse41.pcmpeqq
7084  case Intrinsic::x86_sse42_pcmpgtq:		// llvm.x86.sse42.pcmpgtq
7085    ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
7086    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
7087    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 2));
7088    break;
7089  case Intrinsic::x86_sse41_pmovsxdq:		// llvm.x86.sse41.pmovsxdq
7090  case Intrinsic::x86_sse41_pmovzxdq:		// llvm.x86.sse41.pmovzxdq
7091    ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
7092    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7093    break;
7094  case Intrinsic::x86_sse2_pmulu_dq:		// llvm.x86.sse2.pmulu.dq
7095  case Intrinsic::x86_sse41_pmuldq:		// llvm.x86.sse41.pmuldq
7096    ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
7097    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7098    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7099    break;
7100  case Intrinsic::x86_sse41_pmovsxwq:		// llvm.x86.sse41.pmovsxwq
7101  case Intrinsic::x86_sse41_pmovzxwq:		// llvm.x86.sse41.pmovzxwq
7102    ResultTy = VectorType::get(IntegerType::get(Context, 64), 2);
7103    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
7104    break;
7105  case Intrinsic::x86_avx_ldu_dq_256:		// llvm.x86.avx.ldu.dq.256
7106  case Intrinsic::x86_avx_loadu_dq_256:		// llvm.x86.avx.loadu.dq.256
7107    ResultTy = VectorType::get(IntegerType::get(Context, 8), 32);
7108    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
7109    break;
7110  case Intrinsic::x86_avx_vbroadcastss:		// llvm.x86.avx.vbroadcastss
7111    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7112    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
7113    break;
7114  case Intrinsic::x86_avx_maskload_ps:		// llvm.x86.avx.maskload.ps
7115    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7116    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
7117    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7118    break;
7119  case Intrinsic::x86_sse2_cvtpd2ps:		// llvm.x86.sse2.cvtpd2ps
7120    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7121    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7122    break;
7123  case Intrinsic::x86_sse_rcp_ps:		// llvm.x86.sse.rcp.ps
7124  case Intrinsic::x86_sse_rcp_ss:		// llvm.x86.sse.rcp.ss
7125  case Intrinsic::x86_sse_rsqrt_ps:		// llvm.x86.sse.rsqrt.ps
7126  case Intrinsic::x86_sse_rsqrt_ss:		// llvm.x86.sse.rsqrt.ss
7127  case Intrinsic::x86_sse_sqrt_ps:		// llvm.x86.sse.sqrt.ps
7128  case Intrinsic::x86_sse_sqrt_ss:		// llvm.x86.sse.sqrt.ss
7129    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7130    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7131    break;
7132  case Intrinsic::x86_sse41_round_ps:		// llvm.x86.sse41.round.ps
7133  case Intrinsic::x86_sse_cvtsi2ss:		// llvm.x86.sse.cvtsi2ss
7134    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7135    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7136    ArgTys.push_back(IntegerType::get(Context, 32));
7137    break;
7138  case Intrinsic::x86_sse_cvtsi642ss:		// llvm.x86.sse.cvtsi642ss
7139    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7140    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7141    ArgTys.push_back(IntegerType::get(Context, 64));
7142    break;
7143  case Intrinsic::x86_avx_vpermil_ps:		// llvm.x86.avx.vpermil.ps
7144    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7145    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7146    ArgTys.push_back(IntegerType::get(Context, 8));
7147    break;
7148  case Intrinsic::x86_sse2_cvtsd2ss:		// llvm.x86.sse2.cvtsd2ss
7149    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7150    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7151    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7152    break;
7153  case Intrinsic::x86_sse3_addsub_ps:		// llvm.x86.sse3.addsub.ps
7154  case Intrinsic::x86_sse3_hadd_ps:		// llvm.x86.sse3.hadd.ps
7155  case Intrinsic::x86_sse3_hsub_ps:		// llvm.x86.sse3.hsub.ps
7156  case Intrinsic::x86_sse_add_ss:		// llvm.x86.sse.add.ss
7157  case Intrinsic::x86_sse_div_ss:		// llvm.x86.sse.div.ss
7158  case Intrinsic::x86_sse_max_ps:		// llvm.x86.sse.max.ps
7159  case Intrinsic::x86_sse_max_ss:		// llvm.x86.sse.max.ss
7160  case Intrinsic::x86_sse_min_ps:		// llvm.x86.sse.min.ps
7161  case Intrinsic::x86_sse_min_ss:		// llvm.x86.sse.min.ss
7162  case Intrinsic::x86_sse_mul_ss:		// llvm.x86.sse.mul.ss
7163  case Intrinsic::x86_sse_sub_ss:		// llvm.x86.sse.sub.ss
7164    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7165    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7166    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7167    break;
7168  case Intrinsic::x86_sse41_blendps:		// llvm.x86.sse41.blendps
7169  case Intrinsic::x86_sse41_dpps:		// llvm.x86.sse41.dpps
7170  case Intrinsic::x86_sse41_insertps:		// llvm.x86.sse41.insertps
7171  case Intrinsic::x86_sse41_round_ss:		// llvm.x86.sse41.round.ss
7172    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7173    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7174    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7175    ArgTys.push_back(IntegerType::get(Context, 32));
7176    break;
7177  case Intrinsic::x86_sse_cmp_ps:		// llvm.x86.sse.cmp.ps
7178  case Intrinsic::x86_sse_cmp_ss:		// llvm.x86.sse.cmp.ss
7179    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7180    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7181    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7182    ArgTys.push_back(IntegerType::get(Context, 8));
7183    break;
7184  case Intrinsic::x86_sse41_blendvps:		// llvm.x86.sse41.blendvps
7185    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7186    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7187    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7188    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7189    break;
7190  case Intrinsic::x86_avx_vpermilvar_ps:		// llvm.x86.avx.vpermilvar.ps
7191    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7192    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7193    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7194    break;
7195  case Intrinsic::x86_sse_cvtpi2ps:		// llvm.x86.sse.cvtpi2ps
7196    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7197    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7198    ArgTys.push_back(Type::getX86_MMXTy(Context));
7199    break;
7200  case Intrinsic::x86_avx_cvt_pd2_ps_256:		// llvm.x86.avx.cvt.pd2.ps.256
7201    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7202    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7203    break;
7204  case Intrinsic::x86_sse2_cvtdq2ps:		// llvm.x86.sse2.cvtdq2ps
7205    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7206    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7207    break;
7208  case Intrinsic::x86_avx_vextractf128_ps_256:		// llvm.x86.avx.vextractf128.ps.256
7209    ResultTy = VectorType::get(Type::getFloatTy(Context), 4);
7210    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7211    ArgTys.push_back(IntegerType::get(Context, 8));
7212    break;
7213  case Intrinsic::x86_avx_loadu_pd_256:		// llvm.x86.avx.loadu.pd.256
7214  case Intrinsic::x86_avx_vbroadcast_sd_256:		// llvm.x86.avx.vbroadcast.sd.256
7215  case Intrinsic::x86_avx_vbroadcastf128_pd_256:		// llvm.x86.avx.vbroadcastf128.pd.256
7216    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7217    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
7218    break;
7219  case Intrinsic::x86_avx_maskload_pd_256:		// llvm.x86.avx.maskload.pd.256
7220    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7221    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
7222    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7223    break;
7224  case Intrinsic::x86_avx_cvt_ps2_pd_256:		// llvm.x86.avx.cvt.ps2.pd.256
7225    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7226    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7227    break;
7228  case Intrinsic::x86_avx_sqrt_pd_256:		// llvm.x86.avx.sqrt.pd.256
7229    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7230    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7231    break;
7232  case Intrinsic::x86_avx_round_pd_256:		// llvm.x86.avx.round.pd.256
7233    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7234    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7235    ArgTys.push_back(IntegerType::get(Context, 32));
7236    break;
7237  case Intrinsic::x86_avx_vpermil_pd_256:		// llvm.x86.avx.vpermil.pd.256
7238    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7239    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7240    ArgTys.push_back(IntegerType::get(Context, 8));
7241    break;
7242  case Intrinsic::x86_avx_vinsertf128_pd_256:		// llvm.x86.avx.vinsertf128.pd.256
7243    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7244    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7245    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7246    ArgTys.push_back(IntegerType::get(Context, 8));
7247    break;
7248  case Intrinsic::x86_avx_addsub_pd_256:		// llvm.x86.avx.addsub.pd.256
7249  case Intrinsic::x86_avx_hadd_pd_256:		// llvm.x86.avx.hadd.pd.256
7250  case Intrinsic::x86_avx_hsub_pd_256:		// llvm.x86.avx.hsub.pd.256
7251  case Intrinsic::x86_avx_max_pd_256:		// llvm.x86.avx.max.pd.256
7252  case Intrinsic::x86_avx_min_pd_256:		// llvm.x86.avx.min.pd.256
7253    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7254    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7255    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7256    break;
7257  case Intrinsic::x86_avx_blend_pd_256:		// llvm.x86.avx.blend.pd.256
7258    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7259    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7260    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7261    ArgTys.push_back(IntegerType::get(Context, 32));
7262    break;
7263  case Intrinsic::x86_avx_cmp_pd_256:		// llvm.x86.avx.cmp.pd.256
7264  case Intrinsic::x86_avx_vperm2f128_pd_256:		// llvm.x86.avx.vperm2f128.pd.256
7265    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7266    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7267    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7268    ArgTys.push_back(IntegerType::get(Context, 8));
7269    break;
7270  case Intrinsic::x86_avx_blendv_pd_256:		// llvm.x86.avx.blendv.pd.256
7271    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7272    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7273    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7274    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7275    break;
7276  case Intrinsic::x86_avx_vpermilvar_pd_256:		// llvm.x86.avx.vpermilvar.pd.256
7277    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7278    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7279    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 64), 4));
7280    break;
7281  case Intrinsic::x86_avx_cvtdq2_pd_256:		// llvm.x86.avx.cvtdq2.pd.256
7282    ResultTy = VectorType::get(Type::getDoubleTy(Context), 4);
7283    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7284    break;
7285  case Intrinsic::x86_sse41_pmovsxbd:		// llvm.x86.sse41.pmovsxbd
7286  case Intrinsic::x86_sse41_pmovzxbd:		// llvm.x86.sse41.pmovzxbd
7287    ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
7288    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
7289    break;
7290  case Intrinsic::x86_sse2_cvtpd2dq:		// llvm.x86.sse2.cvtpd2dq
7291  case Intrinsic::x86_sse2_cvttpd2dq:		// llvm.x86.sse2.cvttpd2dq
7292    ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
7293    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7294    break;
7295  case Intrinsic::x86_sse2_cvtps2dq:		// llvm.x86.sse2.cvtps2dq
7296  case Intrinsic::x86_sse2_cvttps2dq:		// llvm.x86.sse2.cvttps2dq
7297    ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
7298    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7299    break;
7300  case Intrinsic::x86_avx_cvt_pd2dq_256:		// llvm.x86.avx.cvt.pd2dq.256
7301  case Intrinsic::x86_avx_cvtt_pd2dq_256:		// llvm.x86.avx.cvtt.pd2dq.256
7302    ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
7303    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 4));
7304    break;
7305  case Intrinsic::x86_ssse3_pabs_d_128:		// llvm.x86.ssse3.pabs.d.128
7306    ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
7307    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7308    break;
7309  case Intrinsic::x86_sse2_pslli_d:		// llvm.x86.sse2.pslli.d
7310  case Intrinsic::x86_sse2_psrai_d:		// llvm.x86.sse2.psrai.d
7311  case Intrinsic::x86_sse2_psrli_d:		// llvm.x86.sse2.psrli.d
7312    ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
7313    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7314    ArgTys.push_back(IntegerType::get(Context, 32));
7315    break;
7316  case Intrinsic::x86_sse2_pcmpeq_d:		// llvm.x86.sse2.pcmpeq.d
7317  case Intrinsic::x86_sse2_pcmpgt_d:		// llvm.x86.sse2.pcmpgt.d
7318  case Intrinsic::x86_sse2_psll_d:		// llvm.x86.sse2.psll.d
7319  case Intrinsic::x86_sse2_psra_d:		// llvm.x86.sse2.psra.d
7320  case Intrinsic::x86_sse2_psrl_d:		// llvm.x86.sse2.psrl.d
7321  case Intrinsic::x86_sse41_pmaxsd:		// llvm.x86.sse41.pmaxsd
7322  case Intrinsic::x86_sse41_pmaxud:		// llvm.x86.sse41.pmaxud
7323  case Intrinsic::x86_sse41_pminsd:		// llvm.x86.sse41.pminsd
7324  case Intrinsic::x86_sse41_pminud:		// llvm.x86.sse41.pminud
7325  case Intrinsic::x86_ssse3_phadd_d_128:		// llvm.x86.ssse3.phadd.d.128
7326  case Intrinsic::x86_ssse3_phadd_sw_128:		// llvm.x86.ssse3.phadd.sw.128
7327  case Intrinsic::x86_ssse3_phsub_d_128:		// llvm.x86.ssse3.phsub.d.128
7328  case Intrinsic::x86_ssse3_psign_d_128:		// llvm.x86.ssse3.psign.d.128
7329    ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
7330    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7331    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7332    break;
7333  case Intrinsic::x86_sse41_pmovsxwd:		// llvm.x86.sse41.pmovsxwd
7334  case Intrinsic::x86_sse41_pmovzxwd:		// llvm.x86.sse41.pmovzxwd
7335    ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
7336    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
7337    break;
7338  case Intrinsic::x86_sse2_pmadd_wd:		// llvm.x86.sse2.pmadd.wd
7339    ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
7340    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
7341    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
7342    break;
7343  case Intrinsic::x86_avx_vextractf128_si_256:		// llvm.x86.avx.vextractf128.si.256
7344    ResultTy = VectorType::get(IntegerType::get(Context, 32), 4);
7345    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
7346    ArgTys.push_back(IntegerType::get(Context, 8));
7347    break;
7348  case Intrinsic::x86_avx_loadu_ps_256:		// llvm.x86.avx.loadu.ps.256
7349  case Intrinsic::x86_avx_vbroadcastf128_ps_256:		// llvm.x86.avx.vbroadcastf128.ps.256
7350  case Intrinsic::x86_avx_vbroadcastss_256:		// llvm.x86.avx.vbroadcastss.256
7351    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7352    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
7353    break;
7354  case Intrinsic::x86_avx_maskload_ps_256:		// llvm.x86.avx.maskload.ps.256
7355    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7356    ArgTys.push_back(PointerType::getUnqual(IntegerType::get(Context, 8)));
7357    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7358    break;
7359  case Intrinsic::x86_avx_rcp_ps_256:		// llvm.x86.avx.rcp.ps.256
7360  case Intrinsic::x86_avx_rsqrt_ps_256:		// llvm.x86.avx.rsqrt.ps.256
7361  case Intrinsic::x86_avx_sqrt_ps_256:		// llvm.x86.avx.sqrt.ps.256
7362    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7363    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7364    break;
7365  case Intrinsic::x86_avx_round_ps_256:		// llvm.x86.avx.round.ps.256
7366    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7367    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7368    ArgTys.push_back(IntegerType::get(Context, 32));
7369    break;
7370  case Intrinsic::x86_avx_vpermil_ps_256:		// llvm.x86.avx.vpermil.ps.256
7371    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7372    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7373    ArgTys.push_back(IntegerType::get(Context, 8));
7374    break;
7375  case Intrinsic::x86_avx_vinsertf128_ps_256:		// llvm.x86.avx.vinsertf128.ps.256
7376    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7377    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7378    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7379    ArgTys.push_back(IntegerType::get(Context, 8));
7380    break;
7381  case Intrinsic::x86_avx_addsub_ps_256:		// llvm.x86.avx.addsub.ps.256
7382  case Intrinsic::x86_avx_hadd_ps_256:		// llvm.x86.avx.hadd.ps.256
7383  case Intrinsic::x86_avx_hsub_ps_256:		// llvm.x86.avx.hsub.ps.256
7384  case Intrinsic::x86_avx_max_ps_256:		// llvm.x86.avx.max.ps.256
7385  case Intrinsic::x86_avx_min_ps_256:		// llvm.x86.avx.min.ps.256
7386    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7387    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7388    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7389    break;
7390  case Intrinsic::x86_avx_blend_ps_256:		// llvm.x86.avx.blend.ps.256
7391  case Intrinsic::x86_avx_dp_ps_256:		// llvm.x86.avx.dp.ps.256
7392    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7393    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7394    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7395    ArgTys.push_back(IntegerType::get(Context, 32));
7396    break;
7397  case Intrinsic::x86_avx_cmp_ps_256:		// llvm.x86.avx.cmp.ps.256
7398  case Intrinsic::x86_avx_vperm2f128_ps_256:		// llvm.x86.avx.vperm2f128.ps.256
7399    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7400    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7401    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7402    ArgTys.push_back(IntegerType::get(Context, 8));
7403    break;
7404  case Intrinsic::x86_avx_blendv_ps_256:		// llvm.x86.avx.blendv.ps.256
7405    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7406    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7407    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7408    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7409    break;
7410  case Intrinsic::x86_avx_vpermilvar_ps_256:		// llvm.x86.avx.vpermilvar.ps.256
7411    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7412    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7413    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
7414    break;
7415  case Intrinsic::x86_avx_cvtdq2_ps_256:		// llvm.x86.avx.cvtdq2.ps.256
7416    ResultTy = VectorType::get(Type::getFloatTy(Context), 8);
7417    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
7418    break;
7419  case Intrinsic::x86_sse41_pmovsxbw:		// llvm.x86.sse41.pmovsxbw
7420  case Intrinsic::x86_sse41_pmovzxbw:		// llvm.x86.sse41.pmovzxbw
7421    ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
7422    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 8), 16));
7423    break;
7424  case Intrinsic::x86_sse2_packssdw_128:		// llvm.x86.sse2.packssdw.128
7425  case Intrinsic::x86_sse41_packusdw:		// llvm.x86.sse41.packusdw
7426    ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
7427    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7428    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7429    break;
7430  case Intrinsic::x86_sse41_phminposuw:		// llvm.x86.sse41.phminposuw
7431  case Intrinsic::x86_ssse3_pabs_w_128:		// llvm.x86.ssse3.pabs.w.128
7432    ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
7433    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
7434    break;
7435  case Intrinsic::x86_sse2_pslli_w:		// llvm.x86.sse2.pslli.w
7436  case Intrinsic::x86_sse2_psrai_w:		// llvm.x86.sse2.psrai.w
7437  case Intrinsic::x86_sse2_psrli_w:		// llvm.x86.sse2.psrli.w
7438    ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
7439    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
7440    ArgTys.push_back(IntegerType::get(Context, 32));
7441    break;
7442  case Intrinsic::x86_sse2_padds_w:		// llvm.x86.sse2.padds.w
7443  case Intrinsic::x86_sse2_paddus_w:		// llvm.x86.sse2.paddus.w
7444  case Intrinsic::x86_sse2_pavg_w:		// llvm.x86.sse2.pavg.w
7445  case Intrinsic::x86_sse2_pcmpeq_w:		// llvm.x86.sse2.pcmpeq.w
7446  case Intrinsic::x86_sse2_pcmpgt_w:		// llvm.x86.sse2.pcmpgt.w
7447  case Intrinsic::x86_sse2_pmaxs_w:		// llvm.x86.sse2.pmaxs.w
7448  case Intrinsic::x86_sse2_pmins_w:		// llvm.x86.sse2.pmins.w
7449  case Intrinsic::x86_sse2_pmulh_w:		// llvm.x86.sse2.pmulh.w
7450  case Intrinsic::x86_sse2_pmulhu_w:		// llvm.x86.sse2.pmulhu.w
7451  case Intrinsic::x86_sse2_psll_w:		// llvm.x86.sse2.psll.w
7452  case Intrinsic::x86_sse2_psra_w:		// llvm.x86.sse2.psra.w
7453  case Intrinsic::x86_sse2_psrl_w:		// llvm.x86.sse2.psrl.w
7454  case Intrinsic::x86_sse2_psubs_w:		// llvm.x86.sse2.psubs.w
7455  case Intrinsic::x86_sse2_psubus_w:		// llvm.x86.sse2.psubus.w
7456  case Intrinsic::x86_sse41_pmaxuw:		// llvm.x86.sse41.pmaxuw
7457  case Intrinsic::x86_sse41_pminuw:		// llvm.x86.sse41.pminuw
7458  case Intrinsic::x86_ssse3_phadd_w_128:		// llvm.x86.ssse3.phadd.w.128
7459  case Intrinsic::x86_ssse3_phsub_sw_128:		// llvm.x86.ssse3.phsub.sw.128
7460  case Intrinsic::x86_ssse3_phsub_w_128:		// llvm.x86.ssse3.phsub.w.128
7461  case Intrinsic::x86_ssse3_pmadd_ub_sw_128:		// llvm.x86.ssse3.pmadd.ub.sw.128
7462  case Intrinsic::x86_ssse3_pmul_hr_sw_128:		// llvm.x86.ssse3.pmul.hr.sw.128
7463  case Intrinsic::x86_ssse3_psign_w_128:		// llvm.x86.ssse3.psign.w.128
7464    ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
7465    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
7466    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
7467    break;
7468  case Intrinsic::x86_sse41_pblendw:		// llvm.x86.sse41.pblendw
7469    ResultTy = VectorType::get(IntegerType::get(Context, 16), 8);
7470    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
7471    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 16), 8));
7472    ArgTys.push_back(IntegerType::get(Context, 32));
7473    break;
7474  case Intrinsic::x86_avx_cvt_ps2dq_256:		// llvm.x86.avx.cvt.ps2dq.256
7475  case Intrinsic::x86_avx_cvtt_ps2dq_256:		// llvm.x86.avx.cvtt.ps2dq.256
7476    ResultTy = VectorType::get(IntegerType::get(Context, 32), 8);
7477    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 8));
7478    break;
7479  case Intrinsic::x86_avx_vinsertf128_si_256:		// llvm.x86.avx.vinsertf128.si.256
7480    ResultTy = VectorType::get(IntegerType::get(Context, 32), 8);
7481    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
7482    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 4));
7483    ArgTys.push_back(IntegerType::get(Context, 8));
7484    break;
7485  case Intrinsic::x86_avx_vperm2f128_si_256:		// llvm.x86.avx.vperm2f128.si.256
7486    ResultTy = VectorType::get(IntegerType::get(Context, 32), 8);
7487    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
7488    ArgTys.push_back(VectorType::get(IntegerType::get(Context, 32), 8));
7489    ArgTys.push_back(IntegerType::get(Context, 8));
7490    break;
7491  case Intrinsic::x86_sse_cvtpd2pi:		// llvm.x86.sse.cvtpd2pi
7492  case Intrinsic::x86_sse_cvttpd2pi:		// llvm.x86.sse.cvttpd2pi
7493    ResultTy = Type::getX86_MMXTy(Context);
7494    ArgTys.push_back(VectorType::get(Type::getDoubleTy(Context), 2));
7495    break;
7496  case Intrinsic::x86_sse_cvtps2pi:		// llvm.x86.sse.cvtps2pi
7497  case Intrinsic::x86_sse_cvttps2pi:		// llvm.x86.sse.cvttps2pi
7498    ResultTy = Type::getX86_MMXTy(Context);
7499    ArgTys.push_back(VectorType::get(Type::getFloatTy(Context), 4));
7500    break;
7501  case Intrinsic::x86_3dnow_pf2id:		// llvm.x86.3dnow.pf2id
7502  case Intrinsic::x86_3dnow_pfrcp:		// llvm.x86.3dnow.pfrcp
7503  case Intrinsic::x86_3dnow_pfrsqrt:		// llvm.x86.3dnow.pfrsqrt
7504  case Intrinsic::x86_3dnow_pi2fd:		// llvm.x86.3dnow.pi2fd
7505  case Intrinsic::x86_3dnowa_pf2iw:		// llvm.x86.3dnowa.pf2iw
7506  case Intrinsic::x86_3dnowa_pi2fw:		// llvm.x86.3dnowa.pi2fw
7507  case Intrinsic::x86_3dnowa_pswapd:		// llvm.x86.3dnowa.pswapd
7508  case Intrinsic::x86_ssse3_pabs_b:		// llvm.x86.ssse3.pabs.b
7509  case Intrinsic::x86_ssse3_pabs_d:		// llvm.x86.ssse3.pabs.d
7510  case Intrinsic::x86_ssse3_pabs_w:		// llvm.x86.ssse3.pabs.w
7511    ResultTy = Type::getX86_MMXTy(Context);
7512    ArgTys.push_back(Type::getX86_MMXTy(Context));
7513    break;
7514  case Intrinsic::x86_mmx_pslli_d:		// llvm.x86.mmx.pslli.d
7515  case Intrinsic::x86_mmx_pslli_q:		// llvm.x86.mmx.pslli.q
7516  case Intrinsic::x86_mmx_pslli_w:		// llvm.x86.mmx.pslli.w
7517  case Intrinsic::x86_mmx_psrai_d:		// llvm.x86.mmx.psrai.d
7518  case Intrinsic::x86_mmx_psrai_w:		// llvm.x86.mmx.psrai.w
7519  case Intrinsic::x86_mmx_psrli_d:		// llvm.x86.mmx.psrli.d
7520  case Intrinsic::x86_mmx_psrli_q:		// llvm.x86.mmx.psrli.q
7521  case Intrinsic::x86_mmx_psrli_w:		// llvm.x86.mmx.psrli.w
7522    ResultTy = Type::getX86_MMXTy(Context);
7523    ArgTys.push_back(Type::getX86_MMXTy(Context));
7524    ArgTys.push_back(IntegerType::get(Context, 32));
7525    break;
7526  case Intrinsic::x86_mmx_pinsr_w:		// llvm.x86.mmx.pinsr.w
7527    ResultTy = Type::getX86_MMXTy(Context);
7528    ArgTys.push_back(Type::getX86_MMXTy(Context));
7529    ArgTys.push_back(IntegerType::get(Context, 32));
7530    ArgTys.push_back(IntegerType::get(Context, 32));
7531    break;
7532  case Intrinsic::x86_sse_pshuf_w:		// llvm.x86.sse.pshuf.w
7533    ResultTy = Type::getX86_MMXTy(Context);
7534    ArgTys.push_back(Type::getX86_MMXTy(Context));
7535    ArgTys.push_back(IntegerType::get(Context, 8));
7536    break;
7537  case Intrinsic::x86_3dnow_pavgusb:		// llvm.x86.3dnow.pavgusb
7538  case Intrinsic::x86_3dnow_pfacc:		// llvm.x86.3dnow.pfacc
7539  case Intrinsic::x86_3dnow_pfadd:		// llvm.x86.3dnow.pfadd
7540  case Intrinsic::x86_3dnow_pfcmpeq:		// llvm.x86.3dnow.pfcmpeq
7541  case Intrinsic::x86_3dnow_pfcmpge:		// llvm.x86.3dnow.pfcmpge
7542  case Intrinsic::x86_3dnow_pfcmpgt:		// llvm.x86.3dnow.pfcmpgt
7543  case Intrinsic::x86_3dnow_pfmax:		// llvm.x86.3dnow.pfmax
7544  case Intrinsic::x86_3dnow_pfmin:		// llvm.x86.3dnow.pfmin
7545  case Intrinsic::x86_3dnow_pfmul:		// llvm.x86.3dnow.pfmul
7546  case Intrinsic::x86_3dnow_pfrcpit1:		// llvm.x86.3dnow.pfrcpit1
7547  case Intrinsic::x86_3dnow_pfrcpit2:		// llvm.x86.3dnow.pfrcpit2
7548  case Intrinsic::x86_3dnow_pfrsqit1:		// llvm.x86.3dnow.pfrsqit1
7549  case Intrinsic::x86_3dnow_pfsub:		// llvm.x86.3dnow.pfsub
7550  case Intrinsic::x86_3dnow_pfsubr:		// llvm.x86.3dnow.pfsubr
7551  case Intrinsic::x86_3dnow_pmulhrw:		// llvm.x86.3dnow.pmulhrw
7552  case Intrinsic::x86_3dnowa_pfnacc:		// llvm.x86.3dnowa.pfnacc
7553  case Intrinsic::x86_3dnowa_pfpnacc:		// llvm.x86.3dnowa.pfpnacc
7554  case Intrinsic::x86_mmx_packssdw:		// llvm.x86.mmx.packssdw
7555  case Intrinsic::x86_mmx_packsswb:		// llvm.x86.mmx.packsswb
7556  case Intrinsic::x86_mmx_packuswb:		// llvm.x86.mmx.packuswb
7557  case Intrinsic::x86_mmx_padd_b:		// llvm.x86.mmx.padd.b
7558  case Intrinsic::x86_mmx_padd_d:		// llvm.x86.mmx.padd.d
7559  case Intrinsic::x86_mmx_padd_q:		// llvm.x86.mmx.padd.q
7560  case Intrinsic::x86_mmx_padd_w:		// llvm.x86.mmx.padd.w
7561  case Intrinsic::x86_mmx_padds_b:		// llvm.x86.mmx.padds.b
7562  case Intrinsic::x86_mmx_padds_w:		// llvm.x86.mmx.padds.w
7563  case Intrinsic::x86_mmx_paddus_b:		// llvm.x86.mmx.paddus.b
7564  case Intrinsic::x86_mmx_paddus_w:		// llvm.x86.mmx.paddus.w
7565  case Intrinsic::x86_mmx_pand:		// llvm.x86.mmx.pand
7566  case Intrinsic::x86_mmx_pandn:		// llvm.x86.mmx.pandn
7567  case Intrinsic::x86_mmx_pavg_b:		// llvm.x86.mmx.pavg.b
7568  case Intrinsic::x86_mmx_pavg_w:		// llvm.x86.mmx.pavg.w
7569  case Intrinsic::x86_mmx_pcmpeq_b:		// llvm.x86.mmx.pcmpeq.b
7570  case Intrinsic::x86_mmx_pcmpeq_d:		// llvm.x86.mmx.pcmpeq.d
7571  case Intrinsic::x86_mmx_pcmpeq_w:		// llvm.x86.mmx.pcmpeq.w
7572  case Intrinsic::x86_mmx_pcmpgt_b:		// llvm.x86.mmx.pcmpgt.b
7573  case Intrinsic::x86_mmx_pcmpgt_d:		// llvm.x86.mmx.pcmpgt.d
7574  case Intrinsic::x86_mmx_pcmpgt_w:		// llvm.x86.mmx.pcmpgt.w
7575  case Intrinsic::x86_mmx_pmadd_wd:		// llvm.x86.mmx.pmadd.wd
7576  case Intrinsic::x86_mmx_pmaxs_w:		// llvm.x86.mmx.pmaxs.w
7577  case Intrinsic::x86_mmx_pmaxu_b:		// llvm.x86.mmx.pmaxu.b
7578  case Intrinsic::x86_mmx_pmins_w:		// llvm.x86.mmx.pmins.w
7579  case Intrinsic::x86_mmx_pminu_b:		// llvm.x86.mmx.pminu.b
7580  case Intrinsic::x86_mmx_pmulh_w:		// llvm.x86.mmx.pmulh.w
7581  case Intrinsic::x86_mmx_pmulhu_w:		// llvm.x86.mmx.pmulhu.w
7582  case Intrinsic::x86_mmx_pmull_w:		// llvm.x86.mmx.pmull.w
7583  case Intrinsic::x86_mmx_pmulu_dq:		// llvm.x86.mmx.pmulu.dq
7584  case Intrinsic::x86_mmx_por:		// llvm.x86.mmx.por
7585  case Intrinsic::x86_mmx_psad_bw:		// llvm.x86.mmx.psad.bw
7586  case Intrinsic::x86_mmx_psll_d:		// llvm.x86.mmx.psll.d
7587  case Intrinsic::x86_mmx_psll_q:		// llvm.x86.mmx.psll.q
7588  case Intrinsic::x86_mmx_psll_w:		// llvm.x86.mmx.psll.w
7589  case Intrinsic::x86_mmx_psra_d:		// llvm.x86.mmx.psra.d
7590  case Intrinsic::x86_mmx_psra_w:		// llvm.x86.mmx.psra.w
7591  case Intrinsic::x86_mmx_psrl_d:		// llvm.x86.mmx.psrl.d
7592  case Intrinsic::x86_mmx_psrl_q:		// llvm.x86.mmx.psrl.q
7593  case Intrinsic::x86_mmx_psrl_w:		// llvm.x86.mmx.psrl.w
7594  case Intrinsic::x86_mmx_psub_b:		// llvm.x86.mmx.psub.b
7595  case Intrinsic::x86_mmx_psub_d:		// llvm.x86.mmx.psub.d
7596  case Intrinsic::x86_mmx_psub_q:		// llvm.x86.mmx.psub.q
7597  case Intrinsic::x86_mmx_psub_w:		// llvm.x86.mmx.psub.w
7598  case Intrinsic::x86_mmx_psubs_b:		// llvm.x86.mmx.psubs.b
7599  case Intrinsic::x86_mmx_psubs_w:		// llvm.x86.mmx.psubs.w
7600  case Intrinsic::x86_mmx_psubus_b:		// llvm.x86.mmx.psubus.b
7601  case Intrinsic::x86_mmx_psubus_w:		// llvm.x86.mmx.psubus.w
7602  case Intrinsic::x86_mmx_punpckhbw:		// llvm.x86.mmx.punpckhbw
7603  case Intrinsic::x86_mmx_punpckhdq:		// llvm.x86.mmx.punpckhdq
7604  case Intrinsic::x86_mmx_punpckhwd:		// llvm.x86.mmx.punpckhwd
7605  case Intrinsic::x86_mmx_punpcklbw:		// llvm.x86.mmx.punpcklbw
7606  case Intrinsic::x86_mmx_punpckldq:		// llvm.x86.mmx.punpckldq
7607  case Intrinsic::x86_mmx_punpcklwd:		// llvm.x86.mmx.punpcklwd
7608  case Intrinsic::x86_mmx_pxor:		// llvm.x86.mmx.pxor
7609  case Intrinsic::x86_ssse3_phadd_d:		// llvm.x86.ssse3.phadd.d
7610  case Intrinsic::x86_ssse3_phadd_sw:		// llvm.x86.ssse3.phadd.sw
7611  case Intrinsic::x86_ssse3_phadd_w:		// llvm.x86.ssse3.phadd.w
7612  case Intrinsic::x86_ssse3_phsub_d:		// llvm.x86.ssse3.phsub.d
7613  case Intrinsic::x86_ssse3_phsub_sw:		// llvm.x86.ssse3.phsub.sw
7614  case Intrinsic::x86_ssse3_phsub_w:		// llvm.x86.ssse3.phsub.w
7615  case Intrinsic::x86_ssse3_pmadd_ub_sw:		// llvm.x86.ssse3.pmadd.ub.sw
7616  case Intrinsic::x86_ssse3_pmul_hr_sw:		// llvm.x86.ssse3.pmul.hr.sw
7617  case Intrinsic::x86_ssse3_pshuf_b:		// llvm.x86.ssse3.pshuf.b
7618  case Intrinsic::x86_ssse3_psign_b:		// llvm.x86.ssse3.psign.b
7619  case Intrinsic::x86_ssse3_psign_d:		// llvm.x86.ssse3.psign.d
7620  case Intrinsic::x86_ssse3_psign_w:		// llvm.x86.ssse3.psign.w
7621    ResultTy = Type::getX86_MMXTy(Context);
7622    ArgTys.push_back(Type::getX86_MMXTy(Context));
7623    ArgTys.push_back(Type::getX86_MMXTy(Context));
7624    break;
7625  case Intrinsic::x86_mmx_palignr_b:		// llvm.x86.mmx.palignr.b
7626    ResultTy = Type::getX86_MMXTy(Context);
7627    ArgTys.push_back(Type::getX86_MMXTy(Context));
7628    ArgTys.push_back(Type::getX86_MMXTy(Context));
7629    ArgTys.push_back(IntegerType::get(Context, 8));
7630    break;
7631  }
7632#endif
7633
7634// Add parameter attributes that are not common to all intrinsics.
7635#ifdef GET_INTRINSIC_ATTRIBUTES
7636AttrListPtr Intrinsic::getAttributes(ID id) {
7637  AttributeWithIndex AWI[3];
7638  unsigned NumAttrs = 0;
7639  switch (id) {
7640    default: break;
7641  case Intrinsic::bswap:
7642  case Intrinsic::convert_from_fp16:
7643  case Intrinsic::convert_to_fp16:
7644  case Intrinsic::ctlz:
7645  case Intrinsic::ctpop:
7646  case Intrinsic::cttz:
7647  case Intrinsic::dbg_declare:
7648  case Intrinsic::dbg_value:
7649  case Intrinsic::eh_sjlj_callsite:
7650  case Intrinsic::eh_sjlj_lsda:
7651  case Intrinsic::eh_typeid_for:
7652  case Intrinsic::expect:
7653  case Intrinsic::fma:
7654  case Intrinsic::frameaddress:
7655  case Intrinsic::objectsize:
7656  case Intrinsic::returnaddress:
7657  case Intrinsic::sadd_with_overflow:
7658  case Intrinsic::smul_with_overflow:
7659  case Intrinsic::ssub_with_overflow:
7660  case Intrinsic::uadd_with_overflow:
7661  case Intrinsic::umul_with_overflow:
7662  case Intrinsic::usub_with_overflow:
7663  case Intrinsic::x86_3dnow_pavgusb:
7664  case Intrinsic::x86_3dnow_pf2id:
7665  case Intrinsic::x86_3dnow_pfacc:
7666  case Intrinsic::x86_3dnow_pfadd:
7667  case Intrinsic::x86_3dnow_pfcmpeq:
7668  case Intrinsic::x86_3dnow_pfcmpge:
7669  case Intrinsic::x86_3dnow_pfcmpgt:
7670  case Intrinsic::x86_3dnow_pfmax:
7671  case Intrinsic::x86_3dnow_pfmin:
7672  case Intrinsic::x86_3dnow_pfmul:
7673  case Intrinsic::x86_3dnow_pfrcp:
7674  case Intrinsic::x86_3dnow_pfrcpit1:
7675  case Intrinsic::x86_3dnow_pfrcpit2:
7676  case Intrinsic::x86_3dnow_pfrsqit1:
7677  case Intrinsic::x86_3dnow_pfrsqrt:
7678  case Intrinsic::x86_3dnow_pfsub:
7679  case Intrinsic::x86_3dnow_pfsubr:
7680  case Intrinsic::x86_3dnow_pi2fd:
7681  case Intrinsic::x86_3dnow_pmulhrw:
7682  case Intrinsic::x86_3dnowa_pf2iw:
7683  case Intrinsic::x86_3dnowa_pfnacc:
7684  case Intrinsic::x86_3dnowa_pfpnacc:
7685  case Intrinsic::x86_3dnowa_pi2fw:
7686  case Intrinsic::x86_3dnowa_pswapd:
7687  case Intrinsic::x86_aesni_aesdec:
7688  case Intrinsic::x86_aesni_aesdeclast:
7689  case Intrinsic::x86_aesni_aesenc:
7690  case Intrinsic::x86_aesni_aesenclast:
7691  case Intrinsic::x86_aesni_aesimc:
7692  case Intrinsic::x86_aesni_aeskeygenassist:
7693  case Intrinsic::x86_avx_addsub_pd_256:
7694  case Intrinsic::x86_avx_addsub_ps_256:
7695  case Intrinsic::x86_avx_blend_pd_256:
7696  case Intrinsic::x86_avx_blend_ps_256:
7697  case Intrinsic::x86_avx_blendv_pd_256:
7698  case Intrinsic::x86_avx_blendv_ps_256:
7699  case Intrinsic::x86_avx_cmp_pd_256:
7700  case Intrinsic::x86_avx_cmp_ps_256:
7701  case Intrinsic::x86_avx_cvt_pd2_ps_256:
7702  case Intrinsic::x86_avx_cvt_pd2dq_256:
7703  case Intrinsic::x86_avx_cvt_ps2_pd_256:
7704  case Intrinsic::x86_avx_cvt_ps2dq_256:
7705  case Intrinsic::x86_avx_cvtdq2_pd_256:
7706  case Intrinsic::x86_avx_cvtdq2_ps_256:
7707  case Intrinsic::x86_avx_cvtt_pd2dq_256:
7708  case Intrinsic::x86_avx_cvtt_ps2dq_256:
7709  case Intrinsic::x86_avx_dp_ps_256:
7710  case Intrinsic::x86_avx_hadd_pd_256:
7711  case Intrinsic::x86_avx_hadd_ps_256:
7712  case Intrinsic::x86_avx_hsub_pd_256:
7713  case Intrinsic::x86_avx_hsub_ps_256:
7714  case Intrinsic::x86_avx_max_pd_256:
7715  case Intrinsic::x86_avx_max_ps_256:
7716  case Intrinsic::x86_avx_min_pd_256:
7717  case Intrinsic::x86_avx_min_ps_256:
7718  case Intrinsic::x86_avx_movmsk_pd_256:
7719  case Intrinsic::x86_avx_movmsk_ps_256:
7720  case Intrinsic::x86_avx_ptestc_256:
7721  case Intrinsic::x86_avx_ptestnzc_256:
7722  case Intrinsic::x86_avx_ptestz_256:
7723  case Intrinsic::x86_avx_rcp_ps_256:
7724  case Intrinsic::x86_avx_round_pd_256:
7725  case Intrinsic::x86_avx_round_ps_256:
7726  case Intrinsic::x86_avx_rsqrt_ps_256:
7727  case Intrinsic::x86_avx_sqrt_pd_256:
7728  case Intrinsic::x86_avx_sqrt_ps_256:
7729  case Intrinsic::x86_avx_vextractf128_pd_256:
7730  case Intrinsic::x86_avx_vextractf128_ps_256:
7731  case Intrinsic::x86_avx_vextractf128_si_256:
7732  case Intrinsic::x86_avx_vinsertf128_pd_256:
7733  case Intrinsic::x86_avx_vinsertf128_ps_256:
7734  case Intrinsic::x86_avx_vinsertf128_si_256:
7735  case Intrinsic::x86_avx_vperm2f128_pd_256:
7736  case Intrinsic::x86_avx_vperm2f128_ps_256:
7737  case Intrinsic::x86_avx_vperm2f128_si_256:
7738  case Intrinsic::x86_avx_vpermil_pd:
7739  case Intrinsic::x86_avx_vpermil_pd_256:
7740  case Intrinsic::x86_avx_vpermil_ps:
7741  case Intrinsic::x86_avx_vpermil_ps_256:
7742  case Intrinsic::x86_avx_vpermilvar_pd:
7743  case Intrinsic::x86_avx_vpermilvar_pd_256:
7744  case Intrinsic::x86_avx_vpermilvar_ps:
7745  case Intrinsic::x86_avx_vpermilvar_ps_256:
7746  case Intrinsic::x86_avx_vtestc_pd:
7747  case Intrinsic::x86_avx_vtestc_pd_256:
7748  case Intrinsic::x86_avx_vtestc_ps:
7749  case Intrinsic::x86_avx_vtestc_ps_256:
7750  case Intrinsic::x86_avx_vtestnzc_pd:
7751  case Intrinsic::x86_avx_vtestnzc_pd_256:
7752  case Intrinsic::x86_avx_vtestnzc_ps:
7753  case Intrinsic::x86_avx_vtestnzc_ps_256:
7754  case Intrinsic::x86_avx_vtestz_pd:
7755  case Intrinsic::x86_avx_vtestz_pd_256:
7756  case Intrinsic::x86_avx_vtestz_ps:
7757  case Intrinsic::x86_avx_vtestz_ps_256:
7758  case Intrinsic::x86_mmx_packssdw:
7759  case Intrinsic::x86_mmx_packsswb:
7760  case Intrinsic::x86_mmx_packuswb:
7761  case Intrinsic::x86_mmx_padd_b:
7762  case Intrinsic::x86_mmx_padd_d:
7763  case Intrinsic::x86_mmx_padd_q:
7764  case Intrinsic::x86_mmx_padd_w:
7765  case Intrinsic::x86_mmx_padds_b:
7766  case Intrinsic::x86_mmx_padds_w:
7767  case Intrinsic::x86_mmx_paddus_b:
7768  case Intrinsic::x86_mmx_paddus_w:
7769  case Intrinsic::x86_mmx_palignr_b:
7770  case Intrinsic::x86_mmx_pand:
7771  case Intrinsic::x86_mmx_pandn:
7772  case Intrinsic::x86_mmx_pavg_b:
7773  case Intrinsic::x86_mmx_pavg_w:
7774  case Intrinsic::x86_mmx_pcmpeq_b:
7775  case Intrinsic::x86_mmx_pcmpeq_d:
7776  case Intrinsic::x86_mmx_pcmpeq_w:
7777  case Intrinsic::x86_mmx_pcmpgt_b:
7778  case Intrinsic::x86_mmx_pcmpgt_d:
7779  case Intrinsic::x86_mmx_pcmpgt_w:
7780  case Intrinsic::x86_mmx_pextr_w:
7781  case Intrinsic::x86_mmx_pinsr_w:
7782  case Intrinsic::x86_mmx_pmadd_wd:
7783  case Intrinsic::x86_mmx_pmaxs_w:
7784  case Intrinsic::x86_mmx_pmaxu_b:
7785  case Intrinsic::x86_mmx_pmins_w:
7786  case Intrinsic::x86_mmx_pminu_b:
7787  case Intrinsic::x86_mmx_pmovmskb:
7788  case Intrinsic::x86_mmx_pmulh_w:
7789  case Intrinsic::x86_mmx_pmulhu_w:
7790  case Intrinsic::x86_mmx_pmull_w:
7791  case Intrinsic::x86_mmx_pmulu_dq:
7792  case Intrinsic::x86_mmx_por:
7793  case Intrinsic::x86_mmx_psad_bw:
7794  case Intrinsic::x86_mmx_psll_d:
7795  case Intrinsic::x86_mmx_psll_q:
7796  case Intrinsic::x86_mmx_psll_w:
7797  case Intrinsic::x86_mmx_pslli_d:
7798  case Intrinsic::x86_mmx_pslli_q:
7799  case Intrinsic::x86_mmx_pslli_w:
7800  case Intrinsic::x86_mmx_psra_d:
7801  case Intrinsic::x86_mmx_psra_w:
7802  case Intrinsic::x86_mmx_psrai_d:
7803  case Intrinsic::x86_mmx_psrai_w:
7804  case Intrinsic::x86_mmx_psrl_d:
7805  case Intrinsic::x86_mmx_psrl_q:
7806  case Intrinsic::x86_mmx_psrl_w:
7807  case Intrinsic::x86_mmx_psrli_d:
7808  case Intrinsic::x86_mmx_psrli_q:
7809  case Intrinsic::x86_mmx_psrli_w:
7810  case Intrinsic::x86_mmx_psub_b:
7811  case Intrinsic::x86_mmx_psub_d:
7812  case Intrinsic::x86_mmx_psub_q:
7813  case Intrinsic::x86_mmx_psub_w:
7814  case Intrinsic::x86_mmx_psubs_b:
7815  case Intrinsic::x86_mmx_psubs_w:
7816  case Intrinsic::x86_mmx_psubus_b:
7817  case Intrinsic::x86_mmx_psubus_w:
7818  case Intrinsic::x86_mmx_punpckhbw:
7819  case Intrinsic::x86_mmx_punpckhdq:
7820  case Intrinsic::x86_mmx_punpckhwd:
7821  case Intrinsic::x86_mmx_punpcklbw:
7822  case Intrinsic::x86_mmx_punpckldq:
7823  case Intrinsic::x86_mmx_punpcklwd:
7824  case Intrinsic::x86_mmx_pxor:
7825  case Intrinsic::x86_sse2_add_sd:
7826  case Intrinsic::x86_sse2_cmp_pd:
7827  case Intrinsic::x86_sse2_cmp_sd:
7828  case Intrinsic::x86_sse2_comieq_sd:
7829  case Intrinsic::x86_sse2_comige_sd:
7830  case Intrinsic::x86_sse2_comigt_sd:
7831  case Intrinsic::x86_sse2_comile_sd:
7832  case Intrinsic::x86_sse2_comilt_sd:
7833  case Intrinsic::x86_sse2_comineq_sd:
7834  case Intrinsic::x86_sse2_cvtdq2pd:
7835  case Intrinsic::x86_sse2_cvtdq2ps:
7836  case Intrinsic::x86_sse2_cvtpd2dq:
7837  case Intrinsic::x86_sse2_cvtpd2ps:
7838  case Intrinsic::x86_sse2_cvtps2dq:
7839  case Intrinsic::x86_sse2_cvtps2pd:
7840  case Intrinsic::x86_sse2_cvtsd2si:
7841  case Intrinsic::x86_sse2_cvtsd2si64:
7842  case Intrinsic::x86_sse2_cvtsd2ss:
7843  case Intrinsic::x86_sse2_cvtsi2sd:
7844  case Intrinsic::x86_sse2_cvtsi642sd:
7845  case Intrinsic::x86_sse2_cvtss2sd:
7846  case Intrinsic::x86_sse2_cvttpd2dq:
7847  case Intrinsic::x86_sse2_cvttps2dq:
7848  case Intrinsic::x86_sse2_cvttsd2si:
7849  case Intrinsic::x86_sse2_cvttsd2si64:
7850  case Intrinsic::x86_sse2_div_sd:
7851  case Intrinsic::x86_sse2_max_pd:
7852  case Intrinsic::x86_sse2_max_sd:
7853  case Intrinsic::x86_sse2_min_pd:
7854  case Intrinsic::x86_sse2_min_sd:
7855  case Intrinsic::x86_sse2_movmsk_pd:
7856  case Intrinsic::x86_sse2_mul_sd:
7857  case Intrinsic::x86_sse2_packssdw_128:
7858  case Intrinsic::x86_sse2_packsswb_128:
7859  case Intrinsic::x86_sse2_packuswb_128:
7860  case Intrinsic::x86_sse2_padds_b:
7861  case Intrinsic::x86_sse2_padds_w:
7862  case Intrinsic::x86_sse2_paddus_b:
7863  case Intrinsic::x86_sse2_paddus_w:
7864  case Intrinsic::x86_sse2_pavg_b:
7865  case Intrinsic::x86_sse2_pavg_w:
7866  case Intrinsic::x86_sse2_pcmpeq_b:
7867  case Intrinsic::x86_sse2_pcmpeq_d:
7868  case Intrinsic::x86_sse2_pcmpeq_w:
7869  case Intrinsic::x86_sse2_pcmpgt_b:
7870  case Intrinsic::x86_sse2_pcmpgt_d:
7871  case Intrinsic::x86_sse2_pcmpgt_w:
7872  case Intrinsic::x86_sse2_pmadd_wd:
7873  case Intrinsic::x86_sse2_pmaxs_w:
7874  case Intrinsic::x86_sse2_pmaxu_b:
7875  case Intrinsic::x86_sse2_pmins_w:
7876  case Intrinsic::x86_sse2_pminu_b:
7877  case Intrinsic::x86_sse2_pmovmskb_128:
7878  case Intrinsic::x86_sse2_pmulh_w:
7879  case Intrinsic::x86_sse2_pmulhu_w:
7880  case Intrinsic::x86_sse2_pmulu_dq:
7881  case Intrinsic::x86_sse2_psad_bw:
7882  case Intrinsic::x86_sse2_psll_d:
7883  case Intrinsic::x86_sse2_psll_dq:
7884  case Intrinsic::x86_sse2_psll_dq_bs:
7885  case Intrinsic::x86_sse2_psll_q:
7886  case Intrinsic::x86_sse2_psll_w:
7887  case Intrinsic::x86_sse2_pslli_d:
7888  case Intrinsic::x86_sse2_pslli_q:
7889  case Intrinsic::x86_sse2_pslli_w:
7890  case Intrinsic::x86_sse2_psra_d:
7891  case Intrinsic::x86_sse2_psra_w:
7892  case Intrinsic::x86_sse2_psrai_d:
7893  case Intrinsic::x86_sse2_psrai_w:
7894  case Intrinsic::x86_sse2_psrl_d:
7895  case Intrinsic::x86_sse2_psrl_dq:
7896  case Intrinsic::x86_sse2_psrl_dq_bs:
7897  case Intrinsic::x86_sse2_psrl_q:
7898  case Intrinsic::x86_sse2_psrl_w:
7899  case Intrinsic::x86_sse2_psrli_d:
7900  case Intrinsic::x86_sse2_psrli_q:
7901  case Intrinsic::x86_sse2_psrli_w:
7902  case Intrinsic::x86_sse2_psubs_b:
7903  case Intrinsic::x86_sse2_psubs_w:
7904  case Intrinsic::x86_sse2_psubus_b:
7905  case Intrinsic::x86_sse2_psubus_w:
7906  case Intrinsic::x86_sse2_sqrt_pd:
7907  case Intrinsic::x86_sse2_sqrt_sd:
7908  case Intrinsic::x86_sse2_sub_sd:
7909  case Intrinsic::x86_sse2_ucomieq_sd:
7910  case Intrinsic::x86_sse2_ucomige_sd:
7911  case Intrinsic::x86_sse2_ucomigt_sd:
7912  case Intrinsic::x86_sse2_ucomile_sd:
7913  case Intrinsic::x86_sse2_ucomilt_sd:
7914  case Intrinsic::x86_sse2_ucomineq_sd:
7915  case Intrinsic::x86_sse3_addsub_pd:
7916  case Intrinsic::x86_sse3_addsub_ps:
7917  case Intrinsic::x86_sse3_hadd_pd:
7918  case Intrinsic::x86_sse3_hadd_ps:
7919  case Intrinsic::x86_sse3_hsub_pd:
7920  case Intrinsic::x86_sse3_hsub_ps:
7921  case Intrinsic::x86_sse41_blendpd:
7922  case Intrinsic::x86_sse41_blendps:
7923  case Intrinsic::x86_sse41_blendvpd:
7924  case Intrinsic::x86_sse41_blendvps:
7925  case Intrinsic::x86_sse41_dppd:
7926  case Intrinsic::x86_sse41_dpps:
7927  case Intrinsic::x86_sse41_extractps:
7928  case Intrinsic::x86_sse41_insertps:
7929  case Intrinsic::x86_sse41_mpsadbw:
7930  case Intrinsic::x86_sse41_packusdw:
7931  case Intrinsic::x86_sse41_pblendvb:
7932  case Intrinsic::x86_sse41_pblendw:
7933  case Intrinsic::x86_sse41_pcmpeqq:
7934  case Intrinsic::x86_sse41_pextrb:
7935  case Intrinsic::x86_sse41_pextrd:
7936  case Intrinsic::x86_sse41_pextrq:
7937  case Intrinsic::x86_sse41_phminposuw:
7938  case Intrinsic::x86_sse41_pmaxsb:
7939  case Intrinsic::x86_sse41_pmaxsd:
7940  case Intrinsic::x86_sse41_pmaxud:
7941  case Intrinsic::x86_sse41_pmaxuw:
7942  case Intrinsic::x86_sse41_pminsb:
7943  case Intrinsic::x86_sse41_pminsd:
7944  case Intrinsic::x86_sse41_pminud:
7945  case Intrinsic::x86_sse41_pminuw:
7946  case Intrinsic::x86_sse41_pmovsxbd:
7947  case Intrinsic::x86_sse41_pmovsxbq:
7948  case Intrinsic::x86_sse41_pmovsxbw:
7949  case Intrinsic::x86_sse41_pmovsxdq:
7950  case Intrinsic::x86_sse41_pmovsxwd:
7951  case Intrinsic::x86_sse41_pmovsxwq:
7952  case Intrinsic::x86_sse41_pmovzxbd:
7953  case Intrinsic::x86_sse41_pmovzxbq:
7954  case Intrinsic::x86_sse41_pmovzxbw:
7955  case Intrinsic::x86_sse41_pmovzxdq:
7956  case Intrinsic::x86_sse41_pmovzxwd:
7957  case Intrinsic::x86_sse41_pmovzxwq:
7958  case Intrinsic::x86_sse41_pmuldq:
7959  case Intrinsic::x86_sse41_ptestc:
7960  case Intrinsic::x86_sse41_ptestnzc:
7961  case Intrinsic::x86_sse41_ptestz:
7962  case Intrinsic::x86_sse41_round_pd:
7963  case Intrinsic::x86_sse41_round_ps:
7964  case Intrinsic::x86_sse41_round_sd:
7965  case Intrinsic::x86_sse41_round_ss:
7966  case Intrinsic::x86_sse42_crc32_32_16:
7967  case Intrinsic::x86_sse42_crc32_32_32:
7968  case Intrinsic::x86_sse42_crc32_32_8:
7969  case Intrinsic::x86_sse42_crc32_64_64:
7970  case Intrinsic::x86_sse42_crc32_64_8:
7971  case Intrinsic::x86_sse42_pcmpestri128:
7972  case Intrinsic::x86_sse42_pcmpestria128:
7973  case Intrinsic::x86_sse42_pcmpestric128:
7974  case Intrinsic::x86_sse42_pcmpestrio128:
7975  case Intrinsic::x86_sse42_pcmpestris128:
7976  case Intrinsic::x86_sse42_pcmpestriz128:
7977  case Intrinsic::x86_sse42_pcmpestrm128:
7978  case Intrinsic::x86_sse42_pcmpgtq:
7979  case Intrinsic::x86_sse42_pcmpistri128:
7980  case Intrinsic::x86_sse42_pcmpistria128:
7981  case Intrinsic::x86_sse42_pcmpistric128:
7982  case Intrinsic::x86_sse42_pcmpistrio128:
7983  case Intrinsic::x86_sse42_pcmpistris128:
7984  case Intrinsic::x86_sse42_pcmpistriz128:
7985  case Intrinsic::x86_sse42_pcmpistrm128:
7986  case Intrinsic::x86_sse_add_ss:
7987  case Intrinsic::x86_sse_cmp_ps:
7988  case Intrinsic::x86_sse_cmp_ss:
7989  case Intrinsic::x86_sse_comieq_ss:
7990  case Intrinsic::x86_sse_comige_ss:
7991  case Intrinsic::x86_sse_comigt_ss:
7992  case Intrinsic::x86_sse_comile_ss:
7993  case Intrinsic::x86_sse_comilt_ss:
7994  case Intrinsic::x86_sse_comineq_ss:
7995  case Intrinsic::x86_sse_cvtpd2pi:
7996  case Intrinsic::x86_sse_cvtpi2pd:
7997  case Intrinsic::x86_sse_cvtpi2ps:
7998  case Intrinsic::x86_sse_cvtps2pi:
7999  case Intrinsic::x86_sse_cvtsi2ss:
8000  case Intrinsic::x86_sse_cvtsi642ss:
8001  case Intrinsic::x86_sse_cvtss2si:
8002  case Intrinsic::x86_sse_cvtss2si64:
8003  case Intrinsic::x86_sse_cvttpd2pi:
8004  case Intrinsic::x86_sse_cvttps2pi:
8005  case Intrinsic::x86_sse_cvttss2si:
8006  case Intrinsic::x86_sse_cvttss2si64:
8007  case Intrinsic::x86_sse_div_ss:
8008  case Intrinsic::x86_sse_max_ps:
8009  case Intrinsic::x86_sse_max_ss:
8010  case Intrinsic::x86_sse_min_ps:
8011  case Intrinsic::x86_sse_min_ss:
8012  case Intrinsic::x86_sse_movmsk_ps:
8013  case Intrinsic::x86_sse_mul_ss:
8014  case Intrinsic::x86_sse_pshuf_w:
8015  case Intrinsic::x86_sse_rcp_ps:
8016  case Intrinsic::x86_sse_rcp_ss:
8017  case Intrinsic::x86_sse_rsqrt_ps:
8018  case Intrinsic::x86_sse_rsqrt_ss:
8019  case Intrinsic::x86_sse_sqrt_ps:
8020  case Intrinsic::x86_sse_sqrt_ss:
8021  case Intrinsic::x86_sse_sub_ss:
8022  case Intrinsic::x86_sse_ucomieq_ss:
8023  case Intrinsic::x86_sse_ucomige_ss:
8024  case Intrinsic::x86_sse_ucomigt_ss:
8025  case Intrinsic::x86_sse_ucomile_ss:
8026  case Intrinsic::x86_sse_ucomilt_ss:
8027  case Intrinsic::x86_sse_ucomineq_ss:
8028  case Intrinsic::x86_ssse3_pabs_b:
8029  case Intrinsic::x86_ssse3_pabs_b_128:
8030  case Intrinsic::x86_ssse3_pabs_d:
8031  case Intrinsic::x86_ssse3_pabs_d_128:
8032  case Intrinsic::x86_ssse3_pabs_w:
8033  case Intrinsic::x86_ssse3_pabs_w_128:
8034  case Intrinsic::x86_ssse3_phadd_d:
8035  case Intrinsic::x86_ssse3_phadd_d_128:
8036  case Intrinsic::x86_ssse3_phadd_sw:
8037  case Intrinsic::x86_ssse3_phadd_sw_128:
8038  case Intrinsic::x86_ssse3_phadd_w:
8039  case Intrinsic::x86_ssse3_phadd_w_128:
8040  case Intrinsic::x86_ssse3_phsub_d:
8041  case Intrinsic::x86_ssse3_phsub_d_128:
8042  case Intrinsic::x86_ssse3_phsub_sw:
8043  case Intrinsic::x86_ssse3_phsub_sw_128:
8044  case Intrinsic::x86_ssse3_phsub_w:
8045  case Intrinsic::x86_ssse3_phsub_w_128:
8046  case Intrinsic::x86_ssse3_pmadd_ub_sw:
8047  case Intrinsic::x86_ssse3_pmadd_ub_sw_128:
8048  case Intrinsic::x86_ssse3_pmul_hr_sw:
8049  case Intrinsic::x86_ssse3_pmul_hr_sw_128:
8050  case Intrinsic::x86_ssse3_pshuf_b:
8051  case Intrinsic::x86_ssse3_pshuf_b_128:
8052  case Intrinsic::x86_ssse3_psign_b:
8053  case Intrinsic::x86_ssse3_psign_b_128:
8054  case Intrinsic::x86_ssse3_psign_d:
8055  case Intrinsic::x86_ssse3_psign_d_128:
8056  case Intrinsic::x86_ssse3_psign_w:
8057  case Intrinsic::x86_ssse3_psign_w_128:
8058    AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadNone);
8059    NumAttrs = 1;
8060    break;
8061  case Intrinsic::adjust_trampoline:
8062  case Intrinsic::cos:
8063  case Intrinsic::eh_exception:
8064  case Intrinsic::exp:
8065  case Intrinsic::exp2:
8066  case Intrinsic::gcread:
8067  case Intrinsic::log:
8068  case Intrinsic::log10:
8069  case Intrinsic::log2:
8070  case Intrinsic::pow:
8071  case Intrinsic::powi:
8072  case Intrinsic::sin:
8073  case Intrinsic::sqrt:
8074  case Intrinsic::x86_avx_ldu_dq_256:
8075  case Intrinsic::x86_avx_loadu_dq_256:
8076  case Intrinsic::x86_avx_loadu_pd_256:
8077  case Intrinsic::x86_avx_loadu_ps_256:
8078  case Intrinsic::x86_avx_maskload_pd:
8079  case Intrinsic::x86_avx_maskload_pd_256:
8080  case Intrinsic::x86_avx_maskload_ps:
8081  case Intrinsic::x86_avx_maskload_ps_256:
8082  case Intrinsic::x86_avx_vbroadcast_sd_256:
8083  case Intrinsic::x86_avx_vbroadcastf128_pd_256:
8084  case Intrinsic::x86_avx_vbroadcastf128_ps_256:
8085  case Intrinsic::x86_avx_vbroadcastss:
8086  case Intrinsic::x86_avx_vbroadcastss_256:
8087  case Intrinsic::x86_sse3_ldu_dq:
8088  case Intrinsic::x86_sse41_movntdqa:
8089    AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadOnly);
8090    NumAttrs = 1;
8091    break;
8092  case Intrinsic::annotation:
8093  case Intrinsic::convertff:
8094  case Intrinsic::convertfsi:
8095  case Intrinsic::convertfui:
8096  case Intrinsic::convertsif:
8097  case Intrinsic::convertss:
8098  case Intrinsic::convertsu:
8099  case Intrinsic::convertuif:
8100  case Intrinsic::convertus:
8101  case Intrinsic::convertuu:
8102  case Intrinsic::eh_dwarf_cfa:
8103  case Intrinsic::eh_return_i32:
8104  case Intrinsic::eh_return_i64:
8105  case Intrinsic::eh_selector:
8106  case Intrinsic::eh_sjlj_dispatch_setup:
8107  case Intrinsic::eh_sjlj_functioncontext:
8108  case Intrinsic::eh_sjlj_longjmp:
8109  case Intrinsic::eh_sjlj_setjmp:
8110  case Intrinsic::eh_unwind_init:
8111  case Intrinsic::flt_rounds:
8112  case Intrinsic::gcroot:
8113  case Intrinsic::longjmp:
8114  case Intrinsic::pcmarker:
8115  case Intrinsic::ptr_annotation:
8116  case Intrinsic::readcyclecounter:
8117  case Intrinsic::setjmp:
8118  case Intrinsic::siglongjmp:
8119  case Intrinsic::sigsetjmp:
8120  case Intrinsic::stackprotector:
8121  case Intrinsic::stackrestore:
8122  case Intrinsic::stacksave:
8123  case Intrinsic::trap:
8124  case Intrinsic::vacopy:
8125  case Intrinsic::vaend:
8126  case Intrinsic::var_annotation:
8127  case Intrinsic::vastart:
8128  case Intrinsic::x86_avx_maskstore_pd:
8129  case Intrinsic::x86_avx_maskstore_pd_256:
8130  case Intrinsic::x86_avx_maskstore_ps:
8131  case Intrinsic::x86_avx_maskstore_ps_256:
8132  case Intrinsic::x86_avx_movnt_dq_256:
8133  case Intrinsic::x86_avx_movnt_pd_256:
8134  case Intrinsic::x86_avx_movnt_ps_256:
8135  case Intrinsic::x86_avx_storeu_dq_256:
8136  case Intrinsic::x86_avx_storeu_pd_256:
8137  case Intrinsic::x86_avx_storeu_ps_256:
8138  case Intrinsic::x86_avx_vzeroall:
8139  case Intrinsic::x86_avx_vzeroupper:
8140  case Intrinsic::x86_int:
8141  case Intrinsic::x86_mmx_emms:
8142  case Intrinsic::x86_mmx_femms:
8143  case Intrinsic::x86_mmx_maskmovq:
8144  case Intrinsic::x86_mmx_movnt_dq:
8145  case Intrinsic::x86_sse2_clflush:
8146  case Intrinsic::x86_sse2_lfence:
8147  case Intrinsic::x86_sse2_maskmov_dqu:
8148  case Intrinsic::x86_sse2_mfence:
8149  case Intrinsic::x86_sse2_storel_dq:
8150  case Intrinsic::x86_sse2_storeu_dq:
8151  case Intrinsic::x86_sse2_storeu_pd:
8152  case Intrinsic::x86_sse3_monitor:
8153  case Intrinsic::x86_sse3_mwait:
8154  case Intrinsic::x86_sse_ldmxcsr:
8155  case Intrinsic::x86_sse_sfence:
8156  case Intrinsic::x86_sse_stmxcsr:
8157  case Intrinsic::x86_sse_storeu_ps:
8158    AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
8159    NumAttrs = 1;
8160    break;
8161  case Intrinsic::init_trampoline:
8162  case Intrinsic::memset:
8163  case Intrinsic::prefetch:
8164    AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture);
8165    AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
8166    NumAttrs = 2;
8167    break;
8168  case Intrinsic::memcpy:
8169  case Intrinsic::memmove:
8170    AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture);
8171    AWI[1] = AttributeWithIndex::get(2, Attribute::NoCapture);
8172    AWI[2] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
8173    NumAttrs = 3;
8174    break;
8175  case Intrinsic::invariant_start:
8176  case Intrinsic::lifetime_end:
8177  case Intrinsic::lifetime_start:
8178    AWI[0] = AttributeWithIndex::get(2, Attribute::NoCapture);
8179    AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
8180    NumAttrs = 2;
8181    break;
8182  case Intrinsic::gcwrite:
8183    AWI[0] = AttributeWithIndex::get(2, Attribute::NoCapture);
8184    AWI[1] = AttributeWithIndex::get(3, Attribute::NoCapture);
8185    AWI[2] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
8186    NumAttrs = 3;
8187    break;
8188  case Intrinsic::invariant_end:
8189    AWI[0] = AttributeWithIndex::get(3, Attribute::NoCapture);
8190    AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
8191    NumAttrs = 2;
8192    break;
8193  case Intrinsic::eh_resume:
8194    return AttrListPtr();
8195  }
8196  return AttrListPtr::get(AWI, NumAttrs);
8197}
8198#endif // GET_INTRINSIC_ATTRIBUTES
8199
8200// Determine intrinsic alias analysis mod/ref behavior.
8201#ifdef GET_INTRINSIC_MODREF_BEHAVIOR
8202switch (iid) {
8203default:
8204    return UnknownModRefBehavior;
8205case Intrinsic::adjust_trampoline:
8206  return OnlyReadsArgumentPointees;
8207case Intrinsic::bswap:
8208  return DoesNotAccessMemory;
8209case Intrinsic::convert_from_fp16:
8210  return DoesNotAccessMemory;
8211case Intrinsic::convert_to_fp16:
8212  return DoesNotAccessMemory;
8213case Intrinsic::cos:
8214  return OnlyReadsMemory;
8215case Intrinsic::ctlz:
8216  return DoesNotAccessMemory;
8217case Intrinsic::ctpop:
8218  return DoesNotAccessMemory;
8219case Intrinsic::cttz:
8220  return DoesNotAccessMemory;
8221case Intrinsic::dbg_declare:
8222  return DoesNotAccessMemory;
8223case Intrinsic::dbg_value:
8224  return DoesNotAccessMemory;
8225case Intrinsic::eh_exception:
8226  return OnlyReadsMemory;
8227case Intrinsic::eh_sjlj_callsite:
8228  return DoesNotAccessMemory;
8229case Intrinsic::eh_sjlj_lsda:
8230  return DoesNotAccessMemory;
8231case Intrinsic::eh_typeid_for:
8232  return DoesNotAccessMemory;
8233case Intrinsic::exp:
8234  return OnlyReadsMemory;
8235case Intrinsic::exp2:
8236  return OnlyReadsMemory;
8237case Intrinsic::expect:
8238  return DoesNotAccessMemory;
8239case Intrinsic::fma:
8240  return DoesNotAccessMemory;
8241case Intrinsic::frameaddress:
8242  return DoesNotAccessMemory;
8243case Intrinsic::gcread:
8244  return OnlyReadsArgumentPointees;
8245case Intrinsic::gcwrite:
8246  return OnlyAccessesArgumentPointees;
8247case Intrinsic::init_trampoline:
8248  return OnlyAccessesArgumentPointees;
8249case Intrinsic::invariant_end:
8250  return OnlyAccessesArgumentPointees;
8251case Intrinsic::invariant_start:
8252  return OnlyAccessesArgumentPointees;
8253case Intrinsic::lifetime_end:
8254  return OnlyAccessesArgumentPointees;
8255case Intrinsic::lifetime_start:
8256  return OnlyAccessesArgumentPointees;
8257case Intrinsic::log:
8258  return OnlyReadsMemory;
8259case Intrinsic::log10:
8260  return OnlyReadsMemory;
8261case Intrinsic::log2:
8262  return OnlyReadsMemory;
8263case Intrinsic::memcpy:
8264  return OnlyAccessesArgumentPointees;
8265case Intrinsic::memmove:
8266  return OnlyAccessesArgumentPointees;
8267case Intrinsic::memset:
8268  return OnlyAccessesArgumentPointees;
8269case Intrinsic::objectsize:
8270  return DoesNotAccessMemory;
8271case Intrinsic::pow:
8272  return OnlyReadsMemory;
8273case Intrinsic::powi:
8274  return OnlyReadsMemory;
8275case Intrinsic::prefetch:
8276  return OnlyAccessesArgumentPointees;
8277case Intrinsic::returnaddress:
8278  return DoesNotAccessMemory;
8279case Intrinsic::sadd_with_overflow:
8280  return DoesNotAccessMemory;
8281case Intrinsic::sin:
8282  return OnlyReadsMemory;
8283case Intrinsic::smul_with_overflow:
8284  return DoesNotAccessMemory;
8285case Intrinsic::sqrt:
8286  return OnlyReadsMemory;
8287case Intrinsic::ssub_with_overflow:
8288  return DoesNotAccessMemory;
8289case Intrinsic::uadd_with_overflow:
8290  return DoesNotAccessMemory;
8291case Intrinsic::umul_with_overflow:
8292  return DoesNotAccessMemory;
8293case Intrinsic::usub_with_overflow:
8294  return DoesNotAccessMemory;
8295case Intrinsic::x86_3dnow_pavgusb:
8296  return DoesNotAccessMemory;
8297case Intrinsic::x86_3dnow_pf2id:
8298  return DoesNotAccessMemory;
8299case Intrinsic::x86_3dnow_pfacc:
8300  return DoesNotAccessMemory;
8301case Intrinsic::x86_3dnow_pfadd:
8302  return DoesNotAccessMemory;
8303case Intrinsic::x86_3dnow_pfcmpeq:
8304  return DoesNotAccessMemory;
8305case Intrinsic::x86_3dnow_pfcmpge:
8306  return DoesNotAccessMemory;
8307case Intrinsic::x86_3dnow_pfcmpgt:
8308  return DoesNotAccessMemory;
8309case Intrinsic::x86_3dnow_pfmax:
8310  return DoesNotAccessMemory;
8311case Intrinsic::x86_3dnow_pfmin:
8312  return DoesNotAccessMemory;
8313case Intrinsic::x86_3dnow_pfmul:
8314  return DoesNotAccessMemory;
8315case Intrinsic::x86_3dnow_pfrcp:
8316  return DoesNotAccessMemory;
8317case Intrinsic::x86_3dnow_pfrcpit1:
8318  return DoesNotAccessMemory;
8319case Intrinsic::x86_3dnow_pfrcpit2:
8320  return DoesNotAccessMemory;
8321case Intrinsic::x86_3dnow_pfrsqit1:
8322  return DoesNotAccessMemory;
8323case Intrinsic::x86_3dnow_pfrsqrt:
8324  return DoesNotAccessMemory;
8325case Intrinsic::x86_3dnow_pfsub:
8326  return DoesNotAccessMemory;
8327case Intrinsic::x86_3dnow_pfsubr:
8328  return DoesNotAccessMemory;
8329case Intrinsic::x86_3dnow_pi2fd:
8330  return DoesNotAccessMemory;
8331case Intrinsic::x86_3dnow_pmulhrw:
8332  return DoesNotAccessMemory;
8333case Intrinsic::x86_3dnowa_pf2iw:
8334  return DoesNotAccessMemory;
8335case Intrinsic::x86_3dnowa_pfnacc:
8336  return DoesNotAccessMemory;
8337case Intrinsic::x86_3dnowa_pfpnacc:
8338  return DoesNotAccessMemory;
8339case Intrinsic::x86_3dnowa_pi2fw:
8340  return DoesNotAccessMemory;
8341case Intrinsic::x86_3dnowa_pswapd:
8342  return DoesNotAccessMemory;
8343case Intrinsic::x86_aesni_aesdec:
8344  return DoesNotAccessMemory;
8345case Intrinsic::x86_aesni_aesdeclast:
8346  return DoesNotAccessMemory;
8347case Intrinsic::x86_aesni_aesenc:
8348  return DoesNotAccessMemory;
8349case Intrinsic::x86_aesni_aesenclast:
8350  return DoesNotAccessMemory;
8351case Intrinsic::x86_aesni_aesimc:
8352  return DoesNotAccessMemory;
8353case Intrinsic::x86_aesni_aeskeygenassist:
8354  return DoesNotAccessMemory;
8355case Intrinsic::x86_avx_addsub_pd_256:
8356  return DoesNotAccessMemory;
8357case Intrinsic::x86_avx_addsub_ps_256:
8358  return DoesNotAccessMemory;
8359case Intrinsic::x86_avx_blend_pd_256:
8360  return DoesNotAccessMemory;
8361case Intrinsic::x86_avx_blend_ps_256:
8362  return DoesNotAccessMemory;
8363case Intrinsic::x86_avx_blendv_pd_256:
8364  return DoesNotAccessMemory;
8365case Intrinsic::x86_avx_blendv_ps_256:
8366  return DoesNotAccessMemory;
8367case Intrinsic::x86_avx_cmp_pd_256:
8368  return DoesNotAccessMemory;
8369case Intrinsic::x86_avx_cmp_ps_256:
8370  return DoesNotAccessMemory;
8371case Intrinsic::x86_avx_cvt_pd2_ps_256:
8372  return DoesNotAccessMemory;
8373case Intrinsic::x86_avx_cvt_pd2dq_256:
8374  return DoesNotAccessMemory;
8375case Intrinsic::x86_avx_cvt_ps2_pd_256:
8376  return DoesNotAccessMemory;
8377case Intrinsic::x86_avx_cvt_ps2dq_256:
8378  return DoesNotAccessMemory;
8379case Intrinsic::x86_avx_cvtdq2_pd_256:
8380  return DoesNotAccessMemory;
8381case Intrinsic::x86_avx_cvtdq2_ps_256:
8382  return DoesNotAccessMemory;
8383case Intrinsic::x86_avx_cvtt_pd2dq_256:
8384  return DoesNotAccessMemory;
8385case Intrinsic::x86_avx_cvtt_ps2dq_256:
8386  return DoesNotAccessMemory;
8387case Intrinsic::x86_avx_dp_ps_256:
8388  return DoesNotAccessMemory;
8389case Intrinsic::x86_avx_hadd_pd_256:
8390  return DoesNotAccessMemory;
8391case Intrinsic::x86_avx_hadd_ps_256:
8392  return DoesNotAccessMemory;
8393case Intrinsic::x86_avx_hsub_pd_256:
8394  return DoesNotAccessMemory;
8395case Intrinsic::x86_avx_hsub_ps_256:
8396  return DoesNotAccessMemory;
8397case Intrinsic::x86_avx_ldu_dq_256:
8398  return OnlyReadsMemory;
8399case Intrinsic::x86_avx_loadu_dq_256:
8400  return OnlyReadsMemory;
8401case Intrinsic::x86_avx_loadu_pd_256:
8402  return OnlyReadsMemory;
8403case Intrinsic::x86_avx_loadu_ps_256:
8404  return OnlyReadsMemory;
8405case Intrinsic::x86_avx_maskload_pd:
8406  return OnlyReadsMemory;
8407case Intrinsic::x86_avx_maskload_pd_256:
8408  return OnlyReadsMemory;
8409case Intrinsic::x86_avx_maskload_ps:
8410  return OnlyReadsMemory;
8411case Intrinsic::x86_avx_maskload_ps_256:
8412  return OnlyReadsMemory;
8413case Intrinsic::x86_avx_max_pd_256:
8414  return DoesNotAccessMemory;
8415case Intrinsic::x86_avx_max_ps_256:
8416  return DoesNotAccessMemory;
8417case Intrinsic::x86_avx_min_pd_256:
8418  return DoesNotAccessMemory;
8419case Intrinsic::x86_avx_min_ps_256:
8420  return DoesNotAccessMemory;
8421case Intrinsic::x86_avx_movmsk_pd_256:
8422  return DoesNotAccessMemory;
8423case Intrinsic::x86_avx_movmsk_ps_256:
8424  return DoesNotAccessMemory;
8425case Intrinsic::x86_avx_ptestc_256:
8426  return DoesNotAccessMemory;
8427case Intrinsic::x86_avx_ptestnzc_256:
8428  return DoesNotAccessMemory;
8429case Intrinsic::x86_avx_ptestz_256:
8430  return DoesNotAccessMemory;
8431case Intrinsic::x86_avx_rcp_ps_256:
8432  return DoesNotAccessMemory;
8433case Intrinsic::x86_avx_round_pd_256:
8434  return DoesNotAccessMemory;
8435case Intrinsic::x86_avx_round_ps_256:
8436  return DoesNotAccessMemory;
8437case Intrinsic::x86_avx_rsqrt_ps_256:
8438  return DoesNotAccessMemory;
8439case Intrinsic::x86_avx_sqrt_pd_256:
8440  return DoesNotAccessMemory;
8441case Intrinsic::x86_avx_sqrt_ps_256:
8442  return DoesNotAccessMemory;
8443case Intrinsic::x86_avx_vbroadcast_sd_256:
8444  return OnlyReadsMemory;
8445case Intrinsic::x86_avx_vbroadcastf128_pd_256:
8446  return OnlyReadsMemory;
8447case Intrinsic::x86_avx_vbroadcastf128_ps_256:
8448  return OnlyReadsMemory;
8449case Intrinsic::x86_avx_vbroadcastss:
8450  return OnlyReadsMemory;
8451case Intrinsic::x86_avx_vbroadcastss_256:
8452  return OnlyReadsMemory;
8453case Intrinsic::x86_avx_vextractf128_pd_256:
8454  return DoesNotAccessMemory;
8455case Intrinsic::x86_avx_vextractf128_ps_256:
8456  return DoesNotAccessMemory;
8457case Intrinsic::x86_avx_vextractf128_si_256:
8458  return DoesNotAccessMemory;
8459case Intrinsic::x86_avx_vinsertf128_pd_256:
8460  return DoesNotAccessMemory;
8461case Intrinsic::x86_avx_vinsertf128_ps_256:
8462  return DoesNotAccessMemory;
8463case Intrinsic::x86_avx_vinsertf128_si_256:
8464  return DoesNotAccessMemory;
8465case Intrinsic::x86_avx_vperm2f128_pd_256:
8466  return DoesNotAccessMemory;
8467case Intrinsic::x86_avx_vperm2f128_ps_256:
8468  return DoesNotAccessMemory;
8469case Intrinsic::x86_avx_vperm2f128_si_256:
8470  return DoesNotAccessMemory;
8471case Intrinsic::x86_avx_vpermil_pd:
8472  return DoesNotAccessMemory;
8473case Intrinsic::x86_avx_vpermil_pd_256:
8474  return DoesNotAccessMemory;
8475case Intrinsic::x86_avx_vpermil_ps:
8476  return DoesNotAccessMemory;
8477case Intrinsic::x86_avx_vpermil_ps_256:
8478  return DoesNotAccessMemory;
8479case Intrinsic::x86_avx_vpermilvar_pd:
8480  return DoesNotAccessMemory;
8481case Intrinsic::x86_avx_vpermilvar_pd_256:
8482  return DoesNotAccessMemory;
8483case Intrinsic::x86_avx_vpermilvar_ps:
8484  return DoesNotAccessMemory;
8485case Intrinsic::x86_avx_vpermilvar_ps_256:
8486  return DoesNotAccessMemory;
8487case Intrinsic::x86_avx_vtestc_pd:
8488  return DoesNotAccessMemory;
8489case Intrinsic::x86_avx_vtestc_pd_256:
8490  return DoesNotAccessMemory;
8491case Intrinsic::x86_avx_vtestc_ps:
8492  return DoesNotAccessMemory;
8493case Intrinsic::x86_avx_vtestc_ps_256:
8494  return DoesNotAccessMemory;
8495case Intrinsic::x86_avx_vtestnzc_pd:
8496  return DoesNotAccessMemory;
8497case Intrinsic::x86_avx_vtestnzc_pd_256:
8498  return DoesNotAccessMemory;
8499case Intrinsic::x86_avx_vtestnzc_ps:
8500  return DoesNotAccessMemory;
8501case Intrinsic::x86_avx_vtestnzc_ps_256:
8502  return DoesNotAccessMemory;
8503case Intrinsic::x86_avx_vtestz_pd:
8504  return DoesNotAccessMemory;
8505case Intrinsic::x86_avx_vtestz_pd_256:
8506  return DoesNotAccessMemory;
8507case Intrinsic::x86_avx_vtestz_ps:
8508  return DoesNotAccessMemory;
8509case Intrinsic::x86_avx_vtestz_ps_256:
8510  return DoesNotAccessMemory;
8511case Intrinsic::x86_mmx_packssdw:
8512  return DoesNotAccessMemory;
8513case Intrinsic::x86_mmx_packsswb:
8514  return DoesNotAccessMemory;
8515case Intrinsic::x86_mmx_packuswb:
8516  return DoesNotAccessMemory;
8517case Intrinsic::x86_mmx_padd_b:
8518  return DoesNotAccessMemory;
8519case Intrinsic::x86_mmx_padd_d:
8520  return DoesNotAccessMemory;
8521case Intrinsic::x86_mmx_padd_q:
8522  return DoesNotAccessMemory;
8523case Intrinsic::x86_mmx_padd_w:
8524  return DoesNotAccessMemory;
8525case Intrinsic::x86_mmx_padds_b:
8526  return DoesNotAccessMemory;
8527case Intrinsic::x86_mmx_padds_w:
8528  return DoesNotAccessMemory;
8529case Intrinsic::x86_mmx_paddus_b:
8530  return DoesNotAccessMemory;
8531case Intrinsic::x86_mmx_paddus_w:
8532  return DoesNotAccessMemory;
8533case Intrinsic::x86_mmx_palignr_b:
8534  return DoesNotAccessMemory;
8535case Intrinsic::x86_mmx_pand:
8536  return DoesNotAccessMemory;
8537case Intrinsic::x86_mmx_pandn:
8538  return DoesNotAccessMemory;
8539case Intrinsic::x86_mmx_pavg_b:
8540  return DoesNotAccessMemory;
8541case Intrinsic::x86_mmx_pavg_w:
8542  return DoesNotAccessMemory;
8543case Intrinsic::x86_mmx_pcmpeq_b:
8544  return DoesNotAccessMemory;
8545case Intrinsic::x86_mmx_pcmpeq_d:
8546  return DoesNotAccessMemory;
8547case Intrinsic::x86_mmx_pcmpeq_w:
8548  return DoesNotAccessMemory;
8549case Intrinsic::x86_mmx_pcmpgt_b:
8550  return DoesNotAccessMemory;
8551case Intrinsic::x86_mmx_pcmpgt_d:
8552  return DoesNotAccessMemory;
8553case Intrinsic::x86_mmx_pcmpgt_w:
8554  return DoesNotAccessMemory;
8555case Intrinsic::x86_mmx_pextr_w:
8556  return DoesNotAccessMemory;
8557case Intrinsic::x86_mmx_pinsr_w:
8558  return DoesNotAccessMemory;
8559case Intrinsic::x86_mmx_pmadd_wd:
8560  return DoesNotAccessMemory;
8561case Intrinsic::x86_mmx_pmaxs_w:
8562  return DoesNotAccessMemory;
8563case Intrinsic::x86_mmx_pmaxu_b:
8564  return DoesNotAccessMemory;
8565case Intrinsic::x86_mmx_pmins_w:
8566  return DoesNotAccessMemory;
8567case Intrinsic::x86_mmx_pminu_b:
8568  return DoesNotAccessMemory;
8569case Intrinsic::x86_mmx_pmovmskb:
8570  return DoesNotAccessMemory;
8571case Intrinsic::x86_mmx_pmulh_w:
8572  return DoesNotAccessMemory;
8573case Intrinsic::x86_mmx_pmulhu_w:
8574  return DoesNotAccessMemory;
8575case Intrinsic::x86_mmx_pmull_w:
8576  return DoesNotAccessMemory;
8577case Intrinsic::x86_mmx_pmulu_dq:
8578  return DoesNotAccessMemory;
8579case Intrinsic::x86_mmx_por:
8580  return DoesNotAccessMemory;
8581case Intrinsic::x86_mmx_psad_bw:
8582  return DoesNotAccessMemory;
8583case Intrinsic::x86_mmx_psll_d:
8584  return DoesNotAccessMemory;
8585case Intrinsic::x86_mmx_psll_q:
8586  return DoesNotAccessMemory;
8587case Intrinsic::x86_mmx_psll_w:
8588  return DoesNotAccessMemory;
8589case Intrinsic::x86_mmx_pslli_d:
8590  return DoesNotAccessMemory;
8591case Intrinsic::x86_mmx_pslli_q:
8592  return DoesNotAccessMemory;
8593case Intrinsic::x86_mmx_pslli_w:
8594  return DoesNotAccessMemory;
8595case Intrinsic::x86_mmx_psra_d:
8596  return DoesNotAccessMemory;
8597case Intrinsic::x86_mmx_psra_w:
8598  return DoesNotAccessMemory;
8599case Intrinsic::x86_mmx_psrai_d:
8600  return DoesNotAccessMemory;
8601case Intrinsic::x86_mmx_psrai_w:
8602  return DoesNotAccessMemory;
8603case Intrinsic::x86_mmx_psrl_d:
8604  return DoesNotAccessMemory;
8605case Intrinsic::x86_mmx_psrl_q:
8606  return DoesNotAccessMemory;
8607case Intrinsic::x86_mmx_psrl_w:
8608  return DoesNotAccessMemory;
8609case Intrinsic::x86_mmx_psrli_d:
8610  return DoesNotAccessMemory;
8611case Intrinsic::x86_mmx_psrli_q:
8612  return DoesNotAccessMemory;
8613case Intrinsic::x86_mmx_psrli_w:
8614  return DoesNotAccessMemory;
8615case Intrinsic::x86_mmx_psub_b:
8616  return DoesNotAccessMemory;
8617case Intrinsic::x86_mmx_psub_d:
8618  return DoesNotAccessMemory;
8619case Intrinsic::x86_mmx_psub_q:
8620  return DoesNotAccessMemory;
8621case Intrinsic::x86_mmx_psub_w:
8622  return DoesNotAccessMemory;
8623case Intrinsic::x86_mmx_psubs_b:
8624  return DoesNotAccessMemory;
8625case Intrinsic::x86_mmx_psubs_w:
8626  return DoesNotAccessMemory;
8627case Intrinsic::x86_mmx_psubus_b:
8628  return DoesNotAccessMemory;
8629case Intrinsic::x86_mmx_psubus_w:
8630  return DoesNotAccessMemory;
8631case Intrinsic::x86_mmx_punpckhbw:
8632  return DoesNotAccessMemory;
8633case Intrinsic::x86_mmx_punpckhdq:
8634  return DoesNotAccessMemory;
8635case Intrinsic::x86_mmx_punpckhwd:
8636  return DoesNotAccessMemory;
8637case Intrinsic::x86_mmx_punpcklbw:
8638  return DoesNotAccessMemory;
8639case Intrinsic::x86_mmx_punpckldq:
8640  return DoesNotAccessMemory;
8641case Intrinsic::x86_mmx_punpcklwd:
8642  return DoesNotAccessMemory;
8643case Intrinsic::x86_mmx_pxor:
8644  return DoesNotAccessMemory;
8645case Intrinsic::x86_sse2_add_sd:
8646  return DoesNotAccessMemory;
8647case Intrinsic::x86_sse2_cmp_pd:
8648  return DoesNotAccessMemory;
8649case Intrinsic::x86_sse2_cmp_sd:
8650  return DoesNotAccessMemory;
8651case Intrinsic::x86_sse2_comieq_sd:
8652  return DoesNotAccessMemory;
8653case Intrinsic::x86_sse2_comige_sd:
8654  return DoesNotAccessMemory;
8655case Intrinsic::x86_sse2_comigt_sd:
8656  return DoesNotAccessMemory;
8657case Intrinsic::x86_sse2_comile_sd:
8658  return DoesNotAccessMemory;
8659case Intrinsic::x86_sse2_comilt_sd:
8660  return DoesNotAccessMemory;
8661case Intrinsic::x86_sse2_comineq_sd:
8662  return DoesNotAccessMemory;
8663case Intrinsic::x86_sse2_cvtdq2pd:
8664  return DoesNotAccessMemory;
8665case Intrinsic::x86_sse2_cvtdq2ps:
8666  return DoesNotAccessMemory;
8667case Intrinsic::x86_sse2_cvtpd2dq:
8668  return DoesNotAccessMemory;
8669case Intrinsic::x86_sse2_cvtpd2ps:
8670  return DoesNotAccessMemory;
8671case Intrinsic::x86_sse2_cvtps2dq:
8672  return DoesNotAccessMemory;
8673case Intrinsic::x86_sse2_cvtps2pd:
8674  return DoesNotAccessMemory;
8675case Intrinsic::x86_sse2_cvtsd2si:
8676  return DoesNotAccessMemory;
8677case Intrinsic::x86_sse2_cvtsd2si64:
8678  return DoesNotAccessMemory;
8679case Intrinsic::x86_sse2_cvtsd2ss:
8680  return DoesNotAccessMemory;
8681case Intrinsic::x86_sse2_cvtsi2sd:
8682  return DoesNotAccessMemory;
8683case Intrinsic::x86_sse2_cvtsi642sd:
8684  return DoesNotAccessMemory;
8685case Intrinsic::x86_sse2_cvtss2sd:
8686  return DoesNotAccessMemory;
8687case Intrinsic::x86_sse2_cvttpd2dq:
8688  return DoesNotAccessMemory;
8689case Intrinsic::x86_sse2_cvttps2dq:
8690  return DoesNotAccessMemory;
8691case Intrinsic::x86_sse2_cvttsd2si:
8692  return DoesNotAccessMemory;
8693case Intrinsic::x86_sse2_cvttsd2si64:
8694  return DoesNotAccessMemory;
8695case Intrinsic::x86_sse2_div_sd:
8696  return DoesNotAccessMemory;
8697case Intrinsic::x86_sse2_max_pd:
8698  return DoesNotAccessMemory;
8699case Intrinsic::x86_sse2_max_sd:
8700  return DoesNotAccessMemory;
8701case Intrinsic::x86_sse2_min_pd:
8702  return DoesNotAccessMemory;
8703case Intrinsic::x86_sse2_min_sd:
8704  return DoesNotAccessMemory;
8705case Intrinsic::x86_sse2_movmsk_pd:
8706  return DoesNotAccessMemory;
8707case Intrinsic::x86_sse2_mul_sd:
8708  return DoesNotAccessMemory;
8709case Intrinsic::x86_sse2_packssdw_128:
8710  return DoesNotAccessMemory;
8711case Intrinsic::x86_sse2_packsswb_128:
8712  return DoesNotAccessMemory;
8713case Intrinsic::x86_sse2_packuswb_128:
8714  return DoesNotAccessMemory;
8715case Intrinsic::x86_sse2_padds_b:
8716  return DoesNotAccessMemory;
8717case Intrinsic::x86_sse2_padds_w:
8718  return DoesNotAccessMemory;
8719case Intrinsic::x86_sse2_paddus_b:
8720  return DoesNotAccessMemory;
8721case Intrinsic::x86_sse2_paddus_w:
8722  return DoesNotAccessMemory;
8723case Intrinsic::x86_sse2_pavg_b:
8724  return DoesNotAccessMemory;
8725case Intrinsic::x86_sse2_pavg_w:
8726  return DoesNotAccessMemory;
8727case Intrinsic::x86_sse2_pcmpeq_b:
8728  return DoesNotAccessMemory;
8729case Intrinsic::x86_sse2_pcmpeq_d:
8730  return DoesNotAccessMemory;
8731case Intrinsic::x86_sse2_pcmpeq_w:
8732  return DoesNotAccessMemory;
8733case Intrinsic::x86_sse2_pcmpgt_b:
8734  return DoesNotAccessMemory;
8735case Intrinsic::x86_sse2_pcmpgt_d:
8736  return DoesNotAccessMemory;
8737case Intrinsic::x86_sse2_pcmpgt_w:
8738  return DoesNotAccessMemory;
8739case Intrinsic::x86_sse2_pmadd_wd:
8740  return DoesNotAccessMemory;
8741case Intrinsic::x86_sse2_pmaxs_w:
8742  return DoesNotAccessMemory;
8743case Intrinsic::x86_sse2_pmaxu_b:
8744  return DoesNotAccessMemory;
8745case Intrinsic::x86_sse2_pmins_w:
8746  return DoesNotAccessMemory;
8747case Intrinsic::x86_sse2_pminu_b:
8748  return DoesNotAccessMemory;
8749case Intrinsic::x86_sse2_pmovmskb_128:
8750  return DoesNotAccessMemory;
8751case Intrinsic::x86_sse2_pmulh_w:
8752  return DoesNotAccessMemory;
8753case Intrinsic::x86_sse2_pmulhu_w:
8754  return DoesNotAccessMemory;
8755case Intrinsic::x86_sse2_pmulu_dq:
8756  return DoesNotAccessMemory;
8757case Intrinsic::x86_sse2_psad_bw:
8758  return DoesNotAccessMemory;
8759case Intrinsic::x86_sse2_psll_d:
8760  return DoesNotAccessMemory;
8761case Intrinsic::x86_sse2_psll_dq:
8762  return DoesNotAccessMemory;
8763case Intrinsic::x86_sse2_psll_dq_bs:
8764  return DoesNotAccessMemory;
8765case Intrinsic::x86_sse2_psll_q:
8766  return DoesNotAccessMemory;
8767case Intrinsic::x86_sse2_psll_w:
8768  return DoesNotAccessMemory;
8769case Intrinsic::x86_sse2_pslli_d:
8770  return DoesNotAccessMemory;
8771case Intrinsic::x86_sse2_pslli_q:
8772  return DoesNotAccessMemory;
8773case Intrinsic::x86_sse2_pslli_w:
8774  return DoesNotAccessMemory;
8775case Intrinsic::x86_sse2_psra_d:
8776  return DoesNotAccessMemory;
8777case Intrinsic::x86_sse2_psra_w:
8778  return DoesNotAccessMemory;
8779case Intrinsic::x86_sse2_psrai_d:
8780  return DoesNotAccessMemory;
8781case Intrinsic::x86_sse2_psrai_w:
8782  return DoesNotAccessMemory;
8783case Intrinsic::x86_sse2_psrl_d:
8784  return DoesNotAccessMemory;
8785case Intrinsic::x86_sse2_psrl_dq:
8786  return DoesNotAccessMemory;
8787case Intrinsic::x86_sse2_psrl_dq_bs:
8788  return DoesNotAccessMemory;
8789case Intrinsic::x86_sse2_psrl_q:
8790  return DoesNotAccessMemory;
8791case Intrinsic::x86_sse2_psrl_w:
8792  return DoesNotAccessMemory;
8793case Intrinsic::x86_sse2_psrli_d:
8794  return DoesNotAccessMemory;
8795case Intrinsic::x86_sse2_psrli_q:
8796  return DoesNotAccessMemory;
8797case Intrinsic::x86_sse2_psrli_w:
8798  return DoesNotAccessMemory;
8799case Intrinsic::x86_sse2_psubs_b:
8800  return DoesNotAccessMemory;
8801case Intrinsic::x86_sse2_psubs_w:
8802  return DoesNotAccessMemory;
8803case Intrinsic::x86_sse2_psubus_b:
8804  return DoesNotAccessMemory;
8805case Intrinsic::x86_sse2_psubus_w:
8806  return DoesNotAccessMemory;
8807case Intrinsic::x86_sse2_sqrt_pd:
8808  return DoesNotAccessMemory;
8809case Intrinsic::x86_sse2_sqrt_sd:
8810  return DoesNotAccessMemory;
8811case Intrinsic::x86_sse2_sub_sd:
8812  return DoesNotAccessMemory;
8813case Intrinsic::x86_sse2_ucomieq_sd:
8814  return DoesNotAccessMemory;
8815case Intrinsic::x86_sse2_ucomige_sd:
8816  return DoesNotAccessMemory;
8817case Intrinsic::x86_sse2_ucomigt_sd:
8818  return DoesNotAccessMemory;
8819case Intrinsic::x86_sse2_ucomile_sd:
8820  return DoesNotAccessMemory;
8821case Intrinsic::x86_sse2_ucomilt_sd:
8822  return DoesNotAccessMemory;
8823case Intrinsic::x86_sse2_ucomineq_sd:
8824  return DoesNotAccessMemory;
8825case Intrinsic::x86_sse3_addsub_pd:
8826  return DoesNotAccessMemory;
8827case Intrinsic::x86_sse3_addsub_ps:
8828  return DoesNotAccessMemory;
8829case Intrinsic::x86_sse3_hadd_pd:
8830  return DoesNotAccessMemory;
8831case Intrinsic::x86_sse3_hadd_ps:
8832  return DoesNotAccessMemory;
8833case Intrinsic::x86_sse3_hsub_pd:
8834  return DoesNotAccessMemory;
8835case Intrinsic::x86_sse3_hsub_ps:
8836  return DoesNotAccessMemory;
8837case Intrinsic::x86_sse3_ldu_dq:
8838  return OnlyReadsMemory;
8839case Intrinsic::x86_sse41_blendpd:
8840  return DoesNotAccessMemory;
8841case Intrinsic::x86_sse41_blendps:
8842  return DoesNotAccessMemory;
8843case Intrinsic::x86_sse41_blendvpd:
8844  return DoesNotAccessMemory;
8845case Intrinsic::x86_sse41_blendvps:
8846  return DoesNotAccessMemory;
8847case Intrinsic::x86_sse41_dppd:
8848  return DoesNotAccessMemory;
8849case Intrinsic::x86_sse41_dpps:
8850  return DoesNotAccessMemory;
8851case Intrinsic::x86_sse41_extractps:
8852  return DoesNotAccessMemory;
8853case Intrinsic::x86_sse41_insertps:
8854  return DoesNotAccessMemory;
8855case Intrinsic::x86_sse41_movntdqa:
8856  return OnlyReadsMemory;
8857case Intrinsic::x86_sse41_mpsadbw:
8858  return DoesNotAccessMemory;
8859case Intrinsic::x86_sse41_packusdw:
8860  return DoesNotAccessMemory;
8861case Intrinsic::x86_sse41_pblendvb:
8862  return DoesNotAccessMemory;
8863case Intrinsic::x86_sse41_pblendw:
8864  return DoesNotAccessMemory;
8865case Intrinsic::x86_sse41_pcmpeqq:
8866  return DoesNotAccessMemory;
8867case Intrinsic::x86_sse41_pextrb:
8868  return DoesNotAccessMemory;
8869case Intrinsic::x86_sse41_pextrd:
8870  return DoesNotAccessMemory;
8871case Intrinsic::x86_sse41_pextrq:
8872  return DoesNotAccessMemory;
8873case Intrinsic::x86_sse41_phminposuw:
8874  return DoesNotAccessMemory;
8875case Intrinsic::x86_sse41_pmaxsb:
8876  return DoesNotAccessMemory;
8877case Intrinsic::x86_sse41_pmaxsd:
8878  return DoesNotAccessMemory;
8879case Intrinsic::x86_sse41_pmaxud:
8880  return DoesNotAccessMemory;
8881case Intrinsic::x86_sse41_pmaxuw:
8882  return DoesNotAccessMemory;
8883case Intrinsic::x86_sse41_pminsb:
8884  return DoesNotAccessMemory;
8885case Intrinsic::x86_sse41_pminsd:
8886  return DoesNotAccessMemory;
8887case Intrinsic::x86_sse41_pminud:
8888  return DoesNotAccessMemory;
8889case Intrinsic::x86_sse41_pminuw:
8890  return DoesNotAccessMemory;
8891case Intrinsic::x86_sse41_pmovsxbd:
8892  return DoesNotAccessMemory;
8893case Intrinsic::x86_sse41_pmovsxbq:
8894  return DoesNotAccessMemory;
8895case Intrinsic::x86_sse41_pmovsxbw:
8896  return DoesNotAccessMemory;
8897case Intrinsic::x86_sse41_pmovsxdq:
8898  return DoesNotAccessMemory;
8899case Intrinsic::x86_sse41_pmovsxwd:
8900  return DoesNotAccessMemory;
8901case Intrinsic::x86_sse41_pmovsxwq:
8902  return DoesNotAccessMemory;
8903case Intrinsic::x86_sse41_pmovzxbd:
8904  return DoesNotAccessMemory;
8905case Intrinsic::x86_sse41_pmovzxbq:
8906  return DoesNotAccessMemory;
8907case Intrinsic::x86_sse41_pmovzxbw:
8908  return DoesNotAccessMemory;
8909case Intrinsic::x86_sse41_pmovzxdq:
8910  return DoesNotAccessMemory;
8911case Intrinsic::x86_sse41_pmovzxwd:
8912  return DoesNotAccessMemory;
8913case Intrinsic::x86_sse41_pmovzxwq:
8914  return DoesNotAccessMemory;
8915case Intrinsic::x86_sse41_pmuldq:
8916  return DoesNotAccessMemory;
8917case Intrinsic::x86_sse41_ptestc:
8918  return DoesNotAccessMemory;
8919case Intrinsic::x86_sse41_ptestnzc:
8920  return DoesNotAccessMemory;
8921case Intrinsic::x86_sse41_ptestz:
8922  return DoesNotAccessMemory;
8923case Intrinsic::x86_sse41_round_pd:
8924  return DoesNotAccessMemory;
8925case Intrinsic::x86_sse41_round_ps:
8926  return DoesNotAccessMemory;
8927case Intrinsic::x86_sse41_round_sd:
8928  return DoesNotAccessMemory;
8929case Intrinsic::x86_sse41_round_ss:
8930  return DoesNotAccessMemory;
8931case Intrinsic::x86_sse42_crc32_32_16:
8932  return DoesNotAccessMemory;
8933case Intrinsic::x86_sse42_crc32_32_32:
8934  return DoesNotAccessMemory;
8935case Intrinsic::x86_sse42_crc32_32_8:
8936  return DoesNotAccessMemory;
8937case Intrinsic::x86_sse42_crc32_64_64:
8938  return DoesNotAccessMemory;
8939case Intrinsic::x86_sse42_crc32_64_8:
8940  return DoesNotAccessMemory;
8941case Intrinsic::x86_sse42_pcmpestri128:
8942  return DoesNotAccessMemory;
8943case Intrinsic::x86_sse42_pcmpestria128:
8944  return DoesNotAccessMemory;
8945case Intrinsic::x86_sse42_pcmpestric128:
8946  return DoesNotAccessMemory;
8947case Intrinsic::x86_sse42_pcmpestrio128:
8948  return DoesNotAccessMemory;
8949case Intrinsic::x86_sse42_pcmpestris128:
8950  return DoesNotAccessMemory;
8951case Intrinsic::x86_sse42_pcmpestriz128:
8952  return DoesNotAccessMemory;
8953case Intrinsic::x86_sse42_pcmpestrm128:
8954  return DoesNotAccessMemory;
8955case Intrinsic::x86_sse42_pcmpgtq:
8956  return DoesNotAccessMemory;
8957case Intrinsic::x86_sse42_pcmpistri128:
8958  return DoesNotAccessMemory;
8959case Intrinsic::x86_sse42_pcmpistria128:
8960  return DoesNotAccessMemory;
8961case Intrinsic::x86_sse42_pcmpistric128:
8962  return DoesNotAccessMemory;
8963case Intrinsic::x86_sse42_pcmpistrio128:
8964  return DoesNotAccessMemory;
8965case Intrinsic::x86_sse42_pcmpistris128:
8966  return DoesNotAccessMemory;
8967case Intrinsic::x86_sse42_pcmpistriz128:
8968  return DoesNotAccessMemory;
8969case Intrinsic::x86_sse42_pcmpistrm128:
8970  return DoesNotAccessMemory;
8971case Intrinsic::x86_sse_add_ss:
8972  return DoesNotAccessMemory;
8973case Intrinsic::x86_sse_cmp_ps:
8974  return DoesNotAccessMemory;
8975case Intrinsic::x86_sse_cmp_ss:
8976  return DoesNotAccessMemory;
8977case Intrinsic::x86_sse_comieq_ss:
8978  return DoesNotAccessMemory;
8979case Intrinsic::x86_sse_comige_ss:
8980  return DoesNotAccessMemory;
8981case Intrinsic::x86_sse_comigt_ss:
8982  return DoesNotAccessMemory;
8983case Intrinsic::x86_sse_comile_ss:
8984  return DoesNotAccessMemory;
8985case Intrinsic::x86_sse_comilt_ss:
8986  return DoesNotAccessMemory;
8987case Intrinsic::x86_sse_comineq_ss:
8988  return DoesNotAccessMemory;
8989case Intrinsic::x86_sse_cvtpd2pi:
8990  return DoesNotAccessMemory;
8991case Intrinsic::x86_sse_cvtpi2pd:
8992  return DoesNotAccessMemory;
8993case Intrinsic::x86_sse_cvtpi2ps:
8994  return DoesNotAccessMemory;
8995case Intrinsic::x86_sse_cvtps2pi:
8996  return DoesNotAccessMemory;
8997case Intrinsic::x86_sse_cvtsi2ss:
8998  return DoesNotAccessMemory;
8999case Intrinsic::x86_sse_cvtsi642ss:
9000  return DoesNotAccessMemory;
9001case Intrinsic::x86_sse_cvtss2si:
9002  return DoesNotAccessMemory;
9003case Intrinsic::x86_sse_cvtss2si64:
9004  return DoesNotAccessMemory;
9005case Intrinsic::x86_sse_cvttpd2pi:
9006  return DoesNotAccessMemory;
9007case Intrinsic::x86_sse_cvttps2pi:
9008  return DoesNotAccessMemory;
9009case Intrinsic::x86_sse_cvttss2si:
9010  return DoesNotAccessMemory;
9011case Intrinsic::x86_sse_cvttss2si64:
9012  return DoesNotAccessMemory;
9013case Intrinsic::x86_sse_div_ss:
9014  return DoesNotAccessMemory;
9015case Intrinsic::x86_sse_max_ps:
9016  return DoesNotAccessMemory;
9017case Intrinsic::x86_sse_max_ss:
9018  return DoesNotAccessMemory;
9019case Intrinsic::x86_sse_min_ps:
9020  return DoesNotAccessMemory;
9021case Intrinsic::x86_sse_min_ss:
9022  return DoesNotAccessMemory;
9023case Intrinsic::x86_sse_movmsk_ps:
9024  return DoesNotAccessMemory;
9025case Intrinsic::x86_sse_mul_ss:
9026  return DoesNotAccessMemory;
9027case Intrinsic::x86_sse_pshuf_w:
9028  return DoesNotAccessMemory;
9029case Intrinsic::x86_sse_rcp_ps:
9030  return DoesNotAccessMemory;
9031case Intrinsic::x86_sse_rcp_ss:
9032  return DoesNotAccessMemory;
9033case Intrinsic::x86_sse_rsqrt_ps:
9034  return DoesNotAccessMemory;
9035case Intrinsic::x86_sse_rsqrt_ss:
9036  return DoesNotAccessMemory;
9037case Intrinsic::x86_sse_sqrt_ps:
9038  return DoesNotAccessMemory;
9039case Intrinsic::x86_sse_sqrt_ss:
9040  return DoesNotAccessMemory;
9041case Intrinsic::x86_sse_sub_ss:
9042  return DoesNotAccessMemory;
9043case Intrinsic::x86_sse_ucomieq_ss:
9044  return DoesNotAccessMemory;
9045case Intrinsic::x86_sse_ucomige_ss:
9046  return DoesNotAccessMemory;
9047case Intrinsic::x86_sse_ucomigt_ss:
9048  return DoesNotAccessMemory;
9049case Intrinsic::x86_sse_ucomile_ss:
9050  return DoesNotAccessMemory;
9051case Intrinsic::x86_sse_ucomilt_ss:
9052  return DoesNotAccessMemory;
9053case Intrinsic::x86_sse_ucomineq_ss:
9054  return DoesNotAccessMemory;
9055case Intrinsic::x86_ssse3_pabs_b:
9056  return DoesNotAccessMemory;
9057case Intrinsic::x86_ssse3_pabs_b_128:
9058  return DoesNotAccessMemory;
9059case Intrinsic::x86_ssse3_pabs_d:
9060  return DoesNotAccessMemory;
9061case Intrinsic::x86_ssse3_pabs_d_128:
9062  return DoesNotAccessMemory;
9063case Intrinsic::x86_ssse3_pabs_w:
9064  return DoesNotAccessMemory;
9065case Intrinsic::x86_ssse3_pabs_w_128:
9066  return DoesNotAccessMemory;
9067case Intrinsic::x86_ssse3_phadd_d:
9068  return DoesNotAccessMemory;
9069case Intrinsic::x86_ssse3_phadd_d_128:
9070  return DoesNotAccessMemory;
9071case Intrinsic::x86_ssse3_phadd_sw:
9072  return DoesNotAccessMemory;
9073case Intrinsic::x86_ssse3_phadd_sw_128:
9074  return DoesNotAccessMemory;
9075case Intrinsic::x86_ssse3_phadd_w:
9076  return DoesNotAccessMemory;
9077case Intrinsic::x86_ssse3_phadd_w_128:
9078  return DoesNotAccessMemory;
9079case Intrinsic::x86_ssse3_phsub_d:
9080  return DoesNotAccessMemory;
9081case Intrinsic::x86_ssse3_phsub_d_128:
9082  return DoesNotAccessMemory;
9083case Intrinsic::x86_ssse3_phsub_sw:
9084  return DoesNotAccessMemory;
9085case Intrinsic::x86_ssse3_phsub_sw_128:
9086  return DoesNotAccessMemory;
9087case Intrinsic::x86_ssse3_phsub_w:
9088  return DoesNotAccessMemory;
9089case Intrinsic::x86_ssse3_phsub_w_128:
9090  return DoesNotAccessMemory;
9091case Intrinsic::x86_ssse3_pmadd_ub_sw:
9092  return DoesNotAccessMemory;
9093case Intrinsic::x86_ssse3_pmadd_ub_sw_128:
9094  return DoesNotAccessMemory;
9095case Intrinsic::x86_ssse3_pmul_hr_sw:
9096  return DoesNotAccessMemory;
9097case Intrinsic::x86_ssse3_pmul_hr_sw_128:
9098  return DoesNotAccessMemory;
9099case Intrinsic::x86_ssse3_pshuf_b:
9100  return DoesNotAccessMemory;
9101case Intrinsic::x86_ssse3_pshuf_b_128:
9102  return DoesNotAccessMemory;
9103case Intrinsic::x86_ssse3_psign_b:
9104  return DoesNotAccessMemory;
9105case Intrinsic::x86_ssse3_psign_b_128:
9106  return DoesNotAccessMemory;
9107case Intrinsic::x86_ssse3_psign_d:
9108  return DoesNotAccessMemory;
9109case Intrinsic::x86_ssse3_psign_d_128:
9110  return DoesNotAccessMemory;
9111case Intrinsic::x86_ssse3_psign_w:
9112  return DoesNotAccessMemory;
9113case Intrinsic::x86_ssse3_psign_w_128:
9114  return DoesNotAccessMemory;
9115}
9116#endif // GET_INTRINSIC_MODREF_BEHAVIOR
9117
9118// Get the GCC builtin that corresponds to an LLVM intrinsic.
9119#ifdef GET_GCC_BUILTIN_NAME
9120  switch (F->getIntrinsicID()) {
9121  default: BuiltinName = ""; break;
9122  case Intrinsic::adjust_trampoline: BuiltinName = "__builtin_adjust_trampoline"; break;
9123  case Intrinsic::convert_from_fp16: BuiltinName = "__gnu_h2f_ieee"; break;
9124  case Intrinsic::convert_to_fp16: BuiltinName = "__gnu_f2h_ieee"; break;
9125  case Intrinsic::eh_unwind_init: BuiltinName = "__builtin_unwind_init"; break;
9126  case Intrinsic::flt_rounds: BuiltinName = "__builtin_flt_rounds"; break;
9127  case Intrinsic::init_trampoline: BuiltinName = "__builtin_init_trampoline"; break;
9128  case Intrinsic::objectsize: BuiltinName = "__builtin_object_size"; break;
9129  case Intrinsic::stackrestore: BuiltinName = "__builtin_stack_restore"; break;
9130  case Intrinsic::stacksave: BuiltinName = "__builtin_stack_save"; break;
9131  case Intrinsic::trap: BuiltinName = "__builtin_trap"; break;
9132  case Intrinsic::x86_3dnow_pavgusb: BuiltinName = "__builtin_ia32_pavgusb"; break;
9133  case Intrinsic::x86_3dnow_pf2id: BuiltinName = "__builtin_ia32_pf2id"; break;
9134  case Intrinsic::x86_3dnow_pfacc: BuiltinName = "__builtin_ia32_pfacc"; break;
9135  case Intrinsic::x86_3dnow_pfadd: BuiltinName = "__builtin_ia32_pfadd"; break;
9136  case Intrinsic::x86_3dnow_pfcmpeq: BuiltinName = "__builtin_ia32_pfcmpeq"; break;
9137  case Intrinsic::x86_3dnow_pfcmpge: BuiltinName = "__builtin_ia32_pfcmpge"; break;
9138  case Intrinsic::x86_3dnow_pfcmpgt: BuiltinName = "__builtin_ia32_pfcmpgt"; break;
9139  case Intrinsic::x86_3dnow_pfmax: BuiltinName = "__builtin_ia32_pfmax"; break;
9140  case Intrinsic::x86_3dnow_pfmin: BuiltinName = "__builtin_ia32_pfmin"; break;
9141  case Intrinsic::x86_3dnow_pfmul: BuiltinName = "__builtin_ia32_pfmul"; break;
9142  case Intrinsic::x86_3dnow_pfrcp: BuiltinName = "__builtin_ia32_pfrcp"; break;
9143  case Intrinsic::x86_3dnow_pfrcpit1: BuiltinName = "__builtin_ia32_pfrcpit1"; break;
9144  case Intrinsic::x86_3dnow_pfrcpit2: BuiltinName = "__builtin_ia32_pfrcpit2"; break;
9145  case Intrinsic::x86_3dnow_pfrsqit1: BuiltinName = "__builtin_ia32_pfrsqit1"; break;
9146  case Intrinsic::x86_3dnow_pfrsqrt: BuiltinName = "__builtin_ia32_pfrsqrt"; break;
9147  case Intrinsic::x86_3dnow_pfsub: BuiltinName = "__builtin_ia32_pfsub"; break;
9148  case Intrinsic::x86_3dnow_pfsubr: BuiltinName = "__builtin_ia32_pfsubr"; break;
9149  case Intrinsic::x86_3dnow_pi2fd: BuiltinName = "__builtin_ia32_pi2fd"; break;
9150  case Intrinsic::x86_3dnow_pmulhrw: BuiltinName = "__builtin_ia32_pmulhrw"; break;
9151  case Intrinsic::x86_3dnowa_pf2iw: BuiltinName = "__builtin_ia32_pf2iw"; break;
9152  case Intrinsic::x86_3dnowa_pfnacc: BuiltinName = "__builtin_ia32_pfnacc"; break;
9153  case Intrinsic::x86_3dnowa_pfpnacc: BuiltinName = "__builtin_ia32_pfpnacc"; break;
9154  case Intrinsic::x86_3dnowa_pi2fw: BuiltinName = "__builtin_ia32_pi2fw"; break;
9155  case Intrinsic::x86_aesni_aesdec: BuiltinName = "__builtin_ia32_aesdec128"; break;
9156  case Intrinsic::x86_aesni_aesdeclast: BuiltinName = "__builtin_ia32_aesdeclast128"; break;
9157  case Intrinsic::x86_aesni_aesenc: BuiltinName = "__builtin_ia32_aesenc128"; break;
9158  case Intrinsic::x86_aesni_aesenclast: BuiltinName = "__builtin_ia32_aesenclast128"; break;
9159  case Intrinsic::x86_aesni_aesimc: BuiltinName = "__builtin_ia32_aesimc128"; break;
9160  case Intrinsic::x86_aesni_aeskeygenassist: BuiltinName = "__builtin_ia32_aeskeygenassist128"; break;
9161  case Intrinsic::x86_avx_addsub_pd_256: BuiltinName = "__builtin_ia32_addsubpd256"; break;
9162  case Intrinsic::x86_avx_addsub_ps_256: BuiltinName = "__builtin_ia32_addsubps256"; break;
9163  case Intrinsic::x86_avx_blend_pd_256: BuiltinName = "__builtin_ia32_blendpd256"; break;
9164  case Intrinsic::x86_avx_blend_ps_256: BuiltinName = "__builtin_ia32_blendps256"; break;
9165  case Intrinsic::x86_avx_blendv_pd_256: BuiltinName = "__builtin_ia32_blendvpd256"; break;
9166  case Intrinsic::x86_avx_blendv_ps_256: BuiltinName = "__builtin_ia32_blendvps256"; break;
9167  case Intrinsic::x86_avx_cmp_pd_256: BuiltinName = "__builtin_ia32_cmppd256"; break;
9168  case Intrinsic::x86_avx_cmp_ps_256: BuiltinName = "__builtin_ia32_cmpps256"; break;
9169  case Intrinsic::x86_avx_cvt_pd2_ps_256: BuiltinName = "__builtin_ia32_cvtpd2ps256"; break;
9170  case Intrinsic::x86_avx_cvt_pd2dq_256: BuiltinName = "__builtin_ia32_cvtpd2dq256"; break;
9171  case Intrinsic::x86_avx_cvt_ps2_pd_256: BuiltinName = "__builtin_ia32_cvtps2pd256"; break;
9172  case Intrinsic::x86_avx_cvt_ps2dq_256: BuiltinName = "__builtin_ia32_cvtps2dq256"; break;
9173  case Intrinsic::x86_avx_cvtdq2_pd_256: BuiltinName = "__builtin_ia32_cvtdq2pd256"; break;
9174  case Intrinsic::x86_avx_cvtdq2_ps_256: BuiltinName = "__builtin_ia32_cvtdq2ps256"; break;
9175  case Intrinsic::x86_avx_cvtt_pd2dq_256: BuiltinName = "__builtin_ia32_cvttpd2dq256"; break;
9176  case Intrinsic::x86_avx_cvtt_ps2dq_256: BuiltinName = "__builtin_ia32_cvttps2dq256"; break;
9177  case Intrinsic::x86_avx_dp_ps_256: BuiltinName = "__builtin_ia32_dpps256"; break;
9178  case Intrinsic::x86_avx_hadd_pd_256: BuiltinName = "__builtin_ia32_haddpd256"; break;
9179  case Intrinsic::x86_avx_hadd_ps_256: BuiltinName = "__builtin_ia32_haddps256"; break;
9180  case Intrinsic::x86_avx_hsub_pd_256: BuiltinName = "__builtin_ia32_hsubpd256"; break;
9181  case Intrinsic::x86_avx_hsub_ps_256: BuiltinName = "__builtin_ia32_hsubps256"; break;
9182  case Intrinsic::x86_avx_ldu_dq_256: BuiltinName = "__builtin_ia32_lddqu256"; break;
9183  case Intrinsic::x86_avx_loadu_dq_256: BuiltinName = "__builtin_ia32_loaddqu256"; break;
9184  case Intrinsic::x86_avx_loadu_pd_256: BuiltinName = "__builtin_ia32_loadupd256"; break;
9185  case Intrinsic::x86_avx_loadu_ps_256: BuiltinName = "__builtin_ia32_loadups256"; break;
9186  case Intrinsic::x86_avx_maskload_pd: BuiltinName = "__builtin_ia32_maskloadpd"; break;
9187  case Intrinsic::x86_avx_maskload_pd_256: BuiltinName = "__builtin_ia32_maskloadpd256"; break;
9188  case Intrinsic::x86_avx_maskload_ps: BuiltinName = "__builtin_ia32_maskloadps"; break;
9189  case Intrinsic::x86_avx_maskload_ps_256: BuiltinName = "__builtin_ia32_maskloadps256"; break;
9190  case Intrinsic::x86_avx_maskstore_pd: BuiltinName = "__builtin_ia32_maskstorepd"; break;
9191  case Intrinsic::x86_avx_maskstore_pd_256: BuiltinName = "__builtin_ia32_maskstorepd256"; break;
9192  case Intrinsic::x86_avx_maskstore_ps: BuiltinName = "__builtin_ia32_maskstoreps"; break;
9193  case Intrinsic::x86_avx_maskstore_ps_256: BuiltinName = "__builtin_ia32_maskstoreps256"; break;
9194  case Intrinsic::x86_avx_max_pd_256: BuiltinName = "__builtin_ia32_maxpd256"; break;
9195  case Intrinsic::x86_avx_max_ps_256: BuiltinName = "__builtin_ia32_maxps256"; break;
9196  case Intrinsic::x86_avx_min_pd_256: BuiltinName = "__builtin_ia32_minpd256"; break;
9197  case Intrinsic::x86_avx_min_ps_256: BuiltinName = "__builtin_ia32_minps256"; break;
9198  case Intrinsic::x86_avx_movmsk_pd_256: BuiltinName = "__builtin_ia32_movmskpd256"; break;
9199  case Intrinsic::x86_avx_movmsk_ps_256: BuiltinName = "__builtin_ia32_movmskps256"; break;
9200  case Intrinsic::x86_avx_movnt_dq_256: BuiltinName = "__builtin_ia32_movntdq256"; break;
9201  case Intrinsic::x86_avx_movnt_pd_256: BuiltinName = "__builtin_ia32_movntpd256"; break;
9202  case Intrinsic::x86_avx_movnt_ps_256: BuiltinName = "__builtin_ia32_movntps256"; break;
9203  case Intrinsic::x86_avx_ptestc_256: BuiltinName = "__builtin_ia32_ptestc256"; break;
9204  case Intrinsic::x86_avx_ptestnzc_256: BuiltinName = "__builtin_ia32_ptestnzc256"; break;
9205  case Intrinsic::x86_avx_ptestz_256: BuiltinName = "__builtin_ia32_ptestz256"; break;
9206  case Intrinsic::x86_avx_rcp_ps_256: BuiltinName = "__builtin_ia32_rcpps256"; break;
9207  case Intrinsic::x86_avx_round_pd_256: BuiltinName = "__builtin_ia32_roundpd256"; break;
9208  case Intrinsic::x86_avx_round_ps_256: BuiltinName = "__builtin_ia32_roundps256"; break;
9209  case Intrinsic::x86_avx_rsqrt_ps_256: BuiltinName = "__builtin_ia32_rsqrtps256"; break;
9210  case Intrinsic::x86_avx_sqrt_pd_256: BuiltinName = "__builtin_ia32_sqrtpd256"; break;
9211  case Intrinsic::x86_avx_sqrt_ps_256: BuiltinName = "__builtin_ia32_sqrtps256"; break;
9212  case Intrinsic::x86_avx_storeu_dq_256: BuiltinName = "__builtin_ia32_storedqu256"; break;
9213  case Intrinsic::x86_avx_storeu_pd_256: BuiltinName = "__builtin_ia32_storeupd256"; break;
9214  case Intrinsic::x86_avx_storeu_ps_256: BuiltinName = "__builtin_ia32_storeups256"; break;
9215  case Intrinsic::x86_avx_vbroadcast_sd_256: BuiltinName = "__builtin_ia32_vbroadcastsd256"; break;
9216  case Intrinsic::x86_avx_vbroadcastf128_pd_256: BuiltinName = "__builtin_ia32_vbroadcastf128_pd256"; break;
9217  case Intrinsic::x86_avx_vbroadcastf128_ps_256: BuiltinName = "__builtin_ia32_vbroadcastf128_ps256"; break;
9218  case Intrinsic::x86_avx_vbroadcastss: BuiltinName = "__builtin_ia32_vbroadcastss"; break;
9219  case Intrinsic::x86_avx_vbroadcastss_256: BuiltinName = "__builtin_ia32_vbroadcastss256"; break;
9220  case Intrinsic::x86_avx_vextractf128_pd_256: BuiltinName = "__builtin_ia32_vextractf128_pd256"; break;
9221  case Intrinsic::x86_avx_vextractf128_ps_256: BuiltinName = "__builtin_ia32_vextractf128_ps256"; break;
9222  case Intrinsic::x86_avx_vextractf128_si_256: BuiltinName = "__builtin_ia32_vextractf128_si256"; break;
9223  case Intrinsic::x86_avx_vinsertf128_pd_256: BuiltinName = "__builtin_ia32_vinsertf128_pd256"; break;
9224  case Intrinsic::x86_avx_vinsertf128_ps_256: BuiltinName = "__builtin_ia32_vinsertf128_ps256"; break;
9225  case Intrinsic::x86_avx_vinsertf128_si_256: BuiltinName = "__builtin_ia32_vinsertf128_si256"; break;
9226  case Intrinsic::x86_avx_vperm2f128_pd_256: BuiltinName = "__builtin_ia32_vperm2f128_pd256"; break;
9227  case Intrinsic::x86_avx_vperm2f128_ps_256: BuiltinName = "__builtin_ia32_vperm2f128_ps256"; break;
9228  case Intrinsic::x86_avx_vperm2f128_si_256: BuiltinName = "__builtin_ia32_vperm2f128_si256"; break;
9229  case Intrinsic::x86_avx_vpermil_pd: BuiltinName = "__builtin_ia32_vpermilpd"; break;
9230  case Intrinsic::x86_avx_vpermil_pd_256: BuiltinName = "__builtin_ia32_vpermilpd256"; break;
9231  case Intrinsic::x86_avx_vpermil_ps: BuiltinName = "__builtin_ia32_vpermilps"; break;
9232  case Intrinsic::x86_avx_vpermil_ps_256: BuiltinName = "__builtin_ia32_vpermilps256"; break;
9233  case Intrinsic::x86_avx_vpermilvar_pd: BuiltinName = "__builtin_ia32_vpermilvarpd"; break;
9234  case Intrinsic::x86_avx_vpermilvar_pd_256: BuiltinName = "__builtin_ia32_vpermilvarpd256"; break;
9235  case Intrinsic::x86_avx_vpermilvar_ps: BuiltinName = "__builtin_ia32_vpermilvarps"; break;
9236  case Intrinsic::x86_avx_vpermilvar_ps_256: BuiltinName = "__builtin_ia32_vpermilvarps256"; break;
9237  case Intrinsic::x86_avx_vtestc_pd: BuiltinName = "__builtin_ia32_vtestcpd"; break;
9238  case Intrinsic::x86_avx_vtestc_pd_256: BuiltinName = "__builtin_ia32_vtestcpd256"; break;
9239  case Intrinsic::x86_avx_vtestc_ps: BuiltinName = "__builtin_ia32_vtestcps"; break;
9240  case Intrinsic::x86_avx_vtestc_ps_256: BuiltinName = "__builtin_ia32_vtestcps256"; break;
9241  case Intrinsic::x86_avx_vtestnzc_pd: BuiltinName = "__builtin_ia32_vtestnzcpd"; break;
9242  case Intrinsic::x86_avx_vtestnzc_pd_256: BuiltinName = "__builtin_ia32_vtestnzcpd256"; break;
9243  case Intrinsic::x86_avx_vtestnzc_ps: BuiltinName = "__builtin_ia32_vtestnzcps"; break;
9244  case Intrinsic::x86_avx_vtestnzc_ps_256: BuiltinName = "__builtin_ia32_vtestnzcps256"; break;
9245  case Intrinsic::x86_avx_vtestz_pd: BuiltinName = "__builtin_ia32_vtestzpd"; break;
9246  case Intrinsic::x86_avx_vtestz_pd_256: BuiltinName = "__builtin_ia32_vtestzpd256"; break;
9247  case Intrinsic::x86_avx_vtestz_ps: BuiltinName = "__builtin_ia32_vtestzps"; break;
9248  case Intrinsic::x86_avx_vtestz_ps_256: BuiltinName = "__builtin_ia32_vtestzps256"; break;
9249  case Intrinsic::x86_avx_vzeroall: BuiltinName = "__builtin_ia32_vzeroall"; break;
9250  case Intrinsic::x86_avx_vzeroupper: BuiltinName = "__builtin_ia32_vzeroupper"; break;
9251  case Intrinsic::x86_mmx_emms: BuiltinName = "__builtin_ia32_emms"; break;
9252  case Intrinsic::x86_mmx_femms: BuiltinName = "__builtin_ia32_femms"; break;
9253  case Intrinsic::x86_mmx_maskmovq: BuiltinName = "__builtin_ia32_maskmovq"; break;
9254  case Intrinsic::x86_mmx_movnt_dq: BuiltinName = "__builtin_ia32_movntq"; break;
9255  case Intrinsic::x86_mmx_packssdw: BuiltinName = "__builtin_ia32_packssdw"; break;
9256  case Intrinsic::x86_mmx_packsswb: BuiltinName = "__builtin_ia32_packsswb"; break;
9257  case Intrinsic::x86_mmx_packuswb: BuiltinName = "__builtin_ia32_packuswb"; break;
9258  case Intrinsic::x86_mmx_padd_b: BuiltinName = "__builtin_ia32_paddb"; break;
9259  case Intrinsic::x86_mmx_padd_d: BuiltinName = "__builtin_ia32_paddd"; break;
9260  case Intrinsic::x86_mmx_padd_q: BuiltinName = "__builtin_ia32_paddq"; break;
9261  case Intrinsic::x86_mmx_padd_w: BuiltinName = "__builtin_ia32_paddw"; break;
9262  case Intrinsic::x86_mmx_padds_b: BuiltinName = "__builtin_ia32_paddsb"; break;
9263  case Intrinsic::x86_mmx_padds_w: BuiltinName = "__builtin_ia32_paddsw"; break;
9264  case Intrinsic::x86_mmx_paddus_b: BuiltinName = "__builtin_ia32_paddusb"; break;
9265  case Intrinsic::x86_mmx_paddus_w: BuiltinName = "__builtin_ia32_paddusw"; break;
9266  case Intrinsic::x86_mmx_palignr_b: BuiltinName = "__builtin_ia32_palignr"; break;
9267  case Intrinsic::x86_mmx_pand: BuiltinName = "__builtin_ia32_pand"; break;
9268  case Intrinsic::x86_mmx_pandn: BuiltinName = "__builtin_ia32_pandn"; break;
9269  case Intrinsic::x86_mmx_pavg_b: BuiltinName = "__builtin_ia32_pavgb"; break;
9270  case Intrinsic::x86_mmx_pavg_w: BuiltinName = "__builtin_ia32_pavgw"; break;
9271  case Intrinsic::x86_mmx_pcmpeq_b: BuiltinName = "__builtin_ia32_pcmpeqb"; break;
9272  case Intrinsic::x86_mmx_pcmpeq_d: BuiltinName = "__builtin_ia32_pcmpeqd"; break;
9273  case Intrinsic::x86_mmx_pcmpeq_w: BuiltinName = "__builtin_ia32_pcmpeqw"; break;
9274  case Intrinsic::x86_mmx_pcmpgt_b: BuiltinName = "__builtin_ia32_pcmpgtb"; break;
9275  case Intrinsic::x86_mmx_pcmpgt_d: BuiltinName = "__builtin_ia32_pcmpgtd"; break;
9276  case Intrinsic::x86_mmx_pcmpgt_w: BuiltinName = "__builtin_ia32_pcmpgtw"; break;
9277  case Intrinsic::x86_mmx_pextr_w: BuiltinName = "__builtin_ia32_vec_ext_v4hi"; break;
9278  case Intrinsic::x86_mmx_pinsr_w: BuiltinName = "__builtin_ia32_vec_set_v4hi"; break;
9279  case Intrinsic::x86_mmx_pmadd_wd: BuiltinName = "__builtin_ia32_pmaddwd"; break;
9280  case Intrinsic::x86_mmx_pmaxs_w: BuiltinName = "__builtin_ia32_pmaxsw"; break;
9281  case Intrinsic::x86_mmx_pmaxu_b: BuiltinName = "__builtin_ia32_pmaxub"; break;
9282  case Intrinsic::x86_mmx_pmins_w: BuiltinName = "__builtin_ia32_pminsw"; break;
9283  case Intrinsic::x86_mmx_pminu_b: BuiltinName = "__builtin_ia32_pminub"; break;
9284  case Intrinsic::x86_mmx_pmovmskb: BuiltinName = "__builtin_ia32_pmovmskb"; break;
9285  case Intrinsic::x86_mmx_pmulh_w: BuiltinName = "__builtin_ia32_pmulhw"; break;
9286  case Intrinsic::x86_mmx_pmulhu_w: BuiltinName = "__builtin_ia32_pmulhuw"; break;
9287  case Intrinsic::x86_mmx_pmull_w: BuiltinName = "__builtin_ia32_pmullw"; break;
9288  case Intrinsic::x86_mmx_pmulu_dq: BuiltinName = "__builtin_ia32_pmuludq"; break;
9289  case Intrinsic::x86_mmx_por: BuiltinName = "__builtin_ia32_por"; break;
9290  case Intrinsic::x86_mmx_psad_bw: BuiltinName = "__builtin_ia32_psadbw"; break;
9291  case Intrinsic::x86_mmx_psll_d: BuiltinName = "__builtin_ia32_pslld"; break;
9292  case Intrinsic::x86_mmx_psll_q: BuiltinName = "__builtin_ia32_psllq"; break;
9293  case Intrinsic::x86_mmx_psll_w: BuiltinName = "__builtin_ia32_psllw"; break;
9294  case Intrinsic::x86_mmx_pslli_d: BuiltinName = "__builtin_ia32_pslldi"; break;
9295  case Intrinsic::x86_mmx_pslli_q: BuiltinName = "__builtin_ia32_psllqi"; break;
9296  case Intrinsic::x86_mmx_pslli_w: BuiltinName = "__builtin_ia32_psllwi"; break;
9297  case Intrinsic::x86_mmx_psra_d: BuiltinName = "__builtin_ia32_psrad"; break;
9298  case Intrinsic::x86_mmx_psra_w: BuiltinName = "__builtin_ia32_psraw"; break;
9299  case Intrinsic::x86_mmx_psrai_d: BuiltinName = "__builtin_ia32_psradi"; break;
9300  case Intrinsic::x86_mmx_psrai_w: BuiltinName = "__builtin_ia32_psrawi"; break;
9301  case Intrinsic::x86_mmx_psrl_d: BuiltinName = "__builtin_ia32_psrld"; break;
9302  case Intrinsic::x86_mmx_psrl_q: BuiltinName = "__builtin_ia32_psrlq"; break;
9303  case Intrinsic::x86_mmx_psrl_w: BuiltinName = "__builtin_ia32_psrlw"; break;
9304  case Intrinsic::x86_mmx_psrli_d: BuiltinName = "__builtin_ia32_psrldi"; break;
9305  case Intrinsic::x86_mmx_psrli_q: BuiltinName = "__builtin_ia32_psrlqi"; break;
9306  case Intrinsic::x86_mmx_psrli_w: BuiltinName = "__builtin_ia32_psrlwi"; break;
9307  case Intrinsic::x86_mmx_psub_b: BuiltinName = "__builtin_ia32_psubb"; break;
9308  case Intrinsic::x86_mmx_psub_d: BuiltinName = "__builtin_ia32_psubd"; break;
9309  case Intrinsic::x86_mmx_psub_q: BuiltinName = "__builtin_ia32_psubq"; break;
9310  case Intrinsic::x86_mmx_psub_w: BuiltinName = "__builtin_ia32_psubw"; break;
9311  case Intrinsic::x86_mmx_psubs_b: BuiltinName = "__builtin_ia32_psubsb"; break;
9312  case Intrinsic::x86_mmx_psubs_w: BuiltinName = "__builtin_ia32_psubsw"; break;
9313  case Intrinsic::x86_mmx_psubus_b: BuiltinName = "__builtin_ia32_psubusb"; break;
9314  case Intrinsic::x86_mmx_psubus_w: BuiltinName = "__builtin_ia32_psubusw"; break;
9315  case Intrinsic::x86_mmx_punpckhbw: BuiltinName = "__builtin_ia32_punpckhbw"; break;
9316  case Intrinsic::x86_mmx_punpckhdq: BuiltinName = "__builtin_ia32_punpckhdq"; break;
9317  case Intrinsic::x86_mmx_punpckhwd: BuiltinName = "__builtin_ia32_punpckhwd"; break;
9318  case Intrinsic::x86_mmx_punpcklbw: BuiltinName = "__builtin_ia32_punpcklbw"; break;
9319  case Intrinsic::x86_mmx_punpckldq: BuiltinName = "__builtin_ia32_punpckldq"; break;
9320  case Intrinsic::x86_mmx_punpcklwd: BuiltinName = "__builtin_ia32_punpcklwd"; break;
9321  case Intrinsic::x86_mmx_pxor: BuiltinName = "__builtin_ia32_pxor"; break;
9322  case Intrinsic::x86_sse2_add_sd: BuiltinName = "__builtin_ia32_addsd"; break;
9323  case Intrinsic::x86_sse2_clflush: BuiltinName = "__builtin_ia32_clflush"; break;
9324  case Intrinsic::x86_sse2_comieq_sd: BuiltinName = "__builtin_ia32_comisdeq"; break;
9325  case Intrinsic::x86_sse2_comige_sd: BuiltinName = "__builtin_ia32_comisdge"; break;
9326  case Intrinsic::x86_sse2_comigt_sd: BuiltinName = "__builtin_ia32_comisdgt"; break;
9327  case Intrinsic::x86_sse2_comile_sd: BuiltinName = "__builtin_ia32_comisdle"; break;
9328  case Intrinsic::x86_sse2_comilt_sd: BuiltinName = "__builtin_ia32_comisdlt"; break;
9329  case Intrinsic::x86_sse2_comineq_sd: BuiltinName = "__builtin_ia32_comisdneq"; break;
9330  case Intrinsic::x86_sse2_cvtdq2pd: BuiltinName = "__builtin_ia32_cvtdq2pd"; break;
9331  case Intrinsic::x86_sse2_cvtdq2ps: BuiltinName = "__builtin_ia32_cvtdq2ps"; break;
9332  case Intrinsic::x86_sse2_cvtpd2dq: BuiltinName = "__builtin_ia32_cvtpd2dq"; break;
9333  case Intrinsic::x86_sse2_cvtpd2ps: BuiltinName = "__builtin_ia32_cvtpd2ps"; break;
9334  case Intrinsic::x86_sse2_cvtps2dq: BuiltinName = "__builtin_ia32_cvtps2dq"; break;
9335  case Intrinsic::x86_sse2_cvtps2pd: BuiltinName = "__builtin_ia32_cvtps2pd"; break;
9336  case Intrinsic::x86_sse2_cvtsd2si: BuiltinName = "__builtin_ia32_cvtsd2si"; break;
9337  case Intrinsic::x86_sse2_cvtsd2si64: BuiltinName = "__builtin_ia32_cvtsd2si64"; break;
9338  case Intrinsic::x86_sse2_cvtsd2ss: BuiltinName = "__builtin_ia32_cvtsd2ss"; break;
9339  case Intrinsic::x86_sse2_cvtsi2sd: BuiltinName = "__builtin_ia32_cvtsi2sd"; break;
9340  case Intrinsic::x86_sse2_cvtsi642sd: BuiltinName = "__builtin_ia32_cvtsi642sd"; break;
9341  case Intrinsic::x86_sse2_cvtss2sd: BuiltinName = "__builtin_ia32_cvtss2sd"; break;
9342  case Intrinsic::x86_sse2_cvttpd2dq: BuiltinName = "__builtin_ia32_cvttpd2dq"; break;
9343  case Intrinsic::x86_sse2_cvttps2dq: BuiltinName = "__builtin_ia32_cvttps2dq"; break;
9344  case Intrinsic::x86_sse2_cvttsd2si: BuiltinName = "__builtin_ia32_cvttsd2si"; break;
9345  case Intrinsic::x86_sse2_cvttsd2si64: BuiltinName = "__builtin_ia32_cvttsd2si64"; break;
9346  case Intrinsic::x86_sse2_div_sd: BuiltinName = "__builtin_ia32_divsd"; break;
9347  case Intrinsic::x86_sse2_lfence: BuiltinName = "__builtin_ia32_lfence"; break;
9348  case Intrinsic::x86_sse2_maskmov_dqu: BuiltinName = "__builtin_ia32_maskmovdqu"; break;
9349  case Intrinsic::x86_sse2_max_pd: BuiltinName = "__builtin_ia32_maxpd"; break;
9350  case Intrinsic::x86_sse2_max_sd: BuiltinName = "__builtin_ia32_maxsd"; break;
9351  case Intrinsic::x86_sse2_mfence: BuiltinName = "__builtin_ia32_mfence"; break;
9352  case Intrinsic::x86_sse2_min_pd: BuiltinName = "__builtin_ia32_minpd"; break;
9353  case Intrinsic::x86_sse2_min_sd: BuiltinName = "__builtin_ia32_minsd"; break;
9354  case Intrinsic::x86_sse2_movmsk_pd: BuiltinName = "__builtin_ia32_movmskpd"; break;
9355  case Intrinsic::x86_sse2_mul_sd: BuiltinName = "__builtin_ia32_mulsd"; break;
9356  case Intrinsic::x86_sse2_packssdw_128: BuiltinName = "__builtin_ia32_packssdw128"; break;
9357  case Intrinsic::x86_sse2_packsswb_128: BuiltinName = "__builtin_ia32_packsswb128"; break;
9358  case Intrinsic::x86_sse2_packuswb_128: BuiltinName = "__builtin_ia32_packuswb128"; break;
9359  case Intrinsic::x86_sse2_padds_b: BuiltinName = "__builtin_ia32_paddsb128"; break;
9360  case Intrinsic::x86_sse2_padds_w: BuiltinName = "__builtin_ia32_paddsw128"; break;
9361  case Intrinsic::x86_sse2_paddus_b: BuiltinName = "__builtin_ia32_paddusb128"; break;
9362  case Intrinsic::x86_sse2_paddus_w: BuiltinName = "__builtin_ia32_paddusw128"; break;
9363  case Intrinsic::x86_sse2_pavg_b: BuiltinName = "__builtin_ia32_pavgb128"; break;
9364  case Intrinsic::x86_sse2_pavg_w: BuiltinName = "__builtin_ia32_pavgw128"; break;
9365  case Intrinsic::x86_sse2_pcmpeq_b: BuiltinName = "__builtin_ia32_pcmpeqb128"; break;
9366  case Intrinsic::x86_sse2_pcmpeq_d: BuiltinName = "__builtin_ia32_pcmpeqd128"; break;
9367  case Intrinsic::x86_sse2_pcmpeq_w: BuiltinName = "__builtin_ia32_pcmpeqw128"; break;
9368  case Intrinsic::x86_sse2_pcmpgt_b: BuiltinName = "__builtin_ia32_pcmpgtb128"; break;
9369  case Intrinsic::x86_sse2_pcmpgt_d: BuiltinName = "__builtin_ia32_pcmpgtd128"; break;
9370  case Intrinsic::x86_sse2_pcmpgt_w: BuiltinName = "__builtin_ia32_pcmpgtw128"; break;
9371  case Intrinsic::x86_sse2_pmadd_wd: BuiltinName = "__builtin_ia32_pmaddwd128"; break;
9372  case Intrinsic::x86_sse2_pmaxs_w: BuiltinName = "__builtin_ia32_pmaxsw128"; break;
9373  case Intrinsic::x86_sse2_pmaxu_b: BuiltinName = "__builtin_ia32_pmaxub128"; break;
9374  case Intrinsic::x86_sse2_pmins_w: BuiltinName = "__builtin_ia32_pminsw128"; break;
9375  case Intrinsic::x86_sse2_pminu_b: BuiltinName = "__builtin_ia32_pminub128"; break;
9376  case Intrinsic::x86_sse2_pmovmskb_128: BuiltinName = "__builtin_ia32_pmovmskb128"; break;
9377  case Intrinsic::x86_sse2_pmulh_w: BuiltinName = "__builtin_ia32_pmulhw128"; break;
9378  case Intrinsic::x86_sse2_pmulhu_w: BuiltinName = "__builtin_ia32_pmulhuw128"; break;
9379  case Intrinsic::x86_sse2_pmulu_dq: BuiltinName = "__builtin_ia32_pmuludq128"; break;
9380  case Intrinsic::x86_sse2_psad_bw: BuiltinName = "__builtin_ia32_psadbw128"; break;
9381  case Intrinsic::x86_sse2_psll_d: BuiltinName = "__builtin_ia32_pslld128"; break;
9382  case Intrinsic::x86_sse2_psll_dq: BuiltinName = "__builtin_ia32_pslldqi128"; break;
9383  case Intrinsic::x86_sse2_psll_dq_bs: BuiltinName = "__builtin_ia32_pslldqi128_byteshift"; break;
9384  case Intrinsic::x86_sse2_psll_q: BuiltinName = "__builtin_ia32_psllq128"; break;
9385  case Intrinsic::x86_sse2_psll_w: BuiltinName = "__builtin_ia32_psllw128"; break;
9386  case Intrinsic::x86_sse2_pslli_d: BuiltinName = "__builtin_ia32_pslldi128"; break;
9387  case Intrinsic::x86_sse2_pslli_q: BuiltinName = "__builtin_ia32_psllqi128"; break;
9388  case Intrinsic::x86_sse2_pslli_w: BuiltinName = "__builtin_ia32_psllwi128"; break;
9389  case Intrinsic::x86_sse2_psra_d: BuiltinName = "__builtin_ia32_psrad128"; break;
9390  case Intrinsic::x86_sse2_psra_w: BuiltinName = "__builtin_ia32_psraw128"; break;
9391  case Intrinsic::x86_sse2_psrai_d: BuiltinName = "__builtin_ia32_psradi128"; break;
9392  case Intrinsic::x86_sse2_psrai_w: BuiltinName = "__builtin_ia32_psrawi128"; break;
9393  case Intrinsic::x86_sse2_psrl_d: BuiltinName = "__builtin_ia32_psrld128"; break;
9394  case Intrinsic::x86_sse2_psrl_dq: BuiltinName = "__builtin_ia32_psrldqi128"; break;
9395  case Intrinsic::x86_sse2_psrl_dq_bs: BuiltinName = "__builtin_ia32_psrldqi128_byteshift"; break;
9396  case Intrinsic::x86_sse2_psrl_q: BuiltinName = "__builtin_ia32_psrlq128"; break;
9397  case Intrinsic::x86_sse2_psrl_w: BuiltinName = "__builtin_ia32_psrlw128"; break;
9398  case Intrinsic::x86_sse2_psrli_d: BuiltinName = "__builtin_ia32_psrldi128"; break;
9399  case Intrinsic::x86_sse2_psrli_q: BuiltinName = "__builtin_ia32_psrlqi128"; break;
9400  case Intrinsic::x86_sse2_psrli_w: BuiltinName = "__builtin_ia32_psrlwi128"; break;
9401  case Intrinsic::x86_sse2_psubs_b: BuiltinName = "__builtin_ia32_psubsb128"; break;
9402  case Intrinsic::x86_sse2_psubs_w: BuiltinName = "__builtin_ia32_psubsw128"; break;
9403  case Intrinsic::x86_sse2_psubus_b: BuiltinName = "__builtin_ia32_psubusb128"; break;
9404  case Intrinsic::x86_sse2_psubus_w: BuiltinName = "__builtin_ia32_psubusw128"; break;
9405  case Intrinsic::x86_sse2_sqrt_pd: BuiltinName = "__builtin_ia32_sqrtpd"; break;
9406  case Intrinsic::x86_sse2_sqrt_sd: BuiltinName = "__builtin_ia32_sqrtsd"; break;
9407  case Intrinsic::x86_sse2_storel_dq: BuiltinName = "__builtin_ia32_storelv4si"; break;
9408  case Intrinsic::x86_sse2_storeu_dq: BuiltinName = "__builtin_ia32_storedqu"; break;
9409  case Intrinsic::x86_sse2_storeu_pd: BuiltinName = "__builtin_ia32_storeupd"; break;
9410  case Intrinsic::x86_sse2_sub_sd: BuiltinName = "__builtin_ia32_subsd"; break;
9411  case Intrinsic::x86_sse2_ucomieq_sd: BuiltinName = "__builtin_ia32_ucomisdeq"; break;
9412  case Intrinsic::x86_sse2_ucomige_sd: BuiltinName = "__builtin_ia32_ucomisdge"; break;
9413  case Intrinsic::x86_sse2_ucomigt_sd: BuiltinName = "__builtin_ia32_ucomisdgt"; break;
9414  case Intrinsic::x86_sse2_ucomile_sd: BuiltinName = "__builtin_ia32_ucomisdle"; break;
9415  case Intrinsic::x86_sse2_ucomilt_sd: BuiltinName = "__builtin_ia32_ucomisdlt"; break;
9416  case Intrinsic::x86_sse2_ucomineq_sd: BuiltinName = "__builtin_ia32_ucomisdneq"; break;
9417  case Intrinsic::x86_sse3_addsub_pd: BuiltinName = "__builtin_ia32_addsubpd"; break;
9418  case Intrinsic::x86_sse3_addsub_ps: BuiltinName = "__builtin_ia32_addsubps"; break;
9419  case Intrinsic::x86_sse3_hadd_pd: BuiltinName = "__builtin_ia32_haddpd"; break;
9420  case Intrinsic::x86_sse3_hadd_ps: BuiltinName = "__builtin_ia32_haddps"; break;
9421  case Intrinsic::x86_sse3_hsub_pd: BuiltinName = "__builtin_ia32_hsubpd"; break;
9422  case Intrinsic::x86_sse3_hsub_ps: BuiltinName = "__builtin_ia32_hsubps"; break;
9423  case Intrinsic::x86_sse3_ldu_dq: BuiltinName = "__builtin_ia32_lddqu"; break;
9424  case Intrinsic::x86_sse3_monitor: BuiltinName = "__builtin_ia32_monitor"; break;
9425  case Intrinsic::x86_sse3_mwait: BuiltinName = "__builtin_ia32_mwait"; break;
9426  case Intrinsic::x86_sse41_blendpd: BuiltinName = "__builtin_ia32_blendpd"; break;
9427  case Intrinsic::x86_sse41_blendps: BuiltinName = "__builtin_ia32_blendps"; break;
9428  case Intrinsic::x86_sse41_blendvpd: BuiltinName = "__builtin_ia32_blendvpd"; break;
9429  case Intrinsic::x86_sse41_blendvps: BuiltinName = "__builtin_ia32_blendvps"; break;
9430  case Intrinsic::x86_sse41_dppd: BuiltinName = "__builtin_ia32_dppd"; break;
9431  case Intrinsic::x86_sse41_dpps: BuiltinName = "__builtin_ia32_dpps"; break;
9432  case Intrinsic::x86_sse41_extractps: BuiltinName = "__builtin_ia32_extractps128"; break;
9433  case Intrinsic::x86_sse41_insertps: BuiltinName = "__builtin_ia32_insertps128"; break;
9434  case Intrinsic::x86_sse41_movntdqa: BuiltinName = "__builtin_ia32_movntdqa"; break;
9435  case Intrinsic::x86_sse41_mpsadbw: BuiltinName = "__builtin_ia32_mpsadbw128"; break;
9436  case Intrinsic::x86_sse41_packusdw: BuiltinName = "__builtin_ia32_packusdw128"; break;
9437  case Intrinsic::x86_sse41_pblendvb: BuiltinName = "__builtin_ia32_pblendvb128"; break;
9438  case Intrinsic::x86_sse41_pblendw: BuiltinName = "__builtin_ia32_pblendw128"; break;
9439  case Intrinsic::x86_sse41_pcmpeqq: BuiltinName = "__builtin_ia32_pcmpeqq"; break;
9440  case Intrinsic::x86_sse41_phminposuw: BuiltinName = "__builtin_ia32_phminposuw128"; break;
9441  case Intrinsic::x86_sse41_pmaxsb: BuiltinName = "__builtin_ia32_pmaxsb128"; break;
9442  case Intrinsic::x86_sse41_pmaxsd: BuiltinName = "__builtin_ia32_pmaxsd128"; break;
9443  case Intrinsic::x86_sse41_pmaxud: BuiltinName = "__builtin_ia32_pmaxud128"; break;
9444  case Intrinsic::x86_sse41_pmaxuw: BuiltinName = "__builtin_ia32_pmaxuw128"; break;
9445  case Intrinsic::x86_sse41_pminsb: BuiltinName = "__builtin_ia32_pminsb128"; break;
9446  case Intrinsic::x86_sse41_pminsd: BuiltinName = "__builtin_ia32_pminsd128"; break;
9447  case Intrinsic::x86_sse41_pminud: BuiltinName = "__builtin_ia32_pminud128"; break;
9448  case Intrinsic::x86_sse41_pminuw: BuiltinName = "__builtin_ia32_pminuw128"; break;
9449  case Intrinsic::x86_sse41_pmovsxbd: BuiltinName = "__builtin_ia32_pmovsxbd128"; break;
9450  case Intrinsic::x86_sse41_pmovsxbq: BuiltinName = "__builtin_ia32_pmovsxbq128"; break;
9451  case Intrinsic::x86_sse41_pmovsxbw: BuiltinName = "__builtin_ia32_pmovsxbw128"; break;
9452  case Intrinsic::x86_sse41_pmovsxdq: BuiltinName = "__builtin_ia32_pmovsxdq128"; break;
9453  case Intrinsic::x86_sse41_pmovsxwd: BuiltinName = "__builtin_ia32_pmovsxwd128"; break;
9454  case Intrinsic::x86_sse41_pmovsxwq: BuiltinName = "__builtin_ia32_pmovsxwq128"; break;
9455  case Intrinsic::x86_sse41_pmovzxbd: BuiltinName = "__builtin_ia32_pmovzxbd128"; break;
9456  case Intrinsic::x86_sse41_pmovzxbq: BuiltinName = "__builtin_ia32_pmovzxbq128"; break;
9457  case Intrinsic::x86_sse41_pmovzxbw: BuiltinName = "__builtin_ia32_pmovzxbw128"; break;
9458  case Intrinsic::x86_sse41_pmovzxdq: BuiltinName = "__builtin_ia32_pmovzxdq128"; break;
9459  case Intrinsic::x86_sse41_pmovzxwd: BuiltinName = "__builtin_ia32_pmovzxwd128"; break;
9460  case Intrinsic::x86_sse41_pmovzxwq: BuiltinName = "__builtin_ia32_pmovzxwq128"; break;
9461  case Intrinsic::x86_sse41_pmuldq: BuiltinName = "__builtin_ia32_pmuldq128"; break;
9462  case Intrinsic::x86_sse41_ptestc: BuiltinName = "__builtin_ia32_ptestc128"; break;
9463  case Intrinsic::x86_sse41_ptestnzc: BuiltinName = "__builtin_ia32_ptestnzc128"; break;
9464  case Intrinsic::x86_sse41_ptestz: BuiltinName = "__builtin_ia32_ptestz128"; break;
9465  case Intrinsic::x86_sse41_round_pd: BuiltinName = "__builtin_ia32_roundpd"; break;
9466  case Intrinsic::x86_sse41_round_ps: BuiltinName = "__builtin_ia32_roundps"; break;
9467  case Intrinsic::x86_sse41_round_sd: BuiltinName = "__builtin_ia32_roundsd"; break;
9468  case Intrinsic::x86_sse41_round_ss: BuiltinName = "__builtin_ia32_roundss"; break;
9469  case Intrinsic::x86_sse42_crc32_32_16: BuiltinName = "__builtin_ia32_crc32hi"; break;
9470  case Intrinsic::x86_sse42_crc32_32_32: BuiltinName = "__builtin_ia32_crc32si"; break;
9471  case Intrinsic::x86_sse42_crc32_32_8: BuiltinName = "__builtin_ia32_crc32qi"; break;
9472  case Intrinsic::x86_sse42_crc32_64_64: BuiltinName = "__builtin_ia32_crc32di"; break;
9473  case Intrinsic::x86_sse42_pcmpestri128: BuiltinName = "__builtin_ia32_pcmpestri128"; break;
9474  case Intrinsic::x86_sse42_pcmpestria128: BuiltinName = "__builtin_ia32_pcmpestria128"; break;
9475  case Intrinsic::x86_sse42_pcmpestric128: BuiltinName = "__builtin_ia32_pcmpestric128"; break;
9476  case Intrinsic::x86_sse42_pcmpestrio128: BuiltinName = "__builtin_ia32_pcmpestrio128"; break;
9477  case Intrinsic::x86_sse42_pcmpestris128: BuiltinName = "__builtin_ia32_pcmpestris128"; break;
9478  case Intrinsic::x86_sse42_pcmpestriz128: BuiltinName = "__builtin_ia32_pcmpestriz128"; break;
9479  case Intrinsic::x86_sse42_pcmpestrm128: BuiltinName = "__builtin_ia32_pcmpestrm128"; break;
9480  case Intrinsic::x86_sse42_pcmpgtq: BuiltinName = "__builtin_ia32_pcmpgtq"; break;
9481  case Intrinsic::x86_sse42_pcmpistri128: BuiltinName = "__builtin_ia32_pcmpistri128"; break;
9482  case Intrinsic::x86_sse42_pcmpistria128: BuiltinName = "__builtin_ia32_pcmpistria128"; break;
9483  case Intrinsic::x86_sse42_pcmpistric128: BuiltinName = "__builtin_ia32_pcmpistric128"; break;
9484  case Intrinsic::x86_sse42_pcmpistrio128: BuiltinName = "__builtin_ia32_pcmpistrio128"; break;
9485  case Intrinsic::x86_sse42_pcmpistris128: BuiltinName = "__builtin_ia32_pcmpistris128"; break;
9486  case Intrinsic::x86_sse42_pcmpistriz128: BuiltinName = "__builtin_ia32_pcmpistriz128"; break;
9487  case Intrinsic::x86_sse42_pcmpistrm128: BuiltinName = "__builtin_ia32_pcmpistrm128"; break;
9488  case Intrinsic::x86_sse_add_ss: BuiltinName = "__builtin_ia32_addss"; break;
9489  case Intrinsic::x86_sse_comieq_ss: BuiltinName = "__builtin_ia32_comieq"; break;
9490  case Intrinsic::x86_sse_comige_ss: BuiltinName = "__builtin_ia32_comige"; break;
9491  case Intrinsic::x86_sse_comigt_ss: BuiltinName = "__builtin_ia32_comigt"; break;
9492  case Intrinsic::x86_sse_comile_ss: BuiltinName = "__builtin_ia32_comile"; break;
9493  case Intrinsic::x86_sse_comilt_ss: BuiltinName = "__builtin_ia32_comilt"; break;
9494  case Intrinsic::x86_sse_comineq_ss: BuiltinName = "__builtin_ia32_comineq"; break;
9495  case Intrinsic::x86_sse_cvtpd2pi: BuiltinName = "__builtin_ia32_cvtpd2pi"; break;
9496  case Intrinsic::x86_sse_cvtpi2pd: BuiltinName = "__builtin_ia32_cvtpi2pd"; break;
9497  case Intrinsic::x86_sse_cvtpi2ps: BuiltinName = "__builtin_ia32_cvtpi2ps"; break;
9498  case Intrinsic::x86_sse_cvtps2pi: BuiltinName = "__builtin_ia32_cvtps2pi"; break;
9499  case Intrinsic::x86_sse_cvtsi2ss: BuiltinName = "__builtin_ia32_cvtsi2ss"; break;
9500  case Intrinsic::x86_sse_cvtsi642ss: BuiltinName = "__builtin_ia32_cvtsi642ss"; break;
9501  case Intrinsic::x86_sse_cvtss2si: BuiltinName = "__builtin_ia32_cvtss2si"; break;
9502  case Intrinsic::x86_sse_cvtss2si64: BuiltinName = "__builtin_ia32_cvtss2si64"; break;
9503  case Intrinsic::x86_sse_cvttpd2pi: BuiltinName = "__builtin_ia32_cvttpd2pi"; break;
9504  case Intrinsic::x86_sse_cvttps2pi: BuiltinName = "__builtin_ia32_cvttps2pi"; break;
9505  case Intrinsic::x86_sse_cvttss2si: BuiltinName = "__builtin_ia32_cvttss2si"; break;
9506  case Intrinsic::x86_sse_cvttss2si64: BuiltinName = "__builtin_ia32_cvttss2si64"; break;
9507  case Intrinsic::x86_sse_div_ss: BuiltinName = "__builtin_ia32_divss"; break;
9508  case Intrinsic::x86_sse_max_ps: BuiltinName = "__builtin_ia32_maxps"; break;
9509  case Intrinsic::x86_sse_max_ss: BuiltinName = "__builtin_ia32_maxss"; break;
9510  case Intrinsic::x86_sse_min_ps: BuiltinName = "__builtin_ia32_minps"; break;
9511  case Intrinsic::x86_sse_min_ss: BuiltinName = "__builtin_ia32_minss"; break;
9512  case Intrinsic::x86_sse_movmsk_ps: BuiltinName = "__builtin_ia32_movmskps"; break;
9513  case Intrinsic::x86_sse_mul_ss: BuiltinName = "__builtin_ia32_mulss"; break;
9514  case Intrinsic::x86_sse_pshuf_w: BuiltinName = "__builtin_ia32_pshufw"; break;
9515  case Intrinsic::x86_sse_rcp_ps: BuiltinName = "__builtin_ia32_rcpps"; break;
9516  case Intrinsic::x86_sse_rcp_ss: BuiltinName = "__builtin_ia32_rcpss"; break;
9517  case Intrinsic::x86_sse_rsqrt_ps: BuiltinName = "__builtin_ia32_rsqrtps"; break;
9518  case Intrinsic::x86_sse_rsqrt_ss: BuiltinName = "__builtin_ia32_rsqrtss"; break;
9519  case Intrinsic::x86_sse_sfence: BuiltinName = "__builtin_ia32_sfence"; break;
9520  case Intrinsic::x86_sse_sqrt_ps: BuiltinName = "__builtin_ia32_sqrtps"; break;
9521  case Intrinsic::x86_sse_sqrt_ss: BuiltinName = "__builtin_ia32_sqrtss"; break;
9522  case Intrinsic::x86_sse_storeu_ps: BuiltinName = "__builtin_ia32_storeups"; break;
9523  case Intrinsic::x86_sse_sub_ss: BuiltinName = "__builtin_ia32_subss"; break;
9524  case Intrinsic::x86_sse_ucomieq_ss: BuiltinName = "__builtin_ia32_ucomieq"; break;
9525  case Intrinsic::x86_sse_ucomige_ss: BuiltinName = "__builtin_ia32_ucomige"; break;
9526  case Intrinsic::x86_sse_ucomigt_ss: BuiltinName = "__builtin_ia32_ucomigt"; break;
9527  case Intrinsic::x86_sse_ucomile_ss: BuiltinName = "__builtin_ia32_ucomile"; break;
9528  case Intrinsic::x86_sse_ucomilt_ss: BuiltinName = "__builtin_ia32_ucomilt"; break;
9529  case Intrinsic::x86_sse_ucomineq_ss: BuiltinName = "__builtin_ia32_ucomineq"; break;
9530  case Intrinsic::x86_ssse3_pabs_b: BuiltinName = "__builtin_ia32_pabsb"; break;
9531  case Intrinsic::x86_ssse3_pabs_b_128: BuiltinName = "__builtin_ia32_pabsb128"; break;
9532  case Intrinsic::x86_ssse3_pabs_d: BuiltinName = "__builtin_ia32_pabsd"; break;
9533  case Intrinsic::x86_ssse3_pabs_d_128: BuiltinName = "__builtin_ia32_pabsd128"; break;
9534  case Intrinsic::x86_ssse3_pabs_w: BuiltinName = "__builtin_ia32_pabsw"; break;
9535  case Intrinsic::x86_ssse3_pabs_w_128: BuiltinName = "__builtin_ia32_pabsw128"; break;
9536  case Intrinsic::x86_ssse3_phadd_d: BuiltinName = "__builtin_ia32_phaddd"; break;
9537  case Intrinsic::x86_ssse3_phadd_d_128: BuiltinName = "__builtin_ia32_phaddd128"; break;
9538  case Intrinsic::x86_ssse3_phadd_sw: BuiltinName = "__builtin_ia32_phaddsw"; break;
9539  case Intrinsic::x86_ssse3_phadd_sw_128: BuiltinName = "__builtin_ia32_phaddsw128"; break;
9540  case Intrinsic::x86_ssse3_phadd_w: BuiltinName = "__builtin_ia32_phaddw"; break;
9541  case Intrinsic::x86_ssse3_phadd_w_128: BuiltinName = "__builtin_ia32_phaddw128"; break;
9542  case Intrinsic::x86_ssse3_phsub_d: BuiltinName = "__builtin_ia32_phsubd"; break;
9543  case Intrinsic::x86_ssse3_phsub_d_128: BuiltinName = "__builtin_ia32_phsubd128"; break;
9544  case Intrinsic::x86_ssse3_phsub_sw: BuiltinName = "__builtin_ia32_phsubsw"; break;
9545  case Intrinsic::x86_ssse3_phsub_sw_128: BuiltinName = "__builtin_ia32_phsubsw128"; break;
9546  case Intrinsic::x86_ssse3_phsub_w: BuiltinName = "__builtin_ia32_phsubw"; break;
9547  case Intrinsic::x86_ssse3_phsub_w_128: BuiltinName = "__builtin_ia32_phsubw128"; break;
9548  case Intrinsic::x86_ssse3_pmadd_ub_sw: BuiltinName = "__builtin_ia32_pmaddubsw"; break;
9549  case Intrinsic::x86_ssse3_pmadd_ub_sw_128: BuiltinName = "__builtin_ia32_pmaddubsw128"; break;
9550  case Intrinsic::x86_ssse3_pmul_hr_sw: BuiltinName = "__builtin_ia32_pmulhrsw"; break;
9551  case Intrinsic::x86_ssse3_pmul_hr_sw_128: BuiltinName = "__builtin_ia32_pmulhrsw128"; break;
9552  case Intrinsic::x86_ssse3_pshuf_b: BuiltinName = "__builtin_ia32_pshufb"; break;
9553  case Intrinsic::x86_ssse3_pshuf_b_128: BuiltinName = "__builtin_ia32_pshufb128"; break;
9554  case Intrinsic::x86_ssse3_psign_b: BuiltinName = "__builtin_ia32_psignb"; break;
9555  case Intrinsic::x86_ssse3_psign_b_128: BuiltinName = "__builtin_ia32_psignb128"; break;
9556  case Intrinsic::x86_ssse3_psign_d: BuiltinName = "__builtin_ia32_psignd"; break;
9557  case Intrinsic::x86_ssse3_psign_d_128: BuiltinName = "__builtin_ia32_psignd128"; break;
9558  case Intrinsic::x86_ssse3_psign_w: BuiltinName = "__builtin_ia32_psignw"; break;
9559  case Intrinsic::x86_ssse3_psign_w_128: BuiltinName = "__builtin_ia32_psignw128"; break;
9560  }
9561#endif
9562
9563// Get the LLVM intrinsic that corresponds to a GCC builtin.
9564// This is used by the C front-end.  The GCC builtin name is passed
9565// in as BuiltinName, and a target prefix (e.g. 'ppc') is passed
9566// in as TargetPrefix.  The result is assigned to 'IntrinsicID'.
9567#ifdef GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN
9568Intrinsic::ID Intrinsic::getIntrinsicForGCCBuiltin(const char *TargetPrefixStr, const char *BuiltinNameStr) {
9569  StringRef BuiltinName(BuiltinNameStr);
9570  StringRef TargetPrefix(TargetPrefixStr);
9571
9572  /* Target Independent Builtins */ {
9573  switch (BuiltinName.size()) {
9574  default: break;
9575  case 14:	 // 3 strings to match.
9576    if (BuiltinName.substr(0, 2) != "__")
9577      break;
9578    switch (BuiltinName[2]) {
9579    default: break;
9580    case 'b':	 // 1 string to match.
9581      if (BuiltinName.substr(3, 11) != "uiltin_trap")
9582        break;
9583      return Intrinsic::trap;	 // "__builtin_trap"
9584    case 'g':	 // 2 strings to match.
9585      if (BuiltinName.substr(3, 3) != "nu_")
9586        break;
9587      switch (BuiltinName[6]) {
9588      default: break;
9589      case 'f':	 // 1 string to match.
9590        if (BuiltinName.substr(7, 7) != "2h_ieee")
9591          break;
9592        return Intrinsic::convert_to_fp16;	 // "__gnu_f2h_ieee"
9593      case 'h':	 // 1 string to match.
9594        if (BuiltinName.substr(7, 7) != "2f_ieee")
9595          break;
9596        return Intrinsic::convert_from_fp16;	 // "__gnu_h2f_ieee"
9597      }
9598      break;
9599    }
9600    break;
9601  case 20:	 // 2 strings to match.
9602    if (BuiltinName.substr(0, 10) != "__builtin_")
9603      break;
9604    switch (BuiltinName[10]) {
9605    default: break;
9606    case 'f':	 // 1 string to match.
9607      if (BuiltinName.substr(11, 9) != "lt_rounds")
9608        break;
9609      return Intrinsic::flt_rounds;	 // "__builtin_flt_rounds"
9610    case 's':	 // 1 string to match.
9611      if (BuiltinName.substr(11, 9) != "tack_save")
9612        break;
9613      return Intrinsic::stacksave;	 // "__builtin_stack_save"
9614    }
9615    break;
9616  case 21:	 // 2 strings to match.
9617    if (BuiltinName.substr(0, 10) != "__builtin_")
9618      break;
9619    switch (BuiltinName[10]) {
9620    default: break;
9621    case 'o':	 // 1 string to match.
9622      if (BuiltinName.substr(11, 10) != "bject_size")
9623        break;
9624      return Intrinsic::objectsize;	 // "__builtin_object_size"
9625    case 'u':	 // 1 string to match.
9626      if (BuiltinName.substr(11, 10) != "nwind_init")
9627        break;
9628      return Intrinsic::eh_unwind_init;	 // "__builtin_unwind_init"
9629    }
9630    break;
9631  case 23:	 // 1 string to match.
9632    if (BuiltinName.substr(0, 23) != "__builtin_stack_restore")
9633      break;
9634    return Intrinsic::stackrestore;	 // "__builtin_stack_restore"
9635  case 25:	 // 1 string to match.
9636    if (BuiltinName.substr(0, 25) != "__builtin_init_trampoline")
9637      break;
9638    return Intrinsic::init_trampoline;	 // "__builtin_init_trampoline"
9639  case 27:	 // 1 string to match.
9640    if (BuiltinName.substr(0, 27) != "__builtin_adjust_trampoline")
9641      break;
9642    return Intrinsic::adjust_trampoline;	 // "__builtin_adjust_trampoline"
9643  }
9644  }
9645  if (TargetPrefix == "x86") {
9646  switch (BuiltinName.size()) {
9647  default: break;
9648  case 18:	 // 1 string to match.
9649    if (BuiltinName.substr(0, 18) != "__builtin_ia32_por")
9650      break;
9651    return Intrinsic::x86_mmx_por;	 // "__builtin_ia32_por"
9652  case 19:	 // 5 strings to match.
9653    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
9654      break;
9655    switch (BuiltinName[15]) {
9656    default: break;
9657    case 'd':	 // 2 strings to match.
9658      if (BuiltinName.substr(16, 2) != "pp")
9659        break;
9660      switch (BuiltinName[18]) {
9661      default: break;
9662      case 'd':	 // 1 string to match.
9663        return Intrinsic::x86_sse41_dppd;	 // "__builtin_ia32_dppd"
9664      case 's':	 // 1 string to match.
9665        return Intrinsic::x86_sse41_dpps;	 // "__builtin_ia32_dpps"
9666      }
9667      break;
9668    case 'e':	 // 1 string to match.
9669      if (BuiltinName.substr(16, 3) != "mms")
9670        break;
9671      return Intrinsic::x86_mmx_emms;	 // "__builtin_ia32_emms"
9672    case 'p':	 // 2 strings to match.
9673      switch (BuiltinName[16]) {
9674      default: break;
9675      case 'a':	 // 1 string to match.
9676        if (BuiltinName.substr(17, 2) != "nd")
9677          break;
9678        return Intrinsic::x86_mmx_pand;	 // "__builtin_ia32_pand"
9679      case 'x':	 // 1 string to match.
9680        if (BuiltinName.substr(17, 2) != "or")
9681          break;
9682        return Intrinsic::x86_mmx_pxor;	 // "__builtin_ia32_pxor"
9683      }
9684      break;
9685    }
9686    break;
9687  case 20:	 // 54 strings to match.
9688    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
9689      break;
9690    switch (BuiltinName[15]) {
9691    default: break;
9692    case 'a':	 // 2 strings to match.
9693      if (BuiltinName.substr(16, 3) != "dds")
9694        break;
9695      switch (BuiltinName[19]) {
9696      default: break;
9697      case 'd':	 // 1 string to match.
9698        return Intrinsic::x86_sse2_add_sd;	 // "__builtin_ia32_addsd"
9699      case 's':	 // 1 string to match.
9700        return Intrinsic::x86_sse_add_ss;	 // "__builtin_ia32_addss"
9701      }
9702      break;
9703    case 'd':	 // 2 strings to match.
9704      if (BuiltinName.substr(16, 3) != "ivs")
9705        break;
9706      switch (BuiltinName[19]) {
9707      default: break;
9708      case 'd':	 // 1 string to match.
9709        return Intrinsic::x86_sse2_div_sd;	 // "__builtin_ia32_divsd"
9710      case 's':	 // 1 string to match.
9711        return Intrinsic::x86_sse_div_ss;	 // "__builtin_ia32_divss"
9712      }
9713      break;
9714    case 'f':	 // 1 string to match.
9715      if (BuiltinName.substr(16, 4) != "emms")
9716        break;
9717      return Intrinsic::x86_mmx_femms;	 // "__builtin_ia32_femms"
9718    case 'l':	 // 1 string to match.
9719      if (BuiltinName.substr(16, 4) != "ddqu")
9720        break;
9721      return Intrinsic::x86_sse3_ldu_dq;	 // "__builtin_ia32_lddqu"
9722    case 'm':	 // 11 strings to match.
9723      switch (BuiltinName[16]) {
9724      default: break;
9725      case 'a':	 // 4 strings to match.
9726        if (BuiltinName[17] != 'x')
9727          break;
9728        switch (BuiltinName[18]) {
9729        default: break;
9730        case 'p':	 // 2 strings to match.
9731          switch (BuiltinName[19]) {
9732          default: break;
9733          case 'd':	 // 1 string to match.
9734            return Intrinsic::x86_sse2_max_pd;	 // "__builtin_ia32_maxpd"
9735          case 's':	 // 1 string to match.
9736            return Intrinsic::x86_sse_max_ps;	 // "__builtin_ia32_maxps"
9737          }
9738          break;
9739        case 's':	 // 2 strings to match.
9740          switch (BuiltinName[19]) {
9741          default: break;
9742          case 'd':	 // 1 string to match.
9743            return Intrinsic::x86_sse2_max_sd;	 // "__builtin_ia32_maxsd"
9744          case 's':	 // 1 string to match.
9745            return Intrinsic::x86_sse_max_ss;	 // "__builtin_ia32_maxss"
9746          }
9747          break;
9748        }
9749        break;
9750      case 'i':	 // 4 strings to match.
9751        if (BuiltinName[17] != 'n')
9752          break;
9753        switch (BuiltinName[18]) {
9754        default: break;
9755        case 'p':	 // 2 strings to match.
9756          switch (BuiltinName[19]) {
9757          default: break;
9758          case 'd':	 // 1 string to match.
9759            return Intrinsic::x86_sse2_min_pd;	 // "__builtin_ia32_minpd"
9760          case 's':	 // 1 string to match.
9761            return Intrinsic::x86_sse_min_ps;	 // "__builtin_ia32_minps"
9762          }
9763          break;
9764        case 's':	 // 2 strings to match.
9765          switch (BuiltinName[19]) {
9766          default: break;
9767          case 'd':	 // 1 string to match.
9768            return Intrinsic::x86_sse2_min_sd;	 // "__builtin_ia32_minsd"
9769          case 's':	 // 1 string to match.
9770            return Intrinsic::x86_sse_min_ss;	 // "__builtin_ia32_minss"
9771          }
9772          break;
9773        }
9774        break;
9775      case 'u':	 // 2 strings to match.
9776        if (BuiltinName.substr(17, 2) != "ls")
9777          break;
9778        switch (BuiltinName[19]) {
9779        default: break;
9780        case 'd':	 // 1 string to match.
9781          return Intrinsic::x86_sse2_mul_sd;	 // "__builtin_ia32_mulsd"
9782        case 's':	 // 1 string to match.
9783          return Intrinsic::x86_sse_mul_ss;	 // "__builtin_ia32_mulss"
9784        }
9785        break;
9786      case 'w':	 // 1 string to match.
9787        if (BuiltinName.substr(17, 3) != "ait")
9788          break;
9789        return Intrinsic::x86_sse3_mwait;	 // "__builtin_ia32_mwait"
9790      }
9791      break;
9792    case 'p':	 // 33 strings to match.
9793      switch (BuiltinName[16]) {
9794      default: break;
9795      case 'a':	 // 10 strings to match.
9796        switch (BuiltinName[17]) {
9797        default: break;
9798        case 'b':	 // 3 strings to match.
9799          if (BuiltinName[18] != 's')
9800            break;
9801          switch (BuiltinName[19]) {
9802          default: break;
9803          case 'b':	 // 1 string to match.
9804            return Intrinsic::x86_ssse3_pabs_b;	 // "__builtin_ia32_pabsb"
9805          case 'd':	 // 1 string to match.
9806            return Intrinsic::x86_ssse3_pabs_d;	 // "__builtin_ia32_pabsd"
9807          case 'w':	 // 1 string to match.
9808            return Intrinsic::x86_ssse3_pabs_w;	 // "__builtin_ia32_pabsw"
9809          }
9810          break;
9811        case 'd':	 // 4 strings to match.
9812          if (BuiltinName[18] != 'd')
9813            break;
9814          switch (BuiltinName[19]) {
9815          default: break;
9816          case 'b':	 // 1 string to match.
9817            return Intrinsic::x86_mmx_padd_b;	 // "__builtin_ia32_paddb"
9818          case 'd':	 // 1 string to match.
9819            return Intrinsic::x86_mmx_padd_d;	 // "__builtin_ia32_paddd"
9820          case 'q':	 // 1 string to match.
9821            return Intrinsic::x86_mmx_padd_q;	 // "__builtin_ia32_paddq"
9822          case 'w':	 // 1 string to match.
9823            return Intrinsic::x86_mmx_padd_w;	 // "__builtin_ia32_paddw"
9824          }
9825          break;
9826        case 'n':	 // 1 string to match.
9827          if (BuiltinName.substr(18, 2) != "dn")
9828            break;
9829          return Intrinsic::x86_mmx_pandn;	 // "__builtin_ia32_pandn"
9830        case 'v':	 // 2 strings to match.
9831          if (BuiltinName[18] != 'g')
9832            break;
9833          switch (BuiltinName[19]) {
9834          default: break;
9835          case 'b':	 // 1 string to match.
9836            return Intrinsic::x86_mmx_pavg_b;	 // "__builtin_ia32_pavgb"
9837          case 'w':	 // 1 string to match.
9838            return Intrinsic::x86_mmx_pavg_w;	 // "__builtin_ia32_pavgw"
9839          }
9840          break;
9841        }
9842        break;
9843      case 'f':	 // 9 strings to match.
9844        switch (BuiltinName[17]) {
9845        default: break;
9846        case '2':	 // 2 strings to match.
9847          if (BuiltinName[18] != 'i')
9848            break;
9849          switch (BuiltinName[19]) {
9850          default: break;
9851          case 'd':	 // 1 string to match.
9852            return Intrinsic::x86_3dnow_pf2id;	 // "__builtin_ia32_pf2id"
9853          case 'w':	 // 1 string to match.
9854            return Intrinsic::x86_3dnowa_pf2iw;	 // "__builtin_ia32_pf2iw"
9855          }
9856          break;
9857        case 'a':	 // 2 strings to match.
9858          switch (BuiltinName[18]) {
9859          default: break;
9860          case 'c':	 // 1 string to match.
9861            if (BuiltinName[19] != 'c')
9862              break;
9863            return Intrinsic::x86_3dnow_pfacc;	 // "__builtin_ia32_pfacc"
9864          case 'd':	 // 1 string to match.
9865            if (BuiltinName[19] != 'd')
9866              break;
9867            return Intrinsic::x86_3dnow_pfadd;	 // "__builtin_ia32_pfadd"
9868          }
9869          break;
9870        case 'm':	 // 3 strings to match.
9871          switch (BuiltinName[18]) {
9872          default: break;
9873          case 'a':	 // 1 string to match.
9874            if (BuiltinName[19] != 'x')
9875              break;
9876            return Intrinsic::x86_3dnow_pfmax;	 // "__builtin_ia32_pfmax"
9877          case 'i':	 // 1 string to match.
9878            if (BuiltinName[19] != 'n')
9879              break;
9880            return Intrinsic::x86_3dnow_pfmin;	 // "__builtin_ia32_pfmin"
9881          case 'u':	 // 1 string to match.
9882            if (BuiltinName[19] != 'l')
9883              break;
9884            return Intrinsic::x86_3dnow_pfmul;	 // "__builtin_ia32_pfmul"
9885          }
9886          break;
9887        case 'r':	 // 1 string to match.
9888          if (BuiltinName.substr(18, 2) != "cp")
9889            break;
9890          return Intrinsic::x86_3dnow_pfrcp;	 // "__builtin_ia32_pfrcp"
9891        case 's':	 // 1 string to match.
9892          if (BuiltinName.substr(18, 2) != "ub")
9893            break;
9894          return Intrinsic::x86_3dnow_pfsub;	 // "__builtin_ia32_pfsub"
9895        }
9896        break;
9897      case 'i':	 // 2 strings to match.
9898        if (BuiltinName.substr(17, 2) != "2f")
9899          break;
9900        switch (BuiltinName[19]) {
9901        default: break;
9902        case 'd':	 // 1 string to match.
9903          return Intrinsic::x86_3dnow_pi2fd;	 // "__builtin_ia32_pi2fd"
9904        case 'w':	 // 1 string to match.
9905          return Intrinsic::x86_3dnowa_pi2fw;	 // "__builtin_ia32_pi2fw"
9906        }
9907        break;
9908      case 's':	 // 12 strings to match.
9909        switch (BuiltinName[17]) {
9910        default: break;
9911        case 'l':	 // 3 strings to match.
9912          if (BuiltinName[18] != 'l')
9913            break;
9914          switch (BuiltinName[19]) {
9915          default: break;
9916          case 'd':	 // 1 string to match.
9917            return Intrinsic::x86_mmx_psll_d;	 // "__builtin_ia32_pslld"
9918          case 'q':	 // 1 string to match.
9919            return Intrinsic::x86_mmx_psll_q;	 // "__builtin_ia32_psllq"
9920          case 'w':	 // 1 string to match.
9921            return Intrinsic::x86_mmx_psll_w;	 // "__builtin_ia32_psllw"
9922          }
9923          break;
9924        case 'r':	 // 5 strings to match.
9925          switch (BuiltinName[18]) {
9926          default: break;
9927          case 'a':	 // 2 strings to match.
9928            switch (BuiltinName[19]) {
9929            default: break;
9930            case 'd':	 // 1 string to match.
9931              return Intrinsic::x86_mmx_psra_d;	 // "__builtin_ia32_psrad"
9932            case 'w':	 // 1 string to match.
9933              return Intrinsic::x86_mmx_psra_w;	 // "__builtin_ia32_psraw"
9934            }
9935            break;
9936          case 'l':	 // 3 strings to match.
9937            switch (BuiltinName[19]) {
9938            default: break;
9939            case 'd':	 // 1 string to match.
9940              return Intrinsic::x86_mmx_psrl_d;	 // "__builtin_ia32_psrld"
9941            case 'q':	 // 1 string to match.
9942              return Intrinsic::x86_mmx_psrl_q;	 // "__builtin_ia32_psrlq"
9943            case 'w':	 // 1 string to match.
9944              return Intrinsic::x86_mmx_psrl_w;	 // "__builtin_ia32_psrlw"
9945            }
9946            break;
9947          }
9948          break;
9949        case 'u':	 // 4 strings to match.
9950          if (BuiltinName[18] != 'b')
9951            break;
9952          switch (BuiltinName[19]) {
9953          default: break;
9954          case 'b':	 // 1 string to match.
9955            return Intrinsic::x86_mmx_psub_b;	 // "__builtin_ia32_psubb"
9956          case 'd':	 // 1 string to match.
9957            return Intrinsic::x86_mmx_psub_d;	 // "__builtin_ia32_psubd"
9958          case 'q':	 // 1 string to match.
9959            return Intrinsic::x86_mmx_psub_q;	 // "__builtin_ia32_psubq"
9960          case 'w':	 // 1 string to match.
9961            return Intrinsic::x86_mmx_psub_w;	 // "__builtin_ia32_psubw"
9962          }
9963          break;
9964        }
9965        break;
9966      }
9967      break;
9968    case 'r':	 // 2 strings to match.
9969      if (BuiltinName.substr(16, 2) != "cp")
9970        break;
9971      switch (BuiltinName[18]) {
9972      default: break;
9973      case 'p':	 // 1 string to match.
9974        if (BuiltinName[19] != 's')
9975          break;
9976        return Intrinsic::x86_sse_rcp_ps;	 // "__builtin_ia32_rcpps"
9977      case 's':	 // 1 string to match.
9978        if (BuiltinName[19] != 's')
9979          break;
9980        return Intrinsic::x86_sse_rcp_ss;	 // "__builtin_ia32_rcpss"
9981      }
9982      break;
9983    case 's':	 // 2 strings to match.
9984      if (BuiltinName.substr(16, 3) != "ubs")
9985        break;
9986      switch (BuiltinName[19]) {
9987      default: break;
9988      case 'd':	 // 1 string to match.
9989        return Intrinsic::x86_sse2_sub_sd;	 // "__builtin_ia32_subsd"
9990      case 's':	 // 1 string to match.
9991        return Intrinsic::x86_sse_sub_ss;	 // "__builtin_ia32_subss"
9992      }
9993      break;
9994    }
9995    break;
9996  case 21:	 // 47 strings to match.
9997    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
9998      break;
9999    switch (BuiltinName[15]) {
10000    default: break;
10001    case 'c':	 // 5 strings to match.
10002      if (BuiltinName.substr(16, 3) != "omi")
10003        break;
10004      switch (BuiltinName[19]) {
10005      default: break;
10006      case 'e':	 // 1 string to match.
10007        if (BuiltinName[20] != 'q')
10008          break;
10009        return Intrinsic::x86_sse_comieq_ss;	 // "__builtin_ia32_comieq"
10010      case 'g':	 // 2 strings to match.
10011        switch (BuiltinName[20]) {
10012        default: break;
10013        case 'e':	 // 1 string to match.
10014          return Intrinsic::x86_sse_comige_ss;	 // "__builtin_ia32_comige"
10015        case 't':	 // 1 string to match.
10016          return Intrinsic::x86_sse_comigt_ss;	 // "__builtin_ia32_comigt"
10017        }
10018        break;
10019      case 'l':	 // 2 strings to match.
10020        switch (BuiltinName[20]) {
10021        default: break;
10022        case 'e':	 // 1 string to match.
10023          return Intrinsic::x86_sse_comile_ss;	 // "__builtin_ia32_comile"
10024        case 't':	 // 1 string to match.
10025          return Intrinsic::x86_sse_comilt_ss;	 // "__builtin_ia32_comilt"
10026        }
10027        break;
10028      }
10029      break;
10030    case 'h':	 // 4 strings to match.
10031      switch (BuiltinName[16]) {
10032      default: break;
10033      case 'a':	 // 2 strings to match.
10034        if (BuiltinName.substr(17, 3) != "ddp")
10035          break;
10036        switch (BuiltinName[20]) {
10037        default: break;
10038        case 'd':	 // 1 string to match.
10039          return Intrinsic::x86_sse3_hadd_pd;	 // "__builtin_ia32_haddpd"
10040        case 's':	 // 1 string to match.
10041          return Intrinsic::x86_sse3_hadd_ps;	 // "__builtin_ia32_haddps"
10042        }
10043        break;
10044      case 's':	 // 2 strings to match.
10045        if (BuiltinName.substr(17, 3) != "ubp")
10046          break;
10047        switch (BuiltinName[20]) {
10048        default: break;
10049        case 'd':	 // 1 string to match.
10050          return Intrinsic::x86_sse3_hsub_pd;	 // "__builtin_ia32_hsubpd"
10051        case 's':	 // 1 string to match.
10052          return Intrinsic::x86_sse3_hsub_ps;	 // "__builtin_ia32_hsubps"
10053        }
10054        break;
10055      }
10056      break;
10057    case 'l':	 // 1 string to match.
10058      if (BuiltinName.substr(16, 5) != "fence")
10059        break;
10060      return Intrinsic::x86_sse2_lfence;	 // "__builtin_ia32_lfence"
10061    case 'm':	 // 2 strings to match.
10062      switch (BuiltinName[16]) {
10063      default: break;
10064      case 'f':	 // 1 string to match.
10065        if (BuiltinName.substr(17, 4) != "ence")
10066          break;
10067        return Intrinsic::x86_sse2_mfence;	 // "__builtin_ia32_mfence"
10068      case 'o':	 // 1 string to match.
10069        if (BuiltinName.substr(17, 4) != "vntq")
10070          break;
10071        return Intrinsic::x86_mmx_movnt_dq;	 // "__builtin_ia32_movntq"
10072      }
10073      break;
10074    case 'p':	 // 30 strings to match.
10075      switch (BuiltinName[16]) {
10076      default: break;
10077      case 'a':	 // 2 strings to match.
10078        if (BuiltinName.substr(17, 3) != "dds")
10079          break;
10080        switch (BuiltinName[20]) {
10081        default: break;
10082        case 'b':	 // 1 string to match.
10083          return Intrinsic::x86_mmx_padds_b;	 // "__builtin_ia32_paddsb"
10084        case 'w':	 // 1 string to match.
10085          return Intrinsic::x86_mmx_padds_w;	 // "__builtin_ia32_paddsw"
10086        }
10087        break;
10088      case 'f':	 // 2 strings to match.
10089        switch (BuiltinName[17]) {
10090        default: break;
10091        case 'n':	 // 1 string to match.
10092          if (BuiltinName.substr(18, 3) != "acc")
10093            break;
10094          return Intrinsic::x86_3dnowa_pfnacc;	 // "__builtin_ia32_pfnacc"
10095        case 's':	 // 1 string to match.
10096          if (BuiltinName.substr(18, 3) != "ubr")
10097            break;
10098          return Intrinsic::x86_3dnow_pfsubr;	 // "__builtin_ia32_pfsubr"
10099        }
10100        break;
10101      case 'h':	 // 4 strings to match.
10102        switch (BuiltinName[17]) {
10103        default: break;
10104        case 'a':	 // 2 strings to match.
10105          if (BuiltinName.substr(18, 2) != "dd")
10106            break;
10107          switch (BuiltinName[20]) {
10108          default: break;
10109          case 'd':	 // 1 string to match.
10110            return Intrinsic::x86_ssse3_phadd_d;	 // "__builtin_ia32_phaddd"
10111          case 'w':	 // 1 string to match.
10112            return Intrinsic::x86_ssse3_phadd_w;	 // "__builtin_ia32_phaddw"
10113          }
10114          break;
10115        case 's':	 // 2 strings to match.
10116          if (BuiltinName.substr(18, 2) != "ub")
10117            break;
10118          switch (BuiltinName[20]) {
10119          default: break;
10120          case 'd':	 // 1 string to match.
10121            return Intrinsic::x86_ssse3_phsub_d;	 // "__builtin_ia32_phsubd"
10122          case 'w':	 // 1 string to match.
10123            return Intrinsic::x86_ssse3_phsub_w;	 // "__builtin_ia32_phsubw"
10124          }
10125          break;
10126        }
10127        break;
10128      case 'm':	 // 6 strings to match.
10129        switch (BuiltinName[17]) {
10130        default: break;
10131        case 'a':	 // 2 strings to match.
10132          if (BuiltinName[18] != 'x')
10133            break;
10134          switch (BuiltinName[19]) {
10135          default: break;
10136          case 's':	 // 1 string to match.
10137            if (BuiltinName[20] != 'w')
10138              break;
10139            return Intrinsic::x86_mmx_pmaxs_w;	 // "__builtin_ia32_pmaxsw"
10140          case 'u':	 // 1 string to match.
10141            if (BuiltinName[20] != 'b')
10142              break;
10143            return Intrinsic::x86_mmx_pmaxu_b;	 // "__builtin_ia32_pmaxub"
10144          }
10145          break;
10146        case 'i':	 // 2 strings to match.
10147          if (BuiltinName[18] != 'n')
10148            break;
10149          switch (BuiltinName[19]) {
10150          default: break;
10151          case 's':	 // 1 string to match.
10152            if (BuiltinName[20] != 'w')
10153              break;
10154            return Intrinsic::x86_mmx_pmins_w;	 // "__builtin_ia32_pminsw"
10155          case 'u':	 // 1 string to match.
10156            if (BuiltinName[20] != 'b')
10157              break;
10158            return Intrinsic::x86_mmx_pminu_b;	 // "__builtin_ia32_pminub"
10159          }
10160          break;
10161        case 'u':	 // 2 strings to match.
10162          if (BuiltinName[18] != 'l')
10163            break;
10164          switch (BuiltinName[19]) {
10165          default: break;
10166          case 'h':	 // 1 string to match.
10167            if (BuiltinName[20] != 'w')
10168              break;
10169            return Intrinsic::x86_mmx_pmulh_w;	 // "__builtin_ia32_pmulhw"
10170          case 'l':	 // 1 string to match.
10171            if (BuiltinName[20] != 'w')
10172              break;
10173            return Intrinsic::x86_mmx_pmull_w;	 // "__builtin_ia32_pmullw"
10174          }
10175          break;
10176        }
10177        break;
10178      case 's':	 // 16 strings to match.
10179        switch (BuiltinName[17]) {
10180        default: break;
10181        case 'a':	 // 1 string to match.
10182          if (BuiltinName.substr(18, 3) != "dbw")
10183            break;
10184          return Intrinsic::x86_mmx_psad_bw;	 // "__builtin_ia32_psadbw"
10185        case 'h':	 // 2 strings to match.
10186          if (BuiltinName.substr(18, 2) != "uf")
10187            break;
10188          switch (BuiltinName[20]) {
10189          default: break;
10190          case 'b':	 // 1 string to match.
10191            return Intrinsic::x86_ssse3_pshuf_b;	 // "__builtin_ia32_pshufb"
10192          case 'w':	 // 1 string to match.
10193            return Intrinsic::x86_sse_pshuf_w;	 // "__builtin_ia32_pshufw"
10194          }
10195          break;
10196        case 'i':	 // 3 strings to match.
10197          if (BuiltinName.substr(18, 2) != "gn")
10198            break;
10199          switch (BuiltinName[20]) {
10200          default: break;
10201          case 'b':	 // 1 string to match.
10202            return Intrinsic::x86_ssse3_psign_b;	 // "__builtin_ia32_psignb"
10203          case 'd':	 // 1 string to match.
10204            return Intrinsic::x86_ssse3_psign_d;	 // "__builtin_ia32_psignd"
10205          case 'w':	 // 1 string to match.
10206            return Intrinsic::x86_ssse3_psign_w;	 // "__builtin_ia32_psignw"
10207          }
10208          break;
10209        case 'l':	 // 3 strings to match.
10210          if (BuiltinName[18] != 'l')
10211            break;
10212          switch (BuiltinName[19]) {
10213          default: break;
10214          case 'd':	 // 1 string to match.
10215            if (BuiltinName[20] != 'i')
10216              break;
10217            return Intrinsic::x86_mmx_pslli_d;	 // "__builtin_ia32_pslldi"
10218          case 'q':	 // 1 string to match.
10219            if (BuiltinName[20] != 'i')
10220              break;
10221            return Intrinsic::x86_mmx_pslli_q;	 // "__builtin_ia32_psllqi"
10222          case 'w':	 // 1 string to match.
10223            if (BuiltinName[20] != 'i')
10224              break;
10225            return Intrinsic::x86_mmx_pslli_w;	 // "__builtin_ia32_psllwi"
10226          }
10227          break;
10228        case 'r':	 // 5 strings to match.
10229          switch (BuiltinName[18]) {
10230          default: break;
10231          case 'a':	 // 2 strings to match.
10232            switch (BuiltinName[19]) {
10233            default: break;
10234            case 'd':	 // 1 string to match.
10235              if (BuiltinName[20] != 'i')
10236                break;
10237              return Intrinsic::x86_mmx_psrai_d;	 // "__builtin_ia32_psradi"
10238            case 'w':	 // 1 string to match.
10239              if (BuiltinName[20] != 'i')
10240                break;
10241              return Intrinsic::x86_mmx_psrai_w;	 // "__builtin_ia32_psrawi"
10242            }
10243            break;
10244          case 'l':	 // 3 strings to match.
10245            switch (BuiltinName[19]) {
10246            default: break;
10247            case 'd':	 // 1 string to match.
10248              if (BuiltinName[20] != 'i')
10249                break;
10250              return Intrinsic::x86_mmx_psrli_d;	 // "__builtin_ia32_psrldi"
10251            case 'q':	 // 1 string to match.
10252              if (BuiltinName[20] != 'i')
10253                break;
10254              return Intrinsic::x86_mmx_psrli_q;	 // "__builtin_ia32_psrlqi"
10255            case 'w':	 // 1 string to match.
10256              if (BuiltinName[20] != 'i')
10257                break;
10258              return Intrinsic::x86_mmx_psrli_w;	 // "__builtin_ia32_psrlwi"
10259            }
10260            break;
10261          }
10262          break;
10263        case 'u':	 // 2 strings to match.
10264          if (BuiltinName.substr(18, 2) != "bs")
10265            break;
10266          switch (BuiltinName[20]) {
10267          default: break;
10268          case 'b':	 // 1 string to match.
10269            return Intrinsic::x86_mmx_psubs_b;	 // "__builtin_ia32_psubsb"
10270          case 'w':	 // 1 string to match.
10271            return Intrinsic::x86_mmx_psubs_w;	 // "__builtin_ia32_psubsw"
10272          }
10273          break;
10274        }
10275        break;
10276      }
10277      break;
10278    case 's':	 // 5 strings to match.
10279      switch (BuiltinName[16]) {
10280      default: break;
10281      case 'f':	 // 1 string to match.
10282        if (BuiltinName.substr(17, 4) != "ence")
10283          break;
10284        return Intrinsic::x86_sse_sfence;	 // "__builtin_ia32_sfence"
10285      case 'q':	 // 4 strings to match.
10286        if (BuiltinName.substr(17, 2) != "rt")
10287          break;
10288        switch (BuiltinName[19]) {
10289        default: break;
10290        case 'p':	 // 2 strings to match.
10291          switch (BuiltinName[20]) {
10292          default: break;
10293          case 'd':	 // 1 string to match.
10294            return Intrinsic::x86_sse2_sqrt_pd;	 // "__builtin_ia32_sqrtpd"
10295          case 's':	 // 1 string to match.
10296            return Intrinsic::x86_sse_sqrt_ps;	 // "__builtin_ia32_sqrtps"
10297          }
10298          break;
10299        case 's':	 // 2 strings to match.
10300          switch (BuiltinName[20]) {
10301          default: break;
10302          case 'd':	 // 1 string to match.
10303            return Intrinsic::x86_sse2_sqrt_sd;	 // "__builtin_ia32_sqrtsd"
10304          case 's':	 // 1 string to match.
10305            return Intrinsic::x86_sse_sqrt_ss;	 // "__builtin_ia32_sqrtss"
10306          }
10307          break;
10308        }
10309        break;
10310      }
10311      break;
10312    }
10313    break;
10314  case 22:	 // 46 strings to match.
10315    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
10316      break;
10317    switch (BuiltinName[15]) {
10318    default: break;
10319    case 'b':	 // 2 strings to match.
10320      if (BuiltinName.substr(16, 5) != "lendp")
10321        break;
10322      switch (BuiltinName[21]) {
10323      default: break;
10324      case 'd':	 // 1 string to match.
10325        return Intrinsic::x86_sse41_blendpd;	 // "__builtin_ia32_blendpd"
10326      case 's':	 // 1 string to match.
10327        return Intrinsic::x86_sse41_blendps;	 // "__builtin_ia32_blendps"
10328      }
10329      break;
10330    case 'c':	 // 6 strings to match.
10331      switch (BuiltinName[16]) {
10332      default: break;
10333      case 'l':	 // 1 string to match.
10334        if (BuiltinName.substr(17, 5) != "flush")
10335          break;
10336        return Intrinsic::x86_sse2_clflush;	 // "__builtin_ia32_clflush"
10337      case 'o':	 // 1 string to match.
10338        if (BuiltinName.substr(17, 5) != "mineq")
10339          break;
10340        return Intrinsic::x86_sse_comineq_ss;	 // "__builtin_ia32_comineq"
10341      case 'r':	 // 4 strings to match.
10342        if (BuiltinName.substr(17, 3) != "c32")
10343          break;
10344        switch (BuiltinName[20]) {
10345        default: break;
10346        case 'd':	 // 1 string to match.
10347          if (BuiltinName[21] != 'i')
10348            break;
10349          return Intrinsic::x86_sse42_crc32_64_64;	 // "__builtin_ia32_crc32di"
10350        case 'h':	 // 1 string to match.
10351          if (BuiltinName[21] != 'i')
10352            break;
10353          return Intrinsic::x86_sse42_crc32_32_16;	 // "__builtin_ia32_crc32hi"
10354        case 'q':	 // 1 string to match.
10355          if (BuiltinName[21] != 'i')
10356            break;
10357          return Intrinsic::x86_sse42_crc32_32_8;	 // "__builtin_ia32_crc32qi"
10358        case 's':	 // 1 string to match.
10359          if (BuiltinName[21] != 'i')
10360            break;
10361          return Intrinsic::x86_sse42_crc32_32_32;	 // "__builtin_ia32_crc32si"
10362        }
10363        break;
10364      }
10365      break;
10366    case 'd':	 // 1 string to match.
10367      if (BuiltinName.substr(16, 6) != "pps256")
10368        break;
10369      return Intrinsic::x86_avx_dp_ps_256;	 // "__builtin_ia32_dpps256"
10370    case 'm':	 // 1 string to match.
10371      if (BuiltinName.substr(16, 6) != "onitor")
10372        break;
10373      return Intrinsic::x86_sse3_monitor;	 // "__builtin_ia32_monitor"
10374    case 'p':	 // 25 strings to match.
10375      switch (BuiltinName[16]) {
10376      default: break;
10377      case 'a':	 // 4 strings to match.
10378        switch (BuiltinName[17]) {
10379        default: break;
10380        case 'd':	 // 2 strings to match.
10381          if (BuiltinName.substr(18, 3) != "dus")
10382            break;
10383          switch (BuiltinName[21]) {
10384          default: break;
10385          case 'b':	 // 1 string to match.
10386            return Intrinsic::x86_mmx_paddus_b;	 // "__builtin_ia32_paddusb"
10387          case 'w':	 // 1 string to match.
10388            return Intrinsic::x86_mmx_paddus_w;	 // "__builtin_ia32_paddusw"
10389          }
10390          break;
10391        case 'l':	 // 1 string to match.
10392          if (BuiltinName.substr(18, 4) != "ignr")
10393            break;
10394          return Intrinsic::x86_mmx_palignr_b;	 // "__builtin_ia32_palignr"
10395        case 'v':	 // 1 string to match.
10396          if (BuiltinName.substr(18, 4) != "gusb")
10397            break;
10398          return Intrinsic::x86_3dnow_pavgusb;	 // "__builtin_ia32_pavgusb"
10399        }
10400        break;
10401      case 'c':	 // 8 strings to match.
10402        if (BuiltinName.substr(17, 2) != "mp")
10403          break;
10404        switch (BuiltinName[19]) {
10405        default: break;
10406        case 'e':	 // 4 strings to match.
10407          if (BuiltinName[20] != 'q')
10408            break;
10409          switch (BuiltinName[21]) {
10410          default: break;
10411          case 'b':	 // 1 string to match.
10412            return Intrinsic::x86_mmx_pcmpeq_b;	 // "__builtin_ia32_pcmpeqb"
10413          case 'd':	 // 1 string to match.
10414            return Intrinsic::x86_mmx_pcmpeq_d;	 // "__builtin_ia32_pcmpeqd"
10415          case 'q':	 // 1 string to match.
10416            return Intrinsic::x86_sse41_pcmpeqq;	 // "__builtin_ia32_pcmpeqq"
10417          case 'w':	 // 1 string to match.
10418            return Intrinsic::x86_mmx_pcmpeq_w;	 // "__builtin_ia32_pcmpeqw"
10419          }
10420          break;
10421        case 'g':	 // 4 strings to match.
10422          if (BuiltinName[20] != 't')
10423            break;
10424          switch (BuiltinName[21]) {
10425          default: break;
10426          case 'b':	 // 1 string to match.
10427            return Intrinsic::x86_mmx_pcmpgt_b;	 // "__builtin_ia32_pcmpgtb"
10428          case 'd':	 // 1 string to match.
10429            return Intrinsic::x86_mmx_pcmpgt_d;	 // "__builtin_ia32_pcmpgtd"
10430          case 'q':	 // 1 string to match.
10431            return Intrinsic::x86_sse42_pcmpgtq;	 // "__builtin_ia32_pcmpgtq"
10432          case 'w':	 // 1 string to match.
10433            return Intrinsic::x86_mmx_pcmpgt_w;	 // "__builtin_ia32_pcmpgtw"
10434          }
10435          break;
10436        }
10437        break;
10438      case 'f':	 // 5 strings to match.
10439        switch (BuiltinName[17]) {
10440        default: break;
10441        case 'c':	 // 3 strings to match.
10442          if (BuiltinName.substr(18, 2) != "mp")
10443            break;
10444          switch (BuiltinName[20]) {
10445          default: break;
10446          case 'e':	 // 1 string to match.
10447            if (BuiltinName[21] != 'q')
10448              break;
10449            return Intrinsic::x86_3dnow_pfcmpeq;	 // "__builtin_ia32_pfcmpeq"
10450          case 'g':	 // 2 strings to match.
10451            switch (BuiltinName[21]) {
10452            default: break;
10453            case 'e':	 // 1 string to match.
10454              return Intrinsic::x86_3dnow_pfcmpge;	 // "__builtin_ia32_pfcmpge"
10455            case 't':	 // 1 string to match.
10456              return Intrinsic::x86_3dnow_pfcmpgt;	 // "__builtin_ia32_pfcmpgt"
10457            }
10458            break;
10459          }
10460          break;
10461        case 'p':	 // 1 string to match.
10462          if (BuiltinName.substr(18, 4) != "nacc")
10463            break;
10464          return Intrinsic::x86_3dnowa_pfpnacc;	 // "__builtin_ia32_pfpnacc"
10465        case 'r':	 // 1 string to match.
10466          if (BuiltinName.substr(18, 4) != "sqrt")
10467            break;
10468          return Intrinsic::x86_3dnow_pfrsqrt;	 // "__builtin_ia32_pfrsqrt"
10469        }
10470        break;
10471      case 'h':	 // 2 strings to match.
10472        switch (BuiltinName[17]) {
10473        default: break;
10474        case 'a':	 // 1 string to match.
10475          if (BuiltinName.substr(18, 4) != "ddsw")
10476            break;
10477          return Intrinsic::x86_ssse3_phadd_sw;	 // "__builtin_ia32_phaddsw"
10478        case 's':	 // 1 string to match.
10479          if (BuiltinName.substr(18, 4) != "ubsw")
10480            break;
10481          return Intrinsic::x86_ssse3_phsub_sw;	 // "__builtin_ia32_phsubsw"
10482        }
10483        break;
10484      case 'm':	 // 4 strings to match.
10485        switch (BuiltinName[17]) {
10486        default: break;
10487        case 'a':	 // 1 string to match.
10488          if (BuiltinName.substr(18, 4) != "ddwd")
10489            break;
10490          return Intrinsic::x86_mmx_pmadd_wd;	 // "__builtin_ia32_pmaddwd"
10491        case 'u':	 // 3 strings to match.
10492          if (BuiltinName[18] != 'l')
10493            break;
10494          switch (BuiltinName[19]) {
10495          default: break;
10496          case 'h':	 // 2 strings to match.
10497            switch (BuiltinName[20]) {
10498            default: break;
10499            case 'r':	 // 1 string to match.
10500              if (BuiltinName[21] != 'w')
10501                break;
10502              return Intrinsic::x86_3dnow_pmulhrw;	 // "__builtin_ia32_pmulhrw"
10503            case 'u':	 // 1 string to match.
10504              if (BuiltinName[21] != 'w')
10505                break;
10506              return Intrinsic::x86_mmx_pmulhu_w;	 // "__builtin_ia32_pmulhuw"
10507            }
10508            break;
10509          case 'u':	 // 1 string to match.
10510            if (BuiltinName.substr(20, 2) != "dq")
10511              break;
10512            return Intrinsic::x86_mmx_pmulu_dq;	 // "__builtin_ia32_pmuludq"
10513          }
10514          break;
10515        }
10516        break;
10517      case 's':	 // 2 strings to match.
10518        if (BuiltinName.substr(17, 4) != "ubus")
10519          break;
10520        switch (BuiltinName[21]) {
10521        default: break;
10522        case 'b':	 // 1 string to match.
10523          return Intrinsic::x86_mmx_psubus_b;	 // "__builtin_ia32_psubusb"
10524        case 'w':	 // 1 string to match.
10525          return Intrinsic::x86_mmx_psubus_w;	 // "__builtin_ia32_psubusw"
10526        }
10527        break;
10528      }
10529      break;
10530    case 'r':	 // 6 strings to match.
10531      switch (BuiltinName[16]) {
10532      default: break;
10533      case 'o':	 // 4 strings to match.
10534        if (BuiltinName.substr(17, 3) != "und")
10535          break;
10536        switch (BuiltinName[20]) {
10537        default: break;
10538        case 'p':	 // 2 strings to match.
10539          switch (BuiltinName[21]) {
10540          default: break;
10541          case 'd':	 // 1 string to match.
10542            return Intrinsic::x86_sse41_round_pd;	 // "__builtin_ia32_roundpd"
10543          case 's':	 // 1 string to match.
10544            return Intrinsic::x86_sse41_round_ps;	 // "__builtin_ia32_roundps"
10545          }
10546          break;
10547        case 's':	 // 2 strings to match.
10548          switch (BuiltinName[21]) {
10549          default: break;
10550          case 'd':	 // 1 string to match.
10551            return Intrinsic::x86_sse41_round_sd;	 // "__builtin_ia32_roundsd"
10552          case 's':	 // 1 string to match.
10553            return Intrinsic::x86_sse41_round_ss;	 // "__builtin_ia32_roundss"
10554          }
10555          break;
10556        }
10557        break;
10558      case 's':	 // 2 strings to match.
10559        if (BuiltinName.substr(17, 3) != "qrt")
10560          break;
10561        switch (BuiltinName[20]) {
10562        default: break;
10563        case 'p':	 // 1 string to match.
10564          if (BuiltinName[21] != 's')
10565            break;
10566          return Intrinsic::x86_sse_rsqrt_ps;	 // "__builtin_ia32_rsqrtps"
10567        case 's':	 // 1 string to match.
10568          if (BuiltinName[21] != 's')
10569            break;
10570          return Intrinsic::x86_sse_rsqrt_ss;	 // "__builtin_ia32_rsqrtss"
10571        }
10572        break;
10573      }
10574      break;
10575    case 'u':	 // 5 strings to match.
10576      if (BuiltinName.substr(16, 4) != "comi")
10577        break;
10578      switch (BuiltinName[20]) {
10579      default: break;
10580      case 'e':	 // 1 string to match.
10581        if (BuiltinName[21] != 'q')
10582          break;
10583        return Intrinsic::x86_sse_ucomieq_ss;	 // "__builtin_ia32_ucomieq"
10584      case 'g':	 // 2 strings to match.
10585        switch (BuiltinName[21]) {
10586        default: break;
10587        case 'e':	 // 1 string to match.
10588          return Intrinsic::x86_sse_ucomige_ss;	 // "__builtin_ia32_ucomige"
10589        case 't':	 // 1 string to match.
10590          return Intrinsic::x86_sse_ucomigt_ss;	 // "__builtin_ia32_ucomigt"
10591        }
10592        break;
10593      case 'l':	 // 2 strings to match.
10594        switch (BuiltinName[21]) {
10595        default: break;
10596        case 'e':	 // 1 string to match.
10597          return Intrinsic::x86_sse_ucomile_ss;	 // "__builtin_ia32_ucomile"
10598        case 't':	 // 1 string to match.
10599          return Intrinsic::x86_sse_ucomilt_ss;	 // "__builtin_ia32_ucomilt"
10600        }
10601        break;
10602      }
10603      break;
10604    }
10605    break;
10606  case 23:	 // 67 strings to match.
10607    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
10608      break;
10609    switch (BuiltinName[15]) {
10610    default: break;
10611    case 'a':	 // 2 strings to match.
10612      if (BuiltinName.substr(16, 6) != "ddsubp")
10613        break;
10614      switch (BuiltinName[22]) {
10615      default: break;
10616      case 'd':	 // 1 string to match.
10617        return Intrinsic::x86_sse3_addsub_pd;	 // "__builtin_ia32_addsubpd"
10618      case 's':	 // 1 string to match.
10619        return Intrinsic::x86_sse3_addsub_ps;	 // "__builtin_ia32_addsubps"
10620      }
10621      break;
10622    case 'b':	 // 2 strings to match.
10623      if (BuiltinName.substr(16, 6) != "lendvp")
10624        break;
10625      switch (BuiltinName[22]) {
10626      default: break;
10627      case 'd':	 // 1 string to match.
10628        return Intrinsic::x86_sse41_blendvpd;	 // "__builtin_ia32_blendvpd"
10629      case 's':	 // 1 string to match.
10630        return Intrinsic::x86_sse41_blendvps;	 // "__builtin_ia32_blendvps"
10631      }
10632      break;
10633    case 'c':	 // 23 strings to match.
10634      switch (BuiltinName[16]) {
10635      default: break;
10636      case 'm':	 // 2 strings to match.
10637        if (BuiltinName.substr(17, 2) != "pp")
10638          break;
10639        switch (BuiltinName[19]) {
10640        default: break;
10641        case 'd':	 // 1 string to match.
10642          if (BuiltinName.substr(20, 3) != "256")
10643            break;
10644          return Intrinsic::x86_avx_cmp_pd_256;	 // "__builtin_ia32_cmppd256"
10645        case 's':	 // 1 string to match.
10646          if (BuiltinName.substr(20, 3) != "256")
10647            break;
10648          return Intrinsic::x86_avx_cmp_ps_256;	 // "__builtin_ia32_cmpps256"
10649        }
10650        break;
10651      case 'o':	 // 5 strings to match.
10652        if (BuiltinName.substr(17, 4) != "misd")
10653          break;
10654        switch (BuiltinName[21]) {
10655        default: break;
10656        case 'e':	 // 1 string to match.
10657          if (BuiltinName[22] != 'q')
10658            break;
10659          return Intrinsic::x86_sse2_comieq_sd;	 // "__builtin_ia32_comisdeq"
10660        case 'g':	 // 2 strings to match.
10661          switch (BuiltinName[22]) {
10662          default: break;
10663          case 'e':	 // 1 string to match.
10664            return Intrinsic::x86_sse2_comige_sd;	 // "__builtin_ia32_comisdge"
10665          case 't':	 // 1 string to match.
10666            return Intrinsic::x86_sse2_comigt_sd;	 // "__builtin_ia32_comisdgt"
10667          }
10668          break;
10669        case 'l':	 // 2 strings to match.
10670          switch (BuiltinName[22]) {
10671          default: break;
10672          case 'e':	 // 1 string to match.
10673            return Intrinsic::x86_sse2_comile_sd;	 // "__builtin_ia32_comisdle"
10674          case 't':	 // 1 string to match.
10675            return Intrinsic::x86_sse2_comilt_sd;	 // "__builtin_ia32_comisdlt"
10676          }
10677          break;
10678        }
10679        break;
10680      case 'v':	 // 16 strings to match.
10681        if (BuiltinName[17] != 't')
10682          break;
10683        switch (BuiltinName[18]) {
10684        default: break;
10685        case 'd':	 // 2 strings to match.
10686          if (BuiltinName.substr(19, 3) != "q2p")
10687            break;
10688          switch (BuiltinName[22]) {
10689          default: break;
10690          case 'd':	 // 1 string to match.
10691            return Intrinsic::x86_sse2_cvtdq2pd;	 // "__builtin_ia32_cvtdq2pd"
10692          case 's':	 // 1 string to match.
10693            return Intrinsic::x86_sse2_cvtdq2ps;	 // "__builtin_ia32_cvtdq2ps"
10694          }
10695          break;
10696        case 'p':	 // 8 strings to match.
10697          switch (BuiltinName[19]) {
10698          default: break;
10699          case 'd':	 // 3 strings to match.
10700            if (BuiltinName[20] != '2')
10701              break;
10702            switch (BuiltinName[21]) {
10703            default: break;
10704            case 'd':	 // 1 string to match.
10705              if (BuiltinName[22] != 'q')
10706                break;
10707              return Intrinsic::x86_sse2_cvtpd2dq;	 // "__builtin_ia32_cvtpd2dq"
10708            case 'p':	 // 2 strings to match.
10709              switch (BuiltinName[22]) {
10710              default: break;
10711              case 'i':	 // 1 string to match.
10712                return Intrinsic::x86_sse_cvtpd2pi;	 // "__builtin_ia32_cvtpd2pi"
10713              case 's':	 // 1 string to match.
10714                return Intrinsic::x86_sse2_cvtpd2ps;	 // "__builtin_ia32_cvtpd2ps"
10715              }
10716              break;
10717            }
10718            break;
10719          case 'i':	 // 2 strings to match.
10720            if (BuiltinName.substr(20, 2) != "2p")
10721              break;
10722            switch (BuiltinName[22]) {
10723            default: break;
10724            case 'd':	 // 1 string to match.
10725              return Intrinsic::x86_sse_cvtpi2pd;	 // "__builtin_ia32_cvtpi2pd"
10726            case 's':	 // 1 string to match.
10727              return Intrinsic::x86_sse_cvtpi2ps;	 // "__builtin_ia32_cvtpi2ps"
10728            }
10729            break;
10730          case 's':	 // 3 strings to match.
10731            if (BuiltinName[20] != '2')
10732              break;
10733            switch (BuiltinName[21]) {
10734            default: break;
10735            case 'd':	 // 1 string to match.
10736              if (BuiltinName[22] != 'q')
10737                break;
10738              return Intrinsic::x86_sse2_cvtps2dq;	 // "__builtin_ia32_cvtps2dq"
10739            case 'p':	 // 2 strings to match.
10740              switch (BuiltinName[22]) {
10741              default: break;
10742              case 'd':	 // 1 string to match.
10743                return Intrinsic::x86_sse2_cvtps2pd;	 // "__builtin_ia32_cvtps2pd"
10744              case 'i':	 // 1 string to match.
10745                return Intrinsic::x86_sse_cvtps2pi;	 // "__builtin_ia32_cvtps2pi"
10746              }
10747              break;
10748            }
10749            break;
10750          }
10751          break;
10752        case 's':	 // 6 strings to match.
10753          switch (BuiltinName[19]) {
10754          default: break;
10755          case 'd':	 // 2 strings to match.
10756            if (BuiltinName.substr(20, 2) != "2s")
10757              break;
10758            switch (BuiltinName[22]) {
10759            default: break;
10760            case 'i':	 // 1 string to match.
10761              return Intrinsic::x86_sse2_cvtsd2si;	 // "__builtin_ia32_cvtsd2si"
10762            case 's':	 // 1 string to match.
10763              return Intrinsic::x86_sse2_cvtsd2ss;	 // "__builtin_ia32_cvtsd2ss"
10764            }
10765            break;
10766          case 'i':	 // 2 strings to match.
10767            if (BuiltinName.substr(20, 2) != "2s")
10768              break;
10769            switch (BuiltinName[22]) {
10770            default: break;
10771            case 'd':	 // 1 string to match.
10772              return Intrinsic::x86_sse2_cvtsi2sd;	 // "__builtin_ia32_cvtsi2sd"
10773            case 's':	 // 1 string to match.
10774              return Intrinsic::x86_sse_cvtsi2ss;	 // "__builtin_ia32_cvtsi2ss"
10775            }
10776            break;
10777          case 's':	 // 2 strings to match.
10778            if (BuiltinName.substr(20, 2) != "2s")
10779              break;
10780            switch (BuiltinName[22]) {
10781            default: break;
10782            case 'd':	 // 1 string to match.
10783              return Intrinsic::x86_sse2_cvtss2sd;	 // "__builtin_ia32_cvtss2sd"
10784            case 'i':	 // 1 string to match.
10785              return Intrinsic::x86_sse_cvtss2si;	 // "__builtin_ia32_cvtss2si"
10786            }
10787            break;
10788          }
10789          break;
10790        }
10791        break;
10792      }
10793      break;
10794    case 'l':	 // 1 string to match.
10795      if (BuiltinName.substr(16, 7) != "ddqu256")
10796        break;
10797      return Intrinsic::x86_avx_ldu_dq_256;	 // "__builtin_ia32_lddqu256"
10798    case 'm':	 // 8 strings to match.
10799      switch (BuiltinName[16]) {
10800      default: break;
10801      case 'a':	 // 3 strings to match.
10802        switch (BuiltinName[17]) {
10803        default: break;
10804        case 's':	 // 1 string to match.
10805          if (BuiltinName.substr(18, 5) != "kmovq")
10806            break;
10807          return Intrinsic::x86_mmx_maskmovq;	 // "__builtin_ia32_maskmovq"
10808        case 'x':	 // 2 strings to match.
10809          if (BuiltinName[18] != 'p')
10810            break;
10811          switch (BuiltinName[19]) {
10812          default: break;
10813          case 'd':	 // 1 string to match.
10814            if (BuiltinName.substr(20, 3) != "256")
10815              break;
10816            return Intrinsic::x86_avx_max_pd_256;	 // "__builtin_ia32_maxpd256"
10817          case 's':	 // 1 string to match.
10818            if (BuiltinName.substr(20, 3) != "256")
10819              break;
10820            return Intrinsic::x86_avx_max_ps_256;	 // "__builtin_ia32_maxps256"
10821          }
10822          break;
10823        }
10824        break;
10825      case 'i':	 // 2 strings to match.
10826        if (BuiltinName.substr(17, 2) != "np")
10827          break;
10828        switch (BuiltinName[19]) {
10829        default: break;
10830        case 'd':	 // 1 string to match.
10831          if (BuiltinName.substr(20, 3) != "256")
10832            break;
10833          return Intrinsic::x86_avx_min_pd_256;	 // "__builtin_ia32_minpd256"
10834        case 's':	 // 1 string to match.
10835          if (BuiltinName.substr(20, 3) != "256")
10836            break;
10837          return Intrinsic::x86_avx_min_ps_256;	 // "__builtin_ia32_minps256"
10838        }
10839        break;
10840      case 'o':	 // 3 strings to match.
10841        if (BuiltinName[17] != 'v')
10842          break;
10843        switch (BuiltinName[18]) {
10844        default: break;
10845        case 'm':	 // 2 strings to match.
10846          if (BuiltinName.substr(19, 3) != "skp")
10847            break;
10848          switch (BuiltinName[22]) {
10849          default: break;
10850          case 'd':	 // 1 string to match.
10851            return Intrinsic::x86_sse2_movmsk_pd;	 // "__builtin_ia32_movmskpd"
10852          case 's':	 // 1 string to match.
10853            return Intrinsic::x86_sse_movmsk_ps;	 // "__builtin_ia32_movmskps"
10854          }
10855          break;
10856        case 'n':	 // 1 string to match.
10857          if (BuiltinName.substr(19, 4) != "tdqa")
10858            break;
10859          return Intrinsic::x86_sse41_movntdqa;	 // "__builtin_ia32_movntdqa"
10860        }
10861        break;
10862      }
10863      break;
10864    case 'p':	 // 21 strings to match.
10865      switch (BuiltinName[16]) {
10866      default: break;
10867      case 'a':	 // 8 strings to match.
10868        switch (BuiltinName[17]) {
10869        default: break;
10870        case 'b':	 // 3 strings to match.
10871          if (BuiltinName[18] != 's')
10872            break;
10873          switch (BuiltinName[19]) {
10874          default: break;
10875          case 'b':	 // 1 string to match.
10876            if (BuiltinName.substr(20, 3) != "128")
10877              break;
10878            return Intrinsic::x86_ssse3_pabs_b_128;	 // "__builtin_ia32_pabsb128"
10879          case 'd':	 // 1 string to match.
10880            if (BuiltinName.substr(20, 3) != "128")
10881              break;
10882            return Intrinsic::x86_ssse3_pabs_d_128;	 // "__builtin_ia32_pabsd128"
10883          case 'w':	 // 1 string to match.
10884            if (BuiltinName.substr(20, 3) != "128")
10885              break;
10886            return Intrinsic::x86_ssse3_pabs_w_128;	 // "__builtin_ia32_pabsw128"
10887          }
10888          break;
10889        case 'c':	 // 3 strings to match.
10890          if (BuiltinName[18] != 'k')
10891            break;
10892          switch (BuiltinName[19]) {
10893          default: break;
10894          case 's':	 // 2 strings to match.
10895            if (BuiltinName[20] != 's')
10896              break;
10897            switch (BuiltinName[21]) {
10898            default: break;
10899            case 'd':	 // 1 string to match.
10900              if (BuiltinName[22] != 'w')
10901                break;
10902              return Intrinsic::x86_mmx_packssdw;	 // "__builtin_ia32_packssdw"
10903            case 'w':	 // 1 string to match.
10904              if (BuiltinName[22] != 'b')
10905                break;
10906              return Intrinsic::x86_mmx_packsswb;	 // "__builtin_ia32_packsswb"
10907            }
10908            break;
10909          case 'u':	 // 1 string to match.
10910            if (BuiltinName.substr(20, 3) != "swb")
10911              break;
10912            return Intrinsic::x86_mmx_packuswb;	 // "__builtin_ia32_packuswb"
10913          }
10914          break;
10915        case 'v':	 // 2 strings to match.
10916          if (BuiltinName[18] != 'g')
10917            break;
10918          switch (BuiltinName[19]) {
10919          default: break;
10920          case 'b':	 // 1 string to match.
10921            if (BuiltinName.substr(20, 3) != "128")
10922              break;
10923            return Intrinsic::x86_sse2_pavg_b;	 // "__builtin_ia32_pavgb128"
10924          case 'w':	 // 1 string to match.
10925            if (BuiltinName.substr(20, 3) != "128")
10926              break;
10927            return Intrinsic::x86_sse2_pavg_w;	 // "__builtin_ia32_pavgw128"
10928          }
10929          break;
10930        }
10931        break;
10932      case 'f':	 // 3 strings to match.
10933        if (BuiltinName[17] != 'r')
10934          break;
10935        switch (BuiltinName[18]) {
10936        default: break;
10937        case 'c':	 // 2 strings to match.
10938          if (BuiltinName.substr(19, 3) != "pit")
10939            break;
10940          switch (BuiltinName[22]) {
10941          default: break;
10942          case '1':	 // 1 string to match.
10943            return Intrinsic::x86_3dnow_pfrcpit1;	 // "__builtin_ia32_pfrcpit1"
10944          case '2':	 // 1 string to match.
10945            return Intrinsic::x86_3dnow_pfrcpit2;	 // "__builtin_ia32_pfrcpit2"
10946          }
10947          break;
10948        case 's':	 // 1 string to match.
10949          if (BuiltinName.substr(19, 4) != "qit1")
10950            break;
10951          return Intrinsic::x86_3dnow_pfrsqit1;	 // "__builtin_ia32_pfrsqit1"
10952        }
10953        break;
10954      case 'm':	 // 2 strings to match.
10955        switch (BuiltinName[17]) {
10956        default: break;
10957        case 'o':	 // 1 string to match.
10958          if (BuiltinName.substr(18, 5) != "vmskb")
10959            break;
10960          return Intrinsic::x86_mmx_pmovmskb;	 // "__builtin_ia32_pmovmskb"
10961        case 'u':	 // 1 string to match.
10962          if (BuiltinName.substr(18, 5) != "lhrsw")
10963            break;
10964          return Intrinsic::x86_ssse3_pmul_hr_sw;	 // "__builtin_ia32_pmulhrsw"
10965        }
10966        break;
10967      case 's':	 // 8 strings to match.
10968        switch (BuiltinName[17]) {
10969        default: break;
10970        case 'l':	 // 3 strings to match.
10971          if (BuiltinName[18] != 'l')
10972            break;
10973          switch (BuiltinName[19]) {
10974          default: break;
10975          case 'd':	 // 1 string to match.
10976            if (BuiltinName.substr(20, 3) != "128")
10977              break;
10978            return Intrinsic::x86_sse2_psll_d;	 // "__builtin_ia32_pslld128"
10979          case 'q':	 // 1 string to match.
10980            if (BuiltinName.substr(20, 3) != "128")
10981              break;
10982            return Intrinsic::x86_sse2_psll_q;	 // "__builtin_ia32_psllq128"
10983          case 'w':	 // 1 string to match.
10984            if (BuiltinName.substr(20, 3) != "128")
10985              break;
10986            return Intrinsic::x86_sse2_psll_w;	 // "__builtin_ia32_psllw128"
10987          }
10988          break;
10989        case 'r':	 // 5 strings to match.
10990          switch (BuiltinName[18]) {
10991          default: break;
10992          case 'a':	 // 2 strings to match.
10993            switch (BuiltinName[19]) {
10994            default: break;
10995            case 'd':	 // 1 string to match.
10996              if (BuiltinName.substr(20, 3) != "128")
10997                break;
10998              return Intrinsic::x86_sse2_psra_d;	 // "__builtin_ia32_psrad128"
10999            case 'w':	 // 1 string to match.
11000              if (BuiltinName.substr(20, 3) != "128")
11001                break;
11002              return Intrinsic::x86_sse2_psra_w;	 // "__builtin_ia32_psraw128"
11003            }
11004            break;
11005          case 'l':	 // 3 strings to match.
11006            switch (BuiltinName[19]) {
11007            default: break;
11008            case 'd':	 // 1 string to match.
11009              if (BuiltinName.substr(20, 3) != "128")
11010                break;
11011              return Intrinsic::x86_sse2_psrl_d;	 // "__builtin_ia32_psrld128"
11012            case 'q':	 // 1 string to match.
11013              if (BuiltinName.substr(20, 3) != "128")
11014                break;
11015              return Intrinsic::x86_sse2_psrl_q;	 // "__builtin_ia32_psrlq128"
11016            case 'w':	 // 1 string to match.
11017              if (BuiltinName.substr(20, 3) != "128")
11018                break;
11019              return Intrinsic::x86_sse2_psrl_w;	 // "__builtin_ia32_psrlw128"
11020            }
11021            break;
11022          }
11023          break;
11024        }
11025        break;
11026      }
11027      break;
11028    case 'r':	 // 1 string to match.
11029      if (BuiltinName.substr(16, 7) != "cpps256")
11030        break;
11031      return Intrinsic::x86_avx_rcp_ps_256;	 // "__builtin_ia32_rcpps256"
11032    case 's':	 // 3 strings to match.
11033      if (BuiltinName.substr(16, 4) != "tore")
11034        break;
11035      switch (BuiltinName[20]) {
11036      default: break;
11037      case 'd':	 // 1 string to match.
11038        if (BuiltinName.substr(21, 2) != "qu")
11039          break;
11040        return Intrinsic::x86_sse2_storeu_dq;	 // "__builtin_ia32_storedqu"
11041      case 'u':	 // 2 strings to match.
11042        if (BuiltinName[21] != 'p')
11043          break;
11044        switch (BuiltinName[22]) {
11045        default: break;
11046        case 'd':	 // 1 string to match.
11047          return Intrinsic::x86_sse2_storeu_pd;	 // "__builtin_ia32_storeupd"
11048        case 's':	 // 1 string to match.
11049          return Intrinsic::x86_sse_storeu_ps;	 // "__builtin_ia32_storeups"
11050        }
11051        break;
11052      }
11053      break;
11054    case 'u':	 // 1 string to match.
11055      if (BuiltinName.substr(16, 7) != "comineq")
11056        break;
11057      return Intrinsic::x86_sse_ucomineq_ss;	 // "__builtin_ia32_ucomineq"
11058    case 'v':	 // 5 strings to match.
11059      switch (BuiltinName[16]) {
11060      default: break;
11061      case 't':	 // 4 strings to match.
11062        if (BuiltinName.substr(17, 3) != "est")
11063          break;
11064        switch (BuiltinName[20]) {
11065        default: break;
11066        case 'c':	 // 2 strings to match.
11067          if (BuiltinName[21] != 'p')
11068            break;
11069          switch (BuiltinName[22]) {
11070          default: break;
11071          case 'd':	 // 1 string to match.
11072            return Intrinsic::x86_avx_vtestc_pd;	 // "__builtin_ia32_vtestcpd"
11073          case 's':	 // 1 string to match.
11074            return Intrinsic::x86_avx_vtestc_ps;	 // "__builtin_ia32_vtestcps"
11075          }
11076          break;
11077        case 'z':	 // 2 strings to match.
11078          if (BuiltinName[21] != 'p')
11079            break;
11080          switch (BuiltinName[22]) {
11081          default: break;
11082          case 'd':	 // 1 string to match.
11083            return Intrinsic::x86_avx_vtestz_pd;	 // "__builtin_ia32_vtestzpd"
11084          case 's':	 // 1 string to match.
11085            return Intrinsic::x86_avx_vtestz_ps;	 // "__builtin_ia32_vtestzps"
11086          }
11087          break;
11088        }
11089        break;
11090      case 'z':	 // 1 string to match.
11091        if (BuiltinName.substr(17, 6) != "eroall")
11092          break;
11093        return Intrinsic::x86_avx_vzeroall;	 // "__builtin_ia32_vzeroall"
11094      }
11095      break;
11096    }
11097    break;
11098  case 24:	 // 69 strings to match.
11099    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
11100      break;
11101    switch (BuiltinName[15]) {
11102    default: break;
11103    case 'a':	 // 3 strings to match.
11104      if (BuiltinName.substr(16, 2) != "es")
11105        break;
11106      switch (BuiltinName[18]) {
11107      default: break;
11108      case 'd':	 // 1 string to match.
11109        if (BuiltinName.substr(19, 5) != "ec128")
11110          break;
11111        return Intrinsic::x86_aesni_aesdec;	 // "__builtin_ia32_aesdec128"
11112      case 'e':	 // 1 string to match.
11113        if (BuiltinName.substr(19, 5) != "nc128")
11114          break;
11115        return Intrinsic::x86_aesni_aesenc;	 // "__builtin_ia32_aesenc128"
11116      case 'i':	 // 1 string to match.
11117        if (BuiltinName.substr(19, 5) != "mc128")
11118          break;
11119        return Intrinsic::x86_aesni_aesimc;	 // "__builtin_ia32_aesimc128"
11120      }
11121      break;
11122    case 'c':	 // 7 strings to match.
11123      switch (BuiltinName[16]) {
11124      default: break;
11125      case 'o':	 // 1 string to match.
11126        if (BuiltinName.substr(17, 7) != "misdneq")
11127          break;
11128        return Intrinsic::x86_sse2_comineq_sd;	 // "__builtin_ia32_comisdneq"
11129      case 'v':	 // 6 strings to match.
11130        if (BuiltinName.substr(17, 2) != "tt")
11131          break;
11132        switch (BuiltinName[19]) {
11133        default: break;
11134        case 'p':	 // 4 strings to match.
11135          switch (BuiltinName[20]) {
11136          default: break;
11137          case 'd':	 // 2 strings to match.
11138            if (BuiltinName[21] != '2')
11139              break;
11140            switch (BuiltinName[22]) {
11141            default: break;
11142            case 'd':	 // 1 string to match.
11143              if (BuiltinName[23] != 'q')
11144                break;
11145              return Intrinsic::x86_sse2_cvttpd2dq;	 // "__builtin_ia32_cvttpd2dq"
11146            case 'p':	 // 1 string to match.
11147              if (BuiltinName[23] != 'i')
11148                break;
11149              return Intrinsic::x86_sse_cvttpd2pi;	 // "__builtin_ia32_cvttpd2pi"
11150            }
11151            break;
11152          case 's':	 // 2 strings to match.
11153            if (BuiltinName[21] != '2')
11154              break;
11155            switch (BuiltinName[22]) {
11156            default: break;
11157            case 'd':	 // 1 string to match.
11158              if (BuiltinName[23] != 'q')
11159                break;
11160              return Intrinsic::x86_sse2_cvttps2dq;	 // "__builtin_ia32_cvttps2dq"
11161            case 'p':	 // 1 string to match.
11162              if (BuiltinName[23] != 'i')
11163                break;
11164              return Intrinsic::x86_sse_cvttps2pi;	 // "__builtin_ia32_cvttps2pi"
11165            }
11166            break;
11167          }
11168          break;
11169        case 's':	 // 2 strings to match.
11170          switch (BuiltinName[20]) {
11171          default: break;
11172          case 'd':	 // 1 string to match.
11173            if (BuiltinName.substr(21, 3) != "2si")
11174              break;
11175            return Intrinsic::x86_sse2_cvttsd2si;	 // "__builtin_ia32_cvttsd2si"
11176          case 's':	 // 1 string to match.
11177            if (BuiltinName.substr(21, 3) != "2si")
11178              break;
11179            return Intrinsic::x86_sse_cvttss2si;	 // "__builtin_ia32_cvttss2si"
11180          }
11181          break;
11182        }
11183        break;
11184      }
11185      break;
11186    case 'h':	 // 4 strings to match.
11187      switch (BuiltinName[16]) {
11188      default: break;
11189      case 'a':	 // 2 strings to match.
11190        if (BuiltinName.substr(17, 3) != "ddp")
11191          break;
11192        switch (BuiltinName[20]) {
11193        default: break;
11194        case 'd':	 // 1 string to match.
11195          if (BuiltinName.substr(21, 3) != "256")
11196            break;
11197          return Intrinsic::x86_avx_hadd_pd_256;	 // "__builtin_ia32_haddpd256"
11198        case 's':	 // 1 string to match.
11199          if (BuiltinName.substr(21, 3) != "256")
11200            break;
11201          return Intrinsic::x86_avx_hadd_ps_256;	 // "__builtin_ia32_haddps256"
11202        }
11203        break;
11204      case 's':	 // 2 strings to match.
11205        if (BuiltinName.substr(17, 3) != "ubp")
11206          break;
11207        switch (BuiltinName[20]) {
11208        default: break;
11209        case 'd':	 // 1 string to match.
11210          if (BuiltinName.substr(21, 3) != "256")
11211            break;
11212          return Intrinsic::x86_avx_hsub_pd_256;	 // "__builtin_ia32_hsubpd256"
11213        case 's':	 // 1 string to match.
11214          if (BuiltinName.substr(21, 3) != "256")
11215            break;
11216          return Intrinsic::x86_avx_hsub_ps_256;	 // "__builtin_ia32_hsubps256"
11217        }
11218        break;
11219      }
11220      break;
11221    case 'p':	 // 46 strings to match.
11222      switch (BuiltinName[16]) {
11223      default: break;
11224      case 'a':	 // 2 strings to match.
11225        if (BuiltinName.substr(17, 3) != "dds")
11226          break;
11227        switch (BuiltinName[20]) {
11228        default: break;
11229        case 'b':	 // 1 string to match.
11230          if (BuiltinName.substr(21, 3) != "128")
11231            break;
11232          return Intrinsic::x86_sse2_padds_b;	 // "__builtin_ia32_paddsb128"
11233        case 'w':	 // 1 string to match.
11234          if (BuiltinName.substr(21, 3) != "128")
11235            break;
11236          return Intrinsic::x86_sse2_padds_w;	 // "__builtin_ia32_paddsw128"
11237        }
11238        break;
11239      case 'h':	 // 4 strings to match.
11240        switch (BuiltinName[17]) {
11241        default: break;
11242        case 'a':	 // 2 strings to match.
11243          if (BuiltinName.substr(18, 2) != "dd")
11244            break;
11245          switch (BuiltinName[20]) {
11246          default: break;
11247          case 'd':	 // 1 string to match.
11248            if (BuiltinName.substr(21, 3) != "128")
11249              break;
11250            return Intrinsic::x86_ssse3_phadd_d_128;	 // "__builtin_ia32_phaddd128"
11251          case 'w':	 // 1 string to match.
11252            if (BuiltinName.substr(21, 3) != "128")
11253              break;
11254            return Intrinsic::x86_ssse3_phadd_w_128;	 // "__builtin_ia32_phaddw128"
11255          }
11256          break;
11257        case 's':	 // 2 strings to match.
11258          if (BuiltinName.substr(18, 2) != "ub")
11259            break;
11260          switch (BuiltinName[20]) {
11261          default: break;
11262          case 'd':	 // 1 string to match.
11263            if (BuiltinName.substr(21, 3) != "128")
11264              break;
11265            return Intrinsic::x86_ssse3_phsub_d_128;	 // "__builtin_ia32_phsubd128"
11266          case 'w':	 // 1 string to match.
11267            if (BuiltinName.substr(21, 3) != "128")
11268              break;
11269            return Intrinsic::x86_ssse3_phsub_w_128;	 // "__builtin_ia32_phsubw128"
11270          }
11271          break;
11272        }
11273        break;
11274      case 'm':	 // 15 strings to match.
11275        switch (BuiltinName[17]) {
11276        default: break;
11277        case 'a':	 // 7 strings to match.
11278          switch (BuiltinName[18]) {
11279          default: break;
11280          case 'd':	 // 1 string to match.
11281            if (BuiltinName.substr(19, 5) != "dubsw")
11282              break;
11283            return Intrinsic::x86_ssse3_pmadd_ub_sw;	 // "__builtin_ia32_pmaddubsw"
11284          case 'x':	 // 6 strings to match.
11285            switch (BuiltinName[19]) {
11286            default: break;
11287            case 's':	 // 3 strings to match.
11288              switch (BuiltinName[20]) {
11289              default: break;
11290              case 'b':	 // 1 string to match.
11291                if (BuiltinName.substr(21, 3) != "128")
11292                  break;
11293                return Intrinsic::x86_sse41_pmaxsb;	 // "__builtin_ia32_pmaxsb128"
11294              case 'd':	 // 1 string to match.
11295                if (BuiltinName.substr(21, 3) != "128")
11296                  break;
11297                return Intrinsic::x86_sse41_pmaxsd;	 // "__builtin_ia32_pmaxsd128"
11298              case 'w':	 // 1 string to match.
11299                if (BuiltinName.substr(21, 3) != "128")
11300                  break;
11301                return Intrinsic::x86_sse2_pmaxs_w;	 // "__builtin_ia32_pmaxsw128"
11302              }
11303              break;
11304            case 'u':	 // 3 strings to match.
11305              switch (BuiltinName[20]) {
11306              default: break;
11307              case 'b':	 // 1 string to match.
11308                if (BuiltinName.substr(21, 3) != "128")
11309                  break;
11310                return Intrinsic::x86_sse2_pmaxu_b;	 // "__builtin_ia32_pmaxub128"
11311              case 'd':	 // 1 string to match.
11312                if (BuiltinName.substr(21, 3) != "128")
11313                  break;
11314                return Intrinsic::x86_sse41_pmaxud;	 // "__builtin_ia32_pmaxud128"
11315              case 'w':	 // 1 string to match.
11316                if (BuiltinName.substr(21, 3) != "128")
11317                  break;
11318                return Intrinsic::x86_sse41_pmaxuw;	 // "__builtin_ia32_pmaxuw128"
11319              }
11320              break;
11321            }
11322            break;
11323          }
11324          break;
11325        case 'i':	 // 6 strings to match.
11326          if (BuiltinName[18] != 'n')
11327            break;
11328          switch (BuiltinName[19]) {
11329          default: break;
11330          case 's':	 // 3 strings to match.
11331            switch (BuiltinName[20]) {
11332            default: break;
11333            case 'b':	 // 1 string to match.
11334              if (BuiltinName.substr(21, 3) != "128")
11335                break;
11336              return Intrinsic::x86_sse41_pminsb;	 // "__builtin_ia32_pminsb128"
11337            case 'd':	 // 1 string to match.
11338              if (BuiltinName.substr(21, 3) != "128")
11339                break;
11340              return Intrinsic::x86_sse41_pminsd;	 // "__builtin_ia32_pminsd128"
11341            case 'w':	 // 1 string to match.
11342              if (BuiltinName.substr(21, 3) != "128")
11343                break;
11344              return Intrinsic::x86_sse2_pmins_w;	 // "__builtin_ia32_pminsw128"
11345            }
11346            break;
11347          case 'u':	 // 3 strings to match.
11348            switch (BuiltinName[20]) {
11349            default: break;
11350            case 'b':	 // 1 string to match.
11351              if (BuiltinName.substr(21, 3) != "128")
11352                break;
11353              return Intrinsic::x86_sse2_pminu_b;	 // "__builtin_ia32_pminub128"
11354            case 'd':	 // 1 string to match.
11355              if (BuiltinName.substr(21, 3) != "128")
11356                break;
11357              return Intrinsic::x86_sse41_pminud;	 // "__builtin_ia32_pminud128"
11358            case 'w':	 // 1 string to match.
11359              if (BuiltinName.substr(21, 3) != "128")
11360                break;
11361              return Intrinsic::x86_sse41_pminuw;	 // "__builtin_ia32_pminuw128"
11362            }
11363            break;
11364          }
11365          break;
11366        case 'u':	 // 2 strings to match.
11367          if (BuiltinName[18] != 'l')
11368            break;
11369          switch (BuiltinName[19]) {
11370          default: break;
11371          case 'd':	 // 1 string to match.
11372            if (BuiltinName.substr(20, 4) != "q128")
11373              break;
11374            return Intrinsic::x86_sse41_pmuldq;	 // "__builtin_ia32_pmuldq128"
11375          case 'h':	 // 1 string to match.
11376            if (BuiltinName.substr(20, 4) != "w128")
11377              break;
11378            return Intrinsic::x86_sse2_pmulh_w;	 // "__builtin_ia32_pmulhw128"
11379          }
11380          break;
11381        }
11382        break;
11383      case 's':	 // 15 strings to match.
11384        switch (BuiltinName[17]) {
11385        default: break;
11386        case 'a':	 // 1 string to match.
11387          if (BuiltinName.substr(18, 6) != "dbw128")
11388            break;
11389          return Intrinsic::x86_sse2_psad_bw;	 // "__builtin_ia32_psadbw128"
11390        case 'h':	 // 1 string to match.
11391          if (BuiltinName.substr(18, 6) != "ufb128")
11392            break;
11393          return Intrinsic::x86_ssse3_pshuf_b_128;	 // "__builtin_ia32_pshufb128"
11394        case 'i':	 // 3 strings to match.
11395          if (BuiltinName.substr(18, 2) != "gn")
11396            break;
11397          switch (BuiltinName[20]) {
11398          default: break;
11399          case 'b':	 // 1 string to match.
11400            if (BuiltinName.substr(21, 3) != "128")
11401              break;
11402            return Intrinsic::x86_ssse3_psign_b_128;	 // "__builtin_ia32_psignb128"
11403          case 'd':	 // 1 string to match.
11404            if (BuiltinName.substr(21, 3) != "128")
11405              break;
11406            return Intrinsic::x86_ssse3_psign_d_128;	 // "__builtin_ia32_psignd128"
11407          case 'w':	 // 1 string to match.
11408            if (BuiltinName.substr(21, 3) != "128")
11409              break;
11410            return Intrinsic::x86_ssse3_psign_w_128;	 // "__builtin_ia32_psignw128"
11411          }
11412          break;
11413        case 'l':	 // 3 strings to match.
11414          if (BuiltinName[18] != 'l')
11415            break;
11416          switch (BuiltinName[19]) {
11417          default: break;
11418          case 'd':	 // 1 string to match.
11419            if (BuiltinName.substr(20, 4) != "i128")
11420              break;
11421            return Intrinsic::x86_sse2_pslli_d;	 // "__builtin_ia32_pslldi128"
11422          case 'q':	 // 1 string to match.
11423            if (BuiltinName.substr(20, 4) != "i128")
11424              break;
11425            return Intrinsic::x86_sse2_pslli_q;	 // "__builtin_ia32_psllqi128"
11426          case 'w':	 // 1 string to match.
11427            if (BuiltinName.substr(20, 4) != "i128")
11428              break;
11429            return Intrinsic::x86_sse2_pslli_w;	 // "__builtin_ia32_psllwi128"
11430          }
11431          break;
11432        case 'r':	 // 5 strings to match.
11433          switch (BuiltinName[18]) {
11434          default: break;
11435          case 'a':	 // 2 strings to match.
11436            switch (BuiltinName[19]) {
11437            default: break;
11438            case 'd':	 // 1 string to match.
11439              if (BuiltinName.substr(20, 4) != "i128")
11440                break;
11441              return Intrinsic::x86_sse2_psrai_d;	 // "__builtin_ia32_psradi128"
11442            case 'w':	 // 1 string to match.
11443              if (BuiltinName.substr(20, 4) != "i128")
11444                break;
11445              return Intrinsic::x86_sse2_psrai_w;	 // "__builtin_ia32_psrawi128"
11446            }
11447            break;
11448          case 'l':	 // 3 strings to match.
11449            switch (BuiltinName[19]) {
11450            default: break;
11451            case 'd':	 // 1 string to match.
11452              if (BuiltinName.substr(20, 4) != "i128")
11453                break;
11454              return Intrinsic::x86_sse2_psrli_d;	 // "__builtin_ia32_psrldi128"
11455            case 'q':	 // 1 string to match.
11456              if (BuiltinName.substr(20, 4) != "i128")
11457                break;
11458              return Intrinsic::x86_sse2_psrli_q;	 // "__builtin_ia32_psrlqi128"
11459            case 'w':	 // 1 string to match.
11460              if (BuiltinName.substr(20, 4) != "i128")
11461                break;
11462              return Intrinsic::x86_sse2_psrli_w;	 // "__builtin_ia32_psrlwi128"
11463            }
11464            break;
11465          }
11466          break;
11467        case 'u':	 // 2 strings to match.
11468          if (BuiltinName.substr(18, 2) != "bs")
11469            break;
11470          switch (BuiltinName[20]) {
11471          default: break;
11472          case 'b':	 // 1 string to match.
11473            if (BuiltinName.substr(21, 3) != "128")
11474              break;
11475            return Intrinsic::x86_sse2_psubs_b;	 // "__builtin_ia32_psubsb128"
11476          case 'w':	 // 1 string to match.
11477            if (BuiltinName.substr(21, 3) != "128")
11478              break;
11479            return Intrinsic::x86_sse2_psubs_w;	 // "__builtin_ia32_psubsw128"
11480          }
11481          break;
11482        }
11483        break;
11484      case 't':	 // 4 strings to match.
11485        if (BuiltinName.substr(17, 3) != "est")
11486          break;
11487        switch (BuiltinName[20]) {
11488        default: break;
11489        case 'c':	 // 2 strings to match.
11490          switch (BuiltinName[21]) {
11491          default: break;
11492          case '1':	 // 1 string to match.
11493            if (BuiltinName.substr(22, 2) != "28")
11494              break;
11495            return Intrinsic::x86_sse41_ptestc;	 // "__builtin_ia32_ptestc128"
11496          case '2':	 // 1 string to match.
11497            if (BuiltinName.substr(22, 2) != "56")
11498              break;
11499            return Intrinsic::x86_avx_ptestc_256;	 // "__builtin_ia32_ptestc256"
11500          }
11501          break;
11502        case 'z':	 // 2 strings to match.
11503          switch (BuiltinName[21]) {
11504          default: break;
11505          case '1':	 // 1 string to match.
11506            if (BuiltinName.substr(22, 2) != "28")
11507              break;
11508            return Intrinsic::x86_sse41_ptestz;	 // "__builtin_ia32_ptestz128"
11509          case '2':	 // 1 string to match.
11510            if (BuiltinName.substr(22, 2) != "56")
11511              break;
11512            return Intrinsic::x86_avx_ptestz_256;	 // "__builtin_ia32_ptestz256"
11513          }
11514          break;
11515        }
11516        break;
11517      case 'u':	 // 6 strings to match.
11518        if (BuiltinName.substr(17, 4) != "npck")
11519          break;
11520        switch (BuiltinName[21]) {
11521        default: break;
11522        case 'h':	 // 3 strings to match.
11523          switch (BuiltinName[22]) {
11524          default: break;
11525          case 'b':	 // 1 string to match.
11526            if (BuiltinName[23] != 'w')
11527              break;
11528            return Intrinsic::x86_mmx_punpckhbw;	 // "__builtin_ia32_punpckhbw"
11529          case 'd':	 // 1 string to match.
11530            if (BuiltinName[23] != 'q')
11531              break;
11532            return Intrinsic::x86_mmx_punpckhdq;	 // "__builtin_ia32_punpckhdq"
11533          case 'w':	 // 1 string to match.
11534            if (BuiltinName[23] != 'd')
11535              break;
11536            return Intrinsic::x86_mmx_punpckhwd;	 // "__builtin_ia32_punpckhwd"
11537          }
11538          break;
11539        case 'l':	 // 3 strings to match.
11540          switch (BuiltinName[22]) {
11541          default: break;
11542          case 'b':	 // 1 string to match.
11543            if (BuiltinName[23] != 'w')
11544              break;
11545            return Intrinsic::x86_mmx_punpcklbw;	 // "__builtin_ia32_punpcklbw"
11546          case 'd':	 // 1 string to match.
11547            if (BuiltinName[23] != 'q')
11548              break;
11549            return Intrinsic::x86_mmx_punpckldq;	 // "__builtin_ia32_punpckldq"
11550          case 'w':	 // 1 string to match.
11551            if (BuiltinName[23] != 'd')
11552              break;
11553            return Intrinsic::x86_mmx_punpcklwd;	 // "__builtin_ia32_punpcklwd"
11554          }
11555          break;
11556        }
11557        break;
11558      }
11559      break;
11560    case 's':	 // 2 strings to match.
11561      if (BuiltinName.substr(16, 4) != "qrtp")
11562        break;
11563      switch (BuiltinName[20]) {
11564      default: break;
11565      case 'd':	 // 1 string to match.
11566        if (BuiltinName.substr(21, 3) != "256")
11567          break;
11568        return Intrinsic::x86_avx_sqrt_pd_256;	 // "__builtin_ia32_sqrtpd256"
11569      case 's':	 // 1 string to match.
11570        if (BuiltinName.substr(21, 3) != "256")
11571          break;
11572        return Intrinsic::x86_avx_sqrt_ps_256;	 // "__builtin_ia32_sqrtps256"
11573      }
11574      break;
11575    case 'u':	 // 5 strings to match.
11576      if (BuiltinName.substr(16, 6) != "comisd")
11577        break;
11578      switch (BuiltinName[22]) {
11579      default: break;
11580      case 'e':	 // 1 string to match.
11581        if (BuiltinName[23] != 'q')
11582          break;
11583        return Intrinsic::x86_sse2_ucomieq_sd;	 // "__builtin_ia32_ucomisdeq"
11584      case 'g':	 // 2 strings to match.
11585        switch (BuiltinName[23]) {
11586        default: break;
11587        case 'e':	 // 1 string to match.
11588          return Intrinsic::x86_sse2_ucomige_sd;	 // "__builtin_ia32_ucomisdge"
11589        case 't':	 // 1 string to match.
11590          return Intrinsic::x86_sse2_ucomigt_sd;	 // "__builtin_ia32_ucomisdgt"
11591        }
11592        break;
11593      case 'l':	 // 2 strings to match.
11594        switch (BuiltinName[23]) {
11595        default: break;
11596        case 'e':	 // 1 string to match.
11597          return Intrinsic::x86_sse2_ucomile_sd;	 // "__builtin_ia32_ucomisdle"
11598        case 't':	 // 1 string to match.
11599          return Intrinsic::x86_sse2_ucomilt_sd;	 // "__builtin_ia32_ucomisdlt"
11600        }
11601        break;
11602      }
11603      break;
11604    case 'v':	 // 2 strings to match.
11605      if (BuiltinName.substr(16, 7) != "permilp")
11606        break;
11607      switch (BuiltinName[23]) {
11608      default: break;
11609      case 'd':	 // 1 string to match.
11610        return Intrinsic::x86_avx_vpermil_pd;	 // "__builtin_ia32_vpermilpd"
11611      case 's':	 // 1 string to match.
11612        return Intrinsic::x86_avx_vpermil_ps;	 // "__builtin_ia32_vpermilps"
11613      }
11614      break;
11615    }
11616    break;
11617  case 25:	 // 42 strings to match.
11618    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
11619      break;
11620    switch (BuiltinName[15]) {
11621    default: break;
11622    case 'b':	 // 2 strings to match.
11623      if (BuiltinName.substr(16, 5) != "lendp")
11624        break;
11625      switch (BuiltinName[21]) {
11626      default: break;
11627      case 'd':	 // 1 string to match.
11628        if (BuiltinName.substr(22, 3) != "256")
11629          break;
11630        return Intrinsic::x86_avx_blend_pd_256;	 // "__builtin_ia32_blendpd256"
11631      case 's':	 // 1 string to match.
11632        if (BuiltinName.substr(22, 3) != "256")
11633          break;
11634        return Intrinsic::x86_avx_blend_ps_256;	 // "__builtin_ia32_blendps256"
11635      }
11636      break;
11637    case 'c':	 // 4 strings to match.
11638      if (BuiltinName.substr(16, 3) != "vts")
11639        break;
11640      switch (BuiltinName[19]) {
11641      default: break;
11642      case 'd':	 // 1 string to match.
11643        if (BuiltinName.substr(20, 5) != "2si64")
11644          break;
11645        return Intrinsic::x86_sse2_cvtsd2si64;	 // "__builtin_ia32_cvtsd2si64"
11646      case 'i':	 // 2 strings to match.
11647        if (BuiltinName.substr(20, 4) != "642s")
11648          break;
11649        switch (BuiltinName[24]) {
11650        default: break;
11651        case 'd':	 // 1 string to match.
11652          return Intrinsic::x86_sse2_cvtsi642sd;	 // "__builtin_ia32_cvtsi642sd"
11653        case 's':	 // 1 string to match.
11654          return Intrinsic::x86_sse_cvtsi642ss;	 // "__builtin_ia32_cvtsi642ss"
11655        }
11656        break;
11657      case 's':	 // 1 string to match.
11658        if (BuiltinName.substr(20, 5) != "2si64")
11659          break;
11660        return Intrinsic::x86_sse_cvtss2si64;	 // "__builtin_ia32_cvtss2si64"
11661      }
11662      break;
11663    case 'l':	 // 3 strings to match.
11664      if (BuiltinName.substr(16, 3) != "oad")
11665        break;
11666      switch (BuiltinName[19]) {
11667      default: break;
11668      case 'd':	 // 1 string to match.
11669        if (BuiltinName.substr(20, 5) != "qu256")
11670          break;
11671        return Intrinsic::x86_avx_loadu_dq_256;	 // "__builtin_ia32_loaddqu256"
11672      case 'u':	 // 2 strings to match.
11673        if (BuiltinName[20] != 'p')
11674          break;
11675        switch (BuiltinName[21]) {
11676        default: break;
11677        case 'd':	 // 1 string to match.
11678          if (BuiltinName.substr(22, 3) != "256")
11679            break;
11680          return Intrinsic::x86_avx_loadu_pd_256;	 // "__builtin_ia32_loadupd256"
11681        case 's':	 // 1 string to match.
11682          if (BuiltinName.substr(22, 3) != "256")
11683            break;
11684          return Intrinsic::x86_avx_loadu_ps_256;	 // "__builtin_ia32_loadups256"
11685        }
11686        break;
11687      }
11688      break;
11689    case 'm':	 // 7 strings to match.
11690      switch (BuiltinName[16]) {
11691      default: break;
11692      case 'a':	 // 3 strings to match.
11693        if (BuiltinName.substr(17, 2) != "sk")
11694          break;
11695        switch (BuiltinName[19]) {
11696        default: break;
11697        case 'l':	 // 2 strings to match.
11698          if (BuiltinName.substr(20, 4) != "oadp")
11699            break;
11700          switch (BuiltinName[24]) {
11701          default: break;
11702          case 'd':	 // 1 string to match.
11703            return Intrinsic::x86_avx_maskload_pd;	 // "__builtin_ia32_maskloadpd"
11704          case 's':	 // 1 string to match.
11705            return Intrinsic::x86_avx_maskload_ps;	 // "__builtin_ia32_maskloadps"
11706          }
11707          break;
11708        case 'm':	 // 1 string to match.
11709          if (BuiltinName.substr(20, 5) != "ovdqu")
11710            break;
11711          return Intrinsic::x86_sse2_maskmov_dqu;	 // "__builtin_ia32_maskmovdqu"
11712        }
11713        break;
11714      case 'o':	 // 3 strings to match.
11715        if (BuiltinName.substr(17, 3) != "vnt")
11716          break;
11717        switch (BuiltinName[20]) {
11718        default: break;
11719        case 'd':	 // 1 string to match.
11720          if (BuiltinName.substr(21, 4) != "q256")
11721            break;
11722          return Intrinsic::x86_avx_movnt_dq_256;	 // "__builtin_ia32_movntdq256"
11723        case 'p':	 // 2 strings to match.
11724          switch (BuiltinName[21]) {
11725          default: break;
11726          case 'd':	 // 1 string to match.
11727            if (BuiltinName.substr(22, 3) != "256")
11728              break;
11729            return Intrinsic::x86_avx_movnt_pd_256;	 // "__builtin_ia32_movntpd256"
11730          case 's':	 // 1 string to match.
11731            if (BuiltinName.substr(22, 3) != "256")
11732              break;
11733            return Intrinsic::x86_avx_movnt_ps_256;	 // "__builtin_ia32_movntps256"
11734          }
11735          break;
11736        }
11737        break;
11738      case 'p':	 // 1 string to match.
11739        if (BuiltinName.substr(17, 8) != "sadbw128")
11740          break;
11741        return Intrinsic::x86_sse41_mpsadbw;	 // "__builtin_ia32_mpsadbw128"
11742      }
11743      break;
11744    case 'p':	 // 18 strings to match.
11745      switch (BuiltinName[16]) {
11746      default: break;
11747      case 'a':	 // 2 strings to match.
11748        if (BuiltinName.substr(17, 4) != "ddus")
11749          break;
11750        switch (BuiltinName[21]) {
11751        default: break;
11752        case 'b':	 // 1 string to match.
11753          if (BuiltinName.substr(22, 3) != "128")
11754            break;
11755          return Intrinsic::x86_sse2_paddus_b;	 // "__builtin_ia32_paddusb128"
11756        case 'w':	 // 1 string to match.
11757          if (BuiltinName.substr(22, 3) != "128")
11758            break;
11759          return Intrinsic::x86_sse2_paddus_w;	 // "__builtin_ia32_paddusw128"
11760        }
11761        break;
11762      case 'b':	 // 1 string to match.
11763        if (BuiltinName.substr(17, 8) != "lendw128")
11764          break;
11765        return Intrinsic::x86_sse41_pblendw;	 // "__builtin_ia32_pblendw128"
11766      case 'c':	 // 6 strings to match.
11767        if (BuiltinName.substr(17, 2) != "mp")
11768          break;
11769        switch (BuiltinName[19]) {
11770        default: break;
11771        case 'e':	 // 3 strings to match.
11772          if (BuiltinName[20] != 'q')
11773            break;
11774          switch (BuiltinName[21]) {
11775          default: break;
11776          case 'b':	 // 1 string to match.
11777            if (BuiltinName.substr(22, 3) != "128")
11778              break;
11779            return Intrinsic::x86_sse2_pcmpeq_b;	 // "__builtin_ia32_pcmpeqb128"
11780          case 'd':	 // 1 string to match.
11781            if (BuiltinName.substr(22, 3) != "128")
11782              break;
11783            return Intrinsic::x86_sse2_pcmpeq_d;	 // "__builtin_ia32_pcmpeqd128"
11784          case 'w':	 // 1 string to match.
11785            if (BuiltinName.substr(22, 3) != "128")
11786              break;
11787            return Intrinsic::x86_sse2_pcmpeq_w;	 // "__builtin_ia32_pcmpeqw128"
11788          }
11789          break;
11790        case 'g':	 // 3 strings to match.
11791          if (BuiltinName[20] != 't')
11792            break;
11793          switch (BuiltinName[21]) {
11794          default: break;
11795          case 'b':	 // 1 string to match.
11796            if (BuiltinName.substr(22, 3) != "128")
11797              break;
11798            return Intrinsic::x86_sse2_pcmpgt_b;	 // "__builtin_ia32_pcmpgtb128"
11799          case 'd':	 // 1 string to match.
11800            if (BuiltinName.substr(22, 3) != "128")
11801              break;
11802            return Intrinsic::x86_sse2_pcmpgt_d;	 // "__builtin_ia32_pcmpgtd128"
11803          case 'w':	 // 1 string to match.
11804            if (BuiltinName.substr(22, 3) != "128")
11805              break;
11806            return Intrinsic::x86_sse2_pcmpgt_w;	 // "__builtin_ia32_pcmpgtw128"
11807          }
11808          break;
11809        }
11810        break;
11811      case 'h':	 // 2 strings to match.
11812        switch (BuiltinName[17]) {
11813        default: break;
11814        case 'a':	 // 1 string to match.
11815          if (BuiltinName.substr(18, 7) != "ddsw128")
11816            break;
11817          return Intrinsic::x86_ssse3_phadd_sw_128;	 // "__builtin_ia32_phaddsw128"
11818        case 's':	 // 1 string to match.
11819          if (BuiltinName.substr(18, 7) != "ubsw128")
11820            break;
11821          return Intrinsic::x86_ssse3_phsub_sw_128;	 // "__builtin_ia32_phsubsw128"
11822        }
11823        break;
11824      case 'm':	 // 3 strings to match.
11825        switch (BuiltinName[17]) {
11826        default: break;
11827        case 'a':	 // 1 string to match.
11828          if (BuiltinName.substr(18, 7) != "ddwd128")
11829            break;
11830          return Intrinsic::x86_sse2_pmadd_wd;	 // "__builtin_ia32_pmaddwd128"
11831        case 'u':	 // 2 strings to match.
11832          if (BuiltinName[18] != 'l')
11833            break;
11834          switch (BuiltinName[19]) {
11835          default: break;
11836          case 'h':	 // 1 string to match.
11837            if (BuiltinName.substr(20, 5) != "uw128")
11838              break;
11839            return Intrinsic::x86_sse2_pmulhu_w;	 // "__builtin_ia32_pmulhuw128"
11840          case 'u':	 // 1 string to match.
11841            if (BuiltinName.substr(20, 5) != "dq128")
11842              break;
11843            return Intrinsic::x86_sse2_pmulu_dq;	 // "__builtin_ia32_pmuludq128"
11844          }
11845          break;
11846        }
11847        break;
11848      case 's':	 // 4 strings to match.
11849        switch (BuiltinName[17]) {
11850        default: break;
11851        case 'l':	 // 1 string to match.
11852          if (BuiltinName.substr(18, 7) != "ldqi128")
11853            break;
11854          return Intrinsic::x86_sse2_psll_dq;	 // "__builtin_ia32_pslldqi128"
11855        case 'r':	 // 1 string to match.
11856          if (BuiltinName.substr(18, 7) != "ldqi128")
11857            break;
11858          return Intrinsic::x86_sse2_psrl_dq;	 // "__builtin_ia32_psrldqi128"
11859        case 'u':	 // 2 strings to match.
11860          if (BuiltinName.substr(18, 3) != "bus")
11861            break;
11862          switch (BuiltinName[21]) {
11863          default: break;
11864          case 'b':	 // 1 string to match.
11865            if (BuiltinName.substr(22, 3) != "128")
11866              break;
11867            return Intrinsic::x86_sse2_psubus_b;	 // "__builtin_ia32_psubusb128"
11868          case 'w':	 // 1 string to match.
11869            if (BuiltinName.substr(22, 3) != "128")
11870              break;
11871            return Intrinsic::x86_sse2_psubus_w;	 // "__builtin_ia32_psubusw128"
11872          }
11873          break;
11874        }
11875        break;
11876      }
11877      break;
11878    case 'r':	 // 3 strings to match.
11879      switch (BuiltinName[16]) {
11880      default: break;
11881      case 'o':	 // 2 strings to match.
11882        if (BuiltinName.substr(17, 4) != "undp")
11883          break;
11884        switch (BuiltinName[21]) {
11885        default: break;
11886        case 'd':	 // 1 string to match.
11887          if (BuiltinName.substr(22, 3) != "256")
11888            break;
11889          return Intrinsic::x86_avx_round_pd_256;	 // "__builtin_ia32_roundpd256"
11890        case 's':	 // 1 string to match.
11891          if (BuiltinName.substr(22, 3) != "256")
11892            break;
11893          return Intrinsic::x86_avx_round_ps_256;	 // "__builtin_ia32_roundps256"
11894        }
11895        break;
11896      case 's':	 // 1 string to match.
11897        if (BuiltinName.substr(17, 8) != "qrtps256")
11898          break;
11899        return Intrinsic::x86_avx_rsqrt_ps_256;	 // "__builtin_ia32_rsqrtps256"
11900      }
11901      break;
11902    case 's':	 // 1 string to match.
11903      if (BuiltinName.substr(16, 9) != "torelv4si")
11904        break;
11905      return Intrinsic::x86_sse2_storel_dq;	 // "__builtin_ia32_storelv4si"
11906    case 'u':	 // 1 string to match.
11907      if (BuiltinName.substr(16, 9) != "comisdneq")
11908        break;
11909      return Intrinsic::x86_sse2_ucomineq_sd;	 // "__builtin_ia32_ucomisdneq"
11910    case 'v':	 // 3 strings to match.
11911      switch (BuiltinName[16]) {
11912      default: break;
11913      case 't':	 // 2 strings to match.
11914        if (BuiltinName.substr(17, 7) != "estnzcp")
11915          break;
11916        switch (BuiltinName[24]) {
11917        default: break;
11918        case 'd':	 // 1 string to match.
11919          return Intrinsic::x86_avx_vtestnzc_pd;	 // "__builtin_ia32_vtestnzcpd"
11920        case 's':	 // 1 string to match.
11921          return Intrinsic::x86_avx_vtestnzc_ps;	 // "__builtin_ia32_vtestnzcps"
11922        }
11923        break;
11924      case 'z':	 // 1 string to match.
11925        if (BuiltinName.substr(17, 8) != "eroupper")
11926          break;
11927        return Intrinsic::x86_avx_vzeroupper;	 // "__builtin_ia32_vzeroupper"
11928      }
11929      break;
11930    }
11931    break;
11932  case 26:	 // 45 strings to match.
11933    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
11934      break;
11935    switch (BuiltinName[15]) {
11936    default: break;
11937    case 'a':	 // 2 strings to match.
11938      if (BuiltinName.substr(16, 6) != "ddsubp")
11939        break;
11940      switch (BuiltinName[22]) {
11941      default: break;
11942      case 'd':	 // 1 string to match.
11943        if (BuiltinName.substr(23, 3) != "256")
11944          break;
11945        return Intrinsic::x86_avx_addsub_pd_256;	 // "__builtin_ia32_addsubpd256"
11946      case 's':	 // 1 string to match.
11947        if (BuiltinName.substr(23, 3) != "256")
11948          break;
11949        return Intrinsic::x86_avx_addsub_ps_256;	 // "__builtin_ia32_addsubps256"
11950      }
11951      break;
11952    case 'b':	 // 2 strings to match.
11953      if (BuiltinName.substr(16, 6) != "lendvp")
11954        break;
11955      switch (BuiltinName[22]) {
11956      default: break;
11957      case 'd':	 // 1 string to match.
11958        if (BuiltinName.substr(23, 3) != "256")
11959          break;
11960        return Intrinsic::x86_avx_blendv_pd_256;	 // "__builtin_ia32_blendvpd256"
11961      case 's':	 // 1 string to match.
11962        if (BuiltinName.substr(23, 3) != "256")
11963          break;
11964        return Intrinsic::x86_avx_blendv_ps_256;	 // "__builtin_ia32_blendvps256"
11965      }
11966      break;
11967    case 'c':	 // 8 strings to match.
11968      if (BuiltinName.substr(16, 2) != "vt")
11969        break;
11970      switch (BuiltinName[18]) {
11971      default: break;
11972      case 'd':	 // 2 strings to match.
11973        if (BuiltinName.substr(19, 3) != "q2p")
11974          break;
11975        switch (BuiltinName[22]) {
11976        default: break;
11977        case 'd':	 // 1 string to match.
11978          if (BuiltinName.substr(23, 3) != "256")
11979            break;
11980          return Intrinsic::x86_avx_cvtdq2_pd_256;	 // "__builtin_ia32_cvtdq2pd256"
11981        case 's':	 // 1 string to match.
11982          if (BuiltinName.substr(23, 3) != "256")
11983            break;
11984          return Intrinsic::x86_avx_cvtdq2_ps_256;	 // "__builtin_ia32_cvtdq2ps256"
11985        }
11986        break;
11987      case 'p':	 // 4 strings to match.
11988        switch (BuiltinName[19]) {
11989        default: break;
11990        case 'd':	 // 2 strings to match.
11991          if (BuiltinName[20] != '2')
11992            break;
11993          switch (BuiltinName[21]) {
11994          default: break;
11995          case 'd':	 // 1 string to match.
11996            if (BuiltinName.substr(22, 4) != "q256")
11997              break;
11998            return Intrinsic::x86_avx_cvt_pd2dq_256;	 // "__builtin_ia32_cvtpd2dq256"
11999          case 'p':	 // 1 string to match.
12000            if (BuiltinName.substr(22, 4) != "s256")
12001              break;
12002            return Intrinsic::x86_avx_cvt_pd2_ps_256;	 // "__builtin_ia32_cvtpd2ps256"
12003          }
12004          break;
12005        case 's':	 // 2 strings to match.
12006          if (BuiltinName[20] != '2')
12007            break;
12008          switch (BuiltinName[21]) {
12009          default: break;
12010          case 'd':	 // 1 string to match.
12011            if (BuiltinName.substr(22, 4) != "q256")
12012              break;
12013            return Intrinsic::x86_avx_cvt_ps2dq_256;	 // "__builtin_ia32_cvtps2dq256"
12014          case 'p':	 // 1 string to match.
12015            if (BuiltinName.substr(22, 4) != "d256")
12016              break;
12017            return Intrinsic::x86_avx_cvt_ps2_pd_256;	 // "__builtin_ia32_cvtps2pd256"
12018          }
12019          break;
12020        }
12021        break;
12022      case 't':	 // 2 strings to match.
12023        if (BuiltinName[19] != 's')
12024          break;
12025        switch (BuiltinName[20]) {
12026        default: break;
12027        case 'd':	 // 1 string to match.
12028          if (BuiltinName.substr(21, 5) != "2si64")
12029            break;
12030          return Intrinsic::x86_sse2_cvttsd2si64;	 // "__builtin_ia32_cvttsd2si64"
12031        case 's':	 // 1 string to match.
12032          if (BuiltinName.substr(21, 5) != "2si64")
12033            break;
12034          return Intrinsic::x86_sse_cvttss2si64;	 // "__builtin_ia32_cvttss2si64"
12035        }
12036        break;
12037      }
12038      break;
12039    case 'i':	 // 1 string to match.
12040      if (BuiltinName.substr(16, 10) != "nsertps128")
12041        break;
12042      return Intrinsic::x86_sse41_insertps;	 // "__builtin_ia32_insertps128"
12043    case 'm':	 // 4 strings to match.
12044      switch (BuiltinName[16]) {
12045      default: break;
12046      case 'a':	 // 2 strings to match.
12047        if (BuiltinName.substr(17, 8) != "skstorep")
12048          break;
12049        switch (BuiltinName[25]) {
12050        default: break;
12051        case 'd':	 // 1 string to match.
12052          return Intrinsic::x86_avx_maskstore_pd;	 // "__builtin_ia32_maskstorepd"
12053        case 's':	 // 1 string to match.
12054          return Intrinsic::x86_avx_maskstore_ps;	 // "__builtin_ia32_maskstoreps"
12055        }
12056        break;
12057      case 'o':	 // 2 strings to match.
12058        if (BuiltinName.substr(17, 5) != "vmskp")
12059          break;
12060        switch (BuiltinName[22]) {
12061        default: break;
12062        case 'd':	 // 1 string to match.
12063          if (BuiltinName.substr(23, 3) != "256")
12064            break;
12065          return Intrinsic::x86_avx_movmsk_pd_256;	 // "__builtin_ia32_movmskpd256"
12066        case 's':	 // 1 string to match.
12067          if (BuiltinName.substr(23, 3) != "256")
12068            break;
12069          return Intrinsic::x86_avx_movmsk_ps_256;	 // "__builtin_ia32_movmskps256"
12070        }
12071        break;
12072      }
12073      break;
12074    case 'p':	 // 21 strings to match.
12075      switch (BuiltinName[16]) {
12076      default: break;
12077      case 'a':	 // 4 strings to match.
12078        if (BuiltinName.substr(17, 2) != "ck")
12079          break;
12080        switch (BuiltinName[19]) {
12081        default: break;
12082        case 's':	 // 2 strings to match.
12083          if (BuiltinName[20] != 's')
12084            break;
12085          switch (BuiltinName[21]) {
12086          default: break;
12087          case 'd':	 // 1 string to match.
12088            if (BuiltinName.substr(22, 4) != "w128")
12089              break;
12090            return Intrinsic::x86_sse2_packssdw_128;	 // "__builtin_ia32_packssdw128"
12091          case 'w':	 // 1 string to match.
12092            if (BuiltinName.substr(22, 4) != "b128")
12093              break;
12094            return Intrinsic::x86_sse2_packsswb_128;	 // "__builtin_ia32_packsswb128"
12095          }
12096          break;
12097        case 'u':	 // 2 strings to match.
12098          if (BuiltinName[20] != 's')
12099            break;
12100          switch (BuiltinName[21]) {
12101          default: break;
12102          case 'd':	 // 1 string to match.
12103            if (BuiltinName.substr(22, 4) != "w128")
12104              break;
12105            return Intrinsic::x86_sse41_packusdw;	 // "__builtin_ia32_packusdw128"
12106          case 'w':	 // 1 string to match.
12107            if (BuiltinName.substr(22, 4) != "b128")
12108              break;
12109            return Intrinsic::x86_sse2_packuswb_128;	 // "__builtin_ia32_packuswb128"
12110          }
12111          break;
12112        }
12113        break;
12114      case 'b':	 // 1 string to match.
12115        if (BuiltinName.substr(17, 9) != "lendvb128")
12116          break;
12117        return Intrinsic::x86_sse41_pblendvb;	 // "__builtin_ia32_pblendvb128"
12118      case 'm':	 // 14 strings to match.
12119        switch (BuiltinName[17]) {
12120        default: break;
12121        case 'o':	 // 13 strings to match.
12122          if (BuiltinName[18] != 'v')
12123            break;
12124          switch (BuiltinName[19]) {
12125          default: break;
12126          case 'm':	 // 1 string to match.
12127            if (BuiltinName.substr(20, 6) != "skb128")
12128              break;
12129            return Intrinsic::x86_sse2_pmovmskb_128;	 // "__builtin_ia32_pmovmskb128"
12130          case 's':	 // 6 strings to match.
12131            if (BuiltinName[20] != 'x')
12132              break;
12133            switch (BuiltinName[21]) {
12134            default: break;
12135            case 'b':	 // 3 strings to match.
12136              switch (BuiltinName[22]) {
12137              default: break;
12138              case 'd':	 // 1 string to match.
12139                if (BuiltinName.substr(23, 3) != "128")
12140                  break;
12141                return Intrinsic::x86_sse41_pmovsxbd;	 // "__builtin_ia32_pmovsxbd128"
12142              case 'q':	 // 1 string to match.
12143                if (BuiltinName.substr(23, 3) != "128")
12144                  break;
12145                return Intrinsic::x86_sse41_pmovsxbq;	 // "__builtin_ia32_pmovsxbq128"
12146              case 'w':	 // 1 string to match.
12147                if (BuiltinName.substr(23, 3) != "128")
12148                  break;
12149                return Intrinsic::x86_sse41_pmovsxbw;	 // "__builtin_ia32_pmovsxbw128"
12150              }
12151              break;
12152            case 'd':	 // 1 string to match.
12153              if (BuiltinName.substr(22, 4) != "q128")
12154                break;
12155              return Intrinsic::x86_sse41_pmovsxdq;	 // "__builtin_ia32_pmovsxdq128"
12156            case 'w':	 // 2 strings to match.
12157              switch (BuiltinName[22]) {
12158              default: break;
12159              case 'd':	 // 1 string to match.
12160                if (BuiltinName.substr(23, 3) != "128")
12161                  break;
12162                return Intrinsic::x86_sse41_pmovsxwd;	 // "__builtin_ia32_pmovsxwd128"
12163              case 'q':	 // 1 string to match.
12164                if (BuiltinName.substr(23, 3) != "128")
12165                  break;
12166                return Intrinsic::x86_sse41_pmovsxwq;	 // "__builtin_ia32_pmovsxwq128"
12167              }
12168              break;
12169            }
12170            break;
12171          case 'z':	 // 6 strings to match.
12172            if (BuiltinName[20] != 'x')
12173              break;
12174            switch (BuiltinName[21]) {
12175            default: break;
12176            case 'b':	 // 3 strings to match.
12177              switch (BuiltinName[22]) {
12178              default: break;
12179              case 'd':	 // 1 string to match.
12180                if (BuiltinName.substr(23, 3) != "128")
12181                  break;
12182                return Intrinsic::x86_sse41_pmovzxbd;	 // "__builtin_ia32_pmovzxbd128"
12183              case 'q':	 // 1 string to match.
12184                if (BuiltinName.substr(23, 3) != "128")
12185                  break;
12186                return Intrinsic::x86_sse41_pmovzxbq;	 // "__builtin_ia32_pmovzxbq128"
12187              case 'w':	 // 1 string to match.
12188                if (BuiltinName.substr(23, 3) != "128")
12189                  break;
12190                return Intrinsic::x86_sse41_pmovzxbw;	 // "__builtin_ia32_pmovzxbw128"
12191              }
12192              break;
12193            case 'd':	 // 1 string to match.
12194              if (BuiltinName.substr(22, 4) != "q128")
12195                break;
12196              return Intrinsic::x86_sse41_pmovzxdq;	 // "__builtin_ia32_pmovzxdq128"
12197            case 'w':	 // 2 strings to match.
12198              switch (BuiltinName[22]) {
12199              default: break;
12200              case 'd':	 // 1 string to match.
12201                if (BuiltinName.substr(23, 3) != "128")
12202                  break;
12203                return Intrinsic::x86_sse41_pmovzxwd;	 // "__builtin_ia32_pmovzxwd128"
12204              case 'q':	 // 1 string to match.
12205                if (BuiltinName.substr(23, 3) != "128")
12206                  break;
12207                return Intrinsic::x86_sse41_pmovzxwq;	 // "__builtin_ia32_pmovzxwq128"
12208              }
12209              break;
12210            }
12211            break;
12212          }
12213          break;
12214        case 'u':	 // 1 string to match.
12215          if (BuiltinName.substr(18, 8) != "lhrsw128")
12216            break;
12217          return Intrinsic::x86_ssse3_pmul_hr_sw_128;	 // "__builtin_ia32_pmulhrsw128"
12218        }
12219        break;
12220      case 't':	 // 2 strings to match.
12221        if (BuiltinName.substr(17, 6) != "estnzc")
12222          break;
12223        switch (BuiltinName[23]) {
12224        default: break;
12225        case '1':	 // 1 string to match.
12226          if (BuiltinName.substr(24, 2) != "28")
12227            break;
12228          return Intrinsic::x86_sse41_ptestnzc;	 // "__builtin_ia32_ptestnzc128"
12229        case '2':	 // 1 string to match.
12230          if (BuiltinName.substr(24, 2) != "56")
12231            break;
12232          return Intrinsic::x86_avx_ptestnzc_256;	 // "__builtin_ia32_ptestnzc256"
12233        }
12234        break;
12235      }
12236      break;
12237    case 's':	 // 3 strings to match.
12238      if (BuiltinName.substr(16, 4) != "tore")
12239        break;
12240      switch (BuiltinName[20]) {
12241      default: break;
12242      case 'd':	 // 1 string to match.
12243        if (BuiltinName.substr(21, 5) != "qu256")
12244          break;
12245        return Intrinsic::x86_avx_storeu_dq_256;	 // "__builtin_ia32_storedqu256"
12246      case 'u':	 // 2 strings to match.
12247        if (BuiltinName[21] != 'p')
12248          break;
12249        switch (BuiltinName[22]) {
12250        default: break;
12251        case 'd':	 // 1 string to match.
12252          if (BuiltinName.substr(23, 3) != "256")
12253            break;
12254          return Intrinsic::x86_avx_storeu_pd_256;	 // "__builtin_ia32_storeupd256"
12255        case 's':	 // 1 string to match.
12256          if (BuiltinName.substr(23, 3) != "256")
12257            break;
12258          return Intrinsic::x86_avx_storeu_ps_256;	 // "__builtin_ia32_storeups256"
12259        }
12260        break;
12261      }
12262      break;
12263    case 'v':	 // 4 strings to match.
12264      if (BuiltinName.substr(16, 4) != "test")
12265        break;
12266      switch (BuiltinName[20]) {
12267      default: break;
12268      case 'c':	 // 2 strings to match.
12269        if (BuiltinName[21] != 'p')
12270          break;
12271        switch (BuiltinName[22]) {
12272        default: break;
12273        case 'd':	 // 1 string to match.
12274          if (BuiltinName.substr(23, 3) != "256")
12275            break;
12276          return Intrinsic::x86_avx_vtestc_pd_256;	 // "__builtin_ia32_vtestcpd256"
12277        case 's':	 // 1 string to match.
12278          if (BuiltinName.substr(23, 3) != "256")
12279            break;
12280          return Intrinsic::x86_avx_vtestc_ps_256;	 // "__builtin_ia32_vtestcps256"
12281        }
12282        break;
12283      case 'z':	 // 2 strings to match.
12284        if (BuiltinName[21] != 'p')
12285          break;
12286        switch (BuiltinName[22]) {
12287        default: break;
12288        case 'd':	 // 1 string to match.
12289          if (BuiltinName.substr(23, 3) != "256")
12290            break;
12291          return Intrinsic::x86_avx_vtestz_pd_256;	 // "__builtin_ia32_vtestzpd256"
12292        case 's':	 // 1 string to match.
12293          if (BuiltinName.substr(23, 3) != "256")
12294            break;
12295          return Intrinsic::x86_avx_vtestz_ps_256;	 // "__builtin_ia32_vtestzps256"
12296        }
12297        break;
12298      }
12299      break;
12300    }
12301    break;
12302  case 27:	 // 15 strings to match.
12303    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
12304      break;
12305    switch (BuiltinName[15]) {
12306    default: break;
12307    case 'c':	 // 2 strings to match.
12308      if (BuiltinName.substr(16, 4) != "vttp")
12309        break;
12310      switch (BuiltinName[20]) {
12311      default: break;
12312      case 'd':	 // 1 string to match.
12313        if (BuiltinName.substr(21, 6) != "2dq256")
12314          break;
12315        return Intrinsic::x86_avx_cvtt_pd2dq_256;	 // "__builtin_ia32_cvttpd2dq256"
12316      case 's':	 // 1 string to match.
12317        if (BuiltinName.substr(21, 6) != "2dq256")
12318          break;
12319        return Intrinsic::x86_avx_cvtt_ps2dq_256;	 // "__builtin_ia32_cvttps2dq256"
12320      }
12321      break;
12322    case 'e':	 // 1 string to match.
12323      if (BuiltinName.substr(16, 11) != "xtractps128")
12324        break;
12325      return Intrinsic::x86_sse41_extractps;	 // "__builtin_ia32_extractps128"
12326    case 'p':	 // 5 strings to match.
12327      switch (BuiltinName[16]) {
12328      default: break;
12329      case 'c':	 // 4 strings to match.
12330        if (BuiltinName.substr(17, 2) != "mp")
12331          break;
12332        switch (BuiltinName[19]) {
12333        default: break;
12334        case 'e':	 // 2 strings to match.
12335          if (BuiltinName.substr(20, 3) != "str")
12336            break;
12337          switch (BuiltinName[23]) {
12338          default: break;
12339          case 'i':	 // 1 string to match.
12340            if (BuiltinName.substr(24, 3) != "128")
12341              break;
12342            return Intrinsic::x86_sse42_pcmpestri128;	 // "__builtin_ia32_pcmpestri128"
12343          case 'm':	 // 1 string to match.
12344            if (BuiltinName.substr(24, 3) != "128")
12345              break;
12346            return Intrinsic::x86_sse42_pcmpestrm128;	 // "__builtin_ia32_pcmpestrm128"
12347          }
12348          break;
12349        case 'i':	 // 2 strings to match.
12350          if (BuiltinName.substr(20, 3) != "str")
12351            break;
12352          switch (BuiltinName[23]) {
12353          default: break;
12354          case 'i':	 // 1 string to match.
12355            if (BuiltinName.substr(24, 3) != "128")
12356              break;
12357            return Intrinsic::x86_sse42_pcmpistri128;	 // "__builtin_ia32_pcmpistri128"
12358          case 'm':	 // 1 string to match.
12359            if (BuiltinName.substr(24, 3) != "128")
12360              break;
12361            return Intrinsic::x86_sse42_pcmpistrm128;	 // "__builtin_ia32_pcmpistrm128"
12362          }
12363          break;
12364        }
12365        break;
12366      case 'm':	 // 1 string to match.
12367        if (BuiltinName.substr(17, 10) != "addubsw128")
12368          break;
12369        return Intrinsic::x86_ssse3_pmadd_ub_sw_128;	 // "__builtin_ia32_pmaddubsw128"
12370      }
12371      break;
12372    case 'v':	 // 7 strings to match.
12373      switch (BuiltinName[16]) {
12374      default: break;
12375      case 'b':	 // 1 string to match.
12376        if (BuiltinName.substr(17, 10) != "roadcastss")
12377          break;
12378        return Intrinsic::x86_avx_vbroadcastss;	 // "__builtin_ia32_vbroadcastss"
12379      case 'e':	 // 2 strings to match.
12380        if (BuiltinName.substr(17, 2) != "c_")
12381          break;
12382        switch (BuiltinName[19]) {
12383        default: break;
12384        case 'e':	 // 1 string to match.
12385          if (BuiltinName.substr(20, 7) != "xt_v4hi")
12386            break;
12387          return Intrinsic::x86_mmx_pextr_w;	 // "__builtin_ia32_vec_ext_v4hi"
12388        case 's':	 // 1 string to match.
12389          if (BuiltinName.substr(20, 7) != "et_v4hi")
12390            break;
12391          return Intrinsic::x86_mmx_pinsr_w;	 // "__builtin_ia32_vec_set_v4hi"
12392        }
12393        break;
12394      case 'p':	 // 4 strings to match.
12395        if (BuiltinName.substr(17, 5) != "ermil")
12396          break;
12397        switch (BuiltinName[22]) {
12398        default: break;
12399        case 'p':	 // 2 strings to match.
12400          switch (BuiltinName[23]) {
12401          default: break;
12402          case 'd':	 // 1 string to match.
12403            if (BuiltinName.substr(24, 3) != "256")
12404              break;
12405            return Intrinsic::x86_avx_vpermil_pd_256;	 // "__builtin_ia32_vpermilpd256"
12406          case 's':	 // 1 string to match.
12407            if (BuiltinName.substr(24, 3) != "256")
12408              break;
12409            return Intrinsic::x86_avx_vpermil_ps_256;	 // "__builtin_ia32_vpermilps256"
12410          }
12411          break;
12412        case 'v':	 // 2 strings to match.
12413          if (BuiltinName.substr(23, 3) != "arp")
12414            break;
12415          switch (BuiltinName[26]) {
12416          default: break;
12417          case 'd':	 // 1 string to match.
12418            return Intrinsic::x86_avx_vpermilvar_pd;	 // "__builtin_ia32_vpermilvarpd"
12419          case 's':	 // 1 string to match.
12420            return Intrinsic::x86_avx_vpermilvar_ps;	 // "__builtin_ia32_vpermilvarps"
12421          }
12422          break;
12423        }
12424        break;
12425      }
12426      break;
12427    }
12428    break;
12429  case 28:	 // 17 strings to match.
12430    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
12431      break;
12432    switch (BuiltinName[15]) {
12433    default: break;
12434    case 'a':	 // 2 strings to match.
12435      if (BuiltinName.substr(16, 2) != "es")
12436        break;
12437      switch (BuiltinName[18]) {
12438      default: break;
12439      case 'd':	 // 1 string to match.
12440        if (BuiltinName.substr(19, 9) != "eclast128")
12441          break;
12442        return Intrinsic::x86_aesni_aesdeclast;	 // "__builtin_ia32_aesdeclast128"
12443      case 'e':	 // 1 string to match.
12444        if (BuiltinName.substr(19, 9) != "nclast128")
12445          break;
12446        return Intrinsic::x86_aesni_aesenclast;	 // "__builtin_ia32_aesenclast128"
12447      }
12448      break;
12449    case 'm':	 // 2 strings to match.
12450      if (BuiltinName.substr(16, 8) != "askloadp")
12451        break;
12452      switch (BuiltinName[24]) {
12453      default: break;
12454      case 'd':	 // 1 string to match.
12455        if (BuiltinName.substr(25, 3) != "256")
12456          break;
12457        return Intrinsic::x86_avx_maskload_pd_256;	 // "__builtin_ia32_maskloadpd256"
12458      case 's':	 // 1 string to match.
12459        if (BuiltinName.substr(25, 3) != "256")
12460          break;
12461        return Intrinsic::x86_avx_maskload_ps_256;	 // "__builtin_ia32_maskloadps256"
12462      }
12463      break;
12464    case 'p':	 // 11 strings to match.
12465      switch (BuiltinName[16]) {
12466      default: break;
12467      case 'c':	 // 10 strings to match.
12468        if (BuiltinName.substr(17, 2) != "mp")
12469          break;
12470        switch (BuiltinName[19]) {
12471        default: break;
12472        case 'e':	 // 5 strings to match.
12473          if (BuiltinName.substr(20, 4) != "stri")
12474            break;
12475          switch (BuiltinName[24]) {
12476          default: break;
12477          case 'a':	 // 1 string to match.
12478            if (BuiltinName.substr(25, 3) != "128")
12479              break;
12480            return Intrinsic::x86_sse42_pcmpestria128;	 // "__builtin_ia32_pcmpestria128"
12481          case 'c':	 // 1 string to match.
12482            if (BuiltinName.substr(25, 3) != "128")
12483              break;
12484            return Intrinsic::x86_sse42_pcmpestric128;	 // "__builtin_ia32_pcmpestric128"
12485          case 'o':	 // 1 string to match.
12486            if (BuiltinName.substr(25, 3) != "128")
12487              break;
12488            return Intrinsic::x86_sse42_pcmpestrio128;	 // "__builtin_ia32_pcmpestrio128"
12489          case 's':	 // 1 string to match.
12490            if (BuiltinName.substr(25, 3) != "128")
12491              break;
12492            return Intrinsic::x86_sse42_pcmpestris128;	 // "__builtin_ia32_pcmpestris128"
12493          case 'z':	 // 1 string to match.
12494            if (BuiltinName.substr(25, 3) != "128")
12495              break;
12496            return Intrinsic::x86_sse42_pcmpestriz128;	 // "__builtin_ia32_pcmpestriz128"
12497          }
12498          break;
12499        case 'i':	 // 5 strings to match.
12500          if (BuiltinName.substr(20, 4) != "stri")
12501            break;
12502          switch (BuiltinName[24]) {
12503          default: break;
12504          case 'a':	 // 1 string to match.
12505            if (BuiltinName.substr(25, 3) != "128")
12506              break;
12507            return Intrinsic::x86_sse42_pcmpistria128;	 // "__builtin_ia32_pcmpistria128"
12508          case 'c':	 // 1 string to match.
12509            if (BuiltinName.substr(25, 3) != "128")
12510              break;
12511            return Intrinsic::x86_sse42_pcmpistric128;	 // "__builtin_ia32_pcmpistric128"
12512          case 'o':	 // 1 string to match.
12513            if (BuiltinName.substr(25, 3) != "128")
12514              break;
12515            return Intrinsic::x86_sse42_pcmpistrio128;	 // "__builtin_ia32_pcmpistrio128"
12516          case 's':	 // 1 string to match.
12517            if (BuiltinName.substr(25, 3) != "128")
12518              break;
12519            return Intrinsic::x86_sse42_pcmpistris128;	 // "__builtin_ia32_pcmpistris128"
12520          case 'z':	 // 1 string to match.
12521            if (BuiltinName.substr(25, 3) != "128")
12522              break;
12523            return Intrinsic::x86_sse42_pcmpistriz128;	 // "__builtin_ia32_pcmpistriz128"
12524          }
12525          break;
12526        }
12527        break;
12528      case 'h':	 // 1 string to match.
12529        if (BuiltinName.substr(17, 11) != "minposuw128")
12530          break;
12531        return Intrinsic::x86_sse41_phminposuw;	 // "__builtin_ia32_phminposuw128"
12532      }
12533      break;
12534    case 'v':	 // 2 strings to match.
12535      if (BuiltinName.substr(16, 8) != "testnzcp")
12536        break;
12537      switch (BuiltinName[24]) {
12538      default: break;
12539      case 'd':	 // 1 string to match.
12540        if (BuiltinName.substr(25, 3) != "256")
12541          break;
12542        return Intrinsic::x86_avx_vtestnzc_pd_256;	 // "__builtin_ia32_vtestnzcpd256"
12543      case 's':	 // 1 string to match.
12544        if (BuiltinName.substr(25, 3) != "256")
12545          break;
12546        return Intrinsic::x86_avx_vtestnzc_ps_256;	 // "__builtin_ia32_vtestnzcps256"
12547      }
12548      break;
12549    }
12550    break;
12551  case 29:	 // 2 strings to match.
12552    if (BuiltinName.substr(0, 25) != "__builtin_ia32_maskstorep")
12553      break;
12554    switch (BuiltinName[25]) {
12555    default: break;
12556    case 'd':	 // 1 string to match.
12557      if (BuiltinName.substr(26, 3) != "256")
12558        break;
12559      return Intrinsic::x86_avx_maskstore_pd_256;	 // "__builtin_ia32_maskstorepd256"
12560    case 's':	 // 1 string to match.
12561      if (BuiltinName.substr(26, 3) != "256")
12562        break;
12563      return Intrinsic::x86_avx_maskstore_ps_256;	 // "__builtin_ia32_maskstoreps256"
12564    }
12565    break;
12566  case 30:	 // 4 strings to match.
12567    if (BuiltinName.substr(0, 16) != "__builtin_ia32_v")
12568      break;
12569    switch (BuiltinName[16]) {
12570    default: break;
12571    case 'b':	 // 2 strings to match.
12572      if (BuiltinName.substr(17, 9) != "roadcasts")
12573        break;
12574      switch (BuiltinName[26]) {
12575      default: break;
12576      case 'd':	 // 1 string to match.
12577        if (BuiltinName.substr(27, 3) != "256")
12578          break;
12579        return Intrinsic::x86_avx_vbroadcast_sd_256;	 // "__builtin_ia32_vbroadcastsd256"
12580      case 's':	 // 1 string to match.
12581        if (BuiltinName.substr(27, 3) != "256")
12582          break;
12583        return Intrinsic::x86_avx_vbroadcastss_256;	 // "__builtin_ia32_vbroadcastss256"
12584      }
12585      break;
12586    case 'p':	 // 2 strings to match.
12587      if (BuiltinName.substr(17, 9) != "ermilvarp")
12588        break;
12589      switch (BuiltinName[26]) {
12590      default: break;
12591      case 'd':	 // 1 string to match.
12592        if (BuiltinName.substr(27, 3) != "256")
12593          break;
12594        return Intrinsic::x86_avx_vpermilvar_pd_256;	 // "__builtin_ia32_vpermilvarpd256"
12595      case 's':	 // 1 string to match.
12596        if (BuiltinName.substr(27, 3) != "256")
12597          break;
12598        return Intrinsic::x86_avx_vpermilvar_ps_256;	 // "__builtin_ia32_vpermilvarps256"
12599      }
12600      break;
12601    }
12602    break;
12603  case 31:	 // 3 strings to match.
12604    if (BuiltinName.substr(0, 26) != "__builtin_ia32_vperm2f128_")
12605      break;
12606    switch (BuiltinName[26]) {
12607    default: break;
12608    case 'p':	 // 2 strings to match.
12609      switch (BuiltinName[27]) {
12610      default: break;
12611      case 'd':	 // 1 string to match.
12612        if (BuiltinName.substr(28, 3) != "256")
12613          break;
12614        return Intrinsic::x86_avx_vperm2f128_pd_256;	 // "__builtin_ia32_vperm2f128_pd256"
12615      case 's':	 // 1 string to match.
12616        if (BuiltinName.substr(28, 3) != "256")
12617          break;
12618        return Intrinsic::x86_avx_vperm2f128_ps_256;	 // "__builtin_ia32_vperm2f128_ps256"
12619      }
12620      break;
12621    case 's':	 // 1 string to match.
12622      if (BuiltinName.substr(27, 4) != "i256")
12623        break;
12624      return Intrinsic::x86_avx_vperm2f128_si_256;	 // "__builtin_ia32_vperm2f128_si256"
12625    }
12626    break;
12627  case 32:	 // 3 strings to match.
12628    if (BuiltinName.substr(0, 27) != "__builtin_ia32_vinsertf128_")
12629      break;
12630    switch (BuiltinName[27]) {
12631    default: break;
12632    case 'p':	 // 2 strings to match.
12633      switch (BuiltinName[28]) {
12634      default: break;
12635      case 'd':	 // 1 string to match.
12636        if (BuiltinName.substr(29, 3) != "256")
12637          break;
12638        return Intrinsic::x86_avx_vinsertf128_pd_256;	 // "__builtin_ia32_vinsertf128_pd256"
12639      case 's':	 // 1 string to match.
12640        if (BuiltinName.substr(29, 3) != "256")
12641          break;
12642        return Intrinsic::x86_avx_vinsertf128_ps_256;	 // "__builtin_ia32_vinsertf128_ps256"
12643      }
12644      break;
12645    case 's':	 // 1 string to match.
12646      if (BuiltinName.substr(28, 4) != "i256")
12647        break;
12648      return Intrinsic::x86_avx_vinsertf128_si_256;	 // "__builtin_ia32_vinsertf128_si256"
12649    }
12650    break;
12651  case 33:	 // 4 strings to match.
12652    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
12653      break;
12654    switch (BuiltinName[15]) {
12655    default: break;
12656    case 'a':	 // 1 string to match.
12657      if (BuiltinName.substr(16, 17) != "eskeygenassist128")
12658        break;
12659      return Intrinsic::x86_aesni_aeskeygenassist;	 // "__builtin_ia32_aeskeygenassist128"
12660    case 'v':	 // 3 strings to match.
12661      if (BuiltinName.substr(16, 12) != "extractf128_")
12662        break;
12663      switch (BuiltinName[28]) {
12664      default: break;
12665      case 'p':	 // 2 strings to match.
12666        switch (BuiltinName[29]) {
12667        default: break;
12668        case 'd':	 // 1 string to match.
12669          if (BuiltinName.substr(30, 3) != "256")
12670            break;
12671          return Intrinsic::x86_avx_vextractf128_pd_256;	 // "__builtin_ia32_vextractf128_pd256"
12672        case 's':	 // 1 string to match.
12673          if (BuiltinName.substr(30, 3) != "256")
12674            break;
12675          return Intrinsic::x86_avx_vextractf128_ps_256;	 // "__builtin_ia32_vextractf128_ps256"
12676        }
12677        break;
12678      case 's':	 // 1 string to match.
12679        if (BuiltinName.substr(29, 4) != "i256")
12680          break;
12681        return Intrinsic::x86_avx_vextractf128_si_256;	 // "__builtin_ia32_vextractf128_si256"
12682      }
12683      break;
12684    }
12685    break;
12686  case 35:	 // 4 strings to match.
12687    if (BuiltinName.substr(0, 15) != "__builtin_ia32_")
12688      break;
12689    switch (BuiltinName[15]) {
12690    default: break;
12691    case 'p':	 // 2 strings to match.
12692      if (BuiltinName[16] != 's')
12693        break;
12694      switch (BuiltinName[17]) {
12695      default: break;
12696      case 'l':	 // 1 string to match.
12697        if (BuiltinName.substr(18, 17) != "ldqi128_byteshift")
12698          break;
12699        return Intrinsic::x86_sse2_psll_dq_bs;	 // "__builtin_ia32_pslldqi128_byteshift"
12700      case 'r':	 // 1 string to match.
12701        if (BuiltinName.substr(18, 17) != "ldqi128_byteshift")
12702          break;
12703        return Intrinsic::x86_sse2_psrl_dq_bs;	 // "__builtin_ia32_psrldqi128_byteshift"
12704      }
12705      break;
12706    case 'v':	 // 2 strings to match.
12707      if (BuiltinName.substr(16, 15) != "broadcastf128_p")
12708        break;
12709      switch (BuiltinName[31]) {
12710      default: break;
12711      case 'd':	 // 1 string to match.
12712        if (BuiltinName.substr(32, 3) != "256")
12713          break;
12714        return Intrinsic::x86_avx_vbroadcastf128_pd_256;	 // "__builtin_ia32_vbroadcastf128_pd256"
12715      case 's':	 // 1 string to match.
12716        if (BuiltinName.substr(32, 3) != "256")
12717          break;
12718        return Intrinsic::x86_avx_vbroadcastf128_ps_256;	 // "__builtin_ia32_vbroadcastf128_ps256"
12719      }
12720      break;
12721    }
12722    break;
12723  }
12724  }
12725  return Intrinsic::not_intrinsic;
12726}
12727#endif
12728
12729#if defined(_MSC_VER) && defined(setjmp_undefined_for_msvc)
12730// let's return it to _setjmp state
12731#  pragma pop_macro("setjmp")
12732#  undef setjmp_undefined_for_msvc
12733#endif
12734
12735