diff --git a/src/deps/miniasync/ChangeLog b/src/deps/miniasync/ChangeLog
new file mode 100644
index 0000000000000000000000000000000000000000..8e1c8ad270b9399fd8aef70fc49d83b1656d2c53
--- /dev/null
+++ b/src/deps/miniasync/ChangeLog
@@ -0,0 +1,15 @@
+Wed Apr 22 2022 Weronika Lewandowska <weronika.lewandowska@intel.com>
+
+	* Version 0.1.0
+
+	This is the first official release of the miniasync library.
+ 
+	The library provides the API for asynchronous memory operations
+	through the use of features and runtime mechanisms and independence
+	in terms of hardware by implementing a virtual data mover.
+	
+	This release also contains:
+	- documentation on the implemented functionality
+	- basic examples
+	- working build system based on GHA
+	- functional test cases
diff --git a/src/deps/miniasync/doc/data_mover_dml_get_vdm.3.md b/src/deps/miniasync/doc/data_mover_dml_get_vdm.3.md
index b724a29cac766da1c68268dddc6f9e4068ab7258..ef5c1955afb6d8bb16244670602390ac7d3def72 100644
--- a/src/deps/miniasync/doc/data_mover_dml_get_vdm.3.md
+++ b/src/deps/miniasync/doc/data_mover_dml_get_vdm.3.md
@@ -45,6 +45,8 @@ structure *struct vdm* is needed by every **miniasync**(7) data mover operation.
 **DML** data mover implementation supports following operations:
 
 * **vdm_memcpy**(3) - memory copy operation
+* **vdm_memmove**(3) - memory move operation
+* **vdm_memset**(3) - memory set operation
 
 # RETURN VALUE #
 
@@ -52,5 +54,5 @@ The **data_mover_dml_get_vdm**() function returns a pointer to *struct vdm* stru
 
 # SEE ALSO #
 
-**vdm_memcpy**(3), **miniasync**(7),
-**miniasync_vdm_dml**(7) and **<https://pmem.io>**
+**vdm_memcpy**(3), **vdm_memmove**(3), **vdm_memset**(3),
+ **miniasync**(7), **miniasync_vdm_dml**(7) and **<https://pmem.io>**
diff --git a/src/deps/miniasync/doc/miniasync_vdm_dml.7.md b/src/deps/miniasync/doc/miniasync_vdm_dml.7.md
index 1337fb6af14c7b9aec344ff0d20ad61723f8d764..9e720c20961bf039cb284273c3a54aa981da877b 100644
--- a/src/deps/miniasync/doc/miniasync_vdm_dml.7.md
+++ b/src/deps/miniasync/doc/miniasync_vdm_dml.7.md
@@ -60,6 +60,8 @@ To create a new **DML** data mover instance, use **data_mover_dml_new**(3) funct
 **DML** data mover supports following operations:
 
 * **vdm_memcpy**(3) - memory copy operation
+* **vdm_memmove**(3) - memory move operation
+* **vdm_memset**(3) - memory set operation
 
 **DML** data mover does not support notifier feature. For more information about
 notifiers, see **miniasync_future**(7).
