// Copyright 2019 Google LLC // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. #include #include void xnn_u8_rmax_ukernel__scalar( size_t n, const uint8_t* x, uint8_t* y) { assert(n != 0); uint8_t vmax0 = 0; uint8_t vmax1 = 0; for (; n >= 2 * sizeof(uint8_t); n -= 2 * sizeof(uint8_t)) { const uint8_t vt0 = x[0]; const uint8_t vt1 = x[1]; x += 2; vmax0 = vt0 > vmax0 ? vt0 : vmax0; vmax1 = vt1 > vmax1 ? vt1 : vmax1; } uint8_t vmax = vmax0 > vmax1 ? vmax0 : vmax1; if (n != 0) { const uint8_t vt = *x++; vmax = vt > vmax ? vt : vmax; } *y = vmax; }