- Sort Score
- Result 10 results
- Languages All
Results 1 - 6 of 6 for opcodeTable (0.16 sec)
-
src/cmd/compile/internal/ssa/zcse.go
// remove duplicate expressions. func zcse(f *Func) { vals := make(map[vkey]*Value) for _, b := range f.Blocks { for i := 0; i < len(b.Values); i++ { v := b.Values[i] if opcodeTable[v.Op].argLen == 0 { key := vkey{v.Op, keyFor(v), v.Aux, v.Type} if vals[key] == nil { vals[key] = v if b != f.Entry { // Move v to the entry block so it will dominate every block
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Dec 08 01:46:31 UTC 2020 - 2.1K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/lower.go
// lowering and a subsequent dead code elimination (because lowering // rules may leave dead generic ops behind). for _, b := range f.Blocks { for _, v := range b.Values { if !opcodeTable[v.Op].generic { continue // lowered } switch v.Op {
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Thu Feb 16 00:16:13 UTC 2023 - 1.7K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/deadcode.go
q = append(q, v) if v.Pos.IsStmt() != src.PosNotStmt { liveOrderStmts = append(liveOrderStmts, v) } } } for _, v := range b.Values { if (opcodeTable[v.Op].call || opcodeTable[v.Op].hasSideEffects || opcodeTable[v.Op].nilCheck) && !live[v.ID] { live[v.ID] = true q = append(q, v) if v.Pos.IsStmt() != src.PosNotStmt { liveOrderStmts = append(liveOrderStmts, v) } }
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Fri Dec 08 00:29:01 UTC 2023 - 9.2K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/flagalloc.go
v := b.Values[j] if v.Op == OpInvalid { continue } b.Values[i] = v i++ } b.truncateValues(i) } } func (v *Value) clobbersFlags() bool { if opcodeTable[v.Op].clobberFlags { return true } if v.Type.IsTuple() && (v.Type.FieldType(0).IsFlags() || v.Type.FieldType(1).IsFlags()) { // This case handles the possibility where a flag value is generated but never used.
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Oct 31 21:41:20 UTC 2022 - 6.7K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/fuse.go
// There may be false positives. func isEmpty(b *Block) bool { for _, v := range b.Values { if v.Uses > 0 || v.Op.IsCall() || v.Op.HasSideEffects() || v.Type.IsVoid() || opcodeTable[v.Op].nilCheck { return false } } return true } // fuseBlockPlain handles a run of blocks with length >= 2, // whose interior has single predecessors and successors,
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Tue Oct 31 20:45:54 UTC 2023 - 9K bytes - Viewed (0) -
src/cmd/compile/internal/ssa/cse.go
// partition can grow in the loop. By not using a range loop here, // we process new additions as they arrive, avoiding O(n^2) behavior. for i := 0; i < len(partition); i++ { e := partition[i] if opcodeTable[e[0].Op].commutative { // Order the first two args before comparison. for _, v := range e { if valueEqClass[v.Args[0].ID] > valueEqClass[v.Args[1].ID] { v.Args[0], v.Args[1] = v.Args[1], v.Args[0]
Registered: Wed Jun 12 16:32:35 UTC 2024 - Last Modified: Mon Oct 31 21:41:20 UTC 2022 - 9.6K bytes - Viewed (0)