// Copyright 2020 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.

$assert ROW_TILE >= 1
$assert ACCUMULATORS >= 1
#include <assert.h>

#include <xmmintrin.h>

#include <xnnpack/dwconv.h>
#include <xnnpack/math.h>


void xnn_f32_dwconv2d_chw_ukernel_3x3p1__sse_${ROW_TILE}x4${"_acc%d" % ACCUMULATORS if ACCUMULATORS > 1 else ""}(
    size_t input_height,
    size_t input_width,
    const float* input,
    const float* weights,
    const float* zero,
    float* output,
    uint32_t padding_top,
    const union xnn_f32_chw_params params[restrict XNN_MIN_ELEMENTS(1)]) XNN_OOB_READS
{
  assert(input_height != 0);
  assert(input_width != 0);
  assert(input_width % sizeof(float) == 0);
  assert(padding_top == 1);

  const __m128 vmask = _mm_load_ps((const float*) params->sse.mask);
  const __m128 vmax = _mm_load_ps(params->sse.max);
  const __m128 vmin = _mm_load_ps(params->sse.min);

  const __m128 vbias = _mm_load1_ps(weights);
  const __m128 vk00 = _mm_load1_ps(weights + 1);
  const __m128 vk01 = _mm_load1_ps(weights + 2);
  const __m128 vk02 = _mm_load1_ps(weights + 3);
  const __m128 vk10 = _mm_load1_ps(weights + 4);
  const __m128 vk11 = _mm_load1_ps(weights + 5);
  const __m128 vk12 = _mm_load1_ps(weights + 6);
  const __m128 vk20 = _mm_load1_ps(weights + 7);
  const __m128 vk21 = _mm_load1_ps(weights + 8);
  const __m128 vk22 = _mm_load1_ps(weights + 9);

  const size_t input_decrement = round_up_po2(input_width, 4 * sizeof(float));

  const float* i0 = zero;
  const float* i1 = input;
  $for M in range(2, 2 + ROW_TILE):
    const float* i${M} = (const float*) ((uintptr_t) i${M-1} + input_width);

  float* o0 = output;
  $for M in range(1, ROW_TILE):
    float* o${M} = (float*) ((uintptr_t) o${M-1} + input_width);

  size_t output_height = input_height;
  do {
    $for M in range(2, 2 + ROW_TILE):
      if XNN_UNPREDICTABLE(output_height < ${M}) {
        i${M} = zero;
        $if M <= ROW_TILE:
          o${M-1} = o${M-2};
      }

    $for M in range(2 + ROW_TILE):
      // vi${M}x3012 = ( vi${M}2, vi${M}1, vi{M}0, vi{M}3 )
      __m128 vi${M}x3012 = _mm_setzero_ps();

    $for M in range(2 + ROW_TILE):
      __m128 vi${M}x4567 = _mm_loadu_ps(i${M});
      i${M} += 4;

    size_t w = input_width;
    for (; w > 4 * sizeof(float); w -= 4 * sizeof(float)) {
      $for M in range(2 + ROW_TILE):
        // vi${M}x89AB = ( vi${M}B, vi${M}A, vi${M}9, vi${M}8 )
        const __m128 vi${M}x89AB = _mm_loadu_ps(i${M});
        i${M} += 4;

      $for M in range(2 + ROW_TILE):
        // vi${M}x7456 = ( vi${M}6, vi${M}5, vi${M}4, vi${M}7 )
        const __m128 vi${M}x7456 = _mm_shuffle_ps(vi${M}x4567, vi${M}x4567, _MM_SHUFFLE(2, 1, 0, 3));

      $for K in range(3):
        $for M in range(ROW_TILE):
          $if K == 0:
            __m128 vo${M}p0 = _mm_add_ps(vbias, _mm_mul_ps(vi${M+K}x4567, vk${K}1));
          $elif K < ACCUMULATORS:
            __m128 vo${M}p${K} = _mm_mul_ps(vi${M+K}x4567, vk${K}1);
          $else:
            vo${M}p${K % ACCUMULATORS} = _mm_add_ps(vo${M}p${K % ACCUMULATORS}, _mm_mul_ps(vi${M+K}x4567, vk${K}1));

      $for M in range(2 + ROW_TILE):
        // vi${M}x3456 = ( vi${M}6, vi${M}5, vi${M}4, vi${M}3 )
        const __m128 vi${M}x3456 = _mm_move_ss(vi${M}x7456, vi${M}x3012);

      $for K in range(3):
        $for M in range(ROW_TILE):
          $if K+3 < ACCUMULATORS:
            __m128 vo${M}p${K+3} = _mm_mul_ps(vi${M+K}x3456, vk${K}0);
          $else:
            vo${M}p${(K+3) % ACCUMULATORS} = _mm_add_ps(vo${M}p${(K+3) % ACCUMULATORS}, _mm_mul_ps(vi${M+K}x3456, vk${K}0));

      $for M in range(2 + ROW_TILE):
        vi${M}x3012 = vi${M}x7456;

      $for M in range(2 + ROW_TILE):
        // vi${M}x8567 = ( vi${M}7, vi${M}6, vi${M}5, vi${M}8 )
        const __m128 vi${M}x8567 = _mm_move_ss(vi${M}x4567, vi${M}x89AB);

      $for M in range(2 + ROW_TILE):
        // vi${M}x5678 = ( vi${M}8, vi${M}7, vi${M}6, vi${M}5 )
        const __m128 vi${M}x5678 = _mm_shuffle_ps(vi${M}x8567, vi${M}x8567, _MM_SHUFFLE(0, 3, 2, 1));

      $for K in range(3):
        $for M in range(ROW_TILE):
          vo${M}p${(K+6) % ACCUMULATORS} = _mm_add_ps(vo${M}p${(K+6) % ACCUMULATORS}, _mm_mul_ps(vi${M+K}x5678, vk${K}2));

      $for M in range(2 + ROW_TILE):
        vi${M}x4567 = vi${M}x89AB;

      $if ACCUMULATORS > 1:
        $ACC_SLICE = 1
        $while ACC_SLICE < ACCUMULATORS:
          $for A in range(0, ACCUMULATORS, ACC_SLICE * 2):
            $if A + ACC_SLICE < ACCUMULATORS:
              $for M in range(ROW_TILE):
                vo${M}p${A} = _mm_add_ps(vo${M}p${A}, vo${M}p${A + ACC_SLICE});
          $ACC_SLICE *= 2

      $for M in range(ROW_TILE):
        __m128 vo${M} = _mm_max_ps(vo${M}p0, vmin);

      $for M in range(ROW_TILE):
        vo${M} = _mm_min_ps(vo${M}, vmax);

      $for M in reversed(range(ROW_TILE)):
        _mm_storeu_ps(o${M}, vo${M});
        o${M} += 4;
    }
    // Always process the last block of 1..4 pixels.
    assert(w >= 1 * sizeof(float));
    assert(w <= 4 * sizeof(float));
    {
      $for M in range(2 + ROW_TILE):
        vi${M}x4567 = _mm_and_ps(vmask, vi${M}x4567);

      $for M in range(2 + ROW_TILE):
        // vi${M}x7456 = ( vi${M}6, vi${M}5, vi${M}4, vi${M}7 )
        const __m128 vi${M}x7456 = _mm_shuffle_ps(vi${M}x4567, vi${M}x4567, _MM_SHUFFLE(2, 1, 0, 3));

      $for K in range(3):
        $for M in range(ROW_TILE):
          $if K == 0:
            __m128 vo${M}p0 = _mm_add_ps(vbias, _mm_mul_ps(vi${M+K}x4567, vk${K}1));
          $elif K < ACCUMULATORS:
            __m128 vo${M}p${K} = _mm_mul_ps(vi${M+K}x4567, vk${K}1);
          $else:
            vo${M}p${K % ACCUMULATORS} = _mm_add_ps(vo${M}p${K % ACCUMULATORS}, _mm_mul_ps(vi${M+K}x4567, vk${K}1));

      $for M in range(2 + ROW_TILE):
        // vi${M}x3456 = ( vi${M}6, vi${M}5, vi${M}4, vi${M}3 )
        const __m128 vi${M}x3456 = _mm_move_ss(vi${M}x7456, vi${M}x3012);

      $for K in range(3):
        $for M in range(ROW_TILE):
          $if K+3 < ACCUMULATORS:
            __m128 vo${M}p${K+3} = _mm_mul_ps(vi${M+K}x3456, vk${K}0);
          $else:
            vo${M}p${(K+3) % ACCUMULATORS} = _mm_add_ps(vo${M}p${(K+3) % ACCUMULATORS}, _mm_mul_ps(vi${M+K}x3456, vk${K}0));

      const __m128 vzero = _mm_setzero_ps();
      $for M in range(2 + ROW_TILE):
        // vi${M}x8567 = ( vi${M}7, vi${M}6, vi${M}5, 0.0 )
        const __m128 vi${M}x8567 = _mm_move_ss(vi${M}x4567, vzero);

      $for M in range(2 + ROW_TILE):
        // vi${M}x5678 = ( vi${M}8, vi${M}7, vi${M}6, vi${M}5 )
        const __m128 vi${M}x5678 = _mm_shuffle_ps(vi${M}x8567, vi${M}x8567, _MM_SHUFFLE(0, 3, 2, 1));

      $for K in range(3):
        $for M in range(ROW_TILE):
          vo${M}p${(K+6) % ACCUMULATORS} = _mm_add_ps(vo${M}p${(K+6) % ACCUMULATORS}, _mm_mul_ps(vi${M+K}x5678, vk${K}2));

      $if ACCUMULATORS > 1:
        $ACC_SLICE = 1
        $while ACC_SLICE < ACCUMULATORS:
          $for A in range(0, ACCUMULATORS, ACC_SLICE * 2):
            $if A + ACC_SLICE < ACCUMULATORS:
              $for M in range(ROW_TILE):
                vo${M}p${A} = _mm_add_ps(vo${M}p${A}, vo${M}p${A + ACC_SLICE});
          $ACC_SLICE *= 2

      $for M in range(ROW_TILE):
        __m128 vo${M} = _mm_max_ps(vo${M}p0, vmin);

      $for M in range(ROW_TILE):
        vo${M} = _mm_min_ps(vo${M}, vmax);

      if XNN_LIKELY(w == 4 * sizeof(float)) {
        $for M in reversed(range(ROW_TILE)):
          _mm_storeu_ps(o${M}, vo${M});
          o${M} += 4;
      } else {
        if (w & (2 * sizeof(float))) {
          $for M in reversed(range(ROW_TILE)):
            _mm_storel_pi((__m64*) o${M}, vo${M});
            o${M} += 2;

          $for M in range(ROW_TILE):
            vo${M} = _mm_movehl_ps(vo${M}, vo${M});
        }
        if (w & (1 * sizeof(float))) {
          $for M in reversed(range(ROW_TILE)):
            _mm_store_ss(o${M}, vo${M});
            o${M} += 1;
        }
      }
    }

    i0 = (const float*) ((uintptr_t) i${ROW_TILE} - input_decrement);
    i1 = (const float*) ((uintptr_t) i${ROW_TILE+1} - input_decrement);
    $for M in range(2, 2 + ROW_TILE):
      i${M} = (const float*) ((uintptr_t) i${M-1} + input_width);

    $if ROW_TILE > 1:
      o0 = o${ROW_TILE - 1};
      $for M in range(1, ROW_TILE):
        o${M} = (float*) ((uintptr_t) o${M-1} + input_width);

    $if ROW_TILE > 1:
      output_height = doz(output_height, ${ROW_TILE});
  } while (${"--" if ROW_TILE == 1 else ""}output_height != 0);
}
