IP Library › Granted Patent US 12,443,409
Granted Patent B2
US 12,443,409 · App. 17/476,726 · Granted Oct 14, 2025

Conditional modular subtraction instruction

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/49G06F7/722G06F9/3001G06F9/30036G06F9/30038H04L9/008H04L9/30
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,443,409
App. No.
17/476,726
Granted
Oct 14, 2025
Kind
B2
Abstract

One embodiment provides a processor comprising first circuitry to decode an instruction into a decoded instruction, the instruction to indicate a first source operand and a second source operand and second circuitry including a processing resource to execute the decoded instruction, wherein responsive to the decoded instruction, the processing resource is to output a result of first source operand data minus second source operand data in response to a determination by the processing resource that the first source operand data is greater than or equal to the second source operand data, otherwise the processing resource is to output the first source operand data.

Claims (29)

1. A processor comprising:

first circuitry to decode an instruction, the instruction to indicate a first source packed data operand and a second source packed data operand, the first source packed data operand to have a first plurality of integer data elements and the second source packed data operand to have a second plurality of integer data elements; and

second circuitry including a processing resource to perform operations corresponding to the instruction, including to:

determine whether each integer data element of the first plurality of integer data elements of the first source packed data operand is greater than or equal to a corresponding integer data element of the second plurality of integer data elements of the second source packed data operand;

for each integer data element of the first plurality of integer data elements that is greater than or equal to the corresponding integer data element of the second plurality of integer data elements, output a corresponding result data element in a result packed data that is equal to the integer data element of the first plurality of integer data elements minus the corresponding integer data element of the second plurality of integer data elements; and

for each integer data element of the first plurality of integer data elements that is not greater than or equal to the corresponding integer data element of the second plurality of integer data elements, output the corresponding integer data element of the first plurality of integer data elements as a corresponding result data element in the result packed data.

2. The processor as in claim 1 , wherein the first plurality of integer data elements and the second plurality of integer data elements are 32-bit integer data elements.

3. The processor as in claim 1 , wherein the first plurality of integer data elements and the second plurality of integer data elements are 64-bit integer data elements.

4. The processor as in claim 1 , wherein the instruction is to indicate a destination operand to specify a destination and the processing resource is to store the result packed data to the destination.

5. The processor as in claim 4 , further comprising a register file having a plurality of registers of differing widths, wherein the destination operand is to specify a first register within the register file and the first source packed data operand or the second source packed data operand are to be stored in a second register within the register file.

6. The processor as in claim 5 , wherein the destination operand is to specify a 128-bit register, a 256-bit register, or a 512-bit register.

7. An apparatus comprising:

decoder circuitry to decode an instruction, the instruction to include a field for an identifier of a first source packed data operand having a first plurality of integer data elements, a field for an identifier of a second source packed data operand having a second plurality of integer data elements, and a field for an opcode, the opcode to indicate execution circuitry is to perform a conditional subtraction operations on the first source packed data operand and the second source packed data operand; and

the execution circuitry to perform the conditional subtraction operations according to the opcode, including to perform the conditional subtraction operations in parallel on each integer data element of the first plurality of integer data elements and corresponding integer data elements of the second plurality of integer data elements, the execution circuitry including:

a first circuit to generate subtraction results based on integer data element of the first plurality of integer data elements minus corresponding integer data elements of the second plurality of integer data elements and status flags to indicate signs of the subtraction results; and

a second circuit to output the integer data elements of the first plurality of integer data elements when the status flags indicate that the subtraction results are negative and otherwise to output the subtraction results.

8. The apparatus as in claim 7 , wherein the field for the identifier of the first source packed data operand or the second source operand is to identify a vector register.

9. The apparatus as in claim 7 , wherein the field for the identifier of the first source packed data operand is to identify a memory location.

10. The apparatus as in claim 7 , wherein the integer data elements of the first source packed data operand and the integer data elements of the second source packed data operand are 32-bit integer data elements.

11. The apparatus as in claim 7 , wherein the integer data elements of the first source packed data operand and the integer data elements of the second source packed data operand are 64-bit integer data elements.

12. The apparatus as in claim 7 , wherein the instruction is to indicate a destination to store the output integer data elements and the output subtraction results and destination includes a 128-bit, 256-bit, or 512-bit register.