@@ -78,6 +80,6 @@ struct vdm_memcpy_future memcpy_fut = vdm_memcpy(dml_mover, dest, src,
 # SEE ALSO #
 
 **data_mover_dml_new**(3), **data_mover_dml_get_vdm**(3),
-**vdm_memcpy**(3), **miniasync**(7), **miniasync_future**(7),
-**miniasync_vdm**(7), **<https://github.com/intel/DML>**
-and **<https://pmem.io>**
+**vdm_memcpy**(3), **vdm_memmove**(3), **vdm_memset**(3),
+**miniasync**(7), **miniasync_future**(7), **miniasync_vdm**(7),
+**<https://github.com/intel/DML>** and **<https://pmem.io>**
diff --git a/src/deps/miniasync/extras/dml/CMakeLists.txt b/src/deps/miniasync/extras/dml/CMakeLists.txt
index 739fefc391809cf3c6f1d81678dffd3685b97ac5..99c09753a6a0be4cdaf8e805e3ff2586e24a7bc7 100644
--- a/src/deps/miniasync/extras/dml/CMakeLists.txt
+++ b/src/deps/miniasync/extras/dml/CMakeLists.txt
@@ -20,18 +20,11 @@ add_check_whitespace(miniasync-vdm-dml
 	${CMAKE_CURRENT_SOURCE_DIR}/utils/*.[ch])
 
 set(DML_SOURCES
-    data_mover_dml.c
+	data_mover_dml.c
 )
 
-set(DML_CORE_DEPS
-	${CORE_SOURCE_DIR}/cpu.c
-	${CORE_SOURCE_DIR}/os_posix.c
-	${CORE_SOURCE_DIR}/os_thread_posix.c
-	${CORE_SOURCE_DIR}/out.c
-	${CORE_SOURCE_DIR}/util.c
-	${CORE_SOURCE_DIR}/util_posix.c)
-
-add_library(miniasync-vdm-dml SHARED ${DML_SOURCES} ${DML_CORE_DEPS})
+add_library(miniasync-vdm-dml SHARED ${DML_SOURCES})
+target_link_libraries(miniasync-vdm-dml PRIVATE dml dl)
 
 target_include_directories(miniasync-vdm-dml PRIVATE .
 	${MINIASYNC_DML_INCLUDE_DIR}
@@ -59,4 +52,4 @@ set(CHECK_MOVDIR64B_SOURCES
 
 add_link_executable(check_movdir64b
 	"${CHECK_MOVDIR64B_SOURCES}"
-	"")
+	"dml")
diff --git a/src/deps/miniasync/extras/dml/data_mover_dml.c b/src/deps/miniasync/extras/dml/data_mover_dml.c
index 67384af3404dc5576f3a283dd72efaf3df67a7ce..e76f459f53f301955c68e7059b1607b4006adeee 100644
--- a/src/deps/miniasync/extras/dml/data_mover_dml.c
+++ b/src/deps/miniasync/extras/dml/data_mover_dml.c
@@ -8,7 +8,6 @@
 
 #include "core/membuf.h"
 #include "core/out.h"
-#include "core/util.h"
 #include "libminiasync-vdm-dml.h"
 
 #define SUPPORTED_FLAGS VDM_F_MEM_DURABLE | VDM_F_NO_CACHE_HINT
@@ -72,19 +71,69 @@ data_mover_dml_memcpy_job_init(dml_job_t *dml_job,
 }
 
 /*
- * data_mover_dml_memcpy_job_delete -- delete job struct
+ * data_mover_dml_memmove_job_init -- initializes new memmove dml job
+ */
+static dml_job_t *
+data_mover_dml_memmove_job_init(dml_job_t *dml_job,
+	void *dest, void *src, size_t n, uint64_t flags)
+{
+	uint64_t dml_flags = 0;
+	data_mover_dml_translate_flags(flags, &dml_flags);
+
+	dml_job->operation = DML_OP_MEM_MOVE;
+	dml_job->source_first_ptr = (uint8_t *)src;
+	dml_job->destination_first_ptr = (uint8_t *)dest;
+	dml_job->source_length = n;
+	dml_job->destination_length = n;
+	dml_job->flags = dml_flags;
+
+	return dml_job;
+}
+
+/*
+ * data_mover_dml_memset_job_init -- initializes new memset dml job
+ */
+static dml_job_t *
+data_mover_dml_memset_job_init(dml_job_t *dml_job,
+	void *ptr, int value, size_t n, uint64_t flags)
+{
+	uint64_t dml_flags = 0;
+	data_mover_dml_translate_flags(flags, &dml_flags);
+
+	dml_job->operation = DML_OP_FILL;
+	dml_job->destination_first_ptr = (uint8_t *)ptr;
+	dml_job->destination_length = n;
+	dml_job->flags = dml_flags;
+
+	/*
+	 * Original 'memset' implementation converts the provided 'value' into
+	 * a 'unsigned char' type.
+	 */
+	unsigned char c = (unsigned char)value;
+
+	/* Populate the pattern */
+	for (size_t i = 0; i < 8 && i < n; i++) {
+		dml_job->pattern[i] = (uint8_t)c;
+	}
+
+	return dml_job;
+}
+
+/*
+ * data_mover_dml_job_delete -- delete job struct
  */
 static void
-data_mover_dml_memcpy_job_delete(dml_job_t **dml_job)
+data_mover_dml_job_delete(dml_job_t **dml_job)
 {
 	dml_finalize_job(*dml_job);
 }
 
 /*
- * data_mover_dml_memcpy_job_submit -- submit memcpy job (nonblocking)
+ * data_mover_dml_memory_op_job_submit -- submit job for memory operations,
+ * which include memcpy and memmove (nonblocking)
  */
 static void *
-data_mover_dml_memcpy_job_submit(dml_job_t *dml_job)
+data_mover_dml_memory_op_job_submit(dml_job_t *dml_job)
 {
 	dml_status_t status;
 	status = dml_submit_job(dml_job);
@@ -105,28 +154,30 @@ data_mover_dml_operation_new(struct vdm *vdm,
 	dml_job_t *dml_job;
 
 	switch (type) {
-		case VDM_OPERATION_MEMCPY: {
-			status = dml_get_job_size(vdm_dml->path, &job_size);
-			if (status != DML_STATUS_OK)
-				return NULL;
-
-			dml_job = membuf_alloc(vdm_dml->membuf, job_size);
-			if (dml_job == NULL)
-				return NULL;
-
-			dml_status_t status =
-				dml_init_job(vdm_dml->path, dml_job);
-			if (status != DML_STATUS_OK) {
-				membuf_free(dml_job);
-				return NULL;
-			}
-
-			return dml_job;
-		}
+		case VDM_OPERATION_MEMCPY:
+		case VDM_OPERATION_MEMMOVE:
+		case VDM_OPERATION_MEMSET:
+			break;
 		default:
-		ASSERT(0); /* unreachable */
+			ASSERT(0); /* unreachable */
+	}
+
+	status = dml_get_job_size(vdm_dml->path, &job_size);
+	if (status != DML_STATUS_OK)
+		return NULL;
+
+	dml_job = membuf_alloc(vdm_dml->membuf, job_size);
+	if (dml_job == NULL)
+		return NULL;
+
+	dml_status_t job_status =
+		dml_init_job(vdm_dml->path, dml_job);
+	if (job_status != DML_STATUS_OK) {
+		membuf_free(dml_job);
+		return NULL;
 	}
-	return NULL;
+
+	return dml_job;
 }
 
 /*
@@ -154,15 +205,25 @@ data_mover_dml_operation_delete(void *data,
 
 	switch (job->operation) {
 		case DML_OP_MEM_MOVE:
-			output->type = VDM_OPERATION_MEMCPY;
-			output->output.memcpy.dest =
-				job->destination_first_ptr;
+			if (job->flags & DML_FLAG_COPY_ONLY) {
+				output->type = VDM_OPERATION_MEMCPY;
+				output->output.memcpy.dest =
+					job->destination_first_ptr;
+			} else {
+				output->type = VDM_OPERATION_MEMMOVE;
+				output->output.memmove.dest =
+					job->destination_first_ptr;
+			}
+			break;
+		case DML_OP_FILL:
+			output->type = VDM_OPERATION_MEMSET;
+			output->output.memset.str = job->destination_first_ptr;
 			break;
 		default:
 			ASSERT(0);
 	}
 
-	data_mover_dml_memcpy_job_delete(&job);
+	data_mover_dml_job_delete(&job);
 
 	membuf_free(data);
 }
@@ -202,13 +263,35 @@ data_mover_dml_operation_start(void *data,
 	}
 
 	dml_job_t *job = (dml_job_t *)data;
-	data_mover_dml_memcpy_job_init(job,
-		operation->data.memcpy.dest,
-		operation->data.memcpy.src,
-		operation->data.memcpy.n,
-		operation->data.memcpy.flags);
 
-	data_mover_dml_memcpy_job_submit(job);
+	switch (operation->type) {
+		case VDM_OPERATION_MEMCPY:
+				data_mover_dml_memcpy_job_init(job,
+					operation->data.memcpy.dest,
+					operation->data.memcpy.src,
+					operation->data.memcpy.n,
+					operation->data.memcpy.flags);
+				data_mover_dml_memory_op_job_submit(job);
+				break;
+		case VDM_OPERATION_MEMMOVE:
+				data_mover_dml_memmove_job_init(job,
+					operation->data.memmove.dest,
+					operation->data.memmove.src,
+					operation->data.memmove.n,
+					operation->data.memmove.flags);
+				data_mover_dml_memory_op_job_submit(job);
+			break;
+		case VDM_OPERATION_MEMSET:
+				data_mover_dml_memset_job_init(job,
+					operation->data.memset.str,
+					operation->data.memset.c,
+					operation->data.memset.n,
+					operation->data.memset.flags);
+				data_mover_dml_memory_op_job_submit(job);
+			break;
+		default:
+			ASSERT(0);
+	}
 
 	return 0;
 }
diff --git a/src/deps/miniasync/src/CMakeLists.txt b/src/deps/miniasync/src/CMakeLists.txt
index 2d1304726becd5037eaf90a985f31d31c79ae24e..392823749bcaa0a25fdb88e73efe0f532acb1471 100644
--- a/src/deps/miniasync/src/CMakeLists.txt
+++ b/src/deps/miniasync/src/CMakeLists.txt
@@ -59,6 +59,7 @@ if(WIN32)
 endif()
 
 set_target_properties(miniasync PROPERTIES
+	SOVERSION 0.1.0-rc1
 	PUBLIC_HEADER ${MINIASYNC_INCLUDE_DIR}/libminiasync.h
 )
 
diff --git a/src/deps/miniasync/src/core/cpu.c b/src/deps/miniasync/src/core/cpu.c
index 7d65ef0b9c38e62fdd86ca40bdf2b0229ccd3210..e47c502037ad54df79bf4e7b5dcf106bd3f83f0c 100644
--- a/src/deps/miniasync/src/core/cpu.c
+++ b/src/deps/miniasync/src/core/cpu.c
@@ -17,6 +17,9 @@
 
 #include "cpu.h"
 
+#if defined(__x86_64__) || defined(__amd64__) || defined(_M_X64) || \
+	defined(_M_AMD64)
+
 #define EAX_IDX 0
 #define EBX_IDX 1
 #define ECX_IDX 2
@@ -43,10 +46,6 @@ cpuid(unsigned func, unsigned subfunc, unsigned cpuinfo[4])
 	__cpuidex((int *)cpuinfo, (int)func, (int)subfunc);
 }
 
-#else
-
-#error unsupported compiler
-
 #endif
 
 #ifndef bit_MOVDIR64B
@@ -78,3 +77,12 @@ is_cpu_movdir64b_present(void)
 {
 	return is_cpu_feature_present(0x7, ECX_IDX, bit_MOVDIR64B);
 }
+
+#else
+
+/*
+ * Nothing to be done here yet. There is no support for 64B atomic copy on
+ * the other architectures yet.
+ */
+
+#endif
diff --git a/src/deps/miniasync/src/core/cpu.h b/src/deps/miniasync/src/core/cpu.h
index 837d9a75c1dc8135379217f4d5a15b9d56f2efc5..fc14dc3502198ff45c6091b7271683501370b73b 100644
--- a/src/deps/miniasync/src/core/cpu.h
+++ b/src/deps/miniasync/src/core/cpu.h
@@ -8,6 +8,11 @@
  * cpu.h -- definitions for "cpu" module
  */
 
+#if defined(__x86_64__) || defined(__amd64__) || defined(_M_X64) || \
+	defined(_M_AMD64)
+
 int is_cpu_movdir64b_present(void);
 
 #endif
+
+#endif
diff --git a/src/deps/miniasync/src/core/util.h b/src/deps/miniasync/src/core/util.h
index 112db6354933492092779c17e18dbdfb46f0723e..acd45aac77374fa49e4823bf753c22a0f8fda4f5 100644
--- a/src/deps/miniasync/src/core/util.h
+++ b/src/deps/miniasync/src/core/util.h
@@ -577,6 +577,23 @@ static
 #define SUPPRESS_ARG_8(X, ...) SUPPRESS_ARG_1(X); SUPPRESS_ARG_7(__VA_ARGS__)
 #define SUPPRESS_ARG_9(X, ...) SUPPRESS_ARG_1(X); SUPPRESS_ARG_8(__VA_ARGS__)
 
+#if defined(__x86_64__) || defined(__amd64__) || defined(_M_X64) || \
+	defined(_M_AMD64)
+
+#include <emmintrin.h>
+#define WAIT() _mm_pause()
+
+#else
+
+/*
+ * Notice there are better implementations for wait-like functions on other
+ * architectures (e.g. powerpc64le), but the current code is generic enough
+ * and doesn't break the build.
+ */
+#define WAIT() do {} while (0)
+
+#endif
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/deps/miniasync/src/include/libminiasync/future.h b/src/deps/miniasync/src/include/libminiasync/future.h
index a7ba6a82be4444393932c46aea56bb7a9019fa62..d20f582041ef6c01b5470fe761b1616887fb542c 100644
--- a/src/deps/miniasync/src/include/libminiasync/future.h
+++ b/src/deps/miniasync/src/include/libminiasync/future.h
@@ -63,8 +63,17 @@
 
 #include <stddef.h>
 #include <stdint.h>
+
+#if defined(__x86_64__) || defined(__amd64__) || defined(_M_X64) || \
+	defined(_M_AMD64)
 #include <emmintrin.h>
 
+#define __FUTURE_WAIT() _mm_pause()
+#else
+#include <sched.h>
+#define __FUTURE_WAIT() sched_yield()
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -261,7 +270,7 @@ future_poll(struct future *fut, struct future_notifier *notifier)
 
 #define FUTURE_BUSY_POLL(_futurep)\
 while (future_poll(FUTURE_AS_RUNNABLE((_futurep)), NULL) !=\
-	FUTURE_STATE_COMPLETE) { _mm_pause(); }
+	FUTURE_STATE_COMPLETE) { __FUTURE_WAIT(); }
 
 static inline enum future_state
 async_chain_impl(struct future_context *ctx, struct future_notifier *notifier)
diff --git a/src/deps/miniasync/src/runtime.c b/src/deps/miniasync/src/runtime.c
index f88fc2174a9a98f8beb9b9946c30d0153ec74553..beb648aedcd0bc4923e479c9864ec393ef3777c0 100644
--- a/src/deps/miniasync/src/runtime.c
+++ b/src/deps/miniasync/src/runtime.c
@@ -1,10 +1,12 @@
 // SPDX-License-Identifier: BSD-3-Clause
 /* Copyright 2021-2022, Intel Corporation */
 
+#include <stdlib.h>
+
 #include "libminiasync/runtime.h"
 #include "core/os_thread.h"
 #include "core/os.h"
-#include <emmintrin.h>
+#include "core/util.h"
 
 struct runtime_waker_data {
 	os_cond_t *cond;
@@ -105,7 +107,7 @@ runtime_wait_multiple(struct runtime *runtime, struct future *futs[],
 			if (ndone == nfuts)
 				return;
 
-			_mm_pause();
+			WAIT();
 		}
 		runtime_sleep(runtime);
 	}
diff --git a/src/deps/miniasync/tests/CMakeLists.txt b/src/deps/miniasync/tests/CMakeLists.txt
index 93e0d096f13c40815461acf38c5c35fe95179f86..2263cfcf15516220850157f82bec48fd8f53fee6 100644
--- a/src/deps/miniasync/tests/CMakeLists.txt
+++ b/src/deps/miniasync/tests/CMakeLists.txt
@@ -12,10 +12,12 @@ set(LIBS_BASIC
 
 set(LIBS_DML
 	miniasync-vdm-dml
-	dl
-	dml
 	${LIBS_BASIC})
 
+set(SOURCES_UTIL_DML
+	${CORE_SOURCE_DIR}/cpu.c
+	${MINIASYNC_DML_SOURCE_DIR}/utils/util_dml.c)
+
 set(SOURCES_DUMMY_TEST
 	dummy/dummy.c)
 
@@ -28,9 +30,17 @@ set(SOURCES_FUTURE_TEST
 set(SOURCES_MEMCPY_PTHREADS_TEST
 	memcpy_threads/memcpy_threads.c)
 
-set(SOURCES_DATA_MOVER_DML_TEST
-	data_mover_dml/data_mover_dml.c
-	${MINIASYNC_DML_SOURCE_DIR}/utils/util_dml.c)
+set(SOURCES_DATA_MOVER_DML_TEST_MEMCPY
+	data_mover_dml_memcpy/data_mover_dml_memcpy.c
+	${SOURCES_UTIL_DML})
+
+set(SOURCES_DATA_MOVER_DML_TEST_MEMMOVE
+	data_mover_dml_memmove/data_mover_dml_memmove.c
+	${SOURCES_UTIL_DML})
+
+set(SOURCES_DATA_MOVER_DML_TEST_MEMSET
+	data_mover_dml_memset/data_mover_dml_memset.c
+	${SOURCES_UTIL_DML})
 
 set(SOURCES_MEMBUF_TEST
 	membuf/membuf_simple.c)
@@ -46,7 +56,7 @@ set(SOURCES_MEMSET_SYNC_TEST
 
 set(SOURCES_VDM_OPERATION_FUTURE_POLL
 	vdm_operation_future_poll/vdm_operation_future_poll.c
-	${MINIASYNC_DML_SOURCE_DIR}/utils/util_dml.c)
+	${SOURCES_UTIL_DML})
 
 set(SOURCES_MEMMOVE_THREADS_TEST
 	memmove_threads/memmove_threads.c)
@@ -138,14 +148,24 @@ endif()
 
 # add miniasync-vdm-dml test only if the sources in extras/dml were compiled
 if (COMPILE_DML)
-	add_link_executable(data_mover_dml
-			"${SOURCES_DATA_MOVER_DML_TEST}"
+	add_link_executable(data_mover_dml_memcpy
+			"${SOURCES_DATA_MOVER_DML_TEST_MEMCPY}"
+			"${LIBS_DML}")
+
+	add_link_executable(data_mover_dml_memmove
+			"${SOURCES_DATA_MOVER_DML_TEST_MEMMOVE}"
+			"${LIBS_DML}")
+
+	add_link_executable(data_mover_dml_memset
+			"${SOURCES_DATA_MOVER_DML_TEST_MEMSET}"
 			"${LIBS_DML}")
 
 	add_link_executable(vdm_operation_future_poll
 			"${SOURCES_VDM_OPERATION_FUTURE_POLL}"
 			"${LIBS_DML}")
 
-	test("data_mover_dml" "data_mover_dml" test_data_mover_dml none)
+	test("data_mover_dml_memcpy" "data_mover_dml_memcpy" test_data_mover_dml_memcpy none)
+	test("data_mover_dml_memmove" "data_mover_dml_memmove" test_data_mover_dml_memmove none)
+	test("data_mover_dml_memset" "data_mover_dml_memset" test_data_mover_dml_memset none)
 	test("vdm_operation_future_poll" "vdm_operation_future_poll" test_vdm_operation_future_poll none)
 endif()
diff --git a/src/deps/miniasync/tests/cmake/ctest_helpers.cmake b/src/deps/miniasync/tests/cmake/ctest_helpers.cmake
index 24876c46afce0ebba28fa3d72fb80e44da820c1f..79b2228fc9095357f35776a79484f13ab367bc32 100644
--- a/src/deps/miniasync/tests/cmake/ctest_helpers.cmake
+++ b/src/deps/miniasync/tests/cmake/ctest_helpers.cmake
@@ -23,6 +23,13 @@ function(add_link_executable name sources libs)
 	target_include_directories(${name}
 		PRIVATE ${CORE_SOURCE_DIR})
 
+if(WIN32)
+	target_include_directories(${name}
+		PRIVATE ${MINIASYNC_INCLUDE_DIR_WIN}/sys)
+	target_include_directories(${name}
+		PRIVATE ${MINIASYNC_INCLUDE_DIR_WIN})
+endif()
+
 	target_link_libraries(${name} PRIVATE ${libs})
 endfunction()
 
diff --git a/src/deps/miniasync/tests/data_mover_dml/test_data_mover_dml.cmake b/src/deps/miniasync/tests/data_mover_dml/test_data_mover_dml.cmake
deleted file mode 100644
index fbeee1d5fa1d6d41b89de174396c210b0c1998e9..0000000000000000000000000000000000000000
--- a/src/deps/miniasync/tests/data_mover_dml/test_data_mover_dml.cmake
+++ /dev/null
@@ -1,18 +0,0 @@
-# SPDX-License-Identifier: BSD-3-Clause
-# Copyright 2021-2022, Intel Corporation
-
-# an example for the data_mover_dml test case
-
-include(${SRC_DIR}/cmake/test_helpers.cmake)
-
-setup()
-
-# check for MOVDIR64B instruction
-check_movdir64b()
-
-# execute DML tests only if MOVDIR64B instruction is available
-if (MOVDIR64B EQUAL 1)
-	execute(0 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BUILD}/data_mover_dml)
-endif()
-
-cleanup()
diff --git a/src/deps/miniasync/tests/data_mover_dml/data_mover_dml.c b/src/deps/miniasync/tests/data_mover_dml_memcpy/data_mover_dml_memcpy.c
similarity index 87%
rename from src/deps/miniasync/tests/data_mover_dml/data_mover_dml.c
rename to src/deps/miniasync/tests/data_mover_dml_memcpy/data_mover_dml_memcpy.c
index 3d66ec05106d7ddf28986595b560e81e93020dc6..67b706dc24e0e6a000643811899d0793a019f82d 100644
--- a/src/deps/miniasync/tests/data_mover_dml/data_mover_dml.c
+++ b/src/deps/miniasync/tests/data_mover_dml_memcpy/data_mover_dml_memcpy.c
@@ -64,7 +64,13 @@ int test_supported_flags() {
 		data_mover_dml_new(DATA_MOVER_DML_SOFTWARE);
 	struct vdm *dml_mover = data_mover_dml_get_vdm(dmd);
 	int ret = test_flag(dml_mover, VDM_F_MEM_DURABLE, 1);
-	ret += test_flag(dml_mover, VDM_F_NO_CACHE_HINT, 1);
+
+	/*
+	 * The code below is temporarily commented because VDM_F_NO_CACHE_HINT
+	 * flag turned out to be not implemented in the hardware.
+	 *
+	 * ret += test_flag(dml_mover, VDM_F_NO_CACHE_HINT, 1);
+	 */
 
 	data_mover_dml_delete(dmd);
 	return ret;
@@ -85,6 +91,8 @@ main(void)
 		ret = test_dml_hw_path_flag_memcpy();
 		if (ret)
 			return ret;
+	} else {
+		UT_LOG_SKIP("test_dml_hw_path_flag_memmove");
 	}
 
 	ret = test_supported_flags();
diff --git a/src/deps/miniasync/tests/data_mover_dml_memcpy/test_data_mover_dml_memcpy.cmake b/src/deps/miniasync/tests/data_mover_dml_memcpy/test_data_mover_dml_memcpy.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..8a0601248469d53f31300ddb102b4f8897b93646
--- /dev/null
+++ b/src/deps/miniasync/tests/data_mover_dml_memcpy/test_data_mover_dml_memcpy.cmake
@@ -0,0 +1,22 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright 2021-2022, Intel Corporation
+
+# an example for the data_mover_dml test case
+
+include(${SRC_DIR}/cmake/test_helpers.cmake)
+
+setup()
+
+# check for MOVDIR64B instruction
+check_movdir64b()
+
+# inform that some test cases involving 'mvodir64b' instruction will be skipped
+if (MOVDIR64B EQUAL 0)
+	message(STATUS "movdir64b instruction not available, some test cases will be skipped!")
+endif()
+
+execute(0 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BUILD}/data_mover_dml_memcpy)
+
+execute_assert_pass(${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BUILD}/data_mover_dml_memcpy)
+
+cleanup()
diff --git a/src/deps/miniasync/tests/data_mover_dml_memmove/data_mover_dml_memmove.c b/src/deps/miniasync/tests/data_mover_dml_memmove/data_mover_dml_memmove.c
new file mode 100644
index 0000000000000000000000000000000000000000..99166bab552b13ab84defaece712d9e4d10b845a
--- /dev/null
+++ b/src/deps/miniasync/tests/data_mover_dml_memmove/data_mover_dml_memmove.c
@@ -0,0 +1,116 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/* Copyright 2022, Intel Corporation */
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <libminiasync.h>
+#include <libminiasync-vdm-dml.h>
+#include "util_dml.h"
+#include "test_helpers.h"
+
+static int
+dml_memmove(enum data_mover_dml_type type, uint64_t flags, size_t size)
+{
+	/* assert that size is a multiply of 4 */
+	if (size % 4 != 0) {
+		fprintf(stderr,
+				"size parameter is not a multiply of 4");
+		return 1;
+	}
+
+	char *buffer = malloc(size);
+	if (buffer == NULL) {
+		fprintf(stderr,
+				"memory for the buffer could not be allocated");
+		return 1;
+	}
+
+	/* fill up the buffer with 'As', 'Bs' and 'Cs' */
+	memset(buffer, 'A', size / 4);
+	memset(buffer + size / 4, 'B', size / 4);
+	memset(buffer + 2 * size / 4, 'C', size / 4);
+
+	struct runtime *r = runtime_new();
+
+	struct data_mover_dml *dmd = data_mover_dml_new(type);
+	struct vdm *dml_mover_async = data_mover_dml_get_vdm(dmd);
+
+	/*
+	 * Copy 'As' and 'Bs' from the beginning of the buffer
+	 * to the address where 'Bs' start.
+	 */
+	struct vdm_operation_future test_memmove_fut =
+		vdm_memmove(dml_mover_async, buffer + size / 4,
+					buffer, 2 * size / 4, 0);
+
+	runtime_wait(r, FUTURE_AS_RUNNABLE(&test_memmove_fut));
+
+	for (size_t i = 0; i < 2 * size / 4; i++) {
+		UT_ASSERTeq(buffer[i], 'A');
+	}
+
+	for (size_t i = 2 * size / 4; i < 3 * size / 4; i++) {
+		UT_ASSERTeq(buffer[i], 'B');
+	}
+
+	data_mover_dml_delete(dmd);
+
+	runtime_delete(r);
+	free(buffer);
+
+	return 0;
+}
+
+static int
+test_dml_basic_memmove()
+{
+	return
+		dml_memmove(DATA_MOVER_DML_SOFTWARE, 0, 4) ||
+		dml_memmove(DATA_MOVER_DML_SOFTWARE, 0, 12) ||
+		dml_memmove(DATA_MOVER_DML_SOFTWARE, 0, 1024);
+}
+
+static int
+test_dml_durable_flag_memmove()
+{
+	return
+		dml_memmove(DATA_MOVER_DML_SOFTWARE,
+					VDM_F_MEM_DURABLE, 4) ||
+		dml_memmove(DATA_MOVER_DML_SOFTWARE,
+					VDM_F_MEM_DURABLE, 12) ||
+		dml_memmove(DATA_MOVER_DML_SOFTWARE,
+					VDM_F_MEM_DURABLE, 1024);
+}
+
+static int
+test_dml_hw_path_flag_memmove()
+{
+	return
+		dml_memmove(DATA_MOVER_DML_HARDWARE, 0, 4) ||
+		dml_memmove(DATA_MOVER_DML_HARDWARE, 0, 12) ||
+		dml_memmove(DATA_MOVER_DML_HARDWARE, 0, 1024);
+}
+
+int
+main(void)
+{
+	int ret = test_dml_basic_memmove();
+	if (ret)
+		return ret;
+
+	ret = test_dml_durable_flag_memmove();
+	if (ret)
+		return ret;
+
+	if (util_dml_check_hw_available() == 0) {
+		ret = test_dml_hw_path_flag_memmove();
+		if (ret)
+			return ret;
+	} else {
+		UT_LOG_SKIP("test_dml_hw_path_flag_memmove");
+	}
+
+	return 0;
+}
diff --git a/src/deps/miniasync/tests/data_mover_dml_memmove/test_data_mover_dml_memmove.cmake b/src/deps/miniasync/tests/data_mover_dml_memmove/test_data_mover_dml_memmove.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..fdd40f4c2300e1bffba395e9dc082eb02ab0b21f
--- /dev/null
+++ b/src/deps/miniasync/tests/data_mover_dml_memmove/test_data_mover_dml_memmove.cmake
@@ -0,0 +1,22 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright 2022, Intel Corporation
+
+# an example for the data_mover_dml test case
+
+include(${SRC_DIR}/cmake/test_helpers.cmake)
+
+setup()
+
+# check for MOVDIR64B instruction
+check_movdir64b()
+
+# inform that some test cases involving 'mvodir64b' instruction will be skipped
+if (MOVDIR64B EQUAL 0)
+	message(STATUS "movdir64b instruction not available, some test cases will be skipped!")
+endif()
+
+execute(0 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BUILD}/data_mover_dml_memmove)
+
+execute_assert_pass(${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BUILD}/data_mover_dml_memmove)
+
+cleanup()
diff --git a/src/deps/miniasync/tests/data_mover_dml_memset/data_mover_dml_memset.c b/src/deps/miniasync/tests/data_mover_dml_memset/data_mover_dml_memset.c
new file mode 100644
index 0000000000000000000000000000000000000000..c6c7b47c918b484c37935361cd91545dc56e0685
--- /dev/null
+++ b/src/deps/miniasync/tests/data_mover_dml_memset/data_mover_dml_memset.c
@@ -0,0 +1,122 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/* Copyright 2022, Intel Corporation */
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <libminiasync.h>
+#include <libminiasync-vdm-dml.h>
+#include "test_helpers.h"
+#include "util_dml.h"
+
+static int
+dml_memset(enum data_mover_dml_type type, uint64_t flags, size_t size)
+{
+	/* Size should be dividable by 2 */
+	char *buf = malloc(size);
+
+	struct runtime *r = runtime_new();
+
+	struct data_mover_dml *dmd = data_mover_dml_new(type);
+	struct vdm *dml_mover_async = data_mover_dml_get_vdm(dmd);
+
+	/* First set the whole buffer with 'x' values */
+	struct vdm_operation_future set_x_fut =
+			vdm_memset(dml_mover_async, buf, 'x', size, flags);
+
+	runtime_wait(r, FUTURE_AS_RUNNABLE(&set_x_fut));
+
+	for (size_t i = 0; i < size; i++) {
+		UT_ASSERTeq(buf[i], 'x');
+	}
+
+	/* Then, set the buffer with 'y', and 'z' values in a 1:1 ratio */
+	struct vdm_operation_future set_y_fut =
+			vdm_memset(dml_mover_async, buf, 'y', size / 2, flags);
+	struct vdm_operation_future set_z_fut =
+			vdm_memset(dml_mover_async, buf + size / 2, 'z',
+					size / 2, flags);
+
+	struct future *futs[] = {
+		FUTURE_AS_RUNNABLE(&set_y_fut),
+		FUTURE_AS_RUNNABLE(&set_z_fut)
+	};
+	runtime_wait_multiple(r, futs, 2);
+
+	for (size_t i = 0; i < size / 2; i++) {
+		UT_ASSERTeq(buf[i], 'y');
+		UT_ASSERTeq(buf[i + size / 2], 'z');
+	}
+
+	data_mover_dml_delete(dmd);
+
+	runtime_delete(r);
+	free(buf);
+
+	return 0;
+}
+
+static int
+test_dml_basic_memset()
+{
+	return
+		dml_memset(DATA_MOVER_DML_SOFTWARE, 0, 8) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, 0, 16) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, 0, 32) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, 0, 64) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, 0, 128) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, 0, 256) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, 0, 512) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, 0, 1024);
+}
+
+static int
+test_dml_durable_flag_memset()
+{
+	return
+		dml_memset(DATA_MOVER_DML_SOFTWARE, VDM_F_MEM_DURABLE, 8) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, VDM_F_MEM_DURABLE, 16) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, VDM_F_MEM_DURABLE, 32) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, VDM_F_MEM_DURABLE, 64) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, VDM_F_MEM_DURABLE, 128) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, VDM_F_MEM_DURABLE, 256) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, VDM_F_MEM_DURABLE, 512) ||
+		dml_memset(DATA_MOVER_DML_SOFTWARE, VDM_F_MEM_DURABLE, 1024);
+}
+
+static int
+test_dml_hw_path_flag_memset()
+{
+	return
+		dml_memset(DATA_MOVER_DML_HARDWARE, 0, 8) ||
+		dml_memset(DATA_MOVER_DML_HARDWARE, 0, 16) ||
+		dml_memset(DATA_MOVER_DML_HARDWARE, 0, 32) ||
+		dml_memset(DATA_MOVER_DML_HARDWARE, 0, 64) ||
+		dml_memset(DATA_MOVER_DML_HARDWARE, 0, 128) ||
+		dml_memset(DATA_MOVER_DML_HARDWARE, 0, 256) ||
+		dml_memset(DATA_MOVER_DML_HARDWARE, 0, 512) ||
+		dml_memset(DATA_MOVER_DML_HARDWARE, 0, 1024);
+}
+
+int
+main(void)
+{
+	int ret = test_dml_basic_memset();
+	if (ret)
+		return ret;
+
+	ret = test_dml_durable_flag_memset();
+	if (ret)
+		return ret;
+
+	if (util_dml_check_hw_available() == 0) {
+		ret = test_dml_hw_path_flag_memset();
+		if (ret)
+			return ret;
+	} else {
+		UT_LOG_SKIP("test_dml_hw_path_flag_memset");
+	}
+
+	return 0;
+}
diff --git a/src/deps/miniasync/tests/data_mover_dml_memset/test_data_mover_dml_memset.cmake b/src/deps/miniasync/tests/data_mover_dml_memset/test_data_mover_dml_memset.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..dfcc3bac0c947f546ab2226927b12ae36774b2b1
--- /dev/null
+++ b/src/deps/miniasync/tests/data_mover_dml_memset/test_data_mover_dml_memset.cmake
@@ -0,0 +1,22 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright 2022, Intel Corporation
+
+# an example for the data_mover_dml test case
+
+include(${SRC_DIR}/cmake/test_helpers.cmake)
+
+setup()
+
+# check for MOVDIR64B instruction
+check_movdir64b()
+
+# inform that some test cases involving 'mvodir64b' instruction will be skipped
+if (MOVDIR64B EQUAL 0)
+	message(STATUS "movdir64b instruction not available, some test cases will be skipped!")
+endif()
+
+execute(0 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BUILD}/data_mover_dml_memset)
+
+execute_assert_pass(${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BUILD}/data_mover_dml_memset)
+
+cleanup()
diff --git a/src/deps/miniasync/tests/future/test_future.c b/src/deps/miniasync/tests/future/test_future.c
index 6efe045fc6b2b9e00f6e3969ed71ebb058570ebd..ae44d6fe0141d32bd8e92721e96bba7418274e53 100644
--- a/src/deps/miniasync/tests/future/test_future.c
+++ b/src/deps/miniasync/tests/future/test_future.c
@@ -3,6 +3,7 @@
 
 #include "libminiasync/future.h"
 #include "test_helpers.h"
