IP Library › Granted Patent US 11,467,832
Granted Patent B2
US 11,467,832 · App. 17/215,032 · Granted Oct 11, 2022

Vector floating-point classification

Inventors: Joseph Zbiciak (San Jose, CA); Brett L. Huber (Sugar Land, TX); Duc Bui (Grand Prairie, TX)
Assignee: Texas Instruments Incorporated
G06F9/30036G06F9/3013G06K9/6267
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 11,467,832
App. No.
17/215,032
Granted
Oct 11, 2022
Kind
B2
Abstract

A method to classify source data in a processor in response to a vector floating-point classification instruction includes specifying, in respective fields of the vector floating-point classification instruction, a source register containing the source data and a destination register to store classification indications for the source data. The source register includes a plurality of lanes that each contains a floating-point value and the destination register includes a plurality of lanes corresponding to the lanes of the source register. The method further includes executing the vector floating-point classification instruction by, for each lane in the source register, classifying the floating-point value in the lane to identify a type of the floating-point value, and storing a value indicative of the identified type in the corresponding lane of the destination register.

Claims (38)

1. A processor comprising:

a set of functional units; and

a set of registers coupled to the set of functional units, wherein:

each register of the set of functional units includes a set of lanes; and

the processor is configured to:

receive an instruction that specifies a source register of the set of registers and a destination register of the set of registers; and

based on the instruction, cause a functional unit of the set of functional units to, for each lane of the set of lanes of the source register:

determine whether a respective value stored in the respective lane of the source register matches a type within a set of types; and

store an indicator of whether the respective value matches in a respective lane of the set of lanes of the destination register.

2. The processor of claim 1 , wherein the set of types includes at least one of: a zero value, a subnormal value, a normal value, an infinite value, a not-a-number value, a quiet not-a-number value, and a signaling not-a-number value.

3. The processor of claim 1 , wherein:

the set of functional units includes a plurality of functional units each configured to, for each lane of the set of lanes of the source register:

determine whether the respective value stored in the respective lane of the source register matches a type within the set of types; and

store the indicator of whether the respective value matches in the respective lane of the set of lanes of the destination register; and

the instruction includes a field that specifies the functional unit from among the plurality of functional units.

4. The processor of claim 1 , wherein:

the set of functional units are arranged in a scalar datapath and a vector datapath; and

the instruction includes a field that specifies whether to execute the instruction using the scalar datapath or the vector datapath.

5. The processor of claim 1 , wherein, for each lane of the set of lanes of the source register, the respective value is a floating point value.

6. The processor of claim 1 , wherein the instruction includes a field that specifies whether the respective value stored in each lane of the set of lanes of the source register is a single precision floating point value or a double precision floating point value.

7. The processor of claim 1 , wherein, for each lane of the set of lanes of the source register, the respective value is a single precision floating point value.

8. The processor of claim 1 , wherein, for each lane of the set of lanes of the source register, the respective value is a double precision floating point value.

9. The processor of claim 1 , wherein the instruction includes a field that specifies whether the instruction is permitted to be performed in parallel with another instruction.

10. The processor of claim 1 , wherein the source register has a width of 512 bits.

11. A method comprising:

receiving an instruction that specifies a source register and a destination register, wherein each of the source register and the destination register have a set of lanes; and

based on the instruction, for each lane of the set of lanes of the source register:

determining whether a respective value stored in the respective lane matches a type within a set of types; and

storing an indicator of whether the respective value matches in a respective lane of the set of lanes of the destination register.

12. The method of claim 11 , wherein the set of types includes at least one of: a zero value, a subnormal value, a normal value, an infinite value, a not-a-number value, a quiet not-a-number value, and a signaling not-a-number value.

13. The method of claim 11 , wherein the instruction includes a field that specifies a functional unit from among a set of functional units of a processor to perform the determining of whether the respective value matches a type and the storing of the indicator.

14. The method of claim 11 , wherein the instruction includes a field that specifies a datapath from among a scalar datapath and a vector datapath of a processor to perform the determining of whether the respective value matches a type and the storing of the indicator.

15. The method of claim 11 , wherein, for each lane of the set of lanes of the source register, the respective value is a floating point value.

16. The method of claim 11 , wherein the instruction includes a field that specifies whether the respective value stored in each lane of the set of lanes of the source register is a single precision floating point value or a double precision floating point value.

17. The method of claim 11 , wherein, for each lane of the set of lanes of the source register, the respective value is a single precision floating point value.

18. The method of claim 11 , wherein, for each lane of the set of lanes of the source register, the respective value is a double precision floating point value.

19. The method of claim 11 , wherein the instruction includes a field that specifies whether the instruction is permitted to be performed in parallel with another instruction.

20. The method of claim 11 , wherein the source register has a width of 512 bits.

Continuity (2)
Continuation 16422688 · May 24, 2019
Related Publication 20210216319A1 · Jul 15, 2021