@@ -19,9 +19,14 @@ struct i32x8([i32; 8]);
1919#[ rustc_intrinsic]
2020unsafe fn simd_insert < T , E > ( x : T , idx : u32 , y : E ) -> T ;
2121
22+ #[ rustc_intrinsic]
23+ unsafe fn simd_insert_dyn < T , E > ( x : T , idx : u32 , y : E ) -> T ;
24+
2225#[ rustc_intrinsic]
2326unsafe fn simd_extract < T , E > ( x : T , idx : u32 ) -> E ;
2427
28+ #[ rustc_intrinsic]
29+ unsafe fn simd_extract_dyn < T , E > ( x : T , idx : u32 ) -> E ;
2530
2631#[ rustc_intrinsic]
2732unsafe fn simd_shuffle < T , I , U > ( x : T , y : T , idx : I ) -> U ;
@@ -79,6 +84,41 @@ fn main() {
7984 all_eq ! ( simd_extract( x8, 6 ) , 86 ) ;
8085 all_eq ! ( simd_extract( x8, 7 ) , 87 ) ;
8186 }
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+ }
82122
83123 let y2 = i32x2 ( [ 120 , 121 ] ) ;
84124 let y4 = i32x4 ( [ 140 , 141 , 142 , 143 ] ) ;
0 commit comments