Displaying 20 results from an estimated 3000 matches similar to: "Indices for extractvalue and insertvalue"
2011 Dec 14
2
[LLVMdev] extractvalue and insertvalue on vector types
Hi,
I'm working with some hand-written LLVM IR which llvm-as doesn't like,
giving me the error "Invalid indices for extractvalue". However, as
far as I can tell, the code is valid according to the Language
Reference Manual.
A cut-down example of the kind of code in question is:
%struct.s = type {i32,i32,<2 x i32>}
define void @entry(i32* %out)
{
%1 = extractvalue
2010 Jul 13
1
[LLVMdev] const indices of extractvalue
Hi,
The 'extractvalue' and 'insertvalue' instructions only allow constant
indices. If I have an array with variable indices, I need to store
it into memory, and then load its sub-elements via GEP. Why could
'extractvalue' not support variable indices like GEP? In general, in
which case should source code be translated into 'extractvalue' , and
when should
2011 Dec 14
0
[LLVMdev] extractvalue and insertvalue on vector types
Hi Andrew,
> If I change the code such that the structure is defined with a
> 2-element array instead of a 2-element vector:
> %struct.s = type {i32,i32,[2 x i32]}
> then llvm-as does not report an error, hence why I believe the problem
> is specific to accessing vector components.
correct, extractvalue doesn't work on vectors, you need to use to use
extractelement for
2009 May 17
1
[LLVMdev] [patch] Remove getType() overrides from extractvalue and insertvalue
Several instruction classes override getType() when the instruction
always creates a particular type of value. For example, the result of
insertelement is always a vector, so InsertElementInst overrides
getType() to return a VectorType*. This makes perfect sense.
However, ExtractValueInst and InsertValueInst override getType() to
return a PointerType*, which does not make sense and is
2013 Mar 30
2
[LLVMdev] Missed optimisation opportunities?
I'm writing a front end for an existing interpreted language with slightly
odd semantics for primitive values.
Similar to the values in a database table, any value could be null, even
for non-pointer types.
For example a boolean variable could be true, false, or null.
To model this behaviour, I'm passing an {i1, [type]} around for every
numeric type. And using insertvalue / extractvalue
2012 Dec 30
2
[LLVMdev] alignment issue, getting corrupt double values
I'm having an issue where a certain set of types and insert/extractvalue
are producing the incorrect values. It appears as though extractvalue
getting my sub-structure is not getting the correct data.
I have these types:
%outer = type { i32, %inner, i1 }
%inner = type { double, i32 }
The trouble is that when I have a value of type %outer then proceed to
extract the components of the
2019 Jul 02
2
RFC: Complex in LLVM
Tim Northover <t.p.northover at gmail.com> writes:
> On Mon, 1 Jul 2019 at 19:56, David Greene via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
>> llvm.creal.* - Overloaded intrinsic to extract the real part of a
>> complex value
>> declare float @llvm.creal.c32(c32 %Val)
>> declare double @llvm.creal.c64(c64 %Val)
>
> What are
2012 Dec 30
0
[LLVMdev] alignment issue, getting corrupt double values
I also saw this issue before. Llvm seems have trouble returning general
struct values from functions. One easy workaround is to use packed struct
type.
Hope this helps.
-Peng
On Sunday, December 30, 2012, edA-qa mort-ora-y wrote:
> I'm having an issue where a certain set of types and insert/extractvalue
> are producing the incorrect values. It appears as though extractvalue
>
2008 Jun 02
2
[LLVMdev] Plans considering first class structs and multiple return values
Hi Dan,
> Yes, the intention is that getresult will be removed once first-class
> aggregates are a ready replacement. This won't leave LLVM missing the
> concept of returning multiple values; a struct can be thought of as
> a container for multiple values.
I'm not saying we don't have some way of modeling multiple return values, I'm
sayin the explicit concept
2009 Feb 19
1
[LLVMdev] Improving performance with optimization passes
>
> On Thursday 19 February 2009 19:00:14 Jon Harrop wrote:
>> I'm toying with benchmarks on my HLVM and am unable to get any
>> performance
>> improvement from optimization passes...
>
> I just disassembled some of the IR before and after optimization.
> This example
> function squares a complex number:
Something is definitely wrong with the way
2013 Jul 18
0
[LLVMdev] SIMD instructions and memory alignment on X86
Are you able to send any IR for others to reproduce this issue?
On Wed, Jul 17, 2013 at 11:23 PM, Peter Newman <peter at uformia.com> wrote:
> Unfortunately, this doesn't appear to be the bug I'm hitting. I applied
> the fix to my source and it didn't make a difference.
>
> Also further testing found me getting the same behavior with other SIMD
> instructions.
2008 Jun 02
2
[LLVMdev] Plans considering first class structs and multiple return values
Hi Dan,
> The requirement to update all callers' call instructions when a callee
> gets a new return value is also present in the current MRV-mechanism
> with getresult. It's not been a problem we've worried about so far.
I didn't mean you can get away without updating your calllers, I'm just saying
it could be a bit easier.
> Can you give some background about
2013 Jul 18
2
[LLVMdev] SIMD instructions and memory alignment on X86
Unfortunately, this doesn't appear to be the bug I'm hitting. I applied
the fix to my source and it didn't make a difference.
Also further testing found me getting the same behavior with other SIMD
instructions. The common factor is in each case, ECX is set to
0x7fffffff, and it's an operation using xmm ptr ecx+offset .
Additionally, turning the optimization level passed to
2010 Jan 13
7
[LLVMdev] [PATCH] - Union types, attempt 2
Here is the LangRef part of the patch.
On Tue, Jan 12, 2010 at 2:11 PM, Chris Lattner <clattner at apple.com> wrote:
>
> On Jan 11, 2010, at 4:30 PM, Talin wrote:
>
> I'm working on a new version of the patch.
>>
>> Another thing I wanted to ask about - do you prefer to have one giant
>> patch that has everything, or a series of incremental patches? I can
2008 Jun 02
0
[LLVMdev] Plans considering first class structs and multiple return values
On Jun 2, 2008, at 8:45 AM, Matthijs Kooijman wrote:
> Hi Dan,
>
>> Yes, the intention is that getresult will be removed once first-class
>> aggregates are a ready replacement. This won't leave LLVM missing the
>> concept of returning multiple values; a struct can be thought of as
>> a container for multiple values.
> I'm not saying we don't have some
2010 Jan 13
0
[LLVMdev] [PATCH] - Union types, attempt 2
On Jan 12, 2010, at 5:01 PM, Talin wrote:
> Here is the LangRef part of the patch.
> +<p>The union type is used to represent a set of possible data types which can
> + exist at a given location in memory (also known as an "untagged"
> + union).
[...]
This wording is somewhat misleading; memory in LLVM has no types.
How about:
"A union type describes an
2009 Nov 25
3
[LLVMdev] Possible bug in TCO?
My compiler is generating a bunch of code including the following line:
%57 = call fastcc i32 @aux(%1* %0, %1 %1, %1 %46, i32 0, %4 %2) ; <i32>
[#uses=1]
ret i32 %57
The program works fine as long as this isn't a tail call. If I compile via
a .ll and insert "tail" by hand, the program segfaults. However, if I make it
a tail call and return an undef i8* or void instead
2019 Jul 02
2
RFC: Complex in LLVM
On Tue, 2 Jul 2019 at 19:11, Finkel, Hal J. <hfinkel at anl.gov> wrote:
> One option is to make the complex type a special kind of vector, or a
> special kind of aggregate (I have a slight preference for the latter).
> That gives us an existing set of accessors.
I agree non-vector. If nothing else a vector of complexes seems like a
sensible concept which would be harder if a
2014 Apr 17
2
[LLVMdev] Extend SLPVectorizer to struct operations that are isomorphic to vector operations?
While playing with SLPVectorizer, I notice that it will happily vectorize cases involving extractelement/insertelement, but won't vectorize isomorphic cases involving extractvalue/insertvalue (such as the attached example). Is that something that could be straightforward to add to SLPVectorizer, or are there some hard issue? In particular, the transformation would seem to require casts of
2011 Mar 30
1
[LLVMdev] Bignums
Hello all!
I'm working on a library with bignum support, and I wanted to try LLVM
as an apparently simpler and more portable system to my current design
(a Haskell script which spits out mixed C and assembly). Porting the
script to use the LLVM bindings instead of the current hack was pretty
easy. But I have a few remaining questions:
(1) Are bignums exposed to any higher-level