@@ -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