IP Library › Granted Patent US 10,089,076
Granted Patent B2
US 10,089,076 · App. 15/922,074 · Granted Oct 2, 2018

Floating point scaling processors, methods, systems, and instructions

Inventors: Cristina S. Anderson (Hillsboro, OR); Amit Gradstein (Binyamina, IL); Robert Valentine (Kiryat Tivon, IL); Simon Rubanovich (Haifa, IL); Benny Eitan (Haifa, IL)
Assignee: Intel Corporation
G06F7/483G06F9/30014G06F9/30036
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 10,089,076
App. No.
15/922,074
Granted
Oct 2, 2018
Kind
B2
Abstract

A method of an aspect includes receiving a floating point scaling instruction. The floating point scaling instruction indicates a first source including one or more floating point data elements, a second source including one or more corresponding floating point data elements, and a destination. A result is stored in the destination in response to the floating point scaling instruction. The result includes one or more corresponding result floating point data elements each including a corresponding floating point data element of the second source multiplied by a base of the one or more floating point data elements of the first source raised to a power of an integer representative of the corresponding floating point data element of the first source. Other methods, apparatus, systems, and instructions are disclosed.

Claims (42)

1. A processor comprising:

a plurality of vector registers, including a first vector register, and a second vector register, the first vector register to store a first source vector having a plurality of floating-point data elements;

a plurality of mask registers, including a first mask register, the first mask register to store a mask having a plurality of mask elements;

a decode unit to decode an instruction, the instruction having a first field to specify the first vector register, a second field to specify the second vector register, and a third field to specify the first mask register; and

a floating-point execution unit coupled with the decode unit, and coupled with the plurality of vector registers, the floating-point execution unit, in response to the decode of the instruction, to store a result having a plurality of result floating-point data elements in the first vector register, each result floating-point data element corresponding to a floating-point data element of the first source vector, and corresponding to a mask element of the mask, in a same relative position,

each result floating-point data element for which the corresponding mask element has a first value to represent a multiplication of the corresponding floating-point data element of the first source vector by two raised to a power of an integer determined from a corresponding position in the second vector register, and

each result floating-point data element for which the corresponding mask element has a second value to include the corresponding floating-point data element from the first source vector.

2. The processor of claim 1 , further comprising a control register to store a round mode, and wherein the floating-point execution unit, in response to the decode of the instruction, is further to round the result floating-point data elements according to the round mode.

3. The processor of claim 1 , wherein, when a floating-point data element of the first source vector is a Not a Number (NaN), the corresponding result floating-point data element is to be a NaN.

4. The processor of claim 1 , wherein the instruction further comprises a data element width field to indicate a width of the floating-point data elements of the first source vector.

5. The processor of claim 4 , wherein the data element width field is able to indicate the width of the floating-point data elements of the first source vector as any one of half-precision, single-precision, and double-precision.

6. The processor of claim 1 , wherein the plurality of mask registers includes eight mask registers.

7. The processor of claim 1 , wherein the first vector register comprises 512-bits.

8. The processor of claim 1 , further comprising:

a level 1 cache; and

a level 2 cache.

9. The processor of claim 1 , wherein the processor is a reduced instruction set computing (RISC) processor.

10. The processor of claim 1 , wherein the decode unit and the floating-point execution unit are included in an out-of-order core, and wherein the out-of-order core comprises a reorder buffer (ROB).

11. The processor of claim 1 , wherein the plurality of floating-point data elements of the first source vector are to be 64-bit double-precision floating-point data elements, and wherein each result floating-point data element is to be a 64-bit double-precision result floating-point data element.

12. The processor of claim 1 , wherein the first source vector is to have at least four 64-bit double-precision floating-point data elements.

13. A method performed by a processor, the method comprising:

storing data in a plurality of vector registers, including storing a first source vector having a plurality of floating-point data elements in a first vector register, and storing data in a second vector register;

storing data in a plurality of mask registers, including storing a mask having a plurality of mask elements in a first mask register;

decoding an instruction having a first field specifying the first vector register, a second field specifying the second vector register, and a third field specifying the first mask register; and

storing, in response to the decoding of the instruction, a result having a plurality of result floating-point data elements, in the first vector register, each result floating-point data element corresponding to a floating-point data element of the first source vector, and corresponding to a mask element of the mask, in a same relative position,

each result floating-point data element for which the corresponding mask element has a first value representing a multiplication of the corresponding floating-point data element of the first source vector by two raised to a power of an integer determined from a corresponding position in the second vector register, and

each result floating-point data element for which the corresponding mask element has a second value including the corresponding floating-point data element from the first source vector.

14. The method of claim 13 , further comprising, in response to the decoding of the instruction, rounding the result floating-point data elements according to a round mode stored in a control register.

15. The method of claim 13 , wherein said storing the first source vector comprises storing a given floating-point data element that is a Not a Number (NaN), and wherein storing the result comprises storing a result floating-point data element corresponding to the given floating-point data element that is also a NaN.

16. The method of claim 13 , wherein said decoding comprises decoding the instruction having a data element width field indicating a width of the floating-point data elements of the first source vector as being half-precision floating point.

17. The method of claim 13 , wherein said storing the first source vector comprises storing at least four 64-bit double-precision floating-point data elements in the first vector register.

18. An article of manufacture comprising a non-transitory machine-readable storage medium, the non-transitory machine-readable storage medium storing instructions including an instruction, the instructions, if performed by a machine, to cause the machine to perform operations comprising to:

store data in a plurality of vector registers, including to store a first source vector having a plurality of floating-point data elements in a first vector register, and to store data in a second vector register;

store data in a plurality of mask registers, including to store a mask having a plurality of mask elements in a first mask register;

decode an instruction having a first field to specify the first vector register, a second field to specify the second vector register, and a third field to specify the first mask register; and

store, in response to the decode of the instruction, a result which is to have a plurality of result floating-point data elements, in the first vector register, each result floating-point data element corresponding to a floating-point data element of the first source vector, and corresponding to a mask element of the mask, in a same relative position,

each result floating-point data element for which the corresponding mask element has a first value to represent a multiplication of the corresponding floating-point data element of the first source vector by two raised to a power of an integer to be determined from a corresponding position in the second vector register, and

each result floating-point data element for which the corresponding mask element has a second value to include the corresponding floating-point data element from the first source vector.

19. The article of manufacture of claim 18 , wherein the instruction, if performed by the machine, is to cause the machine to round the result floating-point data elements according to a round mode stored in a control register.

20. The article of manufacture of claim 18 , wherein the instruction, if performed by the machine, is to cause the machine to store a result floating-point data element that is a Not a Number (NaN) when a corresponding floating-point data element of the first source vector is a NaN.

21. The article of manufacture of claim 18 , the instruction has a data element width field to indicate a width of the floating-point data elements of the first source vector, and wherein the data element width field is able to indicate the width of the floating-point data elements of the first source vector as any one of half-precision, single-precision, and double-precision.

22. The article of manufacture of claim 18 , the first source vector is to include at least four 64-bit double-precision floating-point data elements.

Continuity (3)
Continuation 15262609 · Sep 12, 2016
Continuation 13977086
Related Publication 20180203668A1 · Jul 19, 2018