diff options
| author | antoyo <antoyo@users.noreply.github.com> | 2022-10-01 18:22:06 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-01 18:22:06 -0400 |
| commit | 6f1adbd9e33a6e9d6d79dfbee0f682a4ef2b4124 (patch) | |
| tree | 27c8bc54c70e7827d293b621e457f186f1428b11 /src | |
| parent | 98f0dc148ddd79c3a246bc58c687376ea9bfc5f8 (diff) | |
| parent | a0654b398b7947ee4e7e632e219f98faf1a6c215 (diff) | |
| download | rust-6f1adbd9e33a6e9d6d79dfbee0f682a4ef2b4124.tar.gz rust-6f1adbd9e33a6e9d6d79dfbee0f682a4ef2b4124.zip | |
Merge pull request #226 from rust-lang/feature/llvm-prefetch
Implement llvm.prefetch
Diffstat (limited to 'src')
| -rw-r--r-- | src/intrinsic/llvm.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/intrinsic/llvm.rs b/src/intrinsic/llvm.rs index 20f500e34e9..5d10119e85e 100644 --- a/src/intrinsic/llvm.rs +++ b/src/intrinsic/llvm.rs @@ -236,6 +236,11 @@ pub fn adjust_intrinsic_arguments<'a, 'b, 'gcc, 'tcx>(builder: &Builder<'a, 'gcc let arg2 = builder.context.new_cast(None, arg2, arg2_type); args = vec![new_args[0], arg2].into(); }, + "__builtin_prefetch" => { + let mut new_args = args.to_vec(); + new_args.pop(); + args = new_args.into(); + }, _ => (), } } @@ -393,6 +398,16 @@ pub fn intrinsic<'gcc, 'tcx>(name: &str, cx: &CodegenCx<'gcc, 'tcx>) -> Function #[cfg(feature="master")] pub fn intrinsic<'gcc, 'tcx>(name: &str, cx: &CodegenCx<'gcc, 'tcx>) -> Function<'gcc> { + match name { + "llvm.prefetch" => { + let gcc_name = "__builtin_prefetch"; + let func = cx.context.get_builtin_function(gcc_name); + cx.functions.borrow_mut().insert(gcc_name.to_string(), func); + return func + }, + _ => (), + } + let gcc_name = match name { "llvm.x86.xgetbv" => "__builtin_ia32_xgetbv", // NOTE: this doc specifies the equivalent GCC builtins: http://huonw.github.io/llvmint/llvmint/x86/index.html |
