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

Grang, Mandeep Singh via llvm-dev
Wed, 24 Feb 2016 03:15:32 -0000

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?

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