Implement new Vermicelli16 acceleration functions using SVE2.

The scheme utilises the MATCH and NMATCH instructions to
scan for 16 characters at the same rate as vermicelli
scans for one.

Change-Id: Ie2cef904c56651e6108593c668e9b65bc001a886
This commit is contained in:
George Wort
2021-06-28 16:29:43 +01:00
committed by Konstantinos Margaritis
parent b6a7ee7e84
commit b54710d208
25 changed files with 1153 additions and 8 deletions

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016, Intel Corporation
* Copyright (c) 2021, Arm Limited
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -52,6 +53,8 @@ struct SubCastle {
#define CASTLE_NVERM 2
#define CASTLE_SHUFTI 3
#define CASTLE_TRUFFLE 4
#define CASTLE_VERM16 5
#define CASTLE_NVERM16 6
enum ExclusiveType {
NOT_EXCLUSIVE, //!< no subcastles are exclusive
@@ -129,6 +132,9 @@ struct ALIGN_AVX_DIRECTIVE Castle {
struct {
char c;
} verm;
struct {
m128 mask;
} verm16;
struct {
m128 mask_lo;
m128 mask_hi;