Search Options

Results per page
Sort
Preferred Languages
Advance

Results 11 - 20 of 64 for phi (0.18 sec)

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

    			Valu("sp", OpSP, c.config.Types.Uintptr, 0, nil),
    			Goto("loop")),
    		Bloc("loop",
    			Valu("phi", OpPhi, types.TypeMem, 0, nil, "start", "wb"),
    			Valu("v", OpConstNil, ptrType, 0, nil),
    			Valu("addr", OpAddr, ptrType, 0, nil, "sb"),
    			Valu("wb", OpStore, types.TypeMem, 0, ptrType, "addr", "v", "phi"), // has write barrier
    			Goto("loop")))
    
    	CheckFunc(fun.f)
    	writebarrier(fun.f)
    	CheckFunc(fun.f)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Apr 24 15:51:15 UTC 2018
    - 1.7K bytes
    - Viewed (0)
  2. 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)
  3. 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)
  4. 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)
  5. src/cmd/compile/internal/ssa/phiopt.go

    					v.reset(OpAndB)
    					v.SetArgs2(b0.Controls[0], tmp)
    					if f.pass.debug > 0 {
    						f.Warnl(b.Pos, "converted OpPhi to %v", v.Op)
    					}
    					continue
    				}
    			}
    		}
    	}
    	// strengthen phi optimization.
    	// Main use case is to transform:
    	//   x := false
    	//   if c {
    	//     x = true
    	//     ...
    	//   }
    	// into
    	//   x := c
    	//   if x { ... }
    	//
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Apr 11 16:34:30 UTC 2022
    - 8.1K bytes
    - Viewed (0)
  6. src/cmd/compile/internal/ssa/tighten.go

    //  1. The start memory state of a block is InitMem, a Phi node of type mem or
    //     an incoming memory value.
    //  2. The start memory state of a block is consistent with the end memory state
    //     of its parent nodes. If the start memory state of a block is a Phi value,
    //     then the end memory state of its parent nodes is consistent with the
    //     corresponding argument value of the Phi node.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue May 16 01:01:38 UTC 2023
    - 7.7K bytes
    - Viewed (0)
  7. src/cmd/compile/internal/ssa/sparsetree.go

    	// between assignments (typically branch-dependent
    	// conditionals) occurring "before" the block (e.g., as inputs
    	// to the block and its phi functions), "within" the block,
    	// and "after" the block.
    	AdjustBefore = -1 // defined before phi
    	AdjustWithin = 0  // defined by phi
    	AdjustAfter  = 1  // defined within block
    )
    
    // A SparseTree is a tree of Blocks.
    // It allows rapid ancestor queries,
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Nov 18 17:59:44 UTC 2022
    - 8.1K bytes
    - Viewed (0)
  8. src/cmd/compile/internal/ssa/regalloc.go

    //
    // Phi values are special, as always. We define two kinds of phis, those
    // where the merge happens in a register (a "register" phi) and those where
    // the merge happens in a stack location (a "stack" phi).
    //
    // A register phi must have the phi and all of its inputs allocated to the
    // same register. Register phis are spilled similarly to regular ops.
    //
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Nov 21 17:49:56 UTC 2023
    - 87.2K bytes
    - Viewed (0)
  9. src/cmd/compile/internal/ssa/shortcircuit_test.go

    		Bloc("b7",
    			Exit("mem")))
    
    	CheckFunc(fun.f)
    	shortcircuit(fun.f)
    	CheckFunc(fun.f)
    
    	for _, b := range fun.f.Blocks {
    		for _, v := range b.Values {
    			if v.Op == OpPhi {
    				t.Errorf("phi %s remains", v)
    			}
    		}
    	}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue May 09 23:01:51 UTC 2017
    - 1.3K bytes
    - Viewed (0)
  10. src/cmd/compile/internal/ssa/deadstore_test.go

    			Valu("addr", OpAddr, ptrType, 0, nil, "sb"),
    			Goto("loop")),
    		Bloc("loop",
    			Valu("phi", OpPhi, types.TypeMem, 0, nil, "start", "store"),
    			Valu("store", OpStore, types.TypeMem, 0, c.config.Types.Bool, "addr", "v", "phi"),
    			If("v", "loop", "exit")),
    		Bloc("exit",
    			Exit("store")))
    
    	CheckFunc(fun.f)
    	dse(fun.f)
    	CheckFunc(fun.f)
    }
    
    func TestDeadStoreTypes(t *testing.T) {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Apr 25 20:07:26 UTC 2024
    - 5.6K bytes
    - Viewed (0)
Back to top