search for: indigorenderer

Displaying 18 results from an estimated 18 matches for "indigorenderer".

2014 Jan 21
2
[LLVMdev] Gather load in LLVM IR
...f values instead of a single value. If a gather instruction is not available on the target, then the load could be lowered to a series of scalar loads and insertelements. Thanks, Nick On 20/01/2014 5:59 p.m., Evan Cheng wrote: > On Jan 14, 2014, at 11:11 AM, Nicholas Chapman <admin at indigorenderer.com> wrote: > >> Hi All, >> I was in the process of implementing a gathering load for my language. I got the getelementptr vector form working. However there doesn't seem to be a way to load a vector of values using the vector of pointers from getelementptr. Am I correct th...
2008 Oct 23
1
[LLVMdev] Windows x64 support
Hi, I'm using LLVM for JIT compilation of shaders for my ray tracer (http://www.indigorenderer.com). My primary development target is 32 bit and 64 bit Windows. JIT compilation of shaders is working great for x86 code, but for x64 code LLVM doesn't really work, due to ABI incompatibilties in the form of calling convention errors with x64 windows, I think. Anyway, my questions are as f...
2014 Jan 14
2
[LLVMdev] Gather load in LLVM IR
Hi All, I was in the process of implementing a gathering load for my language. I got the getelementptr vector form working. However there doesn't seem to be a way to load a vector of values using the vector of pointers from getelementptr. Am I correct that this is not possible with LLVM IR currently (apart from with the avx2 gather intrinsic)? And if so, are there plans to allow
2015 Mar 09
2
[LLVMdev] A limitation of LLVM with regard to marking sret functions as readonly.
On 08/03/2015 18:07, Daniel Berlin wrote: > > > On Sun, Mar 8, 2015 at 9:55 AM, Nicholas Chapman > <admin at indigorenderer.com <mailto:admin at indigorenderer.com>> wrote: > > Hi all, > I have identified what seems to be a limitation of LLVM with > regard to marking 'sret functions' as pure/readonly. > > For some context - I have some JITed code produced by LLVM, and &...
2013 Feb 13
0
[LLVMdev] ManagedStatic and order of destruction
.... This helps in the case where there is not a clear time when llvm_shutdown() can be called, especially given that LLVM cannot be resurrected in the same process due to current limitations in the pass registry, and perhaps elsewhere. On Wed, Feb 13, 2013 at 7:47 AM, Nicholas Chapman <admin at indigorenderer.com>wrote: > Hi Justin, > I don't know anything about the details of llvm_shutdown and the > ManagedStatic implementation. > But it's nice to be able to explicitly free memory allocated by LLVM, > otherwise such memory (allocated by global objects) can show up as memory...
2013 Sep 05
2
[LLVMdev] Optimisation pass to move an alloca'd array to a global constant array
Hi All, I was wondering if there is an optimisation pass that moves a stack allocated array, initialised with constant values, to a global constant array. And if there is such a pass, what requirements are there for it to operate? My optimised IR is below. As you can see an array of 5 integers is created with alloca, then each element is stored to in turn. It would be nice if this array was
2015 Mar 08
2
[LLVMdev] A limitation of LLVM with regard to marking sret functions as readonly.
Hi all, I have identified what seems to be a limitation of LLVM with regard to marking 'sret functions' as pure/readonly. For some context - I have some JITed code produced by LLVM, and that code calls back into the host application occasionally. Since my language is purely functional, no functions have side-effects. Therefore I would like to be able to cache the value of identical
2013 Feb 09
3
[LLVMdev] ManagedStatic and order of destruction
I'm curious about the design rationale for how ManagedStatic instances are cleaned up, and I'm hoping someone can shed some light on it. Currently, ManagedStatic objects are cleaned up when llvm_shutdown() traverses the global list of initialized objects and calls destroy() on each. This leads to two questions: 1. An assertion enforces that the objects are deleted in reverse order of
2013 Oct 31
0
[LLVMdev] llvm.sqrt intrinsic undefined behaviour
> On Oct 31, 2013, at 6:16 AM, Nicholas Chapman <admin at indigorenderer.com> wrote: > > I propose changing the llvm.sqrt() LLVM instrinsic to be well defined on all inputs, and be defined to return NaN on negative inputs. I strongly disagree with this proposal. The purpose of this general purpose intrinsic is to expose sqrt functionality present on many of...
2013 Aug 18
1
[LLVMdev] structure member alignment for vector types
Hi All, I have run into an issue when writing some LLVM code to read from a C++ structure. The structure as defined in LLVM is { { <4 x float> }, { <4 x float> }, { <16 x float> }, { <4 x float> }, { <4 x float> } }. On Windows, with Visual Studio 2012, the vector members of the structure are packed tightly together. However, LLVM seems to be leaving 32 bytes
2013 Oct 31
3
[LLVMdev] llvm.sqrt intrinsic undefined behaviour
Hi all, I'm working on a language in which I would like all operations to be well defined. (and efficient) I want to define a sqrt function in my language, that will return NaN for arguments < 0, and NaN for a NaN argument. As far as I know, these semantics map nicely to the SQRTPS SSE instruction, which seems to return NaN on arguments < 0. However, the LLVM lang ref states
2012 Dec 04
0
[LLVMdev] Visual Studio 2012 cl.exe ICE while building LLVM for x64 (in TableGen) at -O2
> On Behalf Of Nicholas Chapman > > On 04/12/2012 06:29, Michael Spencer wrote: > > On Mon, Dec 3, 2012 at 8:08 PM, Gordon Keiser <gkeiser at arxan.com> > wrote: > >> As an update to this: > >> http://connect.microsoft.com/VisualStudio/feedback/details/769222/cl- > >> exe-ice-when-building-llvm-trunk-at-o2 > >> > >> Microsoft
2013 Feb 08
2
[LLVMdev] Question about changes to llvm::Argument::addAttr(AttributeSet AS) API
On 8 Feb 2013, at 09:53, Chandler Carruth wrote: > I also think you should remember that it is explicitly *not* a goal of the LLVM project to optimize its development process for out-of-tree projects, and instead it *is* a goal to optimize the development process for in-tree efforts. >From the front page of the LLVM web site, point number 1: > • The LLVM Core libraries provide a modern
2012 Dec 04
3
[LLVMdev] Visual Studio 2012 cl.exe ICE while building LLVM for x64 (in TableGen) at -O2
On 04/12/2012 06:29, Michael Spencer wrote: > On Mon, Dec 3, 2012 at 8:08 PM, Gordon Keiser <gkeiser at arxan.com> wrote: >> As an update to this: >> http://connect.microsoft.com/VisualStudio/feedback/details/769222/cl-exe-ice-when-building-llvm-trunk-at-o2 >> >> Microsoft has reproduced the ICE, given a workaround, and is planning a fix for a future MSVC release.
2008 Oct 23
0
[LLVMdev] Helping the optimizer along (__assume)
Hi all, I've been thinking about this issue as well, since I'm working with a architecture that can do hardware based loops, but only when the loop count is more than some minimal value. To probably use this, we need some way for the code to specify that a loop variable has a minimum value. > Can't you implement __builtin_assume(cond) to codegen to something like: > >
2008 Oct 23
8
[LLVMdev] Helping the optimizer along (__assume)
On 2008-10-22, at 19:24, Mike Stump wrote: > On Oct 22, 2008, at 3:28 PM, Paul Biggar wrote: > >> As part of our PHP compiler (phpcompiler.org), it would be great to >> be able to annotate our generated C code with, for example, (var != >> NULL), or (var->type == STRING), and have that information passed >> around (esp interprocedurally at link-time) by the
2011 Jun 12
0
[LLVMdev] Getting x86-64 assembly listing
Hi All, Is there a way to print out an x86-64 assembly listing for a JIT compiled function? Printing to either stdout or a string would be fine. I'm after something human-readable, so I can have a look at what kind of code is being produced without having to use a debugger + disassembler. I've tried a couple of code snippets I found floating around on the web, but neither of them seem
2013 Nov 11
0
[LLVMdev] [RFC] How to fix sqrt vs llvm.sqrt optimization asymmetry
Hi Hal, all. I'm not sure why llvm.sqrt is 'special'. Maybe because there is a SSE packed sqrt instruction (SQRTPS) but not e.g. a packed sin instruction AFAIK. As mentioned in a recent mail to this list, I would like llvm.sqrt to be defined as NaN for argument x < 0. I believe this would bring it more into line with the other intrinsics, and with the libm result, which is