sglang_v0.5.2/pytorch_2.8.0/third_party/XNNPACK/scripts/generate-xN-transpose.sh

175 lines
24 KiB
Bash
Executable File

#!/bin/sh
# Copyright 2021 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 ###################################
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=8 TYPE=int8_t TILE_HEIGHT=1 TILE_WIDTH=2 -o src/x8-transposec/gen/x8-transposec-1x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=8 TYPE=int8_t TILE_HEIGHT=1 TILE_WIDTH=4 -o src/x8-transposec/gen/x8-transposec-1x4-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=8 TYPE=int8_t TILE_HEIGHT=2 TILE_WIDTH=1 -o src/x8-transposec/gen/x8-transposec-2x1-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=8 TYPE=int8_t TILE_HEIGHT=2 TILE_WIDTH=2 -o src/x8-transposec/gen/x8-transposec-2x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=8 TYPE=int8_t TILE_HEIGHT=2 TILE_WIDTH=4 -o src/x8-transposec/gen/x8-transposec-2x4-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=8 TYPE=int8_t TILE_HEIGHT=4 TILE_WIDTH=1 -o src/x8-transposec/gen/x8-transposec-4x1-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=8 TYPE=int8_t TILE_HEIGHT=4 TILE_WIDTH=2 -o src/x8-transposec/gen/x8-transposec-4x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=8 TYPE=int8_t TILE_HEIGHT=4 TILE_WIDTH=4 -o src/x8-transposec/gen/x8-transposec-4x4-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=16 TYPE=int16_t TILE_HEIGHT=1 TILE_WIDTH=2 -o src/x16-transposec/gen/x16-transposec-1x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=16 TYPE=int16_t TILE_HEIGHT=1 TILE_WIDTH=4 -o src/x16-transposec/gen/x16-transposec-1x4-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=16 TYPE=int16_t TILE_HEIGHT=2 TILE_WIDTH=1 -o src/x16-transposec/gen/x16-transposec-2x1-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=16 TYPE=int16_t TILE_HEIGHT=2 TILE_WIDTH=2 -o src/x16-transposec/gen/x16-transposec-2x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=16 TYPE=int16_t TILE_HEIGHT=2 TILE_WIDTH=4 -o src/x16-transposec/gen/x16-transposec-2x4-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=16 TYPE=int16_t TILE_HEIGHT=4 TILE_WIDTH=1 -o src/x16-transposec/gen/x16-transposec-4x1-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=16 TYPE=int16_t TILE_HEIGHT=4 TILE_WIDTH=2 -o src/x16-transposec/gen/x16-transposec-4x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=16 TYPE=int16_t TILE_HEIGHT=4 TILE_WIDTH=4 -o src/x16-transposec/gen/x16-transposec-4x4-scalar-int.c &
tools/xngen src/x24-transposec/scalar.c.in -D TILE_HEIGHT=1 TILE_WIDTH=2 -o src/x24-transposec/gen/x24-transposec-1x2-scalar.c &
tools/xngen src/x24-transposec/scalar.c.in -D TILE_HEIGHT=1 TILE_WIDTH=4 -o src/x24-transposec/gen/x24-transposec-1x4-scalar.c &
tools/xngen src/x24-transposec/scalar.c.in -D TILE_HEIGHT=2 TILE_WIDTH=1 -o src/x24-transposec/gen/x24-transposec-2x1-scalar.c &
tools/xngen src/x24-transposec/scalar.c.in -D TILE_HEIGHT=2 TILE_WIDTH=2 -o src/x24-transposec/gen/x24-transposec-2x2-scalar.c &
tools/xngen src/x24-transposec/scalar.c.in -D TILE_HEIGHT=2 TILE_WIDTH=4 -o src/x24-transposec/gen/x24-transposec-2x4-scalar.c &
tools/xngen src/x24-transposec/scalar.c.in -D TILE_HEIGHT=4 TILE_WIDTH=1 -o src/x24-transposec/gen/x24-transposec-4x1-scalar.c &
tools/xngen src/x24-transposec/scalar.c.in -D TILE_HEIGHT=4 TILE_WIDTH=2 -o src/x24-transposec/gen/x24-transposec-4x2-scalar.c &
tools/xngen src/x24-transposec/scalar.c.in -D TILE_HEIGHT=4 TILE_WIDTH=4 -o src/x24-transposec/gen/x24-transposec-4x4-scalar.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=1 TILE_WIDTH=2 TYPE=int -o src/x32-transposec/gen/x32-transposec-1x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=1 TILE_WIDTH=4 TYPE=int -o src/x32-transposec/gen/x32-transposec-1x4-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=2 TILE_WIDTH=1 TYPE=int -o src/x32-transposec/gen/x32-transposec-2x1-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=2 TILE_WIDTH=2 TYPE=int -o src/x32-transposec/gen/x32-transposec-2x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=2 TILE_WIDTH=4 TYPE=int -o src/x32-transposec/gen/x32-transposec-2x4-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=4 TILE_WIDTH=1 TYPE=int -o src/x32-transposec/gen/x32-transposec-4x1-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=4 TILE_WIDTH=2 TYPE=int -o src/x32-transposec/gen/x32-transposec-4x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=4 TILE_WIDTH=4 TYPE=int -o src/x32-transposec/gen/x32-transposec-4x4-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=1 TILE_WIDTH=2 TYPE=float -o src/x32-transposec/gen/x32-transposec-1x2-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=1 TILE_WIDTH=4 TYPE=float -o src/x32-transposec/gen/x32-transposec-1x4-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=2 TILE_WIDTH=1 TYPE=float -o src/x32-transposec/gen/x32-transposec-2x1-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=2 TILE_WIDTH=2 TYPE=float -o src/x32-transposec/gen/x32-transposec-2x2-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=2 TILE_WIDTH=4 TYPE=float -o src/x32-transposec/gen/x32-transposec-2x4-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=4 TILE_WIDTH=1 TYPE=float -o src/x32-transposec/gen/x32-transposec-4x1-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=4 TILE_WIDTH=2 TYPE=float -o src/x32-transposec/gen/x32-transposec-4x2-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=32 TILE_HEIGHT=4 TILE_WIDTH=4 TYPE=float -o src/x32-transposec/gen/x32-transposec-4x4-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=64 TILE_HEIGHT=1 TILE_WIDTH=2 TYPE=int64_t -o src/x64-transposec/gen/x64-transposec-1x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=64 TILE_HEIGHT=2 TILE_WIDTH=1 TYPE=int64_t -o src/x64-transposec/gen/x64-transposec-2x1-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=64 TILE_HEIGHT=2 TILE_WIDTH=2 TYPE=int64_t -o src/x64-transposec/gen/x64-transposec-2x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=64 TILE_HEIGHT=4 TILE_WIDTH=1 TYPE=int64_t -o src/x64-transposec/gen/x64-transposec-4x1-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=64 TILE_HEIGHT=4 TILE_WIDTH=2 TYPE=int64_t -o src/x64-transposec/gen/x64-transposec-4x2-scalar-int.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=64 TILE_HEIGHT=1 TILE_WIDTH=2 TYPE=double -o src/x64-transposec/gen/x64-transposec-1x2-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=64 TILE_HEIGHT=2 TILE_WIDTH=1 TYPE=double -o src/x64-transposec/gen/x64-transposec-2x1-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=64 TILE_HEIGHT=2 TILE_WIDTH=2 TYPE=double -o src/x64-transposec/gen/x64-transposec-2x2-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=64 TILE_HEIGHT=4 TILE_WIDTH=1 TYPE=double -o src/x64-transposec/gen/x64-transposec-4x1-scalar-float.c &
tools/xngen src/x32-transposec/scalar.c.in -D SIZE=64 TILE_HEIGHT=4 TILE_WIDTH=2 TYPE=double -o src/x64-transposec/gen/x64-transposec-4x2-scalar-float.c &
#################################### SSE2 ###################################
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=8 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x8-transposec/gen/x8-transposec-16x16-reuse-mov-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=8 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x8-transposec/gen/x8-transposec-16x16-reuse-switch-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=16 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x16-transposec/gen/x16-transposec-8x8-reuse-mov-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=16 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x16-transposec/gen/x16-transposec-8x8-reuse-switch-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=16 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x16-transposec/gen/x16-transposec-8x8-reuse-multi-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=16 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x16-transposec/gen/x16-transposec-8x8-multi-switch-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=16 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x16-transposec/gen/x16-transposec-8x8-multi-mov-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=32 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x32-transposec/gen/x32-transposec-4x4-reuse-mov-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=32 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x32-transposec/gen/x32-transposec-4x4-reuse-switch-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=32 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x32-transposec/gen/x32-transposec-4x4-reuse-multi-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=32 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x32-transposec/gen/x32-transposec-4x4-multi-switch-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=32 IN_PTRS=MULTI OUT_PTRS=MULTI -o src/x32-transposec/gen/x32-transposec-4x4-multi-multi-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=32 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x32-transposec/gen/x32-transposec-4x4-multi-mov-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=64 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x64-transposec/gen/x64-transposec-2x2-reuse-mov-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=64 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x64-transposec/gen/x64-transposec-2x2-reuse-switch-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=64 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x64-transposec/gen/x64-transposec-2x2-reuse-multi-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=64 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x64-transposec/gen/x64-transposec-2x2-multi-switch-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=64 IN_PTRS=MULTI OUT_PTRS=MULTI -o src/x64-transposec/gen/x64-transposec-2x2-multi-multi-sse2.c &
tools/xngen src/x32-transposec/sse2.c.in -D SIZE=64 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x64-transposec/gen/x64-transposec-2x2-multi-mov-sse2.c &
#################################### AVX ###################################
tools/xngen src/x32-transposec/avx.c.in -D SIZE=32 ARCH=AVX IN_PTRS=REUSE OUT_PTRS=MOV -o src/x32-transposec/gen/x32-transposec-8x8-reuse-mov-avx.c &
tools/xngen src/x32-transposec/avx.c.in -D SIZE=32 ARCH=AVX IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x32-transposec/gen/x32-transposec-8x8-reuse-switch-avx.c &
tools/xngen src/x32-transposec/avx.c.in -D SIZE=32 ARCH=AVX IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x32-transposec/gen/x32-transposec-8x8-reuse-multi-avx.c &
tools/xngen src/x32-transposec/avx.c.in -D SIZE=32 ARCH=AVX IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x32-transposec/gen/x32-transposec-8x8-multi-switch-avx.c &
tools/xngen src/x32-transposec/avx.c.in -D SIZE=32 ARCH=AVX IN_PTRS=MULTI OUT_PTRS=MOV -o src/x32-transposec/gen/x32-transposec-8x8-multi-mov-avx.c &
tools/xngen src/x32-transposec/avx.c.in -D SIZE=64 ARCH=AVX IN_PTRS=REUSE OUT_PTRS=MOV -o src/x64-transposec/gen/x64-transposec-4x4-reuse-mov-avx.c &
tools/xngen src/x32-transposec/avx.c.in -D SIZE=64 ARCH=AVX IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x64-transposec/gen/x64-transposec-4x4-reuse-switch-avx.c &
tools/xngen src/x32-transposec/avx.c.in -D SIZE=64 ARCH=AVX IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x64-transposec/gen/x64-transposec-4x4-reuse-multi-avx.c &
tools/xngen src/x32-transposec/avx.c.in -D SIZE=64 ARCH=AVX IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x64-transposec/gen/x64-transposec-4x4-multi-switch-avx.c &
tools/xngen src/x32-transposec/avx.c.in -D SIZE=64 ARCH=AVX IN_PTRS=MULTI OUT_PTRS=MULTI -o src/x64-transposec/gen/x64-transposec-4x4-multi-multi-avx.c &
tools/xngen src/x32-transposec/avx.c.in -D SIZE=64 ARCH=AVX IN_PTRS=MULTI OUT_PTRS=MOV -o src/x64-transposec/gen/x64-transposec-4x4-multi-mov-avx.c &
#################################### AVX2 ###################################
tools/xngen src/x32-transposec/avx2.c.in -D SIZE=8 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x8-transposec/gen/x8-transposec-32x32-reuse-mov-avx2.c &
tools/xngen src/x32-transposec/avx2.c.in -D SIZE=8 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x8-transposec/gen/x8-transposec-32x32-reuse-switch-avx2.c &
tools/xngen src/x32-transposec/avx2.c.in -D SIZE=16 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x16-transposec/gen/x16-transposec-16x16-reuse-mov-avx2.c &
tools/xngen src/x32-transposec/avx2.c.in -D SIZE=16 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x16-transposec/gen/x16-transposec-16x16-reuse-switch-avx2.c &
#################################### RISCV VECTOR ###############################
tools/xngen src/x32-transposec/rvv.c.in -D SIZE=32 VLEN=1024 -o src/x32-transposec/gen/x32-transposec-32x8-rvv.c &
tools/xngen src/x32-transposec/rvv.c.in -D SIZE=32 VLEN=512 -o src/x32-transposec/gen/x32-transposec-16x8-rvv.c &
tools/xngen src/x32-transposec/rvv.c.in -D SIZE=32 VLEN=256 -o src/x32-transposec/gen/x32-transposec-8x8-rvv.c &
tools/xngen src/x32-transposec/rvv.c.in -D SIZE=32 VLEN=128 -o src/x32-transposec/gen/x32-transposec-4x4-rvv.c &
#################################### ARM NEON ###############################
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=8 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=DEC -o src/x8-transposec/gen/x8-transposec-8x8-multi-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=8 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x8-transposec/gen/x8-transposec-8x8-multi-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=8 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x8-transposec/gen/x8-transposec-8x8-multi-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=8 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=DEC -o src/x8-transposec/gen/x8-transposec-8x8-reuse-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=8 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x8-transposec/gen/x8-transposec-8x8-reuse-multi-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=8 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x8-transposec/gen/x8-transposec-8x8-reuse-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=8 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x8-transposec/gen/x8-transposec-8x8-reuse-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=8 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=DEC -o src/x8-transposec/gen/x8-transposec-16x16-reuse-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=8 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x8-transposec/gen/x8-transposec-16x16-reuse-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=8 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x8-transposec/gen/x8-transposec-16x16-reuse-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=DEC -o src/x16-transposec/gen/x16-transposec-4x4-multi-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x16-transposec/gen/x16-transposec-4x4-multi-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=MULTI -o src/x16-transposec/gen/x16-transposec-4x4-multi-multi-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x16-transposec/gen/x16-transposec-4x4-multi-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=DEC -o src/x16-transposec/gen/x16-transposec-4x4-reuse-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x16-transposec/gen/x16-transposec-4x4-reuse-multi-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x16-transposec/gen/x16-transposec-4x4-reuse-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x16-transposec/gen/x16-transposec-4x4-reuse-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=DEC -o src/x16-transposec/gen/x16-transposec-8x8-reuse-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x16-transposec/gen/x16-transposec-8x8-reuse-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x16-transposec/gen/x16-transposec-8x8-reuse-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x16-transposec/gen/x16-transposec-8x8-reuse-multi-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x16-transposec/gen/x16-transposec-8x8-multi-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=DEC -o src/x16-transposec/gen/x16-transposec-8x8-multi-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=16 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x16-transposec/gen/x16-transposec-8x8-multi-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=DEC -o src/x32-transposec/gen/x32-transposec-2x2-reuse-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x32-transposec/gen/x32-transposec-2x2-reuse-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x32-transposec/gen/x32-transposec-2x2-reuse-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=64 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x32-transposec/gen/x32-transposec-2x2-reuse-multi-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x32-transposec/gen/x32-transposec-2x2-multi-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=MULTI -o src/x32-transposec/gen/x32-transposec-2x2-multi-multi-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=DEC -o src/x32-transposec/gen/x32-transposec-2x2-multi-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=64 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x32-transposec/gen/x32-transposec-2x2-multi-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=DEC -o src/x32-transposec/gen/x32-transposec-4x4-reuse-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x32-transposec/gen/x32-transposec-4x4-reuse-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x32-transposec/gen/x32-transposec-4x4-reuse-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x32-transposec/gen/x32-transposec-4x4-reuse-multi-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x32-transposec/gen/x32-transposec-4x4-multi-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=MULTI -o src/x32-transposec/gen/x32-transposec-4x4-multi-multi-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=DEC -o src/x32-transposec/gen/x32-transposec-4x4-multi-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=32 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x32-transposec/gen/x32-transposec-4x4-multi-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=64 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=DEC -o src/x64-transposec/gen/x64-transposec-2x2-reuse-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=64 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x64-transposec/gen/x64-transposec-2x2-reuse-mov-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=64 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x64-transposec/gen/x64-transposec-2x2-reuse-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=64 VECTOR_SIZE=128 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x64-transposec/gen/x64-transposec-2x2-reuse-multi-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=64 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x64-transposec/gen/x64-transposec-2x2-multi-switch-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=64 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=MULTI -o src/x64-transposec/gen/x64-transposec-2x2-multi-multi-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=64 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=DEC -o src/x64-transposec/gen/x64-transposec-2x2-multi-dec-zip-neon.c &
tools/xngen src/x32-transposec/neon-zip.c.in -D SIZE=64 VECTOR_SIZE=128 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x64-transposec/gen/x64-transposec-2x2-multi-mov-zip-neon.c &
#################################### WAsm SIMD ###############################
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=8 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x8-transposec/gen/x8-transposec-16x16-reuse-mov-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=8 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x8-transposec/gen/x8-transposec-16x16-reuse-switch-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=16 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x16-transposec/gen/x16-transposec-8x8-reuse-mov-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=16 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x16-transposec/gen/x16-transposec-8x8-reuse-switch-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=16 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x16-transposec/gen/x16-transposec-8x8-reuse-multi-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=16 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x16-transposec/gen/x16-transposec-8x8-multi-switch-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=16 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x16-transposec/gen/x16-transposec-8x8-multi-mov-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=32 IN_PTRS=REUSE OUT_PTRS=MOV -o src/x32-transposec/gen/x32-transposec-4x4-reuse-mov-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=32 IN_PTRS=REUSE OUT_PTRS=SWITCH -o src/x32-transposec/gen/x32-transposec-4x4-reuse-switch-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=32 IN_PTRS=REUSE OUT_PTRS=MULTI -o src/x32-transposec/gen/x32-transposec-4x4-reuse-multi-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=32 IN_PTRS=MULTI OUT_PTRS=SWITCH -o src/x32-transposec/gen/x32-transposec-4x4-multi-switch-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=32 IN_PTRS=MULTI OUT_PTRS=MULTI -o src/x32-transposec/gen/x32-transposec-4x4-multi-multi-wasmsimd.c &
tools/xngen src/x32-transposec/wasmsimd.c.in -D SIZE=32 IN_PTRS=MULTI OUT_PTRS=MOV -o src/x32-transposec/gen/x32-transposec-4x4-multi-mov-wasmsimd.c &
wait