mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-17 21:24:28 +00:00
Arcadia, ARM, PowerPC
This commit is contained in:
parent
f6f0d001cd
commit
7f7e04117d
@ -1,10 +1,22 @@
|
|||||||
add_library(divide_impl_sse2 divideImpl.cpp)
|
# A library for integer division by constant with CPU dispatching.
|
||||||
target_compile_options(divide_impl_sse2 PRIVATE -msse2 -DNAMESPACE=SSE2)
|
|
||||||
target_link_libraries(divide_impl_sse2 libdivide)
|
|
||||||
|
|
||||||
add_library(divide_impl_avx2 divideImpl.cpp)
|
if (ARCH_AMD64)
|
||||||
target_compile_options(divide_impl_avx2 PRIVATE -mavx2 -DNAMESPACE=AVX2)
|
add_library(divide_impl_sse2 divideImpl.cpp)
|
||||||
target_link_libraries(divide_impl_avx2 libdivide)
|
target_compile_options(divide_impl_sse2 PRIVATE -msse2 -DNAMESPACE=SSE2)
|
||||||
|
target_link_libraries(divide_impl_sse2 libdivide)
|
||||||
|
|
||||||
|
add_library(divide_impl_avx2 divideImpl.cpp)
|
||||||
|
target_compile_options(divide_impl_avx2 PRIVATE -mavx2 -DNAMESPACE=AVX2)
|
||||||
|
target_link_libraries(divide_impl_avx2 libdivide)
|
||||||
|
|
||||||
|
set(IMPLEMENTATIONS divide_impl_sse2 divide_impl_avx2)
|
||||||
|
else ()
|
||||||
|
add_library(divide_impl_generic divideImpl.cpp)
|
||||||
|
target_compile_options(divide_impl_generic PRIVATE -DNAMESPACE=Generic)
|
||||||
|
target_link_libraries(divide_impl_generic libdivide)
|
||||||
|
|
||||||
|
set(IMPLEMENTATIONS divide_impl_generic)
|
||||||
|
endif ()
|
||||||
|
|
||||||
add_library(divide_impl divide.cpp)
|
add_library(divide_impl divide.cpp)
|
||||||
target_link_libraries(divide_impl divide_impl_sse2 divide_impl_avx2 clickhouse_common_io)
|
target_link_libraries(divide_impl ${IMPLEMENTATIONS} clickhouse_common_io)
|
||||||
|
@ -18,10 +18,14 @@ namespace AVX2
|
|||||||
template <typename A, typename B, typename ResultType>
|
template <typename A, typename B, typename ResultType>
|
||||||
void divideImpl(const A * __restrict a_pos, B b, ResultType * __restrict c_pos, size_t size)
|
void divideImpl(const A * __restrict a_pos, B b, ResultType * __restrict c_pos, size_t size)
|
||||||
{
|
{
|
||||||
|
#if defined(__x86_64__) && !defined(ARCADIA_BUILD)
|
||||||
if (DB::Cpu::CpuFlagsCache::have_AVX2)
|
if (DB::Cpu::CpuFlagsCache::have_AVX2)
|
||||||
AVX2::divideImpl(a_pos, b, c_pos, size);
|
AVX2::divideImpl(a_pos, b, c_pos, size);
|
||||||
else if (DB::Cpu::CpuFlagsCache::have_SSE2)
|
else if (DB::Cpu::CpuFlagsCache::have_SSE2)
|
||||||
SSE2::divideImpl(a_pos, b, c_pos, size);
|
SSE2::divideImpl(a_pos, b, c_pos, size);
|
||||||
|
#else
|
||||||
|
Generic::divideImpl(a_pos, b, c_pos, size);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,7 +2,11 @@
|
|||||||
/// with different values of NAMESPACE and machine flags (sse2, avx2).
|
/// with different values of NAMESPACE and machine flags (sse2, avx2).
|
||||||
|
|
||||||
#if !defined(NAMESPACE)
|
#if !defined(NAMESPACE)
|
||||||
#error "NAMESPACE macro must be defined"
|
#if defined(ARCADIA_BUILD)
|
||||||
|
#define NAMESPACE Generic
|
||||||
|
#else
|
||||||
|
#error "NAMESPACE macro must be defined"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__AVX2__)
|
#if defined(__AVX2__)
|
||||||
|
@ -229,6 +229,8 @@ SRCS(
|
|||||||
defaultValueOfTypeName.cpp
|
defaultValueOfTypeName.cpp
|
||||||
demange.cpp
|
demange.cpp
|
||||||
divide.cpp
|
divide.cpp
|
||||||
|
divide/divide.cpp
|
||||||
|
divide/divideImpl.cpp
|
||||||
dumpColumnStructure.cpp
|
dumpColumnStructure.cpp
|
||||||
e.cpp
|
e.cpp
|
||||||
empty.cpp
|
empty.cpp
|
||||||
|
Loading…
Reference in New Issue
Block a user