static really_really_inline
m128 palignr(m128 r, m128 l, int offset) {
#if defined(HS_OPTIMIZE)
+ // need a faster way to do this.
return palignr_imm(r, l, offset);
#else
return palignr_imm(r, l, offset);
endif()
-if (NOT (RELEASE_BUILD OR FAT_RUNTIME))
+if (NOT FAT_RUNTIME )
set(unit_internal_SOURCES
${gtest_SOURCES}
internal/bitfield.cpp
internal/compare.cpp
internal/database.cpp
internal/depth.cpp
- internal/fdr.cpp
- internal/fdr_flood.cpp
+ #internal/fdr.cpp
+ #internal/fdr_flood.cpp
internal/fdr_loadval.cpp
internal/flat_set.cpp
internal/flat_map.cpp
internal/graph_undirected.cpp
internal/insertion_ordered.cpp
internal/lbr.cpp
- internal/limex_nfa.cpp
+ #internal/limex_nfa.cpp
internal/multi_bit.cpp
internal/multi_bit_compress.cpp
internal/nfagraph_common.h
set(unit_internal_SOURCES
${unit_internal_SOURCES}
internal/masked_move.cpp
- )
+ )
endif(BUILD_AVX2)
+if (NOT RELEASE_BUILD)
+set(unit_internal_SOURCES
+ ${unit_internal_SOURCES}
+ internal/fdr.cpp
+ internal/fdr_flood.cpp
+ internal/limex_nfa.cpp
+ )
+endif(NOT RELEASE_BUILD)
+
add_executable(unit-internal ${unit_internal_SOURCES})
set_target_properties(unit-internal PROPERTIES COMPILE_FLAGS "${HS_CXX_FLAGS}")
target_link_libraries(unit-internal hs corpusomatic)
-endif(NOT (RELEASE_BUILD OR FAT_RUNTIME))
+endif(NOT FAT_RUNTIME)
if (BUILD_CHIMERA)
# enable Chimera unit tests
else ()
add_custom_target(
unit
+ COMMAND bin/unit-internal
COMMAND bin/unit-hyperscan
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- DEPENDS unit-hyperscan
+ DEPENDS unit-internal unit-hyperscan
)
endif()
endif()
}
+/*Define ALIGNR128 macro*/
+#define TEST_ALIGNR128(v1, v2, buf, l) { \
+ m128 v_aligned =palignr(v2,v1, l); \
+ storeu128(res, v_aligned); \
+ for (size_t i=0; i<16; i++) { \
+ ASSERT_EQ(res[i], vec[i + l]); \
+ } \
+ }
+
+TEST(SimdUtilsTest, Alignr128){
+ u8 vec[32];
+ u8 res[16];
+ for (int i=0; i<32; i++) {
+ vec[i]=i;
+ }
+ m128 v1 = loadu128(vec);
+ m128 v2 = loadu128(vec+16);
+ for (int j = 0; j<16; j++){
+ TEST_ALIGNR128(v1, v2, vec, j);
+ }
+}
+
+
+
+
} // namespace