Search Options

Results per page
Sort
Preferred Languages
Advance

Results 31 - 40 of 45 for OpPhi (0.04 sec)

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

    			return false
    		}
    	}
    	ss := ss0
    
    	// s0 and s1 are equal with b if the corresponding block is missing
    	// (2nd, 3rd and 4th case in the figure).
    
    	for _, v := range ss.Values {
    		if v.Op == OpPhi && v.Uses > 0 && v.Args[i0] != v.Args[i1] {
    			return false
    		}
    	}
    
    	// We do not need to redirect the Preds of s0 and s1 to ss,
    	// the following optimization will do this.
    	b.removeEdge(0)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Oct 31 20:45:54 UTC 2023
    - 9K bytes
    - Viewed (0)
  2. src/cmd/compile/internal/ssa/regalloc.go

    				regValLiveSet.add(v.ID)
    			}
    		}
    		for i := len(b.Values) - 1; i >= 0; i-- {
    			v := b.Values[i]
    			regValLiveSet.remove(v.ID)
    			if v.Op == OpPhi {
    				// Remove v from the live set, but don't add
    				// any inputs. This is the state the len(b.Preds)>1
    				// case below desires; it wants to process phis specially.
    				continue
    			}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Nov 21 17:49:56 UTC 2023
    - 87.2K bytes
    - Viewed (0)
  3. 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)
  4. 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)
  5. src/cmd/compile/internal/ssa/rewrite.go

    		args = args[:len(args)-1]
    		if target.Block.ID != v.Block.ID {
    			// Since target and load are in the same block
    			// we can stop searching when we leave the block.
    			continue
    		}
    		if v.Op == OpPhi {
    			// A Phi implies we have reached the top of the block.
    			// The memory phi, if it exists, is always
    			// the first logical store in the block.
    			continue
    		}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Jun 07 19:02:52 UTC 2024
    - 64.2K bytes
    - Viewed (0)
  6. 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)
  7. src/cmd/compile/internal/ssa/block.go

    // It must be called after calling b.removePred(i) to
    // adjust the corresponding phi value of the block:
    //
    // b.removePred(i)
    // for _, v := range b.Values {
    //
    //	if v.Op != OpPhi {
    //	    continue
    //	}
    //	b.removePhiArg(v, i)
    //
    // }
    func (b *Block) removePhiArg(phi *Value, i int) {
    	n := len(b.Preds)
    	if numPhiArgs := len(phi.Args); numPhiArgs-1 != n {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 15 15:44:14 UTC 2024
    - 12.2K bytes
    - Viewed (0)
  8. src/cmd/compile/internal/ssa/writebarrier.go

    				memThen = wbcall(pos, bThen, wbMove, sp, memThen, taddr, dst, src)
    				f.fe.Func().SetWBPos(pos)
    				nWBops--
    			}
    		}
    
    		// merge memory
    		mem = bEnd.NewValue2(pos, OpPhi, types.TypeMem, mem, memThen)
    
    		// Do raw stores after merge point.
    		for _, w := range stores {
    			pos := w.Pos
    			switch w.Op {
    			case OpStoreWB:
    				ptr := w.Args[0]
    				val := w.Args[1]
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Sep 08 19:09:14 UTC 2023
    - 23.5K bytes
    - Viewed (0)
  9. src/cmd/compile/internal/ssa/debug.go

    					var source *Value
    					switch v.Op {
    					case OpStoreReg:
    						source = v.Args[0]
    					case OpLoadReg:
    						switch a := v.Args[0]; a.Op {
    						case OpArg, OpPhi:
    							source = a
    						case OpStoreReg:
    							source = a.Args[0]
    						default:
    							if state.loggingLevel > 1 {
    								state.logf("at %v: load with unexpected source op: %v (%v)\n", v, a.Op, a)
    							}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Jun 10 19:44:43 UTC 2024
    - 58.4K bytes
    - Viewed (0)
  10. src/cmd/compile/internal/liveness/plive.go

    			m := v
    			for {
    				m = m.MemoryArg()
    				if m.Block != b {
    					lv.f.Fatalf("can't find Phi before write barrier end mark %v", v)
    				}
    				if m.Op == ssa.OpPhi {
    					break
    				}
    			}
    			// Find the two predecessor blocks (write barrier on and write barrier off)
    			if len(m.Args) != 2 {
    				lv.f.Fatalf("phi before write barrier end mark has %d args, want 2", len(m.Args))
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Jun 07 15:22:22 UTC 2024
    - 45.2K bytes
    - Viewed (0)
Back to top