|
1 | 1 | //@ run-pass
|
2 | 2 |
|
3 |
| -#![feature(repr_simd, core_intrinsics)] |
| 3 | +#![feature(repr_simd, intrinsics, core_intrinsics)] |
4 | 4 |
|
5 |
| -use std::intrinsics::simd::{simd_extract, simd_insert, simd_shuffle}; |
| 5 | +use std::intrinsics::simd::{ |
| 6 | + simd_extract, simd_extract_dyn, simd_insert, simd_insert_dyn, simd_shuffle, |
| 7 | +}; |
6 | 8 |
|
7 | 9 | #[repr(simd)]
|
8 | 10 | #[derive(Copy, Clone, Debug, PartialEq)]
|
@@ -70,6 +72,41 @@ fn main() {
|
70 | 72 | all_eq!(simd_extract(x8, 6), 86);
|
71 | 73 | all_eq!(simd_extract(x8, 7), 87);
|
72 | 74 | }
|
| 75 | + unsafe { |
| 76 | + all_eq!(simd_insert_dyn(x2, 0, 100), i32x2([100, 21])); |
| 77 | + all_eq!(simd_insert_dyn(x2, 1, 100), i32x2([20, 100])); |
| 78 | + |
| 79 | + all_eq!(simd_insert_dyn(x4, 0, 100), i32x4([100, 41, 42, 43])); |
| 80 | + all_eq!(simd_insert_dyn(x4, 1, 100), i32x4([40, 100, 42, 43])); |
| 81 | + all_eq!(simd_insert_dyn(x4, 2, 100), i32x4([40, 41, 100, 43])); |
| 82 | + all_eq!(simd_insert_dyn(x4, 3, 100), i32x4([40, 41, 42, 100])); |
| 83 | + |
| 84 | + all_eq!(simd_insert_dyn(x8, 0, 100), i32x8([100, 81, 82, 83, 84, 85, 86, 87])); |
| 85 | + all_eq!(simd_insert_dyn(x8, 1, 100), i32x8([80, 100, 82, 83, 84, 85, 86, 87])); |
| 86 | + all_eq!(simd_insert_dyn(x8, 2, 100), i32x8([80, 81, 100, 83, 84, 85, 86, 87])); |
| 87 | + all_eq!(simd_insert_dyn(x8, 3, 100), i32x8([80, 81, 82, 100, 84, 85, 86, 87])); |
| 88 | + all_eq!(simd_insert_dyn(x8, 4, 100), i32x8([80, 81, 82, 83, 100, 85, 86, 87])); |
| 89 | + all_eq!(simd_insert_dyn(x8, 5, 100), i32x8([80, 81, 82, 83, 84, 100, 86, 87])); |
| 90 | + all_eq!(simd_insert_dyn(x8, 6, 100), i32x8([80, 81, 82, 83, 84, 85, 100, 87])); |
| 91 | + all_eq!(simd_insert_dyn(x8, 7, 100), i32x8([80, 81, 82, 83, 84, 85, 86, 100])); |
| 92 | + |
| 93 | + all_eq!(simd_extract_dyn(x2, 0), 20); |
| 94 | + all_eq!(simd_extract_dyn(x2, 1), 21); |
| 95 | + |
| 96 | + all_eq!(simd_extract_dyn(x4, 0), 40); |
| 97 | + all_eq!(simd_extract_dyn(x4, 1), 41); |
| 98 | + all_eq!(simd_extract_dyn(x4, 2), 42); |
| 99 | + all_eq!(simd_extract_dyn(x4, 3), 43); |
| 100 | + |
| 101 | + all_eq!(simd_extract_dyn(x8, 0), 80); |
| 102 | + all_eq!(simd_extract_dyn(x8, 1), 81); |
| 103 | + all_eq!(simd_extract_dyn(x8, 2), 82); |
| 104 | + all_eq!(simd_extract_dyn(x8, 3), 83); |
| 105 | + all_eq!(simd_extract_dyn(x8, 4), 84); |
| 106 | + all_eq!(simd_extract_dyn(x8, 5), 85); |
| 107 | + all_eq!(simd_extract_dyn(x8, 6), 86); |
| 108 | + all_eq!(simd_extract_dyn(x8, 7), 87); |
| 109 | + } |
73 | 110 |
|
74 | 111 | let y2 = i32x2([120, 121]);
|
75 | 112 | let y4 = i32x4([140, 141, 142, 143]);
|
|
0 commit comments