summaryrefslogtreecommitdiffstats
path: root/src/test/ui/intrinsics/const-eval-select-x86_64.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
commit64d98f8ee037282c35007b64c2649055c56af1db (patch)
tree5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /src/test/ui/intrinsics/const-eval-select-x86_64.rs
parentAdding debian version 1.67.1+dfsg1-1. (diff)
downloadrustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz
rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/intrinsics/const-eval-select-x86_64.rs')
-rw-r--r--src/test/ui/intrinsics/const-eval-select-x86_64.rs40
1 files changed, 0 insertions, 40 deletions
diff --git a/src/test/ui/intrinsics/const-eval-select-x86_64.rs b/src/test/ui/intrinsics/const-eval-select-x86_64.rs
deleted file mode 100644
index f3924acf0..000000000
--- a/src/test/ui/intrinsics/const-eval-select-x86_64.rs
+++ /dev/null
@@ -1,40 +0,0 @@
-// run-pass
-// only-x86_64
-
-#![feature(const_eval_select)]
-#![feature(core_intrinsics)]
-use std::intrinsics::const_eval_select;
-use std::arch::x86_64::*;
-use std::mem::transmute;
-
-const fn eq_ct(x: [i32; 4], y: [i32; 4]) -> bool {
- x[0] == y[0] && x[1] == y[1] && x[2] == y[2] && x[3] == y[3]
-}
-
-fn eq_rt(x: [i32; 4], y: [i32; 4]) -> bool {
- unsafe {
- let x = _mm_loadu_si128(&x as *const _ as *const _);
- let y = _mm_loadu_si128(&y as *const _ as *const _);
- let r = _mm_cmpeq_epi32(x, y);
- let r = _mm_movemask_ps(transmute(r) );
- r == 0b1111
- }
-}
-
-const fn eq(x: [i32; 4], y: [i32; 4]) -> bool {
- unsafe {
- const_eval_select((x, y), eq_ct, eq_rt)
- }
-}
-
-fn main() {
- const X: bool = eq([0, 1, 2, 3], [0, 1, 2, 3]);
- assert_eq!(X, true);
- let x = eq([0, 1, 2, 3], [0, 1, 2, 3]);
- assert_eq!(x, true);
-
- const Y: bool = eq([0, 1, 2, 3], [0, 1, 3, 2]);
- assert_eq!(Y, false);
- let y = eq([0, 1, 2, 3], [0, 1, 3, 2]);
- assert_eq!(y, false);
-}