#!/bin/sh git clone https://github.com/damageboy/vxsort-cpp cd vxsort-cpp git checkout 2c7f79ba539a5c1ad2acf1c2e3c0fa828da25635 sed -i 's/^cmake_minimum_required(.*)$/cmake_minimum_required(VERSION 3.15)/' CMakeLists.txt sed -i 's/include(ConfigGBench)/# include(ConfigGBench)/' CMakeLists.txt sed -i 's/include(ConfigGTest)/# include(ConfigGTest)/' CMakeLists.txt sed -i 's!add_subdirectory(${PROJECT_SOURCE_DIR}/bench/)!# add_subdirectory(${PROJECT_SOURCE_DIR}/bench/)!' CMakeLists.txt sed -i 's!add_subdirectory(${PROJECT_SOURCE_DIR}/tests/)!# add_subdirectory(${PROJECT_SOURCE_DIR}/tests/)!' CMakeLists.txt ( mkdir build-release cd build-release cmake .. make -j 4 ) cat > example.cc << 'EOF' #include #include #include "vxsort_targets_enable_avx2.h" #include "vxsort.h" #include "vxsort.avx2.h" #include "machine_traits.avx2.h" #include "smallsort/bitonic_sort.avx2.h" #define N 1291 int main() { int32_t buf[N]; for (long long i = 0;i < N;++i) { long long bump = i%15; buf[i] = 100000*(4+3*(i/65536)+(bump==0)-(bump==1)); } auto sorter = vxsort::vxsort(); sorter.sort(buf,buf+N-1); return 0; } #include "vxsort_targets_disable.h" EOF clang++ -fsanitize=address -std=c++17 \ -no-pie -O3 -march=native \ -o example example.cc \ -I vxsort \ -I vxsort/vector_machine \ -I build-release/_deps/cpu_features-src/include \ -L build-release/vxsort \ -L build-release/_deps/cpu_features-build \ -lvxsort \ -lcpu_features -lm ./example