Partial redundancy elimination with a fixed number of temporaries

    公开(公告)号:US10223089B1

    公开(公告)日:2019-03-05

    申请号:US15795861

    申请日:2017-10-27

    Inventor: Steven J. Perron

    Abstract: A method for partial redundancy elimination with a fixed number of temporaries includes determining local data values of program code that describe a temporary memory location, a set of registers, and a set of basic blocks. The method determines global data values of the program code based on the determined local data values of the program code. The method removes a first load of the temporary memory location in a first basic block in the program code. The method adds a second load on a first edge from a second basic block out of the set of basic blocks to a third basic block out of the set of basic blocks in the program code. The method performs a register move on a second edge from the third basic block to the second basic block in the program code.

    METHOD OF SPLITTING REGISTER LIVE RANGES
    2.
    发明申请
    METHOD OF SPLITTING REGISTER LIVE RANGES 有权
    分离寄存器区域的方法

    公开(公告)号:US20170060552A1

    公开(公告)日:2017-03-02

    申请号:US14838457

    申请日:2015-08-28

    Inventor: Steven J. Perron

    CPC classification number: G06F8/443 G06F8/441 G06F8/4435 G06F9/30098 G06F9/384

    Abstract: A method, executed by a computer, for splitting live register ranges includes identifying one or more H pathways comprising one or more H nodes having high register pressure, identifying an L pathway consisting of two or more L nodes, and inserting register splitting instructions for each symbolic register that is live in both the one or more H pathways and the L pathway, wherein the register splitting instructions are inserted at a starting node of the one or more H pathways. A computer program product and computer system corresponding to the above method are also disclosed herein.

    Abstract translation: 由计算机执行的用于分离实况寄存器范围的方法包括识别包括具有高寄存器压力的一个或多个H节点的一个或多个H路径,识别由两个或更多个L个节点组成的L路径,以及为每个H路径插入寄存器拆分指令 存在于一个或多个H途径和L途径中的符号寄存器,其中寄存器分离指令被插入到一个或多个H路径的起始节点处。 本文还公开了与上述方法对应的计算机程序产品和计算机系统。

    Method of splitting register live ranges
    3.
    发明授权
    Method of splitting register live ranges 有权
    拆分寄存器活动范围的方法

    公开(公告)号:US09582255B1

    公开(公告)日:2017-02-28

    申请号:US14838457

    申请日:2015-08-28

    Inventor: Steven J. Perron

    CPC classification number: G06F8/443 G06F8/441 G06F8/4435 G06F9/30098 G06F9/384

    Abstract: A method, executed by a computer, for splitting live register ranges includes identifying one or more H pathways comprising one or more H nodes having high register pressure, identifying an L pathway consisting of two or more L nodes, and inserting register splitting instructions for each symbolic register that is live in both the one or more H pathways and the L pathway, wherein the register splitting instructions are inserted at a starting node of the one or more H pathways. A computer program product and computer system corresponding to the above method are also disclosed herein.

    Abstract translation: 由计算机执行的用于分离实况寄存器范围的方法包括识别包括具有高寄存器压力的一个或多个H节点的一个或多个H路径,识别由两个或更多个L个节点组成的L路径,以及为每个H路径插入寄存器拆分指令 存在于一个或多个H途径和L途径中的符号寄存器,其中寄存器分离指令被插入到一个或多个H路径的起始节点处。 本文还公开了与上述方法对应的计算机程序产品和计算机系统。

    Partial redundancy elimination with a fixed number of temporaries

    公开(公告)号:US10133561B1

    公开(公告)日:2018-11-20

    申请号:US15690767

    申请日:2017-08-30

    Inventor: Steven J. Perron

    Abstract: A method for partial redundancy elimination with a fixed number of temporaries includes determining local data values of program code that describe a temporary memory location, a set of registers, and a set of basic blocks. The method determines global data values of the program code based on the determined local data values of the program code. The method removes a first load of the temporary memory location in a first basic block in the program code. The method adds a second load on a first edge from a second basic block out of the set of basic blocks to a third basic block out of the set of basic blocks in the program code. The method performs a register move on a second edge from the third basic block to the second basic block in the program code.

    PARTIAL REDUNDANCY ELIMINATION WITH A FIXED NUMBER OF TEMPORARIES

    公开(公告)号:US20190065163A1

    公开(公告)日:2019-02-28

    申请号:US15795861

    申请日:2017-10-27

    Inventor: Steven J. Perron

    Abstract: A method for partial redundancy elimination with a fixed number of temporaries includes determining local data values of program code that describe a temporary memory location, a set of registers, and a set of basic blocks. The method determines global data values of the program code based on the determined local data values of the program code. The method removes a first load of the temporary memory location in a first basic block in the program code. The method adds a second load on a first edge from a second basic block out of the set of basic blocks to a third basic block out of the set of basic blocks in the program code. The method performs a register move on a second edge from the third basic block to the second basic block in the program code.

    Reducing call overhead through function splitting

    公开(公告)号:US09916142B2

    公开(公告)日:2018-03-13

    申请号:US14883824

    申请日:2015-10-15

    CPC classification number: G06F8/443 G06F8/433 G06F8/4441

    Abstract: Embodiments disclose a method, computer program product, and system for optimizing computer functions. The embodiment may create a control flow graph from a computer function. The control flow graph may contain an entry block, an exit block, and basic blocks located between the entry block and the exit block. The embodiment may classify each of the basic blocks as an original heavy basic block or an original light basic block. The embodiment may classify the original heavy block, the exit block and each of the basic blocks that are located between each original heavy block and the exit block as a determined heavy block. The embodiment may create light computer functions and heavy computer functions from the computer function. Each heavy computer function contains the basic blocks classified as determined heavy. The light computer functions contains the remaining basic blocks, the exit block and calls to the heavy computer functions.

    REDUCING CALL OVERHEAD THROUGH FUNCTION SPLITTING

    公开(公告)号:US20170109147A1

    公开(公告)日:2017-04-20

    申请号:US14883824

    申请日:2015-10-15

    CPC classification number: G06F8/443 G06F8/433 G06F8/4441

    Abstract: Embodiments disclose a method, computer program product, and system for optimizing computer functions. The embodiment may create a control flow graph from a computer function. The control flow graph may contain an entry block, an exit block, and basic blocks located between the entry block and the exit block. The embodiment may classify each of the basic blocks as an original heavy basic block or an original light basic block. The embodiment may classify the original heavy block, the exit block and each of the basic blocks that are located between each original heavy block and the exit block as a determined heavy block. The embodiment may create light computer functions and heavy computer functions from the computer function. Each heavy computer function contains the basic blocks classified as determined heavy. The light computer functions contains the remaining basic blocks, the exit block and calls to the heavy computer functions.

    Method of splitting register live ranges
    8.
    发明授权
    Method of splitting register live ranges 有权
    拆分寄存器活动范围的方法

    公开(公告)号:US09411565B1

    公开(公告)日:2016-08-09

    申请号:US14970572

    申请日:2015-12-16

    Inventor: Steven J. Perron

    CPC classification number: G06F8/443 G06F8/441 G06F8/4435 G06F9/30098 G06F9/384

    Abstract: A method, executed by a computer, for splitting live register ranges includes identifying one or more H pathways comprising one or more H nodes having high register pressure using a backwards data flow in the graph, identifying an L pathway consisting of two or more L nodes using a depth first search, and inserting register splitting instructions for each symbolic register that is live in both the one or more H pathways and the L pathway. The register splitting instructions are inserted at a starting node of the one or more H pathways. Register merging instructions are inserted at an ending node of the one or more H pathways.

    Abstract translation: 由计算机执行的用于分离实时寄存器范围的方法包括使用图中的向后数据流识别包括具有高寄存器压力的一个或多个H节点的一个或多个H路径,识别由两个或更多个L节点组成的L路径 使用深度优先搜索,以及为存在于一个或多个H路径和L路径中的每个符号寄存器插入寄存器分离指令。 寄存器拆分指令被插入到一个或多个H路径的起始节点处。 注册合并指令插入到一个或多个H路径的结束节点。

    Reducing call overhead through function splitting

    公开(公告)号:US10289392B2

    公开(公告)日:2019-05-14

    申请号:US15835878

    申请日:2017-12-08

    Abstract: Embodiments disclose a method, computer program product, and system for optimizing computer functions. The embodiment may create a control flow graph from a computer function. The control flow graph may contain an entry block, an exit block, and basic blocks located between the entry block and the exit block. The embodiment may classify each of the basic blocks as an original heavy basic block or an original light basic block. The embodiment may classify the original heavy block, the exit block and each of the basic blocks that are located between each original heavy block and the exit block as a determined heavy block. The embodiment may create light computer functions and heavy computer functions from the computer function. Each heavy computer function contains the basic blocks classified as determined heavy. The light computer functions contains the remaining basic blocks, the exit block and calls to the heavy computer functions.

    REDUCING CALL OVERHEAD THROUGH FUNCTION SPLITTING

    公开(公告)号:US20170109149A1

    公开(公告)日:2017-04-20

    申请号:US15140665

    申请日:2016-04-28

    CPC classification number: G06F8/443 G06F8/433 G06F8/4441

    Abstract: Embodiments disclose a method, computer program product, and system for optimizing computer functions. The embodiment may create a control flow graph from a computer function. The control flow graph may contain an entry block, an exit block, and basic blocks located between the entry block and the exit block. The embodiment may classify each of the basic blocks as an original heavy basic block or an original light basic block. The embodiment may classify the original heavy block, the exit block and each of the basic blocks that are located between each original heavy block and the exit block as a determined heavy block. The embodiment may create light computer functions and heavy computer functions from the computer function. Each heavy computer function contains the basic blocks classified as determined heavy. The light computer functions contains the remaining basic blocks, the exit block and calls to the heavy computer functions.

Patent Agency Ranking