search for: instrbuilder

Displaying 4 results from an estimated 4 matches for "instrbuilder".

2020 Jan 06
2
[EXTERNAL] Get llvm-mca results inside opt?
...w the branch probability. llvm-mca only knows how to analyze/simulate a sequence of `mca::Instruction`. So, the expectation is that instructions in input have already been lowered into a sequence of mca::Instruction. The only way currently to obtain an `mca::Instruction` is by calling method `mca::InstrBuilder::createInstruction()` [1] on every instruction in input (see for example how it is done in llvm-mca.cpp [2]). Unfortunately method `createInstructions()` only works on `MCInst&`. This strongly limits the usability of llvm-mca as a library; the expectation/assumption is that instructions have a...
2019 Dec 24
2
Get llvm-mca results inside opt?
Hi, I am trying to generate performance models for specific pieces of code like an omp.outlined function. Lets say I have the following code: start_collect_parallel_for_data(-1.0,-1.0,-1.0, size, “tag for this region”); #pragma omp parallel for for(auto i = 0; i < size; ++i){ // … do work } stop_collecting_parallel_for_data(); The omp region will get outlined into a new function and what I
2020 May 10
2
[llvm-mca] Resource consumption of ProcResGroups
...esc - https://llvm.org/doxygen/structllvm_1_1MCProcResourceDesc.html#a9d4d0cc34fcce4779dc4445d8265fffc ). The reason why you see the crash/assert is because the number of resource units for scheduler resources is incorrectly set for that instruction by the instruction builder in llvm-mca ( lib/MCA/InstrBuilder.cpp - function `initializeUsedResources()`). I am looking at it. About what Andy suggested: I really like the idea of having a vector of delay-cycles for consumed resources. It would fix most of these problems in Haswell, and it could be used to improve the description of some instructions on oth...
2020 May 10
2
[llvm-mca] Resource consumption of ProcResGroups
> On May 9, 2020, at 5:12 PM, Andrea Di Biagio via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > The llvm scheduling model is quite simple and doesn't allow mca to accurately simulate the execution of individual uOPs. That limitation is sort-of acceptable if you consider how the scheduling model framework was originally designed with a different goal in mind (i.e. machine