Displaying 20 results from an estimated 50000 matches similar to: "[LLVMdev] How to override a default codegen pass?"
2015 Apr 10
2
[LLVMdev] [RFC][CodeGen] What CLI should we provide for overriding the target decision on whether to run a pass (GlobalMerge) ?
Hi Eric, all,
Currently, there isn't a good way to force enable/disable GlobalMerge.
Targets decide whether to create the pass based on the optimization
level (which is how it should be).
The problem is when you want to override that decision. We have
-enable-global-merge, true by default, which should really be
-disable-global-merge, as it only works as a last-resort way to
force-disable
2012 Feb 24
0
[LLVMdev] CodeGen instructions and patterns
(readding cc llvmdev)
On Feb 24, 2012, at 11:46 AM, محمد ﻋﻤﺮ ﺩﻫﻠﻮﻯ <omerbeg at gmail.com> wrote:
>
> > otherwise how are the machine instructions being accessed/matched for instruction selection ?
> >
>
> Have a look at the code in SelectionDAGISel.
>
>
> I am looking at the ARM backend.
> In specific, the instruction selection.
> In Select(N),
2017 Feb 12
2
Pre-RA scheduler does not generate NOPs when getHazardType() returns NoopHazard
Hello.
I am new to the schedulers implemented in the back end of LLVM.
I am trying to handle data hazards in my simple processor, with instructions that
execute in 1 cycle.
I have tried the standard post-RA scheduler, implemented in
lib/CodeGen/PostRASchedulerList.cpp, (with a ScoreboardHazardRecognizer), but I have some
issues with some consecutive instructions that are
2013 Sep 19
0
[LLVMdev] Does Mips resolve hazard in pre-ra-sched or post-ra-sched?
Mips invokes the post-RA scheduler only when OptLevel > Aggressive, so you
will have to compile with -O3.
You can also invoke the MI (pre-RA) scheduler with llc option
"-enable-misched". As you have pointed out, the post-isel scheduler is
mandatory, and therefore you don't have to give any command line options.
Currently, mips has only one generic scheduling itinerary model in
2013 Sep 20
0
[LLVMdev] Does Mips resolve hazard in pre-ra-sched or post-ra-sched?
Hi, Akira,
I found you maintain mips MipsSchedule.td. does it correct? in
MipsSchedule.td, every InstrItinData only uses one InstrStage. there's no
ByPass info out there.
are you sure this reflects the real R4xxx/R5xxx processors.
why IILoad uses funcition unit ALU?
InstrItinData<IILoad , [InstrStage<3, [ALU]>]>
for my previous question, I have new input after
2013 Sep 20
2
[LLVMdev] Does Mips resolve hazard in pre-ra-sched or post-ra-sched?
Akira,
Thanks you for response.
I understand Post-RA schedule make uses of scoreboardHazardRecognizer. But
I found mips codes are good enough by default. basically, I can not easily
eyeball any bubbles.
I don't understand how they can do that without post-RA-sched.
pre-ra-scheduler eg. (SelectionDAG/ScheduleDAGRRList.cpp) has little
information and they can only schedule node in topology
2013 Sep 26
1
[LLVMdev] Enabling MI Scheduler on x86 (was Experimental Evaluation of the Schedulers in LLVM 3.3)
Hi,
Thanks for your explanations!
How is the big picture for supporting in-order VLIW architectures and
the like though?
I am asking because I am currently implementing instruction scheduling
in our own backend for our custom Patmos processor, for which I need to
support both branch delay slots and bundles, some restrictions regarding
bundles.
For the moment, I am quite happy with a simple
2012 Aug 13
0
[LLVMdev] [RFC] Bundling support in the PostRA Scheduler
Hi Pekka,
> Has anyone studied how much work it would be to implement an integrated
> allocator/scheduler in LLVM now?
Not to my knowledge.
> Another solution (which we use in TCE) is to use register renaming.
You do it in LLVM? Do you plan to upstream it?
Also, I do not know your target/goal, but do you look at global scheduling
at all?
Thanks.
Sergei
--
Qualcomm Innovation
2013 Sep 25
1
[LLVMdev] Does Mips resolve hazard in pre-ra-sched or post-ra-sched?
On Fri, Sep 20, 2013 at 3:30 AM, Liu Xin <navy.xliu at gmail.com> wrote:
> Hi, Akira,
>
> I found you maintain mips MipsSchedule.td. does it correct? in
> MipsSchedule.td, every InstrItinData only uses one InstrStage. there's no
> ByPass info out there.
> are you sure this reflects the real R4xxx/R5xxx processors.
>
> why IILoad uses funcition unit ALU?
>
2011 Apr 08
1
[LLVMdev] doubts about Instruction Selection and Scheduling
Hello,
I'm working on the text of my Master's Thesis and I have some doubts:
1. What algorithm is used in Selection Instruction ? What is the input ?
2. Where is described how the variations of List Scheduling work, in
-pre-RA-sched phase ?
-pre-RA-sched - Instruction schedulers
available (before register allocation):
=source -
2012 Mar 15
2
[LLVMdev] Question about post RA scheduler
Thank you for your suggestions.
I implemented the first approach (provided the byval argument and
offset to MachinePointerInfo) and it seems to have fixed the
instruction ordering problem. It was a lot simpler than initially
expected.
In this particular case, is the user responsible for providing alias
information to MachinePointerInfo to guarantee instructions are
emitted in the correct order?
2013 Sep 19
2
[LLVMdev] Does Mips resolve hazard in pre-ra-sched or post-ra-sched?
Hi, LLVM,
I found LLVM codegen has 3 passes for instruction scheduling:
1) pre-ra sched
2) post-ra sched
3) mi sched.
for RISC machines, there are data hazard cases appear only after Register
Allocation(RA). for example, $t0 is used immediately after writing(RAW):
ld $t0, MEM
add $t2, $t0, $0
There may be one or more stall in pipeline. Instruction scheduler can
detect this kinds of conflict
2012 Aug 10
2
[LLVMdev] [RFC] Bundling support in the PostRA Scheduler
Hi,
On 08/09/2012 10:03 PM, Sergei Larin wrote:
> I also tried to mess with PostRA scheduler to achieve similar goals, only
> to find out that all the additional dependencies after RA make it virtually
> impossible to produce high quality schedule, and obviously it is too late at
> that point to address reg pressure via scheduling techniques, so I have put
> that project on the
2011 May 26
2
[LLVMdev] Need advice on writing scheduling pass
Hi,
thank you for your explanations.
In order to get a pre-RA scheduling, I would need something like:
- LiveVars
- PhiElim
- TwoAddr
- LiveIntervals
- Coalescing
- Scheduler (new)
- SlotIndexing
- LiveIntervals2 (new)
- RegAllocMy qeustion then is, is it really so difficult to create the live intervals information, with modifications to the original algorithm, or even from scratch?
2018 Dec 04
2
Incorrect placement of an instruction after PostRAScheduler pass
Hi,
I’m facing a crash issue (--target=arm-linux-gnueabi
-march=armv8-a+crc -mfloat-abi=hard) and debugging the problem, I
found that an intended branch was not taken due to bad code generation
after the Post RA Scheduler pass. A CMPri instruction after an
INLINEASM block (which inturn contains a cmp, bne instruction) is
being moved before the INLINEASM block incorrectly resulting in two
2017 Feb 10
3
Enforcing in post-RA scheduling to keep (two) MachineInstrs together
Hello.
I am using the post-RA (Register Allocation) scheduler to avoid data hazards by
inserting other USEFUL instructions from the program (besides NOPs) and it breaks apart
some sequences of instructions which should remain "glued" together.
More exactly, in my [Target]ISelDAGToDAG.cpp it is possible that I replace for
example a BUILD_VECTOR with a machine SDNode called
2011 Jan 18
1
[LLVMdev] adding a codegen pass into llvm
Thanks for your last reply.
Could I understand the way to adding a pass (built into the llvm rather than
dynamic loadable) includes:
1. Declaring a creator function for this pass
2. Implementing the creator function for this pass
3. Instantiating this pass and get a object of it
3. Register this pass into the PassRegistry
Then, for a built-into bytecode pass,
task 1(declaration of the
2011 May 26
0
[LLVMdev] Need advice on writing scheduling pass
On Thu, May 26, 2011 at 15:07:24 +0200, Jonas Paulsson wrote:
> In order to get a pre-RA scheduling, I would need something like:
> - LiveVars
> - PhiElim
> - TwoAddr
> - LiveIntervals
> - Coalescing
> - Scheduler (new)
> - SlotIndexing
> - LiveIntervals2 (new)
> - RegAlloc
> My qeustion then is, is it really so difficult to create the live intervals
2019 Sep 10
2
MachineScheduler not scheduling for latency
Hi Andy,
Thanks for the explanations. Yes AMDGPU is in-order and has
MicroOpBufferSize = 1.
Re "issue limited" and instruction groups: could it make sense to
disable the generic scheduler's detection of issue limitation on
in-order CPUs, or on CPUs that don't define instruction groups, or
some similar condition? Something like:
--- a/lib/CodeGen/MachineScheduler.cpp
+++
2019 Sep 09
2
Fwd: MachineScheduler not scheduling for latency
Hi,
I'm trying to understand why MachineScheduler does a poor job in
straight line code in cases like the one in the attached debug dump.
This is on AMDGPU, an in-order target, and the problem is that the
IMAGE_SAMPLE instructions have very high (80 cycle) latency, but in
the resulting schedule they are often placed right next to their uses
like this:
1784B %140:vgpr_32 =