Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions tools/generate-vbinary-test.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@
import re
import sys
import yaml
try:
from immutabledict import immutabledict
except ImportError:
immutabledict = dict

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import xngen
Expand Down Expand Up @@ -44,7 +48,7 @@
)
parser.set_defaults(defines=list())

OP_TYPES = {
OP_TYPES = immutabledict({
"vadd": "Add",
"vaddc": "Add",
"vcopysign": "CopySign",
Expand All @@ -71,7 +75,7 @@
"vprelu": "Prelu",
"vpreluc": "Prelu",
"vrpreluc": "RPrelu",
}
})

BINOP_TEST_TEMPLATE = """
#define XNN_UKERNEL(arch_flags, ukernel, batch_tile, vector_tile, datatype, params_type, init_params)
Expand Down
14 changes: 9 additions & 5 deletions tools/generate-vunary-test.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,13 @@
import math
import os
import sys
import types
from typing import NamedTuple

try:
from immutabledict import immutabledict
except ImportError:
immutabledict = dict

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import xngen
import xnncommon
Expand Down Expand Up @@ -41,7 +45,7 @@ class SpecialValues(NamedTuple):
expected_outputs: str
tolerance_ulp: int

OP_TYPES = {
OP_TYPES = immutabledict({
"vabs": "Abs",
"vapproxgelu": "ApproxGELU",
"vclamp": "Clamp",
Expand All @@ -63,11 +67,11 @@ class SpecialValues(NamedTuple):
"vsqr": "Square",
"vsqrt": "SquareRoot",
"vtanh": "TanH",
}
})

PARAMS_TYPES = ["Clamp", "ELU", "LeakyReLU"]

SPECIAL_VALUES_BY_OP_TYPE_F32 = types.MappingProxyType({
SPECIAL_VALUES_BY_OP_TYPE_F32 = immutabledict({
"SquareRoot": SpecialValues(
num_elements=4,
inputs="{0.0f, -0.0f, 1.0f, -1.0f}",
Expand Down Expand Up @@ -127,7 +131,7 @@ class SpecialValues(NamedTuple):
})


SPECIAL_VALUES_BY_OP_TYPE_F16 = types.MappingProxyType({
SPECIAL_VALUES_BY_OP_TYPE_F16 = immutabledict({
"Log": SpecialValues(
num_elements=4,
inputs="{1.0f, -1.0f, 0.0f, -0.0f}",
Expand Down
13 changes: 9 additions & 4 deletions tools/update-microkernels.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
import os
import re
import sys
try:
from immutabledict import immutabledict
except ImportError:
immutabledict = dict


parser = argparse.ArgumentParser(
description='Utility for re-generating microkernel lists'
Expand Down Expand Up @@ -81,12 +86,12 @@
'wasmsimd',
})

_ISA_MAP = {
_ISA_MAP = immutabledict({
'wasmblendvps': 'wasmrelaxedsimd',
'wasmpshufb': 'wasmrelaxedsimd',
'wasmsdot': 'wasmrelaxedsimd',
'wasmusdot': 'wasmrelaxedsimd',
}
})

_ARCH_LIST = frozenset({
'aarch32',
Expand All @@ -101,12 +106,12 @@
r'\bxnn_(?:[a-z0-9]+(?:_[a-z0-9]+)*)_ukernel(?:_[a-z0-9]+)*__(?:[a-z0-9]+(?:_[a-z0-9]+)*)\b'
)

_VERIFICATION_IGNORE_SUBDIRS = {
_VERIFICATION_IGNORE_SUBDIRS = frozenset({
os.path.join('src', 'qs8-requantization'),
os.path.join('src', 'qu8-requantization'),
os.path.join('src', 'reference'),
os.path.join('src', 'xnnpack', 'simd'),
}
})


def overwrite_if_changed(filepath, content):
Expand Down
23 changes: 14 additions & 9 deletions tools/xnncommon.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@

import codecs
import os
try:
from immutabledict import immutabledict
except ImportError:
immutabledict = dict



def _indent(text):
Expand All @@ -23,7 +28,7 @@ def _remove_duplicate_newlines(text):
return "\n".join(filtered_lines)


_ARCH_TO_MACRO_MAP = {
_ARCH_TO_MACRO_MAP = immutabledict({
"aarch32": "XNN_ARCH_ARM",
"aarch64": "XNN_ARCH_ARM64",
"x86-32": "XNN_ARCH_X86",
Expand All @@ -38,11 +43,11 @@ def _remove_duplicate_newlines(text):
"wasmsimd32": "XNN_ARCH_WASMSIMD",
"wasmrelaxedsimd32": "XNN_ARCH_WASMRELAXEDSIMD",
"wasmrelaxedsimdfp16": "XNN_ARCH_WASMRELAXEDSIMDFP16",
}
})

# Mapping from ISA extension to macro guarding build-time enabled/disabled
# status for the ISA. Only ISAs that can be enabled/disabled have an entry.
_ISA_TO_MACRO_MAP = {
_ISA_TO_MACRO_MAP = immutabledict({
"fp16arith": "XNN_ENABLE_ARM_FP16_SCALAR",
"neonfp16arith": "XNN_ENABLE_ARM_FP16_VECTOR",
"neonbf16": "XNN_ENABLE_ARM_BF16",
Expand Down Expand Up @@ -75,9 +80,9 @@ def _remove_duplicate_newlines(text):
"avx512fp16": "XNN_ENABLE_AVX512FP16",
"avx512bf16": "XNN_ENABLE_AVX512BF16",
"hvx": "XNN_ENABLE_HVX",
}
})

_ISA_TO_ARCH_MAP = {
_ISA_TO_ARCH_MAP = immutabledict({
"armsimd32": ["aarch32"],
"fp16arith": ["aarch32", "aarch64"],
"neon": ["aarch32", "aarch64"],
Expand Down Expand Up @@ -124,9 +129,9 @@ def _remove_duplicate_newlines(text):
"wasmsdot": ["wasmrelaxedsimd"],
"wasmusdot": ["wasmrelaxedsimd"],
"wasmblendvps": ["wasmrelaxedsimd"],
}
})

_ISA_TO_ARCH_FLAGS_MAP = {
_ISA_TO_ARCH_FLAGS_MAP = immutabledict({
"armsimd32": "xnn_arch_arm_v6",
"fp16arith": "xnn_arch_arm_fp16_arith",
"neon": "xnn_arch_arm_neon",
Expand Down Expand Up @@ -168,7 +173,7 @@ def _remove_duplicate_newlines(text):
"wasmsdot": "xnn_arch_wasm_sdot",
"wasmusdot": "xnn_arch_wasm_usdot",
"wasmblendvps": "xnn_arch_wasm_blendvps",
}
})


def isa_hierarchy_map():
Expand Down Expand Up @@ -268,7 +273,7 @@ def postprocess_test_case(test_case, arch, isa, assembly=False):
"hvx",
]

_ISA_HIERARCHY_MAP = {isa: v for v, isa in enumerate(_ISA_HIERARCHY)}
_ISA_HIERARCHY_MAP = immutabledict({isa: v for v, isa in enumerate(_ISA_HIERARCHY)})


def overwrite_if_changed(filepath, content):
Expand Down
Loading