- Sort Score
- Result 10 results
- Languages All
Results 11 - 20 of 81 for phi2 (0.04 sec)
-
src/cmd/compile/internal/ssa/branchelim.go
case "amd64": const maxcost = 2 phi := 0 other := 0 for _, v := range post.Values { if v.Op == OpPhi { // Each phi results in CondSelect, which lowers into CMOV, // CMOV has latency >1 on most CPUs. phi++ } for _, x := range v.Args { if x.Block == no || x.Block == yes { other++ } } } cost := phi * 1 if phi > 1 {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Wed Nov 30 17:46:51 UTC 2022 - 12.7K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/deadcode.go
// Adjust c.Preds c.removePred(j) // Remove phi args from c's phis. for _, v := range c.Values { if v.Op != OpPhi { continue } c.removePhiArg(v, j) // Note: this is trickier than it looks. Replacing // a Phi with a Copy can in general cause problems because // Phi and Copy don't have exactly the same semantics. // Phi arguments always come from a predecessor block,
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Fri Dec 08 00:29:01 UTC 2023 - 9.2K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/tighten.go
// 1. The start memory state of a block is InitMem, a Phi node of type mem or // an incoming memory value. // 2. The start memory state of a block is consistent with the end memory state // of its parent nodes. If the start memory state of a block is a Phi value, // then the end memory state of its parent nodes is consistent with the // corresponding argument value of the Phi node.
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue May 16 01:01:38 UTC 2023 - 7.7K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/phiopt.go
// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package ssa // phiopt eliminates boolean Phis based on the previous if. // // Main use case is to transform: // // x := false // if b { // x = true // } // // into x = b. // // In SSA code this appears as // // b0 // If b -> b1 b2 // b1
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Apr 11 16:34:30 UTC 2022 - 8.1K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/deadstore.go
for k := range localAddrs { delete(localAddrs, k) } stores = stores[:0] for _, v := range b.Values { if v.Op == OpPhi { // Ignore phis - they will always be first and can't be eliminated continue } if v.Type.IsMemory() { stores = append(stores, v) for _, a := range v.Args { if a.Block == b && a.Type.IsMemory() {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Thu Apr 25 20:07:26 UTC 2024 - 11K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/print.go
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Oct 31 21:41:20 UTC 2022 - 3.9K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/check.go
// If no mem phi, take mem of any predecessor. mem = lastmem[b.Preds[0].b.ID] } for _, a := range v.Args { if a.Type.IsMemory() && a != mem { f.Fatalf("two live mems @ %s: %s and %s", v, mem, a) } } if v.Type.IsMemory() { mem = v } } } } // Check that after scheduling, phis are always first in the block. if f.scheduled {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Apr 09 16:41:23 UTC 2024 - 17.6K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/trim.go
s.Pos = s.Pos.WithIsStmt() } } // If `s` had more than one predecessor, update its phi-ops to // account for the merge. if ns > 1 { for _, v := range s.Values { if v.Op == OpPhi { mergePhi(v, j, b) } } // Remove the phi-ops from `b` if they were merged into the // phi-ops of `s`. k := 0 for _, v := range b.Values { if v.Op == OpPhi { if v.Uses == 0 {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Fri Nov 18 17:59:44 UTC 2022 - 4.2K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/nilcheck_test.go
Bloc("b2", Valu("ptr2", OpAddr, ptrType, 0, nil, "sb"), Goto("checkPtr")), // both ptr1 and ptr2 are guaranteed non-nil here Bloc("checkPtr", Valu("phi", OpPhi, ptrType, 0, nil, "ptr1", "ptr2"), Valu("bool2", OpIsNonNil, c.config.Types.Bool, 0, nil, "phi"), If("bool2", "extra", "exit")), Bloc("extra", Goto("exit")), Bloc("exit", Exit("mem"))) CheckFunc(fun.f) nilcheckelim(fun.f)
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Fri Nov 17 23:34:11 UTC 2023 - 12.3K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/critical.go
continue } var phi *Value // determine if we've only got a single phi in this // block, this is easier to handle than the general // case of a block with multiple phi values. for _, v := range b.Values { if v.Op == OpPhi { if phi != nil { phi = nil break } phi = v } } // reset our block map if phi != nil { for _, v := range phi.Args {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue May 16 21:40:11 UTC 2023 - 3.1K bytes - Viewed (0)