mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-11-18 02:00:36 +03:00
lookaround:
add 64x8 and 64x16 shufti models add mask64 model expand entry quantity
This commit is contained in:
committed by
Konstantinos Margaritis
parent
e1706c435c
commit
8436f95f24
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015-2019, Intel Corporation
|
||||
* Copyright (c) 2015-2020, Intel Corporation
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -208,7 +208,11 @@ enum RoseInstructionCode {
|
||||
*/
|
||||
ROSE_INSTR_LAST_FLUSH_COMBINATION,
|
||||
|
||||
LAST_ROSE_INSTRUCTION = ROSE_INSTR_LAST_FLUSH_COMBINATION //!< Sentinel.
|
||||
ROSE_INSTR_CHECK_SHUFTI_64x8, //!< Check 64-byte data by 8-bucket shufti.
|
||||
ROSE_INSTR_CHECK_SHUFTI_64x16, //!< Check 64-byte data by 16-bucket shufti.
|
||||
ROSE_INSTR_CHECK_MASK_64, //!< 64-bytes and/cmp/neg mask check.
|
||||
|
||||
LAST_ROSE_INSTRUCTION = ROSE_INSTR_CHECK_MASK_64 //!< Sentinel.
|
||||
};
|
||||
|
||||
struct ROSE_STRUCT_END {
|
||||
@@ -285,6 +289,15 @@ struct ROSE_STRUCT_CHECK_MASK_32 {
|
||||
u32 fail_jump; //!< Jump forward this many bytes on failure.
|
||||
};
|
||||
|
||||
struct ROSE_STRUCT_CHECK_MASK_64 {
|
||||
u8 code; //!< From enum RoseInstructionCode.
|
||||
u8 and_mask[64]; //!< 64-byte and mask.
|
||||
u8 cmp_mask[64]; //!< 64-byte cmp mask.
|
||||
u64a neg_mask; //!< negation mask with 32 bits.
|
||||
s32 offset; //!< Relative offset of the first byte.
|
||||
u32 fail_jump; //!< Jump forward this many bytes on failure.
|
||||
};
|
||||
|
||||
struct ROSE_STRUCT_CHECK_BYTE {
|
||||
u8 code; //!< From enum RoseInstructionCode.
|
||||
u8 and_mask; //!< 8-bits and mask.
|
||||
@@ -336,6 +349,29 @@ struct ROSE_STRUCT_CHECK_SHUFTI_32x16 {
|
||||
u32 fail_jump; //!< Jump forward this many bytes on failure.
|
||||
};
|
||||
|
||||
struct ROSE_STRUCT_CHECK_SHUFTI_64x8 {
|
||||
u8 code; //!< From enum RoseInstructionCode.
|
||||
u8 hi_mask[64]; //!< High nibble mask in shufti.
|
||||
u8 lo_mask[64]; //!< Low nibble mask in shufti.
|
||||
u8 bucket_select_mask[64]; //!< Mask for bucket assigning.
|
||||
u64a neg_mask; //!< 64 bits negation mask.
|
||||
s32 offset; //!< Relative offset of the first byte.
|
||||
u32 fail_jump; //!< Jump forward this many bytes on failure.
|
||||
};
|
||||
|
||||
struct ROSE_STRUCT_CHECK_SHUFTI_64x16 {
|
||||
u8 code; //!< From enum RoseInstructionCode.
|
||||
u8 hi_mask_1[64]; //!< 4 copies of 0-15 High nibble mask.
|
||||
u8 hi_mask_2[64]; //!< 4 copies of 16-32 High nibble mask.
|
||||
u8 lo_mask_1[64]; //!< 4 copies of 0-15 Low nibble mask.
|
||||
u8 lo_mask_2[64]; //!< 4 copies of 16-32 Low nibble mask.
|
||||
u8 bucket_select_mask_hi[64]; //!< Bucket mask for high 8 buckets.
|
||||
u8 bucket_select_mask_lo[64]; //!< Bucket mask for low 8 buckets.
|
||||
u64a neg_mask; //!< 64 bits negation mask.
|
||||
s32 offset; //!< Relative offset of the first byte.
|
||||
u32 fail_jump; //!< Jump forward this many bytes on failure.
|
||||
};
|
||||
|
||||
struct ROSE_STRUCT_CHECK_INFIX {
|
||||
u8 code; //!< From enum RoseInstructionCode.
|
||||
u32 queue; //!< Queue of leftfix to check.
|
||||
|
||||
Reference in New Issue
Block a user