Search Options

Results per page
Sort
Preferred Languages
Advance

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

  1. test/phiopt.go

    	} else {
    		x = false
    	}
    	return x // ERROR "converted OpPhi to Copy$"
    }
    
    //go:noinline
    func f1(a bool) bool {
    	x := false
    	if a {
    		x = false
    	} else {
    		x = true
    	}
    	return x // ERROR "converted OpPhi to Not$"
    }
    
    //go:noinline
    func f2(a, b int) bool {
    	x := true
    	if a == b {
    		x = false
    	}
    	return x // ERROR "converted OpPhi to Not$"
    }
    
    //go:noinline
    func f3(a, b int) bool {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Oct 19 23:33:25 UTC 2023
    - 2K bytes
    - Viewed (0)
  2. 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)
  3. src/cmd/compile/internal/ssa/phiopt.go

    			// TODO: handle more than 2 predecessors, e.g. a || b || c.
    			continue
    		}
    
    		for _, v := range b.Values {
    			// find a phi value v = OpPhi (ConstBool [true]) (ConstBool [false]).
    			// TODO: v = OpPhi (ConstBool [true]) (Arg <bool> {value})
    			if v.Op != OpPhi {
    				continue
    			}
    			if v.Args[0].Op != OpConstBool || v.Args[1].Op != OpConstBool {
    				continue
    			}
    			if v.Args[0].AuxInt == v.Args[1].AuxInt {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Apr 11 16:34:30 UTC 2022
    - 8.1K bytes
    - Viewed (0)
  4. src/cmd/compile/internal/ssa/trim.go

    		// 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 {
    						v.resetArgs()
    						continue
    					}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Nov 18 17:59:44 UTC 2022
    - 4.2K bytes
    - Viewed (0)
  5. src/cmd/compile/internal/ssa/tighten.go

    	memState(f, startMem, endMem)
    
    	for _, b := range f.Blocks {
    		for _, v := range b.Values {
    			if v.Op.isLoweredGetClosurePtr() {
    				// Must stay in the entry block.
    				continue
    			}
    			switch v.Op {
    			case OpPhi, OpArg, OpArgIntReg, OpArgFloatReg, OpSelect0, OpSelect1, OpSelectN:
    				// Phis need to stay in their block.
    				// Arg must stay in the entry block.
    				// Tuple selectors must stay with the tuple generator.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue May 16 01:01:38 UTC 2023
    - 7.7K bytes
    - Viewed (0)
  6. 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)
  7. 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)
  8. src/cmd/compile/internal/ssa/fuse_branchredirect.go

    				for _, v := range b.Values {
    					if v.Op != OpPhi {
    						continue
    					}
    					b.removePhiArg(v, k)
    				}
    				// Fix up child to have one more predecessor.
    				child.Preds = append(child.Preds, Edge{p, pk.i})
    				ai := b.Succs[out].i
    				for _, v := range child.Values {
    					if v.Op != OpPhi {
    						continue
    					}
    					v.AddArg(v.Args[ai])
    				}
    				if b.Func.pass.debug > 0 {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue May 16 21:40:11 UTC 2023
    - 3.2K bytes
    - Viewed (0)
  9. 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)
  10. 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)
Back to top