// Test if this value can encoded as a mask for // li -1, rx; rlic rx,rx,sh,mb. // Masks can also extend from the msb and wrap to // the lsb too. That is, the valid masks are 32 bit strings // of the form: 0..01..10..0 or 1..10..01..1 or 1...1 func isPPC64DoublewordRotateMask(v64 int64) bool { … } // Encode a doubleword rotate mask into mb (mask begin) and // me (mask end, inclusive). Note, POWER ISA labels bits in // big endian order. func encodePPC64RLDCMask(mask int64) (mb, me int) { … } // Is this a symbol which should never have a TOC prologue generated? // These are special functions which should not have a TOC regeneration // prologue. func isNOTOCfunc(name string) bool { … } // Try converting FMOVD/FMOVS to XXSPLTIDP. If it is converted, // return true. func convertFMOVtoXXSPLTIDP(p *obj.Prog) bool { … } func progedit(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc) { … } // Rewrite p, if necessary, to access a symbol using its TOC anchor. // This code is for AIX only. func (c *ctxt9) rewriteToUseTOC(p *obj.Prog) { … } // Rewrite p, if necessary, to access global data via the global offset table. func (c *ctxt9) rewriteToUseGot(p *obj.Prog) { … } func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { … } /* // instruction scheduling if(debug['Q'] == 0) return; curtext = nil; q = nil; // p - 1 q1 = firstp; // top of block o = 0; // count of instructions for(p = firstp; p != nil; p = p1) { p1 = p->link; o++; if(p->mark & NOSCHED){ if(q1 != p){ sched(q1, q); } for(; p != nil; p = p->link){ if(!(p->mark & NOSCHED)) break; q = p; } p1 = p; q1 = p; o = 0; continue; } if(p->mark & (LABEL|SYNC)) { if(q1 != p) sched(q1, q); q1 = p; o = 1; } if(p->mark & (BRANCH|SYNC)) { sched(q1, p); q1 = p1; o = 0; } if(o >= NSCHED) { sched(q1, p); q1 = p1; o = 0; } q = p; } */ func (c *ctxt9) stacksplit(p *obj.Prog, framesize int32) *obj.Prog { … } var unaryDst … var Linkppc64 … var Linkppc64le …