Framework for generating mixed-mode operations in loop-level simdization
First Claim
1. A computer-implemented method comprising:
- identifying a loop containing instructions that operate over an array of values;
transforming the instructions into a set of virtual vector operations;
choosing, for each operation in the set of virtual vector operations, an expansion to apply to that operation, wherein the expansion is chosen from a plurality of possible expansions; and
expanding each operation in the set of virtual vector operations into a native code implementation of that operation in accordance with that operation'"'"'s corresponding chosen expansion.
1 Assignment
0 Petitions
Accused Products
Abstract
A method, computer program product, and information handling system for generating mixed-mode operations in the compilation of program code for processors having vector or SIMD processing units is disclosed. In a preferred embodiment of the present invention, program instructions making up the body of a loop are abstracted into virtual vector instructions. These virtual vector instructions are treated, for initial code optimization purposes, as vector instructions (i.e., instructions written for the vector unit). The virtual vector instructions are eventually expanded into native code for the target processor, at which time a determination is made for each virtual vector instruction as to whether to expand the virtual vector instruction into native vector instructions, into native scalar instructions, into calls to pre-defined library functions, or into a combination of these. A cost model is used to determine the optimal choice of expansion based on hardware/software constraints, performance costs/benefits, and other criteria.
-
Citations
20 Claims
-
1. A computer-implemented method comprising:
-
identifying a loop containing instructions that operate over an array of values;
transforming the instructions into a set of virtual vector operations;
choosing, for each operation in the set of virtual vector operations, an expansion to apply to that operation, wherein the expansion is chosen from a plurality of possible expansions; and
expanding each operation in the set of virtual vector operations into a native code implementation of that operation in accordance with that operation'"'"'s corresponding chosen expansion. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computer program product in a computer-readable medium, comprising:
-
identifying means for identifying a loop containing instructions that operate over an array of values;
transforming means for transforming the instructions into a set of virtual vector operations;
choosing means for choosing, for each operation in the set of virtual vector operations, an expansion to apply to that operation, wherein the expansion is chosen from a plurality of possible expansions; and
expanding means for expanding each operation in the set of virtual vector operations into a native code implementation of that operation in accordance with that operation'"'"'s corresponding chosen expansion. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. An information-handling system comprising:
-
at least one processor;
one or more data storage units accessible by the at least one processor; and
functional descriptive material contained within the data storage units that, when executed by the at least one processor, directs the at least one processor to perform actions of;
identifying a loop containing instructions that operate over an array of values;
transforming the instructions into a set of virtual vector operations;
choosing, for each operation in the set of virtual vector operations, an expansion to apply to that operation, wherein the expansion is chosen from a plurality of possible expansions; and
expanding each operation in the set of virtual vector operations into a native code implementation of that operation in accordance with that operation'"'"'s corresponding chosen expansion. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification