IP Library Granted Patent US 8,725,787
Granted Patent B2
US 8,725,787 · App. 13/456,761 · Granted May 13, 2014

Processor for performing multiply-add operations on packed data

Inventors: Alexander D. Peleg (Haifa, IL); Millind Mittal (South San Francisco, CA); Larry M. Mennemeier (Boulder Creek, CA); Benny Eitan (Haifa, IL); Carole Dulong (Saratoga, CA); Eiichi Kowashi (Ryugasaki, JP); Wolf Witt (Sunnyvale, CA)
Assignee: Intel Corporation
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 8,725,787
App. No.
13/456,761
Granted
May 13, 2014
Kind
B2
Abstract

A method and apparatus for including in a processor instructions for performing multiply-add operations on packed data. In one embodiment, a processor is coupled to a memory. The memory has stored therein a first packed data and a second packed data. The processor performs operations on data elements in said first packed data and said second packed data to generate a third packed data in response to receiving an instruction. At least two of the data elements in this third packed data storing the result of performing multiply-add operations on data elements in the first and second packed data.

Claims (32)

1. A processor comprising:

a register file to store, in a first register, a first packed data having a first plurality of packed data elements;

a cache to store a second packed data having a second plurality of packed data elements corresponding to the first plurality of packed data elements;

a decoder to receive a packed multiply-add instruction, specifying a destination operand, a size of the packed data elements, and a source operand; and

an execution unit, responsive to the decoded packed multiply-add instruction, to:

multiply corresponding packed data elements from the first packed data and the second packed data to generated a third plurality of corresponding products, add corresponding products from adjacent packed data elements pairwise to generate a fourth plurality of sums, and store the fourth plurality of sums as a third packed data in a register of the register file specified as the destination operand.

2. The processor of claim 1 , wherein the register of the register file specified as the destination operand is the first register.

3. The processor of claim 1 , wherein the second packed data is specified as the source operand.

4. A processor comprising:

a register file to store, in a first register, a first packed data having a first plurality of initial packed data elements;

a decoder to receive an instruction, specifying multiplications and other arithmetic combinations, a destination operand, a size of the packed data elements, and a source operand;

a second packed data having a second plurality of initial packed data elements corresponding to the first plurality of initial packed data elements; and

an execution unit, responsive to the decoded instruction, to: perform said multiplications of corresponding initial packed data elements from the first packed data and the second packed data to generate a third plurality of corresponding products each having twice the specified size of the initial packed data elements, perform said other arithmetic combinations using said corresponding products to generate a fourth plurality of combinations each having twice the specified size of the initial packed data elements, and store the fourth plurality of combinations as a third packed data in a register of the register file specified as the destination operand.

5. The processor of claim 4 , wherein said other arithmetic combinations specified are subtractions.

6. The processor of claim 4 , wherein said other arithmetic combinations specified are additions.

7. The processor of claim 4 , wherein the second packed data is specified as the source operand.

8. The processor of claim 7 , wherein the second packed data is specified as a memory operand.

9. The processor of claim 4 , wherein the initial packed data elements are integers.

10. The processor of claim 9 , wherein the initial packed data elements are signed integers.

11. The processor of claim 9 , wherein the initial packed data elements are 16-bit integers.

12. A processor system, comprising:

a register file to store, in a first register, a first packed data having a first plurality of initial packed data elements;

a decoder to receive an instruction, specifying multiplications and other arithmetic combinations, a destination operand, a size of the packed data elements, and a source operand;

a main memory bus interface to interface with a main memory, the main memory to store a copy of said instruction, of said first packed data, and of a second packed data having a second plurality of initial packed data elements corresponding to the first plurality of initial packed data elements; and

an execution unit, responsive to the decoded instruction, to: perform said multiplications of corresponding initial packed data elements from the first packed data and the second packed data to generate a third plurality of corresponding products each having twice the specified size of the initial packed data elements, perform said other arithmetic combinations using said corresponding products to generate a fourth plurality of combinations each having twice the specified size of the initial packed data elements, and store the fourth plurality of combinations as a third packed data in a register of the register file specified as the destination operand.

13. The processor system of claim 12 , wherein said other arithmetic combinations specified are subtractions.

14. The processor system of claim 12 , wherein said other arithmetic combinations specified are additions.

15. The processor system of claim 12 , wherein the second packed data is specified as the source operand.

16. The processor system of claim 15 , wherein the second packed data is specified as a memory operand.

17. The processor system of claim 12 , wherein the initial packed data elements are integers.

18. The processor system of claim 17 , wherein the initial packed data elements are signed integers.

19. The processor system of claim 17 , wherein the initial packed data elements are 16-bit integers.

Continuity (5)
Continuation 12409275 · Mar 23, 2009
Continuation 10861167 · Jun 4, 2004
Continuation 09989736 · Nov 19, 2001
Continuation 08522067 · Aug 31, 1995
Related Publication 20120216018A1 · Aug 23, 2012