Displaying 20 results from an estimated 3000 matches similar to: "MachineFrameInfo::print SP offset"
2008 Jul 25
1
[LLVMdev] llvm svn trunk rev54012 does not compile
Hello All,
I just svn update
% svn info .
Path: .
URL: http://llvm.org/svn/llvm-project/llvm/trunk
Repository Root: http://llvm.org/svn/llvm-project
Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
Revision: 54012
Node Kind: directory
Schedule: normal
Last Changed Author: wangmp
Last Changed Rev: 54007
Last Changed Date: 2008-07-25 03:30:26 +0200 (Fri, 25 Jul 2008)
make[3]: Entering
2013 Sep 26
0
[LLVMdev] Register scavenger and SP/FP adjustments
CallFrameSetupOpcode is a pseudo opcode like X86::ADJCALLSTACKDOWN64. That means when the code is expected to be called before the pseudo instructions are eliminated. I don't know why it's not the case for you. A quick look at PEI code indicates the pseudo's should not have been removed at the time when replaceFrameIndices are run.
Evan
On Sep 25, 2013, at 8:57 AM, Krzysztof
2013 Sep 25
2
[LLVMdev] Register scavenger and SP/FP adjustments
Hi All,
I'm dealing with a problem where the spill/restore instructions inserted
during scavenging span an adjustment of the SP/FP register. The result
is that despite the base register (SP/FP) being changed between the
spill and the restore, both store and load use the same immediate offset.
I see code in the PEI (replaceFrameIndices) that is supposed to track
the SP/FP adjustment:
2018 May 31
0
Debugging a issue in MachineFrameInfo?
Hi all:
I wrote some IR transform passes that works perfectly fine at IR level and running through opt -verify on the yielded IR results in no error.
However when I try to compile the transformed IR into object code using llc Output.ll -filetype=obj , it asserts out with Assertion failed: (unsigned(ObjectIdx+NumFixedObjects) < Objects.size() && "Invalid Object Idx!"), function
2013 Sep 26
0
[LLVMdev] Register scavenger and SP/FP adjustments
The code has changed a lot over the years. Looks like at some point of time the assumption was broken. calculateCallsInformation() may have eliminated the pseudo set up instructions already.
// If call frames are not being included as part of the stack frame, and
2013 Sep 26
1
[LLVMdev] Register scavenger and SP/FP adjustments
Thanks, I'll look into that. Still, the case where the function does
not call anything remains---in such a situation there are no
ADJCALLSTACK pseudos, so regardless of what that function you pointed at
does, there won't be any target-independent information about the SP
adjustment by the time the frame index elimination runs.
Would it make sense to have ADJCALLSTACK pseudos every
2013 Sep 26
2
[LLVMdev] Register scavenger and SP/FP adjustments
Consider this example:
--- ex.ll ---
declare void @bar()
; Function Attrs: nounwind optsize
define void @main() {
entry:
%hin = alloca [256 x i32], align 4
%xin = alloca [256 x i32], align 4
call void @bar()
ret void
}
-------------
Freshly built llc:
llc -O2 -march=x86 < ex.ll -print-before-all
# *** IR Dump Before Prologue/Epilogue Insertion & Frame Finalization ***:
#
2009 Nov 26
1
[LLVMdev] MachineFrameInfo
Hello,
I found that is possible to introduce some changes in the stack layout;
however, where I can find more information about how to use it (I am
reading code). For example, how I can align the stack to the maximum size
(what is the max size?), or how I can protect it? Can I set up the
condiction using flags at compiler time or I need to change the code?
--
Juan Carlos
-------------- next
2009 Mar 30
1
[LLVMdev] Determining the base offset of the stack for a function.
I am running into an issue where if I have multiple functions compiled
in the same compilation unit the stack offset is not starting at zero.
For example:
func1(...)
{
...
}
func2(...)
{
...
}
Say the first function uses 64 bytes of the stack and an assumed offset
of 0 and the second function uses 32 bytes of the stack but an assumed
offset of 64. I've found out how to get the
2020 Feb 19
2
i1 true ^= -1 in DAG matcher?
A constant i1 is stored as a one bit APInt wrapped in a ConstantInt which
is then wrapped in ConstantSDNode for SelectionDAG. The BUILD_VECTOR will
just point to the same ConstantSDNode for each element. There is no concept
of a sign in the storage. It's just a bit. Whether or not its treated as 1
or negative 1 is going to depend on the code looking at the value including
printing code. And
2004 Jun 09
2
[LLVMdev] X86 Frame info question
The X86 backend has this code:
X86TargetMachine::X86TargetMachine(const Module &M, IntrinsicLowering *IL)
: ....
FrameInfo(TargetFrameInfo::StackGrowsDown, 8/*16 for SSE*/, 4),
That is, it uses "4" as local area offset. Based on prior discussion this
should mean that the local area starts and address ESP+4. Is this really
true? On X86 stack grows down, so
2004 Jun 08
1
[LLVMdev] Patch/Question: calculateFrameObjectOffsets
Hello,
the calculateFrameObjectOffsets methods in CodeGen/PrologEpilogEmitter.cpp
does not work for me, since it asserts if stack grows up, and when assert is
commented out, allocates spill slots in the same location as function
arguments, which is not right.
I've tried to fix that, and a patches. It merely adds
if (StackGrowsDown)
everywhere, so that the current logic should not be
2020 May 19
2
LLVM's loop unroller & llvm.loop.parallel_accesses
Skipping the clang question for now, this had to be a loop pragma of some
kind. One step back: what we really need is a way to express that memory
accesses between iterations can be re-ordered. The code that's being
compiled _is_ noalias, but we don't _have_ to use noalias semantics, e.g.
loop parallel semantics are sufficient. What's missing is a way to express
that past the llvm
2020 May 18
2
LLVM's loop unroller & llvm.loop.parallel_accesses
Would you guys be open to supporting a new hint with the right semantics,
like e.g. llvm.loop.noalias_accesses?! I would need to find support in
clang however and the main point of support would be the loop unroller
behaving as stated in the OP.
On Thu, May 14, 2020 at 3:04 PM Michael Kruse <llvmdev at meinersbur.de> wrote:
> Trivial example:
>
> #pragma clang loop
2020 Feb 19
2
i1 true ^= -1 in DAG matcher?
The vnot PatFrag uses ImmAllOnesV which should put an OPC_CheckImmAllOnesV
in the matcher table. And the matcher table should call
ISD::isBuildVectorAllOnes. I believe we use vnot with vXi1 vectors on X86
and I haven't seen any issues.
The FIXME you pointed to seems related to a scalar patcher not a vector
pattern. In that case the issue is that the immediate matcher for scalars
calls
2019 Dec 18
2
Spilling to register for a given register class
Ok, thanks. Except the question was meant slightly different. Less w.r.t.
organizing the register classes, and more w.r.t. implementation. I've
noticed for instance that when trying to model this straight forwardly by
writing a vreg from spills and reading this from fills (not further
elaborated here), that the spiller can't handle vreg def-use pairs: there
are assertions making sure a
2020 May 14
3
LLVM's loop unroller & llvm.loop.parallel_accesses
This is interesting! So are you saying that loop.parallel_accesses strictly
loop parallel, and says nothing about aliasing? I see, I guess we may
have been "abusing" the hint and re-purposed it. But isn't llvm's
vectorizer using loop.parallel_accesses to vectorize loops including
vectorize memory accesses that if you ignore loop-carried dependencies,
usually means effectively
2020 Jul 16
2
Selection DAG chain question
Yea. I think AMD chains the node they're expanding into, but they don't
chain it into an _existing_ chain. e.g. adding A->B to the DAG is ok. But
adding A->B and next C->D with B->C is the problem. I appreciate the input
On Thu, Jul 16, 2020 at 2:04 PM Matt Arsenault <arsenm2 at gmail.com> wrote:
>
>
> > On Jul 16, 2020, at 17:00, Hendrik Greving
2020 Jul 16
3
Selection DAG chain question
Re: Do they really need to be chained with each other or anything else
Yes. For 2 reasons. Our architecture lowers udivmem into something with 1
producer and 2 consumers. Reason 1) neither the producers nor the consumers
must get reordered. Reason 2) one of the consumers might be missing (either
the div or mod consumer might not be present. Yet we need to keep the
consuming instruction with side
2004 Jun 09
0
[LLVMdev] X86 Frame info question
On Wed, 9 Jun 2004, Vladimir Prus wrote:
>
> The X86 backend has this code:
>
> X86TargetMachine::X86TargetMachine(const Module &M, IntrinsicLowering *IL)
> : ....
> FrameInfo(TargetFrameInfo::StackGrowsDown, 8/*16 for SSE*/, 4),
>
> That is, it uses "4" as local area offset. Based on prior discussion this
> should mean that the local