diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
commit | 64d98f8ee037282c35007b64c2649055c56af1db (patch) | |
tree | 5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /src/test/ui/intrinsics/const-eval-select-x86_64.rs | |
parent | Adding debian version 1.67.1+dfsg1-1. (diff) | |
download | rustc-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.rs | 40 |
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); -} |