@@ -3,134 +3,13 @@ use gccjit::Function;
3
3
use crate :: context:: CodegenCx ;
4
4
5
5
pub 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
+ } ;
134
13
135
14
let func = cx. context . get_target_builtin_function ( gcc_name) ;
136
15
cx. functions . borrow_mut ( ) . insert ( gcc_name. to_string ( ) , func) ;
0 commit comments