start- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v4 = Const64 <int> [0]
- v5 = Const64 <int> [5]
- v6 = Const64 <int> [3]
- v7 = Sub64 <int> v5 v6
- v8 = Less64 <bool> v7 v6
- v10 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v48 = Const64 <int> [1]
- v57 = ConstString <string> {"%d, %d\n"}
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v64 = OffPtr <*int> [40] v2
- If v8 → b2 b4
- b2: ← b1
- v9 = Copy <int> v7
- v11 = Mul64 <int> v9 v10
- Plain → b3
- b3: ← b2 b4
- v14 = Phi <int> v9 v12
- v15 = Phi <int> v11 v13
- v16 = Sub64 <int> v14 v15
- v17 = Add64 <int> v14 v15
- v18 = Addr <*int> {.autotmp_5} v2
- v19 = Copy <mem> v1
- v20 = VarDef <mem> {.autotmp_5} v19
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v32 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v28 v35
- v39 = PtrIndex <*interface {}> v28 v4
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v41 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v43 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v28 v45
- v49 = PtrIndex <*interface {}> v28 v48
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v28 v50
- v52 = IsSliceInBounds <bool> v4 v10
- If v52 → b5 b6 (likely)
- b4: ← b1
- v12 = Copy <int> v7
- v13 = Sub64 <int> v12 v6
- Plain → b3
- b5: ← b3
- v55 = Sub64 <int> v10 v4
- v56 = SliceMake <[]interface {}> v28 v55 v55
- v59 = Copy <mem> v50
- v60 = Store <mem> {string} v58 v57 v59
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
- b6: ← b3
- v53 = Copy <mem> v50
- v54 = StaticCall <mem> {runtime.panicslice} v53
- Exit v54
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 v9 v12 v14 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| after early phielim [25600 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v4 = Const64 <int> [0]
- v5 = Const64 <int> [5]
- v6 = Const64 <int> [3]
- v7 = Sub64 <int> v5 v6
- v8 = Less64 <bool> v7 v6
- v10 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v48 = Const64 <int> [1]
- v57 = ConstString <string> {"%d, %d\n"}
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v64 = OffPtr <*int> [40] v2
- If v8 → b2 b4
- b2: ← b1
- v9 = Copy <int> v7
- v11 = Mul64 <int> v7 v10
- Plain → b3
- b3: ← b2 b4
- v15 = Phi <int> v11 v13
- v14 = Copy <int> v7
- v16 = Sub64 <int> v7 v15
- v17 = Add64 <int> v7 v15
- v18 = Addr <*int> {.autotmp_5} v2
- v19 = Copy <mem> v1
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v32 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v28 v35
- v39 = PtrIndex <*interface {}> v28 v4
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v41 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v43 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v28 v45
- v49 = PtrIndex <*interface {}> v28 v48
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v28 v50
- v52 = IsSliceInBounds <bool> v4 v10
- If v52 → b5 b6 (likely)
- b4: ← b1
- v12 = Copy <int> v7
- v13 = Sub64 <int> v7 v6
- Plain → b3
- b5: ← b3
- v55 = Sub64 <int> v10 v4
- v56 = SliceMake <[]interface {}> v28 v55 v55
- v59 = Copy <mem> v50
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
- b6: ← b3
- v53 = Copy <mem> v50
- v54 = StaticCall <mem> {runtime.panicslice} v50
- Exit v54
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 v9 v12 v14 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| after early copyelim [29500 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v4 = Const64 <int> [0]
- v5 = Const64 <int> [5]
- v6 = Const64 <int> [3]
- v7 = Sub64 <int> v5 v6
- v8 = Less64 <bool> v7 v6
- v10 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v48 = Const64 <int> [1]
- v57 = ConstString <string> {"%d, %d\n"}
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v64 = OffPtr <*int> [40] v2
- If v8 → b2 b4
- b2: ← b1
- v9 = Copy <int> v7
- v11 = Mul64 <int> v7 v10
- Plain → b3
- b3: ← b2 b4
- v15 = Phi <int> v11 v13
- v14 = Copy <int> v7
- v16 = Sub64 <int> v7 v15
- v17 = Add64 <int> v7 v15
- v18 = Addr <*int> {.autotmp_5} v2
- v19 = Copy <mem> v1
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v32 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v28 v35
- v39 = PtrIndex <*interface {}> v28 v4
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v41 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v43 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v28 v45
- v49 = PtrIndex <*interface {}> v28 v48
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v28 v50
- v52 = IsSliceInBounds <bool> v4 v10
- If v52 → b5 b6 (likely)
- b4: ← b1
- v12 = Copy <int> v7
- v13 = Sub64 <int> v7 v6
- Plain → b3
- b5: ← b3
- v55 = Sub64 <int> v10 v4
- v56 = SliceMake <[]interface {}> v28 v55 v55
- v59 = Copy <mem> v50
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
- b6: ← b3
- v53 = Copy <mem> v50
- v54 = StaticCall <mem> {runtime.panicslice} v50
- Exit v54
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 v7 v7 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| after early deadcode [73300 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v4 = Const64 <int> [0]
- v5 = Const64 <int> [5]
- v6 = Const64 <int> [3]
- v7 = Sub64 <int> v5 v6
- v8 = Less64 <bool> v7 v6
- v10 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v48 = Const64 <int> [1]
- v57 = ConstString <string> {"%d, %d\n"}
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- If v8 → b2 b4
- b3: ← b2 b4
- v15 = Phi <int> v11 v13
- v16 = Sub64 <int> v7 v15
- v17 = Add64 <int> v7 v15
- v18 = Addr <*int> {.autotmp_5} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v32 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v28 v35
- v39 = PtrIndex <*interface {}> v28 v4
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v41 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v43 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v28 v45
- v49 = PtrIndex <*interface {}> v28 v48
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v28 v50
- v52 = IsSliceInBounds <bool> v4 v10
- If v52 → b5 b6 (likely)
- b5: ← b3
- v55 = Sub64 <int> v10 v4
- v56 = SliceMake <[]interface {}> v28 v55 v55
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
- b6: ← b3
- v54 = StaticCall <mem> {runtime.panicslice} v50
- Exit v54
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| after short circuit [30300 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v4 = Const64 <int> [0]
- v5 = Const64 <int> [5]
- v6 = Const64 <int> [3]
- v7 = Sub64 <int> v5 v6
- v8 = Less64 <bool> v7 v6
- v10 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v48 = Const64 <int> [1]
- v57 = ConstString <string> {"%d, %d\n"}
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- If v8 → b2 b4
- b3: ← b2 b4
- v15 = Phi <int> v11 v13
- v16 = Sub64 <int> v7 v15
- v17 = Add64 <int> v7 v15
- v18 = Addr <*int> {.autotmp_5} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v32 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v28 v35
- v39 = PtrIndex <*interface {}> v28 v4
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v41 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v43 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v28 v45
- v49 = PtrIndex <*interface {}> v28 v48
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v28 v50
- v52 = IsSliceInBounds <bool> v4 v10
- If v52 → b5 b6 (likely)
- b5: ← b3
- v55 = Sub64 <int> v10 v4
- v56 = SliceMake <[]interface {}> v28 v55 v55
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
- b6: ← b3
- v54 = StaticCall <mem> {runtime.panicslice} v50
- Exit v54
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| after decompose user [23800 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v4 = Const64 <int> [0]
- v5 = Const64 <int> [5]
- v6 = Const64 <int> [3]
- v7 = Sub64 <int> v5 v6
- v8 = Less64 <bool> v7 v6
- v10 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v48 = Const64 <int> [1]
- v57 = ConstString <string> {"%d, %d\n"}
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- If v8 → b2 b4
- b3: ← b2 b4
- v15 = Phi <int> v11 v13
- v16 = Sub64 <int> v7 v15
- v17 = Add64 <int> v7 v15
- v18 = Addr <*int> {.autotmp_5} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v32 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v28 v35
- v39 = PtrIndex <*interface {}> v28 v4
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v41 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v43 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v28 v45
- v49 = PtrIndex <*interface {}> v28 v48
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v28 v50
- v52 = IsSliceInBounds <bool> v4 v10
- If v52 → b5 b6 (likely)
- b5: ← b3
- v55 = Sub64 <int> v10 v4
- v56 = SliceMake <[]interface {}> v28 v55 v55
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
- b6: ← b3
- v54 = StaticCall <mem> {runtime.panicslice} v50
- Exit v54
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| after opt [12046500 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v4 = Const64 <int> [0]
- v5 = Const64 <int> [5]
- v6 = Const64 <int> [3]
- v7 = Const64 <int> [2]
- v8 = ConstBool <bool> [true]
- v10 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v48 = Const64 <int> [1]
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v59 = SB <uintptr>
- v12 = Const64 <int> [7]
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v59
- v57 = StringMake <string> v53 v12
- First → b2 b4
- b3: ← b2 b4
- v15 = Phi <int> v11 v13
- v16 = Sub64 <int> v7 v15
- v17 = Add64 <int> v7 v15
- v18 = Addr <*int> {.autotmp_5} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v32 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v28 v35
- v39 = OffPtr <*interface {}> [0] v28
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v41 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v43 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v28 v45
- v49 = OffPtr <*interface {}> [16] v28
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v28 v50
- v52 = ConstBool <bool> [true]
- v19 = Const64 <int> [0]
- v14 = Const64 <int> [16]
- v9 = Const64 <int> [16]
- v64 = Const64 <int> [16]
- First → b5 b6 (likely)
- b5: ← b3
- v55 = Const64 <int> [2]
- v56 = SliceMake <[]interface {}> v28 v55 v55
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
- b6: ← b3
- v54 = StaticCall <mem> {runtime.panicslice} v50
- Exit v54
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| after zero arg cse [38000 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v4 = Const64 <int> [0]
- v5 = Const64 <int> [5]
- v6 = Const64 <int> [3]
- v7 = Const64 <int> [2]
- v8 = ConstBool <bool> [true]
- v10 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v48 = Const64 <int> [1]
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v59 = SB <uintptr>
- v12 = Const64 <int> [7]
- v11 = Const64 <int> [4]
- v14 = Const64 <int> [16]
- v13 = Const64 <int> [-1]
- v57 = StringMake <string> v53 v12
- First → b2 b4
- b3: ← b2 b4
- v15 = Phi <int> v11 v13
- v16 = Sub64 <int> v7 v15
- v17 = Add64 <int> v7 v15
- v18 = Addr <*int> {.autotmp_5} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v32 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v28 v35
- v39 = OffPtr <*interface {}> [0] v28
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v41 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v43 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v28 v45
- v49 = OffPtr <*interface {}> [16] v28
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v28 v50
- v52 = ConstBool <bool> [true]
- v19 = Const64 <int> [0]
- v64 = Const64 <int> [16]
- v9 = Const64 <int> [16]
- First → b5 b6 (likely)
- b5: ← b3
- v55 = Const64 <int> [2]
- v56 = SliceMake <[]interface {}> v28 v7 v7
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
- b6: ← b3
- v54 = StaticCall <mem> {runtime.panicslice} v50
- Exit v54
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| after opt deadcode [33700 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v11 = Const64 <int> [4]
- v57 = StringMake <string> v53 v12
- Plain → b2
- b3: ← b2
- v16 = Sub64 <int> v7 v11
- v17 = Add64 <int> v7 v11
- v18 = Addr <*int> {.autotmp_5} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v32 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v28 v35
- v39 = OffPtr <*interface {}> [0] v28
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v41 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v43 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v28 v45
- v49 = OffPtr <*interface {}> [16] v28
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v28 v50
- Plain → b5
- b5: ← b3
- v56 = SliceMake <[]interface {}> v28 v7 v7
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| after generic cse [9359800 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v11 = Const64 <int> [4]
- v57 = StringMake <string> v53 v12
- Plain → b2
- b3: ← b2
- v16 = Sub64 <int> v7 v11
- v17 = Add64 <int> v7 v11
- v18 = Addr <*int> {.autotmp_5} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v25 v35
- v39 = OffPtr <*interface {}> [0] v25
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v29 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v25 v45
- v49 = OffPtr <*interface {}> [16] v25
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v25 v50
- Plain → b5
- b5: ← b3
- v56 = SliceMake <[]interface {}> v25 v7 v7
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| after phiopt [20900 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v11 = Const64 <int> [4]
- v57 = StringMake <string> v53 v12
- Plain → b2
- b3: ← b2
- v16 = Sub64 <int> v7 v11
- v17 = Add64 <int> v7 v11
- v18 = Addr <*int> {.autotmp_5} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v22 = Addr <*int> {.autotmp_6} v2
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v31 = Store <mem> {*byte} v30 v29 v27
- v32 = Addr <*int> {.autotmp_5} v2
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v38 = NilCheck <void> v25 v35
- v39 = OffPtr <*interface {}> [0] v25
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v29 v40
- v43 = Addr <*int> {.autotmp_6} v2
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v47 = NilCheck <void> v25 v45
- v49 = OffPtr <*interface {}> [16] v25
- v50 = Store <mem> {interface {}} v49 v46 v45
- v51 = NilCheck <void> v25 v50
- Plain → b5
- b5: ← b3
- v56 = SliceMake <[]interface {}> v25 v7 v7
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| after nilcheckelim [33500 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v11 = Const64 <int> [4]
- v57 = StringMake <string> v53 v12
- Plain → b2
- b3: ← b2
- v16 = Sub64 <int> v7 v11
- v17 = Add64 <int> v7 v11
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v32 = Addr <*int> {.autotmp_5} v2
- v39 = OffPtr <*interface {}> [0] v25
- v43 = Addr <*int> {.autotmp_6} v2
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v50 = Store <mem> {interface {}} v49 v46 v45
- Plain → b5
- b5: ← b3
- v56 = SliceMake <[]interface {}> v25 v7 v7
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| after prove [30500 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v11 = Const64 <int> [4]
- v57 = StringMake <string> v53 v12
- Plain → b2
- b3: ← b2
- v16 = Sub64 <int> v7 v11
- v17 = Add64 <int> v7 v11
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v32 = Addr <*int> {.autotmp_5} v2
- v39 = OffPtr <*interface {}> [0] v25
- v43 = Addr <*int> {.autotmp_6} v2
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v50 = Store <mem> {interface {}} v49 v46 v45
- Plain → b5
- b5: ← b3
- v56 = SliceMake <[]interface {}> v25 v7 v7
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| after loopbce [24400 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v11 = Const64 <int> [4]
- v57 = StringMake <string> v53 v12
- Plain → b2
- b3: ← b2
- v16 = Sub64 <int> v7 v11
- v17 = Add64 <int> v7 v11
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v32 = Addr <*int> {.autotmp_5} v2
- v39 = OffPtr <*interface {}> [0] v25
- v43 = Addr <*int> {.autotmp_6} v2
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v50 = Store <mem> {interface {}} v49 v46 v45
- Plain → b5
- b5: ← b3
- v56 = SliceMake <[]interface {}> v25 v7 v7
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| after decompose builtin [25200 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v11 = Const64 <int> [4]
- v57 = StringMake <string> v53 v12
- Plain → b2
- b3: ← b2
- v16 = Sub64 <int> v7 v11
- v17 = Add64 <int> v7 v11
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v32 = Addr <*int> {.autotmp_5} v2
- v39 = OffPtr <*interface {}> [0] v25
- v43 = Addr <*int> {.autotmp_6} v2
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v37 = Load <interface {}> v36 v35
- v40 = Store <mem> {interface {}} v39 v37 v35
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v46 = Load <interface {}> v36 v45
- v50 = Store <mem> {interface {}} v49 v46 v45
- Plain → b5
- b5: ← b3
- v56 = SliceMake <[]interface {}> v25 v7 v7
- v60 = Store <mem> {string} v58 v57 v50
- v62 = Store <mem> {[]interface {}} v61 v56 v60
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| after dec [1122900 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v11 = Const64 <int> [4]
- v57 = StringMake <string> v53 v12
- Plain → b2
- b3: ← b2
- v16 = Sub64 <int> v7 v11
- v17 = Add64 <int> v7 v11
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v32 = Addr <*int> {.autotmp_5} v2
- v39 = OffPtr <*interface {}> [0] v25
- v43 = Addr <*int> {.autotmp_6} v2
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v54 = Load <*uint8> v36 v35
- v9 = OffPtr <**uint8> [8] v36
- v64 = OffPtr <**uint8> [8] v39
- v19 = Store <mem> {uintptr} v39 v54 v35
- v13 = OffPtr <**uint8> [8] v36
- v14 = OffPtr <**uint8> [8] v49
- v55 = Load <*uint8> v9 v35
- v37 = IMake <interface {}> v54 v55
- v40 = Store <mem> {*uint8} v64 v55 v19
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v52 = Load <*uint8> v36 v45
- v15 = Load <*uint8> v13 v45
- v59 = Store <mem> {uintptr} v49 v52 v45
- v46 = IMake <interface {}> v52 v15
- v50 = Store <mem> {*uint8} v14 v15 v59
- Plain → b5
- b5: ← b3
- v56 = SliceMake <[]interface {}> v25 v7 v7
- v48 = OffPtr <*int> [8] v58
- v10 = Store <mem> {*uint8} v58 v53 v50
- v8 = OffPtr <*int> [16] v61
- v5 = OffPtr <*int> [8] v61
- v60 = Store <mem> {int} v48 v12 v10
- v4 = Store <mem> {*uint8} v61 v25 v60
- v6 = Store <mem> {int} v5 v7 v4
- v62 = Store <mem> {int} v8 v7 v6
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| after late opt [30800 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v41 = Addr <*uint8> {type.int} v3
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v11 = Const64 <int> [4]
- v57 = StringMake <string> v53 v12
- Plain → b2
- b3: ← b2
- v16 = Const64 <int> [-2]
- v17 = Const64 <int> [6]
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v28 = Addr <*[2]interface {}> {.autotmp_4} v2
- v32 = Addr <*int> {.autotmp_5} v2
- v39 = OffPtr <*interface {}> [0] v25
- v43 = Addr <*int> {.autotmp_6} v2
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v54 = Load <*uint8> v36 v35
- v9 = OffPtr <**uint8> [24] v2
- v64 = OffPtr <**uint8> [8] v25
- v19 = Store <mem> {uintptr} v39 v54 v35
- v13 = OffPtr <**uint8> [24] v2
- v14 = OffPtr <**uint8> [24] v25
- v55 = Load <*uint8> v9 v35
- v37 = IMake <interface {}> v54 v55
- v40 = Store <mem> {*uint8} v64 v55 v19
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v52 = Load <*uint8> v36 v45
- v15 = Load <*uint8> v13 v45
- v59 = Store <mem> {uintptr} v49 v52 v45
- v46 = IMake <interface {}> v52 v15
- v50 = Store <mem> {*uint8} v14 v15 v59
- Plain → b5
- b5: ← b3
- v56 = SliceMake <[]interface {}> v25 v7 v7
- v48 = OffPtr <*int> [8] v2
- v10 = Store <mem> {*uint8} v58 v53 v50
- v8 = OffPtr <*int> [32] v2
- v5 = OffPtr <*int> [24] v2
- v60 = Store <mem> {int} v48 v12 v10
- v4 = Store <mem> {*uint8} v61 v25 v60
- v6 = Store <mem> {int} v5 v7 v4
- v62 = Store <mem> {int} v8 v7 v6
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| after generic deadcode [35800 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- Plain → b2
- b3: ← b2
- v16 = Const64 <int> [-2]
- v17 = Const64 <int> [6]
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v39 = OffPtr <*interface {}> [0] v25
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v54 = Load <*uint8> v36 v35
- v9 = OffPtr <**uint8> [24] v2
- v64 = OffPtr <**uint8> [8] v25
- v19 = Store <mem> {uintptr} v39 v54 v35
- v13 = OffPtr <**uint8> [24] v2
- v14 = OffPtr <**uint8> [24] v25
- v55 = Load <*uint8> v9 v35
- v40 = Store <mem> {*uint8} v64 v55 v19
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v52 = Load <*uint8> v36 v45
- v15 = Load <*uint8> v13 v45
- v59 = Store <mem> {uintptr} v49 v52 v45
- v50 = Store <mem> {*uint8} v14 v15 v59
- Plain → b5
- b5: ← b3
- v48 = OffPtr <*int> [8] v2
- v10 = Store <mem> {*uint8} v58 v53 v50
- v8 = OffPtr <*int> [32] v2
- v5 = OffPtr <*int> [24] v2
- v60 = Store <mem> {int} v48 v12 v10
- v4 = Store <mem> {*uint8} v61 v25 v60
- v6 = Store <mem> {int} v5 v7 v4
- v62 = Store <mem> {int} v8 v7 v6
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v16 name x[int]: v7 name z[int]: v17
| after check bce [20300 ns]- b1:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- Plain → b2
- b3: ← b2
- v16 = Const64 <int> [-2]
- v17 = Const64 <int> [6]
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v39 = OffPtr <*interface {}> [0] v25
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v54 = Load <*uint8> v36 v35
- v9 = OffPtr <**uint8> [24] v2
- v64 = OffPtr <**uint8> [8] v25
- v19 = Store <mem> {uintptr} v39 v54 v35
- v13 = OffPtr <**uint8> [24] v2
- v14 = OffPtr <**uint8> [24] v25
- v55 = Load <*uint8> v9 v35
- v40 = Store <mem> {*uint8} v64 v55 v19
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v52 = Load <*uint8> v36 v45
- v15 = Load <*uint8> v13 v45
- v59 = Store <mem> {uintptr} v49 v52 v45
- v50 = Store <mem> {*uint8} v14 v15 v59
- Plain → b5
- b5: ← b3
- v48 = OffPtr <*int> [8] v2
- v10 = Store <mem> {*uint8} v58 v53 v50
- v8 = OffPtr <*int> [32] v2
- v5 = OffPtr <*int> [24] v2
- v60 = Store <mem> {int} v48 v12 v10
- v4 = Store <mem> {*uint8} v61 v25 v60
- v6 = Store <mem> {int} v5 v7 v4
- v62 = Store <mem> {int} v8 v7 v6
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v16 name x[int]: v7 name z[int]: v17
| after fuse [22800 ns]- b5:
- v16 = Const64 <int> [-2]
- v17 = Const64 <int> [6]
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v39 = OffPtr <*interface {}> [0] v25
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v54 = Load <*uint8> v36 v35
- v9 = OffPtr <**uint8> [24] v2
- v64 = OffPtr <**uint8> [8] v25
- v19 = Store <mem> {uintptr} v39 v54 v35
- v13 = OffPtr <**uint8> [24] v2
- v14 = OffPtr <**uint8> [24] v25
- v48 = OffPtr <*int> [8] v2
- v8 = OffPtr <*int> [32] v2
- v5 = OffPtr <*int> [24] v2
- v55 = Load <*uint8> v9 v35
- v40 = Store <mem> {*uint8} v64 v55 v19
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v52 = Load <*uint8> v36 v45
- v15 = Load <*uint8> v13 v45
- v59 = Store <mem> {uintptr} v49 v52 v45
- v50 = Store <mem> {*uint8} v14 v15 v59
- v10 = Store <mem> {*uint8} v58 v53 v50
- v60 = Store <mem> {int} v48 v12 v10
- v4 = Store <mem> {*uint8} v61 v25 v60
- v6 = Store <mem> {int} v5 v7 v4
- v62 = Store <mem> {int} v8 v7 v6
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v16 name x[int]: v7 name z[int]: v17
| after dse [40400 ns]- b5:
- v16 = Const64 <int> [-2]
- v17 = Const64 <int> [6]
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v39 = OffPtr <*interface {}> [0] v25
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v54 = Load <*uint8> v36 v35
- v9 = OffPtr <**uint8> [24] v2
- v64 = OffPtr <**uint8> [8] v25
- v19 = Store <mem> {uintptr} v39 v54 v35
- v13 = OffPtr <**uint8> [24] v2
- v14 = OffPtr <**uint8> [24] v25
- v48 = OffPtr <*int> [8] v2
- v8 = OffPtr <*int> [32] v2
- v5 = OffPtr <*int> [24] v2
- v55 = Load <*uint8> v9 v35
- v40 = Store <mem> {*uint8} v64 v55 v19
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v52 = Load <*uint8> v36 v45
- v15 = Load <*uint8> v13 v45
- v59 = Store <mem> {uintptr} v49 v52 v45
- v50 = Store <mem> {*uint8} v14 v15 v59
- v10 = Store <mem> {*uint8} v58 v53 v50
- v60 = Store <mem> {int} v48 v12 v10
- v4 = Store <mem> {*uint8} v61 v25 v60
- v6 = Store <mem> {int} v5 v7 v4
- v62 = Store <mem> {int} v8 v7 v6
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v16 name x[int]: v7 name z[int]: v17
| after writebarrier [125900 ns]- b5:
- v16 = Const64 <int> [-2]
- v17 = Const64 <int> [6]
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v39 = OffPtr <*interface {}> [0] v25
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v54 = Load <*uint8> v36 v35
- v9 = OffPtr <**uint8> [24] v2
- v64 = OffPtr <**uint8> [8] v25
- v19 = Store <mem> {uintptr} v39 v54 v35
- v13 = OffPtr <**uint8> [24] v2
- v14 = OffPtr <**uint8> [24] v25
- v48 = OffPtr <*int> [8] v2
- v8 = OffPtr <*int> [32] v2
- v5 = OffPtr <*int> [24] v2
- v55 = Load <*uint8> v9 v35
- v40 = Store <mem> {*uint8} v64 v55 v19
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v52 = Load <*uint8> v36 v45
- v15 = Load <*uint8> v13 v45
- v59 = Store <mem> {uintptr} v49 v52 v45
- v50 = Store <mem> {*uint8} v14 v15 v59
- v10 = Store <mem> {*uint8} v58 v53 v50
- v60 = Store <mem> {int} v48 v12 v10
- v4 = Store <mem> {*uint8} v61 v25 v60
- v6 = Store <mem> {int} v5 v7 v4
- v62 = Store <mem> {int} v8 v7 v6
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v16 name x[int]: v7 name z[int]: v17
| after tighten [10784400 ns]- b5:
- v16 = Const64 <int> [-2]
- v17 = Const64 <int> [6]
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = Const64 <int> [2]
- v29 = Addr <*uint8> {type.int} v3
- v30 = OffPtr <**byte> [0] v2
- v33 = OffPtr <**int> [8] v2
- v36 = OffPtr <*interface {}> [16] v2
- v58 = OffPtr <*string> [0] v2
- v61 = OffPtr <*[]interface {}> [16] v2
- v53 = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 = Const64 <int> [7]
- v18 = Addr <*int> {.autotmp_5} v2
- v22 = Addr <*int> {.autotmp_6} v2
- v25 = Addr <*[2]interface {}> {.autotmp_4} v2
- v39 = OffPtr <*interface {}> [0] v25
- v49 = OffPtr <*interface {}> [16] v25
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = Store <mem> {int} v18 v16 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = Store <mem> {int} v22 v17 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v27 = Zero <mem> {[2]interface {}} [32] v25 v26
- v31 = Store <mem> {*byte} v30 v29 v27
- v34 = Store <mem> {*int} v33 v18 v31
- v35 = StaticCall <mem> {runtime.convT2E64} [32] v34
- v54 = Load <*uint8> v36 v35
- v9 = OffPtr <**uint8> [24] v2
- v64 = OffPtr <**uint8> [8] v25
- v19 = Store <mem> {uintptr} v39 v54 v35
- v13 = OffPtr <**uint8> [24] v2
- v14 = OffPtr <**uint8> [24] v25
- v48 = OffPtr <*int> [8] v2
- v8 = OffPtr <*int> [32] v2
- v5 = OffPtr <*int> [24] v2
- v55 = Load <*uint8> v9 v35
- v40 = Store <mem> {*uint8} v64 v55 v19
- v42 = Store <mem> {*byte} v30 v29 v40
- v44 = Store <mem> {*int} v33 v22 v42
- v45 = StaticCall <mem> {runtime.convT2E64} [32] v44
- v52 = Load <*uint8> v36 v45
- v15 = Load <*uint8> v13 v45
- v59 = Store <mem> {uintptr} v49 v52 v45
- v50 = Store <mem> {*uint8} v14 v15 v59
- v10 = Store <mem> {*uint8} v58 v53 v50
- v60 = Store <mem> {int} v48 v12 v10
- v4 = Store <mem> {*uint8} v61 v25 v60
- v6 = Store <mem> {int} v5 v7 v4
- v62 = Store <mem> {int} v8 v7 v6
- v63 = StaticCall <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v16 name x[int]: v7 name z[int]: v17
| after lower [10257000 ns]- b5:
- v16 = MOVQconst <int> [-2]
- v17 = MOVQconst <int> [6]
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = MOVQconst <int> [2]
- v29 = LEAQ <*uint8> {type.int} v3
- v30 = Copy <uintptr> v2
- v33 = ADDQconst <**int> [8] v2
- v36 = ADDQconst <*interface {}> [16] v2
- v58 = Copy <uintptr> v2
- v61 = ADDQconst <*[]interface {}> [16] v2
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v12 = MOVQconst <int> [7]
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v39 = LEAQ <*interface {}> {.autotmp_4} v2
- v49 = LEAQ <*interface {}> {.autotmp_4} [16] v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v9 = ADDQconst <**uint8> [24] v2
- v64 = LEAQ <**uint8> {.autotmp_4} [8] v2
- v13 = ADDQconst <**uint8> [24] v2
- v14 = LEAQ <**uint8> {.autotmp_4} [24] v2
- v48 = ADDQconst <*int> [8] v2
- v8 = ADDQconst <*int> [32] v2
- v5 = ADDQconst <*int> [24] v2
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v16 name x[int]: v7 name z[int]: v17
| after lowered cse [59700 ns]- b5:
- v16 = MOVQconst <int> [-2]
- v17 = MOVQconst <int> [6]
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v7 = MOVQconst <int> [2]
- v29 = LEAQ <*uint8> {type.int} v3
- v30 = Copy <uintptr> v2
- v33 = ADDQconst <**int> [8] v2
- v36 = ADDQconst <*interface {}> [16] v2
- v58 = Copy <uintptr> v2
- v61 = ADDQconst <*[]interface {}> [16] v2
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v12 = MOVQconst <int> [7]
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v39 = LEAQ <*interface {}> {.autotmp_4} v2
- v49 = LEAQ <*interface {}> {.autotmp_4} [16] v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v9 = ADDQconst <**uint8> [24] v2
- v64 = LEAQ <**uint8> {.autotmp_4} [8] v2
- v13 = ADDQconst <**uint8> [24] v2
- v14 = LEAQ <**uint8> {.autotmp_4} [24] v2
- v48 = ADDQconst <*int> [8] v2
- v8 = ADDQconst <*int> [32] v2
- v5 = ADDQconst <*int> [24] v2
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
name w[int]: v16 name x[int]: v7 name z[int]: v17
| after lowered deadcode [40400 ns]- b5:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after checkLower [121900 ns]- b5:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after late phielim [174400 ns]- b5:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after late copyelim [22000 ns]- b5:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after phi tighten [21400 ns]- b5:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after late deadcode [28200 ns]- b5:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after critical [22100 ns]- b5:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after likelyadjust [19500 ns]- b5:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after layout [19400 ns]- b5:
- v1 = InitMem <mem>
- v2 = SP <uintptr>
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v18 = LEAQ <*int> {.autotmp_5} v2
- v22 = LEAQ <*int> {.autotmp_6} v2
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v20 = VarDef <mem> {.autotmp_5} v1
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v31 = MOVQstore <mem> v2 v29 v27
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v52 = MOVQload <*uint8> [16] v2 v45
- v15 = MOVQload <*uint8> [24] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after schedule [45200 ns]- b5:
- v1 = InitMem <mem>
- v20 = VarDef <mem> {.autotmp_5} v1
- v2 = SP <uintptr>
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v31 = MOVQstore <mem> v2 v29 v27
- v18 = LEAQ <*int> {.autotmp_5} v2
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v22 = LEAQ <*int> {.autotmp_6} v2
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v15 = MOVQload <*uint8> [24] v2 v45
- v52 = MOVQload <*uint8> [16] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after late nilcheck [19700 ns]- b5:
- v1 = InitMem <mem>
- v20 = VarDef <mem> {.autotmp_5} v1
- v2 = SP <uintptr>
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v31 = MOVQstore <mem> v2 v29 v27
- v18 = LEAQ <*int> {.autotmp_5} v2
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v22 = LEAQ <*int> {.autotmp_6} v2
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v15 = MOVQload <*uint8> [24] v2 v45
- v52 = MOVQload <*uint8> [16] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after flagalloc [19400 ns]- b5:
- v1 = InitMem <mem>
- v20 = VarDef <mem> {.autotmp_5} v1
- v2 = SP <uintptr>
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v3 = SB <uintptr>
- v29 = LEAQ <*uint8> {type.int} v3
- v31 = MOVQstore <mem> v2 v29 v27
- v18 = LEAQ <*int> {.autotmp_5} v2
- v34 = MOVQstore <mem> [8] v2 v18 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35
- v55 = MOVQload <*uint8> [24] v2 v35
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v42 = MOVQstore <mem> v2 v29 v40
- v22 = LEAQ <*int> {.autotmp_6} v2
- v44 = MOVQstore <mem> [8] v2 v22 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v15 = MOVQload <*uint8> [24] v2 v45
- v52 = MOVQload <*uint8> [16] v2 v45
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v53 = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v10 = MOVQstore <mem> v2 v53 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v25 = LEAQ <*[2]interface {}> {.autotmp_4} v2
- v4 = MOVQstore <mem> [16] v2 v25 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after regalloc [386600 ns]- b5:
- v1 = InitMem <mem>
- v20 = VarDef <mem> {.autotmp_5} v1
- v2 = SP <uintptr> : SP
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v3 = SB <uintptr> : SB
- v12 = LEAQ <*uint8> {type.int} v3 : AX
- v31 = MOVQstore <mem> v2 v12 v27
- v61 = LEAQ <*int> {.autotmp_5} v2 : CX
- v34 = MOVQstore <mem> [8] v2 v61 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35 : AX
- v55 = MOVQload <*uint8> [24] v2 v35 : CX
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v58 = LEAQ <*uint8> {type.int} v3 : AX
- v42 = MOVQstore <mem> v2 v58 v40
- v36 = LEAQ <*int> {.autotmp_6} v2 : AX
- v44 = MOVQstore <mem> [8] v2 v36 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v15 = MOVQload <*uint8> [24] v2 v45 : AX
- v52 = MOVQload <*uint8> [16] v2 v45 : CX
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v33 = LEAQ <*uint8> {go.string."%d, %d\n"} v3 : AX
- v10 = MOVQstore <mem> v2 v33 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v30 = LEAQ <*[2]interface {}> {.autotmp_4} v2 : AX
- v4 = MOVQstore <mem> [16] v2 v30 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after loop rotate [150200 ns]- b5:
- v1 = InitMem <mem>
- v20 = VarDef <mem> {.autotmp_5} v1
- v2 = SP <uintptr> : SP
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v3 = SB <uintptr> : SB
- v12 = LEAQ <*uint8> {type.int} v3 : AX
- v31 = MOVQstore <mem> v2 v12 v27
- v61 = LEAQ <*int> {.autotmp_5} v2 : CX
- v34 = MOVQstore <mem> [8] v2 v61 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35 : AX
- v55 = MOVQload <*uint8> [24] v2 v35 : CX
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v58 = LEAQ <*uint8> {type.int} v3 : AX
- v42 = MOVQstore <mem> v2 v58 v40
- v36 = LEAQ <*int> {.autotmp_6} v2 : AX
- v44 = MOVQstore <mem> [8] v2 v36 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v15 = MOVQload <*uint8> [24] v2 v45 : AX
- v52 = MOVQload <*uint8> [16] v2 v45 : CX
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v33 = LEAQ <*uint8> {go.string."%d, %d\n"} v3 : AX
- v10 = MOVQstore <mem> v2 v33 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v30 = LEAQ <*[2]interface {}> {.autotmp_4} v2 : AX
- v4 = MOVQstore <mem> [16] v2 v30 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after stackframe [23200 ns]- b5:
- v1 = InitMem <mem>
- v20 = VarDef <mem> {.autotmp_5} v1
- v2 = SP <uintptr> : SP
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v3 = SB <uintptr> : SB
- v12 = LEAQ <*uint8> {type.int} v3 : AX
- v31 = MOVQstore <mem> v2 v12 v27
- v61 = LEAQ <*int> {.autotmp_5} v2 : CX
- v34 = MOVQstore <mem> [8] v2 v61 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35 : AX
- v55 = MOVQload <*uint8> [24] v2 v35 : CX
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v58 = LEAQ <*uint8> {type.int} v3 : AX
- v42 = MOVQstore <mem> v2 v58 v40
- v36 = LEAQ <*int> {.autotmp_6} v2 : AX
- v44 = MOVQstore <mem> [8] v2 v36 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v15 = MOVQload <*uint8> [24] v2 v45 : AX
- v52 = MOVQload <*uint8> [16] v2 v45 : CX
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v33 = LEAQ <*uint8> {go.string."%d, %d\n"} v3 : AX
- v10 = MOVQstore <mem> v2 v33 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v30 = LEAQ <*[2]interface {}> {.autotmp_4} v2 : AX
- v4 = MOVQstore <mem> [16] v2 v30 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| after trim [20900 ns]- b5:
- v1 = InitMem <mem>
- v20 = VarDef <mem> {.autotmp_5} v1
- v2 = SP <uintptr> : SP
- v21 = MOVQstoreconst <mem> {.autotmp_5} [val=-2,off=0] v2 v20
- v23 = VarDef <mem> {.autotmp_6} v21
- v24 = MOVQstoreconst <mem> {.autotmp_6} [val=6,off=0] v2 v23
- v26 = VarDef <mem> {.autotmp_4} v24
- v37 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=0] v2 v26
- v46 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=8] v2 v37
- v56 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=16] v2 v46
- v27 = MOVQstoreconst <mem> {.autotmp_4} [val=0,off=24] v2 v56
- v3 = SB <uintptr> : SB
- v12 = LEAQ <*uint8> {type.int} v3 : AX
- v31 = MOVQstore <mem> v2 v12 v27
- v61 = LEAQ <*int> {.autotmp_5} v2 : CX
- v34 = MOVQstore <mem> [8] v2 v61 v31
- v35 = CALLstatic <mem> {runtime.convT2E64} [32] v34
- v54 = MOVQload <*uint8> [16] v2 v35 : AX
- v55 = MOVQload <*uint8> [24] v2 v35 : CX
- v19 = MOVQstore <mem> {.autotmp_4} v2 v54 v35
- v40 = MOVQstore <mem> {.autotmp_4} [8] v2 v55 v19
- v58 = LEAQ <*uint8> {type.int} v3 : AX
- v42 = MOVQstore <mem> v2 v58 v40
- v36 = LEAQ <*int> {.autotmp_6} v2 : AX
- v44 = MOVQstore <mem> [8] v2 v36 v42
- v45 = CALLstatic <mem> {runtime.convT2E64} [32] v44
- v15 = MOVQload <*uint8> [24] v2 v45 : AX
- v52 = MOVQload <*uint8> [16] v2 v45 : CX
- v59 = MOVQstore <mem> {.autotmp_4} [16] v2 v52 v45
- v50 = MOVQstore <mem> {.autotmp_4} [24] v2 v15 v59
- v33 = LEAQ <*uint8> {go.string."%d, %d\n"} v3 : AX
- v10 = MOVQstore <mem> v2 v33 v50
- v60 = MOVQstoreconst <mem> [val=7,off=8] v2 v10
- v30 = LEAQ <*[2]interface {}> {.autotmp_4} v2 : AX
- v4 = MOVQstore <mem> [16] v2 v30 v60
- v6 = MOVQstoreconst <mem> [val=2,off=24] v2 v4
- v62 = MOVQstoreconst <mem> [val=2,off=32] v2 v6
- v63 = CALLstatic <mem> {fmt.Printf} [64] v62
- v65 = VarKill <mem> {.autotmp_6} v63
- v66 = VarKill <mem> {.autotmp_5} v65
- v67 = VarKill <mem> {.autotmp_4} v66
- Ret v67
| genssa- 00000 (/root/main.go:5) TEXT "".ssa(SB)
- 00001 (/root/main.go:5) FUNCDATA $0, gclocals·69c1753bd5f81501d95132d08af04464(SB)
- 00002 (/root/main.go:5) FUNCDATA $1, gclocals·037c1360cc57929d7f2b26c892bdc785(SB)
- v21
- 00003 (/root/main.go:19) MOVQ $-2, ""..autotmp_5-40(SP)
- v24
- 00004 (/root/main.go:19) MOVQ $6, ""..autotmp_6-48(SP)
- v37
- 00005 (/root/main.go:19) MOVQ $0, ""..autotmp_4-32(SP)
- v46
- 00006 (/root/main.go:19) MOVQ $0, ""..autotmp_4-24(SP)
- v56
- 00007 (/root/main.go:19) MOVQ $0, ""..autotmp_4-16(SP)
- v27
- 00008 (/root/main.go:19) MOVQ $0, ""..autotmp_4-8(SP)
- v12
- 00009 (/root/main.go:19) LEAQ type.int(SB), AX
- v31
- 00010 (/root/main.go:19) MOVQ AX, (SP)
- v61
- 00011 (/root/main.go:19) LEAQ ""..autotmp_5-40(SP), CX
- v34
- 00012 (/root/main.go:19) MOVQ CX, 8(SP)
- v35
- 00013 (/root/main.go:19) PCDATA $0, $1
- v35
- 00014 (/root/main.go:19) CALL runtime.convT2E64(SB)
- v54
- 00015 (/root/main.go:19) MOVQ 16(SP), AX
- v55
- 00016 (/root/main.go:19) MOVQ 24(SP), CX
- v19
- 00017 (/root/main.go:19) MOVQ AX, ""..autotmp_4-32(SP)
- v40
- 00018 (/root/main.go:19) MOVQ CX, ""..autotmp_4-24(SP)
- v58
- 00019 (/root/main.go:19) LEAQ type.int(SB), AX
- v42
- 00020 (/root/main.go:19) MOVQ AX, (SP)
- v36
- 00021 (/root/main.go:19) LEAQ ""..autotmp_6-48(SP), AX
- v44
- 00022 (/root/main.go:19) MOVQ AX, 8(SP)
- v45
- 00023 (/root/main.go:19) PCDATA $0, $1
- v45
- 00024 (/root/main.go:19) CALL runtime.convT2E64(SB)
- v15
- 00025 (/root/main.go:19) MOVQ 24(SP), AX
- v52
- 00026 (/root/main.go:19) MOVQ 16(SP), CX
- v59
- 00027 (/root/main.go:19) MOVQ CX, ""..autotmp_4-16(SP)
- v50
- 00028 (/root/main.go:19) MOVQ AX, ""..autotmp_4-8(SP)
- v33
- 00029 (/root/main.go:19) LEAQ go.string."%d, %d\n"(SB), AX
- v10
- 00030 (/root/main.go:19) MOVQ AX, (SP)
- v60
- 00031 (/root/main.go:19) MOVQ $7, 8(SP)
- v30
- 00032 (/root/main.go:19) LEAQ ""..autotmp_4-32(SP), AX
- v4
- 00033 (/root/main.go:19) MOVQ AX, 16(SP)
- v6
- 00034 (/root/main.go:19) MOVQ $2, 24(SP)
- v62
- 00035 (/root/main.go:19) MOVQ $2, 32(SP)
- v63
- 00036 (/root/main.go:19) PCDATA $0, $1
- v63
- 00037 (/root/main.go:19) CALL fmt.Printf(SB)
- b5
- 00038 (/root/main.go:20) RET
- 00039 (<unknown line number>) END
|