search for: machineconstantpool

Displaying 20 results from an estimated 35 matches for "machineconstantpool".

2008 Mar 30
3
[LLVMdev] Being able to know the jitted code-size before emitting
Hi everyone, vmkit requires to know the size of a jitted method before emitting the method. This allows to allocate the correct size for the method. The attached patch creates this functionality when the flag SizedMemoryCode is on. In order to implement this functionality, i had to virtualize some MachineCodeEmitter functions. Is it OK to commit the patch? Thanks, Nicolas --------------
2008 Apr 01
2
[LLVMdev] Being able to know the jitted code-size before emitting
...mplementation of the >> MachineCodeEmitter, which is >> + /// used to output functions to memory for execution. >> +class SizeEmitter : public MachineCodeEmitter { >> + MachineFunction * Fn; >> + void* ConstantPoolBase; >> + void* JumpTableBase; >> + MachineConstantPool *ConstantPool; >> + MachineJumpTableInfo *JumpTable; >> + std::vector<intptr_t> LabelLocations; >> + MachineCodeEmitter* MCE; >> + >> +public: >> + SizeEmitter(MachineCodeEmitter* mce) { >> + CurBufferPtr = 0; >> + BufferBegin = 0; &gt...
2008 Mar 31
0
[LLVMdev] Being able to know the jitted code-size before emitting
.../// SizeEmitter - The JIT implementation of the > MachineCodeEmitter, which is > + /// used to output functions to memory for execution. > +class SizeEmitter : public MachineCodeEmitter { > + MachineFunction * Fn; > + void* ConstantPoolBase; > + void* JumpTableBase; > + MachineConstantPool *ConstantPool; > + MachineJumpTableInfo *JumpTable; > + std::vector<intptr_t> LabelLocations; > + MachineCodeEmitter* MCE; > + > +public: > + SizeEmitter(MachineCodeEmitter* mce) { > + CurBufferPtr = 0; > + BufferBegin = 0; > + BufferEnd = (unsigned cha...
2008 Apr 01
0
[LLVMdev] Being able to know the jitted code-size before emitting
...gt;> MachineCodeEmitter, which is >>> + /// used to output functions to memory for execution. >>> +class SizeEmitter : public MachineCodeEmitter { >>> + MachineFunction * Fn; >>> + void* ConstantPoolBase; >>> + void* JumpTableBase; >>> + MachineConstantPool *ConstantPool; >>> + MachineJumpTableInfo *JumpTable; >>> + std::vector<intptr_t> LabelLocations; >>> + MachineCodeEmitter* MCE; >>> + >>> +public: >>> + SizeEmitter(MachineCodeEmitter* mce) { >>> + CurBufferPtr = 0; >&g...
2006 May 15
1
[LLVMdev] Comments: file header or class
Hi, right now many classes have comments that don't show up in Doxygen. Say, MachineConstantPool.h has a big file-level comment, but it does not show up when looking at the generated docs for MachineConstantPool. Are patches moving file comments to appear before relevant classes welcome? - Volodya
2008 Apr 04
3
[LLVMdev] Being able to know the jitted code-size before emitting
...er, which is >>>> + /// used to output functions to memory for execution. >>>> +class SizeEmitter : public MachineCodeEmitter { >>>> + MachineFunction * Fn; >>>> + void* ConstantPoolBase; >>>> + void* JumpTableBase; >>>> + MachineConstantPool *ConstantPool; >>>> + MachineJumpTableInfo *JumpTable; >>>> + std::vector<intptr_t> LabelLocations; >>>> + MachineCodeEmitter* MCE; >>>> + >>>> +public: >>>> + SizeEmitter(MachineCodeEmitter* mce) { >>>> +...
2008 Apr 05
2
[LLVMdev] Being able to know the jitted code-size before emitting
...d to output functions to memory for execution. >>>>>> +class SizeEmitter : public MachineCodeEmitter { >>>>>> + MachineFunction * Fn; >>>>>> + void* ConstantPoolBase; >>>>>> + void* JumpTableBase; >>>>>> + MachineConstantPool *ConstantPool; >>>>>> + MachineJumpTableInfo *JumpTable; >>>>>> + std::vector<intptr_t> LabelLocations; >>>>>> + MachineCodeEmitter* MCE; >>>>>> + >>>>>> +public: >>>>>> + SizeEmitt...
2008 Apr 05
0
[LLVMdev] Being able to know the jitted code-size before emitting
...s to memory for execution. >>>>>>> +class SizeEmitter : public MachineCodeEmitter { >>>>>>> + MachineFunction * Fn; >>>>>>> + void* ConstantPoolBase; >>>>>>> + void* JumpTableBase; >>>>>>> + MachineConstantPool *ConstantPool; >>>>>>> + MachineJumpTableInfo *JumpTable; >>>>>>> + std::vector<intptr_t> LabelLocations; >>>>>>> + MachineCodeEmitter* MCE; >>>>>>> + >>>>>>> +public: >>>>&...
2008 Apr 04
0
[LLVMdev] Being able to know the jitted code-size before emitting
...;>> + /// used to output functions to memory for execution. >>>>> +class SizeEmitter : public MachineCodeEmitter { >>>>> + MachineFunction * Fn; >>>>> + void* ConstantPoolBase; >>>>> + void* JumpTableBase; >>>>> + MachineConstantPool *ConstantPool; >>>>> + MachineJumpTableInfo *JumpTable; >>>>> + std::vector<intptr_t> LabelLocations; >>>>> + MachineCodeEmitter* MCE; >>>>> + >>>>> +public: >>>>> + SizeEmitter(MachineCodeEmitter* m...
2008 Apr 07
2
[LLVMdev] Being able to know the jitted code-size before emitting
...ution. >>>>>>>> +class SizeEmitter : public MachineCodeEmitter { >>>>>>>> + MachineFunction * Fn; >>>>>>>> + void* ConstantPoolBase; >>>>>>>> + void* JumpTableBase; >>>>>>>> + MachineConstantPool *ConstantPool; >>>>>>>> + MachineJumpTableInfo *JumpTable; >>>>>>>> + std::vector<intptr_t> LabelLocations; >>>>>>>> + MachineCodeEmitter* MCE; >>>>>>>> + >>>>>>>> +publi...
2011 Feb 20
0
[LLVMdev] ConstantPoolValue lifecycle question
I am investigating the leak in MC/ARM/elf-reloc-01.ll on the valgrind bot. It seems to be leaking two MachineConstantPoolValues. When a ConstantPoolSDNode is created with a ConstantPoolValue, it owns that ConstantPoolValue. In InstrEmitter::AddOperand(), the index of the CPV is taken from a MachineConstantPool, which has two cases: 1) This is a new constant, so a new entry is created. The MachineConstantPoolValue is...
2008 Apr 07
0
[LLVMdev] Being able to know the jitted code-size before emitting
...gt;>>>>> +class SizeEmitter : public MachineCodeEmitter { >>>>>>>>> + MachineFunction * Fn; >>>>>>>>> + void* ConstantPoolBase; >>>>>>>>> + void* JumpTableBase; >>>>>>>>> + MachineConstantPool *ConstantPool; >>>>>>>>> + MachineJumpTableInfo *JumpTable; >>>>>>>>> + std::vector<intptr_t> LabelLocations; >>>>>>>>> + MachineCodeEmitter* MCE; >>>>>>>>> + >>>>>&gt...
2019 Jul 12
2
Introducing an Alignment object in LLVM
...ignment by 2 can change the associated semantic from `unaligned` to `unknown alignment` (4) - developers have to be defensive to make sure assumptions hold (5) - checking that an offset is aligned is sometimes done backward `Alignment % Offset == 0` instead of `Offset % Alignment == 0` (6) (7) - MachineConstantPoolEntry::Alignment encodes special information in its topmost bit (8) but `AsmPrinter::GetCPISymbol` seems to use it directly (9) instead of calling `getAlignment()` (10) I have a patch to introduce alignment object in LLVM. This patch does not fix the code but replaces the unsigned value by a type s...
2013 Dec 03
6
[LLVMdev] Recent Commits by Tim Northover
...mportant work on compiler correctness or architectural elegance or formatting comment white-space, I mean). Is he alone or are there others working toward such improvements? The subject of two of his commits dealt with substituting MOVW/MOVT pairs for an LDR and a lit-pool. Isn't this what MachineConstantPool and ARMConstantIslandPass was all about? I vaguely recall a while back that it was disabled by some Darwin snob who thought no useful target benefited from it. What about enabling it again? Perhaps you've noticed in the last two months that someone's been porting it to the MIPS target,...
2013 Dec 04
0
[LLVMdev] Recent Commits by Tim Northover
Hi Gary, On 3 December 2013 22:01, Gary Fuehrer <gfuehrer at defiant-tech.com> wrote: > The subject of two of his commits dealt with substituting MOVW/MOVT pairs > for an LDR and a lit-pool. Isn't this what MachineConstantPool and > ARMConstantIslandPass was all about? Both are essential components to using lit-pools: the MachineConstantPool is just LLVM's underlying machinery and ARMConstantIslands is for fixing up out of range loads and so on so they can actually be used. My recent changes have been to fix Dar...
2019 Jul 12
2
Introducing an Alignment object in LLVM
...he associated semantic from > `unaligned` to `unknown alignment` (4) > - developers have to be defensive to make sure assumptions hold (5) > - checking that an offset is aligned is sometimes done backward > `Alignment % Offset == 0` instead of `Offset % Alignment == 0` (6) (7) > - MachineConstantPoolEntry::Alignment encodes special information in its > topmost bit (8) but `AsmPrinter::GetCPISymbol` seems to use it directly (9) > instead of calling `getAlignment()` (10) > > I have a patch to introduce alignment object in LLVM. > This patch does not fix the code but replaces the un...
2006 Jul 31
1
[LLVMdev] creating a constant with the address of another constant
In ARM, the conventional way of setting a register to a 32 bit constant is to use a load: --------------------------------- str: .asciz "Hello World" .text main: ... ldr r0, .L3 .... .L3: .word str ----------------------------------- To implement this, LowerGlobalAddress must add an element to the constant pool (.L3 in the example). How can I implement this?
2018 Sep 22
3
Quick question: How to BuildMI mov64mi32 arbitrary MMB address to memory
Dear Mr. Northover, Thank you for the quick reply. You are correct about the address-mode operands :) . I guess an important detail left out was that the basic block (call it A) that wants to calculate the address of the target stationary trampoline basic block (call it B) will be moved around in memory during run-time. Our earlier solution, before the feature was implemented to move around (A)
2013 Dec 03
0
[LLVMdev] Recent Commits by Tim Northover
...nt work on compiler correctness or architectural elegance or formatting comment white-space, I mean). Is he alone or are there others working toward such improvements? > > The subject of two of his commits dealt with substituting MOVW/MOVT pairs for an LDR and a lit-pool. Isn't this what MachineConstantPool and ARMConstantIslandPass was all about? I vaguely recall a while back that it was disabled by some Darwin snob who thought no useful target benefited from it. You recall incorrectly. > What about enabling it again? Perhaps you've noticed in the last two months that someone's been port...
2006 Oct 19
1
[LLVMdev] jump table x constant pool
I had some problems adding the address of a jump table to the constant pool. The problem is that the address of a jump table is not a GlobalValue.Currently I decided to expand BRIND so that I can work on simpler problems :-) A small brain dump on the issue: GlobalValues are currently used to represent functions and global variables. Maybe we could also use then for anything that will have a label