Skip to content
Snippets Groups Projects
  • fanzha02's avatar
    d556c251
    cmd/compile: add more generic rewrite rules to reassociate (op (op y C) x|C) · d556c251
    fanzha02 authored
    With this patch, opt pass can expose more obvious constant-folding
    opportunites.
    
    Example:
    func test(i int) int {return (i+8)-(i+4)}
    
    The previous version:
      MOVD	"".i(FP), R0
      ADD	$8, R0, R1
      ADD	$4, R0, R0
      SUB	R0, R1, R0
      MOVD	R0, "".~r1+8(FP)
      RET	(R30)
    
    The optimized version:
      MOVD	$4, R0
      MOVD	R0, "".~r1+8(FP)
      RET	(R30)
    
    This patch removes some existing reassociation rules, such as "x+(z-C)",
    because the current generic rewrite rules will canonicalize "x-const"
    to "x+(-const)", making "x+(z-C)" equal to "x+(z+(-C))".
    
    This patch also adds test cases.
    
    Change-Id: I857108ba0b5fcc18a879eeab38e2551bc4277797
    Reviewed-on: https://go-review.googlesource.com/c/go/+/237137
    
    
    Run-TryBot: Keith Randall <khr@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarKeith Randall <khr@golang.org>
    d556c251
    History
    cmd/compile: add more generic rewrite rules to reassociate (op (op y C) x|C)
    fanzha02 authored
    With this patch, opt pass can expose more obvious constant-folding
    opportunites.
    
    Example:
    func test(i int) int {return (i+8)-(i+4)}
    
    The previous version:
      MOVD	"".i(FP), R0
      ADD	$8, R0, R1
      ADD	$4, R0, R0
      SUB	R0, R1, R0
      MOVD	R0, "".~r1+8(FP)
      RET	(R30)
    
    The optimized version:
      MOVD	$4, R0
      MOVD	R0, "".~r1+8(FP)
      RET	(R30)
    
    This patch removes some existing reassociation rules, such as "x+(z-C)",
    because the current generic rewrite rules will canonicalize "x-const"
    to "x+(-const)", making "x+(z-C)" equal to "x+(z+(-C))".
    
    This patch also adds test cases.
    
    Change-Id: I857108ba0b5fcc18a879eeab38e2551bc4277797
    Reviewed-on: https://go-review.googlesource.com/c/go/+/237137
    
    
    Run-TryBot: Keith Randall <khr@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarKeith Randall <khr@golang.org>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.