// Copyright 2022 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 NR % 4 == 0
$assert EXTOPT in ["SHLAND", "ZIP", "MOVL"]
$ABC = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

#include <assert.h>

#include <arm_neon.h>

#include <xnnpack/gemm.h>


void xnn_bf16_gemm_minmax_ukernel_${MR}x${NR}c8__neonfma_${EXTOPT.lower()}(
    size_t mr,
    size_t nc,
    size_t kc,
    const void* restrict a,
    size_t a_stride,
    const void* restrict w_ptr,
    void* restrict c,
    size_t cm_stride,
    size_t cn_stride,
    const union xnn_bf16_minmax_params params[restrict XNN_MIN_ELEMENTS(1)])
{
  assert(mr != 0);
  assert(mr <= ${MR});
  assert(nc != 0);
  assert(kc != 0);
  assert(kc % sizeof(uint16_t) == 0);
  assert(a != NULL);
  assert(w_ptr != NULL);
  assert(c != NULL);

  const uint16_t* a0 = (const uint16_t*) a;
  uint16_t* c0 = (uint16_t*) c;
  $for M in range(1, MR):
    const uint16_t* a${M} = (const uint16_t*) ((uintptr_t) a${M-1} + a_stride);
    uint16_t* c${M} = (uint16_t*) ((uintptr_t) c${M-1} + cm_stride);
    $if M % 2 == 0:
      if XNN_UNPREDICTABLE(mr <= ${M}) {
        a${M} = a${M-1};
        c${M} = c${M-1};
      }
    $elif M + 1 == MR:
      if XNN_UNPREDICTABLE(mr != ${M+1}) {
        a${M} = a${M-1};
        c${M} = c${M-1};
      }
    $else:
      if XNN_UNPREDICTABLE(mr < ${M+1}) {
        a${M} = a${M-1};
        c${M} = c${M-1};
      }

  const uint16_t* w = (const uint16_t*) w_ptr;
  $if EXTOPT == "SHLAND":
    const uint16x8_t vmask = vreinterpretq_u16_u32(vmovq_n_u32(UINT32_C(0xFFFF0000)));
  $elif EXTOPT == "ZIP":
    const uint16x8_t vzero = vmovq_n_u16(0);
  do {
    $for N in range(NR):
      float32x4_t vacc0x${ABC[N]} = vreinterpretq_f32_u32(vshll_n_u16(vld1_lane_u16(w, vdup_n_u16(0), 0), 16)); w += 1;
    $for M in range(1, MR):
      $for N in range(NR):
        float32x4_t vacc${M}x${ABC[N]} = vacc0x${ABC[N]};

    size_t k = kc;
    for (; k >= 8 * sizeof(uint16_t); k -= 8 * sizeof(uint16_t)) {
      $for M in range(MR):
        const uint16x8_t va${M} = vld1q_u16(a${M}); a${M} += 8;

      $for N in range(NR):
        const uint16x8_t vb${ABC[N]} = vld1q_u16(w); w += 8;

      $for M in range(MR):
        $if EXTOPT == "SHLAND":
          const float32x4_t va${M}e = vreinterpretq_f32_u32(vshlq_n_u32(vreinterpretq_u32_u16(va${M}), 16));
        $elif EXTOPT == "ZIP":
          const float32x4_t va${M}e = vreinterpretq_f32_u16(vzip1q_u16(vzero, va${M}));

      $for N in range(NR):
        $if EXTOPT == "SHLAND":
          const float32x4_t vb${ABC[N]}e = vreinterpretq_f32_u32(vshlq_n_u32(vreinterpretq_u32_u16(vb${ABC[N]}), 16));
        $elif EXTOPT == "ZIP":
          const float32x4_t vb${ABC[N]}e = vreinterpretq_f32_u16(vzip1q_u16(vzero, vb${ABC[N]}));

      $for N in range(NR):
        $for M in range(MR):
          vacc${M}x${ABC[N]} = vfmaq_f32(vacc${M}x${ABC[N]}, va${M}e, vb${ABC[N]}e);

      $for M in range(MR):
        $if EXTOPT == "SHLAND":
          const float32x4_t va${M}o = vreinterpretq_f32_u16(vandq_u16(va${M}, vmask));
        $elif EXTOPT == "ZIP":
          const float32x4_t va${M}o = vreinterpretq_f32_u16(vzip2q_u16(vzero, va${M}));

      $for N in range(NR):
        $if EXTOPT == "SHLAND":
          const float32x4_t vb${ABC[N]}o = vreinterpretq_f32_u16(vandq_u16(vb${ABC[N]}, vmask));
        $elif EXTOPT == "ZIP":
          const float32x4_t vb${ABC[N]}o = vreinterpretq_f32_u16(vzip2q_u16(vzero, vb${ABC[N]}));

      $for N in range(NR):
        $for M in range(MR):
          vacc${M}x${ABC[N]} = vfmaq_f32(vacc${M}x${ABC[N]}, va${M}o, vb${ABC[N]}o);
    }
    if XNN_UNLIKELY(k != 0) {
      $for M in range(MR):
        const uint16x8_t va${M} = vld1q_u16(a${M}); a${M} = (const uint16_t*) ((uintptr_t) a${M} + k);

      $for N in range(NR):
        const uint16x8_t vb${ABC[N]} = vld1q_u16(w); w += 8;

      $for N in range(NR):
        const uint16x8_t vm${ABC[N]} = vceqq_u16(vb${ABC[N]}, vmovq_n_u16(0));

      $for N in range(NR):
        $if EXTOPT == "SHLAND":
          const float32x4_t vb${ABC[N]}e = vreinterpretq_f32_u32(vshlq_n_u32(vreinterpretq_u32_u16(vb${ABC[N]}), 16));
        $elif EXTOPT == "ZIP":
          const float32x4_t vb${ABC[N]}e = vreinterpretq_f32_u16(vzip1q_u16(vzero, vb${ABC[N]}));

      $for N in range(NR):
        $for M in range(MR):
          const uint16x8_t va${M}x${ABC[N]} = vbicq_u16(va${M}, vm${ABC[N]});

      $for N in range(NR):
        $for M in range(MR):
          $if EXTOPT == "SHLAND":
            const float32x4_t va${M}x${ABC[N]}e = vreinterpretq_f32_u32(vshlq_n_u32(vreinterpretq_u32_u16(va${M}x${ABC[N]}), 16));
          $elif EXTOPT == "ZIP":
            const float32x4_t va${M}x${ABC[N]}e = vreinterpretq_f32_u16(vzip1q_u16(vzero, va${M}x${ABC[N]}));

      $for N in range(NR):
        $for M in range(MR):
          vacc${M}x${ABC[N]} = vfmaq_f32(vacc${M}x${ABC[N]}, va${M}x${ABC[N]}e, vb${ABC[N]}e);

      $for N in range(NR):
        $if EXTOPT == "SHLAND":
          const float32x4_t vb${ABC[N]}o = vreinterpretq_f32_u16(vandq_u16(vb${ABC[N]}, vmask));
        $elif EXTOPT == "ZIP":
          const float32x4_t vb${ABC[N]}o = vreinterpretq_f32_u16(vzip2q_u16(vzero, vb${ABC[N]}));

      $for N in range(NR):
        $for M in range(MR):
          $if EXTOPT == "SHLAND":
            const float32x4_t va${M}x${ABC[N]}o = vreinterpretq_f32_u16(vandq_u16(va${M}x${ABC[N]}, vmask));
          $elif EXTOPT == "ZIP":
            const float32x4_t va${M}x${ABC[N]}o = vreinterpretq_f32_u16(vzip2q_u16(vzero, va${M}x${ABC[N]}));

      $for N in range(NR):
        $for M in range(MR):
          vacc${M}x${ABC[N]} = vfmaq_f32(vacc${M}x${ABC[N]}, va${M}x${ABC[N]}o, vb${ABC[N]}o);
    }

#if XNN_ARCH_ARM64
    $for N in range(0, NR, 2):
      $for M in range(MR):
        const float32x4_t vacc${M}x${ABC[N:N+2]} = vpaddq_f32(vacc${M}x${ABC[N]}, vacc${M}x${ABC[N+1]});

    $for N in range(0, NR, 4):
      $for M in range(MR):
        float32x4_t vacc${M}x${ABC[N:N+4]} = vpaddq_f32(vacc${M}x${ABC[N:N+2]}, vacc${M}x${ABC[N+2:N+4]});
#else
    $for N in range(NR):
      $for M in range(MR):
        const float32x2_t vsum${M}x${ABC[N]} = vadd_f32(vget_low_f32(vacc${M}x${ABC[N]}), vget_high_f32(vacc${M}x${ABC[N]}));

    $for N in range(0, NR, 4):
      $for M in range(MR):
        float32x4_t vacc${M}x${ABC[N:N+4]} = vcombine_f32(vpadd_f32(vsum${M}x${ABC[N]}, vsum${M}x${ABC[N+1]}), vpadd_f32(vsum${M}x${ABC[N+2]}, vsum${M}x${ABC[N+3]}));
#endif

    const float32x4_t vmax = vld1q_dup_f32(&params->scalar.max);
    $for N in range(0, NR, 4):
      $for M in range(MR):
        vacc${M}x${ABC[N:N+4]} = vminq_f32(vacc${M}x${ABC[N:N+4]}, vmax);

    const float32x4_t vmin = vld1q_dup_f32(&params->scalar.min);
    $for N in range(0, NR, 4):
      $for M in range(MR):
        vacc${M}x${ABC[N:N+4]} = vmaxq_f32(vacc${M}x${ABC[N:N+4]}, vmin);

    $for N in range(0, NR, 4):
      $for M in range(MR):
        uint16x4_t vout${M}x${ABC[N:N+4]} = vshrn_n_u32(vreinterpretq_u32_f32(vacc${M}x${ABC[N:N+4]}), 16);

    if XNN_LIKELY(nc >= ${NR}) {
      $for M in range(MR):
        vst1_u16(c${M}, vout${M}x${ABC[0:4]});
        $for N in range(4, NR, 4):
          vst1_u16(c${M} + ${N}, vout${M}x${ABC[N:N+4]});
        c${M} = (uint16_t*) ((uintptr_t) c${M} + cn_stride);

      $for M in range(MR):
        a${M} = (const uint16_t*) ((uintptr_t) a${M} - kc);

      nc -= ${NR};
    } else {
      $for LOG2N in reversed(range(NR.bit_length())):
        $if NR != 1 << LOG2N:
          if (nc & ${1 << LOG2N}) {
            $if LOG2N >= 2:
              $for N in range(0, 1 << LOG2N, 4):
                $for M in range(MR):
                  vst1_u16(c${M}, vout${M}x${ABC[N:N+4]}); c${M} += 4;

              $for M in range(MR):
                $for N in range(0, 1 << (LOG2N - 1), 4):
                  vout${M}x${ABC[N:N+4]} = vout${M}x${ABC[N + (1 << LOG2N):N + (1 << LOG2N)+4]};
            $elif LOG2N == 1:
              $for M in range(MR):
                vst1_lane_u32((void*) c${M}, vreinterpret_u32_u16(vout${M}x${ABC[0:4]}), 0); c${M} += 2;

              $for M in range(MR):
                vout${M}x${ABC[0:4]} = vext_u16(vout${M}x${ABC[0:4]}, vout${M}x${ABC[0:4]}, 2);
            $elif LOG2N == 0:
              $for M in range(MR):
                vst1_lane_u16(c${M}, vout${M}x${ABC[0:4]}, 0);
          }

      nc = 0;
    }
  } while (nc != 0);
}
