Allocating register halves independently

    公开(公告)号:US09696975B2

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

    申请号:US12875753

    申请日:2010-09-03

    IPC分类号: G06F9/45

    CPC分类号: G06F8/441

    摘要: Register halves are allocated independently when performing register allocation during program compilation, thereby effectively doubling the number of registers which are available for allocation, which in turn may reduce spill code and improve run-time performance. When hardware registers are 64 bits wide, for example, an architecture supporting the present invention provides some number of separate hardware instructions that operate on the 32-bit high-word and/or the 32-bit low word of the hardware registers as if those 32-bit words are separate registers. Such hardware instructions are able to manipulate the register halves independently, leaving the other register half untouched. A register coloring algorithm using in the compilation process is invoked using the number of register halves, instead of the number of hardware registers.

    Use of name mangling techniques to encode cross procedure register assignment
    2.
    发明授权
    Use of name mangling techniques to encode cross procedure register assignment 失效
    使用名称调整技术编码交叉过程寄存器分配

    公开(公告)号:US08468511B2

    公开(公告)日:2013-06-18

    申请号:US12347229

    申请日:2008-12-31

    IPC分类号: G06F9/45

    CPC分类号: G06F8/441 G06F8/4441

    摘要: Optimizing a program having a plurality of functions using an optimization technique that requires breaking a calling convention. A first function of the plurality of functions is modified as a result of optimizing. A name of the first function is mangled to form a unique first mangled name changing the name of the first function to include, as a result of mangling, first information conveying at least in part how the first function was modified. A second function of the plurality of functions, being a caller of the first function, is also modified to correctly invoke the first function using the unique first mangled name to apply the optimization technique. A compilation tool can, after optimizing, use the first information to take a first action with respect to the first procedure, wherein the compilation tool otherwise would require the calling convention to remain unbroken to take the first action.

    摘要翻译: 使用需要打破呼叫约定的优化技术来优化具有多个功能的程序。 作为优化的结果,修改了多个功能的第一功能。 第一个功能的名称被破坏以形成一个唯一的第一个被修改的名字,改变了第一个功能的名称,以包含由于修改的结果,第一个信息至少部分地传达第一个功能的修改方式。 作为第一功能的调用者的多个功能的第二功能也被修改,以使用唯一的第一被调整的名称正确地调用第一功能以应用优化技术。 编译工具可以在优化之后使用第一信息对第一过程采取第一动作,其中编译工具否则将要求调用约定保持不间断以采取第一动作。

    ALLOCATING REGISTER HALVES INDEPENDENTLY
    3.
    发明申请
    ALLOCATING REGISTER HALVES INDEPENDENTLY 有权
    分配登记单独支付

    公开(公告)号:US20120060011A1

    公开(公告)日:2012-03-08

    申请号:US12875753

    申请日:2010-09-03

    IPC分类号: G06F12/06

    CPC分类号: G06F8/441

    摘要: Register halves are allocated independently when performing register allocation during program compilation, thereby effectively doubling the number of registers which are available for allocation, which in turn may reduce spill code and improve run-time performance. When hardware registers are 64 bits wide, for example, an architecture supporting the present invention provides some number of separate hardware instructions that operate on the 32-bit high-word and/or the 32-bit low word of the hardware registers as if those 32-bit words are separate registers. Such hardware instructions are able to manipulate the register halves independently, leaving the other register half untouched. A register coloring algorithm using in the compilation process is invoked using the number of register halves, instead of the number of hardware registers.

    摘要翻译: 在程序编译期间执行寄存器分配时,独立地分配寄存器一半,从而有效地将可用于分配的寄存器数量加倍,这又可以减少溢出代码并提高运行时性能。 当硬件寄存器为64位宽时,例如,支持本发明的架构提供了一些数量的分别硬件指令,这些指令对硬件寄存器的32位高位字和/或32位低字操作,如同那些 32位字是单独的寄存器。 这样的硬件指令能够独立地操作寄存器半部,使另一个寄存器一半不变。 在编译过程中使用的寄存器着色算法使用寄存器一半的数量来调用,而不是硬件寄存器的数量。

    Use of Name Mangling Techniques To Encode Cross Procedure Register Assignment
    4.
    发明申请
    Use of Name Mangling Techniques To Encode Cross Procedure Register Assignment 失效
    使用名称Mangling技术来编码交叉过程寄存器分配

    公开(公告)号:US20100169872A1

    公开(公告)日:2010-07-01

    申请号:US12347229

    申请日:2008-12-31

    IPC分类号: G06F9/45

    CPC分类号: G06F8/441 G06F8/4441

    摘要: Optimizing a program having a plurality of functions. The program is optimized using an optimization technique that requires breaking a calling convention. The first function of the plurality of functions is modified as a result of optimizing. A name of the first function is mangled to form a unique first mangled name. Mangling comprises changing the name. The unique first mangled name includes, as a result of mangling, first information conveying at least in part how the first function was modified. A second function of the plurality of functions, being a caller of the first function, is also modified to correctly invoke first function using the unique first mangled name to apply the optimization technique. A compilation tool can, after optimizing, use the first information to take a first action with respect to the first procedure, wherein the compilation tool otherwise would require the calling convention to remain unbroken in order to take the first action.

    摘要翻译: 优化具有多个功能的程序。 该程序使用优化技术进行优化,该技术需要打破调用约定。 作为优化的结果,修改了多个功能的第一功能。 第一个功能的名称被破坏,形成一个唯一的第一个被破坏的名字。 Mangling包括改名字。 唯一的第一个被破坏的名字包括由于破坏的结果,第一个信息至少部分地传达第一个功能的修改方式。 作为第一功能的调用者的多个功能的第二功能也被修改为使用唯一的第一被调整名称正确地调用第一功能以应用优化技术。 编译工具在优化之后可以使用第一信息对第一过程采取第一动作,其中编译工具否则将要求调用约定保持不间断以便采取第一动作。