Displaying 20 results from an estimated 3000 matches similar to: "llvm-ir: TBAA and struct copies"
2019 Jun 05
2
llvm-ir: TBAA and struct copies
Hi Ivan,
The code that we have is indeed different from what the 'standard llvm' expects. Let me explain:
in our version we came into this situation in two steps:
1) I added support for 'special types' that map directly to types supported by hardware.
These types are represented by a struct containing a single iXXX member, providing the necessary bits
of the type, and at the
2020 Jan 22
4
Inlining + CSE + restrict pointers == funtimes
So I've been narrowing down a very fun issue in our Burst compiler stack
with respect to noalias support, and I've managed to basically boil this
down to the following failure (see https://godbolt.org/z/-mdjPV):
int called(int* __restrict__ a, int* b, int* c) {
return *a + *b + *c;
}
int foo(int * x, int * y) {
return *x + *y + called(x, x, y);
}
int bar(int * x, int * y) {
return
2020 Feb 20
2
Given one restrict pointer based on another, should they never alias?
Thanks, Jeroen, that really helps.
A follow-up question, if you don't mind. What if we have code somewhat
similar to your example in assign3() but it's in C++ and the pointer
derived from x is stored in a class member field:
class S {
public:
S(int *d): data(d) {}
int *getData() { return data; }
private:
int *__restrict__ data;
};
void assign4(int *pA, long N) {
int
2020 Feb 14
2
Given one restrict pointer based on another, should they never alias?
We recently found an issue when using the full restrict implementation
developed by Jeroen; it surfaces when compiling an obscure combination of
std::valarray and std::indirect_array but I don't want to bore you with all
the details. What it boils down to is this basic question about restrict:
Given one restrict pointer based on another, should they never alias?
As far as I understand the
2018 Aug 17
2
local restrict - again
On 06/28/2018 10:59 AM, Hal Finkel wrote:
> Hi, Jeroen,
>
> We should move these conversations to llvm-dev so that they don't get
> missed and others can contribute. Can I cc the list?
[+llvm-dev] - Jeroen consented.
>
> Doing this will mean that the logic for when to remove dead llvm.noalias
> intrinsics will become more complicated. That might be worthwhile. So
>
2020 Feb 05
3
IndVarSimplify: getBackedgeTakenCount and Release vs Assert
Hi,
I am investigating a difference in code generation between release and assert builds of llvm.
The culprit is IndVarSimplify that comes up with different behavior on the same input:
in the assertion build, it does do an extra 'INDVARS: Rewriting loop exit condition'
After digging around, it seems that following change is the culprit:
-----
Author: Philip Reames <listmail at
2020 Sep 29
5
restrict func param losing noalias when inlined
Johannes,
Thanks, I have been following along some of the thread(s) and the phab
reviews. The scope of this work is more encompassing than our current needs
and I've looked at trying to carve a piece out.
It's not clear to me what purpose the llvm.noalias intrinsic serves right
now. Also, if a mem instruction has !noalias metadata, then it should not
be aliased, but I must be missing
2020 Jan 22
2
Inlining + CSE + restrict pointers == funtimes
At a high level, EarlyCSE should be intersecting the metadata of instructions that it combines. If it doesn't, and also doesn't drop the metadata, that seems like a bug, regardless of anything else.
On 1/22/20 9:30 AM, Jeroen Dobbelaere wrote:
Hi Neil, Hall,
- as far as 'C' is concerned, this is input code is valid, as the pointers are not used to modify objects.
- as far as
2020 Jun 24
2
FW: Restrict qualifier on class members
Hi Jeroen,
Sorry, I missed that. I tried the patch, and this program:
#include <stdint.h>
#define __remote __attribute__((address_space(1)))
__remote int* A;
__remote int* B;
void vec_add(__remote int* __restrict a,
__remote int* __restrict b,
int n) {
#pragma unroll 4
for(int i=0; i<n; ++i) {
a[i] += b[i];
}
}
int main(int argc, char** argv) {
2020 Jun 21
3
Restrict qualifier on class members
Hi,
I'm trying to abstract some special pointers with a class, like in the
example program below:
1 #define __remote __attribute__((address_space(1)))
2 #include <stdint.h>
3
4 __remote int* A;
5 __remote int* B;
6
7 class RemotePtr {
8 private:
9 __remote int* __restrict a;
10
11 public:
12 RemotePtr(__remote int* a) : a(a) {}
13
14 __remote
2020 Jun 22
2
Restrict qualifier on class members
Hi Jeroen,
That's great! I was trying to use the patch, what's the latest version of
the project we could apply it on?
Hi Neil,
That seems like what I can do as well! Do you happen to have some examples
lying around? Maybe a pointer to the planned presentation, if that's okay?
Thank you,
Bandhav
On Mon, Jun 22, 2020 at 1:55 AM Neil Henning <neil.henning at unity3d.com>
2020 Jan 17
3
Help with SROA throwing away no-alias information
I'm having an issue where SROA will throw away no-alias information on some
loads after inlining, because the loads are derived from a store to an
alloca which can be removed after inlining.
The pointers that were originally stored into the alloca do *not *have any
aliasing information - the only context that allowed me to assert aliasing
was that the inlined-function guaranteed it to be so.
2014 Apr 04
2
[LLVMdev] 32bit pointers on a (pure) 64bit architecture
Hi Hal,
On Fri, Apr 4, 2014 at 12:44 AM, Hal Finkel <hfinkel at anl.gov> wrote:
> ----- Original Message -----
> > From: "Jeroen Dobbelaere" <jeroen.dobbelaere at gmail.com>
> [... ]
>
> I am trying to get llvm working for an architecture that has 64bit
> > registers, but 32bit addresses.
> > Because of that, I want the pointers to also be
2014 Apr 04
2
[LLVMdev] 32bit pointers on a (pure) 64bit architecture
Hi Hal,
On Fri, Apr 4, 2014 at 1:22 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> [..]
> Agreed; but what does your *ISelLowering::getPointerTy() function look
> like? Did you override the default implementation? I wonder if returning
> MVT::i64 from this function will make things work for you.
>
> -Hal
>
>
I actually missed implementing this one. But, depending
2020 Apr 14
5
Represent Fortran alias information in LLVM IR
Hi,
We, IBM XL Fortran compiler team, is interested in representing Fortran
alias information in LLVM IR. We use the XL Fortran frontend to emit LLVM
IR that includes alias information to feed to the LLVM in order to create
object files. For the Fortran alias representation in LLVM IR, we
considered both TBAA and ScopeAlias/NoAlias metadata approaches, we think
that the ScopeAlias/NoAlias
2017 Aug 23
3
Extending TableGen's 'foreach' to work with 'multiclass' and 'defm'
On 08/23/2017 12:44 PM, David Chisnall wrote:
> On 23 Aug 2017, at 18:21, Hal Finkel via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>
>> On 08/23/2017 12:06 PM, Krzysztof Parzyszek via llvm-dev wrote:
>>> On 8/23/2017 11:58 AM, Hal Finkel via llvm-dev wrote:
>>>> If we want to go down that route, I can certainly imagine a feasible
2013 May 30
2
[LLVMdev] How to associate extra comments to a MachineInstruction ?
> From: Eric Christopher
> Subject: Re: [LLVMdev] How to associate extra comments to a
> MachineInstruction ?
>
> Should be spelled like this yes?
>
> Asm->OutStreamer.AddComment("foo")
> Asm->EmitFoo();
>
> -eric
That should work at the moment that you are emitting the instructions.
But what would you do when you are manipulating a
2020 Jan 22
2
Inlining + CSE + restrict pointers == funtimes
Ok I think we have some common ground - CSE should choose the aliased
pointer over the non-aliased one because we don't want the no-aliasing
information to creep outwards from the inlined callsite.
I'll put together a patch in the coming days and add y'all as reviewers so
you get visibility.
Cheers,
-Neil.
On Wed, Jan 22, 2020 at 4:47 PM Jeroen Dobbelaere <
Jeroen.Dobbelaere at
2013 Aug 07
3
[LLVMdev] tablegen question
Hi,
I am trying to make my tablegen files more flexible and for that I would like to have a name that in the end will be replaced with
a type.
If tablegen would support c preprocssing, I would do it like this:
---
#define myBaseType i32
...
def imm32 : Operand<myBaseType>;
def immZExt10 : ImmLeaf<myBaseType, [{return isUInt<10>(Imm);}]>;
...
---
Is there a way to achieve
2020 May 18
4
LLVM Alias Analysis Technical Call - Doodle Poll
To join our call on Thursday, May 28th @ 9-10 AM central time / 2-3 PM UTC please use this information:
Meeting URL
https://bluejeans.com/643493129?src=join_info
Meeting ID
643 493 129
Want to dial in from a phone?
Dial one of the following numbers:
+1.312.216.0325 (US (Chicago))
+1.408.740.7256 (US (San Jose))
+1.866.226.4650 (US Toll Free)
(see all numbers -