IP Library › Granted Patent US 12,613,700
Granted Patent B2
US 12,613,700 · App. 17/514,549 · Granted Apr 28, 2026

Zero extended 52-bit integer fused multiply add and subtract instructions

Inventors: Fabian Boemer (Santa Barbara, CA); Vinodh Gopal (Westborough, MA); Gelila Seifu (San Jose, CA); Sejun Kim (Hillsboro, OR); Jack Crawford (London, GB)
Assignee: Intel Corporation
G06F9/30145G06F7/523G06F7/5443G06F9/3001G06F9/30036G06F9/30038G06F9/30101
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 12,613,700
App. No.
17/514,549
Granted
Apr 28, 2026
Kind
B2
Abstract

A processor includes an instruction set architecture that having instructions to perform data parallel multiply on a set of 52-bit integers and further instructions that additionally perform an add or subtract on intermediate products of the data parallel multiply. A 52-bit result of the operations is then zero extended to 64-bits.

Claims (47)

1 . A processor comprising:

first circuitry to decode an instruction, the instruction to indicate a first source operand, a second source operand, a third source operand and a destination operand; and

second circuitry to perform operations corresponding to the instruction, including to:

perform an element-wise multiply on 52-bit data values in corresponding 64-bit data elements of the second source operand and the third source operand to generate a set of 104-bit intermediate products; and

when the instruction has a first opcode:

zero-extend high 52 bits of the set of 104-bit intermediate products to first 64-bit values;

perform an arithmetic operation on the first 64-bit values and second 64-bit values within 64-bit data elements of the first source operand to generate 64-bit intermediate values;

zero-extend low 52 bits of the 64-bit intermediate values to generate 64-bit result values; and

store the 64-bit result values in the destination operand;

wherein the second circuitry is further to:

when the instruction has a different opcode:

perform an arithmetic operation on the high 52 bits of the 104-bit intermediate products and low 52 bits of the 64-bit data elements of the first source operand to generate 52-bit or 53-bit intermediate values;

zero-extend the 52-bit or 53-bit intermediate values to generate 64-bit data values; and

store the 64-bit data values in the destination operand.

2 . The processor as in claim 1 , wherein the arithmetic operation to be performed when the instruction has the first opcode is an addition operation and the first opcode is associated with a 52-bit multiply-add instruction.

3 . The processor as in claim 1 , wherein the arithmetic operation to be performed when the instruction has the first opcode is a subtraction operation and the first opcode is associated with a 52-bit multiply-subtract instruction.

4 . The processor as in claim 1 , wherein the intermediate values to be generated by the arithmetic operation when the instruction has the different opcode are the 53-bit intermediate values that include a 52-bit intermediate value and an overflow bit, the arithmetic operation to be performed when the instruction has the different opcode is an addition operation, and the different opcode is associated with a 52-bit multiply-add instruction.

5 . The processor as in claim 1 , wherein the intermediate values to be generated by the arithmetic operation when the instruction has the different opcode are the 52-bit intermediate values and the second circuitry is to set a bit in a mask in response to a determination that one or more of the intermediate values exceeds 52-bits, wherein the arithmetic operation to be performed when the instruction has the different opcode is a subtraction operation and the different opcode is associated with a 52-bit multiply-subtract instruction or the arithmetic operation to be performed when the instruction has the different opcode is an addition operation and the different opcode is associated with a 52-bit multiply-add instruction.

6 . The processor as in claim 1 , wherein the processor is a general-purpose processing unit or a general-purpose graphics processing unit.

7 . A method comprising:

fetching and decoding an instruction, the instruction having multiple source operands and one or more destination operands; and

performing operations corresponding to the instruction, including:

performing an element-wise multiply on 52-bit data values in corresponding 64-bit data elements of two of the multiple source operands to generate a set of 104-bit intermediate products;

zero-extending high 52 bits of the set of 104-bit intermediate products to generate 64-bit result values when the instruction has a first opcode;

zero-extending low 52 bits of the set of 104-bit intermediate products to generate the 64-bit result values when the instruction has a different opcode than the first opcode; and

packing the 64-bit result values into a packed data type and storing the packed data type in the one or more destination operands,

wherein performing the operations corresponding to the instruction additionally includes, when the instruction has a third opcode:

zero-extending the high 52 bits of the 104-bit intermediate products to generate first 64-bit intermediate values;