+#include "core/util.h"
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -290,7 +291,7 @@ test_lazy_init()
 {
 	struct multiply_up_down_fut fut = async_multiply_up_down(5, 5);
 	while (future_poll(FUTURE_AS_RUNNABLE(&fut), FAKE_NOTIFIER) !=
-		FUTURE_STATE_COMPLETE) { _mm_pause(); }
+		FUTURE_STATE_COMPLETE) { WAIT(); }
 	struct multiply_up_down_output *mud_output = FUTURE_OUTPUT(&fut);
 	UT_ASSERTeq(mud_output->result_sum, 2);
 	struct multiply_up_down_data *mud_data = FUTURE_DATA(&fut);
diff --git a/src/deps/miniasync/tests/memmove_sync/memmove_sync.c b/src/deps/miniasync/tests/memmove_sync/memmove_sync.c
index 6e059752be2f5d16ad8df5cfc683d5e0b93f598e..1662bcf5cc59a05107d01d7939eab34cf4ef8e8f 100644
--- a/src/deps/miniasync/tests/memmove_sync/memmove_sync.c
+++ b/src/deps/miniasync/tests/memmove_sync/memmove_sync.c
@@ -165,6 +165,11 @@ test_memmove_overlapping(size_t size)
  */
 int test_supported_flags() {
 	struct data_mover_sync *dms = data_mover_sync_new();
+	if (dms == NULL) {
+		fprintf(stderr,
+				"error while creating synchronous data mover");
+		return 1;
+	}
 	struct vdm *sync_mover = data_mover_sync_get_vdm(dms);
 	int ret = test_flag(sync_mover, VDM_F_MEM_DURABLE, 0);
 	ret += test_flag(sync_mover, VDM_F_NO_CACHE_HINT, 0);
diff --git a/src/deps/miniasync/tests/memmove_threads/memmove_threads.c b/src/deps/miniasync/tests/memmove_threads/memmove_threads.c
index 86720dc748395eae7dc4f9748ac13c304e6addcf..09f78c2e9337848fa7cd89a26b0c2575c6c125e7 100644
--- a/src/deps/miniasync/tests/memmove_threads/memmove_threads.c
+++ b/src/deps/miniasync/tests/memmove_threads/memmove_threads.c
@@ -146,6 +146,11 @@ test_thread_memmove_multiple(size_t str_len)
  */
 int test_supported_flags() {
 	struct data_mover_threads *dmt = data_mover_threads_default();
+	if (dmt == NULL) {
+		fprintf(stderr,
+				"error while creating threads data mover");
+		return 1;
+	}
 	struct vdm *thread_mover = data_mover_threads_get_vdm(dmt);
 	int ret = test_flag(thread_mover, VDM_F_MEM_DURABLE, 0);
 	data_mover_threads_delete(dmt);
diff --git a/src/deps/miniasync/tests/test_helpers.h b/src/deps/miniasync/tests/test_helpers.h
index 8d5464e9f2b908fb9258c1caf4ba74057650e55c..1abca4f3732b546143d736c2539c629ebdcad6a3 100644
--- a/src/deps/miniasync/tests/test_helpers.h
+++ b/src/deps/miniasync/tests/test_helpers.h
@@ -46,6 +46,11 @@
 		(unsigned long long)(min), (unsigned long long)(max));\
 } while (/*CONSTCOND*/0)
 
