Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 6 of 6 for opcodeTable (0.16 sec)

  1. 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)
  2. 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)
  3. 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)
  4. 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)
  5. 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)
  6. 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)
Back to top