1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC 2*4bdc9457SAndroid Build Coastguard Worker // 3*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the 4*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree. 5*4bdc9457SAndroid Build Coastguard Worker 6*4bdc9457SAndroid Build Coastguard Worker #include <assert.h> 7*4bdc9457SAndroid Build Coastguard Worker 8*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/rmax.h> 9*4bdc9457SAndroid Build Coastguard Worker 10*4bdc9457SAndroid Build Coastguard Worker xnn_u8_rmax_ukernel__scalar(size_t n,const uint8_t * x,uint8_t * y)11*4bdc9457SAndroid Build Coastguard Workervoid xnn_u8_rmax_ukernel__scalar( 12*4bdc9457SAndroid Build Coastguard Worker size_t n, 13*4bdc9457SAndroid Build Coastguard Worker const uint8_t* x, 14*4bdc9457SAndroid Build Coastguard Worker uint8_t* y) 15*4bdc9457SAndroid Build Coastguard Worker { 16*4bdc9457SAndroid Build Coastguard Worker assert(n != 0); 17*4bdc9457SAndroid Build Coastguard Worker 18*4bdc9457SAndroid Build Coastguard Worker uint8_t vmax0 = 0; 19*4bdc9457SAndroid Build Coastguard Worker uint8_t vmax1 = 0; 20*4bdc9457SAndroid Build Coastguard Worker for (; n >= 2 * sizeof(uint8_t); n -= 2 * sizeof(uint8_t)) { 21*4bdc9457SAndroid Build Coastguard Worker const uint8_t vt0 = x[0]; 22*4bdc9457SAndroid Build Coastguard Worker const uint8_t vt1 = x[1]; 23*4bdc9457SAndroid Build Coastguard Worker x += 2; 24*4bdc9457SAndroid Build Coastguard Worker 25*4bdc9457SAndroid Build Coastguard Worker vmax0 = vt0 > vmax0 ? vt0 : vmax0; 26*4bdc9457SAndroid Build Coastguard Worker vmax1 = vt1 > vmax1 ? vt1 : vmax1; 27*4bdc9457SAndroid Build Coastguard Worker } 28*4bdc9457SAndroid Build Coastguard Worker uint8_t vmax = vmax0 > vmax1 ? vmax0 : vmax1; 29*4bdc9457SAndroid Build Coastguard Worker if (n != 0) { 30*4bdc9457SAndroid Build Coastguard Worker const uint8_t vt = *x++; 31*4bdc9457SAndroid Build Coastguard Worker vmax = vt > vmax ? vt : vmax; 32*4bdc9457SAndroid Build Coastguard Worker } 33*4bdc9457SAndroid Build Coastguard Worker *y = vmax; 34*4bdc9457SAndroid Build Coastguard Worker } 35