summary refs log tree commit diff
path: root/src/test/ui/simd
diff options
context:
space:
mode:
authorJonas Schievink <jonasschievink@gmail.com>2020-10-04 15:45:43 +0200
committerGitHub <noreply@github.com>2020-10-04 15:45:43 +0200
commit5bd9ce5cd4f455a113d41bdf481606fc7545e618 (patch)
treedaf9a8d1d7ae175d27d98789b5f6ec9ab110122c /src/test/ui/simd
parent80953177ede031b953b5d3fb77051809f8ef4deb (diff)
parente41a14412e207aac5f7d686d395bc6a23f643dc9 (diff)
downloadrust-5bd9ce5cd4f455a113d41bdf481606fc7545e618.tar.gz
rust-5bd9ce5cd4f455a113d41bdf481606fc7545e618.zip
Rollup merge of #77504 - Amanieu:select_simd_bitmask, r=ecstatic-morse
Support vectors with fewer than 8 elements for simd_select_bitmask

Resolves the issue raised here: https://github.com/rust-lang/stdarch/issues/310#issuecomment-693730094
Diffstat (limited to 'src/test/ui/simd')
-rw-r--r--src/test/ui/simd/simd-intrinsic-generic-select.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/ui/simd/simd-intrinsic-generic-select.rs b/src/test/ui/simd/simd-intrinsic-generic-select.rs
index dc9ec5d2760..b850cf9750a 100644
--- a/src/test/ui/simd/simd-intrinsic-generic-select.rs
+++ b/src/test/ui/simd/simd-intrinsic-generic-select.rs
@@ -167,4 +167,29 @@ fn main() {
         let e = u32x8(8, 9, 10, 11, 4, 5, 6, 7);
         assert_eq!(r, e);
     }
+
+    unsafe {
+        let a = u32x4(0, 1, 2, 3);
+        let b = u32x4(4, 5, 6, 7);
+
+        let r: u32x4 = simd_select_bitmask(0u8, a, b);
+        let e = b;
+        assert_eq!(r, e);
+
+        let r: u32x4 = simd_select_bitmask(0xfu8, a, b);
+        let e = a;
+        assert_eq!(r, e);
+
+        let r: u32x4 = simd_select_bitmask(0b0101u8, a, b);
+        let e = u32x4(0, 5, 2, 7);
+        assert_eq!(r, e);
+
+        let r: u32x4 = simd_select_bitmask(0b1010u8, a, b);
+        let e = u32x4(4, 1, 6, 3);
+        assert_eq!(r, e);
+
+        let r: u32x4 = simd_select_bitmask(0b1100u8, a, b);
+        let e = u32x4(4, 5, 2, 3);
+        assert_eq!(r, e);
+    }
 }