Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] RFC: Code Gen Change!"
2009 May 13
0
[LLVMdev] RFC: Code Gen Change!
On 13/05/2009, at 02.46, Bill Wendling wrote:
> Instead of all of the booleans, you pass in a flag that has bits set
> to indicate what state the register is in:
>
> namespace RegState {
> enum {
> Define = 0x1,
> Implicit = 0x2,
> Kill = 0x4,
> Dead = 0x8,
> EarlyClobber = 0x10,
> ImplicitDefine = Implicit |
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)
2013 Feb 20
2
[LLVMdev] implicit register usage
On Feb 20, 2013, at 11:44 AM, Jim Grosbach <grosbach at apple.com> wrote:
> I'm not sure. It certainly seems reasonable to me that the building could/should set default Define flags on operands based on the MCInstrDesc. Dunno why it doesn't.
Once you move beyond the fixed operands, it can't be determined automatically if the added register should be a use or a def.
But I
2016 Apr 27
2
[Sparc] builtin setjmp / longjmp - need help to get past last problem
Hi,
I'm implementing __builtin_setjmp and __builtin_longjmp for Sparc 32 bit processors (64 bit later, time allowing).
I'm basing the code on the PowerPC version, which itself is based on the X86 version.
This code is very nearly working, and I've had it working for -O0 optimisation (with a slightly different version to that below), so I know it's close.
However, the PowerPC
2013 Feb 20
0
[LLVMdev] implicit register usage
On Feb 20, 2013, at 1:22 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
>
> On Feb 20, 2013, at 11:44 AM, Jim Grosbach <grosbach at apple.com> wrote:
>
>> I'm not sure. It certainly seems reasonable to me that the building could/should set default Define flags on operands based on the MCInstrDesc. Dunno why it doesn't.
>
> Once you move beyond
2015 Jan 11
3
[LLVMdev] [RFC] [PATCH] add tail call optimization to thumb1-only targets
Hello,
find enclosed a first patch for adding tail call optimizations for
thumb1 targets.
I assume that this list is the right place for publishing patches for
review?
Since this is my first proposal for LLVM, I'd very much appreciate your
feedback.
What the patch is meant to do:
For Tail calls identified during DAG generation, the target address will
be loaded into a register
by use
2014 Aug 20
2
[LLVMdev] ARMv4T Copy Lowering
Jim/Tim/Renato,
A few days ago (has it been weeks now?) we discussed a codegen problem on
armv4t having to do with lo->lo register copies. I'd like to start that
discussion again, this time with a patch.
A brief summary of the problem for folks who didn't catch the discussion
earlier, and those like me who forget what they ate for breakfast: ;]
The mov instruction on armv4t
2010 Sep 07
0
[LLVMdev] MachineMemOperand and dependence information
On Sep 7, 2010, at 10:48 AM, Akira Hatanaka wrote:
> I have two questions regarding MachineMemOperands and dependence information.
>
> Q1) I noticed that MachineMemOperands are lost when two LDRs are combined and a LDRD is generated in ARMPreAllocLoadStoreOpt:::RescheduleOps.
>
> (before optimization)
> %reg1033<def> = LDR %reg1030, %reg0, 4100, pred:14, pred:%reg0;
2013 Feb 23
2
[LLVMdev] Assertion failed after my storeRegToStackSlot/loadFromStackSlot
Hi All.
I'm writing storeRegToStackSlot and loadFromStackSlot function for my
Target. This Target can store/load one byte (not all word) from
FrameIndex. If I need to store 16 bit register I will must to split it
to two instruction like this:
BuildMI(MBB, MI, dl, get(Z80::LD8xmr))
.addFrameIndex(FrameIndex).addImm(0)
.addReg(SrcReg, 0, Z80::subreg_lo);
BuildMI(MBB, MI, dl,
2015 Feb 11
2
[LLVMdev] deleting or replacing a MachineInst
This seems a very natural approach but I probably am having a trouble with
the iterator invalidation. However, looking at other peephole optimizers
passes, I couldn't see how to do this:
#define BUILD_INS(opcode, new_reg, i) \
BuildMI(*MBB, MBBI, MBBI->getDebugLoc(), TII->get(X86::opcode)) \
.addReg(X86::new_reg, kill).addImm(i)
for
2010 Sep 07
3
[LLVMdev] MachineMemOperand and dependence information
I have two questions regarding MachineMemOperands and dependence
information.
Q1) I noticed that MachineMemOperands are lost when two LDRs are combined
and a LDRD is generated in ARMPreAllocLoadStoreOpt:::RescheduleOps.
(before optimization)
%reg1033<def> = LDR %reg1030, %reg0, 4100, pred:14, pred:%reg0;
mem:LD4[%uglygep10]
%reg1054<def> = LDR %reg1030, %reg0, 4104, pred:14,
2013 Mar 04
0
[LLVMdev] Assertion failed after my storeRegToStackSlot/loadFromStackSlot
Hi Dmitriy,
As you've seen our current spill code assumes that spill/reloads are single
instructions. I think the best way to work around this is to introduce
load/store pseudo-instructions and expand these after register allocation.
Cheers,
Lang.
On Sat, Feb 23, 2013 at 12:15 AM, Dmitriy Limonov <earl at excluzive.ws> wrote:
> Hi All.
>
> I'm writing
2018 May 30
2
InstrEmitter::CreateVirtualRegisters handling of CopyToReg
Hi,
I wonder if anyone has any comment on a patch like:
diff --git a/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
b/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
index 65ee3816f84..4780f6f0e59 100644
--- a/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
+++ b/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
@@ -243,18 +243,21 @@ void InstrEmitter::CreateVirtualRegisters(SDNode
*Node,
if (!VRBase &&
2013 Feb 20
2
[LLVMdev] implicit register usage
Hi Jim,
One thing that seems strange to me is that if do a BuildMI, if you put a
register inside the first parens, then it will treat it as a def, but if
you just .addReg it won't (by default), even though it should know from
the instruction definition.
Seems like it should do that.
Why would you want it to not do that?
Reed
On 02/18/2013 01:22 PM, Jim Grosbach wrote:
> Hi Reed,
2018 Jun 26
2
MachineFunction Instructions Pass using Segment Registers
This shouldn't have parsed.
movq (%gs), %r14
That's trying to use%gs as a base register which isn't valid. GNU assembler
rejects it. And coincidentally llvm-mc started rejecting it on trunk late
last week. That's probably why it printed as %ebp.
I don't know if there is an instruction to read the base of %gs directly.
Maybe rdgsbase, but that's only available on Ivy
2004 Jun 04
2
[LLVMdev] Some backend questions
Ok, I'm now trying to write instruction selector and have some questions
1. The MachineInstrBuilder has methods to add register operand and immediate
operand. However, what would be really nice is a method to add Value*. So, I
would write:
BuildMI(*BB, NM::add, 1).add(I.getOperand(0), I.getOperand(1));
and depending on whether the passed Value* is contant or instruction, the add
2019 Jan 31
2
MachineIRBuilder API
I’m less interested in literally passing the output of one as an argument to the next such that argument evaluation order matters. Intermediate register variables are fine. It would still be less code to have tmp = buildFoo(), buildFoo(tmp) than the current code required to manage the register
-Matt
From: <daniel_l_sanders at apple.com> on behalf of Daniel Sanders <daniel_l_sanders at
2012 Jul 23
0
[LLVMdev] How to disable register allocate optimization?
It looks like you are not using the right overloaded version of function
BuildMI defined in MachineInstrBuilder.h.
The register operand added to instruction sb should be a use, not a def
operand. So this function should be called,
BuildMI(BB, dl, TII->get(Mips::SB)).addReg(tmpReg1)
instead of
BuildMI(BB, dl, TII->get(Mips::SB), tmpReg1)
On Sat, Jul 21, 2012 at 11:41 AM, Yang Yang
2013 Feb 20
0
[LLVMdev] implicit register usage
I'm not sure. It certainly seems reasonable to me that the building could/should set default Define flags on operands based on the MCInstrDesc. Dunno why it doesn't.
-Jim
On Feb 19, 2013, at 7:14 PM, reed kotler <rkotler at mips.com> wrote:
> Hi Jim,
>
> One thing that seems strange to me is that if do a BuildMI, if you put a register inside the first parens, then it
2018 Jun 24
2
MachineFunction Instructions Pass using Segment Registers
Dear All,
Currently I am trying to inject custom x86-64 assembly into a
functions entry basic block. More specifically, I am trying to build
assembly in a machine function pass from scratch.
While the dumped machine function instruction info displays that %gs
will be used, when I perform objdump -d on my executable I am see that
%gs is replaced by %ebp? Why is this happening?
I know it probably