IP Library Granted Patent US 9,898,285
Granted Patent B2
US 9,898,285 · App. 15/345,221 · Granted Feb 20, 2018

Method and apparatus for performing logical compare operations

Inventors: Rajiv Kapoor (University Place, WA); Ronen Zohar (Sunnyvale, CA); Mark Buxton (Chandler, AZ); Zeev Sperber (Zichron Yaakov, IL); Koby Gottlieb (Kiryat Tivon, IL)
Assignee: Intel Corporation
G06F9/30021G06F9/3016G06F9/30036G06F9/30058G06F12/0875G06F2212/452
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 9,898,285
App. No.
15/345,221
Granted
Feb 20, 2018
Kind
B2
Abstract

A method and apparatus for including in a processor instructions for performing logical-comparison and branch support operations on packed or unpacked data. In one embodiment, instruction decode logic decodes instructions for an execution unit to operate on packed data elements including logical comparisons. A register file including 128-bit packed data registers stores packed single-precision floating point (SPFP) and packed integer data elements. The logical comparisons may include comparison of SPFP data elements and comparison of integer data elements and setting at least one bit to indicate the results. Based on these comparisons, branch support actions are taken. Such branch support actions may include setting the at least one bit, which in turn may be utilized by a branching unit in response to a branch instruction. Alternatively, the branch support actions may include branching to an indicated target code location.

Claims (33)

1. A processor, comprising:

a cache to store instructions;

an instruction decoder to decode the instructions;

a set of 128-bit packed data registers to store packed single-precision floating point (SPFP) data elements and packed integer data elements;

an execution unit comprising:

comparison circuitry to execute a packed SPFP comparison instruction to compare a first packed SPFP data element and a second packed SPFP data element and to responsively set at least one bit in a register to indicate a result of the packed SPFP comparison;

the comparison circuitry to further execute a packed integer comparison instruction to compare a first packed integer data element and a second packed integer data element and to responsively set the at least one bit in the register to indicate a result of the packed integer comparison; and

a branch circuit to execute a branch instruction to determine a target code location based on the at least one bit set in the register by the packed SPFP or packed integer comparison instructions.

2. The processor of claim 1 wherein the set of 128-bit packed data registers comprises at least one set of physical registers for storing both scalar floating point values and vector data elements.

3. The processor of claim 1 further comprising:

instruction fetch circuitry to fetch the instructions.

4. The processor of claim 1 further comprising:

a memory interface to couple the processor to a system memory.

5. The processor of claim 1 further comprising:

a co-processor interface to couple the processor to one or more external processors.

6. The processor of claim 1 further comprising:

a data storage interface to couple the processor to a data storage device.

7. A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform the operations of:

storing instruction in a cache;

decoding the instructions;

storing packed single-precision floating point (SPFP) data elements and packed integer data elements in a set of 128-bit packed data registers;

executing a packed SPFP comparison instruction to compare a first packed SPFP data element and a second packed SPFP data element and responsively setting at least one bit in a register to indicate a result of the packed SPFP comparison;

executing a packed integer comparison instruction to compare a first packed integer data element and a second packed integer data element and responsively setting the at least one bit in the register to indicate a result of the packed integer comparison; and

executing a branch instruction to determine a target code location based on the at least one bit set in the register by the packed SPFP or packed integer comparison instructions.

8. The non-transitory machine-readable medium of claim 7 wherein the set of 128-bit packed data registers comprises at least one set of physical registers for storing both scalar floating point values and vector data elements.

9. A method comprising:

storing instruction in a cache;

decoding the instructions;

storing packed single-precision floating point (SPFP) data elements and packed integer data elements in a set of 128-bit packed data registers;

executing a packed SPFP comparison instruction to compare a first packed SPFP data element and a second packed SPFP data element and responsively setting at least one bit in a register to indicate a result of the packed SPFP comparison;

executing a packed integer comparison instruction to compare a first packed integer data element and a second packed integer data element and responsively setting the at least one bit in the register to indicate a result of the packed integer comparison; and

executing a branch instruction to determine a target code location based on the at least one bit set in the register by the packed SPFP or packed integer comparison instructions.

10. The method of claim 9 wherein the set of 128-bit packed data registers comprises at least one set of physical registers for storing both scalar floating point values and vector data elements.

Continuity (6)
Continuation 15015991 · Feb 4, 2016
Continuation 14684412 · Apr 12, 2015
Continuation 13763598 · Feb 8, 2013
Continuation 13082726 · Apr 8, 2011
Continuation 11525706 · Sep 21, 2006
Related Publication 20170161068A1 · Jun 8, 2017