@@ -3,134 +3,13 @@ use gccjit::Function;
33use crate :: context:: CodegenCx ;
44
55pub fn intrinsic < ' gcc , ' tcx > ( name : & str , cx : & CodegenCx < ' gcc , ' tcx > ) -> Function < ' gcc > {
6- let gcc_name =
7- match name {
8- "llvm.x86.xgetbv" => "__builtin_ia32_xgetbv" ,
9- // NOTE: this doc specifies the equivalent GCC builtins: http://huonw.github.io/llvmint/llvmint/x86/index.html
10- "llvm.x86.sse2.pmovmskb.128" => "__builtin_ia32_pmovmskb128" ,
11- "llvm.x86.avx2.pmovmskb" => "__builtin_ia32_pmovmskb256" ,
12- "llvm.x86.sse2.cmp.pd" => "__builtin_ia32_cmppd" ,
13- "llvm.x86.sse2.movmsk.pd" => "__builtin_ia32_movmskpd" ,
14- "llvm.x86.ssse3.pshuf.b.128" => "__builtin_ia32_pshufb128" ,
15- "llvm.x86.sse2.pause" => "__builtin_ia32_pause" ,
16- "llvm.x86.avx2.pshuf.b" => "__builtin_ia32_pshufb256" ,
17- "llvm.x86.avx2.pslli.d" => "__builtin_ia32_pslldi256" ,
18- "llvm.x86.avx2.psrli.d" => "__builtin_ia32_psrldi256" ,
19- "llvm.x86.sse2.pslli.q" => "__builtin_ia32_psllqi128" ,
20- "llvm.x86.avx.vzeroupper" => "__builtin_ia32_vzeroupper" ,
21- "llvm.x86.avx2.vperm2i128" => "__builtin_ia32_permti256" ,
22- "llvm.x86.avx2.psrli.w" => "__builtin_ia32_psrlwi256" ,
23- "llvm.x86.sse2.storeu.dq" => "__builtin_ia32_storedqu" ,
24- "llvm.x86.sse2.psrli.w" => "__builtin_ia32_psrlwi128" ,
25- "llvm.x86.avx2.pabs.d" => "__builtin_ia32_pabsd256" ,
26- "llvm.x86.sse2.psrli.q" => "__builtin_ia32_psrlqi128" ,
27- "llvm.x86.avx2.pabs.w" => "__builtin_ia32_pabsw256" ,
28- "llvm.x86.avx2.pblendvb" => "__builtin_ia32_pblendvb256" ,
29- "llvm.x86.avx2.pabs.b" => "__builtin_ia32_pabsb256" ,
30- "llvm.x86.avx2.psrli.q" => "__builtin_ia32_psrlqi256" ,
31- "llvm.x86.sse41.pblendvb" => "__builtin_ia32_pblendvb128" ,
32- "llvm.x86.sse41.pblendw" => "__builtin_ia32_pblendw128" ,
33- "llvm.x86.sse42.crc32.32.8" => "__builtin_ia32_crc32qi" ,
34- "llvm.x86.sse42.crc32.32.16" => "__builtin_ia32_crc32hi" ,
35- "llvm.x86.sse42.crc32.32.32" => "__builtin_ia32_crc32si" ,
36- "llvm.x86.sse42.crc32.64.64" => "__builtin_ia32_crc32di" ,
37- "llvm.x86.avx2.pavg.w" => "__builtin_ia32_pavgw256" ,
38- "llvm.x86.avx2.pavg.b" => "__builtin_ia32_pavgb256" ,
39- "llvm.x86.avx2.phadd.w" => "__builtin_ia32_phaddw256" ,
40- "llvm.x86.avx2.phadd.d" => "__builtin_ia32_phaddd256" ,
41- "llvm.x86.avx2.phadd.sw" => "__builtin_ia32_phaddsw256" ,
42- "llvm.x86.avx2.phsub.w" => "__builtin_ia32_phsubw256" ,
43- "llvm.x86.avx2.phsub.d" => "__builtin_ia32_phsubd256" ,
44- "llvm.x86.avx2.phsub.sw" => "__builtin_ia32_phsubsw256" ,
45- "llvm.x86.avx2.gather.d.d" => "__builtin_ia32_gatherd_d" ,
46- "llvm.x86.avx2.gather.d.d.256" => "__builtin_ia32_gatherd_d256" ,
47- "llvm.x86.avx2.gather.d.ps" => "__builtin_ia32_gatherd_ps" ,
48- "llvm.x86.avx2.gather.d.ps.256" => "__builtin_ia32_gatherd_ps256" ,
49- "llvm.x86.avx2.gather.d.q" => "__builtin_ia32_gatherd_q" ,
50- "llvm.x86.avx2.gather.d.q.256" => "__builtin_ia32_gatherd_q256" ,
51- "llvm.x86.avx2.gather.d.pd" => "__builtin_ia32_gatherd_pd" ,
52- "llvm.x86.avx2.gather.d.pd.256" => "__builtin_ia32_gatherd_pd256" ,
53- "llvm.x86.avx2.gather.q.d" => "__builtin_ia32_gatherq_d" ,
54- "llvm.x86.avx2.gather.q.d.256" => "__builtin_ia32_gatherq_d256" ,
55- "llvm.x86.avx2.gather.q.ps" => "__builtin_ia32_gatherq_ps" ,
56- "llvm.x86.avx2.gather.q.ps.256" => "__builtin_ia32_gatherq_ps256" ,
57- "llvm.x86.avx2.gather.q.q" => "__builtin_ia32_gatherq_q" ,
58- "llvm.x86.avx2.gather.q.q.256" => "__builtin_ia32_gatherq_q256" ,
59- "llvm.x86.avx2.gather.q.pd" => "__builtin_ia32_gatherq_pd" ,
60- "llvm.x86.avx2.gather.q.pd.256" => "__builtin_ia32_gatherq_pd256" ,
61- "llvm.x86.avx2.pmadd.wd" => "__builtin_ia32_pmaddwd256" ,
62- "llvm.x86.avx2.pmadd.ub.sw" => "__builtin_ia32_pmaddubsw256" ,
63- "llvm.x86.avx2.maskload.d" => "__builtin_ia32_maskloadd" ,
64- "llvm.x86.avx2.maskload.d.256" => "__builtin_ia32_maskloadd256" ,
65- "llvm.x86.avx2.maskload.q" => "__builtin_ia32_maskloadq" ,
66- "llvm.x86.avx2.maskload.q.256" => "__builtin_ia32_maskloadq256" ,
67- "llvm.x86.avx2.maskstore.d" => "__builtin_ia32_maskstored" ,
68- "llvm.x86.avx2.maskstore.d.256" => "__builtin_ia32_maskstored256" ,
69- "llvm.x86.avx2.maskstore.q" => "__builtin_ia32_maskstoreq" ,
70- "llvm.x86.avx2.maskstore.q.256" => "__builtin_ia32_maskstoreq256" ,
71- "llvm.x86.avx2.pmaxs.w" => "__builtin_ia32_pmaxsw256" ,
72- "llvm.x86.avx2.pmaxs.d" => "__builtin_ia32_pmaxsd256" ,
73- "llvm.x86.avx2.pmaxs.b" => "__builtin_ia32_pmaxsb256" ,
74- "llvm.x86.avx2.pmaxu.w" => "__builtin_ia32_pmaxuw256" ,
75- "llvm.x86.avx2.pmaxu.d" => "__builtin_ia32_pmaxud256" ,
76- "llvm.x86.avx2.pmaxu.b" => "__builtin_ia32_pmaxub256" ,
77- "llvm.x86.avx2.pmins.w" => "__builtin_ia32_pminsw256" ,
78- "llvm.x86.avx2.pmins.d" => "__builtin_ia32_pminsd256" ,
79- "llvm.x86.avx2.pmins.b" => "__builtin_ia32_pminsb256" ,
80- "llvm.x86.avx2.pminu.w" => "__builtin_ia32_pminuw256" ,
81- "llvm.x86.avx2.pminu.d" => "__builtin_ia32_pminud256" ,
82- "llvm.x86.avx2.pminu.b" => "__builtin_ia32_pminub256" ,
83- "llvm.x86.avx2.mpsadbw" => "__builtin_ia32_mpsadbw256" ,
84- "llvm.x86.avx2.pmul.dq" => "__builtin_ia32_pmuldq256" ,
85- "llvm.x86.avx2.pmulu.dq" => "__builtin_ia32_pmuludq256" ,
86- "llvm.x86.avx2.pmulh.w" => "__builtin_ia32_pmulhw256" ,
87- "llvm.x86.avx2.pmulhu.w" => "__builtin_ia32_pmulhuw256" ,
88- "llvm.x86.avx2.pmul.hr.sw" => "__builtin_ia32_pmulhrsw256" ,
89- "llvm.x86.avx2.packsswb" => "__builtin_ia32_packsswb256" ,
90- "llvm.x86.avx2.packssdw" => "__builtin_ia32_packssdw256" ,
91- "llvm.x86.avx2.packuswb" => "__builtin_ia32_packuswb256" ,
92- "llvm.x86.avx2.packusdw" => "__builtin_ia32_packusdw256" ,
93- "llvm.x86.avx2.permd" => "__builtin_ia32_permvarsi256" ,
94- "llvm.x86.avx2.permps" => "__builtin_ia32_permvarsf256" ,
95- "llvm.x86.avx2.psad.bw" => "__builtin_ia32_psadbw256" ,
96- "llvm.x86.avx2.psign.w" => "__builtin_ia32_psignw256" ,
97- "llvm.x86.avx2.psign.d" => "__builtin_ia32_psignd256" ,
98- "llvm.x86.avx2.psign.b" => "__builtin_ia32_psignb256" ,
99- "llvm.x86.avx2.psll.w" => "__builtin_ia32_psllw256" ,
100- "llvm.x86.avx2.psll.d" => "__builtin_ia32_pslld256" ,
101- "llvm.x86.avx2.psll.q" => "__builtin_ia32_psllq256" ,
102- "llvm.x86.avx2.pslli.w" => "__builtin_ia32_psllwi256" ,
103- "llvm.x86.avx2.pslli.q" => "__builtin_ia32_psllqi256" ,
104- "llvm.x86.avx2.psllv.d" => "__builtin_ia32_psllv4si" ,
105- "llvm.x86.avx2.psllv.d.256" => "__builtin_ia32_psllv8si" ,
106- "llvm.x86.avx2.psllv.q" => "__builtin_ia32_psllv2di" ,
107- "llvm.x86.avx2.psllv.q.256" => "__builtin_ia32_psllv4di" ,
108- "llvm.x86.avx2.psra.w" => "__builtin_ia32_psraw256" ,
109- "llvm.x86.avx2.psra.d" => "__builtin_ia32_psrad256" ,
110- "llvm.x86.avx2.psrai.w" => "__builtin_ia32_psrawi256" ,
111- "llvm.x86.avx2.psrai.d" => "__builtin_ia32_psradi256" ,
112- "llvm.x86.avx2.psrav.d" => "__builtin_ia32_psrav4si" ,
113- "llvm.x86.avx2.psrav.d.256" => "__builtin_ia32_psrav8si" ,
114- "llvm.x86.avx2.psrl.w" => "__builtin_ia32_psrlw256" ,
115- "llvm.x86.avx2.psrl.d" => "__builtin_ia32_psrld256" ,
116- "llvm.x86.avx2.psrl.q" => "__builtin_ia32_psrlq256" ,
117- "llvm.x86.avx2.psrlv.d" => "__builtin_ia32_psrlv4si" ,
118- "llvm.x86.avx2.psrlv.d.256" => "__builtin_ia32_psrlv8si" ,
119- "llvm.x86.avx2.psrlv.q" => "__builtin_ia32_psrlv2di" ,
120- "llvm.x86.avx2.psrlv.q.256" => "__builtin_ia32_psrlv4di" ,
121- "llvm.x86.sse.sqrt.ss" => "__builtin_ia32_sqrtss" ,
122- "llvm.x86.pclmulqdq" => "__builtin_ia32_pclmulqdq128" ,
123- "llvm.x86.sha1msg1" => "__builtin_ia32_sha1msg1" ,
124- "llvm.x86.sha1msg2" => "__builtin_ia32_sha1msg2" ,
125- "llvm.x86.sha1nexte" => "__builtin_ia32_sha1nexte" ,
126- "llvm.x86.sha1rnds4" => "__builtin_ia32_sha1rnds4" ,
127- "llvm.x86.sha256msg1" => "__builtin_ia32_sha256msg1" ,
128- "llvm.x86.sha256msg2" => "__builtin_ia32_sha256msg2" ,
129- "llvm.x86.sha256rnds2" => "__builtin_ia32_sha256rnds2" ,
130-
131- "llvm.sqrt.v2f64" => "__builtin_ia32_sqrtpd" ,
132- _ => unimplemented ! ( "***** unsupported LLVM intrinsic {}" , name) ,
133- } ;
6+ let gcc_name = match name {
7+ "llvm.x86.xgetbv" => "__builtin_ia32_xgetbv" ,
8+ // NOTE: this doc specifies the equivalent GCC builtins: http://huonw.github.io/llvmint/llvmint/x86/index.html
9+ "llvm.sqrt.v2f64" => "__builtin_ia32_sqrtpd" ,
10+ // NOTE: this file is generated by https://github.com/GuillaumeGomez/llvmint/blob/master/generate_list.py
11+ _ => include ! ( "x86.rs" ) ,
12+ } ;
13413
13514 let func = cx. context . get_target_builtin_function ( gcc_name) ;
13615 cx. functions . borrow_mut ( ) . insert ( gcc_name. to_string ( ) , func) ;
0 commit comments