[llvm-dev] Get basic-block cycle cost from LLVM
陳韋任 via llvm-dev
llvm-dev at lists.llvm.org
Fri Nov 10 15:08:26 PST 2017
CC'ed the list.
I agreed. Since Rick tends to compute latency for cortex-m0, I think the
result is okay?
2017-11-11 4:22 GMT+08:00 UE US <uexplorer666 at gmail.com>:
> The related functions compute scheduling hazards at the DAG level and use
> it for optimization purposes. They can provide info ALUs which have a
> defined latency, but otherwise guess both MachineInstructions and
> TargetInstructions to be one cycle, which isn't true for most processors or
> instructions these days. You'd likely get reasonable results out of MIPS
> or ARM with it, but I don't think x86 models all of the instructions well
> enough to be accurate. It's mainly for schduling ALU instructions
> alongside AVX and AGU and making sure their counts (execution + op) match
> up in a way that will allow simultaneous execution on the same core and
> prefetch as close to optimal as possible, as I understand things.
> Splitting a basic block naively might cause various extra cycles to occur,
> and according to Intel the instruction reordering hardware isn't free
> either. With prefetches, branch prediction, reordering, and speculative
> execution there are too many factors to do more than best predict what will
> run best on the machine knowing those cycles, but they're more of a
> On Fri, Nov 10, 2017 at 8:22 AM, 陳韋任 via llvm-dev <llvm-dev at lists.llvm.org
> > wrote:
>> I believe so, though I am not expert in this field. :)
>> 2017-11-09 20:41 GMT+08:00 Rick Veens via llvm-dev <
>> llvm-dev at lists.llvm.org>:
>>> Hi all,
>>> I'm interested in obtaining the cycles spend by the CPU from LLVM and i
>>> was wondering if this was possible to obtain this with the scheduling
>>> information from LLVM. (For the cortex-m0 in particular).
>>> I found the following function : getInstrLatency() in the TargetInstrInfo
>>> If i sum the latencies of the instructions in a basic block i suppose i
>>> will get the total cycle cost for the cortex-m0.
>>> From what i understand is that there are multiple ways of doing
>>> scheduling in LLVM.
>>> I have read about one way which is using Itenaries and another which is
>>> using SchedMachineModel.
>>> Will the above function always give me the latencies, independent on the
>>> scheduling method used ?
>>> Sorry if this is a stupid question, i'm a beginner to LLVM.
>>> Best regards,
>>> Rick Veens
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>> Wei-Ren Chen (陳韋任)
>> Homepage: https://people.cs.nctu.edu.tw/~chenwj
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
Wei-Ren Chen (陳韋任)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev