1 // Auto-generated file. Do not edit! 2 // Template: src/f32-hswish/scalar.c.in 3 // Generator: tools/xngen 4 // 5 // Copyright 2019 Google LLC 6 // 7 // This source code is licensed under the BSD-style license found in the 8 // LICENSE file in the root directory of this source tree. 9 10 #include <assert.h> 11 12 #include <xnnpack/common.h> 13 #include <xnnpack/math.h> 14 #include <xnnpack/hswish.h> 15 16 xnn_f32_hswish_ukernel__scalar_x1(size_t n,const float * x,float * y,const union xnn_f32_hswish_params params[restrict XNN_MIN_ELEMENTS (1)])17void xnn_f32_hswish_ukernel__scalar_x1( 18 size_t n, 19 const float* x, 20 float* y, 21 const union xnn_f32_hswish_params params[restrict XNN_MIN_ELEMENTS(1)]) 22 { 23 assert(n != 0); 24 assert(n % sizeof(float) == 0); 25 26 const float vsixth = params->scalar.sixth; 27 const float vthree = params->scalar.three; 28 const float vsix = params->scalar.six; 29 const float vzero = 0.0f; 30 assert(vthree == 3.0f); 31 assert(vsix == 6.0f); 32 33 for (; n >= sizeof(float); n -= sizeof(float)) { 34 float vx = *x++; 35 float vacc = vx + vthree; 36 vx *= vsixth; 37 vacc = math_max_f32(vacc, vzero); 38 vacc = math_min_f32(vacc, vsix); 39 vacc *= vx; 40 *y++ = vacc; 41 } 42 } 43