13. A processor comprising:

first circuitry to decode an instruction, the instruction to indicate a first source packed data operand and a second source operand, the first source packed data operand to have a first plurality of integer data elements and the second source operand to have an integer data element; and

second circuitry including a processing resource to perform operations corresponding to the instruction, including to:

determine whether each integer data element of the first plurality of integer data elements is greater than or equal to the integer data element of the second source operand;

for each integer data element of the first plurality of integer data elements that is greater than or equal to the integer data element of the second source operand, output a corresponding result data element in a result packed data that is equal to the integer data element of the first plurality of integer data elements minus the integer data element of the second source operand; and

for each integer data element of the first plurality of integer data elements that is not greater than or equal to the integer data element of the second source operand, output the corresponding integer data element of the first plurality of integer data elements as a corresponding result data element in the result packed data.

14. The processor as in claim 13 , wherein the first plurality of integer data elements and the second plurality of integer data elements are either 32-bit integer data elements or 64-bit integer data elements.

15. The processor as in claim 13 , further comprising a register file having a plurality of registers of differing widths, wherein the destination operand is to specify a first register within the register file and the first source packed data operand or the second source packed data operand are to be stored in a second register within the register file.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2021
From: BOEMER, FABIAN; GOPAL, VINODH; SEIFU, GELILA; KIM, SEJUN; CRAWFORD, JACK
To: INTEL CORPORATION
Reel/Frame 058346/0001 →
Continuity (1)
Related Publication 20230081763A1 · Mar 16, 2023
References Cited (31)
US 6036350A · Mennemeier · 2000 [cited by examiner]
US 6185670B1 · Huff · 2001 [cited by examiner]
US 6470440B1 · Nguyen · 2002 [cited by examiner]
US 6564314B1 · May et al. · 2003 [cited by applicant]
US 7196708B2 · Dorojevets et al. · 2007 [cited by applicant]
US 8205097B2 · Malzahn et al. · 2012 [cited by applicant]
US 8995651B1 · Lee et al. · 2015 [cited by applicant]
US 20030061539A1 · Murray · 2003 [cited by examiner]
US 20050027969A1 · Simon · 2005 [cited by examiner]
US 20050219422A1 · Dorojevets et al. · 2005 [cited by applicant]
US 20110153993A1 · Gopal et al. · 2011 [cited by applicant]
US 20110276790A1 · Olson · 2011 [cited by examiner]
US 20150006857A1 · Kuo · 2015 [cited by examiner]
US 20180046900A1 · Dally · 2018 [cited by examiner]
US 20180189064A1 · Plotnikov et al. · 2018 [cited by applicant]
US 20190079762A1 · Heinecke · 2019 [cited by examiner]
US 20190196826A1 · Madduri et al. · 2019 [cited by applicant]
US 20200210199A1 · Ould-Ahmed-Vall · 2020 [cited by examiner]
US 20230140257A1 · Boemer et al. · 2023 [cited by applicant]
DE 102022124466A1 · 2023 [cited by applicant]
EP 4152147A1 · 2023 [cited by applicant]
CN Publication Notificaiton for CN202210981945.0, 4 pages, Mar. 24, 2023. [cited by applicant]
Intention to Grant, EP App. No. 22188194.9, Jun. 25, 2024, 6 pages. [cited by applicant]
Extended European Search Report for EP22188194.9, 7 pages, Feb. 6, 2023. [cited by applicant]
European Search Report and Search Opinion, EP App. No. 22188194.9, Feb. 6, 2023, 7 pages. [cited by applicant]
Publication of CN Application No. 202211158890.X, mailed May 15, 2023, 4 pages. [cited by applicant]
Amos R. Omondi, Cryptography Arithmetic, 2020, Springer, pp. 143-154. (Year: 2020). [cited by applicant]
Decision to Grant, EP App. No. 22188194.9, Oct. 10, 2024, 2 pages. [cited by applicant]
Intel, Intel 64 and IA-32 Architecture Software Developer's Manual, 2015, pp. 3-1 to 3-30. (Year: 2025). [cited by applicant]
John Hennessy, Computer Architecture, 2012, Elsevier, pp. 236-241. (Year: 2012). [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/514,523, Mar. 28, 2025, 17 pages. [cited by applicant]