adding to or subtracting from the first 64-bit intermediate values using 64-bit data elements of an additional source operand of the multiple source operands to generate second 64-bit intermediate values; and

zero-extending the low 52 bits of the second 64-bit intermediate values to the 64-bit result values before packing the 64-bit result values into the packed data type.

8 . The method as in claim 7 , wherein performing the operations corresponding to the instruction additionally includes:

when the instruction has a fourth opcode:

adding to or subtracting from the high 52 bits of the 104-bit intermediate products and the low 52 bits of the 64-bit data elements of an additional source operand of the multiple source operands to generate intermediate values, wherein the intermediate values are 52-bit or 53-bit intermediate values; and

zero-extending the intermediate values to generate the 64-bit result values before packing the 64-bit result values into the packed data type.

9 . A processor comprising:

first circuitry to decode a first instruction and a second instruction, the first instruction to indicate a first source operand, a second source operand, a third source operand and a first destination operand, the second instruction to indicate a fourth source operand, a fifth source operand, a sixth source operand and a second destination operand; and

second circuitry to perform operations corresponding to the first instruction, including to:

perform an element-wise multiply on 52-bit data values in corresponding 64-bit data elements of the second source operand and the third source operand to generate a first set of 104-bit intermediate products;

zero-extend high 52 bits of the first set of 104-bit intermediate products to first 64-bit values;

perform an arithmetic operation on the first 64-bit values and second 64-bit values within 64-bit data elements of the first source operand to generate 64-bit intermediate values;

zero-extend low 52 bits of the 64-bit intermediate values to generate 64-bit result values; and

store the 64-bit result values in the first destination operand,

wherein the second circuitry is further to perform operations corresponding to the second instruction, including to:

perform an element-wise multiply on 52-bit data values in corresponding 64-bit data elements of the fifth source operand and the sixth source operand to generate a second set of 104-bit intermediate products;

perform an arithmetic operation on high 52 bits of the second set of 104-bit intermediate products and low 52 bits of 64-bit data elements of the fourth source operand to generate 52-bit or 53-bit intermediate values;

zero-extend the 52-bit or 53-bit intermediate values to generate second 64-bit result values; and

store the second 64-bit result values in the second destination operand.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 11, 2022
From: BOEMER, FABIAN; GOPAL, VINODH; SEIFU, GELILA; KIM, SEJUN; CRAWFORD, JACK
To: INTEL CORPORATION
Reel/Frame 058623/0709 →
Continuity (1)
Related Publication 20230136291A1 · May 4, 2023
References Cited (17)
US 11593295B2 · Fleming, Jr. · 2023 [cited by examiner]
US 20060136540A1 · Tang et al. · 2006 [cited by applicant]
US 20060277244A1 · Renno · 2006 [cited by examiner]
US 20160041813A1 · Narayanamoorthy et al. · 2016 [cited by applicant]
US 20190042235A1 · Sade · 2019 [cited by examiner]
US 20190042242A1 · Das et al. · 2019 [cited by applicant]
US 20190056916A1 · Varma et al. · 2019 [cited by applicant]
US 20200026515A1 · Valentine · 2020 [cited by examiner]
US 20230205489A1 · Drane · 2023 [cited by applicant]
EP 4174643A1 · 2023 [cited by applicant]
Notification of CN Publication for CN202211126497.2, May 5, 2023, Pub. No. CN116069291A, 5 pages. [cited by applicant]
Examination Report (Comm Pursuant to Article 94(3)) for EP Application No. 22195999.2, Nov. 24, 2023, 8 pages. [cited by applicant]
Kostic Dusan et al: “Using the New VPMADD Instructions for the New Post Quantum Key Encapsulation Mechanism SIKE”, 2019 IEEE 26th Symposium on Computer Arithmetic (Arith), IEEE, Jun. 10, 2019 (Jun. 10, 2019), pp. 215-21… [cited by applicant]
European Search Report and Search Opinion, EP App. No. 22195999.2, Feb. 15, 2023, 10 pages. [cited by applicant]
Office Action, EP App. No. 22195999.2, Nov. 24, 2023, 7 pages. [cited by applicant]
Peroni Daniel et al: “Runtime Efficiency-Accuracy Tradeoff Using Configurable Floating Point Multiplier”, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, IEEE, USA, vol. 39, No. 2, Dec. 4,… [cited by applicant]
Extended European Search Report for EP22195999, dated Feb. 15, 2023, 11 pages. [cited by applicant]