search for: funcunits

Displaying 8 results from an estimated 8 matches for "funcunits".

2011 Oct 22
0
[LLVMdev] Instruction Scheduling Itineraries
On Oct 21, 2011, at 12:15 AM, James Molloy wrote: > Hi Andy, > > Could you describe how this would be done? In the current ARM itineraries > (say C-A9 for example), the superscalar issue stage is modelled as taking 1 > cycle. If it were to take 2 cycles instead, as far as I can tell the hazard > analyser would stall because both FU's would be acquired. > > I would
2015 Nov 16
2
DFAPacketizer assert failure
...eserve the resources occupied by a MCInstrDesc and // change the current state to reflect that change. void DFAPacketizer::reserveResources(const llvm::MCInstrDesc *MID) { unsigned InsnClass = MID->getSchedClass(); const llvm::InstrStage *IS = InstrItins->beginStage(InsnClass); unsigned FuncUnits = IS->getUnits(); UnsignPair StateTrans = UnsignPair(CurrentState, FuncUnits); ReadTable(CurrentState); assert(CachedTable.count(StateTrans) != 0); CurrentState = CachedTable[StateTrans]; } This happens at the packetization stage, i.e. scheduling seems to work. My schedule description i...
2015 Nov 16
3
DFAPacketizer assert failure
> > It's hard to make a guess based on that assertion alone. Apparently there > is no transition in the DFA for these values. > > Do the arguments (e.g. CurrentState and FuncUnits) look reasonable? FuncUnits = 0 CurrentState = 0 StateTrans = {first = 0, second = 0} I understand that there is something wrong with the state machine but I can't figure out what exactly. My scheduler description is the same as for Hexagon or R600. So why would DFA would look any different...
2012 Jul 17
1
[LLVMdev] Tile64 bundle-types and VLIW infrastructure
...ficient. Too bad, Y-bundles can't contain arbitrary instructions. So, there are 5 virtual pipelines: X0, X1, Y0, Y1, Y2. I can define that which pipelines can be used to perform an instruction. On the other hand, AFAIK one subtarget can be matched only with one ProcessorItineraries and all its FuncUnits may be used in each bundle. Thus, I can't constraint bundles to use either X0, X1 or Y0, Y1, Y2, and never mix them. Is there a way to define two types of bundles using the current capabilities of TableGen and CodeGen? Or had I better use only X-bundles for now? Thanks for any suggestions, Da...
2012 Jun 11
0
[LLVMdev] scoreboard hazard det. and instruction groupings
...tructions can be, and which ones will move forward as the next > dispatched group, and I think we need to fallback into C++ to deal with > them. Right. I should have mentioned that the static itinerary really can't express dynamic constraints. You can play games by inventing new types of FuncUnits. But there's no way to say an instruction hogs a pipeline until some future event at unknown interval. -Andy
2012 Jun 11
3
[LLVMdev] scoreboard hazard det. and instruction groupings
On Mon, 11 Jun 2012 10:48:18 -0700 Andrew Trick <atrick at apple.com> wrote: > On Jun 11, 2012, at 9:30 AM, Hal Finkel <hfinkel at anl.gov> wrote: > > > I'm considering writing more-detailed itineraries for some PowerPC > > CPUs that use the 'traditional' instruction grouping scheme. In > > essence, this means that multiple instructions will stall
2012 Apr 19
0
[LLVMdev] Target Dependent Hexagon Packetizer patch
...it. >> + // If it doesn't, we ignore the instruction. >> + const MCInstrDesc& TID = MI->getDesc(); >> + unsigned SchedClass = TID.getSchedClass(); >> + const InstrStage* IS = ResourceTracker->getInstrItins()->beginStage(SchedClass); >> + unsigned FuncUnits = IS->getUnits(); >> + return !FuncUnits; >> +} >> + >> +// isSoloInstruction: - Returns true for instructions that must be >> +// scheduled in their own packet. >> +bool HexagonPacketizerList::isSoloInstruction(MachineInstr *MI) { >> + >> + if (...
2012 Jul 16
3
[LLVMdev] RFC: LLVM incubation, or requirements for committing new backends
Tom, I think it might be productive to fork this thread to discuss making the requirements for upstreaming a new LLVM target more explicit and open. I'd also like to gauge interest in an idea I've discussed privately with a few community members, namely the concept of having a semi-official "incubation" system whereby proposed backends could get a trial run before becoming part