US2022326946A1PendingUtilityA1

Apparatus and method for scaling pre-scaled results of complex mutiply-accumulate operations on packed real and imaginary data elements

Assignee: INTEL CORPPriority: Sep 29, 2017Filed: Jan 31, 2022Published: Oct 13, 2022
Est. expirySep 29, 2037(~11.2 yrs left)· nominal 20-yr term from priority
G06F 7/5443G06F 9/3893G06F 7/52G06F 9/3001G06F 2207/3828G06F 7/50G06F 7/4812G06F 9/30036G06F 17/142G06F 9/30038
64
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

An apparatus and method for performing a transform on complex data. For example, one embodiment of a processor comprises: multiplier circuitry to multiply packed real N-bit data elements in the first source register with packed real M-bit data elements in the second source register and to multiply packed imaginary N-bit data elements in the first source register with packed imaginary M-bit data elements in the second source register to generate at least four real products, adder circuitry to subtract a first selected real product from a second selected real product to generate a first temporary result and to subtract a third selected real product from a fourth selected real product to generate a second temporary result, the adder circuitry to add the first temporary result to a first packed N-bit data element from the third source register to generate a first pre-scaled result, to subtract the first temporary result from the first packed N-bit data element to generate a second pre-scaled result, to add the second temporary result to a second packed N-bit data element from the third source register to generate a third pre-scaled result, and to subtract the second temporary result from the second packed N-bit data element to generate a fourth pre-scaled result; scaling circuitry to scale the first, second, third and fourth pre-scaled results to a specified bit width to generate first, second, third, and fourth final results; and a destination register to store the first, second, third, and fourth final results in specified data element positions.

Claims

