diff options
author | bnagaev <bnagaev@yandex-team.ru> | 2022-02-10 16:47:04 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:04 +0300 |
commit | d6449ba66291ff0c0d352c82e6eb3efb4c8a7e8d (patch) | |
tree | d5dca6d44593f5e52556a1cc7b1ab0386e096ebe /contrib/libs/hyperscan/src/nfa/gough_internal.h | |
parent | 1861d4c1402bb2c67a3e6b43b51706081b74508a (diff) | |
download | ydb-d6449ba66291ff0c0d352c82e6eb3efb4c8a7e8d.tar.gz |
Restoring authorship annotation for <bnagaev@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/hyperscan/src/nfa/gough_internal.h')
-rw-r--r-- | contrib/libs/hyperscan/src/nfa/gough_internal.h | 268 |
1 files changed, 134 insertions, 134 deletions
diff --git a/contrib/libs/hyperscan/src/nfa/gough_internal.h b/contrib/libs/hyperscan/src/nfa/gough_internal.h index 8bf06e0f7f..42d73970cf 100644 --- a/contrib/libs/hyperscan/src/nfa/gough_internal.h +++ b/contrib/libs/hyperscan/src/nfa/gough_internal.h @@ -1,134 +1,134 @@ -/* - * Copyright (c) 2015, Intel Corporation - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Intel Corporation nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef GOUGH_INTERNAL_H -#define GOUGH_INTERNAL_H - -#include "accel.h" -#include "mcclellan_internal.h" -#include "ue2common.h" - -#define INVALID_SLOT (~0U) - -#define GOUGH_INS_END 0 -#define GOUGH_INS_MOV 1 -#define GOUGH_INS_NEW 2 -#define GOUGH_INS_MIN 3 -/* todo: add instructions targeting acc reg? */ - -struct gough_ins { - u32 op; /* u32 to avoid padding */ - u32 dest; - u32 src; /* for GOUGH_INS_NEW, this specifies the adjustment to apply to the - * current offset */ -}; - -/* - * HAPPY FUN ASCII ART TIME - * - * ---- - * | | struct NFA - * ---- - * ~~~~ normal(ish) mcclellan engine - * ~~~~ - * ~~~~ - * ~~~~ - * ~~~~ - * ~~~~ - * ~~~~ - * ~~~~ - * ---- = m->haig_offset - * | | } struct gough_info - * ---- - * | | } - * | | } edge prog table -> provides the offset of the start of the program - * | | } to run when the edge is taken. 0 indicates no - * | | } work to do - * ---- = h->top_prog_offset - * | | } - * | | } top prog table -> provides the offset of the start of the program - * | | } to run when a top is taken from this state. 0 - * | | } indicates nothing to do - * ---- = h->prog_base_offset - * | | } - * | | } programs to run - * | | } - * | | } - * ---- - */ - -struct gough_info { - u32 top_prog_offset; /**< offset to the base of the top prog table */ - u32 prog_base_offset; /**< not used at runtime */ - u32 stream_som_loc_count; /**< number of som locs in the stream state */ - u8 stream_som_loc_width; /**< number of bytes per som loc */ -}; - -static really_inline -const struct gough_info *get_gough(const struct mcclellan *m) { - assert(m->haig_offset); - const char *n = (const char *)m - sizeof(struct NFA); - return (const struct gough_info *)(n + m->haig_offset); -} - -static really_inline -const u32 *get_gough_top_offsets(const struct mcclellan *m) { - const struct gough_info *g = get_gough(m); - if (!g->top_prog_offset) { - return NULL; - } - const char *n = (const char *)m - sizeof(struct NFA); - return (const u32 *)(n + g->top_prog_offset); -} - -/* Gough state representation in scratch. - * - * During execution, gough tracks a number of variables containing potential - * starts of match. These are all stored in a large array of u64a slots. - */ -struct gough_som_info { - u64a slots[1]; /* 'flexible' member array */ -}; - -struct gough_report { - ReportID r; - u32 som; /* som slot to report */ -}; - -struct gough_report_list { - u32 count; - struct gough_report report[]; -}; - -struct gough_accel { - union AccelAux accel; - u8 margin_dist; - u32 prog_offset; -}; - -#endif +/* + * Copyright (c) 2015, Intel Corporation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef GOUGH_INTERNAL_H +#define GOUGH_INTERNAL_H + +#include "accel.h" +#include "mcclellan_internal.h" +#include "ue2common.h" + +#define INVALID_SLOT (~0U) + +#define GOUGH_INS_END 0 +#define GOUGH_INS_MOV 1 +#define GOUGH_INS_NEW 2 +#define GOUGH_INS_MIN 3 +/* todo: add instructions targeting acc reg? */ + +struct gough_ins { + u32 op; /* u32 to avoid padding */ + u32 dest; + u32 src; /* for GOUGH_INS_NEW, this specifies the adjustment to apply to the + * current offset */ +}; + +/* + * HAPPY FUN ASCII ART TIME + * + * ---- + * | | struct NFA + * ---- + * ~~~~ normal(ish) mcclellan engine + * ~~~~ + * ~~~~ + * ~~~~ + * ~~~~ + * ~~~~ + * ~~~~ + * ~~~~ + * ---- = m->haig_offset + * | | } struct gough_info + * ---- + * | | } + * | | } edge prog table -> provides the offset of the start of the program + * | | } to run when the edge is taken. 0 indicates no + * | | } work to do + * ---- = h->top_prog_offset + * | | } + * | | } top prog table -> provides the offset of the start of the program + * | | } to run when a top is taken from this state. 0 + * | | } indicates nothing to do + * ---- = h->prog_base_offset + * | | } + * | | } programs to run + * | | } + * | | } + * ---- + */ + +struct gough_info { + u32 top_prog_offset; /**< offset to the base of the top prog table */ + u32 prog_base_offset; /**< not used at runtime */ + u32 stream_som_loc_count; /**< number of som locs in the stream state */ + u8 stream_som_loc_width; /**< number of bytes per som loc */ +}; + +static really_inline +const struct gough_info *get_gough(const struct mcclellan *m) { + assert(m->haig_offset); + const char *n = (const char *)m - sizeof(struct NFA); + return (const struct gough_info *)(n + m->haig_offset); +} + +static really_inline +const u32 *get_gough_top_offsets(const struct mcclellan *m) { + const struct gough_info *g = get_gough(m); + if (!g->top_prog_offset) { + return NULL; + } + const char *n = (const char *)m - sizeof(struct NFA); + return (const u32 *)(n + g->top_prog_offset); +} + +/* Gough state representation in scratch. + * + * During execution, gough tracks a number of variables containing potential + * starts of match. These are all stored in a large array of u64a slots. + */ +struct gough_som_info { + u64a slots[1]; /* 'flexible' member array */ +}; + +struct gough_report { + ReportID r; + u32 som; /* som slot to report */ +}; + +struct gough_report_list { + u32 count; + struct gough_report report[]; +}; + +struct gough_accel { + union AccelAux accel; + u8 margin_dist; + u32 prog_offset; +}; + +#endif |