1 // Copyright 2020 Google LLC 2 // 3 // This source code is licensed under the BSD-style license found in the 4 // LICENSE file in the root directory of this source tree. 5 6 #include <assert.h> 7 8 #include <xnnpack/fill.h> 9 10 xnn_x32_fill_ukernel__scalar_int(size_t rows,size_t channels,uint32_t * output,size_t output_stride,const uint32_t * fill_value)11void xnn_x32_fill_ukernel__scalar_int( 12 size_t rows, 13 size_t channels, 14 uint32_t* output, 15 size_t output_stride, 16 const uint32_t* fill_value) 17 { 18 assert(rows != 0); 19 assert(channels != 0); 20 assert(channels % sizeof(uint32_t) == 0); 21 assert(fill_value != NULL); 22 23 const size_t output_increment = output_stride - channels; 24 25 const uint32_t vfill = *fill_value; 26 do { 27 size_t c = channels; 28 for (; c >= 4 * sizeof(uint32_t); c -= 4 * sizeof(uint32_t)) { 29 output[0] = vfill; 30 output[1] = vfill; 31 output[2] = vfill; 32 output[3] = vfill; 33 output += 4; 34 } 35 if XNN_UNLIKELY(c != 0) { 36 do { 37 *output++ = vfill; 38 c -= sizeof(uint32_t); 39 } while (c != 0); 40 } 41 output = (void*) ((uintptr_t) output + output_increment); 42 } while (--rows != 0); 43 } 44