+#define UT_LOG_SKIP(testcase) do {\
+	fprintf(stdout, "SKIP: " testcase " test case");\
+	fprintf(stdout, "\n");\
+} while (/*CONSTCOND*/0)
+
 static inline int
 test_flag(struct vdm *vdm, unsigned flag, int expected_value)
 {
diff --git a/src/deps/miniasync/tests/vdm/test_vdm.c b/src/deps/miniasync/tests/vdm/test_vdm.c
index d1e9ebd57c875fe72d06477daf15ec1f51c8a382..48b0f278fae79d04f2ba39516124fed678e28c9e 100644
--- a/src/deps/miniasync/tests/vdm/test_vdm.c
+++ b/src/deps/miniasync/tests/vdm/test_vdm.c
@@ -36,7 +36,7 @@ async_alloc(size_t size)
 	fut.data.n = size;
 	FUTURE_INIT(&fut, alloc_impl);
 	return fut;
-};
+}
 
 struct strdup_data {
 	FUTURE_CHAIN_ENTRY(struct alloc_fut, alloc);
diff --git a/src/deps/miniasync/tests/vdm_operation_future_poll/test_vdm_operation_future_poll.cmake b/src/deps/miniasync/tests/vdm_operation_future_poll/test_vdm_operation_future_poll.cmake
index 6278e7d67167b15e6a8fa208caf230051191d269..c909a5a0665daa57aea9455c7378e1ecf66f0ddb 100644
--- a/src/deps/miniasync/tests/vdm_operation_future_poll/test_vdm_operation_future_poll.cmake
+++ b/src/deps/miniasync/tests/vdm_operation_future_poll/test_vdm_operation_future_poll.cmake
@@ -5,12 +5,8 @@ include(${SRC_DIR}/cmake/test_helpers.cmake)
 
 setup()
 
-# check for MOVDIR64B instruction
-check_movdir64b()
+execute(0 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BUILD}/vdm_operation_future_poll)
 
-# execute DML tests only if MOVDIR64B instruction is available
-if (MOVDIR64B EQUAL 1)
-    execute(0 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BUILD}/vdm_operation_future_poll)
-endif()
+execute_assert_pass(${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BUILD}/vdm_operation_future_poll)
 
 cleanup()