Skip to content

Commit 33870aa

Browse files
committed
deps,src: use SIMD for normal base64 encoding
nodejs/node#39775
1 parent 3d3d0f7 commit 33870aa

File tree

1 file changed

+231
-2
lines changed

1 file changed

+231
-2
lines changed

patches/node/build_add_gn_build_files.patch

Lines changed: 231 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,234 @@ 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..196d074b914d0a4394c4fb9ca6c4a063a41db72a
456+
--- /dev/null
457+
+++ b/deps/base64/BUILD.gn
458+
@@ -0,0 +1,194 @@
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+
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
480+
+
481+
+ sources = [
482+
+ "base64/include/libbase64.h",
483+
+ "base64/lib/arch/generic/codec.c",
484+
+ "base64/lib/tables/tables.c",
485+
+ "base64/lib/codec_choose.c",
486+
+ "base64/lib/codecs.h",
487+
+ "base64/lib/lib.c",
488+
+ ]
489+
+
490+
+ if (target_cpu == "arm") {
491+
+ defines += ["HAVE_NEON32=1"]
492+
+ deps += [":base64_neon32"]
493+
+ } else {
494+
+ sources += [ "base64/lib/arch/neon32/neon32_codec.c" ]
495+
+ }
496+
+
497+
+ if (target_cpu == "arm64") {
498+
+ defines += ["HAVE_NEON64=1"]
499+
+ deps += [":base64_neon64"]
500+
+ } else {
501+
+ sources += [ "base64/lib/arch/neon64/neon64_codec.c" ]
502+
+ }
503+
+
504+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
505+
+ defines += [
506+
+ "HAVE_SSSE3=1",
507+
+ "HAVE_SSE41=1",
508+
+ "HAVE_SSE42=1",
509+
+ "HAVE_AVX=1",
510+
+ "HAVE_AVX2=1",
511+
+ ]
512+
+
513+
+ deps += [
514+
+ ":base64_ssse3",
515+
+ ":base64_sse41",
516+
+ ":base64_sse42",
517+
+ ":base64_avx",
518+
+ ":base64_avx2",
519+
+ ]
520+
+ } else {
521+
+ sources += [
522+
+ "base64/lib/arch/ssse3/ssse3_codec.c",
523+
+ "base64/lib/arch/sse41/sse41_codec.c",
524+
+ "base64/lib/arch/sse42/sse42_codec.c",
525+
+ "base64/lib/arch/avx/avx_codec.c",
526+
+ "base64/lib/arch/avx2/avx2_codec.c",
527+
+ ]
528+
+ }
529+
+}
530+
+
531+
+static_library("base64_ssse3") {
532+
+ include_dirs = [
533+
+ "base64/include",
534+
+ "base64/lib"
535+
+ ]
536+
+
537+
+ defines = [
538+
+ "BASE64_STATIC_DEFINE",
539+
+ "HAVE_SSSE3=1"
540+
+ ]
541+
+
542+
+ sources = [ "base64/lib/arch/ssse3/ssse3_codec.c" ]
543+
+
544+
+ if (!is_win) {
545+
+ cflags = ["-mssse3"]
546+
+ }
547+
+}
548+
+
549+
+
550+
+static_library("base64_sse41") {
551+
+ include_dirs = [
552+
+ "base64/include",
553+
+ "base64/lib"
554+
+ ]
555+
+
556+
+ defines = [
557+
+ "BASE64_STATIC_DEFINE",
558+
+ "HAVE_SSE41=1"
559+
+ ]
560+
+
561+
+ sources = [ "base64/lib/arch/sse41/sse41_codec.c" ]
562+
+
563+
+ if (!is_win) {
564+
+ cflags = ["-msse4.1"]
565+
+ }
566+
+}
567+
+
568+
+static_library("base64_sse42") {
569+
+ include_dirs = [
570+
+ "base64/include",
571+
+ "base64/lib"
572+
+ ]
573+
+
574+
+ defines = [
575+
+ "BASE64_STATIC_DEFINE",
576+
+ "HAVE_SSE42=1"
577+
+ ]
578+
+
579+
+ sources = [ "base64/lib/arch/sse42/sse42_codec.c" ]
580+
+
581+
+ if (!is_win) {
582+
+ cflags = ["-msse4.2"]
583+
+ }
584+
+}
585+
+
586+
+static_library("base64_avx") {
587+
+ include_dirs = [
588+
+ "base64/include",
589+
+ "base64/lib"
590+
+ ]
591+
+
592+
+ defines = [
593+
+ "BASE64_STATIC_DEFINE",
594+
+ "HAVE_AVX=1"
595+
+ ]
596+
+
597+
+ sources = [ "base64/lib/arch/avx/avx_codec.c" ]
598+
+
599+
+ if (!is_win) {
600+
+ cflags = ["-mavx"]
601+
+ }
602+
+}
603+
+
604+
+static_library("base64_avx2") {
605+
+ include_dirs = [
606+
+ "base64/include",
607+
+ "base64/lib"
608+
+ ]
609+
+
610+
+ defines = [
611+
+ "BASE64_STATIC_DEFINE",
612+
+ "HAVE_AVX2=1"
613+
+ ]
614+
+
615+
+ sources = [ "base64/lib/arch/avx2/avx2_codec.c" ]
616+
+
617+
+ if (!is_win) {
618+
+ cflags = ["-mavx2"]
619+
+ }
620+
+}
621+
+
622+
+static_library("base64_neon32") {
623+
+ include_dirs = [
624+
+ "base64/include",
625+
+ "base64/lib"
626+
+ ]
627+
+
628+
+ defines = [
629+
+ "BASE64_STATIC_DEFINE",
630+
+ "HAVE_NEON32=1"
631+
+ ]
632+
+
633+
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
634+
+
635+
+ sources = [ "base64/lib/arch/neon32/neon32_codec.c" ]
636+
+}
637+
+
638+
+static_library("base64_neon64") {
639+
+ include_dirs = [
640+
+ "base64/include",
641+
+ "base64/lib"
642+
+ ]
643+
+
644+
+ defines = [
645+
+ "BASE64_STATIC_DEFINE",
646+
+ "HAVE_NEON64=1"
647+
+ ]
648+
+
649+
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
650+
+
651+
+ sources = [ "base64/lib/arch/neon64/neon64_codec.c" ]
652+
+}
653+
diff --git a/deps/base64/base64/lib/arch/avx/codec.c b/deps/base64/base64/lib/arch/avx/avx_codec.c
654+
similarity index 100%
655+
rename from deps/base64/base64/lib/arch/avx/codec.c
656+
rename to deps/base64/base64/lib/arch/avx/avx_codec.c
657+
diff --git a/deps/base64/base64/lib/arch/avx2/codec.c b/deps/base64/base64/lib/arch/avx2/avx2_codec.c
658+
similarity index 100%
659+
rename from deps/base64/base64/lib/arch/avx2/codec.c
660+
rename to deps/base64/base64/lib/arch/avx2/avx2_codec.c
661+
diff --git a/deps/base64/base64/lib/arch/neon32/codec.c b/deps/base64/base64/lib/arch/neon32/neon32_codec.c
662+
similarity index 100%
663+
rename from deps/base64/base64/lib/arch/neon32/codec.c
664+
rename to deps/base64/base64/lib/arch/neon32/neon32_codec.c
665+
diff --git a/deps/base64/base64/lib/arch/neon64/codec.c b/deps/base64/base64/lib/arch/neon64/neon64_codec.c
666+
similarity index 100%
667+
rename from deps/base64/base64/lib/arch/neon64/codec.c
668+
rename to deps/base64/base64/lib/arch/neon64/neon64_codec.c
669+
diff --git a/deps/base64/base64/lib/arch/sse41/codec.c b/deps/base64/base64/lib/arch/sse41/sse41_codec.c
670+
similarity index 100%
671+
rename from deps/base64/base64/lib/arch/sse41/codec.c
672+
rename to deps/base64/base64/lib/arch/sse41/sse41_codec.c
673+
diff --git a/deps/base64/base64/lib/arch/sse42/codec.c b/deps/base64/base64/lib/arch/sse42/sse42_codec.c
674+
similarity index 100%
675+
rename from deps/base64/base64/lib/arch/sse42/codec.c
676+
rename to deps/base64/base64/lib/arch/sse42/sse42_codec.c
677+
diff --git a/deps/base64/base64/lib/arch/ssse3/codec.c b/deps/base64/base64/lib/arch/ssse3/ssse3_codec.c
678+
similarity index 100%
679+
rename from deps/base64/base64/lib/arch/ssse3/codec.c
680+
rename to deps/base64/base64/lib/arch/ssse3/ssse3_codec.c
452681
diff --git a/deps/cares/BUILD.gn b/deps/cares/BUILD.gn
453682
new file mode 100644
454683
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