[FEATURE]expr_matcher support dual engine(hyperscan & rulescan)
This commit is contained in:
@@ -36,6 +36,43 @@ inline unsigned int myhash(unsigned int key)
|
||||
return h;
|
||||
}
|
||||
|
||||
static void * aligned_malloc(size_t size, size_t align)
|
||||
{
|
||||
void * malloc_ptr;
|
||||
void * aligned_ptr;
|
||||
|
||||
/* Error if align is not a power of two. */
|
||||
if (align & (align - 1))
|
||||
{
|
||||
return ((void*) 0);
|
||||
}
|
||||
|
||||
if (align==0 || size == 0)
|
||||
{
|
||||
return ((void *) 0);
|
||||
}
|
||||
|
||||
malloc_ptr = malloc (sizeof(void *) + align - 1 + size);
|
||||
if (!malloc_ptr)
|
||||
{
|
||||
return ((void *) 0);
|
||||
}
|
||||
|
||||
aligned_ptr = (void *) (((size_t)malloc_ptr + sizeof(void *) + align-1) & ~(align-1));
|
||||
|
||||
((void **) aligned_ptr) [-1] = malloc_ptr;
|
||||
|
||||
return aligned_ptr;
|
||||
}
|
||||
|
||||
static void aligned_free(void * aligned_ptr)
|
||||
{
|
||||
if (aligned_ptr)
|
||||
{
|
||||
free (((void **) aligned_ptr) [-1]);
|
||||
}
|
||||
}
|
||||
|
||||
CSuccinctHash::CSuccinctHash()
|
||||
{
|
||||
m_RT=NULL;
|
||||
|
||||
@@ -20,6 +20,13 @@
|
||||
|
||||
#include "sigmastar_tools.h"
|
||||
|
||||
struct packedRT_t
|
||||
{
|
||||
unsigned long long bitmap[4];
|
||||
unsigned int A;
|
||||
unsigned char B[4];
|
||||
};
|
||||
|
||||
class CSuccinctHash
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -2,54 +2,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void * aligned_malloc(size_t size, size_t align)
|
||||
{
|
||||
void * malloc_ptr;
|
||||
void * aligned_ptr;
|
||||
|
||||
/* Error if align is not a power of two. */
|
||||
if (align & (align - 1))
|
||||
{
|
||||
return ((void*) 0);
|
||||
}
|
||||
|
||||
if (align==0 || size == 0)
|
||||
{
|
||||
return ((void *) 0);
|
||||
}
|
||||
|
||||
malloc_ptr = malloc (sizeof(void *) + align - 1 + size);
|
||||
if (!malloc_ptr)
|
||||
{
|
||||
return ((void *) 0);
|
||||
}
|
||||
|
||||
aligned_ptr = (void *) (((size_t)malloc_ptr + sizeof(void *) + align-1) & ~(align-1));
|
||||
|
||||
((void **) aligned_ptr) [-1] = malloc_ptr;
|
||||
|
||||
return aligned_ptr;
|
||||
}
|
||||
|
||||
void aligned_free(void * aligned_ptr)
|
||||
{
|
||||
if (aligned_ptr)
|
||||
{
|
||||
free (((void **) aligned_ptr) [-1]);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned char popcnt_u16[65536];
|
||||
unsigned char popcnt_u32(unsigned int x)
|
||||
{
|
||||
char c=0;
|
||||
while(x)
|
||||
{
|
||||
if(x&1) c++;
|
||||
x>>=1;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
static unsigned char popcnt_u16[65536];
|
||||
|
||||
#ifndef USE_SSE_INSTR
|
||||
int popcnt_u64(unsigned long long x)
|
||||
@@ -59,14 +12,4 @@ int popcnt_u64(unsigned long long x)
|
||||
+popcnt_u16[(x>>32)&0xFFFF]
|
||||
+popcnt_u16[(x>>48)&0xFFFF];
|
||||
}
|
||||
#endif
|
||||
|
||||
int initialize_sigmastar_tools()
|
||||
{
|
||||
for(unsigned int i=0; i<65536; i++)
|
||||
{
|
||||
popcnt_u16[i]=popcnt_u32(i);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -27,19 +27,6 @@ using namespace std;
|
||||
|
||||
//#define DEBUG_PARTITION
|
||||
|
||||
int initialize_sigmastar_tools();
|
||||
|
||||
struct packedRT_t
|
||||
{
|
||||
unsigned long long bitmap[4];
|
||||
unsigned int A;
|
||||
unsigned char B[4];
|
||||
};
|
||||
|
||||
void * aligned_malloc(size_t size, size_t align);
|
||||
|
||||
void aligned_free(void * aligned_ptr);
|
||||
|
||||
#if (defined __linux__) && (defined __SSE4_2__)
|
||||
#define USE_SSE_INSTR
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user