Robert Schulze
d5a0f29cdc
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
f50cd70f93
clang 14 makes some test failed because val is uninitialized
2023-03-22 21:39:03 +02:00
Konstantinos Margaritis
053652e10e
Set Ragel.rl char type to unsigned, #135
2023-03-21 18:07:06 +00:00
Konstantinos Margaritis
1e3b031dee
prefix assume_aligned to avoid clash with std::assume_aligned in c++20
2022-11-01 10:29:22 +00:00
Konstantinos Margaritis
4b24525f27
move variable
2022-09-16 14:05:31 +03:00
Konstantinos Margaritis
700ef1a265
remove leftover debug print
2022-09-16 14:03:17 +03:00
Konstantinos Margaritis
03c53cc065
clang 14 does not allow bitwise OR for bools
2022-09-16 14:02:53 +03:00
Konstantinos Margaritis
7a21c218ee
clang 14 complains about this, needs investigation
2022-09-16 14:02:26 +03:00
Konstantinos Margaritis
8a6add2fb6
[VSX] movemask needs to be explicitly aligned on clang for vec_ste
2022-09-16 12:50:33 +03:00
Konstantinos Margaritis
dfdb44a924
[VSX] clang complains about the order of __vector
2022-09-16 12:41:08 +03:00
Konstantinos Margaritis
4b41c5fe25
[NEON] simplify/optimize shift/align primitives
2022-09-12 13:09:51 +00:00
liquidaty
b29cb26625
fix to enable successful build with mingw64
2022-09-08 09:59:37 -07:00
Konstantinos Margaritis
a0e53c7d85
use correct intrinsic for lshiftbyte_m128
2022-09-07 16:00:10 +03:00
Konstantinos Margaritis
37b2cae189
provide non-immediate versions of lshiftbyte/rshiftbyte on x86
2022-09-07 15:07:20 +03:00
Konstantinos Margaritis
ce90e58af1
readd simd_onebit_masks for x86, needs more work
2022-09-07 13:42:25 +03:00
Konstantinos Margaritis
0052df5f5b
[NEON] optimize mask1bit128, get rid of simd_onebit_masks
2022-09-07 10:20:01 +00:00
Konstantinos Margaritis
76a31d1bc0
remove simd_onebit_masks from arm/x86 headers, as they moved to common
2022-09-07 12:41:32 +03:00
Konstantinos Margaritis
f71de24f37
[VSX] optimize alignr method
2022-09-07 12:35:28 +03:00
Konstantinos Margaritis
4e3b3c3948
[VSX] optimize shift operators
2022-09-07 12:16:14 +03:00
Konstantinos Margaritis
ba1b805f60
[VSX] optimize shifting methods, replace template Unroller
2022-09-07 12:14:15 +03:00
Konstantinos Margaritis
d87b0e2a7e
optimize comparemask implementation, clean up code, use union types instead of casts
2022-09-07 02:02:11 +03:00
Konstantinos Margaritis
c097f169ad
[VSX] add algorithm for alignr w/o use of immediates
2022-09-07 00:01:54 +03:00
Konstantinos Margaritis
bdc3947746
[VSX] correct lshiftbyte_m128/rshiftbyte_m128, variable_byte_shift
2022-09-06 23:59:51 +03:00
Konstantinos Margaritis
59ace0ebf8
[VSX] huge optimization of movemask128
2022-09-06 20:08:44 +03:00
Konstantinos Margaritis
ef9116b52e
[VSX] optimize and correct lshift_m128/rshift_m128
2022-09-06 18:48:19 +03:00
Konstantinos Margaritis
6dce55c3fe
[VSX] optimized mask1bit128(), moved simd_onebit_masks to common
2022-09-06 18:10:55 +03:00
Konstantinos Margaritis
27dbdcf122
add popcount32x4, popcount64x4 helper functions
2022-09-06 16:55:56 +03:00
Hong, Yang A
c81a6d14b0
literal API: add empty string check.
...
fixes github issue #302 , #304
2022-08-29 15:08:54 +03:00
Hong, Yang A
1ae75b67a1
bugfix: fix overflow risk of strlen function
2022-08-29 15:03:22 +03:00
hongyang7
cb94b9d7b7
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
5307bbd1dc
Logical Combination: bypass combination flag in hs_expression_info.
...
Fixes github issue #291
2022-08-29 15:03:14 +03:00
Hong, Yang A
2e60bdde8a
update year for bugfix #302-#305
2022-08-29 15:03:11 +03:00
Hong, Yang A
e05b154abb
mcclellan: improve wide-state checking in Sherman optimization
...
fixes github issue #305
2022-08-29 15:03:06 +03:00
Hong, Yang A
5ae40498a5
literal API: add instruction support
...
fixes github issue #303
2022-08-29 15:02:59 +03:00
Danila Kutenin
2dd7b9a4f9
Fix ppc64el debug
2022-06-26 23:05:17 +00:00
Danila Kutenin
45fe139224
Minor fix
2022-06-26 23:02:02 +00:00
Danila Kutenin
4b83ea1c78
Fix formatting of a couple files
2022-06-26 22:59:58 +00:00
Danila Kutenin
eb7b0bb50c
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
2360314f9d
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
faca38e058
Fix a couple of tests
2022-02-18 19:31:03 +00:00
Danila Kutenin
a526f6bb6b
Fix all ASAN issues in vectorscan
2022-02-18 17:14:51 +00:00
BigRedEye
89bc7af867
fix: Mark operator bool explicit
2022-02-08 00:22:23 +03:00
Konstantinos Margaritis
bacb015db7
Minor changes to enable compilation on Mac M1
2021-12-11 15:43:55 +02:00
Konstantinos Margaritis
242a460115
minor fixes
2021-12-07 08:49:59 +00:00
Konstantinos Margaritis
b6ddf2b41c
fix clang-release-arm compilation
2021-12-07 08:43:52 +00:00
Konstantinos Margaritis
f4ccc40c58
fix wrong castings for NEON
2021-12-06 21:35:51 +00:00
Konstantinos Margaritis
ef2bc5cfbc
fix compilation with clang and some incomplete/wrong implementations for arm this time
2021-12-06 18:22:58 +00:00
Konstantinos Margaritis
c68e46489b
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
d86e6bed69
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
65bd33ffff
use same definition of the union for all types
2021-12-02 18:00:02 +02:00