IP Library › Granted Patent US 10,664,277
Granted Patent B2
US 10,664,277 · App. 15/721,313 · Granted May 26, 2020

Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words

Inventors: Venkateswara Madduri (Austin, TX); Elmoustapha Ould-Ahmed-Vall (Chandler, AZ); Robert Valentine (Kiryat Tivon, IL); Jesus Corbal (King City, OR); Mark Charney (Lexington, MA)
Assignee: Intel Corporation
G06F9/30145G06F9/3001G06F9/30036G06F9/30105
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 10,664,277
App. No.
15/721,313
Granted
May 26, 2020
Kind
B2
Abstract

Embodiments of systems, apparatuses, and methods for dual complex number by complex conjugate multiplication in a processor are described. For example, execution circuitry executes a decoded instruction to multiplex data values from a plurality of packed data element positions in the first and second packed data source operands to at least one multiplier circuit, the first and second packed data source operands including a plurality of pairs complex numbers, each pair of complex numbers including data values at shared packed data element positions in the first and second packed data source operands; calculate a real part and an imaginary part of a product of a first complex number and a complex conjugate of a second complex number; and store the real result to a first packed data element position in the destination operand and store the imaginary result to a second packed data element position in the destination operand.

Claims (41)

1. An apparatus comprising:

a decoder to decode an instruction having fields for a first and a second packed data source operand, and a packed data destination operand, and

execution circuitry to execute the decoded instruction to:

multiplex data values from a plurality of packed data element positions in the first and second packed data source operands to at least one multiplier circuit, the first packed data source operand including a first plurality of complex numbers and the second packed data source operand including a second plurality of complex numbers, wherein the first plurality of complex numbers and second plurality of complex numbers comprise a plurality of pairs of complex numbers, wherein each complex number from the first plurality of complex numbers is paired with a corresponding complex number from the second plurality of complex numbers having shared packed data element positions in the first and second packed data source operands;

for each pair of complex numbers:

calculate a real part and an imaginary part of a product of a first complex number and a complex conjugate of a second complex number;

store the real part to a first packed data element position in the destination operand and store the imaginary part to a second packed data element position in the destination operand;

round the real part of the product of the first complex number and the complex conjugate of the second complex number based on a rounding type; and

round the imaginary part of the product of the first complex number and the complex conjugate of the second complex number based on the rounding type, wherein the rounding type for the real part and the imaginary part of the product is selected using a plurality of control bits, the rounding type including truncation or convergent rounding.

2. The apparatus of claim 1 , wherein the first packed data source operand is a packed data register and the second packed data source operand is a memory location.

3. The apparatus of claim 1 , wherein the first packed data source operand is a packed data register and the second packed data source operand is a packed data register.

4. The apparatus of claim 1 , wherein to calculate a real part of a product of a first complex number and a complex conjugate of a second complex number the execution circuitry is further to:

output the real part and the imaginary part of the product of each pair of complex numbers to an adder network to calculate a real result and an imaginary result.

5. The apparatus of claim 1 , wherein the packed data destination operand is a packed data register and the first packed data element position is a lower 16 bits of the packed data register and the second packed data element position is a next 16 bits of the packed data register.

6. A method comprising:

decoding an instruction having fields for a first and a second packed data source operand, and a packed data destination operand, and

executing the decoded instruction, by execution circuitry, to:

multiplex data values from a plurality of packed data element positions in the first and second packed data source operands to at least one multiplier circuit, the first packed data source operand including a first plurality of complex numbers and the second packed data source operand including a second plurality of complex numbers, wherein the first plurality of complex numbers and second plurality of complex numbers comprise a plurality of pairs of complex numbers, wherein each complex number from the first plurality of complex numbers is paired with a corresponding complex number from the second plurality of complex numbers having shared packed data element positions in the first and second packed data source operands;

for each pair of complex numbers:

calculate a real part and an imaginary part of a product of a first complex number and a complex conjugate of a second complex number;

store the real part to a first packed data element position in the destination operand and store the imaginary part to a second packed data element position in the destination operand;

round the real part of the product of the first complex number and the complex conjugate of the second complex number based on a rounding type; and

round the imaginary part of the product of the first complex number and the complex conjugate of the second complex number based on the rounding type, wherein the rounding type for the real part and the imaginary part of the product is selected using a plurality of control bits, the rounding type including truncation or convergent rounding.

7. The method of claim 6 , wherein the first packed data source operand is a packed data register and the second packed data source operand is a memory location.

8. The method of claim 6 , wherein the first packed data source operand is a packed data register and the second packed data source operand is a packed data register.

9. The method of claim 6 , wherein to calculate a real part of a product of a first complex number and a complex conjugate of a second complex number the execution circuitry is further to:

output the real part and the imaginary part of the product of each pair of complex numbers to an adder network to calculate a real result and an imaginary result.

10. The method of claim 6 , wherein the packed data destination operand is a packed data register and the first packed data element position is a lower 16 bits of the packed data register and the second packed data element position is a next 16 bits of the packed data register.

11. A non-transitory machine-readable medium storing an instruction which when executed by a processor causes the processor to perform a method, the method comprising:

decoding an instruction having fields for a first and a second packed data source operand, and a packed data destination operand, and

executing the decoded instruction, by execution circuitry, to:

multiplex data values from a plurality of packed data element positions in the first and second packed data source operands to at least one multiplier circuit, the first packed data source operand including a first plurality of complex numbers and the second packed data source operand including a second plurality of complex numbers, wherein the first plurality of complex numbers and second plurality of complex numbers comprise a plurality of pairs of complex numbers, wherein each complex number from the first plurality of complex numbers is paired with a corresponding complex number from the second plurality of complex numbers having shared packed data element positions in the first and second packed data source operands;

for each pair of complex numbers:

calculate a real part and an imaginary part of a product of a first complex number and a complex conjugate of a second complex number;

store the real part to a first packed data element position in the destination operand and store the imaginary part to a second packed data element position in the destination operand;

round the real part of the product of the first complex number and the complex conjugate of the second complex number based on a rounding type; and

round the imaginary part of the product of the first complex number and the complex conjugate of the second complex number based on the rounding type, wherein the rounding type for the real part and the imaginary part of the product is selected using a plurality of control bits, the rounding type including truncation or convergent rounding.

12. The non-transitory machine-readable medium of claim 11 , wherein the first packed data source operand is a packed data register and the second packed data source operand is a memory location.

13. The non-transitory machine-readable medium of claim 11 , wherein the first packed data source operand is a packed data register and the second packed data source operand is a packed data register.

14. The non-transitory machine-readable medium of claim 11 , wherein to calculate a real part of a product of a first complex number and a complex conjugate of a second complex number the execution circuitry is further to:

output the real part and the imaginary part of the product of each pair of complex numbers to an adder network to calculate a real result and an imaginary result.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2017
From: MADDURI, VENKATESWARA; OULD-AHMED-VALL, ELMOUSTAPHA; VALENTINE, ROBERT; CORBAL, JESUS; CHARNEY, MARK
To: INTEL CORPORATION
Reel/Frame 044394/0072 →
Continuity (1)
Related Publication 20190102191A1 · Apr 4, 2019