Method and software for partitioned floating-point multiply-add operation
DCFirst Claim
1. A method for processing data in a programmable processor, the method comprising:
- decoding and executing instructions that instruct a computer system to perform operations,at least some of the instructions including group floating-point instructions each operating on first and second registers partitioned into a plurality of floating point operands, the floating point operands having a defined precision and the defined precision being dynamically variable, having a defined result precision which is equal to the defined precision of the operands;
at least one group floating-point instruction being a group floating-point multiply-and-add instruction, further operating on a third register partitioned into a plurality of floating-point operands,operable to multiply the plurality of floating-point operands in the first and second registers and add the plurality of floating-point operands in the third register, each producing a floating-point value to provide a plurality of floating-point values, each of the floating-point values capable of being represented by the defined result precision, and a catenated result having a plurality of partitioned fields for the plurality of floating point values.
0 Assignments
Litigations
0 Petitions
Accused Products
Abstract
A method and software for improving the performance of processors by incorporating an execution unit operable to decode and execute single instructions specifying three registers each containing a plurality of data elements, the execution unit operable to multiply the first and second registers and add the third register to produce a catenated result containing a plurality of data elements. Additional instructions provide group floating-point subtract, add, multiply, set less, and set greater equal operations. The set less and set greater equal operations produce alternatively zero or an identity element for each element of a catenated result, the result facilitating alternative selection of individual data elements using bitwise Boolean operations and without requiring conditional branch operations.
209 Citations
42 Claims
-
1. A method for processing data in a programmable processor, the method comprising:
-
decoding and executing instructions that instruct a computer system to perform operations, at least some of the instructions including group floating-point instructions each operating on first and second registers partitioned into a plurality of floating point operands, the floating point operands having a defined precision and the defined precision being dynamically variable, having a defined result precision which is equal to the defined precision of the operands; at least one group floating-point instruction being a group floating-point multiply-and-add instruction, further operating on a third register partitioned into a plurality of floating-point operands, operable to multiply the plurality of floating-point operands in the first and second registers and add the plurality of floating-point operands in the third register, each producing a floating-point value to provide a plurality of floating-point values, each of the floating-point values capable of being represented by the defined result precision, and a catenated result having a plurality of partitioned fields for the plurality of floating point values. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer-readable storage medium having stored therein a plurality of instructions that cause a computer processor to perform data operations:
-
at least some of the instructions including group floating-point instructions each operating on first and second registers partitioned into a plurality of floating point operands, the floating point operands having a defined precision and the defined precision being dynamically variable, having a defined result precision which is equal to the defined precision of the operands; the group floating-point instructions including a group floating-point multiply-and-add instruction, further operating on a third register partitioned into a plurality of floating-point operands, the group floating-point multiply-and-add instruction operable to multiply the plurality of floating-point operands in the first and second registers and add the plurality of floating-point operands in the third register, each producing a floating-point value to provide a plurality of floating-point values, each of the floating-point values capable of being represented by the defined result precision, and a catenated result having a plurality of partitioned fields for the plurality of floating point values. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A method for performing data operations in a programmable processor comprising:
-
executing a plurality of instructions each of which (i) operates on data stored in a first, a second and a third register, the data in the first register comprising a first plurality of equal-sized data elements, the data in the second register comprising a second plurality of equal-sized data elements, the data in the third register comprising a third plurality of equal-sized data elements, (ii) multiplies each data element in the first register with a corresponding data element in the second register to produce a plurality of products, and (iii) adds each product in the plurality of products to a corresponding data element in the third register to produce a plurality of sums, and (iv) provides the plurality of sums as a catenated result; wherein the plurality of instructions includes a floating-point instruction that operates on floating-point data elements stored in the first, second and third registers. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32)
-
-
33. A computer-readable storage medium having stored therein instructions that cause a computer processor to perform operations on data stored in registers in the computer processor, the instructions comprising:
-
a plurality of instructions each of which (i) operates on data stored in a first, a second and a third register, the data in the first register comprising a first plurality of equal-sized data elements, the data in the second register comprising a second plurality of equal-sized data elements, the data in the third register comprising a third plurality of equal-sized data elements, (ii) multiplies each data element in the first register with a corresponding data element in the second register to produce a plurality of products, and (iii) adds each product in the plurality of products to a corresponding data element in the third register to produce a plurality of sums, and (iv) provides the plurality of sums as a catenated result; wherein the plurality of instructions includes a floating-point instruction that operates on floating-point data elements stored in the first, second and third registers. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40, 41, 42)
-
Specification