about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorantoyo <antoyo@users.noreply.github.com>2022-10-01 18:22:06 -0400
committerGitHub <noreply@github.com>2022-10-01 18:22:06 -0400
commit6f1adbd9e33a6e9d6d79dfbee0f682a4ef2b4124 (patch)
tree27c8bc54c70e7827d293b621e457f186f1428b11 /src
parent98f0dc148ddd79c3a246bc58c687376ea9bfc5f8 (diff)
parenta0654b398b7947ee4e7e632e219f98faf1a6c215 (diff)
downloadrust-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.rs15
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