@@ -58,56 +58,56 @@ internal static unsafe void Memmove(ref byte dest, ref byte src, nuint len)
5858 // Copy bytes which are multiples of 16 and leave the remainder for MCPY01 to handle.
5959 Debug . Assert ( len > 16 && len <= 64 ) ;
6060#if HAS_CUSTOM_BLOCKS
61- Unsafe . As < byte , Block16 > ( ref dest ) = Unsafe. As < byte , Block16 > ( ref src ) ; // [0,16]
61+ Unsafe . WriteUnaligned ( ref dest , Unsafe . ReadUnaligned < Block16 > ( ref src ) ) ;
6262#elif TARGET_64BIT
63- Unsafe . As < byte , long > ( ref dest ) = Unsafe. As < byte , long > ( ref src ) ;
64- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 8 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 8 ) ) ; // [0,16]
63+ Unsafe . WriteUnaligned ( ref dest , Unsafe . ReadUnaligned < long > ( ref src ) ) ;
64+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 8 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 8 ) ) ) ;
6565#else
66- Unsafe . As < byte , int > ( ref dest ) = Unsafe. As < byte , int > ( ref src ) ;
67- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 4 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 4 ) ) ;
68- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 8 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 8 ) ) ;
69- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 12 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 12 ) ) ; // [0,16]
66+ Unsafe . WriteUnaligned ( ref dest , Unsafe . ReadUnaligned < int > ( ref src ) ) ;
67+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 4 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 4 ) ) ) ;
68+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 8 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 8 ) ) ) ;
69+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 12 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 12 ) ) ) ;
7070#endif
7171 if ( len <= 32 )
7272 goto MCPY01 ;
7373#if HAS_CUSTOM_BLOCKS
74- Unsafe . As < byte , Block16 > ( ref Unsafe . Add ( ref dest , 16 ) ) = Unsafe. As < byte , Block16 > ( ref Unsafe . Add ( ref src , 16 ) ) ; // [0,32]
74+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 16 ) , Unsafe . ReadUnaligned < Block16 > ( ref Unsafe . Add ( ref src , 16 ) ) ) ;
7575#elif TARGET_64BIT
76- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 16 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 16 ) ) ;
77- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 24 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 24 ) ) ; // [0,32]
76+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 16 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 16 ) ) ) ;
77+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 24 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 24 ) ) ) ;
7878#else
79- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 16 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 16 ) ) ;
80- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 20 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 20 ) ) ;
81- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 24 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 24 ) ) ;
82- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 28 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 28 ) ) ; // [0,32]
79+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 16 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 16 ) ) ) ;
80+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 20 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 20 ) ) ) ;
81+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 24 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 24 ) ) ) ;
82+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 28 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 28 ) ) ) ;
8383#endif
8484 if ( len <= 48 )
8585 goto MCPY01 ;
8686#if HAS_CUSTOM_BLOCKS
87- Unsafe . As < byte , Block16 > ( ref Unsafe . Add ( ref dest , 32 ) ) = Unsafe. As < byte , Block16 > ( ref Unsafe . Add ( ref src , 32 ) ) ; // [0,48]
87+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 32 ) , Unsafe . ReadUnaligned < Block16 > ( ref Unsafe . Add ( ref src , 32 ) ) ) ;
8888#elif TARGET_64BIT
89- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 32 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 32 ) ) ;
90- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 40 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 40 ) ) ; // [0,48]
89+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 32 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 32 ) ) ) ;
90+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 40 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 40 ) ) ) ;
9191#else
92- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 32 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 32 ) ) ;
93- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 36 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 36 ) ) ;
94- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 40 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 40 ) ) ;
95- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 44 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 44 ) ) ; // [0,48]
92+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 32 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 32 ) ) ) ;
93+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 36 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 36 ) ) ) ;
94+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 40 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 40 ) ) ) ;
95+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 44 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 44 ) ) ) ;
9696#endif
9797
9898 MCPY01 :
9999 // Unconditionally copy the last 16 bytes using destEnd and srcEnd and return.
100100 Debug . Assert ( len > 16 && len <= 64 ) ;
101101#if HAS_CUSTOM_BLOCKS
102- Unsafe . As < byte , Block16 > ( ref Unsafe . Add ( ref destEnd , - 16 ) ) = Unsafe. As < byte , Block16 > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ;
102+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 16 ) , Unsafe . ReadUnaligned < Block16 > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ) ;
103103#elif TARGET_64BIT
104- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref destEnd , - 16 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ;
105- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref destEnd , - 8 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ;
104+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 16 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ) ;
105+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 8 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ) ;
106106#else
107- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 16 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ;
108- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 12 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 12 ) ) ;
109- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 8 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ;
110- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 4 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 4 ) ) ;
107+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 16 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ) ;
108+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 12 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 12 ) ) ) ;
109+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 8 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ) ;
110+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 4 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 4 ) ) ) ;
111111#endif
112112 return ;
113113
@@ -117,13 +117,13 @@ internal static unsafe void Memmove(ref byte dest, ref byte src, nuint len)
117117 goto MCPY03 ;
118118 Debug . Assert ( len >= 8 && len <= 16 ) ;
119119#if TARGET_64BIT
120- Unsafe . As < byte , long > ( ref dest ) = Unsafe. As < byte , long > ( ref src ) ;
121- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref destEnd , - 8 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ;
120+ Unsafe . WriteUnaligned ( ref dest , Unsafe . ReadUnaligned < long > ( ref src ) ) ;
121+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 8 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ) ;
122122#else
123- Unsafe . As < byte , int > ( ref dest ) = Unsafe. As < byte , int > ( ref src ) ;
124- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 4 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 4 ) ) ;
125- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 8 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ;
126- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 4 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 4 ) ) ;
123+ Unsafe . WriteUnaligned ( ref dest , Unsafe . ReadUnaligned < int > ( ref src ) ) ;
124+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 4 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 4 ) ) ) ;
125+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 8 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ) ;
126+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 4 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 4 ) ) ) ;
127127#endif
128128 return ;
129129
@@ -132,8 +132,8 @@ internal static unsafe void Memmove(ref byte dest, ref byte src, nuint len)
132132 if ( ( len & 4 ) == 0 )
133133 goto MCPY04 ;
134134 Debug . Assert ( len >= 4 && len < 8 ) ;
135- Unsafe . As < byte , int > ( ref dest ) = Unsafe. As < byte , int > ( ref src ) ;
136- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 4 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 4 ) ) ;
135+ Unsafe . WriteUnaligned ( ref dest , Unsafe . ReadUnaligned < int > ( ref src ) ) ;
136+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 4 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 4 ) ) ) ;
137137 return ;
138138
139139 MCPY04 :
@@ -144,7 +144,7 @@ internal static unsafe void Memmove(ref byte dest, ref byte src, nuint len)
144144 dest = src ;
145145 if ( ( len & 2 ) == 0 )
146146 return ;
147- Unsafe . As < byte , short > ( ref Unsafe . Add ( ref destEnd , - 2 ) ) = Unsafe. As < byte , short > ( ref Unsafe . Add ( ref srcEnd , - 2 ) ) ;
147+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 2 ) , Unsafe . ReadUnaligned < short > ( ref Unsafe . Add ( ref srcEnd , - 2 ) ) ) ;
148148 return ;
149149
150150 MCPY05 :
@@ -163,7 +163,7 @@ internal static unsafe void Memmove(ref byte dest, ref byte src, nuint len)
163163 // dest is more important to align than src because an unaligned store is more expensive
164164 // than an unaligned load.
165165 nuint misalignedElements = 64 - ( nuint ) Unsafe . AsPointer ( ref dest ) & 63 ;
166- Unsafe . As < byte , Block64 > ( ref dest ) = Unsafe. As < byte , Block64 > ( ref src ) ;
166+ Unsafe . WriteUnaligned ( ref dest , Unsafe . ReadUnaligned < Block64 > ( ref src ) ) ;
167167 src = ref Unsafe . Add ( ref src , misalignedElements ) ;
168168 dest = ref Unsafe . Add ( ref dest , misalignedElements ) ;
169169 len -= misalignedElements ;
@@ -177,33 +177,33 @@ internal static unsafe void Memmove(ref byte dest, ref byte src, nuint len)
177177
178178 MCPY06 :
179179#if HAS_CUSTOM_BLOCKS
180- Unsafe . As < byte , Block64 > ( ref dest ) = Unsafe. As < byte , Block64 > ( ref src ) ;
180+ Unsafe . WriteUnaligned ( ref dest , Unsafe . ReadUnaligned < Block64 > ( ref src ) ) ;
181181#elif TARGET_64BIT
182- Unsafe . As < byte , long > ( ref dest ) = Unsafe. As < byte , long > ( ref src ) ;
183- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 8 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 8 ) ) ;
184- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 16 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 16 ) ) ;
185- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 24 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 24 ) ) ;
186- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 32 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 32 ) ) ;
187- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 40 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 40 ) ) ;
188- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 48 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 48 ) ) ;
189- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref dest , 56 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref src , 56 ) ) ;
182+ Unsafe . WriteUnaligned ( ref dest , Unsafe . ReadUnaligned < long > ( ref src ) ) ;
183+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 8 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 8 ) ) ) ;
184+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 16 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 16 ) ) ) ;
185+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 24 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 24 ) ) ) ;
186+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 32 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 32 ) ) ) ;
187+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 40 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 40 ) ) ) ;
188+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 48 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 48 ) ) ) ;
189+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 56 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref src , 56 ) ) ) ;
190190#else
191- Unsafe . As < byte , int > ( ref dest ) = Unsafe. As < byte , int > ( ref src ) ;
192- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 4 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 4 ) ) ;
193- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 8 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 8 ) ) ;
194- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 12 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 12 ) ) ;
195- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 16 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 16 ) ) ;
196- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 20 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 20 ) ) ;
197- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 24 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 24 ) ) ;
198- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 28 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 28 ) ) ;
199- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 32 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 32 ) ) ;
200- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 36 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 36 ) ) ;
201- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 40 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 40 ) ) ;
202- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 44 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 44 ) ) ;
203- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 48 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 48 ) ) ;
204- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 52 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 52 ) ) ;
205- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 56 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 56 ) ) ;
206- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref dest , 60 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref src , 60 ) ) ;
191+ Unsafe . WriteUnaligned ( ref dest , Unsafe . ReadUnaligned < int > ( ref src ) ) ;
192+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 4 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 4 ) ) ) ;
193+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 8 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 8 ) ) ) ;
194+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 12 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 12 ) ) ) ;
195+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 16 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 16 ) ) ) ;
196+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 20 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 20 ) ) ) ;
197+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 24 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 24 ) ) ) ;
198+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 28 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 28 ) ) ) ;
199+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 32 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 32 ) ) ) ;
200+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 36 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 36 ) ) ) ;
201+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 40 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 40 ) ) ) ;
202+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 44 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 44 ) ) ) ;
203+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 48 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 48 ) ) ) ;
204+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 52 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 52 ) ) ) ;
205+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 56 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 56 ) ) ) ;
206+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref dest , 60 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref src , 60 ) ) ) ;
207207#endif
208208 dest = ref Unsafe . Add ( ref dest , 64 ) ;
209209 src = ref Unsafe . Add ( ref src , 64 ) ;
@@ -215,15 +215,15 @@ internal static unsafe void Memmove(ref byte dest, ref byte src, nuint len)
215215 if ( len > 16 )
216216 goto MCPY00 ;
217217#if HAS_CUSTOM_BLOCKS
218- Unsafe . As < byte , Block16 > ( ref Unsafe . Add ( ref destEnd , - 16 ) ) = Unsafe. As < byte , Block16 > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ;
218+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 16 ) , Unsafe . ReadUnaligned < Block16 > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ) ;
219219#elif TARGET_64BIT
220- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref destEnd , - 16 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ;
221- Unsafe . As < byte , long > ( ref Unsafe . Add ( ref destEnd , - 8 ) ) = Unsafe. As < byte , long > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ;
220+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 16 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ) ;
221+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 8 ) , Unsafe . ReadUnaligned < long > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ) ;
222222#else
223- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 16 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ;
224- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 12 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 12 ) ) ;
225- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 8 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ;
226- Unsafe . As < byte , int > ( ref Unsafe . Add ( ref destEnd , - 4 ) ) = Unsafe. As < byte , int > ( ref Unsafe . Add ( ref srcEnd , - 4 ) ) ;
223+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 16 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 16 ) ) ) ;
224+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 12 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 12 ) ) ) ;
225+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 8 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 8 ) ) ) ;
226+ Unsafe . WriteUnaligned ( ref Unsafe . Add ( ref destEnd , - 4 ) , Unsafe . ReadUnaligned < int > ( ref Unsafe . Add ( ref srcEnd , - 4 ) ) ) ;
227227#endif
228228 return ;
229229
0 commit comments