Skip to content

Commit 13a7399

Browse files
committed
deps,src: use SIMD for normal base64 encoding
nodejs/node#39775
1 parent 1845867 commit 13a7399

File tree

1 file changed

+229
-2
lines changed

1 file changed

+229
-2
lines changed

patches/node/build_add_gn_build_files.patch

Lines changed: 229 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ This adds GN build files for Node, so we don't have to build with GYP.
77

88
diff --git a/BUILD.gn b/BUILD.gn
99
new file mode 100644
10-
index 0000000000000000000000000000000000000000..a47875642d8f825c84ba1e82e3892a97e98e76e4
10+
index 0000000000000000000000000000000000000000..bc826db98fff63e9c87332c45928e9118b8a0732
1111
--- /dev/null
1212
+++ b/BUILD.gn
13-
@@ -0,0 +1,438 @@
13+
@@ -0,0 +1,439 @@
1414
+import("//v8/gni/v8.gni")
1515
+import("node.gni")
1616
+
@@ -224,6 +224,7 @@ index 0000000000000000000000000000000000000000..a47875642d8f825c84ba1e82e3892a97
224224
+ ":node_js2c",
225225
+ "deps/googletest:gtest",
226226
+ "deps/uvwasi",
227+
+ "deps/base64",
227228
+ "//third_party/zlib",
228229
+ "//third_party/brotli:dec",
229230
+ "//third_party/brotli:enc",
@@ -449,6 +450,232 @@ index 0000000000000000000000000000000000000000..a47875642d8f825c84ba1e82e3892a97
449450
+ ":tar_headers",
450451
+ ]
451452
+}
453+
diff --git a/deps/base64/BUILD.gn b/deps/base64/BUILD.gn
454+
new file mode 100644
455+
index 0000000000000000000000000000000000000000..d580599f301b5ba8d8cc004ef60938ef102ff8e0
456+
--- /dev/null
457+
+++ b/deps/base64/BUILD.gn
458+
@@ -0,0 +1,192 @@
459+
+config("base64_config") {
460+
+ include_dirs = [
461+
+ "base64/include",
462+
+ "base64/lib",
463+
+ ]
464+
+
465+
+ defines = [ "BASE64_STATIC_DEFINE" ]
466+
+}
467+
+
468+
+static_library("base64") {
469+
+ defines = [ "BASE64_STATIC_DEFINE" ]
470+
+ deps = []
471+
+
472+
+ public_configs = [ ":base64_config" ]
473+
+
474+
+ include_dirs = [
475+
+ "base64/include",
476+
+ "base64/lib",
477+
+ ]
478+
+
479+
+ sources = [
480+
+ "base64/include/libbase64.h",
481+
+ "base64/lib/arch/generic/codec.c",
482+
+ "base64/lib/tables/tables.c",
483+
+ "base64/lib/codec_choose.c",
484+
+ "base64/lib/codecs.h",
485+
+ "base64/lib/lib.c",
486+
+ ]
487+
+
488+
+ if (target_cpu == "arm") {
489+
+ defines += ["HAVE_NEON32=1"]
490+
+ deps += [":base64_neon32"]
491+
+ } else {
492+
+ sources += [ "base64/lib/arch/neon32/neon32_codec.c" ]
493+
+ }
494+
+
495+
+ if (target_cpu == "arm64") {
496+
+ defines += ["HAVE_NEON64=1"]
497+
+ deps += [":base64_neon64"]
498+
+ } else {
499+
+ sources += [ "base64/lib/arch/neon64/neon64_codec.c" ]
500+
+ }
501+
+
502+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
503+
+ defines += [
504+
+ "HAVE_SSSE3=1",
505+
+ "HAVE_SSE41=1",
506+
+ "HAVE_SSE42=1",
507+
+ "HAVE_AVX=1",
508+
+ "HAVE_AVX2=1",
509+
+ ]
510+
+
511+
+ deps += [
512+
+ ":base64_ssse3",
513+
+ ":base64_sse41",
514+
+ ":base64_sse42",
515+
+ ":base64_avx",
516+
+ ":base64_avx2",
517+
+ ]
518+
+ } else {
519+
+ sources += [
520+
+ "base64/lib/arch/ssse3/ssse3_codec.c",
521+
+ "base64/lib/arch/sse41/sse41_codec.c",
522+
+ "base64/lib/arch/sse42/sse42_codec.c",
523+
+ "base64/lib/arch/avx/avx_codec.c",
524+
+ "base64/lib/arch/avx2/avx2_codec.c",
525+
+ ]
526+
+ }
527+
+}
528+
+
529+
+static_library("base64_ssse3") {
530+
+ include_dirs = [
531+
+ "base64/include",
532+
+ "base64/lib"
533+
+ ]
534+
+
535+
+ defines = [
536+
+ "BASE64_STATIC_DEFINE",
537+
+ "HAVE_SSSE3=1"
538+
+ ]
539+
+
540+
+ sources = [ "base64/lib/arch/ssse3/ssse3_codec.c" ]
541+
+
542+
+ if (!is_win) {
543+
+ cflags = ["-mssse3"]
544+
+ }
545+
+}
546+
+
547+
+
548+
+static_library("base64_sse41") {
549+
+ include_dirs = [
550+
+ "base64/include",
551+
+ "base64/lib"
552+
+ ]
553+
+
554+
+ defines = [
555+
+ "BASE64_STATIC_DEFINE",
556+
+ "HAVE_SSE41=1"
557+
+ ]
558+
+
559+
+ sources = [ "base64/lib/arch/sse41/sse41_codec.c" ]
560+
+
561+
+ if (!is_win) {
562+
+ cflags = ["-msse4.1"]
563+
+ }
564+
+}
565+
+
566+
+static_library("base64_sse42") {
567+
+ include_dirs = [
568+
+ "base64/include",
569+
+ "base64/lib"
570+
+ ]
571+
+
572+
+ defines = [
573+
+ "BASE64_STATIC_DEFINE",
574+
+ "HAVE_SSE42=1"
575+
+ ]
576+
+
577+
+ sources = [ "base64/lib/arch/sse42/sse42_codec.c" ]
578+
+
579+
+ if (!is_win) {
580+
+ cflags = ["-msse4.2"]
581+
+ }
582+
+}
583+
+
584+
+static_library("base64_avx") {
585+
+ include_dirs = [
586+
+ "base64/include",
587+
+ "base64/lib"
588+
+ ]
589+
+
590+
+ defines = [
591+
+ "BASE64_STATIC_DEFINE",
592+
+ "HAVE_AVX=1"
593+
+ ]
594+
+
595+
+ sources = [ "base64/lib/arch/avx/avx_codec.c" ]
596+
+
597+
+ if (!is_win) {
598+
+ cflags = ["-mavx"]
599+
+ }
600+
+}
601+
+
602+
+static_library("base64_avx2") {
603+
+ include_dirs = [
604+
+ "base64/include",
605+
+ "base64/lib"
606+
+ ]
607+
+
608+
+ defines = [
609+
+ "BASE64_STATIC_DEFINE",
610+
+ "HAVE_AVX2=1"
611+
+ ]
612+
+
613+
+ sources = [ "base64/lib/arch/avx2/avx2_codec.c" ]
614+
+
615+
+ if (!is_win) {
616+
+ cflags = ["-mavx2"]
617+
+ }
618+
+}
619+
+
620+
+static_library("base64_neon32") {
621+
+ include_dirs = [
622+
+ "base64/include",
623+
+ "base64/lib"
624+
+ ]
625+
+
626+
+ defines = [
627+
+ "BASE64_STATIC_DEFINE",
628+
+ "HAVE_NEON32=1"
629+
+ ]
630+
+
631+
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
632+
+
633+
+ sources = [ "base64/lib/arch/neon32/neon32_codec.c" ]
634+
+}
635+
+
636+
+static_library("base64_neon64") {
637+
+ include_dirs = [
638+
+ "base64/include",
639+
+ "base64/lib"
640+
+ ]
641+
+
642+
+ defines = [
643+
+ "BASE64_STATIC_DEFINE",
644+
+ "HAVE_NEON64=1"
645+
+ ]
646+
+
647+
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
648+
+
649+
+ sources = [ "base64/lib/arch/neon64/neon64_codec.c" ]
650+
+}
651+
diff --git a/deps/base64/base64/lib/arch/avx/codec.c b/deps/base64/base64/lib/arch/avx/avx_codec.c
652+
similarity index 100%
653+
rename from deps/base64/base64/lib/arch/avx/codec.c
654+
rename to deps/base64/base64/lib/arch/avx/avx_codec.c
655+
diff --git a/deps/base64/base64/lib/arch/avx2/codec.c b/deps/base64/base64/lib/arch/avx2/avx2_codec.c
656+
similarity index 100%
657+
rename from deps/base64/base64/lib/arch/avx2/codec.c
658+
rename to deps/base64/base64/lib/arch/avx2/avx2_codec.c
659+
diff --git a/deps/base64/base64/lib/arch/neon32/codec.c b/deps/base64/base64/lib/arch/neon32/neon32_codec.c
660+
similarity index 100%
661+
rename from deps/base64/base64/lib/arch/neon32/codec.c
662+
rename to deps/base64/base64/lib/arch/neon32/neon32_codec.c
663+
diff --git a/deps/base64/base64/lib/arch/neon64/codec.c b/deps/base64/base64/lib/arch/neon64/neon64_codec.c
664+
similarity index 100%
665+
rename from deps/base64/base64/lib/arch/neon64/codec.c
666+
rename to deps/base64/base64/lib/arch/neon64/neon64_codec.c
667+
diff --git a/deps/base64/base64/lib/arch/sse41/codec.c b/deps/base64/base64/lib/arch/sse41/sse41_codec.c
668+
similarity index 100%
669+
rename from deps/base64/base64/lib/arch/sse41/codec.c
670+
rename to deps/base64/base64/lib/arch/sse41/sse41_codec.c
671+
diff --git a/deps/base64/base64/lib/arch/sse42/codec.c b/deps/base64/base64/lib/arch/sse42/sse42_codec.c
672+
similarity index 100%
673+
rename from deps/base64/base64/lib/arch/sse42/codec.c
674+
rename to deps/base64/base64/lib/arch/sse42/sse42_codec.c
675+
diff --git a/deps/base64/base64/lib/arch/ssse3/codec.c b/deps/base64/base64/lib/arch/ssse3/ssse3_codec.c
676+
similarity index 100%
677+
rename from deps/base64/base64/lib/arch/ssse3/codec.c
678+
rename to deps/base64/base64/lib/arch/ssse3/ssse3_codec.c
452679
diff --git a/deps/cares/BUILD.gn b/deps/cares/BUILD.gn
453680
new file mode 100644
454681
index 0000000000000000000000000000000000000000..71a37834f4e693c190eb7e7d04e3f5ce67c487ad

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy