Displaying 20 results from an estimated 700 matches similar to: "LLVM Virtual registers after RA pass?"
2017 Aug 15
2
Problem of getting two unused registers in eliminateFrameIndex()
Hello all,
For my custom processor backend I am trying add some instruction using
BuildMI() inside eliminateFrameIndex().
I tried RegScavenger like this:
unsigned RegUnused0 = RS->FindUnusedReg(&LASER::GNPRegsRegClass);
if (!RegUnused0)
RegUnused0 = RS->scavengeRegister(&LASER::GNPRegsRegClass, II, SPAdj);
assert(RegUnused0 && "Register scavenger failed");
2019 May 12
2
How to change CLang struct alignment behaviour?
My target implementation has 2 byte (16 bit ints)
For my target implementation I would want that Clang would always use 2 byte aligned padding for Structs, which would match the size of an int.
The current situation is that for this struct:
struct AA
{
char n;
char m;
char j;
};
I get it aligned by 1:
%a = alloca %struct.AA, align 1
I would want it to implicitly use 4 bytes
2014 Oct 10
2
[LLVMdev] eliminateFrameIndex
Hi!
I started writing a LLVM backend for a custom architecture. I have some register and instruction .td files and some other files/classes like a MCStreamer for assembler output. At the moment I can compile some empty programs so far.
I implemented the method ::eliminateFrameIndex() similar to the Sparc and ARM backend. The method looks like this:
// frame pointer is in reg of class
2019 May 13
2
How to change CLang struct alignment behaviour?
Hi Tim,
Thanks for your reply. That’s what I was afraid of. I will try on the cfe-list as you suggest though.
The reason I want structs to be aligned/padded to 2 bytes is because my architecture only has 16 bit operations. I can read (sign and zero extended) and write (truncated) 8 bit data from/to memory, but all intermediate operations in registers are performed in 16 bit registers. This
2015 Jan 29
3
[LLVMdev] creating a vreg in eliminateFrameIndex()
Hello LLVM,
The ARM target sometimes adds an instruction with a virtual register
in eliminateFrameIndex():
https://github.com/llvm-mirror/llvm/blob/master/lib/Target/ARM/ARMBaseRegisterInfo.cpp
This looks late for a virtual register to appear. Where is this vreg made real?
Thanks,
-steve
2015 Jan 30
2
[LLVMdev] creating a vreg in eliminateFrameIndex()
Thanks Jon and Hal for the helpful pointers. By returning true from
requiresRegisterScavenging() and requiresFrameIndexScavenging(), LLVM
handled all the scavenging effort. That is nearly painless for the
target, so why do some targets seem to do scavenging on their own?
When the scavenged register is loaded with a simple immediate, is it
safe to search the BB and replace other uses of the same
2015 Jan 29
0
[LLVMdev] creating a vreg in eliminateFrameIndex()
On 1/29/15 2:00 PM, Steve King wrote:
> Hello LLVM,
> The ARM target sometimes adds an instruction with a virtual register
> in eliminateFrameIndex():
>
> https://github.com/llvm-mirror/llvm/blob/master/lib/Target/ARM/ARMBaseRegisterInfo.cpp
>
> This looks late for a virtual register to appear. Where is this vreg made real?
The register scavenger should take care of such
2019 Jun 30
3
Tablegen ridiculously slow when compiling for Debug
Hi Praveen,
Thanks for the tip, but Xcode seems to spend all the time running tablegen "custom shell scripts", one by one at a time, not linking. Linking is actually very fast, possibly less than a second. The “scripts” that take longer are “AArch64CommonTableGen" and “AMDGPUCommonTableGen”. As said this is on LLVM 9.0.
However, on LLVM 7.0.1, the same process takes just 5-6
2014 Dec 05
2
[LLVMdev] illegal code generated for special architecture
Hi!
I'm making a strange observation in my backend, that ends in illegal code:
Version 1:
- I lower FrameIndex to TargetFrameIndex (nothing special)
- I generate a special address-register ADD instruction in eliminateFrameIndex() to write FramePointer + offset into a new address-register
- I use explicit load and store and address-registers in my target instruction patterns:
eg (store
2019 Jul 01
3
Tablegen ridiculously slow when compiling for Debug
If someone can manage it, it wouldn't be a bad thing - obviously open up
more parallelism (I don't know how much of LLVM can be built before you hit
everything that needs tblgen run - I guess libSupport and some other bits)
On Mon, Jul 1, 2019 at 12:54 PM Zakharin, Vyacheslav P via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> [resending to the whole list]
>
>
>
>
2011 Oct 10
2
[LLVMdev] Expected behavior of eliminateFrameIndex() on dbg_value machine instructions
I'm investigating a bug associated with debug information that manifests
itself in the XCore backend (PR11105). I'd like to understand what the
expected behavior of eliminateFrameIndex() is when it is called on a
dbg_value machine instruction.
Currently the XCore target replaces the frame index with the frame
register and sets the next operand to the byte offset from the frame
2019 Jul 01
2
Tablegen ridiculously slow when compiling for Debug
Hey Joan,
When looking for build support it is really useful to include a bunch of information about your build up front. Knowing that you are on macOS, and using the Xcode generator are really useful.
On macOS, BUILD_SHARED_LIBS won’t really help much because the default linker (ld64) is pretty good. Using an IDE generator and setting LLVM_USE_OPTIMIZED_TABLEGEN will kill your release builds.
2019 May 13
3
How to change CLang struct alignment behaviour?
I had already adjusted MaxStoresPerMemcpy to my preferred value, and this works great but for the cases where load/stores are used on non-size aligned structs the odd behaviour still happens. For my 3-char, 3-byte struct test, the memcpy replacement appears to consist on a single byte load and store of the last char (this is correct), followed by a 16 bit move of the first two chars, this is also
2019 Jul 02
4
Tablegen ridiculously slow when compiling for Debug
Much of this has been discussed (over many, many years) on
https://bugs.llvm.org/show_bug.cgi?id=28222
Some of the issues that were identified included:
1 - Poor tablegen dependency handling leading to unexpected rebuilds.
2 - Debug STL iterator checks taking an insane amount of time (might be
MSVC specific).
3 - Lack of parallelization of custom commands (XCode and VS builds) -
VS at least
2019 May 14
2
How to change CLang struct alignment behaviour?
Hi John,
On Tue, 14 May 2019 at 17:51, Joan Lluch <joan.lluch at icloud.com> wrote:
> This problem is also shared by the MSP430 target, and it’s very easy to reproduce by just compiling the code that I posted before.
That's some good detective work; it definitely explains what you're
seeing. Since MSP430 is affected it would probably be pretty easy to
upstream an alignment-aware
2019 Jun 30
2
Tablegen ridiculously slow when compiling for Debug
This is also the case with the Visual Studio generators. Custom commands in
a single cmake file essentially get written out line by line into a single
batch file that gets processed as a custom build step. In the VS case this
means that it can, for example, run X86 and Aarch64 tablegen steps in
parallel with each other but all of the individual X86 invocations get
processed serially. I can well
2019 Nov 04
2
Debugging clang with debugger breakpoints ?
Sorry Zach, my apologies.
I understood now what you mean. I tried and it works!.
But now I found that LLVM_DEBUG statements and other output to the console doesn’t show. How do I get that back?.
Thanks
John
> On 4 Nov 2019, at 22:26, Zachary Turner <zturner at roblox.com> wrote:
>
> You hit Reply on my email but then addressed David. So I want to make sure you saw my
2019 Jun 30
2
Tablegen ridiculously slow when compiling for Debug
Hi Praveen,
Please, can you elaborate on this?. What do do mean by “building as shared objects”.
Thanks,
John
> On 30 Jun 2019, at 07:32, Praveen Velliengiri <praveenvelliengiri at gmail.com> wrote:
>
> Maybe try building llvm as a shared objects..
>
> On Jun 30, 2019 1:30 AM, "Joan Lluch via llvm-dev" <llvm-dev at lists.llvm.org <mailto:llvm-dev at
2009 Jan 15
2
[LLVMdev] Possible bug in LiveIntervals (triggered on the XCore target)?
Hi Richard,
Thanks for working on this! Your patched solved my initial problem,
but introduced another one. Please find attached another BC file that
fails on xcore with the linear scan regalloc.
This is the error message I get
eliminateFrameIndex Frame size too big: -3
0 llc 0x08affd1e
1 libc.so.6 0xb7d35a01 abort + 257
2 llc 0x081a0972
2019 Jul 09
2
Tablegen ridiculously slow when compiling for Debug
FWIW, tablegen does not update timestamps for .inc files, if their contents is unchanged, so if you somehow affect a .td file's timestamp (without changing its contents) it will trigger rebuild of the corresponding .inc file with all subsequent incremental make builds. At the same time, this will not trigger rebuilding any targets dependent on this .inc file, since it is not modified. From