sources
sources
benchmark_test.go
func return0() int {
return 0
}
AST
AST buildssa-enter
. AS l(21)
. . NAME-benchmark.~r0 a(true) g(1) l(21) x(0) class(PPARAMOUT) esc(no) int
buildssa-body
. RETURN l(22) tc(1)
. RETURN-list
. . AS l(22) tc(1)
. . . NAME-benchmark.~r0 a(true) g(1) l(21) x(0) class(PPARAMOUT) esc(no) int
. . . LITERAL-0 l(22) tc(1) int
buildssa-exit
start
start b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v3 (?) = SB <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (22) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
number lines
number lines [3775 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v3 (?) = SB <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
early phielim
early phielim [513 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v3 (?) = SB <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
early copyelim
early copyelim [348 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v3 (?) = SB <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
early deadcode
early deadcode [3406 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
short circuit
short circuit [694 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
decompose args
decompose args [1616 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
decompose user
decompose user [312 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
opt
opt [1732 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
zero arg cse
zero arg cse [2945 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
opt deadcode
opt deadcode [2047 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
generic cse
generic cse [5798 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
phiopt
phiopt [252 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
nilcheckelim
nilcheckelim [2573 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
prove
prove [4387 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 v3 (?) = Const64 <int64> [0]Ret v7 (+22 )
fuse plain
fuse plain [461 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 v3 (?) = Const64 <int64> [0]Ret v7 (+22 )
decompose builtin
decompose builtin [1462 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 v3 (?) = Const64 <int64> [0]Ret v7 (+22 )
softfloat
softfloat [192 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 v3 (?) = Const64 <int64> [0]Ret v7 (+22 )
late opt
late opt [969 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 v3 (?) = Const64 <int64> [0]Ret v7 (+22 )
dead auto elim
dead auto elim [1114 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 v3 (?) = Const64 <int64> [0]Ret v7 (+22 )
generic deadcode
generic deadcode [2066 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
check bce
check bce [179 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
branchelim
branchelim [724 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
fuse
fuse [309 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
dse
dse [2464 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
writebarrier
writebarrier [1033 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LocalAddr <*int> {~r0} v2 v1 v5 (?) = Const64 <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = Store <mem> {int} v4 v5 v6 Ret v7 (+22 )
lower
lower [4577 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LEAQ <*int> {~r0} v2 v5 (?) = MOVQconst <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
lowered cse
lowered cse [2036 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LEAQ <*int> {~r0} v2 v5 (?) = MOVQconst <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
elim unread autos
elim unread autos [425 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v4 (?) = LEAQ <*int> {~r0} v2 v5 (?) = MOVQconst <int> [0]v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
lowered deadcode
lowered deadcode [1668 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
checkLower
checkLower [353 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
late phielim
late phielim [273 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
late copyelim
late copyelim [248 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
tighten
tighten [3203 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
late deadcode
late deadcode [1112 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
critical
critical [381 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
phi tighten
phi tighten [182 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
likelyadjust
likelyadjust [486 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
layout
layout [925 ns] b1 :- v1 (?) = InitMem <mem>v2 (?) = SP <uintptr>v6 (22 ) = VarDef <mem> {~r0} v1 v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
schedule
schedule [2875 ns] b1 :- v1 (?) = InitMem <mem>v6 (22 ) = VarDef <mem> {~r0} v1 v2 (?) = SP <uintptr>v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
late nilcheck
late nilcheck [1181 ns] b1 :- v1 (?) = InitMem <mem>v6 (22 ) = VarDef <mem> {~r0} v1 v2 (?) = SP <uintptr>v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
flagalloc
flagalloc [1307 ns] b1 :- v1 (?) = InitMem <mem>v6 (22 ) = VarDef <mem> {~r0} v1 v2 (?) = SP <uintptr>v7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
regalloc
regalloc [11186 ns] b1 :- v1 (?) = InitMem <mem>v6 (22 ) = VarDef <mem> {~r0} v1 v2 (?) = SP <uintptr> : SPv7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
loop rotate
loop rotate [288 ns] b1 :- v1 (?) = InitMem <mem>v6 (22 ) = VarDef <mem> {~r0} v1 v2 (?) = SP <uintptr> : SPv7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
stackframe
stackframe [1228 ns] b1 :- v1 (?) = InitMem <mem>v6 (22 ) = VarDef <mem> {~r0} v1 v2 (?) = SP <uintptr> : SPv7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
trim
trim [359 ns] b1 :- v1 (?) = InitMem <mem>v6 (22 ) = VarDef <mem> {~r0} v1 v2 (?) = SP <uintptr> : SPv7 (+22 ) = MOVQstoreconst <mem> {~r0} [val=0,off=0] v2 v6 Ret v7 (+22 )
genssa
genssa # benchmark_test.go 00000 (21) TEXT "".return0(SB), ABIInternal 00001 (21) FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) 00002 (21) FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) 00003 (21) FUNCDATA $2, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) v7 00004 (+22 ) PCDATA $0, $0 v7 00005 (+22 ) PCDATA $1, $0 v7 00006 (+22 ) MOVQ $0, "".~r0(SP) b1 00007 (22 ) RET 00008 (?) END