@@ -1177,7 +1177,7 @@ namespace xt
11771177
11781178 for (std::size_t i = 0 ; i < simd_size; ++i)
11791179 {
1180- res_stepper.template store_simd <simd_type> (fct_stepper.template step_simd <value_type>());
1180+ res_stepper.template store_simd (fct_stepper.template step_simd <value_type>());
11811181 }
11821182 for (std::size_t i = 0 ; i < simd_rest; ++i)
11831183 {
@@ -1191,13 +1191,24 @@ namespace xt
11911191 ? strided_assign_detail::idx_tools<layout_type::row_major>::next_idx (idx, max_shape)
11921192 : strided_assign_detail::idx_tools<layout_type::column_major>::next_idx (idx, max_shape);
11931193
1194- // need to step E1 as well if not contigous assign (e.g. view)
11951194 fct_stepper.to_begin ();
1196- res_stepper.to_begin ();
1197- for (std::size_t i = 0 ; i < idx.size (); ++i)
1195+
1196+ // need to step E1 as well if not contigous assign (e.g. view)
1197+ if (!E1 ::contiguous_layout)
11981198 {
1199- fct_stepper.step (i + step_dim, idx[i]);
1200- res_stepper.step (i + step_dim, idx[i]);
1199+ res_stepper.to_begin ();
1200+ for (std::size_t i = 0 ; i < idx.size (); ++i)
1201+ {
1202+ fct_stepper.step (i + step_dim, idx[i]);
1203+ res_stepper.step (i + step_dim, idx[i]);
1204+ }
1205+ }
1206+ else
1207+ {
1208+ for (std::size_t i = 0 ; i < idx.size (); ++i)
1209+ {
1210+ fct_stepper.step (i + step_dim, idx[i]);
1211+ }
12011212 }
12021213 }
12031214 }
0 commit comments