- Sort Score
- Result 10 results
- Languages All
Results 1 - 10 of 6,192 for phis (0.12 sec)
-
src/cmd/compile/internal/ssa/stackalloc.go
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) } continue }
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Thu Feb 29 21:29:41 UTC 2024 - 12.6K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/loopreschedchecks.go
} } // newPhiFor inserts a new Phi function into b, // with all inputs set to v. func newPhiFor(b *Block, v *Value) *Value { phiV := b.NewValue0(b.Pos, OpPhi, v.Type) for range b.Preds { phiV.AddArg(v) } return phiV } // rewriteNewPhis updates newphis[h] to record all places where the new phi function inserted
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Aug 22 21:17:10 UTC 2023 - 16K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/shortcircuit.go
// to phi to refer to the corresponding phi arg instead. // phi used to be evaluated prior to this block, // and now it is evaluated in this block. for _, v := range phi.Block.Values { if v.Op != OpPhi || v == phi { continue } for j, a := range v.Args { if a == phi { v.SetArg(j, phi.Args[j]) } } } if phi.Uses != 0 {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Oct 03 17:47:02 UTC 2022 - 12.6K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/decompose.go
// Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package ssa import ( "cmd/compile/internal/types" "sort" ) // decompose converts phi ops on compound builtin types into phi // ops on simple types, then invokes rewrite rules to decompose // other ops on those types. func decomposeBuiltIn(f *Func) { // Decompose phis for _, b := range f.Blocks {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Aug 23 21:22:15 UTC 2022 - 13.4K bytes - Viewed (0) -
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) -
src/cmd/compile/internal/ssagen/phi.go
func (fwdRefAux) CanBeAnSSAAux() {} // insertPhis finds all the places in the function where a phi is // necessary and inserts them. // Uses FwdRef ops to find all uses of variables, and s.defvars to find // all definitions. // Phi values are inserted, and all FwdRefs are changed to a Copy // of the appropriate phi or definition. // TODO: make this part of cmd/compile/internal/ssa somehow? func (s *state) insertPhis() {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Fri Nov 18 17:59:44 UTC 2022 - 15.2K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/deadstore.go
// reaching an op, but some ops can take // multiple pointers (e.g. NeqPtr, Phi etc.). // This is rare, so just propagate the first // value to keep things simple. used.Add(n) changed = true } } } if node == nil { return } if addr[v] == nil { // The address of an auto reaches this op. addr[v] = node changed = true return }
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Thu Apr 25 20:07:26 UTC 2024 - 11K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/nilcheck.go
work = append(work, bp{block: f.Entry}) // map from value ID to known non-nil version of that value ID // (in the current dominator path being walked). This slice is updated by // walkStates to maintain the known non-nil values. // If there is extrinsic information about non-nil-ness, this map // points a value to itself. If a value is known non-nil because we // already did a nil check on it, it points to the nil check operation.
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Oct 31 20:45:54 UTC 2023 - 11.3K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/nilcheck_test.go
If("bool2", "extra", "exit")), Bloc("extra", // prevent fuse from eliminating this block Valu("store", OpStore, types.TypeMem, 0, ptrType, "ptr1", "nilptr", "mem"), Goto("exit")), Bloc("exit", Valu("phi", OpPhi, types.TypeMem, 0, nil, "mem", "store"), Exit("phi"))) CheckFunc(fun.f) // we need the opt here to rewrite the user nilcheck opt(fun.f) nilcheckelim(fun.f)
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Fri Nov 17 23:34:11 UTC 2023 - 12.3K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/_gen/dec64.rules
// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // This file contains rules to decompose [u]int64 types on 32-bit // architectures. These rules work together with the decomposeBuiltIn // pass which handles phis of these typ. (Int64Hi (Int64Make hi _)) => hi (Int64Lo (Int64Make _ lo)) => lo
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Oct 04 19:35:46 UTC 2022 - 14.2K bytes - Viewed (0)