add test for loadn
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 48c2731..0b9429b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -142,7 +142,6 @@
     ADD_EXECUTABLE(test-fusion.t
         deps/picotest/picotest.c
         lib/picotls.c
-        lib/fusion.c
         t/fusion.c)
     TARGET_LINK_LIBRARIES(test-fusion.t picotls-minicrypto)
     SET_TARGET_PROPERTIES(test-fusion.t PROPERTIES COMPILE_FLAGS "-mavx2 -maes -mpclmul")
diff --git a/picotls.xcodeproj/project.pbxproj b/picotls.xcodeproj/project.pbxproj
index dcc38cb..2200419 100644
--- a/picotls.xcodeproj/project.pbxproj
+++ b/picotls.xcodeproj/project.pbxproj
@@ -117,7 +117,6 @@
 		E9B43DE324619D7E00824E51 /* fusion.c in Sources */ = {isa = PBXBuildFile; fileRef = E9B43DE224619D7E00824E51 /* fusion.c */; };
 		E9B43DE424619D7E00824E51 /* fusion.c in Sources */ = {isa = PBXBuildFile; fileRef = E9B43DE224619D7E00824E51 /* fusion.c */; };
 		E9B43DE524619E1600824E51 /* minicrypto.c in Sources */ = {isa = PBXBuildFile; fileRef = 1059003D1DC8D4E300FB4085 /* minicrypto.c */; };
-		E9B43DE724652D2000824E51 /* fusion.c in Sources */ = {isa = PBXBuildFile; fileRef = E9B43DBF24619D1700824E51 /* fusion.c */; };
 		E9B43E0C24689E8900824E51 /* fusionbench.c in Sources */ = {isa = PBXBuildFile; fileRef = E9B43E0B24689E8900824E51 /* fusionbench.c */; };
 		E9B43E0D24689EDA00824E51 /* fusion.c in Sources */ = {isa = PBXBuildFile; fileRef = E9B43DBF24619D1700824E51 /* fusion.c */; };
 		E9B43E0E24689F9500824E51 /* picotls-probes.d in Sources */ = {isa = PBXBuildFile; fileRef = E95EBCC0227B71170022C32D /* picotls-probes.d */; };
@@ -1009,7 +1008,6 @@
 			files = (
 				E9B43DC224619D5100824E51 /* picotls-probes.d in Sources */,
 				E9B43E1024689FE700824E51 /* picotls.c in Sources */,
-				E9B43DE724652D2000824E51 /* fusion.c in Sources */,
 				E9B43DE424619D7E00824E51 /* fusion.c in Sources */,
 				E9B43DC824619D5100824E51 /* picotest.c in Sources */,
 			);
diff --git a/t/fusion.c b/t/fusion.c
index 7df7e3a..c51e88e 100644
--- a/t/fusion.c
+++ b/t/fusion.c
@@ -25,6 +25,7 @@
 #include "picotls/fusion.h"
 #include "picotls/minicrypto.h"
 #include "../deps/picotest/picotest.h"
+#include "../lib/fusion.c"
 
 static const char *tostr(const void *_p, size_t len)
 {
@@ -47,9 +48,26 @@
     return buf;
 }
 
+static void test_loadn(void)
+{
+    uint8_t buf[8192] = {};
+
+    for (size_t off = 0; off < 8192 - 15; ++off) {
+        uint8_t *src = buf + off;
+        memcpy(src, "hello world12345", 16);
+        __m128i v = loadn(src, 11);
+        if (memcmp(&v, "hello world\0\0\0\0\0", 16) != 0) {
+            ok(!"fail");
+            return;
+        }
+        memset(src, 0, 11);
+    }
+    ok(!!"success");
+}
+
 static const uint8_t zero[16384] = {};
 
-static void ecb(void)
+static void test_ecb(void)
 {
     ptls_fusion_aesecb_context_t ecb;
     uint8_t encrypted[16];
@@ -248,7 +266,8 @@
         return done_testing();
     }
 
-    subtest("ecb", ecb);
+    subtest("loadn", test_loadn);
+    subtest("ecb", test_ecb);
     subtest("gcm-basic", gcm_basic);
     subtest("gcm-capacity", gcm_capacity);
     subtest("gcm-test-vectors", gcm_test_vectors);