@@ -19,9 +19,14 @@ struct i32x8([i32; 8]);
19
19
#[ rustc_intrinsic]
20
20
unsafe fn simd_insert < T , E > ( x : T , idx : u32 , y : E ) -> T ;
21
21
22
+ #[ rustc_intrinsic]
23
+ unsafe fn simd_insert_dyn < T , E > ( x : T , idx : u32 , y : E ) -> T ;
24
+
22
25
#[ rustc_intrinsic]
23
26
unsafe fn simd_extract < T , E > ( x : T , idx : u32 ) -> E ;
24
27
28
+ #[ rustc_intrinsic]
29
+ unsafe fn simd_extract_dyn < T , E > ( x : T , idx : u32 ) -> E ;
25
30
26
31
#[ rustc_intrinsic]
27
32
unsafe fn simd_shuffle < T , I , U > ( x : T , y : T , idx : I ) -> U ;
@@ -79,6 +84,41 @@ fn main() {
79
84
all_eq ! ( simd_extract( x8, 6 ) , 86 ) ;
80
85
all_eq ! ( simd_extract( x8, 7 ) , 87 ) ;
81
86
}
87
+ unsafe {
88
+ all_eq ! ( simd_insert_dyn( x2, 0 , 100 ) , i32x2( [ 100 , 21 ] ) ) ;
89
+ all_eq ! ( simd_insert_dyn( x2, 1 , 100 ) , i32x2( [ 20 , 100 ] ) ) ;
90
+
91
+ all_eq ! ( simd_insert_dyn( x4, 0 , 100 ) , i32x4( [ 100 , 41 , 42 , 43 ] ) ) ;
92
+ all_eq ! ( simd_insert_dyn( x4, 1 , 100 ) , i32x4( [ 40 , 100 , 42 , 43 ] ) ) ;
93
+ all_eq ! ( simd_insert_dyn( x4, 2 , 100 ) , i32x4( [ 40 , 41 , 100 , 43 ] ) ) ;
94
+ all_eq ! ( simd_insert_dyn( x4, 3 , 100 ) , i32x4( [ 40 , 41 , 42 , 100 ] ) ) ;
95
+
96
+ all_eq ! ( simd_insert_dyn( x8, 0 , 100 ) , i32x8( [ 100 , 81 , 82 , 83 , 84 , 85 , 86 , 87 ] ) ) ;
97
+ all_eq ! ( simd_insert_dyn( x8, 1 , 100 ) , i32x8( [ 80 , 100 , 82 , 83 , 84 , 85 , 86 , 87 ] ) ) ;
98
+ all_eq ! ( simd_insert_dyn( x8, 2 , 100 ) , i32x8( [ 80 , 81 , 100 , 83 , 84 , 85 , 86 , 87 ] ) ) ;
99
+ all_eq ! ( simd_insert_dyn( x8, 3 , 100 ) , i32x8( [ 80 , 81 , 82 , 100 , 84 , 85 , 86 , 87 ] ) ) ;
100
+ all_eq ! ( simd_insert_dyn( x8, 4 , 100 ) , i32x8( [ 80 , 81 , 82 , 83 , 100 , 85 , 86 , 87 ] ) ) ;
101
+ all_eq ! ( simd_insert_dyn( x8, 5 , 100 ) , i32x8( [ 80 , 81 , 82 , 83 , 84 , 100 , 86 , 87 ] ) ) ;
102
+ all_eq ! ( simd_insert_dyn( x8, 6 , 100 ) , i32x8( [ 80 , 81 , 82 , 83 , 84 , 85 , 100 , 87 ] ) ) ;
103
+ all_eq ! ( simd_insert_dyn( x8, 7 , 100 ) , i32x8( [ 80 , 81 , 82 , 83 , 84 , 85 , 86 , 100 ] ) ) ;
104
+
105
+ all_eq ! ( simd_extract_dyn( x2, 0 ) , 20 ) ;
106
+ all_eq ! ( simd_extract_dyn( x2, 1 ) , 21 ) ;
107
+
108
+ all_eq ! ( simd_extract_dyn( x4, 0 ) , 40 ) ;
109
+ all_eq ! ( simd_extract_dyn( x4, 1 ) , 41 ) ;
110
+ all_eq ! ( simd_extract_dyn( x4, 2 ) , 42 ) ;
111
+ all_eq ! ( simd_extract_dyn( x4, 3 ) , 43 ) ;
112
+
113
+ all_eq ! ( simd_extract_dyn( x8, 0 ) , 80 ) ;
114
+ all_eq ! ( simd_extract_dyn( x8, 1 ) , 81 ) ;
115
+ all_eq ! ( simd_extract_dyn( x8, 2 ) , 82 ) ;
116
+ all_eq ! ( simd_extract_dyn( x8, 3 ) , 83 ) ;
117
+ all_eq ! ( simd_extract_dyn( x8, 4 ) , 84 ) ;
118
+ all_eq ! ( simd_extract_dyn( x8, 5 ) , 85 ) ;
119
+ all_eq ! ( simd_extract_dyn( x8, 6 ) , 86 ) ;
120
+ all_eq ! ( simd_extract_dyn( x8, 7 ) , 87 ) ;
121
+ }
82
122
83
123
let y2 = i32x2 ( [ 120 , 121 ] ) ;
84
124
let y4 = i32x4 ( [ 140 , 141 , 142 , 143 ] ) ;
0 commit comments