exact text as granted — not AI-modified
1 .- 33 . (canceled) 
     
     
         34 . A method comprising:
 decoding a first instruction to generate a decoded instruction;   storing a first plurality of packed N-bit real and imaginary data elements in a first source register;   storing a second plurality of packed M-bit real and imaginary data elements in a second source register;   storing a third plurality of packed N-bit real and imaginary data elements in a third source register;   multiplying packed real N-bit data elements in the first source register with packed imaginary M-bit data elements in the second source register and multiplying packed imaginary N-bit data elements in the first source register with packed real M-bit data elements in the second source register to generate at least four imaginary products;   adding a first selected imaginary product and a second selected imaginary product to generate a first temporary result and to adding a third selected imaginary product and a fourth selected imaginary product to generate a second temporary result   adding the first temporary result to a first packed N-bit data element from the third source register to generate a first pre-scaled result, subtracting the first temporary result from the first packed N-bit data element to generate a second pre-scaled result, adding the second temporary result to a second packed N-bit data element from the third source register to generate a third pre-scaled result, and subtracting the second temporary result from the second packed N-bit data element to generate a fourth pre-scaled result;   scaling the first, second, third and fourth pre-scaled results to a specified bit width to generate first, second, third, and fourth final results; and   storing the first, second, third, and fourth final results in specified data element positions.   
     
     
         35 . The method of  claim 34 , wherein the scaling is performed in accordance with bit values in an immediate of the first instruction. 
     
     
         36 . The method of  claim 35 , wherein the immediate bit values comprise a first value to indicate no shifting, a second value to indicate a 1-bit shift, and a third value to indicate a 2-bit shift. 
     
     
         37 . The method of  claim 34 , wherein N=32 and M=16 and wherein the first, second, and third source registers comprise 128-bit packed data registers. 
     
     
         38 . The method of  claim 34 , wherein the first plurality of packed real and imaginary data elements, and the third plurality of packed real and imaginary data elements, comprise complex data of input functions for an N×M Fast Fourier Transform (FFT) and wherein the second source register comprises real and imaginary data elements for a twiddle factor for the FFT. 
     
     
         39 . The method of  claim 38 , further comprising:
 sign-extending the first, second, third, and fourth selected real products or the first and second temporary results to a specified bit width.   
     
     
         40 . The method of  claim 39 , further comprising:
 sign-extending the first and second N-bit data elements from the third source register.   
     
     
         41 . The method of  claim 40 , further comprising:
 performing rounding and/or saturation of the pre-scaled results and/or the first, second, third, and fourth final results.   
     
     
         42 . A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform operations of:
 decoding a first instruction to generate a decoded instruction;   storing a first plurality of packed N-bit real and imaginary data elements in a first source register;   storing a second plurality of packed M-bit real and imaginary data elements in a second source register;   storing a third plurality of packed N-bit real and imaginary data elements in a third source register;   multiplying packed real N-bit data elements in the first source register with packed imaginary M-bit data elements in the second source register and multiplying packed imaginary N-bit data elements in the first source register with packed real M-bit data elements in the second source register to generate at least four imaginary products;   adding a first selected imaginary product and a second selected imaginary product to generate a first temporary result and to adding a third selected imaginary product and a fourth selected imaginary product to generate a second temporary result   adding the first temporary result to a first packed N-bit data element from the third source register to generate a first pre-scaled result, subtracting the first temporary result from the first packed N-bit data element to generate a second pre-scaled result, adding the second temporary result to a second packed N-bit data element from the third source register to generate a third pre-scaled result, and subtracting the second temporary result from the second packed N-bit data element to generate a fourth pre-scaled result;   scaling the first, second, third and fourth pre-scaled results to a specified bit width to generate first, second, third, and fourth final results; and   storing the first, second, third, and fourth final results in specified data element positions.   
     
     
         43 . The machine-readable medium of  claim 42 , wherein the scaling is performed in accordance with bit values in an immediate of the first instruction. 
     
     
         44 . The machine-readable medium of  claim 43 , wherein the immediate bit values comprise a first value to indicate no shifting, a second value to indicate a 1-bit shift, and a third value to indicate a 2-bit shift. 
     
     
         45 . The machine-readable medium of  claim 42 , wherein N=32 and M=16 and wherein the first, second, and third source registers comprise 128-bit packed data registers. 
     
     
         46 . The machine-readable medium of  claim 42 , wherein the first plurality of packed real and imaginary data elements, and the third plurality of packed real and imaginary data elements, comprise complex data of input functions for an N×M Fast Fourier Transform (FFT) and wherein the second source register comprises real and imaginary data elements for a twiddle factor for the FFT. 
     
     
         47 . The machine-readable medium of  claim 45 , further comprising program code to cause the machine to perform the operations of:
 sign-extending the first, second, third, and fourth selected real products or the first and second temporary results to a specified bit width.   
     
     
         48 . The machine-readable medium of  claim 47 , further comprising program code to cause the machine to perform the operations of:
 sign-extending the first and second N-bit data elements from the third source register.   
     
     
         49 . The machine-readable medium of  claim 48 , further comprising program code to cause the machine to perform the operations of:
 performing rounding and/or saturation of the pre-scaled results and/or the first, second, third, and fourth final results.   
     
     
         50 . An apparatus comprising:
 means for decoding a first instruction to generate a decoded instruction;   means for storing a first plurality of packed N-bit real and imaginary data elements in a first source register;   means for storing a second plurality of packed M-bit real and imaginary data elements in a second source register;   means for storing a third plurality of packed N-bit real and imaginary data elements in a third source register;   means for multiplying packed real N-bit data elements in the first source register with packed imaginary M-bit data elements in the second source register and multiplying packed imaginary N-bit data elements in the first source register with packed real M-bit data elements in the second source register to generate at least four imaginary products;   means for adding a first selected imaginary product and a second selected imaginary product to generate a first temporary result and to adding a third selected imaginary product and a fourth selected imaginary product to generate a second temporary result   means for adding the first temporary result to a first packed N-bit data element from the third source register to generate a first pre-scaled result, subtracting the first temporary result from the first packed N-bit data element to generate a second pre-scaled result, adding the second temporary result to a second packed N-bit data element from the third source register to generate a third pre-scaled result, and subtracting the second temporary result from the second packed N-bit data element to generate a fourth pre-scaled result;   means for scaling the first, second, third and fourth pre-scaled results to a specified bit width to generate first, second, third, and fourth final results; and   means for storing the first, second, third, and fourth final results in specified data element positions.   
     
     
         51 . The apparatus of  claim 50 , wherein the scaling is performed in accordance with bit values in an immediate of the first instruction. 
     
     
         52 . The apparatus of  claim 51 , wherein the immediate bit values comprise a first value to indicate no shifting, a second value to indicate a 1-bit shift, and a third value to indicate a 2-bit shift. 
     
     
         53 . The apparatus of  claim 50 , wherein N=32 and M=16 and wherein the first, second, and third source registers comprise 128-bit packed data registers. 
     
     
         54 . The apparatus of  claim 50 , wherein the first plurality of packed real and imaginary data elements, and the third plurality of packed real and imaginary data elements, comprise complex data of input functions for an N×M Fast Fourier Transform (FFT) and wherein the second source register comprises real and imaginary data elements for a twiddle factor for the FFT. 
     
     
         55 . The apparatus of  claim 54 , further comprising:
 means for sign-extending the first, second, third, and fourth selected real products or the first and second temporary results to a specified bit width.   
     
     
         56 . The apparatus of  claim 55 , further comprising:
 means for sign-extending the first and second N-bit data elements from the third source register.   
     
     
         57 . The apparatus of  claim 56 , further comprising:
 means for performing rounding and/or saturation of the pre-scaled results and/or the first, second, third, and fourth final results.

Join the waitlist — get patent alerts

Track US2022326946A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.