[LLVMdev] Adjusting Instruction Latencies
hamza halli
hmz.halli at gmail.com
Tue Jun 9 10:43:05 PDT 2015
>
>
> Hello,
> I’m working on a custom instruction scheduling for a modified ARMv7A architecture. I’m trying to set manually the instruction latencies for this target without overwriting the pipeline itineraries by writing -for example- the following code in armbaseinstrinfo.cpp.
> By doing this I still get the default instruction latencies of the ARMv7 when I run my custom scheduler.
> Can somebody please help me on this matter?
> Thanks
>
> unsigned ARMBaseInstrInfo::getInstrLatency(const InstrItineraryData *ItinData,
> const MachineInstr *MI,
> unsigned *PredCost) const {
>
>
>
> switch (MI->getOpcode()) {
>
> case ARM::ANDri:
> case ARM::ANDrr:
> case ARM::ANDrsi:
> case ARM::ANDrsr:
> case ARM::EORri:
> case ARM::EORrr:
> case ARM::EORrsi:
> case ARM::EORrsr:
> case ARM::ORRri:
> case ARM::ORRrr:
> case ARM::ORRrsi:
> case ARM::ORRrsr:
> return 1;
> break;
>
>
> case ARM::LSLi:
> case ARM::LSLr:
> case ARM::LSRi:
> case ARM::LSRr:
> case ARM::ADDri:
> case ARM::ADDrr:
> case ARM::ADCrsi:
> case ARM::ADCrsr:
> case ARM::ADCri:
> case ARM::ADCrr:
> case ARM::ADDrsi:
> case ARM::ADDrsr:
> case ARM::ADDSri:
> case ARM::ADDSrr:
> case ARM::ADDSrsi:
> case ARM::ADDSrsr:
> case ARM::ASRi:
> case ARM::ASRr:
> case ARM::CMNri:
> case ARM::CMNzrr:
> case ARM::CMNzrsi:
> case ARM::CMNzrsr:
> case ARM::CMPri:
> case ARM::CMPrr:
> case ARM::CMPrsi:
> case ARM::CMPrsr:
> case ARM::QADD:
> case ARM::QADD16:
> case ARM::QADD8:
> case ARM::QASX:
> case ARM::QDADD:
> case ARM::QDSUB:
> case ARM::QSAX:
> case ARM::QSUB:
> case ARM::QSUB16:
> case ARM::QSUB8:
> case ARM::RORi:
> case ARM::RORr:
> case ARM::RRX:
> case ARM::RRXi:
> case ARM::RSBri:
> case ARM::RSBrr:
> case ARM::RSBrsi:
> case ARM::RSBrsr:
> case ARM::RSBSri:
> case ARM::RSBSrsi:
> case ARM::RSBSrsr:
> case ARM::RSCri:
> case ARM::RSCrr:
> case ARM::RSCrsi:
> case ARM::RSCrsr:
> case ARM::SADD16:
> case ARM::SADD8:
> case ARM::SASX:
> case ARM::SBCri:
> case ARM::SBCrr:
> case ARM::SBCrsi:
> case ARM::SBCrsr:
> case ARM::SBFX:
> case ARM::SEL:
> case ARM::SETEND:
>
>
> case ARM::SSAT:
> case ARM::SSAT16:
> case ARM::SSAX:
> case ARM::SSUB16:
> case ARM::SSUB8:
> case ARM::SUBri:
> case ARM::SUBrr:
> case ARM::SUBrsi:
> case ARM::SUBrsr:
> case ARM::SUBS_PC_LR:
> case ARM::SUBSri:
> case ARM::SUBSrr:
> case ARM::SUBSrsi:
> case ARM::SUBSrsr:
> case ARM::SWP:
> case ARM::SWPB:
> case ARM::SXTAB:
> case ARM::SXTAB16:
> case ARM::SXTAH:
> case ARM::SXTB:
> case ARM::SXTB16:
> case ARM::SXTH:
> case ARM::TEQri:
> case ARM::TEQrr:
> case ARM::TEQrsi:
> case ARM::TEQrsr:
> case ARM::TSTri:
> case ARM::TSTrr:
> case ARM::TSTrsi:
> case ARM::TSTrsr:
> case ARM::UADD16:
> case ARM::UADD8:
> case ARM::UASX:
> case ARM::UBFX:
> case ARM::UHADD16:
> case ARM::UHADD8:
> case ARM::UHASX:
> case ARM::UHSAX:
> case ARM::UHSUB16:
> case ARM::UHSUB8:
> case ARM::UQADD16:
> case ARM::UQADD8:
> case ARM::UQASX:
> case ARM::UQSAX:
> case ARM::UQSUB16:
> case ARM::UQSUB8:
> case ARM::USAD8:
> case ARM::USADA8:
> case ARM::USAT:
> case ARM::USAT16:
> case ARM::USAX:
> case ARM::USUB16:
> case ARM::USUB8:
> case ARM::UXTAB:
> case ARM::UXTAB16:
> case ARM::UXTAH:
> case ARM::UXTB:
> case ARM::UXTB16:
> case ARM::UXTH:
> return 2;
> break;
>
>
>
>
> case ARM::LDRLIT_ga_pcrel_ldr:
> case ARM::LDRrs:
> case ARM::LDRSB:
> case ARM::LDRSB_POST:
> case ARM::LDRSB_PRE:
> case ARM::LDRSBTi:
> case ARM::LDRSBTr:
> case ARM::LDRSH:
> case ARM::LDRSH_POST:
> case ARM::LDRSH_PRE:
> case ARM::LDRSHTi:
> case ARM::LDRSHTr:
> case ARM::LDRT_POST:
> case ARM::LDRT_POST_IMM:
> case ARM::LDRT_POST_REG:
>
> return 8;
> break;
>
> default:
>
> break;
> }
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150609/1476c625/attachment.html>
More information about the llvm-dev
mailing list