发明名称 |
AUTO-VECTORIZATION IN JUST-IN-TIME COMPILERS FOR DYNAMICALLY TYPED PROGRAMMING LANGUAGES |
摘要 |
A computing device with an optimizing compiler is disclosed that is configured to generate optimized machine code including a vector operation corresponding to multiple scalar operations where the vector operation is a single operation on multiple pairs of operands. The optimizing compiler includes a vector guard condition generator configured to generate a vector guard condition for one or more vector operations, a mapping module to generate a mapping between elements of the vector guard condition and positions of the relevant scalar operations in the non-optimized machine code or intermediate representation of the source code, and a guard condition handler configured to initiate execution from a particular scalar operation in the non-optimized machine code or intermediate representation if the vector guard condition is triggered. The computing device may include a non-optimizing compiler and/or an interpreter to perform execution of the scalar operations if the vector guard condition is triggered. |
申请公布号 |
US2016299746(A1) |
申请公布日期 |
2016.10.13 |
申请号 |
US201615083157 |
申请日期 |
2016.03.28 |
申请人 |
Qualcomm Innovation Center, Inc. |
发明人 |
De Subrato K.;Ahmad Zaheer;Sule Dineel D.;Ding Yang |
分类号 |
G06F9/45 |
主分类号 |
G06F9/45 |
代理机构 |
|
代理人 |
|
主权项 |
1. A method for compiling source code, the method comprising:
receiving source code of a dynamically-typed language wherein types of operations are not defined in the source code; generating an intermediate representation of the source code; creating and executing non-optimized machine code that includes multiple scalar operations; determining if the multiple scalar operations are frequently executed so that the non-optimized machine code may be optimized; transforming, if the non-optimized machine code may be optimized, the multiple scalar operations in the intermediate representation from a scalar form to a vector operation, wherein each scalar operation includes a single pair of operands, and the vector operation is single operation on multiple pairs of operands; creating a vector guard condition for, at least, the vector operation; creating optimized machine code that includes the vector operation and the vector guard condition; executing the optimized machine code containing the vector operation; mapping an element of the vector guard condition in the optimized machine code to a particular scalar operation of the non-optimized machine code if the vector guard condition is triggered during execution of the vector operation in the optimized machine code; and executing the non-optimized code from the particular scalar operation if the optimized machine code fails the vector guard condition. |
地址 |
San Diego CA US |