summary refs log tree commit diff
path: root/tests/codegen-llvm/intrinsics/likely.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/codegen-llvm/intrinsics/likely.rs')
-rw-r--r--tests/codegen-llvm/intrinsics/likely.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/codegen-llvm/intrinsics/likely.rs b/tests/codegen-llvm/intrinsics/likely.rs
new file mode 100644
index 00000000000..c5e3c466f45
--- /dev/null
+++ b/tests/codegen-llvm/intrinsics/likely.rs
@@ -0,0 +1,35 @@
+//@ compile-flags: -Copt-level=3
+#![crate_type = "lib"]
+#![feature(core_intrinsics)]
+
+use std::intrinsics::likely;
+
+#[inline(never)]
+#[no_mangle]
+pub fn path_a() {
+    println!("path a");
+}
+
+#[inline(never)]
+#[no_mangle]
+pub fn path_b() {
+    println!("path b");
+}
+
+#[no_mangle]
+pub fn test_likely(x: bool) {
+    if likely(x) {
+        path_a();
+    } else {
+        path_b();
+    }
+}
+
+// CHECK-LABEL: @test_likely(
+// CHECK: br i1 %x, label %bb2, label %bb3, !prof ![[NUM:[0-9]+]]
+// CHECK: bb3:
+// CHECK-NOT: cold_path
+// CHECK: path_b
+// CHECK: bb2:
+// CHECK: path_a
+// CHECK: ![[NUM]] = !{!"branch_weights", {{(!"expected", )?}}i32 2000, i32 1}