Re: [PATCH] Hex-coding optimizations using SVE on ARM.
Chiranmoy.Bhattacharya@fujitsu.com <chiranmoy.bhattacharya@fujitsu.com>
From: "Chiranmoy.Bhattacharya@fujitsu.com" <Chiranmoy.Bhattacharya@fujitsu.com>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, David Rowley <dgrowleyml@gmail.com>, John
Naylor <johncnaylorls@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>, "Devanga.Susmitha@fujitsu.com" <Devanga.Susmitha@fujitsu.com>, "Ragesh.Hajela@fujitsu.com" <Ragesh.Hajela@fujitsu.com>
Date: 2025-02-19T08:19:18Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Optimize hex_encode() and hex_decode() using SIMD.
- ec8719ccbfcd 19 (unreleased) landed
-
Speed up hex_encode with bytewise lookup
- e24d77080b36 18.0 landed
Attachments
- v4-0001-SVE-support-for-hex-encode-and-hex-decode.patch (application/octet-stream) patch v4-0001
It seems that the patch doesn't compile on macOS, it is unable to map 'i' and 'len' which are of type 'size_t' to 'uint64'. This appears to be a mac specific issue. The latest patch should resolve this by casting 'size_t' to 'uint64' before passing it to 'svwhilelt_b8'. [11:04:07.478] ../src/backend/utils/adt/encode.c:356:10: error: call to 'svwhilelt_b8' is ambiguous [11:04:07.478] 356 | pred = svwhilelt_b8(i, len); [11:04:07.478] | ^~~~~~~~~~~~ [11:04:07.478] /Applications/Xcode_16.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include/arm_sve.h:28288:10: note: candidate function [11:04:07.478] 28288 | svbool_t svwhilelt_b8(uint32_t, uint32_t); [11:04:07.478] | ^ [11:04:07.478] /Applications/Xcode_16.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include/arm_sve.h:28296:10: note: candidate function [11:04:07.478] 28296 | svbool_t svwhilelt_b8(uint64_t, uint64_t); [11:04:07.478] | ^ [11:04:07.478] /Applications/Xcode_16.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include/arm_sve.h:28304:10: note: candidate function [11:04:07.478] 28304 | svbool_t svwhilelt_b8(int32_t, int32_t); [11:04:07.478] | ^ [11:04:07.478] /Applications/Xcode_16.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include/arm_sve.h:28312:10: note: candidate function [11:04:07.478] 28312 | svbool_t svwhilelt_b8(int64_t, int64_t); [11:04:07.478] | ^ [11:04:07.478] ../src/backend/utils/adt/encode.c:433:10: error: call to 'svwhilelt_b8' is ambiguous [11:04:07.478] 433 | pred = svwhilelt_b8(i / 2, len / 2); [11:04:07.478] | ^~~~~~~~~~~~ [11:04:07.478] /Applications/Xcode_16.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include/arm_sve.h:28288:10: note: candidate function [11:04:07.478] 28288 | svbool_t svwhilelt_b8(uint32_t, uint32_t); [11:04:07.478] | ^ [11:04:07.478] /Applications/Xcode_16.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include/arm_sve.h:28296:10: note: candidate function [11:04:07.478] 28296 | svbool_t svwhilelt_b8(uint64_t, uint64_t); [11:04:07.478] | ^ [11:04:07.478] /Applications/Xcode_16.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include/arm_sve.h:28304:10: note: candidate function [11:04:07.478] 28304 | svbool_t svwhilelt_b8(int32_t, int32_t); [11:04:07.478] | ^ [11:04:07.478] /Applications/Xcode_16.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include/arm_sve.h:28312:10: note: candidate function [11:04:07.478] 28312 | svbool_t svwhilelt_b8(int64_t, int64_t); [11:04:07.478] | ^ [11:04:07.478] 2 errors generated. --- Chiranmoy