Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 10 of 13 for OpPhi (0.03 sec)

  1. src/cmd/compile/internal/ssa/schedule.go

    		// the calculated store chain is good only for this block.
    		for _, v := range b.Values {
    			if v.Op != OpPhi && v.Op != OpInitMem && v.Type.IsMemory() {
    				nextMem[v.MemoryArg().ID] = v
    			}
    		}
    
    		// Add edges to enforce that any load must come before the following store.
    		for _, v := range b.Values {
    			if v.Op == OpPhi || v.Type.IsMemory() {
    				continue
    			}
    			w := v.MemoryArg()
    			if w == nil {
    				continue
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Apr 08 15:53:17 UTC 2024
    - 16.4K bytes
    - Viewed (0)
  2. src/cmd/compile/internal/ssa/check.go

    			}
    
    			for i, arg := range v.Args {
    				if arg == nil {
    					f.Fatalf("value %s has nil arg", v.LongString())
    				}
    				if v.Op != OpPhi {
    					// For non-Phi ops, memory args must be last, if present
    					if arg.Type.IsMemory() && i != len(v.Args)-1 {
    						f.Fatalf("value %s has non-final memory arg (%d < %d)", v.LongString(), i, len(v.Args)-1)
    					}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Apr 09 16:41:23 UTC 2024
    - 17.6K bytes
    - Viewed (0)
  3. src/cmd/compile/internal/ssa/loopreschedchecks.go

    		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 {
    			// if the header is nil, make a trivial phi from the dominator
    			mem0 := memDefsAtBlockEnds[idom[h.ID].ID]
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Aug 22 21:17:10 UTC 2023
    - 16K bytes
    - Viewed (0)
  4. 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 {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Apr 25 20:07:26 UTC 2024
    - 11K bytes
    - Viewed (0)
  5. src/cmd/compile/internal/ssa/sccp.go

    				dest := edge.b
    				destVisited := t.visitedBlock[dest.ID]
    
    				// mark edge as visited
    				t.visited[edge] = true
    				t.visitedBlock[dest.ID] = true
    				for _, val := range dest.Values {
    					if val.Op == OpPhi || !destVisited {
    						t.visitValue(val)
    					}
    				}
    				// propagates constants facts through CFG, taking condition test
    				// into account
    				if !destVisited {
    					t.propagate(dest)
    				}
    			}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Jan 22 16:54:50 UTC 2024
    - 17.6K bytes
    - Viewed (0)
  6. src/cmd/compile/internal/ssa/nilcheck_test.go

    			Goto("checkPtr")),
    		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")))
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Nov 17 23:34:11 UTC 2023
    - 12.3K bytes
    - Viewed (0)
  7. src/cmd/compile/internal/ssa/value.go

    // The returned value, if non-nil, will be memory-typed (or a tuple with a memory-typed second part).
    // Otherwise, nil is returned.
    func (v *Value) MemoryArg() *Value {
    	if v.Op == OpPhi {
    		v.Fatalf("MemoryArg on Phi")
    	}
    	na := len(v.Args)
    	if na == 0 {
    		return nil
    	}
    	if m := v.Args[na-1]; m.Type.IsMemory() {
    		return m
    	}
    	return nil
    }
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 03 16:40:22 UTC 2024
    - 16.7K bytes
    - Viewed (0)
  8. src/cmd/compile/internal/ssa/nilcheck.go

    			}
    		}
    	}
    
    	for changed := true; changed; {
    		changed = false
    		for _, b := range f.Blocks {
    			for _, v := range b.Values {
    				// phis whose arguments are all non-nil
    				// are non-nil
    				if v.Op == OpPhi {
    					argsNonNil := true
    					for _, a := range v.Args {
    						if nonNilValues[a.ID] == nil {
    							argsNonNil = false
    							break
    						}
    					}
    					if argsNonNil {
    						if nonNilValues[v.ID] == nil {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Oct 31 20:45:54 UTC 2023
    - 11.3K bytes
    - Viewed (0)
  9. src/cmd/compile/internal/ssa/loopbce.go

    // with nxt being (Add inc ind).
    // If it can't parse the induction variable correctly, it returns (nil, nil, nil).
    func parseIndVar(ind *Value) (min, inc, nxt *Value) {
    	if ind.Op != OpPhi {
    		return
    	}
    
    	if n := ind.Args[0]; (n.Op == OpAdd64 || n.Op == OpAdd32 || n.Op == OpAdd16 || n.Op == OpAdd8) && (n.Args[0] == ind || n.Args[1] == ind) {
    		min, nxt = ind.Args[1], n
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Nov 07 17:37:47 UTC 2023
    - 11.8K bytes
    - Viewed (0)
  10. src/cmd/compile/internal/ssa/stackalloc.go

    			live.addAll(s.live[b.ID])
    
    			// Propagate backwards to the start of the block
    			phis = phis[:0]
    			for i := len(b.Values) - 1; i >= 0; i-- {
    				v := b.Values[i]
    				live.remove(v.ID)
    				if v.Op == OpPhi {
    					// Save phi for later.
    					// Note: its args might need a stack slot even though
    					// the phi itself doesn't. So don't use needSlot.
    					if !v.Type.IsMemory() && !v.Type.IsVoid() {
    						phis = append(phis, v)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Feb 29 21:29:41 UTC 2024
    - 12.6K bytes
    - Viewed (0)
Back to top