Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] Question About Target Dependent Optimization"
2010 Nov 29
0
[LLVMdev] Question About Target Dependent Optimization
On Nov 28, 2010, at 8:29 PM, Isaac Asay wrote:
>
> I am continuing to look over the code in the ARMLoadStoreOptimizer.cpp file, but I was wondering if you had a specific suggestion or a documentation resource that I could use to perform this instruction rearrangement in an LLVM idiomatic way. Using my algorithm, I already know where I can move MachineInstrs without effecting program
2012 Dec 19
1
[LLVMdev] Testing Target Optimization via ASM Injection
Hi Renato,
Thanks for the response. While it is true that creating an IR optimization
gives a better return due to it being applicable to any target ASM, there
are also a lot of target specific optimizations that devs have felt are
worthwhile enough to create, such as the ARMLoadStoreOptimizer.cpp file
which contains ARM specific ASM optimizations. So I know that target
specific optimizations are
2012 Dec 10
2
[LLVMdev] Testing Target Optimization via ASM Injection
My name is Isaac. I emailed this mailing list a couple years ago because I
was working on an ARM specific target optimization for my thesis, and had
questions about moving instructions and properly migrating kill flags. I
have managed to get that working properly, and I now have a complete
optimization that I wish to test.
My question is simply this: Is there any established way to inject ARM
2012 Dec 10
0
[LLVMdev] Testing Target Optimization via ASM Injection
On 10 December 2012 03:00, Isaac Asay <iasay at calpoly.edu> wrote:
> I've also tried using asm() C calls to force a
> specific assembly pattern, but LLVM appears to treat the asm() call like a
> single atomic block that does not have the optimizer run on its member
> instructions.
Hi Isaac,
AFAIK, inline assembly is only exported at the end and it's generally
kept
2010 Jan 15
2
[LLVMdev] <IsKill> getting from MachineOperand is just <Used> attribute from logic.
Hi,
I have ported LLC to a risc cpu. It can pass benchmark that I have at current.
But I want do some optimization after register alloction by adjusting
register using. I scan MachineBasicBlock to analyze operand's IsKill, IsDead , IsDef attribute to get a physical register's liverange. But I get a strange case at MBB.jpg.
R4 is marked <kill> at MBB0. If I scan R4's
2010 Jan 15
0
[LLVMdev] <IsKill> getting from MachineOperand is just <Used> attribute from logic.
On Jan 14, 2010, at 6:39 PM, 任坤 wrote:
> But I want do some optimization after register alloction by adjusting
> register using. I scan MachineBasicBlock to analyze operand's IsKill, IsDead , IsDef attribute to get a physical register's liverange. But I get a strange case at MBB.jpg.
You can also look at RegisterScavenging.cpp and MachineVerifier.cpp. They are doing the same
2012 Feb 07
0
[LLVMdev] ARMLoadStoreOptimizer bug
I've committed a fix: r149970. Please try it. I would really appreciate it if you can provide us with a test case (unreduced test case is fine).
Evan
On 2012 2 4, at 09:46, David Meyer <pdox at google.com> wrote:
> Evan & llvmdev,
>
> I'm seeing a case where ARM Load/Store optimizer is breaking code. I have not had any luck trying to come up with a minimal example;
2012 Feb 04
4
[LLVMdev] ARMLoadStoreOptimizer bug
Evan & llvmdev,
I'm seeing a case where ARM Load/Store optimizer is breaking code. I have
not had any luck trying to come up with a minimal example; it is breaking
in our stage 2 LLVM build.
But here's what I'm seeing in the debug output:
# Before ARMLoadStoreOptimizer:
BB#21: derived from LLVM BB %cond.end
Live Ins: %LR %R0 %R1 %R7 %R10 %R11
Predecessors according to
2007 Sep 19
0
[LLVMdev] 2.1 Pre-Release Available (testers needed)
On Wed, Sep 19, 2007 at 05:24:12PM +1000, Emil Mikulic wrote:
> http://goanna.cs.rmit.edu.au/~emil/llvm2.1-check-debug.txt
Here's an ARM test that cores:
$ llvm-as < /home/emil/ll/llvm-2.1/test/CodeGen/ARM/2007-01-19-InfiniteLoop.ll | llc -march=arm -mattr=+v6,+vfp2
Segmentation fault (core dumped)
$ gdb `which llc` llc.core
[...]
(gdb) where
#0 0x0853d606 in
2007 Sep 19
2
[LLVMdev] 2.1 Pre-Release Available (testers needed)
Is this the same issue as PR1686? If so, please add to it. What kind
of host machine are you using?
Thanks,
Evan
On Sep 19, 2007, at 12:45 AM, Emil Mikulic wrote:
> On Wed, Sep 19, 2007 at 05:24:12PM +1000, Emil Mikulic wrote:
>> http://goanna.cs.rmit.edu.au/~emil/llvm2.1-check-debug.txt
>
> Here's an ARM test that cores:
>
> $ llvm-as <
2020 Jul 20
2
[ARM] Should Use Load and Store with Register Offset
Hello LLVM Community (specifically anyone working with ARM Cortex-M),
While trying to compile the Newlib C library I found that Clang10 was
generating slightly larger binaries than the libc from the prebuilt
gcc-arm-none-eabi toolchain. I looked at a few specific functions (memcpy,
strcpy, etc.) and noticed that LLVM does not tend to generate load/store
instructions with a register offset (e.g.
2010 Sep 07
1
[LLVMdev] MachineMemOperand and dependence information
Sorry, this is the part in ARMLoadStoreOptimizer.cpp that creates a LDRD
instruction.
Ops.pop_back();
Ops.pop_back();
// Form the pair instruction.
if (isLd) {
MachineInstrBuilder MIB = BuildMI(*MBB, InsertPos,
dl, TII->get(NewOpc))
.addReg(EvenReg, RegState::Define)
2012 Apr 25
2
[LLVMdev] CriticalAntiDepBreaker rewrites a register operand of a call instruction
Hi Anton,
I ran llc with -verify-coalescing. There were no error messages.
Then I added code in MipsPassConfig::addPreEmitPass() to prevent machine
verifier from running post delay -slot-filler, and ran llc again. Again,
there were no error messages.
This is the list of passes run after post-RA scheduling. machine verifier
is run twice after post RA scheduler (and CriticalAntiDepBreaker) is run.
2018 Feb 13
2
Undef physical registers?
Hi,
I'm a bit unsure of the semantics of undef physical registers. The explanations I've seen in the code and in the langref seems to
pertain more to constant values and virtual registers.
What I really want to achieve is a push-pop of a register to have a temporary to work with, without having to check if this
register is defined or not. However, whenever the reg is not defined before
2012 Apr 25
0
[LLVMdev] CriticalAntiDepBreaker rewrites a register operand of a call instruction
Sorry, I meant to say,
I added code to prevent llc from running machine verifier after delay slots
are filled.
MipsInstrInfo::AnalyzeBranch generates incorrect results after delay slots
are filled. Also, it seems that code in MachineVerifier.cpp wasn't written
with architectures that have delay slots in mind.
On Wed, Apr 25, 2012 at 11:59 AM, Akira Hatanaka <ahatanak at gmail.com>
2010 Feb 26
2
[LLVMdev] RegisterScavenging on targets without subregisters
There's an assert at line 192, lib/CodeGen/RegisterScavenging.cpp that
appears to get tripped on targets that don't have subregisters defined:
bool SubUsed = false;
for (const unsigned *SubRegs = TRI->getSubRegisters(Reg);
unsigned SubReg = *SubRegs; ++SubRegs)
if (isUsed(SubReg)) {
SubUsed = true;
break;
}
2019 Apr 01
3
Please expose predicates to MachineVerifier
Could we expose predicates defined in the target InstrInfo.td file to the MachineVerifier? We use BuildMI() to create many instructions after ISEL, but the predicates are not being checked at this point. Thus, I could forget to check the target and build an instruction that is illegal for a specific configuration. In such a case it would be nice if the MachineVerifier could detect this for me.
2012 Feb 07
1
[LLVMdev] ARMLoadStoreOptimizer bug
Evan,
A test case is extremely hard to pin down. For months now, we've noticed
our stage 2 LLVM ARM build has sporadic failures. Tests would start
failing, then start working, then start failing, etc, for no apparent
reason.
The test case I have (llc.bc, which is all of llc in bitcode form, 44.8
MB), only works against r149814. And in this case, there are only 2 cases
of the miscompile
2017 Jan 19
2
Spare Register at one Machine Instruction
Hi All,
Given a machine instruction, is it possible to tell which register(s) is
still not in use?
For example, given one instruction A, if the one follows it (say B) defines
register rax, then I can tell rax should spare at instruction A.
The purpose is to use the spare register to replace registers used by A,
for instrumentation purpose.
Regards,
Hu Hong
-------------- next part
2017 Jan 19
2
Spare Register at one Machine Instruction
There is also the LivePhysReg facility that I would recomment if you just want to query for a free register and do not need the full feature set of the RegisterScavenger.
- Matthias
> On Jan 19, 2017, at 5:50 AM, Nemanja Ivanovic via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> I believe what you're after is the register scavenger.
> It's in: