[llvm-dev] Performance degradation on ARMv7 (cortex-a9)

Grang, Mandeep Singh via llvm-dev llvm-dev at lists.llvm.org
Tue Feb 23 19:15:32 PST 2016

  Hi Bradley,

I was doing some performance analysis for ARMv7 (cortex-a9) and I 
noticed that one of my benchmarks degraded by 93%. I have tracked the 
regression down to the following commit by you:
//commit 7c1b77248baaeafec5d6433c3d1da9a2e2b69595//
//Author: Bradley Smith <bradley.smith at arm.com>//
//Date:   Mon Nov 16 11:10:19 2015 +0000//
//    [ARM] Introduce subtarget features per ARM architecture.//
//    This allows for accurate architecture targeting as well as removing//
//    duplicate information (hardcoded feature strings) from MCTargetDesc./

I see that in lib/Target/ARM/ARM.td all the features have been removed 
from Proc definition (e.g.: ProcA9) and added to ProcessorModel 
definition (e.g.: ProcessorModel<"cortex-a9").
But I find that the features from Proc are still being read and set in 
MCSubtargetInfo through the ARMFeatureKV table. So if the Proc is empty 
the corresponding feature is not being set.
In my case, if I add FeatureFP16 back to the ProcA9 definition in ARM.td 
I get back all the lost performance.

Could you please give me some insight on how, after your change, do the 
Proc features get correctly set in MCSubtargetInfo and other places 
which access Proc?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160223/30dcc51a/attachment.html>

More information about the llvm-dev mailing list