- Sort Score
- Result 10 results
- Languages All
Results 1 - 10 of 26 for phi (0.07 sec)
-
src/cmd/compile/internal/ssagen/phi.go
} func (fwdRefAux) CanBeAnSSAAux() {} // insertPhis finds all the places in the function where a phi is // necessary and inserts them. // Uses FwdRef ops to find all uses of variables, and s.defvars to find // all definitions. // Phi values are inserted, and all FwdRefs are changed to a Copy // of the appropriate phi or definition. // TODO: make this part of cmd/compile/internal/ssa somehow? func (s *state) insertPhis() {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Fri Nov 18 17:59:44 UTC 2022 - 15.2K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/shortcircuit.go
for i := 0; i < len(b.Values); i++ { phi := b.Values[i] if phi.Uses == 0 || phi == ctl || phi.Op != OpPhi { continue } fixPhi(phi, i) if phi.Block == b { continue } // phi got moved to a different block with v.moveTo. // Adjust phi values in this new block that refer // to phi to refer to the corresponding phi arg instead. // phi used to be evaluated prior to this block,
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Oct 03 17:47:02 UTC 2022 - 12.6K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/loopreschedchecks.go
// Insert phi functions as necessary for future changes to flow graph. for i, emc := range tofixBackedges { e := emc.e h := e.b // find the phi function for the memory input at "h", if there is one. var headerMemPhi *Value // look for header mem phi for _, v := range h.Values { if v.Op == OpPhi && v.Type.IsMemory() { headerMemPhi = v } } if headerMemPhi == nil {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Aug 22 21:17:10 UTC 2023 - 16K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/block.go
b.Fatalf("inconsistent state for %v, num predecessors: %d, num phi args: %d", phi, n, numPhiArgs) } phi.Args[i].Uses-- phi.Args[i] = phi.Args[n] phi.Args[n] = nil phi.Args = phi.Args[:n] phielimValue(phi) } // LackingPos indicates whether b is a block whose position should be inherited // from its successors. This is true if all the values within it have unreliable positions
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Wed May 15 15:44:14 UTC 2024 - 12.2K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/decompose.go
// Recursively decompose phis for each field. for _, f := range fields[:n] { decomposeUserPhi(f) } } // decomposeArrayPhi replaces phi-of-array with arraymake(phi-of-array-element), // and then recursively decomposes the element phi. func decomposeArrayPhi(v *Value) { t := v.Type if t.NumElem() == 0 { v.reset(OpArrayMake0) return } if t.NumElem() != 1 {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Aug 23 21:22:15 UTC 2022 - 13.4K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/sccp.go
for _, use := range t.defUse[val] { if val == use { // Phi may refer to itself as uses, ignore them to avoid re-visiting phi // for performance reason continue } t.uses = append(t.uses, use) } for _, block := range t.defBlock[val] { if t.visitedBlock[block.ID] { t.propagate(block) } } } // meet meets all of phi arguments and computes result lattice
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Jan 22 16:54:50 UTC 2024 - 17.6K bytes - Viewed (0) -
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/check.go
if f.scheduled { for _, b := range f.Blocks { seenNonPhi := false for _, v := range b.Values { switch v.Op { case OpPhi: if seenNonPhi { f.Fatalf("phi after non-phi @ %s: %s", b, v) } default: seenNonPhi = true } } } } } // domCheck reports whether x dominates y (including x==y).
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/compile.go
// tuple selectors must be tightened to generators and de-duplicated before scheduling {"tighten tuple selectors", "schedule"}, // remove critical edges before phi tighten, so that phi args get better placement {"critical", "phi tighten"}, // don't layout blocks until critical edges have been removed {"critical", "layout"}, // regalloc requires the removal of all critical edges {"critical", "regalloc"},
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Apr 22 14:55:18 UTC 2024 - 18.6K 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)