Index | Thread | Search

From:
Stuart Henderson <stu@spacehopper.org>
Subject:
Re: [NEW] textproc/libunicode
To:
SASANO Takayoshi <uaa@mx5.nisiq.net>
Cc:
ports@openbsd.org
Date:
Sat, 13 Jul 2024 13:35:06 +0100

Download raw body.

Thread
On 2024/07/13 18:37, SASANO Takayoshi wrote:
> Hi,
> 
> > Looks like this is, at best, ONLY_FOR_ARCHS=amd64 aarch64
> 
> How about to disable intrinsics at configure like this?
> Even if poorer performance, I prefer to use the library with wider
> architecture.

> +			-DLIBUNICODE_USE_INTRINSICS=OFF \

There's no such cmake flag in 0.4.0.

This diff builds on i386, I tidied a few unnecessary Makefile variables
while there. ok?

Index: Makefile
===================================================================
RCS file: /cvs/ports/textproc/libunicode/Makefile,v
diff -u -p -r1.1 Makefile
--- Makefile	9 Jul 2024 13:56:10 -0000	1.1
+++ Makefile	13 Jul 2024 12:12:25 -0000
@@ -1,11 +1,9 @@
 COMMENT =	Unicode support to C++ with simple and easy APIs

-V = 0.4.0
-DISTNAME =	libunicode-${V}
-
 GH_ACCOUNT =	contour-terminal
 GH_PROJECT =	libunicode
-GH_TAGNAME =	v${V}
+GH_TAGNAME =	v0.4.0
+REVISION =	0

 SHARED_LIBS  =	unicode		0.0 # 0.0
 SHARED_LIBS +=	unicode_loader	0.0 # 0.0
@@ -36,5 +34,9 @@ CONFIGURE_STYLE =	cmake

 CONFIGURE_ARGS =	-DLIBUNICODE_TESTING=OFF \
 			-DLIBUNICODE_UCD_DIR=${LOCALBASE}/share/unicode/ucd
+
+.if ${MACHINE_ARCH} != "amd64" && ${MACHINE_ARCH} != "aarch64"
+CONFIGURE_ARGS +=	-DLIBUNICODE_USE_INTRINSICS=OFF
+.endif

 .include <bsd.port.mk>
Index: patches/patch-CMakeLists_txt
===================================================================
RCS file: patches/patch-CMakeLists_txt
diff -N patches/patch-CMakeLists_txt
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-CMakeLists_txt	13 Jul 2024 12:12:25 -0000
@@ -0,0 +1,16 @@
+From ad31f78a116c844e5c00712b3dcd258c76586e57 Mon Sep 17 00:00:00 2001
+From: Christian Parpart <christian@parpart.family>
+Date: Tue, 26 Dec 2023 10:07:16 +0100
+Subject: [PATCH] Make usage of SSE extension optional
+
+Index: CMakeLists.txt
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -43,6 +43,7 @@ option(LIBUNICODE_EXAMPLES "libunicode: Enables buildi
+ option(LIBUNICODE_TESTING "libunicode: Enables building of unittests for libunicode [default: ${MASTER_PROJECT}" ${MASTER_PROJECT})
+ option(LIBUNICODE_TOOLS "libunicode: Builds CLI tools [default: ${MASTER_PROJECT}]" ${MASTER_PROJECT})
+ option(LIBUNICODE_BUILD_STATIC "libunicode: provide static library instead of dynamic [default: ${LIBUNICODE_BUILD_STATIC_DEFAULT}]" ${LIBUNICODE_BUILD_STATIC_DEFAULT})
++option(LIBUNICODE_USE_INTRINSICS "libunicode: Use SIMD extenstion during text read [default: ON]" ON)
+
+ include(ThirdParties)
+
Index: patches/patch-src_libunicode_CMakeLists_txt
===================================================================
RCS file: patches/patch-src_libunicode_CMakeLists_txt
diff -N patches/patch-src_libunicode_CMakeLists_txt
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_libunicode_CMakeLists_txt	13 Jul 2024 12:12:25 -0000
@@ -0,0 +1,19 @@
+From ad31f78a116c844e5c00712b3dcd258c76586e57 Mon Sep 17 00:00:00 2001
+From: Christian Parpart <christian@parpart.family>
+Date: Tue, 26 Dec 2023 10:07:16 +0100
+Subject: [PATCH] Make usage of SSE extension optional
+
+Index: src/libunicode/CMakeLists.txt
+--- src/libunicode/CMakeLists.txt.orig
++++ src/libunicode/CMakeLists.txt
+@@ -110,6 +110,10 @@ add_library(unicode ${LIBUNICODE_LIB_MODE}
+     codepoint_properties_names.cpp
+ )
+
++if(LIBUNICODE_USE_INTRINSICS)
++    target_compile_definitions(unicode PRIVATE USE_INTRINSICS)
++endif()
++
+ set(public_headers
+     capi.h
+     codepoint_properties.h
Index: patches/patch-src_libunicode_scan_cpp
===================================================================
RCS file: patches/patch-src_libunicode_scan_cpp
diff -N patches/patch-src_libunicode_scan_cpp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_libunicode_scan_cpp	13 Jul 2024 12:12:25 -0000
@@ -0,0 +1,24 @@
+From ad31f78a116c844e5c00712b3dcd258c76586e57 Mon Sep 17 00:00:00 2001
+From: Christian Parpart <christian@parpart.family>
+Date: Tue, 26 Dec 2023 10:07:16 +0100
+Subject: [PATCH] Make usage of SSE extension optional
+
+Index: src/libunicode/scan.cpp
+--- src/libunicode/scan.cpp.orig
++++ src/libunicode/scan.cpp
+@@ -81,6 +81,7 @@ size_t detail::scan_for_text_ascii(string_view text, s
+     auto input = text.data();
+     auto const end = text.data() + min(text.size(), maxColumnCount);
+
++#if defined(USE_INTRINSICS)
+     intrinsics::m128i const ControlCodeMax = intrinsics::set1_epi8(0x20); // 0..0x1F
+     intrinsics::m128i const Complex = intrinsics::set1_epi8(-128);        // equals to 0x80 (0b1000'0000)
+
+@@ -99,6 +100,7 @@ size_t detail::scan_for_text_ascii(string_view text, s
+         }
+         input += sizeof(intrinsics::m128i);
+     }
++#endif
+
+     while (input != end && is_ascii(*input))
+         ++input;