IP Library Granted Patent US 11,782,709
Granted Patent B2
US 11,782,709 · App. 17/964,964 · Granted Oct 10, 2023

Systems, apparatuses, and methods for addition of partial products

Inventors: Robert Valentine (Kiryat Tivon, IL); Galina Ryvchin (Haifa, IL); Piotr Majcher (Straszyn, PL); Mark J. Charney (Lexington, MA); Elmoustapha Ould-Ahmed-Vall (Chandler, AZ); Jesus Corbal (King City, OR); Milind B. Girkar (Sunnyvale, CA); Zeev Sperber (Zichron Yackov, IL); Simon Rubanovich (Haifa, IL); Amit Gradstein (Binyamina, IL)
Assignee: Intel Corporation
G06F9/30014G06F7/5443G06F9/30018G06F9/30036G06F9/30105G06F9/3818
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,782,709
App. No.
17/964,964
Granted
Oct 10, 2023
Kind
B2
Abstract

Embodiments of systems, apparatuses, and methods for fused multiple add. In some embodiments, a decoder decodes a single instruction having an opcode, a destination field representing a destination operand, and fields for a first, second, and third packed data source operand, wherein packed data elements of the first and second packed data source operand are of a first, different size than a second size of packed data elements of the third packed data operand. Execution circuitry then executes the decoded single instruction to perform, for each packed data element position of the destination operand, a multiplication of a M N-sized packed data elements from the first and second packed data sources that correspond to a packed data element position of the third packed data source, add of results from these multiplications to a full-sized packed data element of a packed data element position of the third packed data source, and storage of the addition result in a packed data element position destination corresponding to the packed data element position of the third packed data source, wherein M is equal to the full-sized packed data element divided by N.

Claims (45)

1. An apparatus comprising:

decode circuitry to decode a single instruction, the single instruction having fields to indicate an opcode, a packed destination operand, a first packed source operand, and a second packed source operand, wherein elements of the destination are 32 bits in size and elements of the first source and the second source are 16 bits in size;

a register file having a plurality of packed data registers including registers for the destination and source operands; and

execution circuitry, coupled to the decode circuitry, the execution circuitry to perform operations corresponding to the instruction, including to, for each element position of the destination:

multiply a first element from the first source and a first element from the second source to generate a first result,

multiply a second element from the first source and a second element from the second source to generate a second result,

add the first result and the second result to generate a third result;

add the third result to an element from the element position of the destination to generate a fourth result, and

store the fourth result in the element position of the destination.

2. The apparatus of claim 1 , wherein the execution circuitry is also to perform rounding in connection with adding the first result and the second result.

3. The apparatus of claim 1 , wherein the execution circuitry is also to perform rounding in connection with adding the third result to the element from the element position of the destination.

4. The apparatus of claim 1 , wherein the first source has a length of 128 bits and the second source has a length of 128 bits.

5. The apparatus of claim 1 , wherein the destination has a length of 128 bits.

6. The apparatus of claim 1 , wherein the first source has a length of 256 bits and the second source has a length of 256 bits.

7. The apparatus of claim 1 , wherein the destination has a length of 256 bits.

8. The apparatus of claim 1 , wherein the first source has a length of 512 bits and the second source has a length of 512 bits.

9. The apparatus of claim 1 , wherein the destination has a length of 512 bits.

10. A method comprising:

decoding a single instruction, the single instruction having fields to indicate an opcode, a packed destination operand, a first packed source operand, and a second packed source operand, wherein elements of the destination are 32 bits in size and elements of the first source and the second source are 16 bits in size;

performing operations corresponding to the instruction, including to, for each element position of the destination:

multiplying a first element from the first source and a first element from the second source to generate a first result,

multiplying a second element from the first source and a second element from the second source to generate a second result,

adding the first result and the second result to generate a third result;

adding the third result to an element from the element position of the destination to generate a fourth result, and

storing the fourth result in the element position of the destination.

11. The method of claim 10 , further comprising rounding in connection with adding the first result and the second result.

12. The method of claim 10 , further comprising rounding in connection with adding the third result to the element from the element position of the destination.

13. The method of claim 10 , wherein the first source has a length of 128 bits and the second source has a length of 128 bits.

14. The method of claim 10 , wherein the destination has a length of 128 bits.

15. The method of claim 10 , wherein the first source has a length of 256 bits and the second source has a length of 256 bits.

16. The method of claim 10 , wherein the destination has a length of 256 bits.

17. The method of claim 10 , wherein the first source has a length of 512 bits and the second source has a length of 512 bits.

18. The method of claim 10 , wherein the destination has a length of 512 bits.

19. A system comprising:

a memory controller; and

a processor core including:

decode circuitry to decode a single instruction, the single instruction having fields to indicate an opcode, a packed destination operand, a first packed source operand, and a second packed source operand, wherein elements of the destination are 32 bits in size and elements of the first source and the second source are 16 bits in size;

a register file having a plurality of packed data registers including registers for the destination and source operands; and

execution circuitry, coupled to the decode circuitry, the execution circuitry to perform operations corresponding to the instruction, including to, for each element position of the destination:

multiply a first element from the first source and a first element from the second source to generate a first result,

multiply a second element from the first source and a second element from the second source to generate a second result,

add the first result and the second result to generate a third result;

add the third result to an element from the element position of the destination to generate a fourth result, and

store the fourth result in the element position of the destination.

20. The system of claim 19 , wherein the system is a system-on-a-chip.

Continuity (3)
Continuation 17487611 · Sep 28, 2021
Continuation 16338324
Related Publication 20230048998A1 · Feb 16, 2023