Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 10 of 17 for OpPhi (0.14 sec)

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

    func decomposeSlicePhi(v *Value) {
    	types := &v.Block.Func.Config.Types
    	ptrType := v.Type.Elem().PtrTo()
    	lenType := types.Int
    
    	ptr := v.Block.NewValue0(v.Pos, OpPhi, ptrType)
    	len := v.Block.NewValue0(v.Pos, OpPhi, lenType)
    	cap := v.Block.NewValue0(v.Pos, OpPhi, lenType)
    	for _, a := range v.Args {
    		ptr.AddArg(a.Block.NewValue1(v.Pos, OpSlicePtr, ptrType, a))
    		len.AddArg(a.Block.NewValue1(v.Pos, OpSliceLen, lenType, a))
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Aug 23 21:22:15 UTC 2022
    - 13.4K bytes
    - Viewed (0)
  2. src/cmd/compile/internal/ssa/shortcircuit.go

    		if ctl.Op == OpNot {
    			swap = 1 ^ swap
    		}
    		ctl = ctl.Args[0]
    		nval++ // wrapper around control value
    	}
    	if ctl.Op != OpPhi || ctl.Block != b || ctl.Uses != 1 {
    		return false
    	}
    	nOtherPhi := 0
    	for _, w := range b.Values {
    		if w.Op == OpPhi && w != ctl {
    			nOtherPhi++
    		}
    	}
    	if nOtherPhi > 0 && len(b.Preds) != 2 {
    		// We rely on b having exactly two preds in shortcircuitPhiPlan
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Oct 03 17:47:02 UTC 2022
    - 12.6K bytes
    - Viewed (0)
  3. 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)
  4. 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)
  5. src/cmd/compile/internal/ssa/branchelim.go

    	// looks profitable.
    
    	// Check that there are Phis, and that all of them
    	// can be safely rewritten to CondSelect.
    	hasphis := false
    	for _, v := range post.Values {
    		if v.Op == OpPhi {
    			hasphis = true
    			if !canCondSelect(v, f.Config.arch, loadAddr) {
    				return false
    			}
    		}
    	}
    	if !hasphis {
    		return false
    	}
    
    	// Pick some upper bound for the number of instructions
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed Nov 30 17:46:51 UTC 2022
    - 12.7K bytes
    - Viewed (0)
  6. 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)
  7. src/cmd/compile/internal/ssagen/phi.go

    	s.resolveFwdRefs()
    
    	// Erase variable numbers stored in AuxInt fields of phi ops. They are no longer needed.
    	for _, b := range s.f.Blocks {
    		for _, v := range b.Values {
    			if v.Op == ssa.OpPhi {
    				v.AuxInt = 0
    			}
    			// Any remaining FwdRefs are dead code.
    			if v.Op == ssa.OpFwdRef {
    				v.Op = ssa.OpUnknown
    				v.Aux = nil
    			}
    		}
    	}
    }
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Nov 18 17:59:44 UTC 2022
    - 15.2K bytes
    - Viewed (0)
  8. 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)
  9. 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)
  10. 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)
Back to top