summaryrefslogtreecommitdiffstats
path: root/src/test/codegen/intrinsics
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/codegen/intrinsics')
-rw-r--r--src/test/codegen/intrinsics/const_eval_select.rs18
-rw-r--r--src/test/codegen/intrinsics/exact_div.rs20
-rw-r--r--src/test/codegen/intrinsics/likely.rs30
-rw-r--r--src/test/codegen/intrinsics/mask.rs11
-rw-r--r--src/test/codegen/intrinsics/nearby.rs18
-rw-r--r--src/test/codegen/intrinsics/nontemporal.rs13
-rw-r--r--src/test/codegen/intrinsics/offset_from.rs36
-rw-r--r--src/test/codegen/intrinsics/prefetch.rs63
-rw-r--r--src/test/codegen/intrinsics/unchecked_math.rs46
-rw-r--r--src/test/codegen/intrinsics/volatile.rs55
-rw-r--r--src/test/codegen/intrinsics/volatile_order.rs18
11 files changed, 0 insertions, 328 deletions
diff --git a/src/test/codegen/intrinsics/const_eval_select.rs b/src/test/codegen/intrinsics/const_eval_select.rs
deleted file mode 100644
index db8a04763..000000000
--- a/src/test/codegen/intrinsics/const_eval_select.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// compile-flags: -C no-prepopulate-passes
-
-#![crate_type = "lib"]
-#![feature(const_eval_select)]
-#![feature(core_intrinsics)]
-
-use std::intrinsics::const_eval_select;
-
-const fn foo(_: i32) -> i32 { 1 }
-
-#[no_mangle]
-pub fn hi(n: i32) -> i32 { n }
-
-#[no_mangle]
-pub unsafe fn hey() {
- // CHECK: call i32 @hi(i32
- const_eval_select((42,), foo, hi);
-}
diff --git a/src/test/codegen/intrinsics/exact_div.rs b/src/test/codegen/intrinsics/exact_div.rs
deleted file mode 100644
index 68eaa3999..000000000
--- a/src/test/codegen/intrinsics/exact_div.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// compile-flags: -C no-prepopulate-passes
-
-#![crate_type = "lib"]
-#![feature(core_intrinsics)]
-
-use std::intrinsics::exact_div;
-
-// CHECK-LABEL: @exact_sdiv
-#[no_mangle]
-pub unsafe fn exact_sdiv(x: i32, y: i32) -> i32 {
- // CHECK: sdiv exact
- exact_div(x, y)
-}
-
-// CHECK-LABEL: @exact_udiv
-#[no_mangle]
-pub unsafe fn exact_udiv(x: u32, y: u32) -> u32 {
- // CHECK: udiv exact
- exact_div(x, y)
-}
diff --git a/src/test/codegen/intrinsics/likely.rs b/src/test/codegen/intrinsics/likely.rs
deleted file mode 100644
index c5a0185bd..000000000
--- a/src/test/codegen/intrinsics/likely.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-// compile-flags: -C no-prepopulate-passes
-
-#![crate_type = "lib"]
-#![feature(core_intrinsics)]
-
-use std::intrinsics::{likely,unlikely};
-
-#[no_mangle]
-pub fn check_likely(x: i32, y: i32) -> Option<i32> {
- unsafe {
- // CHECK: call i1 @llvm.expect.i1(i1 %{{.*}}, i1 true)
- if likely(x == y) {
- None
- } else {
- Some(x + y)
- }
- }
-}
-
-#[no_mangle]
-pub fn check_unlikely(x: i32, y: i32) -> Option<i32> {
- unsafe {
- // CHECK: call i1 @llvm.expect.i1(i1 %{{.*}}, i1 false)
- if unlikely(x == y) {
- None
- } else {
- Some(x + y)
- }
- }
-}
diff --git a/src/test/codegen/intrinsics/mask.rs b/src/test/codegen/intrinsics/mask.rs
deleted file mode 100644
index 2e984db1b..000000000
--- a/src/test/codegen/intrinsics/mask.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-#![crate_type = "lib"]
-#![feature(core_intrinsics)]
-
-// CHECK-LABEL: @mask_ptr
-// CHECK-SAME: [[WORD:i[0-9]+]] %mask
-#[no_mangle]
-pub fn mask_ptr(ptr: *const u16, mask: usize) -> *const u16 {
- // CHECK: call
- // CHECK-SAME: @llvm.ptrmask.{{p0|p0i8}}.[[WORD]]({{ptr|i8\*}} {{%ptr|%0}}, [[WORD]] %mask)
- core::intrinsics::ptr_mask(ptr, mask)
-}
diff --git a/src/test/codegen/intrinsics/nearby.rs b/src/test/codegen/intrinsics/nearby.rs
deleted file mode 100644
index 520fe2f18..000000000
--- a/src/test/codegen/intrinsics/nearby.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-#![crate_type = "lib"]
-#![feature(core_intrinsics)]
-
-use std::intrinsics;
-
-// CHECK-LABEL: @nearbyintf32
-#[no_mangle]
-pub unsafe fn nearbyintf32(a: f32) -> f32 {
- // CHECK: llvm.nearbyint.f32
- intrinsics::nearbyintf32(a)
-}
-
-// CHECK-LABEL: @nearbyintf64
-#[no_mangle]
-pub unsafe fn nearbyintf64(a: f64) -> f64 {
- // CHECK: llvm.nearbyint.f64
- intrinsics::nearbyintf64(a)
-}
diff --git a/src/test/codegen/intrinsics/nontemporal.rs b/src/test/codegen/intrinsics/nontemporal.rs
deleted file mode 100644
index d8ee29452..000000000
--- a/src/test/codegen/intrinsics/nontemporal.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-// compile-flags: -O
-
-#![feature(core_intrinsics)]
-#![crate_type = "lib"]
-
-#[no_mangle]
-pub fn a(a: &mut u32, b: u32) {
- // CHECK-LABEL: define{{.*}}void @a
- // CHECK: store i32 %b, {{i32\*|ptr}} %a, align 4, !nontemporal
- unsafe {
- std::intrinsics::nontemporal_store(a, b);
- }
-}
diff --git a/src/test/codegen/intrinsics/offset_from.rs b/src/test/codegen/intrinsics/offset_from.rs
deleted file mode 100644
index d0de4c835..000000000
--- a/src/test/codegen/intrinsics/offset_from.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-// compile-flags: -C opt-level=1
-// only-64bit (because we're using [ui]size)
-
-#![crate_type = "lib"]
-#![feature(core_intrinsics)]
-
-//! Basic optimizations are enabled because otherwise `x86_64-gnu-nopt` had an alloca.
-//! Uses a type with non-power-of-two size to avoid normalizations to shifts.
-
-use std::intrinsics::*;
-
-type RGB = [u8; 3];
-
-// CHECK-LABEL: @offset_from_odd_size
-#[no_mangle]
-pub unsafe fn offset_from_odd_size(a: *const RGB, b: *const RGB) -> isize {
- // CHECK: start
- // CHECK-NEXT: ptrtoint
- // CHECK-NEXT: ptrtoint
- // CHECK-NEXT: sub i64
- // CHECK-NEXT: sdiv exact i64 %{{[0-9]+}}, 3
- // CHECK-NEXT: ret i64
- ptr_offset_from(a, b)
-}
-
-// CHECK-LABEL: @offset_from_unsigned_odd_size
-#[no_mangle]
-pub unsafe fn offset_from_unsigned_odd_size(a: *const RGB, b: *const RGB) -> usize {
- // CHECK: start
- // CHECK-NEXT: ptrtoint
- // CHECK-NEXT: ptrtoint
- // CHECK-NEXT: sub nuw i64
- // CHECK-NEXT: udiv exact i64 %{{[0-9]+}}, 3
- // CHECK-NEXT: ret i64
- ptr_offset_from_unsigned(a, b)
-}
diff --git a/src/test/codegen/intrinsics/prefetch.rs b/src/test/codegen/intrinsics/prefetch.rs
deleted file mode 100644
index 59d7fa638..000000000
--- a/src/test/codegen/intrinsics/prefetch.rs
+++ /dev/null
@@ -1,63 +0,0 @@
-// compile-flags: -C no-prepopulate-passes
-
-#![crate_type = "lib"]
-#![feature(core_intrinsics)]
-
-use std::intrinsics::{prefetch_read_data, prefetch_write_data,
- prefetch_read_instruction, prefetch_write_instruction};
-
-#[no_mangle]
-pub fn check_prefetch_read_data(data: &[i8]) {
- unsafe {
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 0, i32 0, i32 1)
- prefetch_read_data(data.as_ptr(), 0);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 0, i32 1, i32 1)
- prefetch_read_data(data.as_ptr(), 1);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 0, i32 2, i32 1)
- prefetch_read_data(data.as_ptr(), 2);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 0, i32 3, i32 1)
- prefetch_read_data(data.as_ptr(), 3);
- }
-}
-
-#[no_mangle]
-pub fn check_prefetch_write_data(data: &[i8]) {
- unsafe {
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 1, i32 0, i32 1)
- prefetch_write_data(data.as_ptr(), 0);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 1, i32 1, i32 1)
- prefetch_write_data(data.as_ptr(), 1);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 1, i32 2, i32 1)
- prefetch_write_data(data.as_ptr(), 2);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 1, i32 3, i32 1)
- prefetch_write_data(data.as_ptr(), 3);
- }
-}
-
-#[no_mangle]
-pub fn check_prefetch_read_instruction(data: &[i8]) {
- unsafe {
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 0, i32 0, i32 0)
- prefetch_read_instruction(data.as_ptr(), 0);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 0, i32 1, i32 0)
- prefetch_read_instruction(data.as_ptr(), 1);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 0, i32 2, i32 0)
- prefetch_read_instruction(data.as_ptr(), 2);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 0, i32 3, i32 0)
- prefetch_read_instruction(data.as_ptr(), 3);
- }
-}
-
-#[no_mangle]
-pub fn check_prefetch_write_instruction(data: &[i8]) {
- unsafe {
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 1, i32 0, i32 0)
- prefetch_write_instruction(data.as_ptr(), 0);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 1, i32 1, i32 0)
- prefetch_write_instruction(data.as_ptr(), 1);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 1, i32 2, i32 0)
- prefetch_write_instruction(data.as_ptr(), 2);
- // CHECK: call void @llvm.prefetch{{.*}}({{.*}}, i32 1, i32 3, i32 0)
- prefetch_write_instruction(data.as_ptr(), 3);
- }
-}
diff --git a/src/test/codegen/intrinsics/unchecked_math.rs b/src/test/codegen/intrinsics/unchecked_math.rs
deleted file mode 100644
index 419c120ed..000000000
--- a/src/test/codegen/intrinsics/unchecked_math.rs
+++ /dev/null
@@ -1,46 +0,0 @@
-#![crate_type = "lib"]
-#![feature(core_intrinsics)]
-
-use std::intrinsics::*;
-
-// CHECK-LABEL: @unchecked_add_signed
-#[no_mangle]
-pub unsafe fn unchecked_add_signed(a: i32, b: i32) -> i32 {
- // CHECK: add nsw
- unchecked_add(a, b)
-}
-
-// CHECK-LABEL: @unchecked_add_unsigned
-#[no_mangle]
-pub unsafe fn unchecked_add_unsigned(a: u32, b: u32) -> u32 {
- // CHECK: add nuw
- unchecked_add(a, b)
-}
-
-// CHECK-LABEL: @unchecked_sub_signed
-#[no_mangle]
-pub unsafe fn unchecked_sub_signed(a: i32, b: i32) -> i32 {
- // CHECK: sub nsw
- unchecked_sub(a, b)
-}
-
-// CHECK-LABEL: @unchecked_sub_unsigned
-#[no_mangle]
-pub unsafe fn unchecked_sub_unsigned(a: u32, b: u32) -> u32 {
- // CHECK: sub nuw
- unchecked_sub(a, b)
-}
-
-// CHECK-LABEL: @unchecked_mul_signed
-#[no_mangle]
-pub unsafe fn unchecked_mul_signed(a: i32, b: i32) -> i32 {
- // CHECK: mul nsw
- unchecked_mul(a, b)
-}
-
-// CHECK-LABEL: @unchecked_mul_unsigned
-#[no_mangle]
-pub unsafe fn unchecked_mul_unsigned(a: u32, b: u32) -> u32 {
- // CHECK: mul nuw
- unchecked_mul(a, b)
-}
diff --git a/src/test/codegen/intrinsics/volatile.rs b/src/test/codegen/intrinsics/volatile.rs
deleted file mode 100644
index 7980c00e7..000000000
--- a/src/test/codegen/intrinsics/volatile.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-// compile-flags: -C no-prepopulate-passes
-
-#![crate_type = "lib"]
-#![feature(core_intrinsics)]
-
-use std::intrinsics;
-
-// CHECK-LABEL: @volatile_copy_memory
-#[no_mangle]
-pub unsafe fn volatile_copy_memory(a: *mut u8, b: *const u8) {
- // CHECK: llvm.memmove.{{\w*(.*true)}}
- intrinsics::volatile_copy_memory(a, b, 1)
-}
-
-// CHECK-LABEL: @volatile_copy_nonoverlapping_memory
-#[no_mangle]
-pub unsafe fn volatile_copy_nonoverlapping_memory(a: *mut u8, b: *const u8) {
- // CHECK: llvm.memcpy.{{\w*(.*true)}}
- intrinsics::volatile_copy_nonoverlapping_memory(a, b, 1)
-}
-
-// CHECK-LABEL: @volatile_set_memory
-#[no_mangle]
-pub unsafe fn volatile_set_memory(a: *mut u8, b: u8) {
- // CHECK: llvm.memset.{{\w*(.*true)}}
- intrinsics::volatile_set_memory(a, b, 1)
-}
-
-// CHECK-LABEL: @volatile_load
-#[no_mangle]
-pub unsafe fn volatile_load(a: *const u8) -> u8 {
- // CHECK: load volatile
- intrinsics::volatile_load(a)
-}
-
-// CHECK-LABEL: @volatile_store
-#[no_mangle]
-pub unsafe fn volatile_store(a: *mut u8, b: u8) {
- // CHECK: store volatile
- intrinsics::volatile_store(a, b)
-}
-
-// CHECK-LABEL: @unaligned_volatile_load
-#[no_mangle]
-pub unsafe fn unaligned_volatile_load(a: *const u8) -> u8 {
- // CHECK: load volatile
- intrinsics::unaligned_volatile_load(a)
-}
-
-// CHECK-LABEL: @unaligned_volatile_store
-#[no_mangle]
-pub unsafe fn unaligned_volatile_store(a: *mut u8, b: u8) {
- // CHECK: store volatile
- intrinsics::unaligned_volatile_store(a, b)
-}
diff --git a/src/test/codegen/intrinsics/volatile_order.rs b/src/test/codegen/intrinsics/volatile_order.rs
deleted file mode 100644
index 99469831a..000000000
--- a/src/test/codegen/intrinsics/volatile_order.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-#![crate_type = "lib"]
-#![feature(core_intrinsics)]
-
-use std::intrinsics::*;
-
-pub unsafe fn test_volatile_order() {
- let mut a: Box<u8> = Box::new(0);
- // CHECK: load volatile
- let x = volatile_load(&*a);
- // CHECK: load volatile
- let x = volatile_load(&*a);
- // CHECK: store volatile
- volatile_store(&mut *a, 12);
- // CHECK: store volatile
- unaligned_volatile_store(&mut *a, 12);
- // CHECK: llvm.memset.p0
- volatile_set_memory(&mut *a, 12, 1)
-}