@@ -170,44 +170,23 @@ WORD32 xa_nn_transpose_32_32(WORD32 * __restrict__ p_out
170170 for (itr3 = 0 ; itr3 < out_dim3 ; itr3 ++ , p_out += out_dim4 )
171171 {
172172 WORD32 * p_inp4 = p_inp3 + (itr3 * inp_stride [p_5D_permute_vec [3 ]]);
173- if ((((unsigned )p_inp4 & 1 ) == 0 ) && (((unsigned )p_out & 1 ) == 0 ))
173+ ae_int32x2 * __restrict__ pae_i = (ae_int32x2 * )(p_inp4 );
174+ ae_int32x2 * __restrict__ pae_o = (ae_int32x2 * )(p_out );
175+ ae_valign a_inp = AE_LA64_PP (pae_i );
176+ ae_valign a_out = AE_ZALIGN64 ();
177+ ae_int32x2 d0 ;
178+ for (itr4 = 0 ; itr4 < (out_dim4 >> 1 ); itr4 ++ )
174179 {
175- ae_int32x2 * __restrict__ pae_i = (ae_int32x2 * )(p_inp4 );
176- ae_int32x2 * __restrict__ pae_o = (ae_int32x2 * )(p_out );
177- ae_int32x2 d0 ;
178- for (itr4 = 0 ; itr4 < (out_dim4 >> 1 ); itr4 ++ )
179- {
180- AE_L32X2_IP (d0 , pae_i , 2 * sizeof (WORD32 ));
181- AE_S32X2_IP (d0 , pae_o , 2 * sizeof (WORD32 ));
182- }
183- ae_int32 * __restrict__ puae_i = (ae_int32 * )(pae_i );
184- ae_int32 * __restrict__ puae_o = (ae_int32 * )(pae_o );
185- #pragma loop_count max=3
186- for (itr4 = 0 ; itr4 < (out_dim4 & 1 ); itr4 ++ )
187- {
188- puae_o [itr4 ] = puae_i [itr4 ];
189- }
180+ AE_LA32X2_IP (d0 , a_inp , pae_i );
181+ AE_SA32X2_IP (d0 , a_out , pae_o );
190182 }
191- else
192- {
193- ae_int32x2 * __restrict__ pae_i = (ae_int32x2 * )(p_inp4 );
194- ae_int32x2 * __restrict__ pae_o = (ae_int32x2 * )(p_out );
195- ae_valign a_inp = AE_LA64_PP (pae_i );
196- ae_valign a_out = AE_ZALIGN64 ();
197- ae_int32x2 d0 ;
198- for (itr4 = 0 ; itr4 < (out_dim4 >> 1 ); itr4 ++ )
199- {
200- AE_LA32X2_IP (d0 , a_inp , pae_i );
201- AE_SA32X2_IP (d0 , a_out , pae_o );
202- }
203- AE_SA64POS_FP (a_out , pae_o );
204- ae_int32 * __restrict__ puae_i = (ae_int32 * )(pae_i );
205- ae_int32 * __restrict__ puae_o = (ae_int32 * )(pae_o );
183+ AE_SA64POS_FP (a_out , pae_o );
184+ ae_int32 * __restrict__ puae_i = (ae_int32 * )(pae_i );
185+ ae_int32 * __restrict__ puae_o = (ae_int32 * )(pae_o );
206186#pragma loop_count max=3
207- for (itr4 = 0 ; itr4 < (out_dim4 & 1 ); itr4 ++ )
208- {
209- puae_o [itr4 ] = puae_i [itr4 ];
210- }
187+ for (itr4 = 0 ; itr4 < (out_dim4 & 1 ); itr4 ++ )
188+ {
189+ puae_o [itr4 ] = puae_i [itr4 ];
211190 }
212191 }
213192 }
@@ -237,8 +216,10 @@ WORD32 xa_nn_transpose_32_32(WORD32 * __restrict__ p_out
237216 ae_int32x2 d0 , d1 ;
238217 ae_int32x2 tmp0 ;
239218
240- AE_L32_XP (d0 , (ae_int32 * )p_inp4 , inp_stride [p_5D_permute_vec [4 ]] << 2 );
241- AE_L32_XP (d1 , (ae_int32 * )p_inp4 , inp_stride [p_5D_permute_vec [4 ]] << 2 );
219+ d0 = AE_L32_X ((ae_int32 * )p_inp4 , 0 );
220+ p_inp4 += inp_stride [p_5D_permute_vec [4 ]];
221+ d1 = AE_L32_X ((ae_int32 * )p_inp4 , 0 );
222+ p_inp4 += inp_stride [p_5D_permute_vec [4 ]];
242223
243224 tmp0 = AE_SEL32_HH (d0 , d1 );
244225
0 commit comments