start | start- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v4 (?) = Const64 <int> [0] (w[int], x[int], y[int], z[int])
- v5 (?) = Const64 <int> [5] (x[int])
- v6 (?) = Const64 <int> [3]
- v7 (9) = Sub64 <int> v5 v6 (x[int])
- v8 (10) = Less64 <bool> v7 v6
- v10 (?) = Const64 <int> [2]
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v40 (?) = Const64 <int> [1]
- v49 (?) = ConstString <string> {"%d, %d\n"}
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v56 (?) = OffPtr <*int> [40] v2
- If v8 → b2 b4 (line 10)
- b2: ← b1
- v9 (
11) = Copy <int> v7 (x[int]) - v11 (11) = Mul64 <int> v9 v10 (w[int], y[int])
- Plain → b3 (line 12)
- b3: ← b2 b4
- v14 (
16) = Phi <int> v9 v12 (x[int]) - v15 (
16) = Phi <int> v11 v13 (y[int]) - v16 (16) = Sub64 <int> v14 v15 (w[int])
- v17 (17) = Add64 <int> v14 v15 (z[int])
- v18 (
19) = Copy <mem> v1 - v19 (
19) = VarDef <mem> {.autotmp_4} v18 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = PtrIndex <*interface {}> v22 v4
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v34 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = PtrIndex <*interface {}> v22 v40
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- v44 (19) = IsSliceInBounds <bool> v4 v10
- If v44 → b5 b6 (likely) (line 19)
- b4: ← b1
- v12 (
14) = Copy <int> v7 (x[int]) - v13 (14) = Sub64 <int> v12 v6 (y[int])
- Plain → b3 (line 14)
- b5: ← b3
- v47 (19) = Sub64 <int> v10 v4
- v48 (19) = SliceMake <[]interface {}> v22 v47 v47
- v51 (
19) = Copy <mem> v42 - v52 (19) = Store <mem> {string} v50 v49 v51
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line 20)
- b6: ← b3
- v45 (
19) = Copy <mem> v42 - v46 (19) = StaticCall <mem> {runtime.panicslice} v45
- Exit v46 (line 19)
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
| number lines | number lines [29400 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v4 (?) = Const64 <int> [0] (w[int], x[int], y[int], z[int])
- v5 (?) = Const64 <int> [5] (x[int])
- v6 (?) = Const64 <int> [3]
- v7 (+9) = Sub64 <int> v5 v6 (x[int])
- v8 (+10) = Less64 <bool> v7 v6
- v10 (?) = Const64 <int> [2]
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v40 (?) = Const64 <int> [1]
- v49 (?) = ConstString <string> {"%d, %d\n"}
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v56 (?) = OffPtr <*int> [40] v2
- If v8 → b2 b4 (line 10)
- b2: ← b1
- v9 (
11) = Copy <int> v7 (x[int]) - v11 (+11) = Mul64 <int> v9 v10 (w[int], y[int])
- Plain → b3 (line +12)
- b3: ← b2 b4
- v14 (
16) = Phi <int> v9 v12 (x[int]) - v15 (
16) = Phi <int> v11 v13 (y[int]) - v16 (+16) = Sub64 <int> v14 v15 (w[int])
- v17 (+17) = Add64 <int> v14 v15 (z[int])
- v18 (
19) = Copy <mem> v1 - v19 (
19) = VarDef <mem> {.autotmp_4} v18 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = PtrIndex <*interface {}> v22 v4
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v34 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = PtrIndex <*interface {}> v22 v40
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- v44 (19) = IsSliceInBounds <bool> v4 v10
- If v44 → b5 b6 (likely) (line 19)
- b4: ← b1
- v12 (
14) = Copy <int> v7 (x[int]) - v13 (+14) = Sub64 <int> v12 v6 (y[int])
- Plain → b3 (line 14)
- b5: ← b3
- v47 (+19) = Sub64 <int> v10 v4
- v48 (19) = SliceMake <[]interface {}> v22 v47 v47
- v51 (
19) = Copy <mem> v42 - v52 (19) = Store <mem> {string} v50 v49 v51
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
- b6: ← b3
- v45 (
19) = Copy <mem> v42 - v46 (+19) = StaticCall <mem> {runtime.panicslice} v45
- Exit v46 (line 19)
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
| early phielim | early phielim [24300 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v4 (?) = Const64 <int> [0] (w[int], x[int], y[int], z[int])
- v5 (?) = Const64 <int> [5] (x[int])
- v6 (?) = Const64 <int> [3]
- v7 (+9) = Sub64 <int> v5 v6 (x[int])
- v8 (+10) = Less64 <bool> v7 v6
- v10 (?) = Const64 <int> [2]
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v40 (?) = Const64 <int> [1]
- v49 (?) = ConstString <string> {"%d, %d\n"}
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v56 (?) = OffPtr <*int> [40] v2
- If v8 → b2 b4 (line 10)
- b2: ← b1
- v9 (
11) = Copy <int> v7 (x[int]) - v11 (+11) = Mul64 <int> v7 v10 (w[int], y[int])
- Plain → b3 (line +12)
- b3: ← b2 b4
- v15 (
16) = Phi <int> v11 v13 (y[int]) - v14 (
16) = Copy <int> v7 (x[int]) - v16 (+16) = Sub64 <int> v7 v15 (w[int])
- v17 (+17) = Add64 <int> v7 v15 (z[int])
- v18 (
19) = Copy <mem> v1 - v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = PtrIndex <*interface {}> v22 v4
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v34 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = PtrIndex <*interface {}> v22 v40
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- v44 (19) = IsSliceInBounds <bool> v4 v10
- If v44 → b5 b6 (likely) (line 19)
- b4: ← b1
- v12 (
14) = Copy <int> v7 (x[int]) - v13 (+14) = Sub64 <int> v7 v6 (y[int])
- Plain → b3 (line 14)
- b5: ← b3
- v47 (+19) = Sub64 <int> v10 v4
- v48 (19) = SliceMake <[]interface {}> v22 v47 v47
- v51 (
19) = Copy <mem> v42 - v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
- b6: ← b3
- v45 (
19) = Copy <mem> v42 - v46 (+19) = StaticCall <mem> {runtime.panicslice} v42
- Exit v46 (line 19)
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
| early copyelim | early copyelim [24600 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v4 (?) = Const64 <int> [0] (w[int], x[int], y[int], z[int])
- v5 (?) = Const64 <int> [5] (x[int])
- v6 (?) = Const64 <int> [3]
- v7 (+9) = Sub64 <int> v5 v6 (x[int])
- v8 (+10) = Less64 <bool> v7 v6
- v10 (?) = Const64 <int> [2]
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v40 (?) = Const64 <int> [1]
- v49 (?) = ConstString <string> {"%d, %d\n"}
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v56 (?) = OffPtr <*int> [40] v2
- If v8 → b2 b4 (line 10)
- b2: ← b1
- v9 (
11) = Copy <int> v7 - v11 (+11) = Mul64 <int> v7 v10 (w[int], y[int])
- Plain → b3 (line +12)
- b3: ← b2 b4
- v15 (
16) = Phi <int> v11 v13 (y[int]) - v14 (
16) = Copy <int> v7 - v16 (+16) = Sub64 <int> v7 v15 (w[int])
- v17 (+17) = Add64 <int> v7 v15 (z[int])
- v18 (
19) = Copy <mem> v1 - v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = PtrIndex <*interface {}> v22 v4
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v34 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = PtrIndex <*interface {}> v22 v40
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- v44 (19) = IsSliceInBounds <bool> v4 v10
- If v44 → b5 b6 (likely) (line 19)
- b4: ← b1
- v12 (
14) = Copy <int> v7 - v13 (+14) = Sub64 <int> v7 v6 (y[int])
- Plain → b3 (line 14)
- b5: ← b3
- v47 (+19) = Sub64 <int> v10 v4
- v48 (19) = SliceMake <[]interface {}> v22 v47 v47
- v51 (
19) = Copy <mem> v42 - v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
- b6: ← b3
- v45 (
19) = Copy <mem> v42 - v46 (+19) = StaticCall <mem> {runtime.panicslice} v42
- Exit v46 (line 19)
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
| early deadcode | early deadcode [73600 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v4 (?) = Const64 <int> [0] (z[int], w[int], x[int], y[int])
- v5 (?) = Const64 <int> [5] (x[int])
- v6 (?) = Const64 <int> [3]
- v7 (+9) = Sub64 <int> v5 v6 (x[int])
- v8 (+10) = Less64 <bool> v7 v6
- v10 (?) = Const64 <int> [2]
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v40 (?) = Const64 <int> [1]
- v49 (?) = ConstString <string> {"%d, %d\n"}
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- If v8 → b2 b4 (line 10)
- b2: ← b1
- v11 (+11) = Mul64 <int> v7 v10 (y[int], w[int])
- Plain → b3 (line +12)
- b3: ← b2 b4
- v15 (
16) = Phi <int> v11 v13 (y[int]) - v16 (+16) = Sub64 <int> v7 v15 (w[int])
- v17 (+17) = Add64 <int> v7 v15 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = PtrIndex <*interface {}> v22 v4
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v34 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = PtrIndex <*interface {}> v22 v40
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- v44 (19) = IsSliceInBounds <bool> v4 v10
- If v44 → b5 b6 (likely) (line 19)
- b4: ← b1
- v13 (+14) = Sub64 <int> v7 v6 (y[int])
- Plain → b3 (line 14)
- b5: ← b3
- v47 (+19) = Sub64 <int> v10 v4
- v48 (19) = SliceMake <[]interface {}> v22 v47 v47
- v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
- b6: ← b3
- v46 (+19) = StaticCall <mem> {runtime.panicslice} v42
- Exit v46 (line 19)
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| short circuit | short circuit [23500 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v4 (?) = Const64 <int> [0] (w[int], x[int], y[int], z[int])
- v5 (?) = Const64 <int> [5] (x[int])
- v6 (?) = Const64 <int> [3]
- v7 (+9) = Sub64 <int> v5 v6 (x[int])
- v8 (+10) = Less64 <bool> v7 v6
- v10 (?) = Const64 <int> [2]
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v40 (?) = Const64 <int> [1]
- v49 (?) = ConstString <string> {"%d, %d\n"}
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- If v8 → b2 b4 (line 10)
- b2: ← b1
- v11 (+11) = Mul64 <int> v7 v10 (w[int], y[int])
- Plain → b3 (line +12)
- b3: ← b2 b4
- v15 (
16) = Phi <int> v11 v13 (y[int]) - v16 (+16) = Sub64 <int> v7 v15 (w[int])
- v17 (+17) = Add64 <int> v7 v15 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = PtrIndex <*interface {}> v22 v4
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v34 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = PtrIndex <*interface {}> v22 v40
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- v44 (19) = IsSliceInBounds <bool> v4 v10
- If v44 → b5 b6 (likely) (line 19)
- b4: ← b1
- v13 (+14) = Sub64 <int> v7 v6 (y[int])
- Plain → b3 (line 14)
- b5: ← b3
- v47 (+19) = Sub64 <int> v10 v4
- v48 (19) = SliceMake <[]interface {}> v22 v47 v47
- v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
- b6: ← b3
- v46 (+19) = StaticCall <mem> {runtime.panicslice} v42
- Exit v46 (line 19)
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| decompose user | decompose user [21800 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v4 (?) = Const64 <int> [0] (w[int], x[int], y[int], z[int])
- v5 (?) = Const64 <int> [5] (x[int])
- v6 (?) = Const64 <int> [3]
- v7 (+9) = Sub64 <int> v5 v6 (x[int])
- v8 (+10) = Less64 <bool> v7 v6
- v10 (?) = Const64 <int> [2]
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v40 (?) = Const64 <int> [1]
- v49 (?) = ConstString <string> {"%d, %d\n"}
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- If v8 → b2 b4 (line 10)
- b2: ← b1
- v11 (+11) = Mul64 <int> v7 v10 (w[int], y[int])
- Plain → b3 (line +12)
- b3: ← b2 b4
- v15 (
16) = Phi <int> v11 v13 (y[int]) - v16 (+16) = Sub64 <int> v7 v15 (w[int])
- v17 (+17) = Add64 <int> v7 v15 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = PtrIndex <*interface {}> v22 v4
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v34 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = PtrIndex <*interface {}> v22 v40
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- v44 (19) = IsSliceInBounds <bool> v4 v10
- If v44 → b5 b6 (likely) (line 19)
- b4: ← b1
- v13 (+14) = Sub64 <int> v7 v6 (y[int])
- Plain → b3 (line 14)
- b5: ← b3
- v47 (+19) = Sub64 <int> v10 v4
- v48 (19) = SliceMake <[]interface {}> v22 v47 v47
- v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
- b6: ← b3
- v46 (+19) = StaticCall <mem> {runtime.panicslice} v42
- Exit v46 (line 19)
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| opt | opt [167500 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v4 (?) = Const64 <int> [0] (y[int], z[int], w[int], x[int])
- v5 (?) = Const64 <int> [5] (x[int])
- v6 (?) = Const64 <int> [3]
- v7 (+9) = Const64 <int> [2] (x[int])
- v8 (+10) = ConstBool <bool> [true]
- v10 (?) = Const64 <int> [2]
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v40 (?) = Const64 <int> [1]
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v51 (?) = SB <uintptr>
- v12 (?) = Const64 <int> [7]
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v51
- v49 (?) = StringMake <string> v45 v12
- First → b2 b4 (line 10)
- b2: ← b1
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- Plain → b3 (line +12)
- b3: ← b2 b4
- v15 (
16) = Phi <int> v11 v13 (y[int]) - v16 (+16) = Sub64 <int> v7 v15 (w[int])
- v17 (+17) = Add64 <int> v7 v15 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = OffPtr <*interface {}> [0] v22
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v34 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = OffPtr <*interface {}> [16] v22
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- v44 (19) = ConstBool <bool> [true]
- v18 (19) = Const64 <int> [0]
- v14 (19) = Const64 <int> [16]
- v9 (19) = Const64 <int> [16]
- v56 (19) = Const64 <int> [16]
- First → b5 b6 (likely) (line 19)
- b4: ← b1
- v13 (+14) = Const64 <int> [-1] (y[int])
- Plain → b3 (line 14)
- b5: ← b3
- v47 (
19) = Const64 <int> [2] - v48 (+19) = SliceMake <[]interface {}> v22 v47 v47
- v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
- b6: ← b3
- v46 (+19) = StaticCall <mem> {runtime.panicslice} v42
- Exit v46 (line 19)
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| zero arg cse | zero arg cse [183100 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v4 (?) = Const64 <int> [0] (y[int], z[int], w[int], x[int])
- v5 (?) = Const64 <int> [5] (x[int])
- v6 (?) = Const64 <int> [3]
- v7 (+9) = Const64 <int> [2] (x[int])
- v8 (+10) = ConstBool <bool> [true]
- v10 (?) = Const64 <int> [2]
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v40 (?) = Const64 <int> [1]
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v51 (?) = SB <uintptr>
- v12 (?) = Const64 <int> [7]
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- v14 (19) = Const64 <int> [16]
- v13 (+14) = Const64 <int> [-1] (y[int])
- v49 (?) = StringMake <string> v45 v12
- First → b2 b4 (line 10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2 b4
- v15 (
16) = Phi <int> v11 v13 (y[int]) - v16 (+16) = Sub64 <int> v7 v15 (w[int])
- v17 (+17) = Add64 <int> v7 v15 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = OffPtr <*interface {}> [0] v22
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v34 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = OffPtr <*interface {}> [16] v22
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- v44 (19) = ConstBool <bool> [true]
- v18 (19) = Const64 <int> [0]
- v56 (19) = Const64 <int> [16]
- v9 (19) = Const64 <int> [16]
- First → b5 b6 (likely) (line 19)
- b4: ← b1
- Plain → b3 (line 14)
- b5: ← b3
- v47 (
19) = Const64 <int> [2] - v48 (+19) = SliceMake <[]interface {}> v22 v7 v7
- v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
- b6: ← b3
- v46 (+19) = StaticCall <mem> {runtime.panicslice} v42
- Exit v46 (line 19)
name w[int]: v4 v11 v16 name x[int]: v4 v5 v7 name y[int]: v4 v11 v13 v15 name z[int]: v4 v17
| opt deadcode | opt deadcode [176200 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- v49 (?) = StringMake <string> v45 v12
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Sub64 <int> v7 v11 (w[int])
- v17 (+17) = Add64 <int> v7 v11 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = OffPtr <*interface {}> [0] v22
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v34 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = OffPtr <*interface {}> [16] v22
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- Plain → b5 (line 19)
- b5: ← b3
- v48 (+19) = SliceMake <[]interface {}> v22 v7 v7
- v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| generic cse | generic cse [377200 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- v49 (?) = StringMake <string> v45 v12
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Sub64 <int> v7 v11 (w[int])
- v17 (+17) = Add64 <int> v7 v11 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = OffPtr <*interface {}> [0] v22
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = OffPtr <*interface {}> [16] v22
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- Plain → b5 (line 19)
- b5: ← b3
- v48 (+19) = SliceMake <[]interface {}> v22 v7 v7
- v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| phiopt | phiopt [21500 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- v49 (?) = StringMake <string> v45 v12
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Sub64 <int> v7 v11 (w[int])
- v17 (+17) = Add64 <int> v7 v11 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v31 (19) = NilCheck <void> v22 v28
- v32 (19) = OffPtr <*interface {}> [0] v22
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v39 (19) = NilCheck <void> v22 v37
- v41 (19) = OffPtr <*interface {}> [16] v22
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- v43 (19) = NilCheck <void> v22 v42
- Plain → b5 (line 19)
- b5: ← b3
- v48 (+19) = SliceMake <[]interface {}> v22 v7 v7
- v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| nilcheckelim | nilcheckelim [34500 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- v49 (?) = StringMake <string> v45 v12
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Sub64 <int> v7 v11 (w[int])
- v17 (+17) = Add64 <int> v7 v11 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- Plain → b5 (line 19)
- b5: ← b3
- v48 (+19) = SliceMake <[]interface {}> v22 v7 v7
- v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| prove | prove [178200 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- v49 (?) = StringMake <string> v45 v12
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Sub64 <int> v7 v11 (w[int])
- v17 (+17) = Add64 <int> v7 v11 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v30 (19) = Load <interface {}> v29 v28
- v33 (19) = Store <mem> {interface {}} v32 v30 v28
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v38 (19) = Load <interface {}> v29 v37
- v42 (19) = Store <mem> {interface {}} v41 v38 v37
- Plain → b5 (line 19)
- b5: ← b3
- v48 (+19) = SliceMake <[]interface {}> v22 v7 v7
- v52 (19) = Store <mem> {string} v50 v49 v42
- v54 (19) = Store <mem> {[]interface {}} v53 v48 v52
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| decompose builtin | decompose builtin [45500 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- v49 (?) = StringMake <string> v45 v12
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Sub64 <int> v7 v11 (w[int])
- v17 (+17) = Add64 <int> v7 v11 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v43 (19) = Load <uintptr> v29 v28
- v31 (19) = OffPtr <**uint8> [8] v29
- v46 (19) = OffPtr <**uint8> [8] v32
- v47 (19) = Store <mem> {uintptr} v32 v43 v28
- v18 (19) = OffPtr <**uint8> [8] v29
- v44 (19) = OffPtr <**uint8> [8] v41
- v39 (19) = Load <*uint8> v31 v28
- v30 (19) = IMake <interface {}> v43 v39
- v33 (19) = Store <mem> {*uint8} v46 v39 v47
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v9 (19) = Load <uintptr> v29 v37
- v56 (19) = Load <*uint8> v18 v37
- v15 (19) = Store <mem> {uintptr} v41 v9 v37
- v38 (19) = IMake <interface {}> v9 v56
- v42 (19) = Store <mem> {*uint8} v44 v56 v15
- Plain → b5 (line 19)
- b5: ← b3
- v48 (+19) = SliceMake <[]interface {}> v22 v7 v7
- v13 (19) = OffPtr <*int> [8] v50
- v14 (19) = Store <mem> {*uint8} v50 v45 v42
- v51 (19) = OffPtr <*int> [16] v53
- v10 (19) = OffPtr <*int> [8] v53
- v52 (19) = Store <mem> {int} v13 v12 v14
- v8 (19) = Store <mem> {*uint8} v53 v22 v52
- v40 (19) = Store <mem> {int} v10 v7 v8
- v54 (19) = Store <mem> {int} v51 v7 v40
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| softfloat | softfloat [21100 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- v49 (?) = StringMake <string> v45 v12
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Sub64 <int> v7 v11 (w[int])
- v17 (+17) = Add64 <int> v7 v11 (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v43 (19) = Load <uintptr> v29 v28
- v31 (19) = OffPtr <**uint8> [8] v29
- v46 (19) = OffPtr <**uint8> [8] v32
- v47 (19) = Store <mem> {uintptr} v32 v43 v28
- v18 (19) = OffPtr <**uint8> [8] v29
- v44 (19) = OffPtr <**uint8> [8] v41
- v39 (19) = Load <*uint8> v31 v28
- v30 (19) = IMake <interface {}> v43 v39
- v33 (19) = Store <mem> {*uint8} v46 v39 v47
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v9 (19) = Load <uintptr> v29 v37
- v56 (19) = Load <*uint8> v18 v37
- v15 (19) = Store <mem> {uintptr} v41 v9 v37
- v38 (19) = IMake <interface {}> v9 v56
- v42 (19) = Store <mem> {*uint8} v44 v56 v15
- Plain → b5 (line 19)
- b5: ← b3
- v48 (+19) = SliceMake <[]interface {}> v22 v7 v7
- v13 (19) = OffPtr <*int> [8] v50
- v14 (19) = Store <mem> {*uint8} v50 v45 v42
- v51 (19) = OffPtr <*int> [16] v53
- v10 (19) = OffPtr <*int> [8] v53
- v52 (19) = Store <mem> {int} v13 v12 v14
- v8 (19) = Store <mem> {*uint8} v53 v22 v52
- v40 (19) = Store <mem> {int} v10 v7 v8
- v54 (19) = Store <mem> {int} v51 v7 v40
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| late opt | late opt [54200 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- v49 (?) = StringMake <string> v45 v12
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Const64 <int> [-2] (w[int])
- v17 (+17) = Const64 <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v43 (19) = Load <uintptr> v29 v28
- v31 (19) = OffPtr <**uint8> [24] v2
- v46 (19) = OffPtr <**uint8> [8] v22
- v47 (19) = Store <mem> {uintptr} v32 v43 v28
- v18 (19) = OffPtr <**uint8> [24] v2
- v44 (19) = OffPtr <**uint8> [24] v22
- v39 (19) = Load <*uint8> v31 v28
- v30 (19) = IMake <interface {}> v43 v39
- v33 (19) = Store <mem> {*uint8} v46 v39 v47
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v9 (19) = Load <uintptr> v29 v37
- v56 (19) = Load <*uint8> v18 v37
- v15 (19) = Store <mem> {uintptr} v41 v9 v37
- v38 (19) = IMake <interface {}> v9 v56
- v42 (19) = Store <mem> {*uint8} v44 v56 v15
- Plain → b5 (line 19)
- b5: ← b3
- v48 (+19) = SliceMake <[]interface {}> v22 v7 v7
- v13 (19) = OffPtr <*int> [8] v2
- v14 (19) = Store <mem> {*uint8} v50 v45 v42
- v51 (19) = OffPtr <*int> [32] v2
- v10 (19) = OffPtr <*int> [24] v2
- v52 (19) = Store <mem> {int} v13 v12 v14
- v8 (19) = Store <mem> {*uint8} v53 v22 v52
- v40 (19) = Store <mem> {int} v10 v7 v8
- v54 (19) = Store <mem> {int} v51 v7 v40
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| dead auto elim | dead auto elim [43000 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v34 (?) = Addr <*uint8> {type.int} v3
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v11 (+11) = Const64 <int> [4] (w[int], y[int])
- v49 (?) = StringMake <string> v45 v12
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Const64 <int> [-2] (w[int])
- v17 (+17) = Const64 <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v43 (19) = Load <uintptr> v29 v28
- v31 (19) = OffPtr <**uint8> [24] v2
- v46 (19) = OffPtr <**uint8> [8] v22
- v47 (19) = Store <mem> {uintptr} v32 v43 v28
- v18 (19) = OffPtr <**uint8> [24] v2
- v44 (19) = OffPtr <**uint8> [24] v22
- v39 (19) = Load <*uint8> v31 v28
- v30 (19) = IMake <interface {}> v43 v39
- v33 (19) = Store <mem> {*uint8} v46 v39 v47
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v9 (19) = Load <uintptr> v29 v37
- v56 (19) = Load <*uint8> v18 v37
- v15 (19) = Store <mem> {uintptr} v41 v9 v37
- v38 (19) = IMake <interface {}> v9 v56
- v42 (19) = Store <mem> {*uint8} v44 v56 v15
- Plain → b5 (line 19)
- b5: ← b3
- v48 (+19) = SliceMake <[]interface {}> v22 v7 v7
- v13 (19) = OffPtr <*int> [8] v2
- v14 (19) = Store <mem> {*uint8} v50 v45 v42
- v51 (19) = OffPtr <*int> [32] v2
- v10 (19) = OffPtr <*int> [24] v2
- v52 (19) = Store <mem> {int} v13 v12 v14
- v8 (19) = Store <mem> {*uint8} v53 v22 v52
- v40 (19) = Store <mem> {int} v10 v7 v8
- v54 (19) = Store <mem> {int} v51 v7 v40
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v11 v16 name x[int]: v7 name y[int]: v11 name z[int]: v17
| generic deadcode | generic deadcode [39000 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Const64 <int> [-2] (w[int])
- v17 (+17) = Const64 <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v43 (19) = Load <uintptr> v29 v28
- v31 (19) = OffPtr <**uint8> [24] v2
- v46 (19) = OffPtr <**uint8> [8] v22
- v47 (19) = Store <mem> {uintptr} v32 v43 v28
- v18 (19) = OffPtr <**uint8> [24] v2
- v44 (19) = OffPtr <**uint8> [24] v22
- v39 (19) = Load <*uint8> v31 v28
- v33 (19) = Store <mem> {*uint8} v46 v39 v47
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v9 (19) = Load <uintptr> v29 v37
- v56 (19) = Load <*uint8> v18 v37
- v15 (19) = Store <mem> {uintptr} v41 v9 v37
- v42 (19) = Store <mem> {*uint8} v44 v56 v15
- Plain → b5 (line 19)
- b5: ← b3
- v13 (19) = OffPtr <*int> [8] v2
- v14 (+19) = Store <mem> {*uint8} v50 v45 v42
- v51 (19) = OffPtr <*int> [32] v2
- v10 (19) = OffPtr <*int> [24] v2
- v52 (19) = Store <mem> {int} v13 v12 v14
- v8 (19) = Store <mem> {*uint8} v53 v22 v52
- v40 (19) = Store <mem> {int} v10 v7 v8
- v54 (19) = Store <mem> {int} v51 v7 v40
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v16 name x[int]: v7 name z[int]: v17
| check bce | check bce [20700 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Const64 <int> [-2] (w[int])
- v17 (+17) = Const64 <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v43 (19) = Load <uintptr> v29 v28
- v31 (19) = OffPtr <**uint8> [24] v2
- v46 (19) = OffPtr <**uint8> [8] v22
- v47 (19) = Store <mem> {uintptr} v32 v43 v28
- v18 (19) = OffPtr <**uint8> [24] v2
- v44 (19) = OffPtr <**uint8> [24] v22
- v39 (19) = Load <*uint8> v31 v28
- v33 (19) = Store <mem> {*uint8} v46 v39 v47
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v9 (19) = Load <uintptr> v29 v37
- v56 (19) = Load <*uint8> v18 v37
- v15 (19) = Store <mem> {uintptr} v41 v9 v37
- v42 (19) = Store <mem> {*uint8} v44 v56 v15
- Plain → b5 (line 19)
- b5: ← b3
- v13 (19) = OffPtr <*int> [8] v2
- v14 (+19) = Store <mem> {*uint8} v50 v45 v42
- v51 (19) = OffPtr <*int> [32] v2
- v10 (19) = OffPtr <*int> [24] v2
- v52 (19) = Store <mem> {int} v13 v12 v14
- v8 (19) = Store <mem> {*uint8} v53 v22 v52
- v40 (19) = Store <mem> {int} v10 v7 v8
- v54 (19) = Store <mem> {int} v51 v7 v40
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v16 name x[int]: v7 name z[int]: v17
| branchelim | branchelim [21400 ns]- b1:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- Plain → b2 (line +10)
- b2: ← b1
- Plain → b3 (line +12)
- b3: ← b2
- v16 (+16) = Const64 <int> [-2] (w[int])
- v17 (+17) = Const64 <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v43 (19) = Load <uintptr> v29 v28
- v31 (19) = OffPtr <**uint8> [24] v2
- v46 (19) = OffPtr <**uint8> [8] v22
- v47 (19) = Store <mem> {uintptr} v32 v43 v28
- v18 (19) = OffPtr <**uint8> [24] v2
- v44 (19) = OffPtr <**uint8> [24] v22
- v39 (19) = Load <*uint8> v31 v28
- v33 (19) = Store <mem> {*uint8} v46 v39 v47
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v9 (19) = Load <uintptr> v29 v37
- v56 (19) = Load <*uint8> v18 v37
- v15 (19) = Store <mem> {uintptr} v41 v9 v37
- v42 (19) = Store <mem> {*uint8} v44 v56 v15
- Plain → b5 (line 19)
- b5: ← b3
- v13 (19) = OffPtr <*int> [8] v2
- v14 (+19) = Store <mem> {*uint8} v50 v45 v42
- v51 (19) = OffPtr <*int> [32] v2
- v10 (19) = OffPtr <*int> [24] v2
- v52 (19) = Store <mem> {int} v13 v12 v14
- v8 (19) = Store <mem> {*uint8} v53 v22 v52
- v40 (19) = Store <mem> {int} v10 v7 v8
- v54 (19) = Store <mem> {int} v51 v7 v40
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v16 name x[int]: v7 name z[int]: v17
| fuse | fuse [26000 ns]- b1:
- BlockInvalid (line +10)
- b2:
- BlockInvalid (line +12)
- b3:
- BlockInvalid (line 19)
- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v16 (+16) = Const64 <int> [-2] (w[int])
- v17 (+17) = Const64 <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v43 (19) = Load <uintptr> v29 v28
- v31 (19) = OffPtr <**uint8> [24] v2
- v46 (19) = OffPtr <**uint8> [8] v22
- v47 (19) = Store <mem> {uintptr} v32 v43 v28
- v18 (19) = OffPtr <**uint8> [24] v2
- v44 (19) = OffPtr <**uint8> [24] v22
- v13 (19) = OffPtr <*int> [8] v2
- v51 (19) = OffPtr <*int> [32] v2
- v10 (19) = OffPtr <*int> [24] v2
- v39 (19) = Load <*uint8> v31 v28
- v33 (19) = Store <mem> {*uint8} v46 v39 v47
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v9 (19) = Load <uintptr> v29 v37
- v56 (19) = Load <*uint8> v18 v37
- v15 (19) = Store <mem> {uintptr} v41 v9 v37
- v42 (19) = Store <mem> {*uint8} v44 v56 v15
- v14 (+19) = Store <mem> {*uint8} v50 v45 v42
- v52 (19) = Store <mem> {int} v13 v12 v14
- v8 (19) = Store <mem> {*uint8} v53 v22 v52
- v40 (19) = Store <mem> {int} v10 v7 v8
- v54 (19) = Store <mem> {int} v51 v7 v40
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v16 name x[int]: v7 name z[int]: v17
| dse | dse [31600 ns]- b1:
- BlockInvalid (line +10)
- b2:
- BlockInvalid (line +12)
- b3:
- BlockInvalid (line 19)
- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v16 (+16) = Const64 <int> [-2] (w[int])
- v17 (+17) = Const64 <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v43 (19) = Load <uintptr> v29 v28
- v31 (19) = OffPtr <**uint8> [24] v2
- v46 (19) = OffPtr <**uint8> [8] v22
- v47 (19) = Store <mem> {uintptr} v32 v43 v28
- v18 (19) = OffPtr <**uint8> [24] v2
- v44 (19) = OffPtr <**uint8> [24] v22
- v13 (19) = OffPtr <*int> [8] v2
- v51 (19) = OffPtr <*int> [32] v2
- v10 (19) = OffPtr <*int> [24] v2
- v39 (19) = Load <*uint8> v31 v28
- v33 (19) = Store <mem> {*uint8} v46 v39 v47
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v9 (19) = Load <uintptr> v29 v37
- v56 (19) = Load <*uint8> v18 v37
- v15 (19) = Store <mem> {uintptr} v41 v9 v37
- v42 (19) = Store <mem> {*uint8} v44 v56 v15
- v14 (+19) = Store <mem> {*uint8} v50 v45 v42
- v52 (19) = Store <mem> {int} v13 v12 v14
- v8 (19) = Store <mem> {*uint8} v53 v22 v52
- v40 (19) = Store <mem> {int} v10 v7 v8
- v54 (19) = Store <mem> {int} v51 v7 v40
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v16 name x[int]: v7 name z[int]: v17
| writebarrier | writebarrier [19400 ns]- b1:
- BlockInvalid (line +10)
- b2:
- BlockInvalid (line +12)
- b3:
- BlockInvalid (line 19)
- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = Const64 <int> [2] (x[int])
- v23 (?) = Addr <*uint8> {type.int} v3
- v24 (?) = OffPtr <**byte> [0] v2
- v26 (?) = OffPtr <*int> [8] v2
- v29 (?) = OffPtr <*interface {}> [16] v2
- v50 (?) = OffPtr <*string> [0] v2
- v53 (?) = OffPtr <*[]interface {}> [16] v2
- v45 (?) = Addr <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = Const64 <int> [7]
- v16 (+16) = Const64 <int> [-2] (w[int])
- v17 (+17) = Const64 <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v19 - v21 (+19) = Zero <mem> {[2]interface {}} [32] v20 v19
- v22 (
19) = LocalAddr <*[2]interface {}> {.autotmp_4} v2 v21 - v32 (19) = OffPtr <*interface {}> [0] v22
- v41 (19) = OffPtr <*interface {}> [16] v22
- v25 (19) = Store <mem> {*byte} v24 v23 v21
- v27 (19) = Store <mem> {int} v26 v16 v25
- v28 (19) = StaticCall <mem> {runtime.convT2E64} [32] v27
- v43 (19) = Load <uintptr> v29 v28
- v31 (19) = OffPtr <**uint8> [24] v2
- v46 (19) = OffPtr <**uint8> [8] v22
- v47 (19) = Store <mem> {uintptr} v32 v43 v28
- v18 (19) = OffPtr <**uint8> [24] v2
- v44 (19) = OffPtr <**uint8> [24] v22
- v13 (19) = OffPtr <*int> [8] v2
- v51 (19) = OffPtr <*int> [32] v2
- v10 (19) = OffPtr <*int> [24] v2
- v39 (19) = Load <*uint8> v31 v28
- v33 (19) = Store <mem> {*uint8} v46 v39 v47
- v35 (19) = Store <mem> {*byte} v24 v23 v33
- v36 (19) = Store <mem> {int} v26 v17 v35
- v37 (19) = StaticCall <mem> {runtime.convT2E64} [32] v36
- v9 (19) = Load <uintptr> v29 v37
- v56 (19) = Load <*uint8> v18 v37
- v15 (19) = Store <mem> {uintptr} v41 v9 v37
- v42 (19) = Store <mem> {*uint8} v44 v56 v15
- v14 (+19) = Store <mem> {*uint8} v50 v45 v42
- v52 (19) = Store <mem> {int} v13 v12 v14
- v8 (19) = Store <mem> {*uint8} v53 v22 v52
- v40 (19) = Store <mem> {int} v10 v7 v8
- v54 (19) = Store <mem> {int} v51 v7 v40
- v55 (19) = StaticCall <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v16 name x[int]: v7 name z[int]: v17
| lower | lower [131500 ns]- b1:
- BlockInvalid (line +10)
- b2:
- BlockInvalid (line +12)
- b3:
- BlockInvalid (line 19)
- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = MOVQconst <int> [2] (x[int])
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v26 (?) = LEAQ <*int> [8] v2
- v29 (?) = LEAQ <*interface {}> [16] v2
- v53 (?) = LEAQ <*[]interface {}> [16] v2
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = MOVQconst <int> [7]
- v16 (+16) = MOVQconst <int> [-2] (w[int])
- v17 (+17) = MOVQconst <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v22 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v32 (19) = LEAQ <*interface {}> {.autotmp_4} v2
- v41 (19) = LEAQ <*interface {}> {.autotmp_4} [16] v2
- v31 (19) = LEAQ <**uint8> [24] v2
- v46 (19) = LEAQ <**uint8> {.autotmp_4} [8] v2
- v18 (19) = LEAQ <**uint8> [24] v2
- v44 (19) = LEAQ <**uint8> {.autotmp_4} [24] v2
- v13 (19) = LEAQ <*int> [8] v2
- v51 (19) = LEAQ <*int> [32] v2
- v10 (19) = LEAQ <*int> [24] v2
- v48 (+19) = LEAQ <*[2]interface {}> {.autotmp_4} [16] v2
- v38 (+19) = MOVOconst <int128> [0]
- v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v38 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v22 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v16 name x[int]: v7 name z[int]: v17
| lowered cse | lowered cse [72500 ns]- b1:
- BlockInvalid (line +10)
- b2:
- BlockInvalid (line +12)
- b3:
- BlockInvalid (line 19)
- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = MOVQconst <int> [2] (x[int])
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v26 (?) = LEAQ <*int> [8] v2
- v29 (?) = LEAQ <*interface {}> [16] v2
- v53 (?) = LEAQ <*[]interface {}> [16] v2
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = MOVQconst <int> [7]
- v16 (+16) = MOVQconst <int> [-2] (w[int])
- v17 (+17) = MOVQconst <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v22 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v32 (19) = LEAQ <*interface {}> {.autotmp_4} v2
- v41 (19) = LEAQ <*interface {}> {.autotmp_4} [16] v2
- v31 (19) = LEAQ <**uint8> [24] v2
- v46 (19) = LEAQ <**uint8> {.autotmp_4} [8] v2
- v18 (19) = LEAQ <**uint8> [24] v2
- v44 (19) = LEAQ <**uint8> {.autotmp_4} [24] v2
- v13 (19) = LEAQ <*int> [8] v2
- v51 (19) = LEAQ <*int> [32] v2
- v10 (19) = LEAQ <*int> [24] v2
- v48 (+19) = LEAQ <*[2]interface {}> {.autotmp_4} [16] v2
- v38 (
19) = MOVOconst <int128> [0] - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v16 name x[int]: v7 name z[int]: v17
| elim unread autos | elim unread autos [19400 ns]- b1:
- BlockInvalid (line +10)
- b2:
- BlockInvalid (line +12)
- b3:
- BlockInvalid (line 19)
- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v7 (+9) = MOVQconst <int> [2] (x[int])
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v26 (?) = LEAQ <*int> [8] v2
- v29 (?) = LEAQ <*interface {}> [16] v2
- v53 (?) = LEAQ <*[]interface {}> [16] v2
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v12 (?) = MOVQconst <int> [7]
- v16 (+16) = MOVQconst <int> [-2] (w[int])
- v17 (+17) = MOVQconst <int> [6] (z[int])
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v22 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v32 (19) = LEAQ <*interface {}> {.autotmp_4} v2
- v41 (19) = LEAQ <*interface {}> {.autotmp_4} [16] v2
- v31 (19) = LEAQ <**uint8> [24] v2
- v46 (19) = LEAQ <**uint8> {.autotmp_4} [8] v2
- v18 (19) = LEAQ <**uint8> [24] v2
- v44 (19) = LEAQ <**uint8> {.autotmp_4} [24] v2
- v13 (19) = LEAQ <*int> [8] v2
- v51 (19) = LEAQ <*int> [32] v2
- v10 (19) = LEAQ <*int> [24] v2
- v48 (+19) = LEAQ <*[2]interface {}> {.autotmp_4} [16] v2
- v38 (
19) = MOVOconst <int128> [0] - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
name w[int]: v16 name x[int]: v7 name z[int]: v17
| lowered deadcode | lowered deadcode [31000 ns]- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| checkLower | checkLower [20700 ns]- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| late phielim | late phielim [19400 ns]- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| late copyelim | late copyelim [21700 ns]- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| tighten | tighten [40400 ns]- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| phi tighten | phi tighten [21400 ns]- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| late deadcode | late deadcode [33000 ns]- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| critical | critical [22800 ns]- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| likelyadjust | likelyadjust [22300 ns]- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| layout | layout [27100 ns]- b5:
- v1 (?) = InitMem <mem>
- v2 (?) = SP <uintptr>
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| schedule | schedule [136900 ns]- b5:
- v1 (?) = InitMem <mem>
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v2 (?) = SP <uintptr>
- v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| late nilcheck | late nilcheck [25800 ns]- b5:
- v1 (?) = InitMem <mem>
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v2 (?) = SP <uintptr>
- v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| flagalloc | flagalloc [28600 ns]- b5:
- v1 (?) = InitMem <mem>
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v2 (?) = SP <uintptr>
- v11 (+19) = MOVOconst <int128> [0]
- v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v11 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v11 v30
- v3 (?) = SB <uintptr>
- v23 (?) = LEAQ <*uint8> {type.int} v3
- v25 (19) = MOVQstore <mem> v2 v23 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v39 (19) = MOVQload <*uint8> [24] v2 v28
- v43 (19) = MOVQload <uintptr> [16] v2 v28
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v35 (19) = MOVQstore <mem> v2 v23 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37
- v56 (19) = MOVQload <*uint8> [24] v2 v37
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v45 (?) = LEAQ <*uint8> {go.string."%d, %d\n"} v3
- v14 (+19) = MOVQstore <mem> v2 v45 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v20 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 - v8 (19) = MOVQstore <mem> [16] v2 v20 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| regalloc | regalloc [221500 ns]- b5:
- v1 (?) = InitMem <mem>
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v2 (?) = SP <uintptr> : SP
- v38 (
19) = MOVOconst <int128> [0] : X0 - v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v38 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v38 v30
- v3 (?) = SB <uintptr> : SB
- v48 (
19) = LEAQ <*uint8> {type.int} v3 : AX - v25 (19) = MOVQstore <mem> v2 v48 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v39 (19) = MOVQload <*uint8> [24] v2 v28 : AX
- v43 (19) = MOVQload <uintptr> [16] v2 v28 : CX
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v10 (
19) = LEAQ <*uint8> {type.int} v3 : AX - v35 (19) = MOVQstore <mem> v2 v10 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37 : AX
- v56 (19) = MOVQload <*uint8> [24] v2 v37 : CX
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v51 (
19) = LEAQ <*uint8> {go.string."%d, %d\n"} v3 : AX - v14 (+19) = MOVQstore <mem> v2 v51 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v13 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 : AX - v8 (19) = MOVQstore <mem> [16] v2 v13 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| loop rotate | loop rotate [21100 ns]- b5:
- v1 (?) = InitMem <mem>
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v2 (?) = SP <uintptr> : SP
- v38 (
19) = MOVOconst <int128> [0] : X0 - v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v38 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v38 v30
- v3 (?) = SB <uintptr> : SB
- v48 (
19) = LEAQ <*uint8> {type.int} v3 : AX - v25 (19) = MOVQstore <mem> v2 v48 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v39 (19) = MOVQload <*uint8> [24] v2 v28 : AX
- v43 (19) = MOVQload <uintptr> [16] v2 v28 : CX
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v10 (
19) = LEAQ <*uint8> {type.int} v3 : AX - v35 (19) = MOVQstore <mem> v2 v10 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37 : AX
- v56 (19) = MOVQload <*uint8> [24] v2 v37 : CX
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v51 (
19) = LEAQ <*uint8> {go.string."%d, %d\n"} v3 : AX - v14 (+19) = MOVQstore <mem> v2 v51 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v13 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 : AX - v8 (19) = MOVQstore <mem> [16] v2 v13 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| stackframe | stackframe [31600 ns]- b5:
- v1 (?) = InitMem <mem>
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v2 (?) = SP <uintptr> : SP
- v38 (
19) = MOVOconst <int128> [0] : X0 - v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v38 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v38 v30
- v3 (?) = SB <uintptr> : SB
- v48 (
19) = LEAQ <*uint8> {type.int} v3 : AX - v25 (19) = MOVQstore <mem> v2 v48 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v39 (19) = MOVQload <*uint8> [24] v2 v28 : AX
- v43 (19) = MOVQload <uintptr> [16] v2 v28 : CX
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v10 (
19) = LEAQ <*uint8> {type.int} v3 : AX - v35 (19) = MOVQstore <mem> v2 v10 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37 : AX
- v56 (19) = MOVQload <*uint8> [24] v2 v37 : CX
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v51 (
19) = LEAQ <*uint8> {go.string."%d, %d\n"} v3 : AX - v14 (+19) = MOVQstore <mem> v2 v51 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v13 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 : AX - v8 (19) = MOVQstore <mem> [16] v2 v13 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| trim | trim [21000 ns]- b5:
- v1 (?) = InitMem <mem>
- v19 (
19) = VarDef <mem> {.autotmp_4} v1 - v2 (?) = SP <uintptr> : SP
- v38 (
19) = MOVOconst <int128> [0] : X0 - v30 (+19) = MOVOstore <mem> {.autotmp_4} v2 v38 v19
- v21 (+19) = MOVOstore <mem> {.autotmp_4} [16] v2 v38 v30
- v3 (?) = SB <uintptr> : SB
- v48 (
19) = LEAQ <*uint8> {type.int} v3 : AX - v25 (19) = MOVQstore <mem> v2 v48 v21
- v27 (19) = MOVQstoreconst <mem> [val=-2,off=8] v2 v25
- v28 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v27
- v39 (19) = MOVQload <*uint8> [24] v2 v28 : AX
- v43 (19) = MOVQload <uintptr> [16] v2 v28 : CX
- v47 (19) = MOVQstore <mem> {.autotmp_4} v2 v43 v28
- v33 (19) = MOVQstore <mem> {.autotmp_4} [8] v2 v39 v47
- v10 (
19) = LEAQ <*uint8> {type.int} v3 : AX - v35 (19) = MOVQstore <mem> v2 v10 v33
- v36 (19) = MOVQstoreconst <mem> [val=6,off=8] v2 v35
- v37 (19) = CALLstatic <mem> {runtime.convT2E64} [32] v36
- v9 (19) = MOVQload <uintptr> [16] v2 v37 : AX
- v56 (19) = MOVQload <*uint8> [24] v2 v37 : CX
- v15 (19) = MOVQstore <mem> {.autotmp_4} [16] v2 v9 v37
- v42 (19) = MOVQstore <mem> {.autotmp_4} [24] v2 v56 v15
- v51 (
19) = LEAQ <*uint8> {go.string."%d, %d\n"} v3 : AX - v14 (+19) = MOVQstore <mem> v2 v51 v42
- v52 (19) = MOVQstoreconst <mem> [val=7,off=8] v2 v14
- v13 (
19) = LEAQ <*[2]interface {}> {.autotmp_4} v2 : AX - v8 (19) = MOVQstore <mem> [16] v2 v13 v52
- v40 (19) = MOVQstoreconst <mem> [val=2,off=24] v2 v8
- v54 (19) = MOVQstoreconst <mem> [val=2,off=32] v2 v40
- v55 (19) = CALLstatic <mem> {fmt.Printf} [64] v54
- v57 (
5) = VarKill <mem> {.autotmp_4} v55
- Ret v57 (line +20)
| genssa | genssa- # /root/main.go
- 00000 (5) TEXT "".ssa(SB)
- 00001 (5) FUNCDATA $0, gclocals·69c1753bd5f81501d95132d08af04464(SB)
- 00002 (5) FUNCDATA $1, gclocals·ef901d0ae51b5399f7d4b5dfa3bc0b42(SB)
- 00003 (5) FUNCDATA $3, gclocals·1cf923758aae2e428391d1783fe59973(SB)
- v38
- 00004 (+19) PCDATA $2, $0
- v38
- 00005 (+19) PCDATA $0, $1
- v38
- 00006 (+19) XORPS X0, X0
- v30
- 00007 (
19) MOVUPS X0, ""..autotmp_4-32(SP) - v21
- 00008 (
19) MOVUPS X0, ""..autotmp_4-16(SP) - v48
- 00009 (
19) PCDATA $2, $1 - v48
- 00010 (
19) LEAQ type.int(SB), AX - v25
- 00011 (
19) PCDATA $2, $0 - v25
- 00012 (
19) MOVQ AX, (SP) - v27
- 00013 (
19) MOVQ $-2, 8(SP) - v28
- 00014 (
19) CALL runtime.convT2E64(SB) - v39
- 00015 (
19) PCDATA $2, $1 - v39
- 00016 (
19) MOVQ 24(SP), AX - v43
- 00017 (
19) MOVQ 16(SP), CX - v47
- 00018 (
19) MOVQ CX, ""..autotmp_4-32(SP) - v33
- 00019 (
19) PCDATA $2, $0 - v33
- 00020 (
19) MOVQ AX, ""..autotmp_4-24(SP) - v10
- 00021 (
19) PCDATA $2, $1 - v10
- 00022 (
19) LEAQ type.int(SB), AX - v35
- 00023 (
19) PCDATA $2, $0 - v35
- 00024 (
19) MOVQ AX, (SP) - v36
- 00025 (
19) MOVQ $6, 8(SP) - v37
- 00026 (
19) CALL runtime.convT2E64(SB) - v9
- 00027 (
19) MOVQ 16(SP), AX - v56
- 00028 (
19) PCDATA $2, $2 - v56
- 00029 (
19) MOVQ 24(SP), CX - v15
- 00030 (
19) MOVQ AX, ""..autotmp_4-16(SP) - v42
- 00031 (
19) PCDATA $2, $0 - v42
- 00032 (
19) MOVQ CX, ""..autotmp_4-8(SP) - v51
- 00033 (
19) PCDATA $2, $1 - v51
- 00034 (
19) LEAQ go.string."%d, %d\n"(SB), AX - v14
- 00035 (+19) PCDATA $2, $0
- v14
- 00036 (
19) MOVQ AX, (SP) - v52
- 00037 (
19) MOVQ $7, 8(SP) - v13
- 00038 (
19) PCDATA $2, $1 - v13
- 00039 (
19) LEAQ ""..autotmp_4-32(SP), AX - v8
- 00040 (
19) PCDATA $2, $0 - v8
- 00041 (
19) MOVQ AX, 16(SP) - v40
- 00042 (
19) MOVQ $2, 24(SP) - v54
- 00043 (
19) MOVQ $2, 32(SP) - v55
- 00044 (
19) CALL fmt.Printf(SB) - b5
- 00045 (+20) PCDATA $0, $0
- b5
- 00046 (+20) RET
- 00047 (?) END
|