Displaying 13 results from an estimated 13 matches for "preemit".
2013 Nov 23
0
[LLVMdev] prevents instruction-scheduler from interfereing instruction pair
What I meant was to write your own expansion pass and run it after the
scheduler passes, e.g. in the pre-emit stage.
> if (addPreEmitPass())
printAndVerify("After PreEmit passes")
Though if it's too hacky for you then fair enough.
Amara
On 23 November 2013 03:17, Liu Xin <navy.xliu at gmail.com> wrote:
> Amara,
>
> first, thank you for answering. but I found expandPsuedo instructions
> actu...
2020 Jul 11
3
is a MachineBasicBlock a kind of superblock?
...9;t know where in the MI layer
this sort of tiling of the CFG is done. (In a full blown superblock
formation that tiling would be a profile driven decision for finding the
hot trace.)
It's always good to just look at things. So I want to just display some
MBBs for some code for some backend at preEmit and just look at what they
look like. Any suggestions for that will be appreciated.
thanks,
Chris
BTW, this is at the MI-MC interface. The IR BasicBlock is a completely
different issue.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipe...
2013 Nov 23
2
[LLVMdev] prevents instruction-scheduler from interfereing instruction pair
Amara,
first, thank you for answering. but I found expandPsuedo instructions
actually happens before post-RA, like the following code showing:
your approach is a little hacky, right? : )
// Expand pseudo instructions before second scheduling pass.
addPass(&ExpandPostRAPseudosID);
printAndVerify("After ExpandPostRAPseudos");
// Run pre-sched2 passes.
if (addPreSched2())
2013 Nov 23
1
[LLVMdev] prevents instruction-scheduler from interfereing instruction pair
I think this after a second. I got your point. I can define a pseudo
instruction for an instr-pair and expand it after post-RA-sched. as you
said, in preEmitPass.
The original intrinsic can also be kept. I just convert the intrinsic to
pseudo instruction in TargetLower. Thank you for your enlightening
suggestion!
thanks,
--lx
On Sat, Nov 23, 2013 at 8:37 PM, Amara Emerson <amara.emerson at gmail.com>wrote:
> What I meant was to write your...
2012 Aug 06
0
[LLVMdev] [RFC] Bundling support in the PostRA Scheduler
...to the current
> infrastructure ?
>
> Ivan
Hi Ivan,
Your description sounds fine to me. I assume you are totally decoupled from what LLVM currently calls the "postRA" scheduling pass. Hopefully you don't need anything in PostRASchedulerList.cpp.
Running your bundler as a preEmit pass is the cleanest approach. But if need be, we can support preRA bundling at the time the MachineScheduler currently runs (if enabled). TargetPassConfig allows you to substitute your own pass in place of MachineScheduler. Passes that run after MachineScheduler are intended to support instruction...
2012 Aug 13
1
[LLVMdev] [RFC] Bundling support in the PostRA Scheduler
...ucture ?
>>
>> Ivan
> Hi Ivan,
>
> Your description sounds fine to me. I assume you are totally decoupled from what LLVM currently calls the "postRA" scheduling pass. Hopefully you don't need anything in PostRASchedulerList.cpp.
>
> Running your bundler as a preEmit pass is the cleanest approach. But if need be, we can support preRA bundling at the time the MachineScheduler currently runs (if enabled). TargetPassConfig allows you to substitute your own pass in place of MachineScheduler. Passes that run after MachineScheduler are intended to support instruction...
2011 Jan 31
0
[LLVMdev] Target code size
...e),
and some arithmetic instructions are used in between, the comparison has to
be done again (the flags have been overwritten).
2) In the InstrInfo.td, the selection generates the target instruction that
do not modify the flags.
In this case, in order to reduce code size, I was planning to write a
preEmit pass to turn instructions that do not modify flags into instructions
that modify flags when there is no impact (basically when the flag register
is not needed and so can be safely overwritten).
Thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://...
2012 Apr 21
0
[LLVMdev] CriticalAntiDepBreaker rewrites a register operand of a call instruction
Hi Akira,
> I am running into a problem when I turn on post-RA scheduler with mode
> "ANTIDEP_CRITICAL" for mips.
> I'd appreciate if someone could explain what is going wrong here.
All these passes are pretty sensitive to correct register liveness
information. As a first step I'd check whether machine verifier
reports no errors here.
--
With best regards, Anton
2012 Apr 25
2
[LLVMdev] CriticalAntiDepBreaker rewrites a register operand of a call instruction
...erminator instructions.
It seems that these error messages are printed because the verifier does
not understand that mips has delay slots, not because it has detected any
true violations.
$ llc macroblock.llvm.mips64el.ll -mcpu=mips64r2 -O3 -o macroblock.s
-mattr=n64 -verify-machineinstrs
# After PreEmit passes
# Machine code for function start_macroblock: Post SSA
BB#0: derived from LLVM BB %entry
Live Ins: %A0_64 %T9_64 %RA_64 %S3_64 %S2_64 %S1_64 %S0_64
BEQ %A0<kill>, %ZERO, <BB#2>
NOP
Successors according to CFG: BB#2 BB#1
# End machine code for function start_macr...
2018 May 07
0
How to add assembly instructions in CodeGen
...lvm-dev at lists.llvm.org> wrote:
>
> Hello,
>
> I want to add assembly instructions at certain points in a function. This is X86 specific. So I am working in the lib/Target/X86 folder. I create a `MachineFunctionPass` in that folder. I register it in the X86TargetMachine.cpp in addPreEmitPass(). I use BuildMI to insert my own assembly instructions in the MachineFunctionPass. This works and my assembly instructions are inserted at desired places. However, this breaks the alignment. So when I run the generated code, I get segmentation fault (precisely in printf with XMM registers). Wh...
2012 Apr 20
2
[LLVMdev] CriticalAntiDepBreaker rewrites a register operand of a call instruction
I am running into a problem when I turn on post-RA scheduler with mode
"ANTIDEP_CRITICAL" for mips.
I'd appreciate if someone could explain what is going wrong here.
This is the basic block before post RA scheduling (at
PostRASchedulerList.cpp:322):
*(gdb)
#3 0x0000000000ed3d26 in runOnMachineFunction (this=0x20aa470, Fn=...)
at lib/CodeGen/PostRASchedulerList.cpp:322
322
2012 Jul 31
6
[LLVMdev] [RFC] Bundling support in the PostRA Scheduler
Hi,
I'm working on a custom top-down post RA scheduler which builds bundles
at the same time for our VLIW processor. I've borrowed most of the
implementation from the resource priority queue implemented for the
existent VLIW scheduler but applied to the context of MI scheduling.
Basically, instructions that are likely to be bundled must be scheduled
first (i.e. get higher priority).
2018 May 05
4
How to add assembly instructions in CodeGen
Hello,
I want to add assembly instructions at certain points in a function. This
is X86 specific. So I am working in the lib/Target/X86 folder. I create a
`MachineFunctionPass` in that folder. I register it in the
X86TargetMachine.cpp in addPreEmitPass(). I use BuildMI to insert my own
assembly instructions in the MachineFunctionPass. This works and my
assembly instructions are inserted at desired places. However, this breaks
the alignment. So when I run the generated code, I get segmentation fault
(precisely in printf with XMM registers). Wh...