blob: 08ac06844c58a49ec862b1f876df26e7a5546e02 [file] [edit]
#!/bin/sh
# Copyright 2023 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.
#################################### Scalar ###################################
### Generic C micro-kernels
tools/xngen src/x32-packw/scalar.c.in -D NR=8 -D KBLOCK=4 -D TYPE=uint16_t -o src/x16-packw/gen/x16-packw-x8-gemm-goi-scalar-int-u4.c &
tools/xngen src/x32-packw/scalar.c.in -D NR=16 -D KBLOCK=4 -D TYPE=uint16_t -o src/x16-packw/gen/x16-packw-x16-gemm-goi-scalar-int-u4.c &
# AVX needs NR 32 and NR 64 packw microkernels
tools/xngen src/x32-packw/scalar.c.in -D NR=32 -D KBLOCK=4 -D TYPE=uint16_t -o src/x16-packw/gen/x16-packw-x32-gemm-goi-scalar-int-u4.c &
tools/xngen src/x32-packw/scalar.c.in -D NR=64 -D KBLOCK=4 -D TYPE=uint16_t -o src/x16-packw/gen/x16-packw-x64-gemm-goi-scalar-int-u4.c &
tools/xngen src/x16-packw/gio-scalar.c.in -D NR=2 -o src/x16-packw/gen/x16-packw-x2-gemm-gio-scalar.c &
tools/xngen src/x16-packw/gio-scalar.c.in -D NR=4 -o src/x16-packw/gen/x16-packw-x4-gemm-gio-scalar.c &
tools/xngen src/x16-packw/gio-scalar.c.in -D NR=8 -o src/x16-packw/gen/x16-packw-x8-gemm-gio-scalar.c &
tools/xngen src/x16-packw/gio-scalar.c.in -D NR=16 -o src/x16-packw/gen/x16-packw-x16-gemm-gio-scalar.c &
tools/xngen src/x16-packw/gio-scalar.c.in -D NR=32 -o src/x16-packw/gen/x16-packw-x32-gemm-gio-scalar.c &
tools/xngen src/x16-packw/gio-scalar.c.in -D NR=64 -o src/x16-packw/gen/x16-packw-x64-gemm-gio-scalar.c &
################################### ARM NEON ##################################
### NR multiple of 4
tools/xngen src/x16-packw/neon.c.in -D NR=8 -D PREFETCH=0 -D KBLOCK=4 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-neon-ld4lane-u4.c &
tools/xngen src/x16-packw/neon.c.in -D NR=8 -D PREFETCH=1 -D KBLOCK=4 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-neon-ld4lane-u4-prfm.c &
tools/xngen src/x16-packw/neon.c.in -D NR=16 -D PREFETCH=0 -D KBLOCK=4 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-neon-ld4lane-u4.c &
tools/xngen src/x16-packw/neon.c.in -D NR=16 -D PREFETCH=1 -D KBLOCK=4 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-neon-ld4lane-u4-prfm.c &
tools/xngen src/x16-packw/neon.c.in -D NR=8 -D PREFETCH=0 -D KBLOCK=8 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-neon-ld4lane-u8.c &
tools/xngen src/x16-packw/neon.c.in -D NR=8 -D PREFETCH=1 -D KBLOCK=8 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-neon-ld4lane-u8-prfm.c &
tools/xngen src/x16-packw/neon.c.in -D NR=16 -D PREFETCH=0 -D KBLOCK=8 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-neon-ld4lane-u8.c &
tools/xngen src/x16-packw/neon.c.in -D NR=16 -D PREFETCH=1 -D KBLOCK=8 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-neon-ld4lane-u8-prfm.c &
tools/xngen src/x16-packw/neon.c.in -D NR=8 -D PREFETCH=0 -D KBLOCK=12 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-neon-ld4lane-u12.c &
tools/xngen src/x16-packw/neon.c.in -D NR=8 -D PREFETCH=1 -D KBLOCK=12 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-neon-ld4lane-u12-prfm.c &
tools/xngen src/x16-packw/neon.c.in -D NR=16 -D PREFETCH=0 -D KBLOCK=12 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-neon-ld4lane-u12.c &
tools/xngen src/x16-packw/neon.c.in -D NR=16 -D PREFETCH=1 -D KBLOCK=12 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-neon-ld4lane-u12-prfm.c &
tools/xngen src/x16-packw/neon.c.in -D NR=8 -D PREFETCH=0 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-neon-ld4lane-u16.c &
tools/xngen src/x16-packw/neon.c.in -D NR=8 -D PREFETCH=1 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-neon-ld4lane-u16-prfm.c &
tools/xngen src/x16-packw/neon.c.in -D NR=16 -D PREFETCH=0 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-neon-ld4lane-u16.c &
tools/xngen src/x16-packw/neon.c.in -D NR=16 -D PREFETCH=1 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-neon-ld4lane-u16-prfm.c &
################################### X86 AVX2 ##################################
tools/xngen src/x16-packw/avx.c.in -D NR=8 -D AVX=2 -D PREFETCH=0 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-avx2-u16.c &
tools/xngen src/x16-packw/avx.c.in -D NR=8 -D AVX=2 -D PREFETCH=1 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-avx2-u16-prfm.c &
tools/xngen src/x16-packw/avx.c.in -D NR=16 -D AVX=2 -D PREFETCH=0 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-avx2-u16.c &
tools/xngen src/x16-packw/avx.c.in -D NR=16 -D AVX=2 -D PREFETCH=1 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-avx2-u16-prfm.c &
tools/xngen src/x16-packw/avx.c.in -D NR=8 -D AVX=10 -D PREFETCH=0 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-avx256skx-u16.c &
tools/xngen src/x16-packw/avx.c.in -D NR=8 -D AVX=10 -D PREFETCH=1 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x8-gemm-goi-avx256skx-u16-prfm.c &
tools/xngen src/x16-packw/avx.c.in -D NR=16 -D AVX=10 -D PREFETCH=0 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-avx256skx-u16.c &
tools/xngen src/x16-packw/avx.c.in -D NR=16 -D AVX=10 -D PREFETCH=1 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x16-gemm-goi-avx256skx-u16-prfm.c &
################################# X86 AVX512SKX ################################
tools/xngen src/x16-packw/avx512skx.c.in -D NR=32 -D PREFETCH=0 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x32-gemm-goi-avx512skx-u16.c &
tools/xngen src/x16-packw/avx512skx.c.in -D NR=32 -D PREFETCH=1 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x32-gemm-goi-avx512skx-u16-prfm.c &
tools/xngen src/x16-packw/avx512skx.c.in -D NR=64 -D PREFETCH=0 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x64-gemm-goi-avx512skx-u16.c &
tools/xngen src/x16-packw/avx512skx.c.in -D NR=64 -D PREFETCH=1 -D KBLOCK=16 -o src/x16-packw/gen/x16-packw-x64-gemm-goi-avx512skx-u16-prfm.c &
wait