diff --git a/src/libpmem2/x86_64/flags.inc b/src/libpmem2/x86_64/flags.inc index 84fb77dc9401c5191a6840c4c04aeb676963a8a7..acd3a048a254d6bd189d0a6fafc7fb83f69bf50d 100644 --- a/src/libpmem2/x86_64/flags.inc +++ b/src/libpmem2/x86_64/flags.inc @@ -16,8 +16,8 @@ $(objdir)/memset_nt_avx512f.o: CFLAGS += -mavx512f $(objdir)/memcpy_nt_avx.o: CFLAGS += -mavx $(objdir)/memset_nt_avx.o: CFLAGS += -mavx -$(objdir)/memcpy_nt_movdir64b.o: CFLAGS += -mavx512f -mmovdir64b -$(objdir)/memset_nt_movdir64b.o: CFLAGS += -mavx512f -mmovdir64b +$(objdir)/memcpy_nt_movdir64b.o: CFLAGS += -mavx -mmovdir64b +$(objdir)/memset_nt_movdir64b.o: CFLAGS += -mavx -mavx512f -mmovdir64b $(objdir)/memcpy_t_avx512f.o: CFLAGS += -mavx512f $(objdir)/memset_t_avx512f.o: CFLAGS += -mavx512f @@ -25,9 +25,6 @@ $(objdir)/memset_t_avx512f.o: CFLAGS += -mavx512f $(objdir)/memcpy_t_avx.o: CFLAGS += -mavx $(objdir)/memset_t_avx.o: CFLAGS += -mavx -$(objdir)/memcpy_t_movdir64b.o: CFLAGS += -mavx512f -mmovdir64b -$(objdir)/memset_t_movdir64b.o: CFLAGS += -mavx512f -mmovdir64b - CFLAGS += -I$(TOP)/src/libpmem2/x86_64 ifeq ($(AVX512F_AVAILABLE), y) diff --git a/src/test/Makefile b/src/test/Makefile index d2645bf86c59fdb21225e9d62c54e93f99c4fe2d..5f5ff49475c1602d86b1748e0882084c10e9da63 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2014-2021, Intel Corporation +# Copyright 2014-2022, Intel Corporation # # @@ -416,9 +416,12 @@ envconfig.sh: PMEM2_AVX512F_ENABLED := $(shell strings $(TOP)/src/debug/libpmem2/libpmem2_all.o 2>&1 | \ grep -q "avx512f supported, but disabled at build time" && echo "0" || echo "1") +PMEM2_MOVDIR64B_ENABLED := $(shell strings $(TOP)/src/debug/libpmem2/libpmem2_all.o 2>&1 | \ + grep -q "movdir64b supported, but disabled at build time" && echo "0" || echo "1") + envconfig.py: - @printf "# autogenerated file\nconfig = {\n 'GLOBAL_LIB_PATH': '%s',\n 'PMEM2_AVX512F_ENABLED': '%s',\n 'GLOBAL_PATH': '%s',\n 'GLOBAL_PKG_CONFIG_PATH': '%s'\n}\n" \ - "$(LIBFABRIC_LD_LIBRARY_PATHS):$(LIBNDCTL_LD_LIBRARY_PATHS)" "$(PMEM2_AVX512F_ENABLED)" "$(LIBFABRIC_PATH)" "$(PKG_CONFIG_PATH)" > envconfig.py + @printf "# autogenerated file\nconfig = {\n 'GLOBAL_LIB_PATH': '%s',\n 'PMEM2_AVX512F_ENABLED': '%s',\n 'PMEM2_MOVDIR64B_ENABLED': '%s',\n 'GLOBAL_PATH': '%s',\n 'GLOBAL_PKG_CONFIG_PATH': '%s'\n}\n" \ + "$(LIBFABRIC_LD_LIBRARY_PATHS):$(LIBNDCTL_LD_LIBRARY_PATHS)" "$(PMEM2_AVX512F_ENABLED)" "$(PMEM2_MOVDIR64B_ENABLED)" "$(LIBFABRIC_PATH)" "$(PKG_CONFIG_PATH)" > envconfig.py require-rpmem: ifneq ($(BUILD_RPMEM),y) diff --git a/src/test/RUNTESTS.py b/src/test/RUNTESTS.py index 3dad5f4f1e2eaa95acdc2fac42cc1fec28c5290a..1bc50e489abfe36d76f65ebe3064f02596e65cc6 100755 --- a/src/test/RUNTESTS.py +++ b/src/test/RUNTESTS.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2019-2021, Intel Corporation +# Copyright 2019-2022, Intel Corporation """Main script for unit tests execution. @@ -115,7 +115,7 @@ class TestRunner: continue except futils.Skip as s: - self.msg.print_verbose('{}: SKIP: {}'.format(t, s)) + self.msg.print('{}: SKIP: {}'.format(t, s)) except futils.Fail as f: self._test_failed(t, c, f) @@ -124,7 +124,7 @@ class TestRunner: self._test_passed(t) except futils.Skip as s: - self.msg.print_verbose('{}: SKIP: {}'.format(tc, s)) + self.msg.print('{}: SKIP: {}'.format(tc, s)) except futils.Fail as f: self._test_failed(tc, c, f) ret = 1 diff --git a/src/test/pmem2_mem_ext/TESTS.py b/src/test/pmem2_mem_ext/TESTS.py index 45357cd28fa0a7e8f5a2adb715115700c527b7a3..a750c61a0cdba2c35b24132b12587487182e2f70 100755 --- a/src/test/pmem2_mem_ext/TESTS.py +++ b/src/test/pmem2_mem_ext/TESTS.py @@ -118,26 +118,30 @@ class Pmem2MemExt(t.Test): def check_arch(self, variant, available_arch): if variant == VARIANT_MOVDIR64B: if available_arch < MOVDIR64B: - raise futils.Skip("SKIP: MOVDIR64B unavailable") + raise futils.Skip("MOVDIR64B unavailable") # remove this when MSVC we use will support MOVDIR64B if sys.platform.startswith('win32'): - raise futils.Skip("SKIP: MOVDIR64B not supported by MSVC") + raise futils.Skip("MOVDIR64B not supported by MSVC") + + is_movdir64b_enabled = tools.envconfig['PMEM2_MOVDIR64B_ENABLED'] + if is_movdir64b_enabled == "0": + raise futils.Skip("MOVDIR64B disabled at build time") if variant == VARIANT_AVX512F: if available_arch < AVX512: - raise futils.Skip("SKIP: AVX512F unavailable") + raise futils.Skip("AVX512F unavailable") # remove this when MSVC we use will support AVX512F if sys.platform.startswith('win32'): - raise futils.Skip("SKIP: AVX512F not supported by MSVC") + raise futils.Skip("AVX512F not supported by MSVC") is_avx512f_enabled = tools.envconfig['PMEM2_AVX512F_ENABLED'] if is_avx512f_enabled == "0": - raise futils.Skip("SKIP: AVX512F disabled at build time") + raise futils.Skip("AVX512F disabled at build time") if variant == VARIANT_AVX and available_arch < AVX: - raise futils.Skip("SKIP: AVX unavailable") + raise futils.Skip("AVX unavailable") def check_log(self, ctx, match, type, flag): with open(self.log_files['pmem2'], 'r') as f: @@ -240,32 +244,40 @@ class TEST0(Pmem2MemExt): @g.require_granularity(g.PAGE, g.CACHELINE) -@t.add_params('variant', [VARIANT_SSE2, VARIANT_AVX, VARIANT_AVX512F, - VARIANT_MOVDIR64B]) +@t.add_params('variant', [VARIANT_SSE2, VARIANT_AVX, VARIANT_AVX512F]) @t.add_params('wc_workaround', ['on', 'off', 'default']) class TEST1(Pmem2MemExt): test_case = MATCH_PAGE_CACHELINE_SMALL @g.require_granularity(g.BYTE) -@t.add_params('variant', [VARIANT_SSE2, VARIANT_AVX, VARIANT_AVX512F, - VARIANT_MOVDIR64B]) +@t.add_params('variant', [VARIANT_SSE2, VARIANT_AVX, VARIANT_AVX512F]) @t.add_params('wc_workaround', ['on', 'off', 'default']) class TEST2(Pmem2MemExt): test_case = MATCH_BYTE_SMALL @g.require_granularity(g.PAGE, g.CACHELINE) -@t.add_params('variant', [VARIANT_SSE2, VARIANT_AVX, VARIANT_AVX512F, - VARIANT_MOVDIR64B]) +@t.add_params('variant', [VARIANT_SSE2, VARIANT_AVX, VARIANT_AVX512F]) @t.add_params('wc_workaround', ['on', 'off', 'default']) class TEST3(Pmem2MemExt): test_case = MATCH_PAGE_CACHELINE_BIG @g.require_granularity(g.BYTE) -@t.add_params('variant', [VARIANT_SSE2, VARIANT_AVX, VARIANT_AVX512F, - VARIANT_MOVDIR64B]) +@t.add_params('variant', [VARIANT_SSE2, VARIANT_AVX, VARIANT_AVX512F]) @t.add_params('wc_workaround', ['on', 'off', 'default']) class TEST4(Pmem2MemExt): test_case = MATCH_BYTE_BIG + + +@t.add_params('variant', [VARIANT_MOVDIR64B]) +@t.add_params('wc_workaround', ['on', 'off', 'default']) +class TEST5(Pmem2MemExt): + test_case = [(PMEM_F_MEM_NONTEMPORAL, 128, "nt")] + + +@t.add_params('variant', [VARIANT_MOVDIR64B]) +@t.add_params('wc_workaround', ['on', 'off', 'default']) +class TEST6(Pmem2MemExt): + test_case = [(PMEM_F_MEM_NONTEMPORAL, 1024, "nt")] diff --git a/src/test/unittest/builds.py b/src/test/unittest/builds.py index 90deed8bc07d19d5de9760c78a65a8f14552e6bf..bfdc70882355ad0cfd5d52f243b7cf3ea2702d21 100644 --- a/src/test/unittest/builds.py +++ b/src/test/unittest/builds.py @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2019-2020, Intel Corporation +# Copyright 2019-2022, Intel Corporation # """Build context classes""" @@ -29,7 +29,7 @@ class Build(metaclass=ctx.CtxType): try: builds.append(b(**kwargs)) except futils.Skip as s: - msg.print_verbose('{}: SKIP: {}'.format(tc, s)) + msg.print('{}: SKIP: {}'.format(tc, s)) return builds diff --git a/src/test/unittest/context.py b/src/test/unittest/context.py index 6499922dfbdab717104aa4730631043a95e5538e..70b3ed01215ad891ed09d87687304d11ae4db275 100644 --- a/src/test/unittest/context.py +++ b/src/test/unittest/context.py @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2019-2021, Intel Corporation +# Copyright 2019-2022, Intel Corporation # """ @@ -43,7 +43,8 @@ try: envconfig = envconfig.config except ImportError: # if file doesn't exist create dummy object - envconfig = {'GLOBAL_LIB_PATH': '', 'PMEM2_AVX512F_ENABLED': ''} + envconfig = {'GLOBAL_LIB_PATH': '', 'PMEM2_AVX512F_ENABLED': '', + 'PMEM2_MOVDIR64B_ENABLED': ''} def expand(*classes): diff --git a/src/test/unittest/granularity.py b/src/test/unittest/granularity.py index 222cb55a60e5bb177503fdf1de8685ed0cab9f96..36832dc6a8848ca2273be502ccfa3aada796eac8 100644 --- a/src/test/unittest/granularity.py +++ b/src/test/unittest/granularity.py @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2019-2021, Intel Corporation +# Copyright 2019-2022, Intel Corporation # """Granularity context classes and utilities""" @@ -188,7 +188,7 @@ class Granularity(metaclass=ctx.CtxType): gran._check_real_pmem_req_is_met(tc) gs.append(gran) except futils.Skip as s: - msg.print_verbose('{}: SKIP: {}'.format(tc, s)) + msg.print('{}: SKIP: {}'.format(tc, s)) return gs diff --git a/src/test/unittest/tools.py b/src/test/unittest/tools.py index 7f20dcb7576fa5729770466bcbd37872f0d2f4e8..c05d29e5a234e52908d30e80dd53a34ed680374b 100644 --- a/src/test/unittest/tools.py +++ b/src/test/unittest/tools.py @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2019-2021, Intel Corporation +# Copyright 2019-2022, Intel Corporation # """External tools integration""" @@ -15,7 +15,8 @@ try: envconfig = envconfig.config except ImportError: # if file doesn't exist create dummy object - envconfig = {'GLOBAL_LIB_PATH': '', 'PMEM2_AVX512F_ENABLED': ''} + envconfig = {'GLOBAL_LIB_PATH': '', 'PMEM2_AVX512F_ENABLED': '', + 'PMEM2_MOVDIR64B_ENABLED': ''} class Tools: