Skip to content

Commit 76cf7c2

Browse files
authoredMar 30, 2022
Merge pull request rust-lang#150 from bjorn3/bootstrap_missing_vendor_intrinsics
Add missing vendor intrinsics
2 parents a445bcb + 9bb797c commit 76cf7c2

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed
 

‎src/base.rs

+3
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ pub fn compile_codegen_unit<'tcx>(tcx: TyCtxt<'tcx>, cgu_name: Symbol, supports_
7979
// TODO(antoyo): only set on x86 platforms.
8080
context.add_command_line_option("-masm=intel");
8181
// TODO(antoyo): only add the following cli argument if the feature is supported.
82+
context.add_command_line_option("-msse2");
8283
context.add_command_line_option("-mavx2");
84+
context.add_command_line_option("-msha");
85+
context.add_command_line_option("-mpclmul");
8386
// FIXME(antoyo): the following causes an illegal instruction on vmovdqu64 in std_example on my CPU.
8487
// Only add if the CPU supports it.
8588
//context.add_command_line_option("-mavx512f");

‎src/intrinsic/llvm.rs

+14
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ pub fn intrinsic<'gcc, 'tcx>(name: &str, cx: &CodegenCx<'gcc, 'tcx>) -> Function
1616
"llvm.x86.avx2.pshuf.b" => "__builtin_ia32_pshufb256",
1717
"llvm.x86.avx2.pslli.d" => "__builtin_ia32_pslldi256",
1818
"llvm.x86.avx2.psrli.d" => "__builtin_ia32_psrldi256",
19+
"llvm.x86.sse2.pslli.q" => "__builtin_ia32_psllqi128",
1920
"llvm.x86.avx.vzeroupper" => "__builtin_ia32_vzeroupper",
2021
"llvm.x86.avx2.vperm2i128" => "__builtin_ia32_permti256",
2122
"llvm.x86.avx2.psrli.w" => "__builtin_ia32_psrlwi256",
@@ -28,6 +29,11 @@ pub fn intrinsic<'gcc, 'tcx>(name: &str, cx: &CodegenCx<'gcc, 'tcx>) -> Function
2829
"llvm.x86.avx2.pabs.b" => "__builtin_ia32_pabsb256",
2930
"llvm.x86.avx2.psrli.q" => "__builtin_ia32_psrlqi256",
3031
"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",
3137
"llvm.x86.avx2.pavg.w" => "__builtin_ia32_pavgw256",
3238
"llvm.x86.avx2.pavg.b" => "__builtin_ia32_pavgb256",
3339
"llvm.x86.avx2.phadd.w" => "__builtin_ia32_phaddw256",
@@ -113,6 +119,14 @@ pub fn intrinsic<'gcc, 'tcx>(name: &str, cx: &CodegenCx<'gcc, 'tcx>) -> Function
113119
"llvm.x86.avx2.psrlv.q" => "__builtin_ia32_psrlv2di",
114120
"llvm.x86.avx2.psrlv.q.256" => "__builtin_ia32_psrlv4di",
115121
"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",
116130

117131
"llvm.sqrt.v2f64" => "__builtin_ia32_sqrtpd",
118132
_ => unimplemented!("***** unsupported LLVM intrinsic {}", name),

0 commit comments

Comments
 (0)