This is an automated email from the ASF dual-hosted git repository.
airborne pushed a commit to branch clucene
in repository https://gitbox.apache.org/repos/asf/doris-thirdparty.git
The following commit(s) were added to refs/heads/clucene by this push:
new 30b63dc3406 [refact](reader) refact reader's compatible option (#300)
30b63dc3406 is described below
commit 30b63dc34068996c15d451a27d0593c519cb97fc
Author: airborne12 <[email protected]>
AuthorDate: Wed Apr 9 20:09:27 2025 +0800
[refact](reader) refact reader's compatible option (#300)
* [refact](reader) refact reader's compatible option
* [fix](reader) remove IndexReader::setCompatibleRead acquireWriteLock
* add cmake min version
* add cmake min version
* fix compatible read for new version
* fix cmake
* fix compile
* update noavx2
* fix v3
* fix compile
---
3rdparty/zstd/build/cmake/CMakeLists.txt | 2 +-
CMakeLists.txt | 9 ++++-----
src/core/CLucene/index/FieldInfos.cpp | 30 +++++++-----------------------
src/core/CLucene/index/IndexReader.cpp | 10 ++++++++++
src/core/CLucene/index/IndexReader.h | 5 +++++
src/core/CLucene/index/SDocumentWriter.cpp | 2 +-
src/core/CLucene/index/SegmentTermDocs.cpp | 2 +-
src/core/CLucene/index/_FieldInfos.h | 9 +++------
src/core/CLucene/util/PFORUtil.cpp | 15 ++++++++++-----
src/ext/for/CMakeLists.txt | 6 +++---
src/ext/for/bitpack.c | 7 ++++---
src/ext/for/bitunpack.c | 6 +++---
src/ext/for/transpose.c | 4 ++--
src/ext/for/vp4c.c | 5 +++--
src/ext/for/vp4d.c | 3 +--
15 files changed, 58 insertions(+), 57 deletions(-)
diff --git a/3rdparty/zstd/build/cmake/CMakeLists.txt
b/3rdparty/zstd/build/cmake/CMakeLists.txt
index 0bffc87d933..7377d4550bf 100644
--- a/3rdparty/zstd/build/cmake/CMakeLists.txt
+++ b/3rdparty/zstd/build/cmake/CMakeLists.txt
@@ -7,7 +7,7 @@
# in the COPYING file in the root directory of this source tree).
# ################################################################
-cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
# As of 2018-12-26 ZSTD has been validated to build with cmake version 3.13.2
new policies.
# Set and use the newest cmake policies that are validated to work
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 81e7a6075c5..e4cc0af8082 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -143,13 +143,12 @@ if (ARCH_AARCH64 OR CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
set (ARCH_ARM 1)
endif ()
if (ARCH_AMD64)
- if (USE_SSE4_2)
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
- endif()
- message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
+ add_compile_options(-msse4.2)
if (USE_AVX2)
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2 -DUSE_AVX2")
+ add_compile_options(-mavx2)
+ add_definitions(-DUSE_AVX2)
endif()
+ message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
endif()
if (ARCH_ARM)
diff --git a/src/core/CLucene/index/FieldInfos.cpp
b/src/core/CLucene/index/FieldInfos.cpp
index d1653bdab02..205ebb17be7 100644
--- a/src/core/CLucene/index/FieldInfos.cpp
+++ b/src/core/CLucene/index/FieldInfos.cpp
@@ -26,7 +26,7 @@ FieldInfo::FieldInfo(const TCHAR* _fieldName, const bool
_isIndexed, const int32
const bool _storeTermVector, const bool
_storeOffsetWithTermVector,
const bool _storePositionWithTermVector, const bool
_omitNorms,
const bool _hasProx, const bool _storePayloads,
IndexVersion indexVersion,
-
uint32_t flags, const bool _compatibleRead)
+
uint32_t flags)
: name(CLStringIntern::intern(_fieldName)),
isIndexed(_isIndexed),
number(_fieldNumber),
@@ -37,8 +37,7 @@ FieldInfo::FieldInfo(const TCHAR* _fieldName, const bool
_isIndexed, const int32
hasProx(_hasProx),
storePayloads(_storePayloads),
indexVersion_(indexVersion),
- flags_(flags),
- compatibleRead(_compatibleRead) {}
+ flags_(flags) {}
FieldInfo::~FieldInfo(){
CL_NS(util)::CLStringIntern::unintern(name);
@@ -46,7 +45,7 @@ FieldInfo::~FieldInfo(){
FieldInfo* FieldInfo::clone() {
return _CLNEW FieldInfo(name, isIndexed, number, storeTermVector,
storePositionWithTermVector,
- storeOffsetWithTermVector, omitNorms, hasProx, storePayloads,
indexVersion_, flags_, compatibleRead);
+ storeOffsetWithTermVector, omitNorms, hasProx, storePayloads,
indexVersion_, flags_);
}
FieldInfos::FieldInfos():
@@ -103,17 +102,6 @@ bool FieldInfos::hasProx() {
return false;
}
-bool FieldInfos::compatibleRead() {
- int numFields = byNumber.size();
- for (int i = 0; i < numFields; i++) {
- FieldInfo* fi = fieldInfo(i);
- if (fi->compatibleRead) {
- return true;
- }
- }
- return false;
-}
-
IndexVersion FieldInfos::getIndexVersion() {
int numFields = byNumber.size();
for (int i = 0; i < numFields; i++) {
@@ -160,12 +148,12 @@ FieldInfo* FieldInfos::add(const TCHAR* name, const bool
isIndexed, const bool s
const bool storePositionWithTermVector,
const bool storeOffsetWithTermVector, const bool
omitNorms,
const bool hasProx, const bool storePayloads,
-
IndexVersion indexVersion, uint32_t flags, const bool
compatibleRead) {
+
IndexVersion indexVersion, uint32_t flags) {
FieldInfo* fi = fieldInfo(name);
if (fi == NULL) {
return addInternal(name, isIndexed, storeTermVector,
storePositionWithTermVector,
storeOffsetWithTermVector, omitNorms, hasProx, storePayloads,
-
indexVersion, flags, compatibleRead);
+
indexVersion, flags);
} else {
if (fi->isIndexed != isIndexed) {
fi->isIndexed = true; // once
indexed, always index
@@ -194,9 +182,6 @@ FieldInfo* FieldInfos::add(const TCHAR* name, const bool
isIndexed, const bool s
if (fi->flags_ != flags) {
fi->flags_ = flags;
}
- if (fi->compatibleRead != compatibleRead) {
- fi->compatibleRead = compatibleRead;
- }
}
return fi;
}
@@ -206,12 +191,11 @@ FieldInfo* FieldInfos::addInternal(const TCHAR* name,
const bool isIndexed,
const bool storePositionWithTermVector,
const bool storeOffsetWithTermVector, const
bool omitNorms,
const bool hasProx, const bool
storePayloads,
- IndexVersion indexVersion, uint32_t flags,
- const bool compatibleRead) {
+ IndexVersion indexVersion, uint32_t flags) {
FieldInfo* fi =
_CLNEW FieldInfo(name, isIndexed, byNumber.size(),
storeTermVector,
storePositionWithTermVector,
storeOffsetWithTermVector, omitNorms,
- hasProx, storePayloads, indexVersion, flags,
compatibleRead);
+ hasProx, storePayloads, indexVersion, flags);
byNumber.push_back(fi);
byName.put( fi->name, fi);
return fi;
diff --git a/src/core/CLucene/index/IndexReader.cpp
b/src/core/CLucene/index/IndexReader.cpp
index 584957ee3b1..69c66b4f735 100644
--- a/src/core/CLucene/index/IndexReader.cpp
+++ b/src/core/CLucene/index/IndexReader.cpp
@@ -222,6 +222,16 @@ CL_NS_DEF(index)
this->doSetNorm(doc, field, value);
}
+ void IndexReader::setCompatibleRead(bool compatibleRead) {
+ SCOPED_LOCK_MUTEX(THIS_LOCK)
+ this->ensureOpen();
+ this->compatibleRead = compatibleRead;
+ }
+
+ bool IndexReader::getCompatibleRead() const {
+ return this->compatibleRead;
+ }
+
void IndexReader::setNorm(int32_t doc, const TCHAR* field, float_t value){
ensureOpen();
diff --git a/src/core/CLucene/index/IndexReader.h
b/src/core/CLucene/index/IndexReader.h
index ab453384238..29449840c17 100644
--- a/src/core/CLucene/index/IndexReader.h
+++ b/src/core/CLucene/index/IndexReader.h
@@ -112,6 +112,8 @@ public:
/** Internal use. */
Internal* _internal;
+ bool compatibleRead = false;
+
/**
* Constants describing field properties, for example used for
@@ -689,6 +691,9 @@ public:
virtual IndexVersion getIndexVersion();
+ void setCompatibleRead(bool compatibleRead);
+ bool getCompatibleRead() const;
+
friend class SegmentReader;
friend class MultiReader;
friend class IndexWriter;
diff --git a/src/core/CLucene/index/SDocumentWriter.cpp
b/src/core/CLucene/index/SDocumentWriter.cpp
index 89687e867bb..637754bdb9f 100644
--- a/src/core/CLucene/index/SDocumentWriter.cpp
+++ b/src/core/CLucene/index/SDocumentWriter.cpp
@@ -1301,7 +1301,7 @@ void
SDocumentsWriter<T>::appendPostings(ArrayBase<typename ThreadState::FieldDa
}
docDeltaBuffer.resize(0);
freqBuffer.resize(0);
- if (indexVersion_ >= IndexVersion::kV2) {
+ if (hasProx_ && indexVersion_ >= IndexVersion::kV2) {
PforUtil::encodePos(proxOut, posBuffer);
}
}
diff --git a/src/core/CLucene/index/SegmentTermDocs.cpp
b/src/core/CLucene/index/SegmentTermDocs.cpp
index 92db60a6369..5f5df366f91 100644
--- a/src/core/CLucene/index/SegmentTermDocs.cpp
+++ b/src/core/CLucene/index/SegmentTermDocs.cpp
@@ -22,7 +22,7 @@ SegmentTermDocs::SegmentTermDocs(const SegmentReader
*_parent) : parent(_parent)
count(0),
df(0), deletedDocs(_parent->deletedDocs), _doc(-1), _freq(0),
skipInterval(_parent->tis->getSkipInterval()),
maxSkipLevels(_parent->tis->getMaxSkipLevels()), skipListReader(NULL),
freqBasePointer(0), proxBasePointer(0),
skipPointer(0), haveSkipped(false), pointer(0), pointerMax(0),
indexVersion_(_parent->_fieldInfos->getIndexVersion()),
-
hasProx(_parent->_fieldInfos->hasProx()), buffer_(freqStream, hasProx,
indexVersion_, _parent->_fieldInfos->compatibleRead()) {
+
hasProx(_parent->_fieldInfos->hasProx()), buffer_(freqStream, hasProx,
indexVersion_, _parent->getCompatibleRead()) {
CND_CONDITION(_parent != NULL, "Parent is NULL");
memset(docs,0,PFOR_BLOCK_SIZE*sizeof(int32_t));
memset(freqs,0,PFOR_BLOCK_SIZE*sizeof(int32_t));
diff --git a/src/core/CLucene/index/_FieldInfos.h
b/src/core/CLucene/index/_FieldInfos.h
index ba0b0d60d06..cea935ab8c5 100644
--- a/src/core/CLucene/index/_FieldInfos.h
+++ b/src/core/CLucene/index/_FieldInfos.h
@@ -39,7 +39,6 @@ class FieldInfo :LUCENE_BASE{
uint32_t flags_ = 0;
bool storePayloads; // whether this field stores payloads together with
term positions
- bool compatibleRead; // whether index docid list is read cross
platform(eg x86 and arm64)
//Func - Constructor
// Initialises FieldInfo.
@@ -63,8 +62,7 @@ class FieldInfo :LUCENE_BASE{
const bool hasProx,
const bool storePayloads,
IndexVersion indexVersion,
- uint32_t flags,
- const bool compatibleRead);
+ uint32_t flags);
//Func - Destructor
//Pre - true
@@ -141,7 +139,6 @@ public:
void addIndexed(const TCHAR** names, const bool storeTermVectors, const
bool storePositionWithTermVector, const bool storeOffsetWithTermVector);
bool hasProx();
- bool compatibleRead();
IndexVersion getIndexVersion();
uint32_t getFlags();
@@ -179,14 +176,14 @@ public:
const
bool storePositionWithTermVector = false,
const
bool storeOffsetWithTermVector = false, const bool omitNorms = false,
const
bool hasProx = false, const bool storePayloads = false,
-
IndexVersion indexVersion = IndexVersion::kV1, uint32_t flags_ = 0, const bool
compatibleRead = false);
+
IndexVersion indexVersion = IndexVersion::kV1, uint32_t flags_ = 0);
// was void
FieldInfo* addInternal(const TCHAR* name, const bool isIndexed, const
bool storeTermVector,
const bool storePositionWithTermVector,
const bool storeOffsetWithTermVector, const bool
omitNorms,
const bool hasProx, const bool storePayloads,
-
IndexVersion indexVersion = IndexVersion::kV1, uint32_t
flags_ = 0, const bool compatibleRead = false);
+
IndexVersion indexVersion = IndexVersion::kV1, uint32_t
flags_ = 0);
int32_t fieldNumber(const TCHAR* fieldName)const;
diff --git a/src/core/CLucene/util/PFORUtil.cpp
b/src/core/CLucene/util/PFORUtil.cpp
index fa8105f0a40..7cc836514ac 100644
--- a/src/core/CLucene/util/PFORUtil.cpp
+++ b/src/core/CLucene/util/PFORUtil.cpp
@@ -146,7 +146,7 @@ void PforUtil::encodePos(IndexOutput* out,
std::vector<uint32_t>& buffer) {
size_t compressSize = p4nzenc256v32(buffer.data(), buffer.size(),
compress.data());
out->writeVInt(compressSize);
out->writeBytes(reinterpret_cast<const uint8_t*>(compress.data()),
compressSize);
-#elif (defined(__SSSE3__) || defined(__ARM_NEON))
+#elif defined(__ARM_NEON)
out->writeByte((char)CodeMode::kPfor128);
out->writeVInt(buffer.size());
std::vector<uint8_t> compress(4 * buffer.size() + PFOR_BLOCK_SIZE);
@@ -184,7 +184,7 @@ uint32_t PforUtil::decodePos(IndexInput* in,
std::vector<uint32_t>& buffer) {
in->readBytes(buf.data(), serializedSize);
#if defined(USE_AVX2) && defined(__AVX2__)
p4nzdec32(buf.data(), size, buffer.data());
-#elif (defined(__SSSE3__) || defined(__ARM_NEON))
+#elif defined(__ARM_NEON)
p4nzdec32(buf.data(), size, buffer.data());
#else
_CLTHROWA(CL_ERR_CorruptIndex, "PFOR128 is not supported on this
platform");
@@ -212,7 +212,7 @@ void PforUtil::pfor_encode(IndexOutput* out,
std::vector<uint32_t>& docDeltaBuff
out->writeVInt(size);
out->writeBytes(reinterpret_cast<const uint8_t*>(compress.data()),
size);
}
-#elif (defined(__SSSE3__) || defined(__ARM_NEON))
+#elif defined(__ARM_NEON)
out->writeByte((char)CodeMode::kPfor128);
out->writeVInt(docDeltaBuffer.size());
std::vector<uint8_t> compress(4 * docDeltaBuffer.size() + PFOR_BLOCK_SIZE);
@@ -333,13 +333,15 @@ uint32_t PforUtil::pfor_decode(IndexInput* in,
std::vector<uint32_t>& docs,
}
}
} else if (mode == (char)CodeMode::kPfor256) {
- // new version, read based on compatibleRead
{
uint32_t SerializedSize = in->readVInt();
std::vector<uint8_t> buf(SerializedSize + PFOR_BLOCK_SIZE);
in->readBytes(buf.data(), SerializedSize);
#if defined(USE_AVX2) && defined(__AVX2__)
+ // new version, read cross platform, x86_64 read arm64 index
p4nd1dec256v32(buf.data(), arraySize, docs.data());
+#elif (defined(__SSSE3__) || defined(__ARM_NEON))
+ p4nd1dec256scalarv32(buf.data(), arraySize, docs.data());
#else
_CLTHROWA(CL_ERR_CorruptIndex, "PFOR256 is not supported on this
platform");
#endif
@@ -350,17 +352,20 @@ uint32_t PforUtil::pfor_decode(IndexInput* in,
std::vector<uint32_t>& docs,
in->readBytes(buf.data(), SerializedSize);
#if defined(USE_AVX2) && defined(__AVX2__)
p4nzdec256v32(buf.data(), arraySize, freqs.data());
+#elif (defined(__SSSE3__) || defined(__ARM_NEON))
+ // new version, read cross platform, arm64 read x86_64 index
+ p4nzdec256scalarv32(buf.data(), arraySize, freqs.data());
#else
_CLTHROWA(CL_ERR_CorruptIndex, "PFOR256 is not supported on this
platform");
#endif
}
} else if (mode == (char)CodeMode::kPfor128) {
- // new version, read based on compatibleRead
{
uint32_t SerializedSize = in->readVInt();
std::vector<uint8_t> buf(SerializedSize + PFOR_BLOCK_SIZE);
in->readBytes(buf.data(), SerializedSize);
#if defined(USE_AVX2) && defined(__AVX2__)
+ // new version, read cross platform, x86_64 read arm64 index
p4nd1dec32(buf.data(), arraySize, docs.data());
#elif (defined(__SSSE3__) || defined(__ARM_NEON))
p4nd1dec32(buf.data(), arraySize, docs.data());
diff --git a/src/ext/for/CMakeLists.txt b/src/ext/for/CMakeLists.txt
index 9c139a6f2a6..24384297462 100644
--- a/src/ext/for/CMakeLists.txt
+++ b/src/ext/for/CMakeLists.txt
@@ -12,8 +12,8 @@ set(DEBUG "-DNDEBUG -g -O3")
set(OPT "-w -Wall -fstrict-aliasing -falign-loops -Wno-int-conversion")
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
- set(SSE "-march=corei7-avx -mtune=corei7-avx")
- set(AVX2 "-march=haswell")
+ set(SSE "-msse4.2")
+ set(AVX2 "-mavx2")
set(CMAKE_C_FLAGS ${SSE})
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
set(SSE "-march=armv8-a")
@@ -67,7 +67,7 @@ foreach(SRC_FILE ${SRC_FILES})
add_custom_command(
OUTPUT ${SSE_OUTPUT}
- COMMAND ${CMAKE_C_COMPILER} -DSSE2_ON ${c_flags_list} -c -o
${SSE_OUTPUT} ${SRC_FILE}
+ COMMAND ${CMAKE_C_COMPILER} ${c_flags_list} -c -o ${SSE_OUTPUT}
${SRC_FILE}
DEPENDS ${SRC_FILE}
)
diff --git a/src/ext/for/bitpack.c b/src/ext/for/bitpack.c
index 666b1030e51..f7115dbc340 100644
--- a/src/ext/for/bitpack.c
+++ b/src/ext/for/bitpack.c
@@ -44,7 +44,7 @@
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunsequenced"
-#if !defined(SSE2_ON) && !defined(AVX2_ON)
//----------------------------------- Plain
-----------------------------------------------------------------------
+#ifndef __AVX2__ //----------------------------------- Plain
-----------------------------------------------------------------------
typedef unsigned char *(*BITPACK_F8)( uint8_t *__restrict out, unsigned n,
const unsigned char *__restrict in);
typedef unsigned char *(*BITPACK_D8)( uint8_t *__restrict out, unsigned n,
const unsigned char *__restrict in, uint8_t start);
typedef unsigned char *(*BITPACK_F16)(uint16_t *__restrict out, unsigned n,
const unsigned char *__restrict in);
@@ -227,7 +227,9 @@ size_t bitnfpack16( uint16_t *__restrict in, size_t n,
unsigned char *__restrict
size_t bitnfpack32( uint32_t *__restrict in, size_t n, unsigned char
*__restrict out) { uint32_t *ip,start; BITNDPACK(in, n, out, 128, 32, bitf,
bitfpacka); }
size_t bitnfpack64( uint64_t *__restrict in, size_t n, unsigned char
*__restrict out) { uint64_t *ip,start; BITNDPACK(in, n, out, 128, 64, bitf,
bitfpacka); }
-#else //--------------------------------------- SIMD
----------------------------------------------------------------------------------------------
+#endif // ifndef AVX2
+
+//--------------------------------------- SIMD
----------------------------------------------------------------------------------------------
#define _BITNPACKV(in, n, out, _csize_, _usize_, _bitpackv_) {\
unsigned char *op = out; TEMPLATE3(uint, _usize_, _t) _o,_x;\
@@ -422,6 +424,5 @@ size_t bitnzpack128v32( uint32_t *__restrict in, size_t n,
unsigned char *__rest
size_t bitnfpack128v16( uint16_t *__restrict in, size_t n, unsigned char
*__restrict out) { uint16_t *ip,start; _BITNDPACKV(in, n, out, 128, 16, bitf,
bitfpack128v, bitf, bitfpack); }
size_t bitnfpack128v32( uint32_t *__restrict in, size_t n, unsigned char
*__restrict out) { uint32_t *ip,start; _BITNDPACKV(in, n, out, 128, 32, bitf,
bitfpack128v, bitf, bitfpack); }
#endif // SSE
-#endif // Plain
#pragma clang diagnostic pop
diff --git a/src/ext/for/bitunpack.c b/src/ext/for/bitunpack.c
index 26817ac55bc..802df40caad 100644
--- a/src/ext/for/bitunpack.c
+++ b/src/ext/for/bitunpack.c
@@ -43,7 +43,7 @@
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunsequenced"
-#if !defined(SSE2_ON) && !defined(AVX2_ON)
//----------------------------------- Plain
-------------------------------------------------------------------------------------------
+#ifndef __AVX2__ //----------------------------------- Plain
-------------------------------------------------------------------------------------------
typedef unsigned char *(*BITUNPACK_F8)( const unsigned char *__restrict in,
unsigned n, uint8_t *__restrict out);
typedef unsigned char *(*BITUNPACK_D8)( const unsigned char *__restrict in,
unsigned n, uint8_t *__restrict out, uint8_t start);
typedef unsigned char *(*BITUNPACK_F16)(const unsigned char *__restrict in,
unsigned n, uint16_t *__restrict out);
@@ -133,7 +133,8 @@ size_t bitnfunpack16( unsigned char *__restrict in, size_t
n, uint16_t *__restri
size_t bitnfunpack32( unsigned char *__restrict in, size_t n, uint32_t
*__restrict out) { uint32_t *op,start; BITNDUNPACK(in, n, out, 128, 32,
bitfunpacka); }
size_t bitnfunpack64( unsigned char *__restrict in, size_t n, uint64_t
*__restrict out) { uint64_t *op,start; BITNDUNPACK(in, n, out, 128, 64,
bitfunpacka); }
-#else //-------------------------------------------- SSE/AVX2
---------------------------------------------------------------------------------------
+#endif
+//-------------------------------------------- SSE/AVX2
---------------------------------------------------------------------------------------
#define _BITNUNPACKV(in, n, out, _csize_, _usize_, _bitunpackv_) {\
unsigned char *ip = in;\
@@ -2426,7 +2427,6 @@ size_t bitnzunpack128v32( unsigned char *__restrict in,
size_t n, uint32_t *__re
size_t bitnfunpack128v16( unsigned char *__restrict in, size_t n, uint16_t
*__restrict out) { uint16_t *op,start; _BITNDUNPACKV(in, n, out, 128, 16,
bitfunpack128v, bitfunpack); }
size_t bitnfunpack128v32( unsigned char *__restrict in, size_t n, uint32_t
*__restrict out) { uint32_t *op,start; _BITNDUNPACKV(in, n, out, 128, 32,
bitfunpack128v, bitfunpack); }
-#endif
#endif
#pragma clang diagnostic pop
diff --git a/src/ext/for/transpose.c b/src/ext/for/transpose.c
index 5e50c80e48a..4402ea2b00e 100644
--- a/src/ext/for/transpose.c
+++ b/src/ext/for/transpose.c
@@ -130,7 +130,7 @@
#define TPDEC256V tp4dec256v
#include "transpose.c"
-#if !defined(SSE2_ON) && !defined(AVX2_ON)
+#if !defined(__AVX2__) && !defined(__SSE3__)
//--------------------- CPU detection
-------------------------------------------
#if _MSC_VER >=1300
#include <intrin.h>
@@ -431,7 +431,7 @@ void tp4dec(unsigned char *in, unsigned n, unsigned char
*out, unsigned esize) {
#define SID(p,i) (p+=stride)
//#define SID(_p_,_i_) (_p_+ _i_*stride)
-#if !defined(SSE2_ON) && !defined(AVX2_ON)
//--------------------------------------- plain
-------------------------------------------------------------------
+#if !defined(__AVX2__) && !defined(__SSE3__)
//--------------------------------------- plain
-------------------------------------------------------------------
#if STRIDE == ESIZE
void TEMPLATE2(TPENC, ESIZE)(unsigned char *in, unsigned n, unsigned char
*out) {
diff --git a/src/ext/for/vp4c.c b/src/ext/for/vp4c.c
index f9237f252de..fc230150431 100644
--- a/src/ext/for/vp4c.c
+++ b/src/ext/for/vp4c.c
@@ -41,7 +41,7 @@
#define HYBRID 1 // Hybrid TurboPFor : 0=fixed bit packing, 1=fixed
BP+Variable byte
- #if !defined(SSE2_ON) && !defined(AVX2_ON)
+ #ifndef __AVX2__
#define _P4BITS _p4bits
#define P4BITS _p4bits
#define _P4ENC _p4enc
@@ -155,7 +155,8 @@ size_t p4nsdec16(unsigned char *in, size_t n, uint16_t
*out) { uint16_t *op,sta
size_t p4nsdec32(unsigned char *in, size_t n, uint32_t *out) { uint32_t
*op,start; P4NDDEC(in, n, out, 128, 32, p4sdec); }
size_t p4nsdec64(unsigned char *in, size_t n, uint64_t *out) { uint64_t
*op,start; P4NDDEC(in, n, out, 128, 64, p4sdec); }
#undef _P4BITS
- #elif defined(__AVX2__)
+#endif
+#if defined(__AVX2__)
#define BITDELTA bitdienc
#define HYBRID 1
#define P4BITS _p4bits
diff --git a/src/ext/for/vp4d.c b/src/ext/for/vp4d.c
index e1bbacde3b6..5566073fd66 100644
--- a/src/ext/for/vp4d.c
+++ b/src/ext/for/vp4d.c
@@ -95,7 +95,7 @@ extern char _shuffle_16[256][16];
#include "vp4d.c"
#undef BITUNDD
- #elif !defined(SSE2_ON) && !defined(AVX2_ON)
+ #elif defined(__SSSE3__) || defined(__ARM_NEON)
#define _P4DEC _p4dec
#define P4DEC p4dec
@@ -177,7 +177,6 @@ extern char _shuffle_16[256][16];
#undef USIZE
#undef DELTA
- #elif defined(__SSSE3__) || defined(__ARM_NEON)
#define VSIZE 128
#define P4DELTA(a)
#define P4DELTA_(a)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]