Instructions and logic provide extended vector suffix comparisons for Boyer-Moore searches. Some embodiments, responsive to an instruction specifying: a pattern source operand and a target source operand, compare each of m data elements of the pattern operand with each data element of the target operand. A first and second equal ordered aggregation operation are performed from the comparisons according to the m data elements of the pattern source operand. A result of the first and second aggregation operations indicating whether or not a possible match exists between the m data elements of the pattern source operand and d data element positions relative to data elements of the target source operand is stored. Ordering of the data elements of the pattern and the target operands may be reversed for the second aggregation operation, and d may be a sum of m−1 and the quantity of target operand elements in some embodiments.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A processor comprising: a first register comprising a first plurality of m data fields to store values of m data elements: a decode stage to decode a first instruction specifying: a pattern source operand specifying the first register; and a target source operand; and an execution unit, responsive to the decoded first instruction, to: perform a first equal ordered aggregation operation on results from comparisons of each of the m data elements of the pattern source operand with each of data elements of a first set of data elements of the target source operand; perform a second equal ordered aggregation operation on results from comparisons of each of the m data elements of the pattern source operand with each of data elements of a second set of data elements of the target source operand; determine and store a first index for the first equal ordered aggregation operation, wherein the first index comprises a size of a first matching sequence shared by the pattern source operand and the first set of data elements of the target source operand; determine and store a second index for the second equal ordered aggregation operation, wherein the second index comprises a size of a second matching sequence shared by the pattern source operand and the second set of data elements of the target source operand; and determine, based on the first index and the second index, a sliding window shift distance relative to data elements of the target source operand.
2. The processor of claim 1 , wherein the first index further comprises a location of a least significant element position of a possible suffix match to the m data elements of the pattern source operand relative to the first set of data elements of the target source operand.
3. The processor of claim 1 , wherein the first index further comprises a mask indicating any element position of a possible suffix match to the m data elements of the pattern source operand relative to the first set of data elements of the target source operand.
4. The processor of claim 1 , wherein a total number of data elements in the first set of data elements of the target source operand and the second set of data elements of the target source operand is greater than m.
5. The processor of claim 1 , wherein the first equal ordered aggregation operation and the second equal ordered aggregation operation occur in a forward order of the data elements for both the pattern source operand and the target source operand, and wherein the second set of data elements of the target source operand is contiguous to the first set of data elements of the target source operand.
6. The processor of claim 1 , wherein a number of the data elements in the first set of data elements of the target source operand is equal to a number of the data elements in the second set of data elements of the target source operand.
7. The processor of claim 1 , wherein a number of data elements in the first set of data elements of the target source operand is equal to m.
8. The processor of claim 1 , wherein for the first equal ordered aggregation operation an order of the data elements is a forward order for both the pattern source operand and the first set of data elements of the target source operand, and for the second equal ordered aggregation operation an order of the data elements is a reverse order for both the pattern source operand and the second set of data elements of the target source operand, and wherein the second set of data elements of the target source operand is identical to the first set of data elements of the target source operand.
9. The processor of claim 1 , wherein the first equal ordered aggregation operation and the second equal ordered aggregation operation occur in a reverse order for both the pattern source operand and the target source operand, and wherein the second set of data elements of the target source operand is contiguous to the first set of data elements of the target source operand.
10. A non-transitory machine-readable medium to record functional descriptive material including a first executable instruction, which when executed by a machine, causes the machine to: perform a first equal ordered aggregation operation on results from comparisons of each of m data elements of a pattern source operand with each of data elements of a first set of data elements of a target source operand; perform a second equal ordered aggregation operation on results from comparisons of each of the m data elements of the pattern source operand with each of data elements of a second set of data elements of the target source operand; determine and store a first index for the first equal ordered aggregation operation, wherein the first index comprises a size of a matching sequence shared by the pattern source operand and the first set of data elements of the target source operand; determine and store a second index for the second equal ordered aggregation operation, wherein the second index comprises a size of a second matching sequence shared by the pattern source operand and the second set of data elements of the target source operand; and determine, based on the first index and the second index, a sliding window shift distance relative to data elements of the target source operand.
11. The machine-readable medium of claim 10 , wherein for the first equal ordered aggregation operation an order of the data elements is a forward order for both the pattern source operand and first set of data elements of the target source operand, and for the second equal ordered aggregation operation an order of the data elements is a reverse order for both the pattern source operand and the second set of data elements of the target source operand, and wherein the second set of data elements of the target source operand is identical to the first set of data elements of the target source operand.
12. The machine-readable medium of claim 11 , wherein a number of data elements in the first set of data elements of the target source operand is equal to m.
13. The machine-readable medium of claim 10 , wherein a total number of data elements in the first set of data elements of the target source operand and the second set of data elements of the target source operand is greater than m.
14. The machine-readable medium of claim 10 , wherein the first index further comprises a mask indicating any element position of a possible suffix match with the m data elements of the pattern source operand relative to the first set of data elements of the target source operand.
15. The machine-readable medium of claim 10 , wherein the first index further comprises a location of a least significant element position of a possible suffix match with the m data elements of the pattern source operand relative to the first set of data elements of the target source operand.
16. The machine-readable medium of claim 10 , wherein the first equal ordered aggregation operation and the second equal ordered aggregation operation occur in a reverse order for both the pattern source operand and the target source operand, and wherein the second set of data elements of the target source operand is contiguous to the first set of data elements of the target source operand.
17. A processing system comprising: a memory; and a first plurality of processors, each of the first plurality of processors comprising: a first register comprising a first plurality of m data fields to store values of m data elements; a decode stage to decode a first instruction specifying: a pattern source operand specifying the first register, an immediate operand, and a target source operand; and an execution unit, responsive to the decoded first instruction, to: perform a first equal ordered aggregation operation on results from comparisons of each of the m data elements of the pattern source operand with each of data elements of a first set of data elements of the target source operand; perform a second equal ordered aggregation operation on results from comparisons of each of the m data elements of the pattern source operand with each of data elements of a second set of data elements of the target source operand; determine and store a first index for the first equal ordered aggregation operation, wherein the first index comprises a size of a first matching sequence shared by the pattern source operand and the first set of data elements of the target source operand; determine and store a second index for the second equal ordered aggregation operation, wherein the second index comprises a size of a second matching sequence shared by the pattern source operand and the second set of data elements of the target source operand; and determine, based on the first index and the second index, a sliding window shift distance relative to data elements of the target source operand.
18. The processing system of claim 17 , wherein a number of data elements in the first set of data elements of the target source operand is equal to m.
19. The processing system of claim 18 , wherein for the first equal ordered aggregation operation an order of the data elements is a forward order for both the pattern source operand and the first set of data elements of the target source operand, and for the second equal ordered aggregation operation an order of the data elements is a reverse order for both the pattern source operand and the second set of data elements of the target source operand, and wherein the second set of data elements of the target source operand is identical to the first set of data elements of the target source operand.
20. The processing system of claim 17 , wherein the first instruction is decoded to produce one or more micro-operations to reverse an ordering of data elements of both the pattern source operand and the target source operand, and a plurality of micro-operations to perform packed comparisons of strings with equal ordered aggregation.
21. The processing system of claim 20 , wherein the first index further comprises a location of a least significant element position of a possible suffix match with the m data elements of the pattern source operand relative to the first set of data elements of the target source operand.
22. The processing system of claim 20 , wherein the first index further comprises a mask indicating any element position of a possible suffix match with the m data elements of the pattern source operand relative to the first set of data elements of the target source operand.
23. The processing system of claim 17 , wherein the first equal ordered aggregation operation and the second equal ordered aggregation operation occur in a reverse order for both the pattern source operand and the target source operand, and wherein the second set of data elements of the target source operand is contiguous to the first set of data elements of the target source operand.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
January 15, 2016
July 23, 2019
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.