Robert Schulze
8f26c5e65f
Fix compilation with libcxx 16
...
After upgrading our (ClickHouse's) libcxx from 15 to 16, the compiler
started to complain about usage of an incomplete type "RoseInstruction"
in this (header) function:
void RoseProgram::replace(Iter it, std::unique_ptr<RoseInstruction> ri) {
...
The reason is that libcxx 16 is the first version which implements C++23
constexpr std::unique_ptr (P2273R3, see (*)). RoseProgram::replace()
happens to be be const-evaluatable and the compiler tries to run
std::unique_ptr's ctor + dtor. This fails because at this point
RoseInstruction isn't defined yet.
There are two ways of fixing this:
1. Include rose_build_instruction.h (which contains RoseInstruction)
into rose_build_program.h. Disadvantage: The new include will
propagate transitively into all callers.
2. Move the function implementation into the source file which sees
RoseInstruction's definition already. Disadvantage: Template
instantiation is no longer automatic, instead there must be either a)
explicit template instantiation (e.g. in rose_build_program.cpp) or
b) all callers which instantiate the function must live in the same
source file and do the instantiations by themselves. Fortunately, the
latter is the case here, but potential future code outside
rose_build_program.cpp will require ugly explicit instantiation.
(*) https://en.cppreference.com/w/cpp/23
2023-03-28 21:58:44 +00:00
Konstantinos Margaritis
842e680650
clang 14 makes some test failed because val is uninitialized
2023-03-22 21:39:03 +02:00
Konstantinos Margaritis
dbdbfe9473
Set Ragel.rl char type to unsigned, #135
2023-03-21 18:07:06 +00:00
Konstantinos Margaritis
e6cfd11948
prefix assume_aligned to avoid clash with std::assume_aligned in c++20
2022-11-01 10:29:22 +00:00
Konstantinos Margaritis
48105cdd1d
move variable
2022-09-16 14:05:31 +03:00
Konstantinos Margaritis
a4972aa191
remove leftover debug print
2022-09-16 14:03:17 +03:00
Konstantinos Margaritis
0e0147ec5c
clang 14 does not allow bitwise OR for bools
2022-09-16 14:02:53 +03:00
Konstantinos Margaritis
6de45b4648
clang 14 complains about this, needs investigation
2022-09-16 14:02:26 +03:00
Konstantinos Margaritis
3fc6c8a532
[VSX] movemask needs to be explicitly aligned on clang for vec_ste
2022-09-16 12:50:33 +03:00
Konstantinos Margaritis
ef66877e9e
[VSX] clang complains about the order of __vector
2022-09-16 12:41:08 +03:00
Konstantinos Margaritis
67b414f2f9
[NEON] simplify/optimize shift/align primitives
2022-09-12 13:09:51 +00:00
liquidaty
f4840adf3d
fix to enable successful build with mingw64
2022-09-08 09:59:37 -07:00
Konstantinos Margaritis
e3c237a7e0
use correct intrinsic for lshiftbyte_m128
2022-09-07 16:00:10 +03:00
Konstantinos Margaritis
756ef409b4
provide non-immediate versions of lshiftbyte/rshiftbyte on x86
2022-09-07 15:07:20 +03:00
Konstantinos Margaritis
1ae0d15181
readd simd_onebit_masks for x86, needs more work
2022-09-07 13:42:25 +03:00
Konstantinos Margaritis
0af2ba8616
[NEON] optimize mask1bit128, get rid of simd_onebit_masks
2022-09-07 10:20:01 +00:00
Konstantinos Margaritis
02ae2a3cad
remove simd_onebit_masks from arm/x86 headers, as they moved to common
2022-09-07 12:41:32 +03:00
Konstantinos Margaritis
305a041c73
[VSX] optimize alignr method
2022-09-07 12:35:28 +03:00
Konstantinos Margaritis
a837cf3bee
[VSX] optimize shift operators
2022-09-07 12:16:14 +03:00
Konstantinos Margaritis
be20c2c519
[VSX] optimize shifting methods, replace template Unroller
2022-09-07 12:14:15 +03:00
Konstantinos Margaritis
dc6b8ae92d
optimize comparemask implementation, clean up code, use union types instead of casts
2022-09-07 02:02:11 +03:00
Konstantinos Margaritis
7295b9c718
[VSX] add algorithm for alignr w/o use of immediates
2022-09-07 00:01:54 +03:00
Konstantinos Margaritis
94fe406f0c
[VSX] correct lshiftbyte_m128/rshiftbyte_m128, variable_byte_shift
2022-09-06 23:59:51 +03:00
Konstantinos Margaritis
17467ff21b
[VSX] huge optimization of movemask128
2022-09-06 20:08:44 +03:00
Konstantinos Margaritis
0e7874f122
[VSX] optimize and correct lshift_m128/rshift_m128
2022-09-06 18:48:19 +03:00
Konstantinos Margaritis
026f761671
[VSX] optimized mask1bit128(), moved simd_onebit_masks to common
2022-09-06 18:10:55 +03:00
Konstantinos Margaritis
43c053a069
add popcount32x4, popcount64x4 helper functions
2022-09-06 16:55:56 +03:00
Hong, Yang A
70b2a28386
literal API: add empty string check.
...
fixes github issue #302 , #304
2022-08-29 15:08:54 +03:00
Hong, Yang A
4d4940dfbe
bugfix: fix overflow risk of strlen function
2022-08-29 15:03:22 +03:00
hongyang7
2731a3384b
Fix segfaults on allocation failure ( #4 )
...
Throw std::bad_alloc instead of returning nullptr from
ue2::AlignedAllocator. Allocators for STL containers are expected never
to return with an invalid pointer, and instead must throw on failure.
Violating this expectation can lead to invalid pointer dereferences.
Co-authored-by: johanngan <johanngan.us@gmail.com>
fixes github issue #317 (PR #320 )
2022-08-29 15:03:18 +03:00
Chang, Harry
c1659b8544
Logical Combination: bypass combination flag in hs_expression_info.
...
Fixes github issue #291
2022-08-29 15:03:14 +03:00
Hong, Yang A
decabdfede
update year for bugfix #302-#305
2022-08-29 15:03:11 +03:00
Hong, Yang A
a119693a66
mcclellan: improve wide-state checking in Sherman optimization
...
fixes github issue #305
2022-08-29 15:03:06 +03:00
Hong, Yang A
cafd5248b1
literal API: add instruction support
...
fixes github issue #303
2022-08-29 15:02:59 +03:00
Danila Kutenin
7e7f604f7d
Fix ppc64el debug
2022-06-26 23:05:17 +00:00
Danila Kutenin
849846700a
Minor fix
2022-06-26 23:02:02 +00:00
Danila Kutenin
8a49e20bcd
Fix formatting of a couple files
2022-06-26 22:59:58 +00:00
Danila Kutenin
49eb18ee4f
Optimize vectorscan for aarch64 by using shrn instruction
...
This optimization is based on the thread
https://twitter.com/Danlark1/status/1539344279268691970 and uses
shift right and narrow by 4 instruction https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/SHRN--SHRN2--Shift-Right-Narrow--immediate--
To achieve that, I needed to redesign a little movemask into comparemask
and have an additional step towards mask iteration. Our benchmarks
showed 10-15% improvement on average for long matches.
2022-06-26 22:55:45 +00:00
Daniel Kutenin
288491d6d9
Optimized and correct version of movemask128 for ARM
...
Closes #99
https://gcc.godbolt.org/z/cTjKqzcvn
Previous version was not correct because movemask thought of having bytes 0xFF. We can fully match the semantics + do it faster with USRA instructions.
Re-submission to a develop branch
2022-04-18 13:37:53 +01:00
Danila Kutenin
5f8729a085
Fix a couple of tests
2022-02-18 19:31:03 +00:00
Danila Kutenin
9af996b936
Fix all ASAN issues in vectorscan
2022-02-18 17:14:51 +00:00
BigRedEye
6d6c291769
fix: Mark operator bool explicit
2022-02-08 00:22:23 +03:00
Konstantinos Margaritis
467db4a268
Minor changes to enable compilation on Mac M1
2021-12-11 15:43:55 +02:00
Konstantinos Margaritis
4589f1742e
minor fixes
2021-12-07 08:49:59 +00:00
Konstantinos Margaritis
fd2eabd071
fix clang-release-arm compilation
2021-12-07 08:43:52 +00:00
Konstantinos Margaritis
fec557c1f9
fix wrong castings for NEON
2021-12-06 21:35:51 +00:00
Konstantinos Margaritis
290eabbca0
fix compilation with clang and some incomplete/wrong implementations for arm this time
2021-12-06 18:22:58 +00:00
Konstantinos Margaritis
07ce6d8e7f
fix build failures with clang on x86, make sure compilation works on other Power as well
2021-12-03 16:24:58 +02:00
Konstantinos Margaritis
5aae719ecd
fix build with clang, in particular VSX uses long long instead of int64_t, gcc allows this, clang does not
2021-12-02 18:01:00 +02:00
Konstantinos Margaritis
4aa32275f1
use same definition of the union for all types
2021-12-02 18:00:02 +02:00