about summary refs log tree commit diff
path: root/example
diff options
context:
space:
mode:
authorbjorn3 <bjorn3@users.noreply.github.com>2019-08-16 16:04:50 +0200
committerbjorn3 <bjorn3@users.noreply.github.com>2019-08-16 16:04:50 +0200
commit2558bf2f6bd5e74861d7db760f689b3b01bcc618 (patch)
treed9726d4a7f92a13246af0703269f74a3663c3032 /example
parent6bf47ad0d42ebf756518584fe45fd081f3eba7c3 (diff)
downloadrust-2558bf2f6bd5e74861d7db760f689b3b01bcc618.tar.gz
rust-2558bf2f6bd5e74861d7db760f689b3b01bcc618.zip
Workaround for missing `#[rustc_args_required_const(..)]` support
cc #666
Diffstat (limited to 'example')
-rw-r--r--example/std_example.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/example/std_example.rs b/example/std_example.rs
index 7819881b69b..61182a49b9c 100644
--- a/example/std_example.rs
+++ b/example/std_example.rs
@@ -75,6 +75,9 @@ unsafe fn test_simd() {
     test_mm_cvtepi8_epi16();
     test_mm_cvtsi128_si64();
 
+    // FIXME(#666) implement `#[rustc_arg_required_const(..)]` support
+    //test_mm_extract_epi8();
+
     let mask1 = _mm_movemask_epi8(dbg!(_mm_setr_epi8(255u8 as i8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)));
     assert_eq!(mask1, 1);
 }
@@ -194,6 +197,19 @@ unsafe fn test_mm_cvtepi8_epi16() {
     assert_eq_m128i(r, e);
 }
 
+#[target_feature(enable = "sse4.1")]
+unsafe fn test_mm_extract_epi8() {
+    #[rustfmt::skip]
+    let a = _mm_setr_epi8(
+        -1, 1, 2, 3, 4, 5, 6, 7,
+        8, 9, 10, 11, 12, 13, 14, 15
+    );
+    let r1 = _mm_extract_epi8(a, 0);
+    let r2 = _mm_extract_epi8(a, 19);
+    assert_eq!(r1, 0xFF);
+    assert_eq!(r2, 3);
+}
+
 #[derive(PartialEq)]
 enum LoopState {
     Continue(()),